Skip to content

Commit 149b538

Browse files
committed
Make negative caches writable only for non-subscripted generics
1 parent 1085a89 commit 149b538

File tree

2 files changed

+20
-16
lines changed

2 files changed

+20
-16
lines changed

python2/typing.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -1082,10 +1082,11 @@ def _abc_negative_cache(self):
10821082

10831083
@_abc_negative_cache.setter
10841084
def _abc_negative_cache(self, value):
1085-
if isinstance(self.__extra__, abc.ABCMeta):
1086-
self.__extra__._abc_negative_cache = value
1087-
else:
1088-
_gorg(self)._abc_generic_negative_cache = value
1085+
if self.__origin__ is None:
1086+
if isinstance(self.__extra__, abc.ABCMeta):
1087+
self.__extra__._abc_negative_cache = value
1088+
else:
1089+
self._abc_generic_negative_cache = value
10891090

10901091
@property
10911092
def _abc_negative_cache_version(self):
@@ -1095,10 +1096,11 @@ def _abc_negative_cache_version(self):
10951096

10961097
@_abc_negative_cache_version.setter
10971098
def _abc_negative_cache_version(self, value):
1098-
if isinstance(self.__extra__, abc.ABCMeta):
1099-
self.__extra__._abc_negative_cache_version = value
1100-
else:
1101-
_gorg(self)._abc_generic_negative_cache_version = value
1099+
if self.__origin__ is None:
1100+
if isinstance(self.__extra__, abc.ABCMeta):
1101+
self.__extra__._abc_negative_cache_version = value
1102+
else:
1103+
self._abc_generic_negative_cache_version = value
11021104

11031105
def _get_type_vars(self, tvars):
11041106
if self.__origin__ and self.__parameters__:

src/typing.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -1009,10 +1009,11 @@ def _abc_negative_cache(self):
10091009

10101010
@_abc_negative_cache.setter
10111011
def _abc_negative_cache(self, value):
1012-
if isinstance(self.__extra__, abc.ABCMeta):
1013-
self.__extra__._abc_negative_cache = value
1014-
else:
1015-
_gorg(self)._abc_generic_negative_cache = value
1012+
if self.__origin__ is None:
1013+
if isinstance(self.__extra__, abc.ABCMeta):
1014+
self.__extra__._abc_negative_cache = value
1015+
else:
1016+
self._abc_generic_negative_cache = value
10161017

10171018
@property
10181019
def _abc_negative_cache_version(self):
@@ -1022,10 +1023,11 @@ def _abc_negative_cache_version(self):
10221023

10231024
@_abc_negative_cache_version.setter
10241025
def _abc_negative_cache_version(self, value):
1025-
if isinstance(self.__extra__, abc.ABCMeta):
1026-
self.__extra__._abc_negative_cache_version = value
1027-
else:
1028-
_gorg(self)._abc_generic_negative_cache_version = value
1026+
if self.__origin__ is None:
1027+
if isinstance(self.__extra__, abc.ABCMeta):
1028+
self.__extra__._abc_negative_cache_version = value
1029+
else:
1030+
self._abc_generic_negative_cache_version = value
10291031

10301032
def _get_type_vars(self, tvars):
10311033
if self.__origin__ and self.__parameters__:

0 commit comments

Comments
 (0)