Commit 18de8059 authored by Guido van Rossum's avatar Guido van Rossum

Issue #28649: fix first issue with _ForwardRef (#327)

parent 8c3f96e0
...@@ -201,8 +201,7 @@ class _ForwardRef(_TypingBase, _root=True): ...@@ -201,8 +201,7 @@ class _ForwardRef(_TypingBase, _root=True):
"""Wrapper to hold a forward reference.""" """Wrapper to hold a forward reference."""
__slots__ = ('__forward_arg__', '__forward_code__', __slots__ = ('__forward_arg__', '__forward_code__',
'__forward_evaluated__', '__forward_value__', '__forward_evaluated__', '__forward_value__')
'__forward_frame__')
def __init__(self, arg): def __init__(self, arg):
super().__init__(arg) super().__init__(arg)
...@@ -217,12 +216,6 @@ class _ForwardRef(_TypingBase, _root=True): ...@@ -217,12 +216,6 @@ class _ForwardRef(_TypingBase, _root=True):
self.__forward_code__ = code self.__forward_code__ = code
self.__forward_evaluated__ = False self.__forward_evaluated__ = False
self.__forward_value__ = None self.__forward_value__ = None
typing_globals = globals()
frame = sys._getframe(1)
while frame is not None and frame.f_globals is typing_globals:
frame = frame.f_back
assert frame is not None
self.__forward_frame__ = frame
def _eval_type(self, globalns, localns): def _eval_type(self, globalns, localns):
if not self.__forward_evaluated__: if not self.__forward_evaluated__:
...@@ -242,10 +235,10 @@ class _ForwardRef(_TypingBase, _root=True): ...@@ -242,10 +235,10 @@ class _ForwardRef(_TypingBase, _root=True):
if not isinstance(other, _ForwardRef): if not isinstance(other, _ForwardRef):
return NotImplemented return NotImplemented
return (self.__forward_arg__ == other.__forward_arg__ and return (self.__forward_arg__ == other.__forward_arg__ and
self.__forward_frame__ == other.__forward_frame__) self.__forward_value__ == other.__forward_value__)
def __hash__(self): def __hash__(self):
return hash((self.__forward_arg__, self.__forward_frame__)) return hash((self.__forward_arg__, self.__forward_value__))
def __instancecheck__(self, obj): def __instancecheck__(self, obj):
raise TypeError("Forward references cannot be used with isinstance().") raise TypeError("Forward references cannot be used with isinstance().")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment