diff options
author | Ivan Levkivskyi <levkivskyi@gmail.com> | 2018-05-11 03:15:14 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-11 03:15:14 (GMT) |
commit | 308dbe03887a60a192860bc533af15e7520169a6 (patch) | |
tree | 70a2ed099408f8301506b2f598c51291e016eba0 /Lib/typing.py | |
parent | 7488c79b600cd173b0ccea13adb567d078e7b835 (diff) | |
download | cpython-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.py | 13 |
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 |