From 1f8bee57d54450864815c05aeeca8cace3da7b60 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:15:02 -0800 Subject: [PATCH 01/12] [pre-commit.ci] pre-commit autoupdate (#526) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/python-jsonschema/check-jsonschema: 0.31.1 → 0.31.2](https://github.com/python-jsonschema/check-jsonschema/compare/0.31.1...0.31.2) - [github.com/astral-sh/ruff-pre-commit: v0.9.6 → v0.9.7](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.6...v0.9.7) - [github.com/rbubley/mirrors-prettier: v3.5.1 → v3.5.2](https://github.com/rbubley/mirrors-prettier/compare/v3.5.1...v3.5.2) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fb3e099..0581962 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: "0.31.1" + rev: "0.31.2" hooks: - id: check-github-workflows args: ["--verbose"] @@ -24,13 +24,13 @@ repos: hooks: - id: pyproject-fmt - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.9.6" + rev: "v0.9.7" hooks: - id: ruff-format - id: ruff args: ["--fix", "--unsafe-fixes", "--exit-non-zero-on-fix"] - repo: https://github.com/rbubley/mirrors-prettier - rev: "v3.5.1" # Use the sha / tag you want to point at + rev: "v3.5.2" # Use the sha / tag you want to point at hooks: - id: prettier additional_dependencies: From bc75136b57edb2c7a2c75bac8a6d630eb949053a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 18:48:25 -0800 Subject: [PATCH 02/12] [pre-commit.ci] pre-commit autoupdate (#527) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/tox-dev/pyproject-fmt: v2.5.0 → v2.5.1](https://github.com/tox-dev/pyproject-fmt/compare/v2.5.0...v2.5.1) - [github.com/astral-sh/ruff-pre-commit: v0.9.7 → v0.9.9](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.7...v0.9.9) - [github.com/rbubley/mirrors-prettier: v3.5.2 → v3.5.3](https://github.com/rbubley/mirrors-prettier/compare/v3.5.2...v3.5.3) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0581962..9a39dd6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,17 +20,17 @@ repos: - id: tox-ini-fmt args: ["-p", "fix"] - repo: https://github.com/tox-dev/pyproject-fmt - rev: "v2.5.0" + rev: "v2.5.1" hooks: - id: pyproject-fmt - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.9.7" + rev: "v0.9.9" hooks: - id: ruff-format - id: ruff args: ["--fix", "--unsafe-fixes", "--exit-non-zero-on-fix"] - repo: https://github.com/rbubley/mirrors-prettier - rev: "v3.5.2" # Use the sha / tag you want to point at + rev: "v3.5.3" # Use the sha / tag you want to point at hooks: - id: prettier additional_dependencies: From f4cd7d8eacac2fa8bc8fca91673bd0453c4f8b1d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 13:16:17 -0700 Subject: [PATCH 03/12] [pre-commit.ci] pre-commit autoupdate (#528) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/python-jsonschema/check-jsonschema: 0.31.2 → 0.31.3](https://github.com/python-jsonschema/check-jsonschema/compare/0.31.2...0.31.3) - [github.com/astral-sh/ruff-pre-commit: v0.9.9 → v0.9.10](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.9...v0.9.10) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9a39dd6..51093ed 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: "0.31.2" + rev: "0.31.3" hooks: - id: check-github-workflows args: ["--verbose"] @@ -24,7 +24,7 @@ repos: hooks: - id: pyproject-fmt - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.9.9" + rev: "v0.9.10" hooks: - id: ruff-format - id: ruff From 5864a2502dafca9d2a363572aa3d1853743f00ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= Date: Sun, 16 Mar 2025 21:05:19 +0200 Subject: [PATCH 04/12] Fixed broken changelog links (#530) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1fbdbdb..37105b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,7 +55,7 @@ optional-dependencies.testing = [ "sphobjinv>=2.3.1.2", "typing-extensions>=4.12.2", ] -urls.Changelog = "https://github.com/tox-dev/sphinx-autodoc-typehints/blob/main/CHANGELOG.md" +urls.Changelog = "https://github.com/tox-dev/sphinx-autodoc-typehints/releases" urls.Homepage = "https://github.com/tox-dev/sphinx-autodoc-typehints" urls.Source = "https://github.com/tox-dev/sphinx-autodoc-typehints" urls.Tracker = "https://github.com/tox-dev/sphinx-autodoc-typehints/issues" From df9520ce98ca85325022d3fbe8be5737ce40a64d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 11:46:56 -0700 Subject: [PATCH 05/12] [pre-commit.ci] pre-commit autoupdate (#531) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.9.10 → v0.11.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.9.10...v0.11.2) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51093ed..0af920b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: hooks: - id: pyproject-fmt - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.9.10" + rev: "v0.11.2" hooks: - id: ruff-format - id: ruff From 071901d3b2f9b75076febfd588de90c91204e32a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 12:37:02 -0700 Subject: [PATCH 06/12] [pre-commit.ci] pre-commit autoupdate (#534) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/python-jsonschema/check-jsonschema: 0.31.3 → 0.32.1](https://github.com/python-jsonschema/check-jsonschema/compare/0.31.3...0.32.1) - [github.com/astral-sh/ruff-pre-commit: v0.11.2 → v0.11.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.2...v0.11.4) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0af920b..14f8755 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: "0.31.3" + rev: "0.32.1" hooks: - id: check-github-workflows args: ["--verbose"] @@ -24,7 +24,7 @@ repos: hooks: - id: pyproject-fmt - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.11.2" + rev: "v0.11.4" hooks: - id: ruff-format - id: ruff From 9bc4b14f1c6d919c0154eb3b82c3ecf381b14f07 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 15 Apr 2025 10:41:48 -0500 Subject: [PATCH 07/12] [pre-commit.ci] pre-commit autoupdate (#536) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/python-jsonschema/check-jsonschema: 0.32.1 → 0.33.0](https://github.com/python-jsonschema/check-jsonschema/compare/0.32.1...0.33.0) - [github.com/astral-sh/ruff-pre-commit: v0.11.4 → v0.11.5](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.4...v0.11.5) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 14f8755..d10536d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: "0.32.1" + rev: "0.33.0" hooks: - id: check-github-workflows args: ["--verbose"] @@ -24,7 +24,7 @@ repos: hooks: - id: pyproject-fmt - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.11.4" + rev: "v0.11.5" hooks: - id: ruff-format - id: ruff From e6ac91eedfc4a028b3c6ab4636c6670f6b36c9d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:38:53 -0500 Subject: [PATCH 08/12] Bump astral-sh/setup-uv from 5 to 6 (#541) Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 5 to 6. - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](https://github.com/astral-sh/setup-uv/compare/v5...v6) --- updated-dependencies: - dependency-name: astral-sh/setup-uv dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/check.yaml | 2 +- .github/workflows/release.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index c028c36..f546111 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -32,7 +32,7 @@ jobs: with: fetch-depth: 0 - name: Install the latest version of uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v6 with: enable-cache: true cache-dependency-glob: "pyproject.toml" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 8662416..4ff55fb 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -14,7 +14,7 @@ jobs: with: fetch-depth: 0 - name: Install the latest version of uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v6 with: enable-cache: true cache-dependency-glob: "pyproject.toml" From a003dfcf8e445657942ca7289749643c833c8a34 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:38:59 -0500 Subject: [PATCH 09/12] [pre-commit.ci] pre-commit autoupdate (#540) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.5 → v0.11.6](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.5...v0.11.6) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d10536d..edf68af 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: hooks: - id: pyproject-fmt - repo: https://github.com/astral-sh/ruff-pre-commit - rev: "v0.11.5" + rev: "v0.11.6" hooks: - id: ruff-format - id: ruff From 05b79e3f2f310250c1adc0fbd7d0dd9c3e50f802 Mon Sep 17 00:00:00 2001 From: Nice Zombies Date: Fri, 25 Apr 2025 18:39:16 +0200 Subject: [PATCH 10/12] Fix issue #481 (#533) Co-authored-by: Wannes Boeykens Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/sphinx_autodoc_typehints/__init__.py | 17 ++++++++++++----- tests/test_integration_autodoc_type_aliases.py | 4 ++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/sphinx_autodoc_typehints/__init__.py b/src/sphinx_autodoc_typehints/__init__.py index 432fdf4..4f20b97 100644 --- a/src/sphinx_autodoc_typehints/__init__.py +++ b/src/sphinx_autodoc_typehints/__init__.py @@ -10,14 +10,14 @@ import textwrap import types from dataclasses import dataclass -from typing import TYPE_CHECKING, Any, AnyStr, ForwardRef, NewType, TypeVar, get_type_hints +from typing import TYPE_CHECKING, Any, AnyStr, ForwardRef, NewType, TypeVar, Union, get_type_hints from docutils import nodes from docutils.frontend import get_default_settings from sphinx.ext.autodoc.mock import mock from sphinx.parsers import RSTParser from sphinx.util import logging, rst -from sphinx.util.inspect import TypeAliasForwardRef, TypeAliasNamespace, stringify_signature +from sphinx.util.inspect import TypeAliasForwardRef, stringify_signature from sphinx.util.inspect import signature as sphinx_signature from ._parser import parse @@ -61,6 +61,11 @@ _TYPES_DICT[types.FunctionType] = "FunctionType" +class MyTypeAliasForwardRef(TypeAliasForwardRef): + def __or__(self, value: Any) -> Any: + return Union[self, value] # noqa: UP007 + + def _get_types_type(obj: Any) -> str | None: try: return _TYPES_DICT.get(obj) @@ -446,7 +451,7 @@ def _future_annotations_imported(obj: Any) -> bool: def get_all_type_hints( - autodoc_mock_imports: list[str], obj: Any, name: str, localns: TypeAliasNamespace + autodoc_mock_imports: list[str], obj: Any, name: str, localns: dict[Any, MyTypeAliasForwardRef] ) -> dict[str, Any]: result = _get_type_hint(autodoc_mock_imports, name, obj, localns) if not result: @@ -517,7 +522,9 @@ def _resolve_type_guarded_imports(autodoc_mock_imports: list[str], obj: Any) -> _execute_guarded_code(autodoc_mock_imports, obj, module_code) -def _get_type_hint(autodoc_mock_imports: list[str], name: str, obj: Any, localns: TypeAliasNamespace) -> dict[str, Any]: +def _get_type_hint( + autodoc_mock_imports: list[str], name: str, obj: Any, localns: dict[Any, MyTypeAliasForwardRef] +) -> dict[str, Any]: _resolve_type_guarded_imports(autodoc_mock_imports, obj) try: result = get_type_hints(obj, None, localns) @@ -689,7 +696,7 @@ def process_docstring( # noqa: PLR0913, PLR0917 except (ValueError, TypeError): signature = None - localns = TypeAliasNamespace(app.config["autodoc_type_aliases"]) + localns = {key: MyTypeAliasForwardRef(value) for key, value in app.config["autodoc_type_aliases"].items()} type_hints = get_all_type_hints(app.config.autodoc_mock_imports, obj, name, localns) app.config._annotation_globals = getattr(obj, "__globals__", {}) # noqa: SLF001 try: diff --git a/tests/test_integration_autodoc_type_aliases.py b/tests/test_integration_autodoc_type_aliases.py index 9d5a951..f964042 100644 --- a/tests/test_integration_autodoc_type_aliases.py +++ b/tests/test_integration_autodoc_type_aliases.py @@ -103,7 +103,7 @@ def g(s: AliasedClass) -> AliasedClass: Function docstring. Parameters: - * **x** (Array) -- foo + * **x** ("Optional"[Array]) -- foo * **y** ("Schema") -- boo @@ -115,7 +115,7 @@ def g(s: AliasedClass) -> AliasedClass: """, ) -def function(x: ArrayLike, y: Schema) -> str: +def function(x: ArrayLike | None, y: Schema) -> str: """ Function docstring. From 8a82cb8182dc8164f0098ee03936fec441ea9003 Mon Sep 17 00:00:00 2001 From: grayjk Date: Fri, 25 Apr 2025 12:43:45 -0400 Subject: [PATCH 11/12] Don't add :rtype: None (#538) --- README.md | 1 + src/sphinx_autodoc_typehints/__init__.py | 5 ++++- tests/test_integration.py | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7ddbf09..4da9476 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ The following configuration options are accepted: or `Optional[int]`) - `typehints_document_rtype` (default: `True`): If `False`, never add an `:rtype:` directive. If `True`, add the `:rtype:` directive if no existing `:rtype:` is found. +- `typehints_document_rtype_none` (default: `True`): If `False`, never add an `:rtype: None` directive. If `True`, add the `:rtype: None`. - `typehints_use_rtype` (default: `True`): Controls behavior when `typehints_document_rtype` is set to `True`. If `True`, document return type in the `:rtype:` directive. If `False`, document return type as part of the `:return:` directive, if present, otherwise fall back to using `:rtype:`. Use in conjunction with diff --git a/src/sphinx_autodoc_typehints/__init__.py b/src/sphinx_autodoc_typehints/__init__.py index 4f20b97..7e1d994 100644 --- a/src/sphinx_autodoc_typehints/__init__.py +++ b/src/sphinx_autodoc_typehints/__init__.py @@ -912,7 +912,7 @@ def get_insert_index(app: Sphinx, lines: list[str]) -> InsertIndexInfo | None: return InsertIndexInfo(insert_index=len(lines)) -def _inject_rtype( # noqa: PLR0913, PLR0917 +def _inject_rtype( # noqa: C901, PLR0913, PLR0917 type_hints: dict[str, Any], original_obj: Any, app: Sphinx, @@ -926,6 +926,8 @@ def _inject_rtype( # noqa: PLR0913, PLR0917 return if not app.config.typehints_document_rtype: return + if not app.config.typehints_document_rtype_none and type_hints["return"] is types.NoneType: + return r = get_insert_index(app, lines) if r is None: @@ -1011,6 +1013,7 @@ def setup(app: Sphinx) -> dict[str, bool]: app.add_config_value("always_document_param_types", False, "html") # noqa: FBT003 app.add_config_value("typehints_fully_qualified", False, "env") # noqa: FBT003 app.add_config_value("typehints_document_rtype", True, "env") # noqa: FBT003 + app.add_config_value("typehints_document_rtype_none", True, "env") # noqa: FBT003 app.add_config_value("typehints_use_rtype", True, "env") # noqa: FBT003 app.add_config_value("typehints_defaults", None, "env") app.add_config_value("simplify_optional_unions", True, "env") # noqa: FBT003 diff --git a/tests/test_integration.py b/tests/test_integration.py index 900d585..2b53940 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1319,6 +1319,19 @@ def typehints_use_signature(a: AsyncGenerator) -> AsyncGenerator: return a +@expected( + """ + mod.typehints_no_rtype_none() + + Do something. + + """, + typehints_document_rtype_none=False, +) +def typehints_no_rtype_none() -> None: + """Do something.""" + + prolog = """ .. |test_node_start| replace:: {test_node_start} """.format(test_node_start="test_start") From 830034f17cb14d51746b3b342c5352949abd0edc Mon Sep 17 00:00:00 2001 From: grayjk Date: Fri, 25 Apr 2025 12:48:10 -0400 Subject: [PATCH 12/12] Place rtype after directive (#537) --- src/sphinx_autodoc_typehints/__init__.py | 2 ++ tests/test_integration.py | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/sphinx_autodoc_typehints/__init__.py b/src/sphinx_autodoc_typehints/__init__.py index 7e1d994..1394f73 100644 --- a/src/sphinx_autodoc_typehints/__init__.py +++ b/src/sphinx_autodoc_typehints/__init__.py @@ -906,6 +906,8 @@ def get_insert_index(app: Sphinx, lines: list[str]) -> InsertIndexInfo | None: continue line_no = node_line_no(child) at = max(line_no - 2, 0) if line_no else len(lines) + if lines[at - 1]: # skip if something on this line + break return InsertIndexInfo(insert_index=at, found_directive=True) # 5. Otherwise, insert at end diff --git a/tests/test_integration.py b/tests/test_integration.py index 2b53940..9c1e355 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1410,15 +1410,19 @@ def docstring_with_multiline_note_after_params_epilog_replace(param: int) -> Non """ mod.docstring_with_see_also() - Return type: - "str" + Test See also: more info at `_. + Return type: + "str" + """ ) def docstring_with_see_also() -> str: """ + Test + .. seealso:: more info at `_. """ return ""