Skip to main content

Sphinx Mounts

Mount external source trees into a Sphinx build without copying or symlinking. Sources stay where they live — for example, a Bazel bazel-bin/ output tree, a sibling repository, or a generated cache directory — and are made visible to Sphinx at a configured docname prefix. RST works out of the box; Markdown works as soon as myst-parser is loaded in the host project; any other format a Sphinx parser extension registers is picked up the same way.

Features

  • No materialization: sources are read directly from their original location. No copy, no symlink, no staging step.
  • Declarative TOML config: the mount mapping lives in ubproject.toml (or any TOML file you name via mounts_from_toml). conf.py only references it.
  • Language-agnostic & toolable: because the config is static TOML, IDE plugins, language servers, indexers, and build-system integrations written in any language can read the same mount mapping that sphinx-build reads — without having to evaluate conf.py.
  • Toctree auto-wiring: an optional attach_to per mount injects the bundle's entry doc into a host toctree at build time, so the host stays buildable when a mount is absent (a developer hasn't run the upstream build, CI hasn't fetched the bundle).
  • Self-contained bundles: each mount is intended to be a self-contained tree of .rst files with relative links only, so it can be reused across host projects. A linter is on the roadmap; the convention is not currently enforced.

Quick Start

pip install sphinx-mounts

Add to your conf.py:

extensions = ["sphinx_mounts"]

Describe your mounts in ubproject.toml next to conf.py:

[[mounts]]
dir = "/abs/path/to/bazel-bin/docs/api-foo"
mount_at = "_generated/api-foo"

Reference mounted documents from your host project just like any other doc:

.. toctree::

   _generated/api-foo/index

Why TOML?

A conf.py is executable Python — only a Python interpreter can read it correctly. A TOML file is static data, parseable by every common language. Putting the mount mapping in ubproject.toml means that any external tool (an IDE extension, a documentation indexer, a CI gate, a non-Python build system) can resolve cross-references without running Sphinx. The same file can also carry sections owned by sibling tools such as Sphinx-Needs ([needs]) and sphinx-codelinks ([codelinks]), keeping the project's documentation configuration in one place.

If TOML isn't an option for your setup, the legacy mounts = [...] list in conf.py is still honored as a fallback — see the docs for details.

Related projects

  • bazel-drives-sphinx — a heavier take on Bazel-driven Sphinx documentation: Bazel rules declare every RST file (and needs.json artifact) as a label, and generated per-project targets invoke sphinx-build on the assembled tree. sphinx-mounts is the lightweight alternative — Bazel drops generated files under bazel-bin/, the extension mounts that directory, and Sphinx reads in place. Pick the former for fine-grained multi-project rule collection and tag-driven variants; pick the latter when "Bazel build, then Sphinx" is enough. See docs/source/bazel.rst for a side-by-side comparison.

Documentation

See docs/source/ for the full configuration reference and the Bazel integration walkthrough. The "Related projects" section in docs/source/index.rst lists sibling tools (Sphinx-Needs, sphinx-codelinks, ubCode, bazel-drives-sphinx) that share the ubproject.toml convention.

License

MIT — see LICENSE.

Download files

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

Source Distribution

sphinx_mounts-0.1.4.tar.gz (24.9 kB view details)

Uploaded Source

Built Distribution

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

sphinx_mounts-0.1.4-py3-none-any.whl (24.3 kB view details)

Uploaded Python 3

File details

Details for the file sphinx_mounts-0.1.4.tar.gz.

File metadata

  • Download URL: sphinx_mounts-0.1.4.tar.gz
  • Upload date:
  • Size: 24.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sphinx_mounts-0.1.4.tar.gz
Algorithm Hash digest
SHA256 c88098b57891a8046965c3987f1246af9457cae962ba28b658ffab5f44ed2af7
MD5 f46cf38b604da76d0d6d753f91a9a6f9
BLAKE2b-256 21794e7d974529e3f9d3f11a5bae086cd53b5068b8f4a7b34e019f83bcf99822

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_mounts-0.1.4.tar.gz:

Publisher: release.yaml on useblocks/sphinx-mounts

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sphinx_mounts-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: sphinx_mounts-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 24.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sphinx_mounts-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3369794f5a835d87e771d1c3075fdef95fd4ab7d1b6c6afb30a4abfd48102b54
MD5 6e167875a2c5efdf9f51efa50d5e36e8
BLAKE2b-256 d81d60459b4b118d4918aab1af31145886e74de36f746fb7257b637230e778cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for sphinx_mounts-0.1.4-py3-none-any.whl:

Publisher: release.yaml on useblocks/sphinx-mounts

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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