From 3e24190564451967cd070a6d0c4e0e8612edc3eb Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 30 Aug 2021 00:20:22 +0900 Subject: [PATCH] Fix #9585: py:property directive does not create a hyperlink for types --- CHANGES | 2 ++ sphinx/domains/python.py | 3 ++- tests/test_domain_py.py | 6 ++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 4e98b2c8ab4..c7e781de868 100644 --- a/CHANGES +++ b/CHANGES @@ -38,6 +38,8 @@ Bugs fixed * #9456: html search: abbreation marks are inserted to the search result if failed to fetch the content of the page * #9267: html theme: CSS and JS files added by theme were loaded twice +* #9585: py domain: ``:type:`` option for :rst:dir:`py:property` directive does + not create a hyperlink * #9535 comment: C++, fix parsing of defaulted function parameters that are function pointers. * #9564: smartquotes: don't adjust typography for text with diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index e8330e81cf5..9875a9f4b65 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -861,7 +861,8 @@ def handle_signature(self, sig: str, signode: desc_signature) -> Tuple[str, str] typ = self.options.get('type') if typ: - signode += addnodes.desc_annotation(typ, ': ' + typ) + annotations = _parse_annotation(typ, self.env) + signode += addnodes.desc_annotation(typ, '', nodes.Text(': '), *annotations) return fullname, prefix diff --git a/tests/test_domain_py.py b/tests/test_domain_py.py index 8b72f8b7a27..067febcf495 100644 --- a/tests/test_domain_py.py +++ b/tests/test_domain_py.py @@ -833,13 +833,15 @@ def test_pyproperty(app): entries=[('single', 'prop1 (Class property)', 'Class.prop1', '', None)]) assert_node(doctree[1][1][1], ([desc_signature, ([desc_annotation, "abstract property "], [desc_name, "prop1"], - [desc_annotation, ": str"])], + [desc_annotation, (": ", + [pending_xref, "str"])])], [desc_content, ()])) assert_node(doctree[1][1][2], addnodes.index, entries=[('single', 'prop2 (Class property)', 'Class.prop2', '', None)]) assert_node(doctree[1][1][3], ([desc_signature, ([desc_annotation, "class property "], [desc_name, "prop2"], - [desc_annotation, ": str"])], + [desc_annotation, (": ", + [pending_xref, "str"])])], [desc_content, ()])) assert 'Class.prop1' in domain.objects assert domain.objects['Class.prop1'] == ('index', 'Class.prop1', 'property', False)