# because dictionaries are not hashable.
and self.__globals__ is other.__globals__
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.__owner__ == other.__owner__
)
self.__forward_module__,
id(self.__globals__), # dictionaries are not hashable, so hash by identity
self.__forward_is_class__,
- self.__code__,
- self.__ast_node__,
self.__cell__,
self.__owner__,
))
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):
def test_deprecation_for_no_type_params_passed_to__evaluate(self):
--- /dev/null
+Comparison of :class:`annotationlib.ForwardRef` objects no longer uses the
+internal ``__code__`` and ``__ast_node__`` attributes, which are used as
+caches.