Skip to content

Commit

Permalink
Set role to data when creating an Optional from | None (#285)
Browse files Browse the repository at this point in the history
  • Loading branch information
hoodmane committed Jan 13, 2023
1 parent 2747ae2 commit 27dd8e7
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/sphinx_autodoc_typehints/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,11 +168,13 @@ def format_annotation(annotation: Any, config: Config) -> str: # noqa: C901 # t
elif full_name in ("typing.Union", "types.UnionType") and type(None) in args:
if len(args) == 2:
full_name = "typing.Optional"
role = "data"
args = tuple(x for x in args if x is not type(None)) # noqa: E721
else:
simplify_optional_unions: bool = getattr(config, "simplify_optional_unions", True)
if not simplify_optional_unions:
full_name = "typing.Optional"
role = "data"
args_format = f"\\[:py:data:`{prefix}typing.Union`\\[{{}}]]"
args = tuple(x for x in args if x is not type(None)) # noqa: E721
elif full_name == "typing.Callable" and args and args[0] is not ...:
Expand Down
1 change: 1 addition & 0 deletions tests/test_sphinx_autodoc_typehints.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ def test_parse_annotation(annotation: Any, module: str, class_name: str, args: t
),
),
(Optional[str], ":py:data:`~typing.Optional`\\[:py:class:`str`]"),
(Union[str, None], ":py:data:`~typing.Optional`\\[:py:class:`str`]"),
(
Optional[Union[str, bool]],
":py:data:`~typing.Union`\\[:py:class:`str`, " ":py:class:`bool`, :py:obj:`None`]",
Expand Down

0 comments on commit 27dd8e7

Please sign in to comment.