New submission from John Lennon <enjigglypuf...@gmail.com>:
Given the file `example.py` with the following contents: ```python from typing import Generic, TypeVar KT = TypeVar("KT") VT = TypeVar("VT") class GenericMapping(Generic[KT, VT]): pass class SomeImplMapping(GenericMapping): pass a: GenericMapping[int, float] b: SomeImplMapping[int, float] ``` I would expect `SomeImplMapping` to be generic as well as `GenericMapping`. However, currently this code fails with the following error: ```sh Traceback (most recent call last): File "adt.py", line 18, in <module> b: SomeImplMapping[int, float] File "/usr/local/lib/python3.7/typing.py", line 254, in inner return func(*args, **kwds) File "/usr/local/lib/python3.7/typing.py", line 841, in __class_getitem__ _check_generic(cls, params) File "/usr/local/lib/python3.7/typing.py", line 204, in _check_generic raise TypeError(f"{cls} is not a generic class") TypeError: <class '__main__.SomeImplMapping'> is not a generic class ``` If I understand everything correctly, that's because `typing` doesn't check bases of the class to have `__parameters__` attribute: https://github.com/python/cpython/blob/master/Lib/typing.py#L210 I did not found the restriction that only direct childs of `Generic[..]` class can be generic in the docs, so I think this is a bug. ---------- components: Library (Lib) messages: 354568 nosy: John Lennon priority: normal severity: normal status: open title: typing: Classes that inherit `Generic[...]` indirectly aren't considered generic. type: behavior versions: Python 3.7 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue38459> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com