diff --git a/.copier-answers.yml b/.copier-answers.yml index 1dc4ac4d..a7f91ade 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier -_commit: 1.2.0 +_commit: 1.2.3 _src_path: gh:mkdocstrings/handler-template author_email: dev@pawamoy.fr author_fullname: Timothée Mazzucotelli diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6940069d..594d1c42 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,9 +25,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - - name: Fetch all tags - run: git fetch --depth=1 --tags + with: + fetch-depth: 0 + fetch-tags: true - name: Setup Python uses: actions/setup-python@v5 @@ -106,6 +106,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true - name: Setup Python uses: actions/setup-python@v5 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 45bcf5a4..9388125b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,8 +11,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Fetch all tags - run: git fetch --depth=1 --tags + with: + fetch-depth: 0 + fetch-tags: true - name: Setup Python uses: actions/setup-python@v5 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c03b29f..ec519312 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,28 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [1.13.0](https://github.com/mkdocstrings/python/releases/tag/1.13.0) - 2024-12-26 + +[Compare with 1.12.2](https://github.com/mkdocstrings/python/compare/1.12.2...1.13.0) + +### Features + +- Allow using Ruff to format signatures and attribute values ([d67215c](https://github.com/mkdocstrings/python/commit/d67215c976938ef1e169f16dd0b6166067ebd7bc) by dm). [PR-216](https://github.com/mkdocstrings/python/pull/216) + +### Bug Fixes + +- Respect `show_signature_annotations` option for attribute signatures in headings ([e93d166](https://github.com/mkdocstrings/python/commit/e93d166a14d0944d30ff2f28f21f2262ac396bff) by Timothée Mazzucotelli). [Issue-griffe-pydantic#9](https://github.com/mkdocstrings/griffe-pydantic/issues/9) +- Handle `__init__` overloads when merging into class ([af6fab3](https://github.com/mkdocstrings/python/commit/af6fab31142204872ace716392dcb314b2cb5d0f) by Timothée Mazzucotelli). [Issue-212](https://github.com/mkdocstrings/python/issues/212) +- Actually check if a module is public when rendering auto-generated summary table for modules ([3bf55b2](https://github.com/mkdocstrings/python/commit/3bf55b22ce9a841242c55b2efcedbd8f3a99ccc9) by Timothée Mazzucotelli). [Issue-203](https://github.com/mkdocstrings/python/issues/203) +- Never render line numbers for signatures and attribute values ([a669f1c](https://github.com/mkdocstrings/python/commit/a669f1caefbd54305cc4610bdd57a529aa1208cf) by Timothée Mazzucotelli). [Issue-192](https://github.com/mkdocstrings/python/issues/192) +- Respect highlight's `linenums` config for `pycon` examples in docstrings ([53eb82a](https://github.com/mkdocstrings/python/commit/53eb82a21bbcaa959306e909bf0d4ac468f87580) by Timothée Mazzucotelli). [Related-to-#192](https://github.com/mkdocstrings/python/issues/192) +- Fix normalization of extension paths on the annoying operating system and Python 3.13 ([101a6dc](https://github.com/mkdocstrings/python/commit/101a6dc428da59a512da617a0a2453f2b6ef4387) by Timothée Mazzucotelli). +- Don't merge parent `__init__` docstring into class docstring if such inherited method wasn't selected through the `inherited_members` configuration option ([6c5b5c3](https://github.com/mkdocstrings/python/commit/6c5b5c341940af9425b3de0672ac400794b3f6e5) by Timothée Mazzucotelli). [Issue-189](https://github.com/mkdocstrings/python/issues/189) + +### Code Refactoring + +- Render `*` and `**` outside of cross-references in signatures ([c4506f0](https://github.com/mkdocstrings/python/commit/c4506f080e0c75cd32d6512c80f5016e82fc12bc) by Timothée Mazzucotelli). [Needed-for-PR-216](https://github.com/mkdocstrings/python/pull/216) + ## [1.12.2](https://github.com/mkdocstrings/python/releases/tag/1.12.2) - 2024-10-19 [Compare with 1.12.1](https://github.com/mkdocstrings/python/compare/1.12.1...1.12.2) diff --git a/README.md b/README.md index a65bf00c..937a3a84 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ [![ci](https://github.com/mkdocstrings/python/workflows/ci/badge.svg)](https://github.com/mkdocstrings/python/actions?query=workflow%3Aci) [![documentation](https://img.shields.io/badge/docs-mkdocs-708FCC.svg?style=flat)](https://mkdocstrings.github.io/python/) [![pypi version](https://img.shields.io/pypi/v/mkdocstrings-python.svg)](https://pypi.org/project/mkdocstrings-python/) -[![gitpod](https://img.shields.io/badge/gitpod-workspace-708FCC.svg?style=flat)](https://gitpod.io/#https://github.com/mkdocstrings/python) [![gitter](https://badges.gitter.im/join%20chat.svg)](https://app.gitter.im/#/room/#python:gitter.im) --- diff --git a/docs/.glossary.md b/docs/.glossary.md index 588674fb..917c95c4 100644 --- a/docs/.glossary.md +++ b/docs/.glossary.md @@ -8,5 +8,6 @@ [Spacy's documentation]: https://spacy.io/api/doc/ [Black]: https://pypi.org/project/black/ [Material for MkDocs]: https://squidfunk.github.io/mkdocs-material +[Ruff]: https://docs.astral.sh/ruff *[ToC]: Table of Contents diff --git a/docs/insiders/index.md b/docs/insiders/index.md index 3bc3aa56..17a11ce4 100644 --- a/docs/insiders/index.md +++ b/docs/insiders/index.md @@ -92,6 +92,8 @@ else: ``` +Additionally, your sponsorship will give more weight to your upvotes on issues, helping us prioritize work items in our backlog. For more information on how we prioritize work, see this page: [Backlog management](https://pawamoy.github.io/backlog/). + ## How to become a sponsor Thanks for your interest in sponsoring! In order to become an eligible sponsor diff --git a/docs/schema.json b/docs/schema.json index b4eca004..e1863d26 100644 --- a/docs/schema.json +++ b/docs/schema.json @@ -145,7 +145,7 @@ "default": false }, "separate_signature": { - "title": "Whether to put the whole signature in a code block below the heading. If Black is installed, the signature is also formatted using it.", + "title": "Whether to put the whole signature in a code block below the heading. If a formatter (Black or Ruff) is installed, the signature is also formatted using it.", "markdownDescription": "https://mkdocstrings.github.io/python/usage/configuration/signatures/#separate_signature", "type": "boolean", "default": false diff --git a/docs/usage/configuration/docstrings.md b/docs/usage/configuration/docstrings.md index d88cbbfb..0cf2dac1 100644 --- a/docs/usage/configuration/docstrings.md +++ b/docs/usage/configuration/docstrings.md @@ -427,6 +427,7 @@ class Class: /// +INFO: **There is an alternative, third-party Python handler that handles relative references: [mkdocstrings-python-xref](https://github.com/analog-garage/mkdocstrings-python-xref).** ## `scoped_crossrefs` diff --git a/docs/usage/configuration/signatures.md b/docs/usage/configuration/signatures.md index e5e4cb88..879db6b1 100644 --- a/docs/usage/configuration/signatures.md +++ b/docs/usage/configuration/signatures.md @@ -154,10 +154,15 @@ def convert(text: str, md: Markdown) -> Markup: Maximum line length when formatting code/signatures. When separating signatures from headings with the [`separate_signature`][] option, -the Python handler will try to format the signatures using [Black] and +the Python handler will try to format the signatures using a formatter and the specified line length. -If Black is not installed, the handler issues an INFO log once. +The handler will automatically try to format using : + +1. [Black] +2. [Ruff] + +If a formatter is not found, the handler issues an INFO log once. ```yaml title="in mkdocs.yml (global configuration)" plugins: @@ -380,10 +385,15 @@ function(param1, param2=None) Whether to put the whole signature in a code block below the heading. When separating signatures from headings, -the Python handler will try to format the signatures using [Black] and +the Python handler will try to format the signatures using a formatter and the specified [line length][line_length]. -If Black is not installed, the handler issues an INFO log once. +The handler will automatically try to format using : + +1. [Black] +2. [Ruff] + +If a formatter is not found, the handler issues an INFO log once. ```yaml title="in mkdocs.yml (global configuration)" plugins: diff --git a/duties.py b/duties.py index 3864e74e..bd051334 100644 --- a/duties.py +++ b/duties.py @@ -217,20 +217,26 @@ def coverage(ctx: Context) -> None: @duty -def test(ctx: Context, *cli_args: str, match: str = "") -> None: +def test(ctx: Context, *cli_args: str, match: str = "", snapshot: str = "report") -> None: """Run the test suite. Parameters: match: A pytest expression to filter selected tests. + snapshot: Whether to "create", "fix", "trim", or "update" snapshots. """ py_version = f"{sys.version_info.major}{sys.version_info.minor}" os.environ["COVERAGE_FILE"] = f".coverage.{py_version}" + args = list(cli_args) + if snapshot == "disable" or not snapshot: + args = ["-n", "auto", "--inline-snapshot=disable"] + else: + args = [f"--inline-snapshot={snapshot}"] ctx.run( tools.pytest( "tests", config_file="config/pytest.ini", select=match, color="yes", - ).add_args("-n", "auto", *cli_args), + ).add_args(*args), title=pyprefix("Running tests"), ) diff --git a/pyproject.toml b/pyproject.toml index 636a67fe..c6f3cc50 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,13 +45,16 @@ Discussions = "https://github.com/mkdocstrings/python/discussions" Gitter = "https://gitter.im/mkdocstrings/python" Funding = "https://github.com/sponsors/pawamoy" -[tool.pdm] -version = {source = "scm"} +[tool.pdm.version] +source = "call" +getter = "scripts.get_version:get_version" [tool.pdm.build] package-dir = "src" includes = ["src/mkdocstrings_handlers"] editable-backend = "editables" + +# Include as much as possible in the source distribution, to help redistributors. excludes = ["**/.pytest_cache"] source-includes = [ "config", @@ -66,15 +69,15 @@ source-includes = [ ] [tool.pdm.build.wheel-data] +# Manual pages can be included in the wheel. +# Depending on the installation tool, they will be accessible to users. +# pipx supports it, uv does not yet, see https://github.com/astral-sh/uv/issues/4731. data = [ {path = "share/**/*", relative-to = "."}, ] -[tool.uv] -dev-dependencies = [ - # dev - "editables>=0.5", - +[dependency-groups] +dev = [ # maintenance "build>=1.2", "git-changelog>=2.5", @@ -87,6 +90,8 @@ dev-dependencies = [ "pytest-cov>=5.0", "pytest-randomly>=3.15", "pytest-xdist>=3.6", + "beautifulsoup4>=4.12.3", + "inline-snapshot>=0.18", "mypy>=1.10", "types-markdown>=3.6", "types-pyyaml>=6.0", @@ -104,4 +109,7 @@ dev-dependencies = [ "mkdocs-minify-plugin>=0.8", # YORE: EOL 3.10: Remove line. "tomli>=2.0; python_version < '3.11'", -] \ No newline at end of file +] + +[tool.inline-snapshot] +storage-dir = "tests/snapshots" diff --git a/scripts/gen_credits.py b/scripts/gen_credits.py index 51ebe2f3..85240535 100644 --- a/scripts/gen_credits.py +++ b/scripts/gen_credits.py @@ -27,7 +27,7 @@ pyproject = tomllib.load(pyproject_file) project = pyproject["project"] project_name = project["name"] -devdeps = [dep for dep in pyproject["tool"]["uv"]["dev-dependencies"] if not dep.startswith("-e")] +devdeps = [dep for dep in pyproject["dependency-groups"]["dev"] if not dep.startswith("-e")] PackageMetadata = dict[str, Union[str, Iterable[str]]] Metadata = dict[str, PackageMetadata] diff --git a/scripts/get_version.py b/scripts/get_version.py new file mode 100644 index 00000000..f4a30a8c --- /dev/null +++ b/scripts/get_version.py @@ -0,0 +1,27 @@ +"""Get current project version from Git tags or changelog.""" + +import re +from contextlib import suppress +from pathlib import Path + +from pdm.backend.hooks.version import SCMVersion, Version, default_version_formatter, get_version_from_scm + +_root = Path(__file__).parent.parent +_changelog = _root / "CHANGELOG.md" +_changelog_version_re = re.compile(r"^## \[(\d+\.\d+\.\d+)\].*$") +_default_scm_version = SCMVersion(Version("0.0.0"), None, False, None, None) # noqa: FBT003 + + +def get_version() -> str: + """Get current project version from Git tags or changelog.""" + scm_version = get_version_from_scm(_root) or _default_scm_version + if scm_version.version <= Version("0.1"): # Missing Git tags? + with suppress(OSError, StopIteration): # noqa: SIM117 + with _changelog.open("r", encoding="utf8") as file: + match = next(filter(None, map(_changelog_version_re.match, file))) + scm_version = scm_version._replace(version=Version(match.group(1))) + return default_version_formatter(scm_version) + + +if __name__ == "__main__": + print(get_version()) diff --git a/scripts/make b/scripts/make deleted file mode 100755 index ac430624..00000000 --- a/scripts/make +++ /dev/null @@ -1,190 +0,0 @@ -#!/usr/bin/env python3 -"""Management commands.""" - -from __future__ import annotations - -import os -import shutil -import subprocess -import sys -from contextlib import contextmanager -from pathlib import Path -from textwrap import dedent -from typing import Any, Iterator - -PYTHON_VERSIONS = os.getenv("PYTHON_VERSIONS", "3.9 3.10 3.11 3.12 3.13 3.14").split() - - -def shell(cmd: str, capture_output: bool = False, **kwargs: Any) -> str | None: - """Run a shell command.""" - if capture_output: - return subprocess.check_output(cmd, shell=True, text=True, **kwargs) # noqa: S602 - subprocess.run(cmd, shell=True, check=True, stderr=subprocess.STDOUT, **kwargs) # noqa: S602 - return None - - -@contextmanager -def environ(**kwargs: str) -> Iterator[None]: - """Temporarily set environment variables.""" - original = dict(os.environ) - os.environ.update(kwargs) - try: - yield - finally: - os.environ.clear() - os.environ.update(original) - - -def uv_install(venv: Path) -> None: - """Install dependencies using uv.""" - with environ(UV_PROJECT_ENVIRONMENT=str(venv), PYO3_USE_ABI3_FORWARD_COMPATIBILITY="1"): - if "CI" in os.environ: - shell("uv sync --no-editable") - else: - shell("uv sync") - - -def setup() -> None: - """Setup the project.""" - if not shutil.which("uv"): - raise ValueError("make: setup: uv must be installed, see https://github.com/astral-sh/uv") - - print("Installing dependencies (default environment)") # noqa: T201 - default_venv = Path(".venv") - if not default_venv.exists(): - shell("uv venv --python python") - uv_install(default_venv) - - if PYTHON_VERSIONS: - for version in PYTHON_VERSIONS: - print(f"\nInstalling dependencies (python{version})") # noqa: T201 - venv_path = Path(f".venvs/{version}") - if not venv_path.exists(): - shell(f"uv venv --python {version} {venv_path}") - with environ(UV_PROJECT_ENVIRONMENT=str(venv_path.resolve())): - uv_install(venv_path) - - -def run(version: str, cmd: str, *args: str, no_sync: bool = False, **kwargs: Any) -> None: - """Run a command in a virtual environment.""" - kwargs = {"check": True, **kwargs} - uv_run = ["uv", "run"] - if no_sync: - uv_run.append("--no-sync") - if version == "default": - with environ(UV_PROJECT_ENVIRONMENT=".venv"): - subprocess.run([*uv_run, cmd, *args], **kwargs) # noqa: S603, PLW1510 - else: - with environ(UV_PROJECT_ENVIRONMENT=f".venvs/{version}", MULTIRUN="1"): - subprocess.run([*uv_run, cmd, *args], **kwargs) # noqa: S603, PLW1510 - - -def multirun(cmd: str, *args: str, **kwargs: Any) -> None: - """Run a command for all configured Python versions.""" - if PYTHON_VERSIONS: - for version in PYTHON_VERSIONS: - run(version, cmd, *args, **kwargs) - else: - run("default", cmd, *args, **kwargs) - - -def allrun(cmd: str, *args: str, **kwargs: Any) -> None: - """Run a command in all virtual environments.""" - run("default", cmd, *args, **kwargs) - if PYTHON_VERSIONS: - multirun(cmd, *args, **kwargs) - - -def clean() -> None: - """Delete build artifacts and cache files.""" - paths_to_clean = ["build", "dist", "htmlcov", "site", ".coverage*", ".pdm-build"] - for path in paths_to_clean: - shell(f"rm -rf {path}") - - cache_dirs = {".cache", ".pytest_cache", ".mypy_cache", ".ruff_cache", "__pycache__"} - for dirpath in Path(".").rglob("*/"): - if dirpath.parts[0] not in (".venv", ".venvs") and dirpath.name in cache_dirs: - shutil.rmtree(dirpath, ignore_errors=True) - - -def vscode() -> None: - """Configure VSCode to work on this project.""" - Path(".vscode").mkdir(parents=True, exist_ok=True) - shell("cp -v config/vscode/* .vscode") - - -def main() -> int: - """Main entry point.""" - args = list(sys.argv[1:]) - if not args or args[0] == "help": - if len(args) > 1: - run("default", "duty", "--help", args[1]) - else: - print( - dedent( - """ - Available commands - help Print this help. Add task name to print help. - setup Setup all virtual environments (install dependencies). - run Run a command in the default virtual environment. - multirun Run a command for all configured Python versions. - allrun Run a command in all virtual environments. - 3.x Run a command in the virtual environment for Python 3.x. - clean Delete build artifacts and cache files. - vscode Configure VSCode to work on this project. - """ - ), - flush=True, - ) # noqa: T201 - if os.path.exists(".venv"): - print("\nAvailable tasks", flush=True) # noqa: T201 - run("default", "duty", "--list", no_sync=True) - return 0 - - while args: - cmd = args.pop(0) - - if cmd == "run": - run("default", *args) - return 0 - - if cmd == "multirun": - multirun(*args) - return 0 - - if cmd == "allrun": - allrun(*args) - return 0 - - if cmd.startswith("3."): - run(cmd, *args) - return 0 - - opts = [] - while args and (args[0].startswith("-") or "=" in args[0]): - opts.append(args.pop(0)) - - if cmd == "clean": - clean() - elif cmd == "setup": - setup() - elif cmd == "vscode": - vscode() - elif cmd == "check": - multirun("duty", "check-quality", "check-types", "check-docs") - run("default", "duty", "check-api") - elif cmd in {"check-quality", "check-docs", "check-types", "test"}: - multirun("duty", cmd, *opts) - else: - run("default", "duty", cmd, *opts) - - return 0 - - -if __name__ == "__main__": - try: - sys.exit(main()) - except subprocess.CalledProcessError as process: - if process.output: - print(process.output, file=sys.stderr) # noqa: T201 - sys.exit(process.returncode) diff --git a/scripts/make b/scripts/make new file mode 120000 index 00000000..c2eda0df --- /dev/null +++ b/scripts/make @@ -0,0 +1 @@ +make.py \ No newline at end of file diff --git a/scripts/make.py b/scripts/make.py new file mode 100755 index 00000000..3d427296 --- /dev/null +++ b/scripts/make.py @@ -0,0 +1,191 @@ +#!/usr/bin/env python3 +"""Management commands.""" + +from __future__ import annotations + +import os +import shutil +import subprocess +import sys +from contextlib import contextmanager +from pathlib import Path +from textwrap import dedent +from typing import TYPE_CHECKING, Any + +if TYPE_CHECKING: + from collections.abc import Iterator + + +PYTHON_VERSIONS = os.getenv("PYTHON_VERSIONS", "3.9 3.10 3.11 3.12 3.13 3.14").split() + + +def shell(cmd: str, *, capture_output: bool = False, **kwargs: Any) -> str | None: + """Run a shell command.""" + if capture_output: + return subprocess.check_output(cmd, shell=True, text=True, **kwargs) # noqa: S602 + subprocess.run(cmd, shell=True, check=True, stderr=subprocess.STDOUT, **kwargs) # noqa: S602 + return None + + +@contextmanager +def environ(**kwargs: str) -> Iterator[None]: + """Temporarily set environment variables.""" + original = dict(os.environ) + os.environ.update(kwargs) + try: + yield + finally: + os.environ.clear() + os.environ.update(original) + + +def uv_install(venv: Path) -> None: + """Install dependencies using uv.""" + with environ(UV_PROJECT_ENVIRONMENT=str(venv), PYO3_USE_ABI3_FORWARD_COMPATIBILITY="1"): + if "CI" in os.environ: + shell("uv sync --no-editable") + else: + shell("uv sync") + + +def setup() -> None: + """Setup the project.""" + if not shutil.which("uv"): + raise ValueError("make: setup: uv must be installed, see https://github.com/astral-sh/uv") + + print("Installing dependencies (default environment)") + default_venv = Path(".venv") + if not default_venv.exists(): + shell("uv venv") + uv_install(default_venv) + + if PYTHON_VERSIONS: + for version in PYTHON_VERSIONS: + print(f"\nInstalling dependencies (python{version})") + venv_path = Path(f".venvs/{version}") + if not venv_path.exists(): + shell(f"uv venv --python {version} {venv_path}") + with environ(UV_PROJECT_ENVIRONMENT=str(venv_path.resolve())): + uv_install(venv_path) + + +def run(version: str, cmd: str, *args: str, **kwargs: Any) -> None: + """Run a command in a virtual environment.""" + kwargs = {"check": True, **kwargs} + uv_run = ["uv", "run", "--no-sync"] + if version == "default": + with environ(UV_PROJECT_ENVIRONMENT=".venv"): + subprocess.run([*uv_run, cmd, *args], **kwargs) # noqa: S603, PLW1510 + else: + with environ(UV_PROJECT_ENVIRONMENT=f".venvs/{version}", MULTIRUN="1"): + subprocess.run([*uv_run, cmd, *args], **kwargs) # noqa: S603, PLW1510 + + +def multirun(cmd: str, *args: str, **kwargs: Any) -> None: + """Run a command for all configured Python versions.""" + if PYTHON_VERSIONS: + for version in PYTHON_VERSIONS: + run(version, cmd, *args, **kwargs) + else: + run("default", cmd, *args, **kwargs) + + +def allrun(cmd: str, *args: str, **kwargs: Any) -> None: + """Run a command in all virtual environments.""" + run("default", cmd, *args, **kwargs) + if PYTHON_VERSIONS: + multirun(cmd, *args, **kwargs) + + +def clean() -> None: + """Delete build artifacts and cache files.""" + paths_to_clean = ["build", "dist", "htmlcov", "site", ".coverage*", ".pdm-build"] + for path in paths_to_clean: + shutil.rmtree(path, ignore_errors=True) + + cache_dirs = {".cache", ".pytest_cache", ".mypy_cache", ".ruff_cache", "__pycache__"} + for dirpath in Path(".").rglob("*/"): + if dirpath.parts[0] not in (".venv", ".venvs") and dirpath.name in cache_dirs: + shutil.rmtree(dirpath, ignore_errors=True) + + +def vscode() -> None: + """Configure VSCode to work on this project.""" + shutil.copytree("config/vscode", ".vscode", dirs_exist_ok=True) + + +def main() -> int: + """Main entry point.""" + args = list(sys.argv[1:]) + if not args or args[0] == "help": + if len(args) > 1: + run("default", "duty", "--help", args[1]) + else: + print( + dedent( + """ + Available commands + help Print this help. Add task name to print help. + setup Setup all virtual environments (install dependencies). + run Run a command in the default virtual environment. + multirun Run a command for all configured Python versions. + allrun Run a command in all virtual environments. + 3.x Run a command in the virtual environment for Python 3.x. + clean Delete build artifacts and cache files. + vscode Configure VSCode to work on this project. + """, + ), + flush=True, + ) + if os.path.exists(".venv"): + print("\nAvailable tasks", flush=True) + run("default", "duty", "--list") + return 0 + + while args: + cmd = args.pop(0) + + if cmd == "run": + run("default", *args) + return 0 + + if cmd == "multirun": + multirun(*args) + return 0 + + if cmd == "allrun": + allrun(*args) + return 0 + + if cmd.startswith("3."): + run(cmd, *args) + return 0 + + opts = [] + while args and (args[0].startswith("-") or "=" in args[0]): + opts.append(args.pop(0)) + + if cmd == "clean": + clean() + elif cmd == "setup": + setup() + elif cmd == "vscode": + vscode() + elif cmd == "check": + multirun("duty", "check-quality", "check-types", "check-docs") + run("default", "duty", "check-api") + elif cmd in {"check-quality", "check-docs", "check-types", "test"}: + multirun("duty", cmd, *opts) + else: + run("default", "duty", cmd, *opts) + + return 0 + + +if __name__ == "__main__": + try: + sys.exit(main()) + except subprocess.CalledProcessError as process: + if process.output: + print(process.output, file=sys.stderr) + sys.exit(process.returncode) diff --git a/src/mkdocstrings_handlers/python/handler.py b/src/mkdocstrings_handlers/python/handler.py index 0aac3cdc..4171fd76 100644 --- a/src/mkdocstrings_handlers/python/handler.py +++ b/src/mkdocstrings_handlers/python/handler.py @@ -201,7 +201,7 @@ class PythonHandler(BaseHandler): show_signature_annotations (bool): Show the type annotations in methods and functions signatures. Default: `False`. signature_crossrefs (bool): Whether to render cross-references for type annotations in signatures. Default: `False`. separate_signature (bool): Whether to put the whole signature in a code block below the heading. - If Black is installed, the signature is also formatted using it. Default: `False`. + If a formatter (Black or Ruff) is installed, the signature is also formatted using it. Default: `False`. unwrap_annotated (bool): Whether to unwrap `Annotated` types to show only the type without the annotations. Default: `False`. modernize_annotations (bool): Whether to modernize annotations, for example `Optional[str]` into `str | None`. Default: `False`. """ @@ -469,11 +469,9 @@ def normalize_extension_paths(self, extensions: Sequence) -> Sequence: pth = str(ext) options = None - if pth.endswith(".py") or ".py:" in pth or "/" in pth or "\\" in pth: # noqa: SIM102 - # This is a sytem path. Normalize it. - if not os.path.isabs(pth): - # Make path absolute relative to config file path. - pth = os.path.normpath(os.path.join(base_path, pth)) + if pth.endswith(".py") or ".py:" in pth or "/" in pth or "\\" in pth: + # This is a system path. Normalize it, make it absolute relative to config file path. + pth = os.path.abspath(os.path.join(base_path, pth)) if options is not None: normalized.append({pth: options}) diff --git a/src/mkdocstrings_handlers/python/rendering.py b/src/mkdocstrings_handlers/python/rendering.py index a7ea38f7..085f0c34 100644 --- a/src/mkdocstrings_handlers/python/rendering.py +++ b/src/mkdocstrings_handlers/python/rendering.py @@ -6,6 +6,7 @@ import random import re import string +import subprocess import sys import warnings from functools import lru_cache @@ -71,11 +72,11 @@ def _sort_key_source(item: CollectorItem) -> Any: def do_format_code(code: str, line_length: int) -> str: - """Format code using Black. + """Format code. Parameters: code: The code to format. - line_length: The line length to give to Black. + line_length: The line length. Returns: The same code, formatted. @@ -83,7 +84,7 @@ def do_format_code(code: str, line_length: int) -> str: code = code.strip() if len(code) < line_length: return code - formatter = _get_black_formatter() + formatter = _get_formatter() return formatter(code, line_length) @@ -118,7 +119,7 @@ def _format_signature(name: Markup, signature: str, line_length: int) -> str: # Black cannot format names with dots, so we replace # the whole name with a string of equal length name_length = len(name) - formatter = _get_black_formatter() + formatter = _get_formatter() formatable = f"def {'x' * name_length}{signature}: pass" formatted = formatter(formatable, line_length) @@ -137,13 +138,13 @@ def do_format_signature( annotations: bool | None = None, crossrefs: bool = False, # noqa: ARG001 ) -> str: - """Format a signature using Black. + """Format a signature. Parameters: context: Jinja context, passed automatically. callable_path: The path of the callable we render the signature of. function: The function we render the signature of. - line_length: The line length to give to Black. + line_length: The line length. annotations: Whether to show type annotations. crossrefs: Whether to cross-reference types in the signature. @@ -169,6 +170,7 @@ def do_format_signature( language="python", inline=False, classes=["doc-signature"], + linenums=False, ), ) @@ -198,13 +200,13 @@ def do_format_attribute( *, crossrefs: bool = False, # noqa: ARG001 ) -> str: - """Format an attribute using Black. + """Format an attribute. Parameters: context: Jinja context, passed automatically. attribute_path: The path of the callable we render the signature of. attribute: The attribute we render the signature of. - line_length: The line length to give to Black. + line_length: The line length. crossrefs: Whether to cross-reference types in the signature. Returns: @@ -230,6 +232,7 @@ def do_format_attribute( language="python", inline=False, classes=["doc-signature"], + linenums=False, ), ) @@ -432,12 +435,59 @@ def do_filter_objects( @lru_cache(maxsize=1) -def _get_black_formatter() -> Callable[[str, int], str]: +def _get_formatter() -> Callable[[str, int], str]: + for formatter_function in [ + _get_black_formatter, + _get_ruff_formatter, + ]: + if (formatter := formatter_function()) is not None: + return formatter + + logger.info("Formatting signatures requires either Black or Ruff to be installed.") + return lambda text, _: text + + +def _get_ruff_formatter() -> Callable[[str, int], str] | None: + try: + from ruff.__main__ import find_ruff_bin + except ImportError: + return None + + try: + ruff_bin = find_ruff_bin() + except FileNotFoundError: + ruff_bin = "ruff" + + def formatter(code: str, line_length: int) -> str: + try: + completed_process = subprocess.run( # noqa: S603 + [ + ruff_bin, + "format", + "--config", + f"line-length={line_length}", + "--stdin-filename", + "file.py", + "-", + ], + check=True, + capture_output=True, + text=True, + input=code, + ) + except subprocess.CalledProcessError: + return code + else: + return completed_process.stdout + + return formatter + + +def _get_black_formatter() -> Callable[[str, int], str] | None: try: from black import InvalidInput, Mode, format_str except ModuleNotFoundError: - logger.info("Formatting signatures requires Black to be installed.") - return lambda text, _: text + return None def formatter(code: str, line_length: int) -> str: mode = Mode(line_length=line_length) @@ -592,7 +642,7 @@ def do_as_modules_section( description=module.docstring.value.split("\n", 1)[0] if module.docstring else "", ) for module in modules - if not check_public or module + if not check_public or module.is_public ], ) diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja index 0716b171..7f3707b6 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/attribute.html.jinja @@ -52,7 +52,7 @@ Context: {{ attribute_name }} {% else %} {%+ filter highlight(language="python", inline=True) %} - {{ attribute_name }}{% if attribute.annotation %}: {{ attribute.annotation }}{% endif %} + {{ attribute_name }}{% if attribute.annotation and config.show_signature_annotations %}: {{ attribute.annotation }}{% endif %} {% if attribute.value %} = {{ attribute.value }}{% endif %} {% endfilter %} {% endif %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja index 24046e8f..ff5e51c9 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/class.html.jinja @@ -18,7 +18,7 @@ Context: {% endblock logs %}
- {% with obj = class, html_id = class.path %} + {% with obj = class, html_id = class.path, all_members = class.all_members %} {% if root %} {% set show_full_path = config.show_root_full_path %} @@ -49,8 +49,8 @@ Context: {% if config.show_symbol_type_heading %}{% endif %} {% if config.separate_signature %} {{ class_name }} - {% elif config.merge_init_into_class and "__init__" in class.all_members %} - {% with function = class.all_members["__init__"] %} + {% elif config.merge_init_into_class and "__init__" in all_members %} + {% with function = all_members["__init__"] %} {%+ filter highlight(language="python", inline=True) %} {{ class_name }}{% include "signature"|get_template with context %} {% endfilter %} @@ -76,13 +76,26 @@ Context: {#- Signature block. This block renders the signature for the class. + Overloads of the `__init__` method are rendered if `merge_init_into_class` is enabled. + The actual `__init__` method signature is only rendered if `separate_signature` is also enabled. -#} - {% if config.separate_signature and config.merge_init_into_class %} - {% if "__init__" in class.all_members %} - {% with function = class.all_members["__init__"] %} - {% filter format_signature(function, config.line_length, crossrefs=config.signature_crossrefs) %} - {{ class.name }} - {% endfilter %} + {% if config.merge_init_into_class %} + {% if "__init__" in all_members %} + {% with function = all_members["__init__"] %} + {% if function.overloads %} +
+ {% for overload in function.overloads %} + {% filter format_signature(overload, config.line_length, annotations=True, crossrefs=config.signature_crossrefs) %} + {{ class.name }} + {% endfilter %} + {% endfor %} +
+ {% endif %} + {% if config.separate_signature %} + {% filter format_signature(function, config.line_length, crossrefs=config.signature_crossrefs) %} + {{ class.name }} + {% endfilter %} + {% endif %} {% endwith %} {% endif %} {% endif %} @@ -132,13 +145,17 @@ Context: {% include "docstring"|get_template with context %} {% endwith %} {% if config.merge_init_into_class %} - {% if "__init__" in class.all_members and class.all_members["__init__"].has_docstring %} - {% with function = class.all_members["__init__"] %} - {% with obj = function, docstring_sections = function.docstring.parsed %} - {% include "docstring"|get_template with context %} + {# We don't want to merge the inherited `__init__` method docstring into the class docstring #} + {# if such inherited method was not selected through `inherited_members`. #} + {% with check_members = all_members if (config.inherited_members is true or (config.inherited_members is iterable and "__init__" in config.inherited_members)) else class.members %} + {% if "__init__" in check_members and check_members["__init__"].has_docstring %} + {% with function = check_members["__init__"] %} + {% with obj = function, docstring_sections = function.docstring.parsed %} + {% include "docstring"|get_template with context %} + {% endwith %} {% endwith %} - {% endwith %} - {% endif %} + {% endif %} + {% endwith %} {% endif %} {% endblock docstring %} @@ -157,8 +174,8 @@ Context: -#} {% if config.show_source %} {% if config.merge_init_into_class %} - {% if "__init__" in class.all_members and class.all_members["__init__"].source %} - {% with init = class.all_members["__init__"] %} + {% if "__init__" in all_members and all_members["__init__"].source %} + {% with init = all_members["__init__"] %}
Source code in {%- if init.relative_filepath.is_absolute() -%} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html.jinja index dd0b503f..5a086497 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/docstring/examples.html.jinja @@ -23,6 +23,6 @@ Context: {% if section_type.value == "text" %} {{ sub_section|convert_markdown(heading_level, html_id, autoref_hook=autoref_hook) }} {% elif section_type.value == "examples" %} - {{ sub_section|highlight(language="pycon", linenums=False) }} + {{ sub_section|highlight(language="pycon") }} {% endif %} {% endfor %} diff --git a/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja b/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja index 641b8b8d..750cac30 100644 --- a/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja +++ b/src/mkdocstrings_handlers/python/templates/material/_base/signature.html.jinja @@ -72,27 +72,27 @@ Context: {%- endif -%} {#- Prepare name. -#} - {%- set param_name -%} + {%- set param_prefix -%} {%- if parameter.kind.value == "variadic positional" -%} * {%- elif parameter.kind.value == "variadic keyword" -%} ** {%- endif -%} - {{ parameter.name }} {%- endset -%} {#- Render parameter name with optional cross-reference to its heading. -#} + {{ param_prefix }} {%- if config.separate_signature and config.parameter_headings and config.signature_crossrefs -%} - {%- filter stash_crossref(length=param_name|length) -%} + {%- filter stash_crossref(length=parameter.name|length) -%} {%- with func_path = function.path -%} {%- if config.merge_init_into_class and func_path.endswith(".__init__") -%} {%- set func_path = func_path[:-9] -%} {%- endif -%} - {{ param_name }} + {{ parameter.name }} {%- endwith -%} {%- endfilter -%} {%- else -%} - {{ param_name }} + {{ parameter.name }} {%- endif -%} {#- Render parameter annotation. -#} diff --git a/tests/conftest.py b/tests/conftest.py index 88105e4c..1c53cba4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,25 +2,29 @@ from __future__ import annotations -from collections import ChainMap -from typing import TYPE_CHECKING, Any +from collections.abc import Iterator +from typing import TYPE_CHECKING import pytest -from markdown.core import Markdown -from mkdocs.config.defaults import MkDocsConfig + +from tests import helpers if TYPE_CHECKING: from collections.abc import Iterator from pathlib import Path - from mkdocs import config + from markdown.core import Markdown + from mkdocs.config.defaults import MkDocsConfig from mkdocstrings.plugin import MkdocstringsPlugin from mkdocstrings_handlers.python.handler import PythonHandler +# -------------------------------------------- +# Function-scoped fixtures. +# -------------------------------------------- @pytest.fixture(name="mkdocs_conf") -def fixture_mkdocs_conf(request: pytest.FixtureRequest, tmp_path: Path) -> Iterator[config.Config]: +def fixture_mkdocs_conf(request: pytest.FixtureRequest, tmp_path: Path) -> Iterator[MkDocsConfig]: """Yield a MkDocs configuration object. Parameters: @@ -30,34 +34,12 @@ def fixture_mkdocs_conf(request: pytest.FixtureRequest, tmp_path: Path) -> Itera Yields: MkDocs config. """ - conf = MkDocsConfig() - while hasattr(request, "_parent_request") and hasattr(request._parent_request, "_parent_request"): - request = request._parent_request - - conf_dict = { - "site_name": "foo", - "site_url": "https://example.org/", - "site_dir": str(tmp_path), - "plugins": [{"mkdocstrings": {"default_handler": "python"}}], - **getattr(request, "param", {}), - } - # Re-create it manually as a workaround for https://github.com/mkdocs/mkdocs/issues/2289 - mdx_configs: dict[str, Any] = dict(ChainMap(*conf_dict.get("markdown_extensions", []))) - - conf.load_dict(conf_dict) - assert conf.validate() == ([], []) - - conf["mdx_configs"] = mdx_configs - conf["markdown_extensions"].insert(0, "toc") # Guaranteed to be added by MkDocs. - - conf = conf["plugins"]["mkdocstrings"].on_config(conf) - conf = conf["plugins"]["autorefs"].on_config(conf) - yield conf - conf["plugins"]["mkdocstrings"].on_post_build(conf) + with helpers.mkdocs_conf(request, tmp_path) as mkdocs_conf: + yield mkdocs_conf @pytest.fixture(name="plugin") -def fixture_plugin(mkdocs_conf: config.Config) -> MkdocstringsPlugin: +def fixture_plugin(mkdocs_conf: MkDocsConfig) -> MkdocstringsPlugin: """Return a plugin instance. Parameters: @@ -66,11 +48,11 @@ def fixture_plugin(mkdocs_conf: config.Config) -> MkdocstringsPlugin: Returns: mkdocstrings plugin instance. """ - return mkdocs_conf["plugins"]["mkdocstrings"] + return helpers.plugin(mkdocs_conf) @pytest.fixture(name="ext_markdown") -def fixture_ext_markdown(mkdocs_conf: config.Config) -> Markdown: +def fixture_ext_markdown(mkdocs_conf: MkDocsConfig) -> Markdown: """Return a Markdown instance with MkdocstringsExtension. Parameters: @@ -79,7 +61,7 @@ def fixture_ext_markdown(mkdocs_conf: config.Config) -> Markdown: Returns: A Markdown instance. """ - return Markdown(extensions=mkdocs_conf["markdown_extensions"], extension_configs=mkdocs_conf["mdx_configs"]) + return helpers.ext_markdown(mkdocs_conf) @pytest.fixture(name="handler") @@ -92,6 +74,64 @@ def fixture_handler(plugin: MkdocstringsPlugin, ext_markdown: Markdown) -> Pytho Returns: A handler instance. """ - handler = plugin.handlers.get_handler("python") - handler._update_env(ext_markdown, plugin.handlers._config) - return handler # type: ignore[return-value] + return helpers.handler(plugin, ext_markdown) + + +# -------------------------------------------- +# Session-scoped fixtures. +# -------------------------------------------- +@pytest.fixture(name="session_mkdocs_conf", scope="session") +def fixture_session_mkdocs_conf( + request: pytest.FixtureRequest, + tmp_path_factory: pytest.TempPathFactory, +) -> Iterator[MkDocsConfig]: + """Yield a MkDocs configuration object. + + Parameters: + request: Pytest fixture. + tmp_path: Pytest fixture. + + Yields: + MkDocs config. + """ + with helpers.mkdocs_conf(request, tmp_path_factory.mktemp("project")) as mkdocs_conf: + yield mkdocs_conf + + +@pytest.fixture(name="session_plugin", scope="session") +def fixture_session_plugin(session_mkdocs_conf: MkDocsConfig) -> MkdocstringsPlugin: + """Return a plugin instance. + + Parameters: + mkdocs_conf: Pytest fixture (see conftest.py). + + Returns: + mkdocstrings plugin instance. + """ + return helpers.plugin(session_mkdocs_conf) + + +@pytest.fixture(name="session_ext_markdown", scope="session") +def fixture_session_ext_markdown(session_mkdocs_conf: MkDocsConfig) -> Markdown: + """Return a Markdown instance with MkdocstringsExtension. + + Parameters: + mkdocs_conf: Pytest fixture (see conftest.py). + + Returns: + A Markdown instance. + """ + return helpers.ext_markdown(session_mkdocs_conf) + + +@pytest.fixture(name="session_handler", scope="session") +def fixture_session_handler(session_plugin: MkdocstringsPlugin, session_ext_markdown: Markdown) -> PythonHandler: + """Return a handler instance. + + Parameters: + plugin: Pytest fixture (see conftest.py). + + Returns: + A handler instance. + """ + return helpers.handler(session_plugin, session_ext_markdown) diff --git a/tests/helpers.py b/tests/helpers.py new file mode 100644 index 00000000..91ea4eee --- /dev/null +++ b/tests/helpers.py @@ -0,0 +1,94 @@ +"""Configuration for the pytest test suite.""" + +from __future__ import annotations + +from collections import ChainMap +from contextlib import contextmanager +from typing import TYPE_CHECKING, Any + +from markdown.core import Markdown +from mkdocs.config.defaults import MkDocsConfig + +if TYPE_CHECKING: + from collections.abc import Iterator + from pathlib import Path + + import pytest + from mkdocstrings.plugin import MkdocstringsPlugin + + from mkdocstrings_handlers.python.handler import PythonHandler + + +@contextmanager +def mkdocs_conf(request: pytest.FixtureRequest, tmp_path: Path) -> Iterator[MkDocsConfig]: + """Yield a MkDocs configuration object. + + Parameters: + request: Pytest request fixture. + tmp_path: Temporary path. + + Yields: + MkDocs config. + """ + conf = MkDocsConfig() + while hasattr(request, "_parent_request") and hasattr(request._parent_request, "_parent_request"): + request = request._parent_request + + conf_dict = { + "site_name": "foo", + "site_url": "https://example.org/", + "site_dir": str(tmp_path), + "plugins": [{"mkdocstrings": {"default_handler": "python"}}], + **getattr(request, "param", {}), + } + # Re-create it manually as a workaround for https://github.com/mkdocs/mkdocs/issues/2289 + mdx_configs: dict[str, Any] = dict(ChainMap(*conf_dict.get("markdown_extensions", []))) + + conf.load_dict(conf_dict) + assert conf.validate() == ([], []) + + conf["mdx_configs"] = mdx_configs + conf["markdown_extensions"].insert(0, "toc") # Guaranteed to be added by MkDocs. + + conf = conf["plugins"]["mkdocstrings"].on_config(conf) + conf = conf["plugins"]["autorefs"].on_config(conf) + yield conf + conf["plugins"]["mkdocstrings"].on_post_build(conf) + + +def plugin(mkdocs_conf: MkDocsConfig) -> MkdocstringsPlugin: + """Return a plugin instance. + + Parameters: + mkdocs_conf: MkDocs configuration. + + Returns: + mkdocstrings plugin instance. + """ + return mkdocs_conf["plugins"]["mkdocstrings"] + + +def ext_markdown(mkdocs_conf: MkDocsConfig) -> Markdown: + """Return a Markdown instance with MkdocstringsExtension. + + Parameters: + mkdocs_conf: MkDocs configuration. + + Returns: + A Markdown instance. + """ + return Markdown(extensions=mkdocs_conf["markdown_extensions"], extension_configs=mkdocs_conf["mdx_configs"]) + + +def handler(plugin: MkdocstringsPlugin, ext_markdown: Markdown) -> PythonHandler: + """Return a handler instance. + + Parameters: + plugin: Plugin instance. + + Returns: + A handler instance. + """ + handler = plugin.handlers.get_handler("python") + handler._update_env(ext_markdown, plugin.handlers._config) + return handler # type: ignore[return-value] diff --git a/tests/snapshots/__init__.py b/tests/snapshots/__init__.py new file mode 100644 index 00000000..4469afed --- /dev/null +++ b/tests/snapshots/__init__.py @@ -0,0 +1,405 @@ +"""Snaphots for the inline-snapshot pytest plugin.""" + +from inline_snapshot import external, snapshot + +snapshots_signatures = snapshot( + { + ( + ("separate_signature", True), + ("show_signature_annotations", False), + ("signature_crossrefs", False), + ): external("4370d843cc76*.html"), + ( + ("separate_signature", True), + ("show_signature_annotations", True), + ("signature_crossrefs", True), + ): external("955e5111f426*.html"), + ( + ("separate_signature", False), + ("show_signature_annotations", True), + ("signature_crossrefs", True), + ): external("735fc6ffdb82*.html"), + ( + ("separate_signature", False), + ("show_signature_annotations", False), + ("signature_crossrefs", True), + ): external("6a02b544c12c*.html"), + ( + ("separate_signature", False), + ("show_signature_annotations", False), + ("signature_crossrefs", False), + ): external("b060b701543e*.html"), + ( + ("separate_signature", True), + ("show_signature_annotations", True), + ("signature_crossrefs", False), + ): external("f5ce06acbb7a*.html"), + ( + ("separate_signature", True), + ("show_signature_annotations", False), + ("signature_crossrefs", True), + ): external("9c0bfc0ee407*.html"), + ( + ("separate_signature", False), + ("show_signature_annotations", True), + ("signature_crossrefs", False), + ): external("d1216ebf8e30*.html"), + }, +) + +snapshots_members = snapshot( + { + ( + ("filters", ()), + ("inherited_members", ("method1",)), + ("members", False), + ): external("ab0ddac637b5*.html"), + (("filters", None), ("inherited_members", True), ("members", True)): external( + "0b1372d7f7c0*.html", + ), + (("filters", ()), ("inherited_members", False), ("members", True)): external( + "59a9e1ffb2f0*.html", + ), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ()), + ("members", ("module_attribute",)), + ): external("6d12192d6b4d*.html"), + (("filters", ()), ("inherited_members", ()), ("members", False)): external( + "366b0537fe06*.html", + ), + ( + ("filters", ()), + ("inherited_members", ("method1",)), + ("members", ("module_attribute",)), + ): external("e90c3e0c85dd*.html"), + (("filters", ()), ("inherited_members", True), ("members", True)): external( + "e8be7a9b1410*.html", + ), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ("method1",)), + ("members", ()), + ): external("f8f32ea6a0c8*.html"), + ( + ("filters", ()), + ("inherited_members", ("method1",)), + ("members", True), + ): external("d540895f6bf9*.html"), + (("filters", ()), ("inherited_members", False), ("members", False)): external( + "5cf0130e3b4f*.html", + ), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", True), + ("members", True), + ): external("7c988c9e13ef*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", False), + ("members", ()), + ): external("fb5ebb7546d8*.html"), + ( + ("filters", None), + ("inherited_members", ("method1",)), + ("members", ("module_attribute",)), + ): external("afd5c166367d*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ("method1",)), + ("members", ("module_attribute",)), + ): external("26bc66c2ba29*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", False), + ("members", ("module_attribute",)), + ): external("247a6063b698*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", False), + ("members", ("module_attribute",)), + ): external("5a9c10410801*.html"), + (("filters", ()), ("inherited_members", False), ("members", ())): external( + "fba0d78ae23e*.html", + ), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ("method1",)), + ("members", None), + ): external("cfcd41685591*.html"), + (("filters", ()), ("inherited_members", False), ("members", None)): external( + "a2c5be9bd5d1*.html", + ), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ()), + ("members", False), + ): external("76ee8e01e1c0*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ("method1",)), + ("members", ()), + ): external("42c053a5e567*.html"), + ( + ("filters", None), + ("inherited_members", ("method1",)), + ("members", ()), + ): external("4f60da13e2d4*.html"), + (("filters", ()), ("inherited_members", True), ("members", ())): external( + "c915eb92fd5d*.html", + ), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ()), + ("members", None), + ): external("c9a15552eed3*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ("method1",)), + ("members", None), + ): external("3d072a22b951*.html"), + (("filters", None), ("inherited_members", False), ("members", False)): external( + "9bd282a6f2fe*.html", + ), + ( + ("filters", None), + ("inherited_members", ()), + ("members", ("module_attribute",)), + ): external("166b8dfab738*.html"), + (("filters", None), ("inherited_members", ()), ("members", False)): external( + "44e42f27bfe3*.html", + ), + (("filters", None), ("inherited_members", False), ("members", None)): external( + "f7711b8af768*.html", + ), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", True), + ("members", ()), + ): external("28d8862dd086*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", True), + ("members", False), + ): external("f3f3acb6b51b*.html"), + (("filters", None), ("inherited_members", ()), ("members", True)): external( + "347d4ffe2cb3*.html", + ), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", True), + ("members", None), + ): external("ba51e100acd4*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", False), + ("members", False), + ): external("eee65d3705a6*.html"), + ( + ("filters", None), + ("inherited_members", False), + ("members", ("module_attribute",)), + ): external("a200913d9a7d*.html"), + ( + ("filters", None), + ("inherited_members", True), + ("members", ("module_attribute",)), + ): external("bd6594ae3b51*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", True), + ("members", ("module_attribute",)), + ): external("8d4e1f9af997*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", False), + ("members", ()), + ): external("d5a6bf59c663*.html"), + (("filters", None), ("inherited_members", ()), ("members", None)): external( + "88855b028417*.html", + ), + (("filters", ()), ("inherited_members", True), ("members", None)): external( + "981438492e38*.html", + ), + ( + ("filters", ()), + ("inherited_members", False), + ("members", ("module_attribute",)), + ): external("09d96d69d9dc*.html"), + ( + ("filters", None), + ("inherited_members", ("method1",)), + ("members", None), + ): external("ae74b5980f9b*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", True), + ("members", ()), + ): external("95f8e480937f*.html"), + (("filters", None), ("inherited_members", False), ("members", True)): external( + "831198033381*.html", + ), + ( + ("filters", ("module_attribute",)), + ("inherited_members", True), + ("members", True), + ): external("052c34f22e4c*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", False), + ("members", None), + ): external("cdc8126d78b6*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ("method1",)), + ("members", False), + ): external("f0014d9505ec*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", True), + ("members", ("module_attribute",)), + ): external("96cf94f4822a*.html"), + (("filters", None), ("inherited_members", True), ("members", ())): external( + "ce06da7f07b3*.html", + ), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ()), + ("members", False), + ): external("74bfab19cbd4*.html"), + ( + ("filters", None), + ("inherited_members", ("method1",)), + ("members", True), + ): external("7d5fe6653919*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", True), + ("members", False), + ): external("d726cb8367d9*.html"), + (("filters", None), ("inherited_members", False), ("members", ())): external( + "fb770e6537bc*.html", + ), + ( + ("filters", ("module_attribute",)), + ("inherited_members", True), + ("members", None), + ): external("2bf34b4dd82e*.html"), + ( + ("filters", ()), + ("inherited_members", ("method1",)), + ("members", ()), + ): external("4892e0fe1920*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ()), + ("members", True), + ): external("46e56f39b10d*.html"), + ( + ("filters", ()), + ("inherited_members", ()), + ("members", ("module_attribute",)), + ): external("388a13d71284*.html"), + (("filters", None), ("inherited_members", True), ("members", False)): external( + "3f5d794823a4*.html", + ), + ( + ("filters", ()), + ("inherited_members", True), + ("members", ("module_attribute",)), + ): external("9d03089a46fa*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ("method1",)), + ("members", ("module_attribute",)), + ): external("8b097c69ac2f*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", False), + ("members", True), + ): external("052e71e7e9d5*.html"), + ( + ("filters", None), + ("inherited_members", ("method1",)), + ("members", False), + ): external("e3defc3620e5*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ()), + ("members", True), + ): external("b4b490164ab1*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ("method1",)), + ("members", False), + ): external("c6e7ef9564cd*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", False), + ("members", None), + ): external("62e18d3e5777*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ()), + ("members", None), + ): external("728c13446301*.html"), + (("filters", None), ("inherited_members", ()), ("members", ())): external( + "f77f1c850398*.html", + ), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", False), + ("members", True), + ): external("0fac4f5e7f45*.html"), + (("filters", None), ("inherited_members", True), ("members", None)): external( + "cc19537fdba4*.html", + ), + (("filters", ()), ("inherited_members", ()), ("members", None)): external( + "e6a9b76f268c*.html", + ), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ()), + ("members", ()), + ): external("c260e7f4ef3b*.html"), + ( + ("filters", ("!module_attribute",)), + ("inherited_members", ("method1",)), + ("members", True), + ): external("0c2924ff976f*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ()), + ("members", ("module_attribute",)), + ): external("f6e292b8358a*.html"), + (("filters", ()), ("inherited_members", True), ("members", False)): external( + "b0a9b08f1f72*.html", + ), + (("filters", ()), ("inherited_members", ()), ("members", True)): external( + "fb65efbbfc3e*.html", + ), + ( + ("filters", ("module_attribute",)), + ("inherited_members", False), + ("members", False), + ): external("710706687213*.html"), + (("filters", ()), ("inherited_members", ()), ("members", ())): external( + "11598fec2d07*.html", + ), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ("method1",)), + ("members", True), + ): external("a1167b14f5a7*.html"), + ( + ("filters", ()), + ("inherited_members", ("method1",)), + ("members", None), + ): external("f848d4a9e516*.html"), + ( + ("filters", ("module_attribute",)), + ("inherited_members", ()), + ("members", ()), + ): external("a185e216dc7b*.html"), + }, +) diff --git a/tests/snapshots/external/.gitignore b/tests/snapshots/external/.gitignore new file mode 100644 index 00000000..45bef68b --- /dev/null +++ b/tests/snapshots/external/.gitignore @@ -0,0 +1,2 @@ +# ignore all snapshots which are not refered in the source +*-new.* diff --git a/tests/snapshots/external/052c34f22e4c711b1f13f53085cdd5e8edcfae4bdc1d8cb7f2ff76cd1c46cce5.html b/tests/snapshots/external/052c34f22e4c711b1f13f53085cdd5e8edcfae4bdc1d8cb7f2ff76cd1c46cce5.html new file mode 100644 index 00000000..e1a7d15c --- /dev/null +++ b/tests/snapshots/external/052c34f22e4c711b1f13f53085cdd5e8edcfae4bdc1d8cb7f2ff76cd1c46cce5.html @@ -0,0 +1,132 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/052e71e7e9d5bec710fb2d36b009122c48eca0a19d0611df530e607f5bacdf6f.html b/tests/snapshots/external/052e71e7e9d5bec710fb2d36b009122c48eca0a19d0611df530e607f5bacdf6f.html new file mode 100644 index 00000000..6866b45f --- /dev/null +++ b/tests/snapshots/external/052e71e7e9d5bec710fb2d36b009122c48eca0a19d0611df530e607f5bacdf6f.html @@ -0,0 +1,132 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/09d96d69d9dcbc54c8189fb885e8e06269c51be673389f29fa8b2d90cff54eb2.html b/tests/snapshots/external/09d96d69d9dcbc54c8189fb885e8e06269c51be673389f29fa8b2d90cff54eb2.html new file mode 100644 index 00000000..f2597daf --- /dev/null +++ b/tests/snapshots/external/09d96d69d9dcbc54c8189fb885e8e06269c51be673389f29fa8b2d90cff54eb2.html @@ -0,0 +1,55 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/0b1372d7f7c057905f665ad506f3dd3bee62fb9b1c8b2a39991550e7845c2b02.html b/tests/snapshots/external/0b1372d7f7c057905f665ad506f3dd3bee62fb9b1c8b2a39991550e7845c2b02.html new file mode 100644 index 00000000..89a3ea1e --- /dev/null +++ b/tests/snapshots/external/0b1372d7f7c057905f665ad506f3dd3bee62fb9b1c8b2a39991550e7845c2b02.html @@ -0,0 +1,506 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/0c2924ff976fa0e32ba66558a4f9e1eff4cd66196506a37977cdb33325a50718.html b/tests/snapshots/external/0c2924ff976fa0e32ba66558a4f9e1eff4cd66196506a37977cdb33325a50718.html new file mode 100644 index 00000000..5fb3da58 --- /dev/null +++ b/tests/snapshots/external/0c2924ff976fa0e32ba66558a4f9e1eff4cd66196506a37977cdb33325a50718.html @@ -0,0 +1,355 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/0fac4f5e7f455b351c60268567bfcbd0259b652d0534259efea7815aa15b1122.html b/tests/snapshots/external/0fac4f5e7f455b351c60268567bfcbd0259b652d0534259efea7815aa15b1122.html new file mode 100644 index 00000000..47cfb56f --- /dev/null +++ b/tests/snapshots/external/0fac4f5e7f455b351c60268567bfcbd0259b652d0534259efea7815aa15b1122.html @@ -0,0 +1,320 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/11598fec2d07bb675dfa8a57e49136f18a94eedec6bc5a036dcecc005e70dc80.html b/tests/snapshots/external/11598fec2d07bb675dfa8a57e49136f18a94eedec6bc5a036dcecc005e70dc80.html new file mode 100644 index 00000000..46cd4aee --- /dev/null +++ b/tests/snapshots/external/11598fec2d07bb675dfa8a57e49136f18a94eedec6bc5a036dcecc005e70dc80.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/166b8dfab738b90f2ff0df84a048df96539455d9cad42b09b248ab65b5c742e2.html b/tests/snapshots/external/166b8dfab738b90f2ff0df84a048df96539455d9cad42b09b248ab65b5c742e2.html new file mode 100644 index 00000000..b194ddc9 --- /dev/null +++ b/tests/snapshots/external/166b8dfab738b90f2ff0df84a048df96539455d9cad42b09b248ab65b5c742e2.html @@ -0,0 +1,55 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/247a6063b698c285bfef7addfd972ddf797f6a90dfd5a3e649e6e4c127b86562.html b/tests/snapshots/external/247a6063b698c285bfef7addfd972ddf797f6a90dfd5a3e649e6e4c127b86562.html new file mode 100644 index 00000000..c27a4c82 --- /dev/null +++ b/tests/snapshots/external/247a6063b698c285bfef7addfd972ddf797f6a90dfd5a3e649e6e4c127b86562.html @@ -0,0 +1,57 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/26bc66c2ba29feddfbd06c2490eca42ec5a8f62db8d650231b0748ddce8c85f1.html b/tests/snapshots/external/26bc66c2ba29feddfbd06c2490eca42ec5a8f62db8d650231b0748ddce8c85f1.html new file mode 100644 index 00000000..271501b7 --- /dev/null +++ b/tests/snapshots/external/26bc66c2ba29feddfbd06c2490eca42ec5a8f62db8d650231b0748ddce8c85f1.html @@ -0,0 +1,59 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/28d8862dd086c7d523516dd4091b57e5babd34165edccf619b62a06fc1936cd5.html b/tests/snapshots/external/28d8862dd086c7d523516dd4091b57e5babd34165edccf619b62a06fc1936cd5.html new file mode 100644 index 00000000..06640b9d --- /dev/null +++ b/tests/snapshots/external/28d8862dd086c7d523516dd4091b57e5babd34165edccf619b62a06fc1936cd5.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/2bf34b4dd82e753b21200ec980cb197c530710fe8c150c4dd3fbbfb7d38928cc.html b/tests/snapshots/external/2bf34b4dd82e753b21200ec980cb197c530710fe8c150c4dd3fbbfb7d38928cc.html new file mode 100644 index 00000000..eddcbb25 --- /dev/null +++ b/tests/snapshots/external/2bf34b4dd82e753b21200ec980cb197c530710fe8c150c4dd3fbbfb7d38928cc.html @@ -0,0 +1,55 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/347d4ffe2cb3f2ca3f0d1f3f09cffa96645eb2af29983e75d807fccff96d8f75.html b/tests/snapshots/external/347d4ffe2cb3f2ca3f0d1f3f09cffa96645eb2af29983e75d807fccff96d8f75.html new file mode 100644 index 00000000..9cd4b2fe --- /dev/null +++ b/tests/snapshots/external/347d4ffe2cb3f2ca3f0d1f3f09cffa96645eb2af29983e75d807fccff96d8f75.html @@ -0,0 +1,318 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/366b0537fe0625a10d55203a3532de5c360e49fb403078a82ec408d829afcb72.html b/tests/snapshots/external/366b0537fe0625a10d55203a3532de5c360e49fb403078a82ec408d829afcb72.html new file mode 100644 index 00000000..b6a621d2 --- /dev/null +++ b/tests/snapshots/external/366b0537fe0625a10d55203a3532de5c360e49fb403078a82ec408d829afcb72.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/388a13d71284b1a4b0c457e9c8d1ec60dfefb8871c69ceb1d7a035bd3bdadab8.html b/tests/snapshots/external/388a13d71284b1a4b0c457e9c8d1ec60dfefb8871c69ceb1d7a035bd3bdadab8.html new file mode 100644 index 00000000..1232ad5e --- /dev/null +++ b/tests/snapshots/external/388a13d71284b1a4b0c457e9c8d1ec60dfefb8871c69ceb1d7a035bd3bdadab8.html @@ -0,0 +1,55 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/3d072a22b9513eecb51c6a5f39b978c1c1d3ef56a572031a307fe1cad1f17eff.html b/tests/snapshots/external/3d072a22b9513eecb51c6a5f39b978c1c1d3ef56a572031a307fe1cad1f17eff.html new file mode 100644 index 00000000..f950f69b --- /dev/null +++ b/tests/snapshots/external/3d072a22b9513eecb51c6a5f39b978c1c1d3ef56a572031a307fe1cad1f17eff.html @@ -0,0 +1,324 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/3f5d794823a451ec9d4ed8c7e16d1354d39b74380402b255ee60741e97c9960c.html b/tests/snapshots/external/3f5d794823a451ec9d4ed8c7e16d1354d39b74380402b255ee60741e97c9960c.html new file mode 100644 index 00000000..8b4491f3 --- /dev/null +++ b/tests/snapshots/external/3f5d794823a451ec9d4ed8c7e16d1354d39b74380402b255ee60741e97c9960c.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/42c053a5e567a777dfde62cd0d061112dc8098f90e71f71d5aceba8be188fcf7.html b/tests/snapshots/external/42c053a5e567a777dfde62cd0d061112dc8098f90e71f71d5aceba8be188fcf7.html new file mode 100644 index 00000000..52ada349 --- /dev/null +++ b/tests/snapshots/external/42c053a5e567a777dfde62cd0d061112dc8098f90e71f71d5aceba8be188fcf7.html @@ -0,0 +1,26 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/4370d843cc76138927502402ac39c80414c8441a962f6466afdb280dc022af26.html b/tests/snapshots/external/4370d843cc76138927502402ac39c80414c8441a962f6466afdb280dc022af26.html new file mode 100644 index 00000000..c70d8ae8 --- /dev/null +++ b/tests/snapshots/external/4370d843cc76138927502402ac39c80414c8441a962f6466afdb280dc022af26.html @@ -0,0 +1,97 @@ + + +
+

+ + signature_package + +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + __init__ + +

+
+
__init__(a, b)
+
+
+
+

+ Docstring for `Class. + + init + + . +

+
+
+
+

+ + method1 + +

+
+
method1(a, b)
+
+
+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + module_function + +

+
+
module_function(a, b)
+
+
+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/44e42f27bfe3d3b5ec14700c247c83195b1c6eea319d1a0679b2baa797d9859c.html b/tests/snapshots/external/44e42f27bfe3d3b5ec14700c247c83195b1c6eea319d1a0679b2baa797d9859c.html new file mode 100644 index 00000000..2bfbdbf4 --- /dev/null +++ b/tests/snapshots/external/44e42f27bfe3d3b5ec14700c247c83195b1c6eea319d1a0679b2baa797d9859c.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/46e56f39b10d1e8ee4017bc11457bf76d169fc80b3d3e465213671b7f6e548eb.html b/tests/snapshots/external/46e56f39b10d1e8ee4017bc11457bf76d169fc80b3d3e465213671b7f6e548eb.html new file mode 100644 index 00000000..36f35fb4 --- /dev/null +++ b/tests/snapshots/external/46e56f39b10d1e8ee4017bc11457bf76d169fc80b3d3e465213671b7f6e548eb.html @@ -0,0 +1,132 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/4892e0fe1920c0bb22fa4787b6e76cccaa968163b35641d705f288c04fe4937e.html b/tests/snapshots/external/4892e0fe1920c0bb22fa4787b6e76cccaa968163b35641d705f288c04fe4937e.html new file mode 100644 index 00000000..3b41766d --- /dev/null +++ b/tests/snapshots/external/4892e0fe1920c0bb22fa4787b6e76cccaa968163b35641d705f288c04fe4937e.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/4f60da13e2d45e803f73ed41746d8b3570f0dac7e132efb1bf0cdbf77e9e2c59.html b/tests/snapshots/external/4f60da13e2d45e803f73ed41746d8b3570f0dac7e132efb1bf0cdbf77e9e2c59.html new file mode 100644 index 00000000..7d734fba --- /dev/null +++ b/tests/snapshots/external/4f60da13e2d45e803f73ed41746d8b3570f0dac7e132efb1bf0cdbf77e9e2c59.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/59a9e1ffb2f0807b594a933444c78753a06f359527ea4adac85c72a7812b21d3.html b/tests/snapshots/external/59a9e1ffb2f0807b594a933444c78753a06f359527ea4adac85c72a7812b21d3.html new file mode 100644 index 00000000..ad60041c --- /dev/null +++ b/tests/snapshots/external/59a9e1ffb2f0807b594a933444c78753a06f359527ea4adac85c72a7812b21d3.html @@ -0,0 +1,318 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/5a9c10410801aa75b33878971b939da701df9a7ce8006dc7781c148d27a89756.html b/tests/snapshots/external/5a9c10410801aa75b33878971b939da701df9a7ce8006dc7781c148d27a89756.html new file mode 100644 index 00000000..8fd78409 --- /dev/null +++ b/tests/snapshots/external/5a9c10410801aa75b33878971b939da701df9a7ce8006dc7781c148d27a89756.html @@ -0,0 +1,57 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/5cf0130e3b4fdd536b1c99ee66c66ec4245e286bf75b989cf50979ce187e1a16.html b/tests/snapshots/external/5cf0130e3b4fdd536b1c99ee66c66ec4245e286bf75b989cf50979ce187e1a16.html new file mode 100644 index 00000000..eb15c707 --- /dev/null +++ b/tests/snapshots/external/5cf0130e3b4fdd536b1c99ee66c66ec4245e286bf75b989cf50979ce187e1a16.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/62e18d3e57777d911c7fdee1fcc032a9c23ffe82913060e3b66f29bf81a6a585.html b/tests/snapshots/external/62e18d3e57777d911c7fdee1fcc032a9c23ffe82913060e3b66f29bf81a6a585.html new file mode 100644 index 00000000..1a8842f9 --- /dev/null +++ b/tests/snapshots/external/62e18d3e57777d911c7fdee1fcc032a9c23ffe82913060e3b66f29bf81a6a585.html @@ -0,0 +1,55 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/6a02b544c12c68b75d9bf3b85b1800830fd980daabff9df8c3760eb6edea7915.html b/tests/snapshots/external/6a02b544c12c68b75d9bf3b85b1800830fd980daabff9df8c3760eb6edea7915.html new file mode 100644 index 00000000..70567c97 --- /dev/null +++ b/tests/snapshots/external/6a02b544c12c68b75d9bf3b85b1800830fd980daabff9df8c3760eb6edea7915.html @@ -0,0 +1,136 @@ + + +
+

+ + signature_package + +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for `Class. + + init + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/6d12192d6b4dc0633bad697a683a3cdf3b2b9ceeb839044c72c63b469914f0a1.html b/tests/snapshots/external/6d12192d6b4dc0633bad697a683a3cdf3b2b9ceeb839044c72c63b469914f0a1.html new file mode 100644 index 00000000..93503606 --- /dev/null +++ b/tests/snapshots/external/6d12192d6b4dc0633bad697a683a3cdf3b2b9ceeb839044c72c63b469914f0a1.html @@ -0,0 +1,57 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/7107066872137b807b3f9d897e75eff78f5783b14d3c88e71c6477eaa8493113.html b/tests/snapshots/external/7107066872137b807b3f9d897e75eff78f5783b14d3c88e71c6477eaa8493113.html new file mode 100644 index 00000000..27fcc6c1 --- /dev/null +++ b/tests/snapshots/external/7107066872137b807b3f9d897e75eff78f5783b14d3c88e71c6477eaa8493113.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/728c1344630190ac84514ebd8e5ae2d95ba8685e16d2c79749f675b5b2a6cea5.html b/tests/snapshots/external/728c1344630190ac84514ebd8e5ae2d95ba8685e16d2c79749f675b5b2a6cea5.html new file mode 100644 index 00000000..d6ac202a --- /dev/null +++ b/tests/snapshots/external/728c1344630190ac84514ebd8e5ae2d95ba8685e16d2c79749f675b5b2a6cea5.html @@ -0,0 +1,289 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/735fc6ffdb82ce35cdab2aed2389a630e4d2c7ad95308bc5c7a56a8a8930b37f.html b/tests/snapshots/external/735fc6ffdb82ce35cdab2aed2389a630e4d2c7ad95308bc5c7a56a8a8930b37f.html new file mode 100644 index 00000000..44516fe5 --- /dev/null +++ b/tests/snapshots/external/735fc6ffdb82ce35cdab2aed2389a630e4d2c7ad95308bc5c7a56a8a8930b37f.html @@ -0,0 +1,190 @@ + + +
+

+ + signature_package + +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + __init__ + + + ( + + + a + + + : + + + int + + + , + + + b + + + : + + + str + + + ) + + + -> + + + None + + +

+
+

+ Docstring for `Class. + + init + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + : + + + int + + + , + + + b + + + : + + + str + + + ) + + + -> + + + None + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + : + + + int + + + , + + + b + + + : + + + str + + + ) + + + -> + + + None + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/74bfab19cbd4ba02673f6b9ee736a3b6727936de92f73f299ba238491f619937.html b/tests/snapshots/external/74bfab19cbd4ba02673f6b9ee736a3b6727936de92f73f299ba238491f619937.html new file mode 100644 index 00000000..3ae3af4d --- /dev/null +++ b/tests/snapshots/external/74bfab19cbd4ba02673f6b9ee736a3b6727936de92f73f299ba238491f619937.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/76ee8e01e1c0b94de84d79da8443bc24f601f89cab70eae1b2af5ee21cfb1f3a.html b/tests/snapshots/external/76ee8e01e1c0b94de84d79da8443bc24f601f89cab70eae1b2af5ee21cfb1f3a.html new file mode 100644 index 00000000..bed00768 --- /dev/null +++ b/tests/snapshots/external/76ee8e01e1c0b94de84d79da8443bc24f601f89cab70eae1b2af5ee21cfb1f3a.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/7c988c9e13efeadd20b911a95cc69973b715cceacdadefc540109aad3c274bde.html b/tests/snapshots/external/7c988c9e13efeadd20b911a95cc69973b715cceacdadefc540109aad3c274bde.html new file mode 100644 index 00000000..10b98188 --- /dev/null +++ b/tests/snapshots/external/7c988c9e13efeadd20b911a95cc69973b715cceacdadefc540109aad3c274bde.html @@ -0,0 +1,508 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/7d5fe66539191786245991395e77d8ba0bbb22330cb08eaec2e84159bde4159b.html b/tests/snapshots/external/7d5fe66539191786245991395e77d8ba0bbb22330cb08eaec2e84159bde4159b.html new file mode 100644 index 00000000..23e38eeb --- /dev/null +++ b/tests/snapshots/external/7d5fe66539191786245991395e77d8ba0bbb22330cb08eaec2e84159bde4159b.html @@ -0,0 +1,353 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/83119803338105f101311992d31947e4fcaf2c5a6c68cad6355d8611c1cc2e3f.html b/tests/snapshots/external/83119803338105f101311992d31947e4fcaf2c5a6c68cad6355d8611c1cc2e3f.html new file mode 100644 index 00000000..c9c637e4 --- /dev/null +++ b/tests/snapshots/external/83119803338105f101311992d31947e4fcaf2c5a6c68cad6355d8611c1cc2e3f.html @@ -0,0 +1,318 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/88855b0284174733b57edd2043e0e8cd6a1a0223055f08b80031452eb05d9484.html b/tests/snapshots/external/88855b0284174733b57edd2043e0e8cd6a1a0223055f08b80031452eb05d9484.html new file mode 100644 index 00000000..540a2f6a --- /dev/null +++ b/tests/snapshots/external/88855b0284174733b57edd2043e0e8cd6a1a0223055f08b80031452eb05d9484.html @@ -0,0 +1,318 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/8b097c69ac2fd52857f33e1b008f4d99a53ed21894c51517b3d79da445b0a705.html b/tests/snapshots/external/8b097c69ac2fd52857f33e1b008f4d99a53ed21894c51517b3d79da445b0a705.html new file mode 100644 index 00000000..e908da32 --- /dev/null +++ b/tests/snapshots/external/8b097c69ac2fd52857f33e1b008f4d99a53ed21894c51517b3d79da445b0a705.html @@ -0,0 +1,59 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/8d4e1f9af9971bd21234c7c45dfbd59a1aee444bfa0cd3b9cfb6d052d378a041.html b/tests/snapshots/external/8d4e1f9af9971bd21234c7c45dfbd59a1aee444bfa0cd3b9cfb6d052d378a041.html new file mode 100644 index 00000000..eb755e52 --- /dev/null +++ b/tests/snapshots/external/8d4e1f9af9971bd21234c7c45dfbd59a1aee444bfa0cd3b9cfb6d052d378a041.html @@ -0,0 +1,57 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/955e5111f4262f280b0787a22dfa46c9ea93c80bc49e1a1de100349341d93fb9.html b/tests/snapshots/external/955e5111f4262f280b0787a22dfa46c9ea93c80bc49e1a1de100349341d93fb9.html new file mode 100644 index 00000000..ee00ece7 --- /dev/null +++ b/tests/snapshots/external/955e5111f4262f280b0787a22dfa46c9ea93c80bc49e1a1de100349341d93fb9.html @@ -0,0 +1,97 @@ + + +
+

+ + signature_package + +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + __init__ + +

+
+
__init__(a: int, b: str) -> None
+
+
+
+

+ Docstring for `Class. + + init + + . +

+
+
+
+

+ + method1 + +

+
+
method1(a: int, b: str) -> None
+
+
+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + module_function + +

+
+
module_function(a: int, b: str) -> None
+
+
+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/95f8e480937f7a2b956392ed4d8058052d9748874cdd911feacdd31d1abe5d97.html b/tests/snapshots/external/95f8e480937f7a2b956392ed4d8058052d9748874cdd911feacdd31d1abe5d97.html new file mode 100644 index 00000000..f827f125 --- /dev/null +++ b/tests/snapshots/external/95f8e480937f7a2b956392ed4d8058052d9748874cdd911feacdd31d1abe5d97.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/96cf94f4822a5cf5d72407eab5a5dddda972f16623f7710f738ffe2bcf9130d9.html b/tests/snapshots/external/96cf94f4822a5cf5d72407eab5a5dddda972f16623f7710f738ffe2bcf9130d9.html new file mode 100644 index 00000000..9aa9c3c1 --- /dev/null +++ b/tests/snapshots/external/96cf94f4822a5cf5d72407eab5a5dddda972f16623f7710f738ffe2bcf9130d9.html @@ -0,0 +1,57 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/981438492e387bc82b23f09e3c5e0b452db5a1ffd88e52479db2b52a170fd8f9.html b/tests/snapshots/external/981438492e387bc82b23f09e3c5e0b452db5a1ffd88e52479db2b52a170fd8f9.html new file mode 100644 index 00000000..574ec87c --- /dev/null +++ b/tests/snapshots/external/981438492e387bc82b23f09e3c5e0b452db5a1ffd88e52479db2b52a170fd8f9.html @@ -0,0 +1,506 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/9bd282a6f2fe82f3ffe66b175bf90ab3e808e3a67f3c15a9f9e3e143d7956e49.html b/tests/snapshots/external/9bd282a6f2fe82f3ffe66b175bf90ab3e808e3a67f3c15a9f9e3e143d7956e49.html new file mode 100644 index 00000000..ce4ee8a7 --- /dev/null +++ b/tests/snapshots/external/9bd282a6f2fe82f3ffe66b175bf90ab3e808e3a67f3c15a9f9e3e143d7956e49.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/9c0bfc0ee40732505dc3dab8c95ad4ed6582d10df2449c7d92f1e43a91610666.html b/tests/snapshots/external/9c0bfc0ee40732505dc3dab8c95ad4ed6582d10df2449c7d92f1e43a91610666.html new file mode 100644 index 00000000..6dd48d30 --- /dev/null +++ b/tests/snapshots/external/9c0bfc0ee40732505dc3dab8c95ad4ed6582d10df2449c7d92f1e43a91610666.html @@ -0,0 +1,97 @@ + + +
+

+ + signature_package + +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + __init__ + +

+
+
__init__(a, b)
+
+
+
+

+ Docstring for `Class. + + init + + . +

+
+
+
+

+ + method1 + +

+
+
method1(a, b)
+
+
+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + module_function + +

+
+
module_function(a, b)
+
+
+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/9d03089a46fab9a86b0836444cabb6225798eaf25be6fd4171bd73b7354509b6.html b/tests/snapshots/external/9d03089a46fab9a86b0836444cabb6225798eaf25be6fd4171bd73b7354509b6.html new file mode 100644 index 00000000..0ee900fb --- /dev/null +++ b/tests/snapshots/external/9d03089a46fab9a86b0836444cabb6225798eaf25be6fd4171bd73b7354509b6.html @@ -0,0 +1,55 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/a1167b14f5a71a283817bf5866d2bb0bd08bf23dc054c6f7938a04f42feab99d.html b/tests/snapshots/external/a1167b14f5a71a283817bf5866d2bb0bd08bf23dc054c6f7938a04f42feab99d.html new file mode 100644 index 00000000..bb9001d8 --- /dev/null +++ b/tests/snapshots/external/a1167b14f5a71a283817bf5866d2bb0bd08bf23dc054c6f7938a04f42feab99d.html @@ -0,0 +1,167 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/a185e216dc7b7ebb31b46ea0e7ed446cf9da94eee8db306f08bae1ca0db0ca1d.html b/tests/snapshots/external/a185e216dc7b7ebb31b46ea0e7ed446cf9da94eee8db306f08bae1ca0db0ca1d.html new file mode 100644 index 00000000..a0685468 --- /dev/null +++ b/tests/snapshots/external/a185e216dc7b7ebb31b46ea0e7ed446cf9da94eee8db306f08bae1ca0db0ca1d.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/a200913d9a7d51c52ab58f6fc4e9ea7be278d7890c46cf28ecc3cfd35a36fb46.html b/tests/snapshots/external/a200913d9a7d51c52ab58f6fc4e9ea7be278d7890c46cf28ecc3cfd35a36fb46.html new file mode 100644 index 00000000..96cff9d7 --- /dev/null +++ b/tests/snapshots/external/a200913d9a7d51c52ab58f6fc4e9ea7be278d7890c46cf28ecc3cfd35a36fb46.html @@ -0,0 +1,55 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/a2c5be9bd5d1f0db3ff64b44353c1760f5eb69d7db6401da2f28518d0e8065c4.html b/tests/snapshots/external/a2c5be9bd5d1f0db3ff64b44353c1760f5eb69d7db6401da2f28518d0e8065c4.html new file mode 100644 index 00000000..4738a584 --- /dev/null +++ b/tests/snapshots/external/a2c5be9bd5d1f0db3ff64b44353c1760f5eb69d7db6401da2f28518d0e8065c4.html @@ -0,0 +1,318 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/ab0ddac637b536c06014746a4a8f8e0921b074015ae19680abf5df995c233ba1.html b/tests/snapshots/external/ab0ddac637b536c06014746a4a8f8e0921b074015ae19680abf5df995c233ba1.html new file mode 100644 index 00000000..3933bd9d --- /dev/null +++ b/tests/snapshots/external/ab0ddac637b536c06014746a4a8f8e0921b074015ae19680abf5df995c233ba1.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/ae74b5980f9b6996ed6e112d53168fde16c32d92bed42fb3193f98e0e3f04602.html b/tests/snapshots/external/ae74b5980f9b6996ed6e112d53168fde16c32d92bed42fb3193f98e0e3f04602.html new file mode 100644 index 00000000..34123ecf --- /dev/null +++ b/tests/snapshots/external/ae74b5980f9b6996ed6e112d53168fde16c32d92bed42fb3193f98e0e3f04602.html @@ -0,0 +1,353 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/afd5c166367dd47e4f9843d906b3a1ad12398888fdad84bfbda3de8b19072611.html b/tests/snapshots/external/afd5c166367dd47e4f9843d906b3a1ad12398888fdad84bfbda3de8b19072611.html new file mode 100644 index 00000000..8501bce2 --- /dev/null +++ b/tests/snapshots/external/afd5c166367dd47e4f9843d906b3a1ad12398888fdad84bfbda3de8b19072611.html @@ -0,0 +1,57 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/b060b701543e5503dc848538a164e80480ab25f8885aa83b97776e6b0cc6b570.html b/tests/snapshots/external/b060b701543e5503dc848538a164e80480ab25f8885aa83b97776e6b0cc6b570.html new file mode 100644 index 00000000..599197fe --- /dev/null +++ b/tests/snapshots/external/b060b701543e5503dc848538a164e80480ab25f8885aa83b97776e6b0cc6b570.html @@ -0,0 +1,136 @@ + + +
+

+ + signature_package + +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for `Class. + + init + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/b0a9b08f1f721721c4dd110cb8f85ffda5caf1f1479851275bc227857fb01400.html b/tests/snapshots/external/b0a9b08f1f721721c4dd110cb8f85ffda5caf1f1479851275bc227857fb01400.html new file mode 100644 index 00000000..bbd48b9e --- /dev/null +++ b/tests/snapshots/external/b0a9b08f1f721721c4dd110cb8f85ffda5caf1f1479851275bc227857fb01400.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/b4b490164ab1a724cac7aba25bbc69a33e7dd44500e9337718cd96da1bb56325.html b/tests/snapshots/external/b4b490164ab1a724cac7aba25bbc69a33e7dd44500e9337718cd96da1bb56325.html new file mode 100644 index 00000000..9f5cbef9 --- /dev/null +++ b/tests/snapshots/external/b4b490164ab1a724cac7aba25bbc69a33e7dd44500e9337718cd96da1bb56325.html @@ -0,0 +1,320 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/ba51e100acd4f6ad91f1ef484aa5f1bd537e661588b1742d93d0a6543cc3592c.html b/tests/snapshots/external/ba51e100acd4f6ad91f1ef484aa5f1bd537e661588b1742d93d0a6543cc3592c.html new file mode 100644 index 00000000..b18eb50e --- /dev/null +++ b/tests/snapshots/external/ba51e100acd4f6ad91f1ef484aa5f1bd537e661588b1742d93d0a6543cc3592c.html @@ -0,0 +1,477 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/bd6594ae3b516bf84cd0b0e6605087f430f62d787c32225ac8b4039c92e20b76.html b/tests/snapshots/external/bd6594ae3b516bf84cd0b0e6605087f430f62d787c32225ac8b4039c92e20b76.html new file mode 100644 index 00000000..aa4ebf15 --- /dev/null +++ b/tests/snapshots/external/bd6594ae3b516bf84cd0b0e6605087f430f62d787c32225ac8b4039c92e20b76.html @@ -0,0 +1,55 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/c260e7f4ef3b8b228bb25879d3adcf6610f1c2c971c9c46b5665d276716b8821.html b/tests/snapshots/external/c260e7f4ef3b8b228bb25879d3adcf6610f1c2c971c9c46b5665d276716b8821.html new file mode 100644 index 00000000..fb55bdd1 --- /dev/null +++ b/tests/snapshots/external/c260e7f4ef3b8b228bb25879d3adcf6610f1c2c971c9c46b5665d276716b8821.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/c6e7ef9564cdc8449a98c0ef790d652dee02c47b1339f858fc1d7a54aae9ed46.html b/tests/snapshots/external/c6e7ef9564cdc8449a98c0ef790d652dee02c47b1339f858fc1d7a54aae9ed46.html new file mode 100644 index 00000000..e96d72c3 --- /dev/null +++ b/tests/snapshots/external/c6e7ef9564cdc8449a98c0ef790d652dee02c47b1339f858fc1d7a54aae9ed46.html @@ -0,0 +1,26 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/c915eb92fd5dcc4e2c9da41ca72c726e65fcd85804942be0c67b4f05f452a549.html b/tests/snapshots/external/c915eb92fd5dcc4e2c9da41ca72c726e65fcd85804942be0c67b4f05f452a549.html new file mode 100644 index 00000000..26f0f5ef --- /dev/null +++ b/tests/snapshots/external/c915eb92fd5dcc4e2c9da41ca72c726e65fcd85804942be0c67b4f05f452a549.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/c9a15552eed32a233795c2086a7c766ad95e05197d30d881540fbe52cdc07ff8.html b/tests/snapshots/external/c9a15552eed32a233795c2086a7c766ad95e05197d30d881540fbe52cdc07ff8.html new file mode 100644 index 00000000..79a5ff40 --- /dev/null +++ b/tests/snapshots/external/c9a15552eed32a233795c2086a7c766ad95e05197d30d881540fbe52cdc07ff8.html @@ -0,0 +1,55 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/cc19537fdba4a26b10c60d5586b0eb7ef0264a783a3c47d1114d21fa8cfa3947.html b/tests/snapshots/external/cc19537fdba4a26b10c60d5586b0eb7ef0264a783a3c47d1114d21fa8cfa3947.html new file mode 100644 index 00000000..f93ae024 --- /dev/null +++ b/tests/snapshots/external/cc19537fdba4a26b10c60d5586b0eb7ef0264a783a3c47d1114d21fa8cfa3947.html @@ -0,0 +1,506 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/cdc8126d78b690d11c09e3128df0f8d65379375a6bd390da30f5676bf2289cf2.html b/tests/snapshots/external/cdc8126d78b690d11c09e3128df0f8d65379375a6bd390da30f5676bf2289cf2.html new file mode 100644 index 00000000..158c1ca5 --- /dev/null +++ b/tests/snapshots/external/cdc8126d78b690d11c09e3128df0f8d65379375a6bd390da30f5676bf2289cf2.html @@ -0,0 +1,289 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/ce06da7f07b34e4f9071c5c001a8626f2d5fd8eed9a3ba81abebd76f8afc6861.html b/tests/snapshots/external/ce06da7f07b34e4f9071c5c001a8626f2d5fd8eed9a3ba81abebd76f8afc6861.html new file mode 100644 index 00000000..898bab70 --- /dev/null +++ b/tests/snapshots/external/ce06da7f07b34e4f9071c5c001a8626f2d5fd8eed9a3ba81abebd76f8afc6861.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/cfcd41685591bcc497f9d1e9fd20006fc3acd857f068e78e6d1c2461bbd4063f.html b/tests/snapshots/external/cfcd41685591bcc497f9d1e9fd20006fc3acd857f068e78e6d1c2461bbd4063f.html new file mode 100644 index 00000000..d543f794 --- /dev/null +++ b/tests/snapshots/external/cfcd41685591bcc497f9d1e9fd20006fc3acd857f068e78e6d1c2461bbd4063f.html @@ -0,0 +1,57 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/d1216ebf8e30ec559861678318efb45bef54a847517e5d90e130818c2a06b163.html b/tests/snapshots/external/d1216ebf8e30ec559861678318efb45bef54a847517e5d90e130818c2a06b163.html new file mode 100644 index 00000000..65e87e01 --- /dev/null +++ b/tests/snapshots/external/d1216ebf8e30ec559861678318efb45bef54a847517e5d90e130818c2a06b163.html @@ -0,0 +1,190 @@ + + +
+

+ + signature_package + +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + __init__ + + + ( + + + a + + + : + + + int + + + , + + + b + + + : + + + str + + + ) + + + -> + + + None + + +

+
+

+ Docstring for `Class. + + init + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + : + + + int + + + , + + + b + + + : + + + str + + + ) + + + -> + + + None + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + : + + + int + + + , + + + b + + + : + + + str + + + ) + + + -> + + + None + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/d540895f6bf91c8c8e4abc02f40529a61c6cec71b18da2e4f02206ec18b901ef.html b/tests/snapshots/external/d540895f6bf91c8c8e4abc02f40529a61c6cec71b18da2e4f02206ec18b901ef.html new file mode 100644 index 00000000..2ad1c277 --- /dev/null +++ b/tests/snapshots/external/d540895f6bf91c8c8e4abc02f40529a61c6cec71b18da2e4f02206ec18b901ef.html @@ -0,0 +1,353 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/d5a6bf59c663338bef9fdc2391f482aee444228e86e23357c11881498e711bb2.html b/tests/snapshots/external/d5a6bf59c663338bef9fdc2391f482aee444228e86e23357c11881498e711bb2.html new file mode 100644 index 00000000..23e66fd7 --- /dev/null +++ b/tests/snapshots/external/d5a6bf59c663338bef9fdc2391f482aee444228e86e23357c11881498e711bb2.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/d726cb8367d95b67ce78e718e88ee528d3abc2fbd04413d1c11916a243d7567a.html b/tests/snapshots/external/d726cb8367d95b67ce78e718e88ee528d3abc2fbd04413d1c11916a243d7567a.html new file mode 100644 index 00000000..1f45fb80 --- /dev/null +++ b/tests/snapshots/external/d726cb8367d95b67ce78e718e88ee528d3abc2fbd04413d1c11916a243d7567a.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/e3defc3620e5fee20f9400c33b7b541fde66297f257d9baf1b0f94b3ea49e6e0.html b/tests/snapshots/external/e3defc3620e5fee20f9400c33b7b541fde66297f257d9baf1b0f94b3ea49e6e0.html new file mode 100644 index 00000000..8c035cc8 --- /dev/null +++ b/tests/snapshots/external/e3defc3620e5fee20f9400c33b7b541fde66297f257d9baf1b0f94b3ea49e6e0.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/e6a9b76f268cde81a129e7273038db0ff3fcd73530442a30c48cf01dcbc30aaa.html b/tests/snapshots/external/e6a9b76f268cde81a129e7273038db0ff3fcd73530442a30c48cf01dcbc30aaa.html new file mode 100644 index 00000000..dbcf8c57 --- /dev/null +++ b/tests/snapshots/external/e6a9b76f268cde81a129e7273038db0ff3fcd73530442a30c48cf01dcbc30aaa.html @@ -0,0 +1,318 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/e8be7a9b1410e40dac79fe0ee29d3036e707a177b2ba2bdad25a6998bec570b7.html b/tests/snapshots/external/e8be7a9b1410e40dac79fe0ee29d3036e707a177b2ba2bdad25a6998bec570b7.html new file mode 100644 index 00000000..3dbd9879 --- /dev/null +++ b/tests/snapshots/external/e8be7a9b1410e40dac79fe0ee29d3036e707a177b2ba2bdad25a6998bec570b7.html @@ -0,0 +1,506 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/e90c3e0c85ddaa068f3d063c6a1ef718bb3ae2092760b707e838fb73164b3720.html b/tests/snapshots/external/e90c3e0c85ddaa068f3d063c6a1ef718bb3ae2092760b707e838fb73164b3720.html new file mode 100644 index 00000000..a6ee2831 --- /dev/null +++ b/tests/snapshots/external/e90c3e0c85ddaa068f3d063c6a1ef718bb3ae2092760b707e838fb73164b3720.html @@ -0,0 +1,57 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/eee65d3705a655eec6512c4aa09d55f5d2e7c62dd245fed4b3f002a5e9a4d646.html b/tests/snapshots/external/eee65d3705a655eec6512c4aa09d55f5d2e7c62dd245fed4b3f002a5e9a4d646.html new file mode 100644 index 00000000..53b5e455 --- /dev/null +++ b/tests/snapshots/external/eee65d3705a655eec6512c4aa09d55f5d2e7c62dd245fed4b3f002a5e9a4d646.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/f0014d9505eceb38ba1e36c380a97ebe4d43669929ec1cdedba4d418899aecc7.html b/tests/snapshots/external/f0014d9505eceb38ba1e36c380a97ebe4d43669929ec1cdedba4d418899aecc7.html new file mode 100644 index 00000000..5fbd6650 --- /dev/null +++ b/tests/snapshots/external/f0014d9505eceb38ba1e36c380a97ebe4d43669929ec1cdedba4d418899aecc7.html @@ -0,0 +1,26 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/f3f3acb6b51ba98f5a06e7c62e85b791b6521504f19a8d7496592dee59c7f199.html b/tests/snapshots/external/f3f3acb6b51ba98f5a06e7c62e85b791b6521504f19a8d7496592dee59c7f199.html new file mode 100644 index 00000000..48c42b3d --- /dev/null +++ b/tests/snapshots/external/f3f3acb6b51ba98f5a06e7c62e85b791b6521504f19a8d7496592dee59c7f199.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/f5ce06acbb7a31658cc6367db31caaf7a210c0a31e71de950e791c5eb33a6258.html b/tests/snapshots/external/f5ce06acbb7a31658cc6367db31caaf7a210c0a31e71de950e791c5eb33a6258.html new file mode 100644 index 00000000..08ae8776 --- /dev/null +++ b/tests/snapshots/external/f5ce06acbb7a31658cc6367db31caaf7a210c0a31e71de950e791c5eb33a6258.html @@ -0,0 +1,97 @@ + + +
+

+ + signature_package + +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + __init__ + +

+
+
__init__(a: int, b: str) -> None
+
+
+
+

+ Docstring for `Class. + + init + + . +

+
+
+
+

+ + method1 + +

+
+
method1(a: int, b: str) -> None
+
+
+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + module_function + +

+
+
module_function(a: int, b: str) -> None
+
+
+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/f6e292b8358a04e3471ba11c8820307076be3cf83b0a9ec2fb5c949324b7e172.html b/tests/snapshots/external/f6e292b8358a04e3471ba11c8820307076be3cf83b0a9ec2fb5c949324b7e172.html new file mode 100644 index 00000000..79900273 --- /dev/null +++ b/tests/snapshots/external/f6e292b8358a04e3471ba11c8820307076be3cf83b0a9ec2fb5c949324b7e172.html @@ -0,0 +1,57 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/f7711b8af7689b331209f8c034c8cc3a2ec894372644a8eaee597418e9b55b3c.html b/tests/snapshots/external/f7711b8af7689b331209f8c034c8cc3a2ec894372644a8eaee597418e9b55b3c.html new file mode 100644 index 00000000..522fd1c1 --- /dev/null +++ b/tests/snapshots/external/f7711b8af7689b331209f8c034c8cc3a2ec894372644a8eaee597418e9b55b3c.html @@ -0,0 +1,318 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/f77f1c850398f972a7ae2229f918ba497874115be6c5e9431838b4bb6931b2f4.html b/tests/snapshots/external/f77f1c850398f972a7ae2229f918ba497874115be6c5e9431838b4bb6931b2f4.html new file mode 100644 index 00000000..4be85a18 --- /dev/null +++ b/tests/snapshots/external/f77f1c850398f972a7ae2229f918ba497874115be6c5e9431838b4bb6931b2f4.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/f848d4a9e516beeb1b1719630e34aa243a093ccd362a63e33dbd6202ae8ab75d.html b/tests/snapshots/external/f848d4a9e516beeb1b1719630e34aa243a093ccd362a63e33dbd6202ae8ab75d.html new file mode 100644 index 00000000..19c29b39 --- /dev/null +++ b/tests/snapshots/external/f848d4a9e516beeb1b1719630e34aa243a093ccd362a63e33dbd6202ae8ab75d.html @@ -0,0 +1,353 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/f8f32ea6a0c80a63854f8c8d78b3706797feb3042ac88c8fcf0a6da277eddb9d.html b/tests/snapshots/external/f8f32ea6a0c80a63854f8c8d78b3706797feb3042ac88c8fcf0a6da277eddb9d.html new file mode 100644 index 00000000..d1e4f8bd --- /dev/null +++ b/tests/snapshots/external/f8f32ea6a0c80a63854f8c8d78b3706797feb3042ac88c8fcf0a6da277eddb9d.html @@ -0,0 +1,26 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/fb5ebb7546d8d63744d7e6713ab5317b8c3d00d1108d28d7ef2949994b41dcbd.html b/tests/snapshots/external/fb5ebb7546d8d63744d7e6713ab5317b8c3d00d1108d28d7ef2949994b41dcbd.html new file mode 100644 index 00000000..ec61d8e3 --- /dev/null +++ b/tests/snapshots/external/fb5ebb7546d8d63744d7e6713ab5317b8c3d00d1108d28d7ef2949994b41dcbd.html @@ -0,0 +1,24 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/fb65efbbfc3ef9c2a06e6f539f8a75bec4276e61254539632a1d5f8f2c6c3452.html b/tests/snapshots/external/fb65efbbfc3ef9c2a06e6f539f8a75bec4276e61254539632a1d5f8f2c6c3452.html new file mode 100644 index 00000000..3cec9af8 --- /dev/null +++ b/tests/snapshots/external/fb65efbbfc3ef9c2a06e6f539f8a75bec4276e61254539632a1d5f8f2c6c3452.html @@ -0,0 +1,318 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+

+ + + module_attribute + + + = + + + 42 + + + + + + module-attribute + + + +

+
+

+ Docstring for + + module_attribute + + . +

+
+
+
+

+ + Class + +

+
+

+ Docstring for + + Class + + . +

+
+
+

+ + + class_attribute + + + = + + + 42 + + + + + + class-attribute + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.class_attribute + + . +

+
+
+
+

+ + + instance_attribute + + + = + + + a + + + + + + + b + + + + + + instance-attribute + + + +

+
+

+ Docstring for + + Class.instance_attribute + + . +

+
+
+
+

+ + NestedClass + +

+
+

+ Docstring for + + NestedClass + + . +

+
+
+
+

+ + + __init__ + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.__init__ + + . +

+
+
+
+

+ + + method1 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method1 + + . +

+
+
+
+

+ + + method2 + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + Class.method2 + + . +

+
+
+
+
+
+
+

+ + Subclass + +

+
+

+ Bases: + + + Class + + +

+

+ Docstring for + + Subclass + + . +

+
+
+
+
+
+

+ + + module_function + + + ( + + + a + + + , + + + b + + + ) + + +

+
+

+ Docstring for + + module_function + + . +

+
+
+
+
+
diff --git a/tests/snapshots/external/fb770e6537bc1b98c0de03db7810404967562a2ffd1700ca35c9788949ca55c0.html b/tests/snapshots/external/fb770e6537bc1b98c0de03db7810404967562a2ffd1700ca35c9788949ca55c0.html new file mode 100644 index 00000000..0ed1d57b --- /dev/null +++ b/tests/snapshots/external/fb770e6537bc1b98c0de03db7810404967562a2ffd1700ca35c9788949ca55c0.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/snapshots/external/fba0d78ae23e4f52b5e6f0fe003ea3edf681a937f647b11925e9932006648a11.html b/tests/snapshots/external/fba0d78ae23e4f52b5e6f0fe003ea3edf681a937f647b11925e9932006648a11.html new file mode 100644 index 00000000..ff8087d4 --- /dev/null +++ b/tests/snapshots/external/fba0d78ae23e4f52b5e6f0fe003ea3edf681a937f647b11925e9932006648a11.html @@ -0,0 +1,22 @@ + + +
+

+ + members_package + +

+
+

+ Docstring for the package. +

+
+
+
+
diff --git a/tests/test_end_to_end.py b/tests/test_end_to_end.py new file mode 100644 index 00000000..05dcfeb3 --- /dev/null +++ b/tests/test_end_to_end.py @@ -0,0 +1,168 @@ +"""End-to-end tests for every combination of options.""" + +from __future__ import annotations + +import json +import re +from typing import TYPE_CHECKING, Any + +import bs4 +import pytest +from griffe import LinesCollection, ModulesCollection, TmpPackage, temporary_pypackage +from inline_snapshot import outsource + +from tests.snapshots import snapshots_members, snapshots_signatures + +if TYPE_CHECKING: + from collections.abc import Iterator + + from mkdocstrings_handlers.python.handler import PythonHandler + + +def _normalize_html(html: str) -> str: + soup = bs4.BeautifulSoup(html, features="html.parser") + html = soup.prettify() + html = re.sub(r"\b(0x)[a-f0-9]+\b", r"\1...", html) + html = re.sub(r"^(Build Date UTC ?:).+", r"\1...", html, flags=re.MULTILINE) + html = re.sub(r"\b[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}\b", r"...", html) + html = re.sub(r'(?<=id="cell-id=)\w+(?=")', r"...", html) + return html # noqa: RET504 + + +def _render(handler: PythonHandler, package: TmpPackage, final_options: dict[str, Any]) -> str: + final_options.pop("handler", None) + final_options.pop("session_handler", None) + handler_options = final_options.copy() + + # Some default options to make snapshots easier to review. + handler_options.setdefault("heading_level", 1) + handler_options.setdefault("show_root_heading", True) + handler_options.setdefault("show_source", False) + + handler._paths = [str(package.tmpdir)] + try: + data = handler.collect(package.name, handler_options) + finally: + # We're using a session handler, so we need to reset its state after each call. + # This is not thread-safe, but pytest-xdist uses subprocesses, so it's fine. + handler._modules_collection = ModulesCollection() + handler._lines_collection = LinesCollection() + handler._paths = [] + + html = handler.render(data, handler_options) + return _normalize_html(html) + + +def _render_options(options: dict[str, Any]) -> str: + return f"\n\n" + + +# Signature options +@pytest.fixture(name="signature_package", scope="session") +def _signature_package() -> Iterator[TmpPackage]: + code = """ + def module_function(a: int, b: str) -> None: + '''Docstring for `module_function`.''' + + class Class: + '''Docstring for `Class`.''' + + def __init__(self, a: int, b: str) -> None: + '''Docstring for `Class.__init__.''' + + def method1(self, a: int, b: str) -> None: + '''Docstring for `Class.method1`.''' + """ + with temporary_pypackage("signature_package", {"__init__.py": code}) as tmppkg: + yield tmppkg + + +@pytest.mark.parametrize("show_signature_annotations", [True, False]) +@pytest.mark.parametrize("signature_crossrefs", [True, False]) +@pytest.mark.parametrize("separate_signature", [True, False]) +def test_end_to_end_for_signatures( + session_handler: PythonHandler, + signature_package: TmpPackage, + show_signature_annotations: bool, + signature_crossrefs: bool, + separate_signature: bool, +) -> None: + """Test rendering of a given theme's templates. + + Parameters: + identifier: Parametrized identifier. + session_handler: Python handler (fixture). + """ + final_options = { + "show_signature_annotations": show_signature_annotations, + "signature_crossrefs": signature_crossrefs, + "separate_signature": separate_signature, + } + html = _render_options(final_options) + _render(session_handler, signature_package, final_options) + snapshot_key = tuple(sorted(final_options.items())) + assert outsource(html, suffix=".html") == snapshots_signatures[snapshot_key] + + +# Members options. +@pytest.fixture(name="members_package", scope="session") +def _members_package() -> Iterator[TmpPackage]: + code = """ + '''Docstring for the package.''' + + def module_function(a: int, b: str) -> None: + '''Docstring for `module_function`.''' + + class Class: + '''Docstring for `Class`.''' + + class NestedClass: + '''Docstring for `NestedClass`.''' + + class_attribute: int = 42 + '''Docstring for `Class.class_attribute`.''' + + def __init__(self, a: int, b: str) -> None: + '''Docstring for `Class.__init__`.''' + self.instance_attribute = a + b + '''Docstring for `Class.instance_attribute`.''' + + def method1(self, a: int, b: str) -> None: + '''Docstring for `Class.method1`.''' + + def method2(self, a: int, b: str) -> None: + '''Docstring for `Class.method2`.''' + + module_attribute: int = 42 + '''Docstring for `module_attribute`.''' + + class Subclass(Class): + '''Docstring for `Subclass`.''' + """ + with temporary_pypackage("members_package", {"__init__.py": code}) as tmppkg: + yield tmppkg + + +@pytest.mark.parametrize("inherited_members", [(), ("method1",), True, False]) +@pytest.mark.parametrize("members", [(), ("module_attribute",), True, False, None]) +@pytest.mark.parametrize("filters", [(), ("!module_attribute",), ("module_attribute",), None]) +def test_end_to_end_for_members( + session_handler: PythonHandler, + members_package: TmpPackage, + inherited_members: list[str] | bool | None, + members: list[str] | bool | None, + filters: list[str] | None, +) -> None: + """Test rendering of a given theme's templates. + + Parameters: + identifier: Parametrized identifier. + session_handler: Python handler (fixture). + """ + final_options = { + "inherited_members": inherited_members, + "members": members, + "filters": filters, + } + html = _render_options(final_options) + _render(session_handler, members_package, final_options) + snapshot_key = tuple(sorted(final_options.items())) + assert outsource(html, suffix=".html") == snapshots_members[snapshot_key] diff --git a/tests/test_handler.py b/tests/test_handler.py index 0717dc48..6c2381db 100644 --- a/tests/test_handler.py +++ b/tests/test_handler.py @@ -119,10 +119,11 @@ def test_expand_globs_without_changing_directory() -> None: (True, {"extension.py:SomeExtension": {"option": "value"}}), (True, {"path/to/extension.py": {"option": "value"}}), (True, {"path/to/extension.py:SomeExtension": {"option": "value"}}), - (False, "/absolute/path/to/extension.py"), - (False, "/absolute/path/to/extension.py:SomeExtension"), - (False, {"/absolute/path/to/extension.py": {"option": "value"}}), - (False, {"/absolute/path/to/extension.py:SomeExtension": {"option": "value"}}), + # True because OS path normalization. + (True, "/absolute/path/to/extension.py"), + (True, "/absolute/path/to/extension.py:SomeExtension"), + (True, {"/absolute/path/to/extension.py": {"option": "value"}}), + (True, {"/absolute/path/to/extension.py:SomeExtension": {"option": "value"}}), (False, "dot.notation.path.to.extension"), (False, "dot.notation.path.to.pyextension"), (False, {"dot.notation.path.to.extension": {"option": "value"}}), diff --git a/tests/test_rendering.py b/tests/test_rendering.py index 1bab29d7..081702f4 100644 --- a/tests/test_rendering.py +++ b/tests/test_rendering.py @@ -4,7 +4,7 @@ import re from dataclasses import dataclass -from typing import TYPE_CHECKING, Any +from typing import TYPE_CHECKING, Any, Callable import pytest from griffe import ModulesCollection, temporary_visited_module @@ -22,14 +22,22 @@ "aaaaa(bbbbb, ccccc=1) + ddddd.eeeee[ffff] or {ggggg: hhhhh, iiiii: jjjjj}", ], ) -def test_format_code(code: str) -> None: - """Assert code can be Black-formatted. +@pytest.mark.parametrize( + "formatter", + [ + rendering._get_black_formatter(), + rendering._get_ruff_formatter(), + rendering._get_formatter(), + ], +) +def test_format_code(code: str, formatter: Callable[[str, int], str]) -> None: + """Assert code can be formatted. Parameters: code: Code to format. """ for length in (5, 100): - assert rendering.do_format_code(code, length) + assert formatter(code, length) @pytest.mark.parametrize( @@ -37,7 +45,7 @@ def test_format_code(code: str) -> None: [("Class.method", "(param: str = 'hello') -> 'OtherClass'")], ) def test_format_signature(name: Markup, signature: str) -> None: - """Assert signatures can be Black-formatted. + """Assert signatures can be formatted. Parameters: signature: Signature to format. diff --git a/tests/test_themes.py b/tests/test_themes.py index a4ad0d59..035f453e 100644 --- a/tests/test_themes.py +++ b/tests/test_themes.py @@ -7,8 +7,7 @@ import pytest if TYPE_CHECKING: - from markdown import Markdown - from mkdocstrings.plugin import MkdocstringsPlugin + from mkdocstrings.handlers.python import PythonHandler @pytest.mark.parametrize( @@ -32,15 +31,12 @@ "mkdocstrings_handlers.python", ], ) -def test_render_themes_templates_python(identifier: str, plugin: MkdocstringsPlugin, ext_markdown: Markdown) -> None: +def test_render_themes_templates_python(identifier: str, handler: PythonHandler) -> None: """Test rendering of a given theme's templates. Parameters: identifier: Parametrized identifier. - plugin: Pytest fixture (see conftest.py). - ext_markdown: Pytest fixture (see conftest.py). + handler: Python handler (fixture). """ - handler = plugin.handlers.get_handler("python") - handler._update_env(ext_markdown, plugin.handlers._config) data = handler.collect(identifier, {}) handler.render(data, {})