Description
Feature or enhancement
logging.LoggerAdapter
and logging.StreamHandler
are generic in typeshed but cannot currently be parameterised at runtime. This has been reported several times to typeshed as being quite painful for end users, since these are both classes that users like to subclass:
- logging.StreamHandler.stream is sys.stderr by default ; "SupportsWrite['str']" is too narrow typeshed#5680 (comment)
- Introduce generic logger type in loggeradapter typeshed#5954 (comment)
If you're a user of type hints, subclassing a class that's generic in the stub but not at runtime usually means that you have to do something horrible with if TYPE_CHECKING
(e.g. see python/typeshed#5954 (comment)).
The stubs for these classes have been fairly stable in typeshed for a while; I think it's unlikely that we'll ever want to make them non-generic again over at typeshed. I therefore propose that __class_getitem__
be added to these two classes in 3.11, so that they can be parameterised at runtime.
Cc. @vsajip for the logging
module.