From 62d20e70ecf3d2d7bca546cc9de6fa8c33e26b9f Mon Sep 17 00:00:00 2001 From: Arash Badie-Modiri Date: Tue, 12 Dec 2023 04:26:06 +0100 Subject: [PATCH] parse annotations of function && return type --- sphinx/domains/python.py | 2 +- tests/test_domain_py.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 930f8e72f21..ec440bd40ca 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -51,7 +51,7 @@ py_sig_re = re.compile( r'''^ ([\w.]*\.)? # class name(s) (\w+) \s* # thing name - (?: \[\s*(.*)\s*])? # optional: type parameters list + (?: \[\s*(.*?)\s*\])? # optional: type parameters list (?: \(\s*(.*)\s*\) # optional: arguments (?:\s* -> \s* (.*))? # return annotation )? $ # and nothing more diff --git a/tests/test_domain_py.py b/tests/test_domain_py.py index c5a044bc663..a9793b6788d 100644 --- a/tests/test_domain_py.py +++ b/tests/test_domain_py.py @@ -59,6 +59,12 @@ def test_function_signatures(): rv = parse('func(a=1) -> int object') assert rv == '(a=1)' + rv = parse('func[Annotated[typename]](a=1) -> int') + assert rv == '(a=1)' + + rv = parse('func[Annotated[typename]](a=1) -> Annotated[typename]') + assert rv == '(a=1)' + rv = parse('func(a=1, [b=None])') assert rv == '(a=1, [b=None])'