mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #7454 from tk0miya/7445_rtype_annotation_None
Fix #7445: a return annotation ``None`` is not converted to a hyperlink
This commit is contained in:
commit
ebf2571380
2
CHANGES
2
CHANGES
@ -19,6 +19,8 @@ Bugs fixed
|
||||
----------
|
||||
|
||||
* #7428: py domain: a reference to class ``None`` emits a nitpicky warning
|
||||
* #7445: py domain: a return annotation ``None`` in the function signature is
|
||||
not converted to a hyperlink when using intersphinx
|
||||
* #7418: std domain: duplication warning for glossary terms is case insensitive
|
||||
* #7438: C++, fix merging overloaded functions in parallel builds.
|
||||
* #7422: autodoc: fails with ValueError when using autodoc_mock_imports
|
||||
|
@ -71,8 +71,13 @@ pairindextypes = {
|
||||
def _parse_annotation(annotation: str) -> List[Node]:
|
||||
"""Parse type annotation."""
|
||||
def make_xref(text: str) -> addnodes.pending_xref:
|
||||
if text == 'None':
|
||||
reftype = 'obj'
|
||||
else:
|
||||
reftype = 'class'
|
||||
|
||||
return pending_xref('', nodes.Text(text),
|
||||
refdomain='py', reftype='class', reftarget=text)
|
||||
refdomain='py', reftype=reftype, reftarget=text)
|
||||
|
||||
def unparse(node: ast.AST) -> List[Node]:
|
||||
if isinstance(node, ast.Attribute):
|
||||
|
@ -239,6 +239,7 @@ def test_get_full_qualified_name():
|
||||
def test_parse_annotation():
|
||||
doctree = _parse_annotation("int")
|
||||
assert_node(doctree, ([pending_xref, "int"],))
|
||||
assert_node(doctree[0], pending_xref, refdomain="py", reftype="class", reftarget="int")
|
||||
|
||||
doctree = _parse_annotation("List[int]")
|
||||
assert_node(doctree, ([pending_xref, "List"],
|
||||
@ -266,6 +267,12 @@ def test_parse_annotation():
|
||||
[pending_xref, "int"],
|
||||
[desc_sig_punctuation, "]"]))
|
||||
|
||||
# None type makes an object-reference (not a class reference)
|
||||
doctree = _parse_annotation("None")
|
||||
assert_node(doctree, ([pending_xref, "None"],))
|
||||
assert_node(doctree[0], pending_xref, refdomain="py", reftype="obj", reftarget="None")
|
||||
|
||||
|
||||
|
||||
def test_pyfunction_signature(app):
|
||||
text = ".. py:function:: hello(name: str) -> str"
|
||||
|
Loading…
Reference in New Issue
Block a user