diff --git a/python2/test_typing.py b/python2/test_typing.py index 53ba67a45..9240b9d38 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 6b137c4ef..9b08cf495 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 cb88ea73f..266d92309 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 964dec76b..d3c9982d1 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,