New submission from John Lennon :
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
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: 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
<https://bugs.python.org/issue38459>
___
___
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com