changeset: 105034:249a1f0b2857 branch: 3.6 parent: 105031:5b253d641826 parent: 105033:0da2e381ad71 user: Guido van Rossum date: Thu Nov 10 08:26:19 2016 -0800 files: Lib/typing.py description: Issue #28649: fix first issue with _ForwardRef (#327) (3.5->3.6) diff -r 5b253d641826 -r 249a1f0b2857 Lib/typing.py --- a/Lib/typing.py Wed Nov 09 18:56:26 2016 -0500 +++ b/Lib/typing.py Thu Nov 10 08:26:19 2016 -0800 @@ -201,8 +201,7 @@ """Wrapper to hold a forward reference.""" __slots__ = ('__forward_arg__', '__forward_code__', - '__forward_evaluated__', '__forward_value__', - '__forward_frame__') + '__forward_evaluated__', '__forward_value__') def __init__(self, arg): super().__init__(arg) @@ -217,12 +216,6 @@ self.__forward_code__ = code self.__forward_evaluated__ = False 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): if not self.__forward_evaluated__: @@ -242,10 +235,10 @@ if not isinstance(other, _ForwardRef): return NotImplemented return (self.__forward_arg__ == other.__forward_arg__ and - self.__forward_frame__ == other.__forward_frame__) + self.__forward_value__ == other.__forward_value__) def __hash__(self): - return hash((self.__forward_arg__, self.__forward_frame__)) + return hash((self.__forward_arg__, self.__forward_value__)) def __instancecheck__(self, obj): raise TypeError("Forward references cannot be used with isinstance().")