From: Ivan Levkivskyi Date: Fri, 11 May 2018 03:10:10 +0000 (-0400) Subject: Fix a bug in Generic.__new__ (GH-6758) X-Git-Tag: v3.8.0a1~1874 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b551e9f0ff25018a5606465003e2c51c04f693a3;p=python Fix a bug in Generic.__new__ (GH-6758) --- diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 46bab5eba6..314716cd7d 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -1367,6 +1367,9 @@ class GenericTests(BaseTestCase): class A(Generic[T]): pass + with self.assertRaises(TypeError): + A('foo') + class B: def __new__(cls): # call object diff --git a/Lib/typing.py b/Lib/typing.py index 89b73db158..8025dfd932 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -836,7 +836,7 @@ class Generic: if cls is Generic: raise TypeError("Type Generic cannot be instantiated; " "it can be used only as a base class") - if super().__new__ is object.__new__: + if super().__new__ is object.__new__ and cls.__init__ is not object.__init__: obj = super().__new__(cls) else: obj = super().__new__(cls, *args, **kwds)