diff options
Diffstat (limited to 'sphinx/domains/python.py')
| -rw-r--r-- | sphinx/domains/python.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 99bc1bcae..edd4e829f 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -130,6 +130,8 @@ def type_to_xref(target: str, env: BuildEnvironment | None = None, def _parse_annotation(annotation: str, env: BuildEnvironment | None) -> list[Node]: """Parse type annotation.""" + short_literals = env.config.python_display_short_literal_types + def unparse(node: ast.AST) -> list[Node]: if isinstance(node, ast.Attribute): return [nodes.Text(f"{unparse(node.value)[0]}.{node.attr}")] @@ -182,6 +184,8 @@ def _parse_annotation(annotation: str, env: BuildEnvironment | None) -> list[Nod if isinstance(node, ast.Subscript): if getattr(node.value, 'id', '') in {'Optional', 'Union'}: return _unparse_pep_604_annotation(node) + if short_literals and getattr(node.value, 'id', '') == 'Literal': + return _unparse_pep_604_annotation(node) result = unparse(node.value) result.append(addnodes.desc_sig_punctuation('', '[')) result.extend(unparse(node.slice)) @@ -1511,6 +1515,7 @@ def setup(app: Sphinx) -> dict[str, Any]: app.add_domain(PythonDomain) app.add_config_value('python_use_unqualified_type_names', False, 'env') + app.add_config_value('python_display_short_literal_types', False, 'env') app.connect('object-description-transform', filter_meta_fields) app.connect('missing-reference', builtin_resolver, priority=900) |
