bpo-45489: Update ForwardRef to support | operator. (GH-28991)

This commit is contained in:
Dong-hee Na 2021-10-17 00:12:58 +09:00 committed by GitHub
parent 4ecd119b00
commit 15ad52fbf6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 0 deletions

View file

@ -2903,6 +2903,12 @@ class ForwardRefTests(BaseTestCase):
self.assertNotEqual(gth(Loop, globals())['attr'], Final[int]) self.assertNotEqual(gth(Loop, globals())['attr'], Final[int])
self.assertNotEqual(gth(Loop, globals())['attr'], Final) self.assertNotEqual(gth(Loop, globals())['attr'], Final)
def test_or(self):
X = ForwardRef('X')
# __or__/__ror__ itself
self.assertEqual(X | "x", Union[X, "x"])
self.assertEqual("x" | X, Union["x", X])
class OverloadTests(BaseTestCase): class OverloadTests(BaseTestCase):

View file

@ -719,6 +719,12 @@ class ForwardRef(_Final, _root=True):
def __hash__(self): def __hash__(self):
return hash(self.__forward_arg__) return hash(self.__forward_arg__)
def __or__(self, other):
return Union[self, other]
def __ror__(self, other):
return Union[other, self]
def __repr__(self): def __repr__(self):
return f'ForwardRef({self.__forward_arg__!r})' return f'ForwardRef({self.__forward_arg__!r})'

View file

@ -0,0 +1,2 @@
Update :class:`~typing.ForwardRef` to support ``|`` operator. Patch by
Dong-hee Na.