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

Reply via email to