gh-138729: Cover inspect.formatannotationrelativeto with tests (#138730)

This commit is contained in:
sobolevn 2025-09-10 16:06:16 +03:00 committed by GitHub
parent cf8f36fe0a
commit f5fa336579
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1778,14 +1778,55 @@ class C(metaclass=M):
class TestFormatAnnotation(unittest.TestCase):
def test_typing_replacement(self):
from test.typinganndata.ann_module9 import ann, ann1
from test.typinganndata.ann_module9 import A, ann, ann1
self.assertEqual(inspect.formatannotation(ann), 'List[str] | int')
self.assertEqual(inspect.formatannotation(ann1), 'List[testModule.typing.A] | int')
self.assertEqual(inspect.formatannotation(A, 'testModule.typing'), 'A')
self.assertEqual(inspect.formatannotation(A, 'other'), 'testModule.typing.A')
self.assertEqual(
inspect.formatannotation(ann1, 'testModule.typing'),
'List[testModule.typing.A] | int',
)
def test_forwardref(self):
fwdref = ForwardRef('fwdref')
self.assertEqual(inspect.formatannotation(fwdref), 'fwdref')
def test_formatannotationrelativeto(self):
from test.typinganndata.ann_module9 import A, ann1
# Builtin types:
self.assertEqual(
inspect.formatannotationrelativeto(object)(type),
'type',
)
# Custom types:
self.assertEqual(
inspect.formatannotationrelativeto(None)(A),
'testModule.typing.A',
)
class B: ...
B.__module__ = 'testModule.typing'
self.assertEqual(
inspect.formatannotationrelativeto(B)(A),
'A',
)
self.assertEqual(
inspect.formatannotationrelativeto(object)(A),
'testModule.typing.A',
)
# Not an instance of "type":
self.assertEqual(
inspect.formatannotationrelativeto(A)(ann1),
'List[testModule.typing.A] | int',
)
class TestIsMethodDescriptor(unittest.TestCase):