mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-129463: Remove two attributes from ForwardRef equality (#132283)
This commit is contained in:
parent
884df116d7
commit
5e80fee41a
3 changed files with 10 additions and 4 deletions
|
@ -225,8 +225,6 @@ class ForwardRef:
|
||||||
# because dictionaries are not hashable.
|
# because dictionaries are not hashable.
|
||||||
and self.__globals__ is other.__globals__
|
and self.__globals__ is other.__globals__
|
||||||
and self.__forward_is_class__ == other.__forward_is_class__
|
and self.__forward_is_class__ == other.__forward_is_class__
|
||||||
and self.__code__ == other.__code__
|
|
||||||
and self.__ast_node__ == other.__ast_node__
|
|
||||||
and self.__cell__ == other.__cell__
|
and self.__cell__ == other.__cell__
|
||||||
and self.__owner__ == other.__owner__
|
and self.__owner__ == other.__owner__
|
||||||
)
|
)
|
||||||
|
@ -237,8 +235,6 @@ class ForwardRef:
|
||||||
self.__forward_module__,
|
self.__forward_module__,
|
||||||
id(self.__globals__), # dictionaries are not hashable, so hash by identity
|
id(self.__globals__), # dictionaries are not hashable, so hash by identity
|
||||||
self.__forward_is_class__,
|
self.__forward_is_class__,
|
||||||
self.__code__,
|
|
||||||
self.__ast_node__,
|
|
||||||
self.__cell__,
|
self.__cell__,
|
||||||
self.__owner__,
|
self.__owner__,
|
||||||
))
|
))
|
||||||
|
|
|
@ -6539,6 +6539,13 @@ class ForwardRefTests(BaseTestCase):
|
||||||
self.assertEqual(X | "x", Union[X, "x"])
|
self.assertEqual(X | "x", Union[X, "x"])
|
||||||
self.assertEqual("x" | X, Union["x", X])
|
self.assertEqual("x" | X, Union["x", X])
|
||||||
|
|
||||||
|
def test_multiple_ways_to_create(self):
|
||||||
|
X1 = Union["X"]
|
||||||
|
self.assertIsInstance(X1, ForwardRef)
|
||||||
|
X2 = ForwardRef("X")
|
||||||
|
self.assertIsInstance(X2, ForwardRef)
|
||||||
|
self.assertEqual(X1, X2)
|
||||||
|
|
||||||
|
|
||||||
class InternalsTests(BaseTestCase):
|
class InternalsTests(BaseTestCase):
|
||||||
def test_deprecation_for_no_type_params_passed_to__evaluate(self):
|
def test_deprecation_for_no_type_params_passed_to__evaluate(self):
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Comparison of :class:`annotationlib.ForwardRef` objects no longer uses the
|
||||||
|
internal ``__code__`` and ``__ast_node__`` attributes, which are used as
|
||||||
|
caches.
|
Loading…
Add table
Add a link
Reference in a new issue