diff --git a/python2/test_typing.py b/python2/test_typing.py index 53ba67a4..9240b9d3 100644 --- a/python2/test_typing.py +++ b/python2/test_typing.py @@ -521,6 +521,7 @@ def test_basics(self): Y[unicode] with self.assertRaises(TypeError): Y[unicode, unicode] + self.assertIsSubclass(SimpleMapping[str, int], SimpleMapping) def test_generic_errors(self): T = TypeVar('T') diff --git a/python2/typing.py b/python2/typing.py index 6b137c4e..9b08cf49 100644 --- a/python2/typing.py +++ b/python2/typing.py @@ -1169,8 +1169,10 @@ def __getitem__(self, params): _check_generic(self, params) tvars = _type_vars(params) args = params + + prepend = (self,) if self.__origin__ is None else () return self.__class__(self.__name__, - self.__bases__, + prepend + self.__bases__, dict(self.__dict__), tvars=tvars, args=args, diff --git a/src/test_typing.py b/src/test_typing.py index cb88ea73..266d9230 100644 --- a/src/test_typing.py +++ b/src/test_typing.py @@ -552,6 +552,7 @@ def test_basics(self): Y[str] with self.assertRaises(TypeError): Y[str, str] + self.assertIsSubclass(SimpleMapping[str, int], SimpleMapping) def test_generic_errors(self): T = TypeVar('T') diff --git a/src/typing.py b/src/typing.py index 964dec76..d3c9982d 100644 --- a/src/typing.py +++ b/src/typing.py @@ -1096,8 +1096,10 @@ def __getitem__(self, params): _check_generic(self, params) tvars = _type_vars(params) args = params + + prepend = (self,) if self.__origin__ is None else () return self.__class__(self.__name__, - self.__bases__, + prepend + self.__bases__, _no_slots_copy(self.__dict__), tvars=tvars, args=args,