diff options
author | jfbu <jfbu@free.fr> | 2021-02-02 18:01:55 +0100 |
---|---|---|
committer | jfbu <jfbu@free.fr> | 2021-02-02 18:01:55 +0100 |
commit | fbafb308b82a606836fb16f771645fab23bf7305 (patch) | |
tree | 10a2850e91df311a49c479b144b697564d36c3d6 /sphinx/domains/python.py | |
parent | a5939ea588bd819614e497a569005a844fe8017d (diff) | |
parent | 1cf915f7ddc6e12cf9d67d94b6be27fc95c9c4df (diff) | |
download | sphinx-git-fbafb308b82a606836fb16f771645fab23bf7305.tar.gz |
Merge branch '3.x' into master_with_merged_3.x
Diffstat (limited to 'sphinx/domains/python.py')
-rw-r--r-- | sphinx/domains/python.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index c07c31e87..80028e2b2 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -101,17 +101,19 @@ def _parse_annotation(annotation: str, env: BuildEnvironment = None) -> List[Nod def unparse(node: ast.AST) -> List[Node]: if isinstance(node, ast.Attribute): return [nodes.Text("%s.%s" % (unparse(node.value)[0], node.attr))] - elif isinstance(node, ast.Constant): # type: ignore - if node.value is Ellipsis: - return [addnodes.desc_sig_punctuation('', "...")] - else: - return [nodes.Text(node.value)] + elif isinstance(node, ast.BinOp): + result = unparse(node.left) # type: List[Node] + result.extend(unparse(node.op)) + result.extend(unparse(node.right)) + return result + elif isinstance(node, ast.BitOr): + return [nodes.Text(' '), addnodes.desc_sig_punctuation('', '|'), nodes.Text(' ')] elif isinstance(node, ast.Expr): return unparse(node.value) elif isinstance(node, ast.Index): return unparse(node.value) elif isinstance(node, ast.List): - result = [addnodes.desc_sig_punctuation('', '[')] # type: List[Node] + result = [addnodes.desc_sig_punctuation('', '[')] for elem in node.elts: result.extend(unparse(elem)) result.append(addnodes.desc_sig_punctuation('', ', ')) @@ -157,7 +159,7 @@ def _parse_annotation(annotation: str, env: BuildEnvironment = None) -> List[Nod tree = ast_parse(annotation) result = unparse(tree) for i, node in enumerate(result): - if isinstance(node, nodes.Text): + if isinstance(node, nodes.Text) and node.strip(): result[i] = type_to_xref(str(node), env) return result except SyntaxError: |