Skip to main content

Sphinx extension to auto-generate API tree.

Project description

sphinx-apitree

Unittests PyPI version

apitree is a small library to generate a ready-to-use documentation with minimal friction!

apitree takes care of everything, so you can only focus on the code.

Usage

In docs/conf.py, replace everything by:

import apitree

apitree.make_project(
    # e.g. `import visu3d as v3d` -> {'v3d': 'visu3d'}
    project_name={'alias': 'my_module'},
    globals=globals(),
)

Then to generate the doc:

sphinx-build -b html docs/ docs/_build

To add api/my_module/index somewhere in your toctree, like:

..toctree:
  :caption: API

  api/my_module/index

Features

  • All included: Single function call include the theme, the API generation,...
  • Auto-generate the API tree:
    • Do not require __all__ (smart detect of which symbols are documented)
    • Add expandable toc tree with all symbols
  • Add links to GitHub.
  • Markdown (.md) / Jupyter (.ipynb) support out of the box
  • Auto-cross-references (Just annotate markdown inline-code my_symbol and links are auto-added)
  • Contrary to autodoc and apitree, it also document:
    • Type annotations (Union[], ...)
    • Attributes
  • ...

Installation in a project

  1. In pyproject.toml

    [project.optional-dependencies]
    # Installed through `pip install .[docs]`
    docs = [
        # Install `apitree` with all extensions (sphinx, theme,...)
        "sphinx-apitree[ext]",
    ]
    
  2. In .readthedocs.yaml

    sphinx:
    configuration: docs/conf.py
    
    python:
    install:
        - method: pip
        path: .
        extra_requirements:
            - docs
    

Options

By default, apitree tries to infer everything automatically. However there's sometimes times where the user want to overwrite the default choices.

  • Package vs module: By default, all __init__.py define the public API (imports documented), while the modules (module.py) define the implementation (imports not documented). You can explicitly mark a module as package, so it's import are documented, by adding in the module definition:

    __apitree__ = dict(
        is_package=True,
    )
    

Examples of projects using apitree

Generated with:

echo start \
&& cd ../visu3d          && sphinx-build -b html docs/ docs/_build \
&& cd ../dataclass_array && sphinx-build -b html docs/ docs/_build \
&& cd ../etils           && sphinx-build -b html docs/ docs/_build \
&& cd ../kauldron        && sphinx-build -b html docs/ docs/_build \
&& echo finished

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinx_apitree-1.6.2.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sphinx_apitree-1.6.2-py3-none-any.whl (25.5 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_apitree-1.6.2.tar.gz.

File metadata

  • Download URL: sphinx_apitree-1.6.2.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for sphinx_apitree-1.6.2.tar.gz
Algorithm Hash digest
SHA256 fa786fb4255438daf0f4644ad6b0dca0ce9b366cea3abbf11fbe946e46a99d03
MD5 f73dddb1a17beb47bf1392d7cf956afc
BLAKE2b-256 fa3c4296fc8ff1f7d86e039624f5e62f63daae9f7004a3e1c391a5a9bc03c6ae

See more details on using hashes here.

File details

Details for the file sphinx_apitree-1.6.2-py3-none-any.whl.

File metadata

  • Download URL: sphinx_apitree-1.6.2-py3-none-any.whl
  • Upload date:
  • Size: 25.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for sphinx_apitree-1.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 570116a420cc292c12903257222bf421f6a85e88e71919d83496de10c0a9dbd2
MD5 76f897b2cab19a7259fdb968becd3bf7
BLAKE2b-256 680d2377dd421212fd1e83f729d417970dc976a2dbaa875ab9e6ecc8de2bfa6f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page