[issue26391] typing: Specialized sub-classes of Generic never call __init__

2016-04-05 Thread Guido van Rossum

Changes by Guido van Rossum :


--
resolution:  -> fixed
status: open -> closed

___
Python tracker 

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



[issue26391] typing: Specialized sub-classes of Generic never call __init__

2016-04-05 Thread Roundup Robot

Roundup Robot added the comment:

New changeset be3c4151d9bf by Guido van Rossum in branch '3.5':
Many changes from the upstream repo (https://github.com/python/typing).
https://hg.python.org/cpython/rev/be3c4151d9bf

--
nosy: +python-dev

___
Python tracker 

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



[issue26391] typing: Specialized sub-classes of Generic never call __init__

2016-04-04 Thread Guido van Rossum

Guido van Rossum added the comment:

This is fixed upstream 
(https://github.com/python/typing/commit/8c6aaf30751fec28f1a7e467139ae23c9cc30c81).
 I'm keeping this open until I've merged typing.py into CPython 3.5 and 3.6.

--

___
Python tracker 

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



[issue26391] typing: Specialized sub-classes of Generic never call __init__

2016-03-25 Thread Guido van Rossum

Guido van Rossum added the comment:

Actually, I just realized why this is. Generic.__new__() calls 
next_in_mro.__new__(_gorg(cls)). Here next_in_mro is just object, but 
_gorg(cls) is Foo, in the case where cls is Bar (i.e. Foo[str]). The _gorg() 
call strips the [str] part of the type.

So far so good. Where it gets interesting is that, in general in Python, 
whenever __new__(cls, ...) returns an object whose class is not cls, it is 
presumed to be an already properly initialized object!

I think I can fix this by calling __init__() explicitly in the case where 
_gorg(cls) is not cls.

The reason, BTW, why it strips the [str] part of the class is because that's 
what PEP 484 says, in the same section where it says that Node[T]() and 
Node[int]() are allowed:

> At runtime the type is not preserved, and the class of ``x`` is just
> ``Node`` in all cases.

So this bit of code is trying to do the right thing but obviously hasn't been 
tested much, because mypy disallows that syntax.

--

___
Python tracker 

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



[issue26391] typing: Specialized sub-classes of Generic never call __init__

2016-03-25 Thread STINNER Victor

Changes by STINNER Victor :


--
title: Specialized sub-classes of Generic never call __init__ -> typing: 
Specialized sub-classes of Generic never call __init__

___
Python tracker 

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