mirror of
https://github.com/python/cpython.git
synced 2025-12-10 19:10:59 +00:00
bpo-45438: format of inspect.Signature with generic builtins (#29212)
Use types.GenericAlias in inspect.formatannotation to correctly add type arguments of builtin types to the string representation of Signatures. Co-authored-by: Martin Rückl <martin.rueckl@codecentric.de>
This commit is contained in:
parent
10bbd41ba8
commit
d02ffd1b5c
3 changed files with 14 additions and 0 deletions
|
|
@ -1325,6 +1325,8 @@ def getargvalues(frame):
|
||||||
def formatannotation(annotation, base_module=None):
|
def formatannotation(annotation, base_module=None):
|
||||||
if getattr(annotation, '__module__', None) == 'typing':
|
if getattr(annotation, '__module__', None) == 'typing':
|
||||||
return repr(annotation).replace('typing.', '')
|
return repr(annotation).replace('typing.', '')
|
||||||
|
if isinstance(annotation, types.GenericAlias):
|
||||||
|
return str(annotation)
|
||||||
if isinstance(annotation, type):
|
if isinstance(annotation, type):
|
||||||
if annotation.__module__ in ('builtins', base_module):
|
if annotation.__module__ in ('builtins', base_module):
|
||||||
return annotation.__qualname__
|
return annotation.__qualname__
|
||||||
|
|
|
||||||
|
|
@ -3236,6 +3236,17 @@ class TestSignatureObject(unittest.TestCase):
|
||||||
pass
|
pass
|
||||||
self.assertEqual(str(inspect.signature(foo)), '()')
|
self.assertEqual(str(inspect.signature(foo)), '()')
|
||||||
|
|
||||||
|
def foo(a: list[str]) -> tuple[str, float]:
|
||||||
|
pass
|
||||||
|
self.assertEqual(str(inspect.signature(foo)),
|
||||||
|
'(a: list[str]) -> tuple[str, float]')
|
||||||
|
|
||||||
|
from typing import Tuple
|
||||||
|
def foo(a: list[str]) -> Tuple[str, float]:
|
||||||
|
pass
|
||||||
|
self.assertEqual(str(inspect.signature(foo)),
|
||||||
|
'(a: list[str]) -> Tuple[str, float]')
|
||||||
|
|
||||||
def test_signature_str_positional_only(self):
|
def test_signature_str_positional_only(self):
|
||||||
P = inspect.Parameter
|
P = inspect.Parameter
|
||||||
S = inspect.Signature
|
S = inspect.Signature
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Fix typing.Signature string representation for generic builtin types.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue