[issue38459] typing: Classes that inherit `Generic[...]` indirectly aren't considered generic.

2019-10-13 Thread Ivan Levkivskyi


Ivan Levkivskyi  added the comment:

The docs for typing module are clear about this:
```
Using a generic class without specifying type parameters assumes Any for each 
position.
```
There is also an example involving a base class.

--
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38459] typing: Classes that inherit `Generic[...]` indirectly aren't considered generic.

2019-10-13 Thread John Lennon


John Lennon  added the comment:

BTW I don't mind creating a PR for that issue if there will be an agreement on 
what is the desired behavior here.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38459] typing: Classes that inherit `Generic[...]` indirectly aren't considered generic.

2019-10-13 Thread Karthikeyan Singaravelan


Change by Karthikeyan Singaravelan :


--
nosy: +gvanrossum, levkivskyi

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38459] typing: Classes that inherit `Generic[...]` indirectly aren't considered generic.

2019-10-13 Thread John Lennon


John Lennon  added the comment:

However, if I change the signature to:

```python

class SomeImplMapping(GenericMapping[KT, VT]):

```

Everything works just fine. And that's not really clear for me: we already have 
declared the generic types, we can not change the amount of those arguments, so 
why do we have to pass the same generic parameters again?

And even if that's the designed way to do things, I would expect the first 
example to fail not because of the type substitution, but for deriving the 
`GenericMapping` without generic type arguments provided (as if I'll try to 
derive `Generic` instead of `Generic[...]`).

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue38459] typing: Classes that inherit `Generic[...]` indirectly aren't considered generic.

2019-10-13 Thread John Lennon


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 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com