summaryrefslogtreecommitdiffstats
path: root/Lib/typing.py
diff options
context:
space:
mode:
authorIvan Levkivskyi <levkivskyi@gmail.com>2018-05-11 03:15:14 (GMT)
committerGitHub <noreply@github.com>2018-05-11 03:15:14 (GMT)
commit308dbe03887a60a192860bc533af15e7520169a6 (patch)
tree70a2ed099408f8301506b2f598c51291e016eba0 /Lib/typing.py
parent7488c79b600cd173b0ccea13adb567d078e7b835 (diff)
downloadcpython-308dbe03887a60a192860bc533af15e7520169a6.zip
cpython-308dbe03887a60a192860bc533af15e7520169a6.tar.gz
cpython-308dbe03887a60a192860bc533af15e7520169a6.tar.bz2
Backport recent typing updates (GH-6759)
Diffstat (limited to 'Lib/typing.py')
-rw-r--r--Lib/typing.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/Lib/typing.py b/Lib/typing.py
index b5564cc..f2b6aaf 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -1181,10 +1181,18 @@ def _generic_new(base_cls, cls, *args, **kwds):
# Assure type is erased on instantiation,
# but attempt to store it in __orig_class__
if cls.__origin__ is None:
- return base_cls.__new__(cls)
+ if (base_cls.__new__ is object.__new__ and
+ cls.__init__ is not object.__init__):
+ return base_cls.__new__(cls)
+ else:
+ return base_cls.__new__(cls, *args, **kwds)
else:
origin = cls._gorg
- obj = base_cls.__new__(origin)
+ if (base_cls.__new__ is object.__new__ and
+ cls.__init__ is not object.__init__):
+ obj = base_cls.__new__(origin)
+ else:
+ obj = base_cls.__new__(origin, *args, **kwds)
try:
obj.__orig_class__ = cls
except AttributeError:
@@ -2146,6 +2154,7 @@ class NamedTupleMeta(type):
"follow default field(s) {default_names}"
.format(field_name=field_name,
default_names=', '.join(defaults_dict.keys())))
+ nm_tpl.__new__.__annotations__ = collections.OrderedDict(types)
nm_tpl.__new__.__defaults__ = tuple(defaults)
nm_tpl._field_defaults = defaults_dict
# update from user namespace without overriding special namedtuple attributes