From 2f7b03bac7419f325fc0766e09f347cf3320bca4 Mon Sep 17 00:00:00 2001 From: Ivan Levkivskyi Date: Fri, 3 Feb 2017 03:34:39 +0100 Subject: [PATCH 1/2] Prepend bases with _gorg on subscription --- python2/test_typing.py | 1 + python2/typing.py | 5 ++++- src/test_typing.py | 1 + src/typing.py | 5 ++++- 4 files changed, 10 insertions(+), 2 deletions(-) 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..82d1e49f 100644 --- a/python2/typing.py +++ b/python2/typing.py @@ -1169,8 +1169,11 @@ def __getitem__(self, params): _check_generic(self, params) tvars = _type_vars(params) args = params + + gorg = _gorg(self) + prepend = (gorg,) if gorg not in self.__bases__ 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..6526c8b2 100644 --- a/src/typing.py +++ b/src/typing.py @@ -1096,8 +1096,11 @@ def __getitem__(self, params): _check_generic(self, params) tvars = _type_vars(params) args = params + + gorg = _gorg(self) + prepend = (gorg,) if gorg not in self.__bases__ else () return self.__class__(self.__name__, - self.__bases__, + prepend + self.__bases__, _no_slots_copy(self.__dict__), tvars=tvars, args=args, From d1b2baf4e70772c737c7126e8f404c80953d21f4 Mon Sep 17 00:00:00 2001 From: Ivan Levkivskyi Date: Fri, 3 Feb 2017 09:57:36 +0100 Subject: [PATCH 2/2] Simplify code --- python2/typing.py | 3 +-- src/typing.py | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/python2/typing.py b/python2/typing.py index 82d1e49f..9b08cf49 100644 --- a/python2/typing.py +++ b/python2/typing.py @@ -1170,8 +1170,7 @@ def __getitem__(self, params): tvars = _type_vars(params) args = params - gorg = _gorg(self) - prepend = (gorg,) if gorg not in self.__bases__ else () + prepend = (self,) if self.__origin__ is None else () return self.__class__(self.__name__, prepend + self.__bases__, dict(self.__dict__), diff --git a/src/typing.py b/src/typing.py index 6526c8b2..d3c9982d 100644 --- a/src/typing.py +++ b/src/typing.py @@ -1097,8 +1097,7 @@ def __getitem__(self, params): tvars = _type_vars(params) args = params - gorg = _gorg(self) - prepend = (gorg,) if gorg not in self.__bases__ else () + prepend = (self,) if self.__origin__ is None else () return self.__class__(self.__name__, prepend + self.__bases__, _no_slots_copy(self.__dict__),