sphinx-substitution-extensions
Extensions for Sphinx which allow for substitutions.
What it is and what it does
This package extends Sphinx with directives that perform variable substitution in documentation content. It works by registering new options (`:substitutions:`, `:content-substitutions:`, `:path-substitutions:`) on Sphinx's built-in directives like `code-block`, `literalinclude`, `include`, and `image`, plus adds new directives like `:substitution-code:` and `:substitution-download:`. Substitutions are defined in `conf.py` via `rst_prolog` for reStructuredText or `myst_substitutions` for MyST Markdown.
The package supports both reStructuredText and MyST Markdown syntax. Variables can be scoped globally (in `rst_prolog` or `myst_substitutions`) or per-document (in frontmatter for Markdown). By default, substitution flags must be added explicitly to each directive; a `substitutions_default_enabled` setting applies them automatically across all compatible directives. It depends on sphinx, docutils, myst-parser, and beartype, and requires Python 3.11 or later.
Use it for:
- Document version numbers and release dates that appear in code examples and download links without manual updates
- Replace author names, product names, or environment-specific values across code blocks and file paths in multi-author or multi-environment docs
- Generate dynamic file paths in `literalinclude` and `include` directives based on substitution variables
- Maintain consistent branding or configuration values in inline code snippets and hyperlink targets
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Adds substitution support to Sphinx directives, allowing variable replacement within code blocks, file paths, and other content during documentation builds.
Yes. Active maintenance, low install friction, no known vulnerabilities, and permissive MIT license. Install if you maintain Sphinx documentation with repeated variable values in code examples or file paths. Skip if your documentation is static and does not benefit from templating.
Install
sphinx-substitution-extensions on PyPI
pip
pip install sphinx-substitution-extensionsuv
uv add sphinx-substitution-extensionspoetry
poetry add sphinx-substitution-extensionsInstalling sphinx-substitution-extensions
Before you install
Low friction install with a wheel distribution. Active maintenance as of 2026-08-14 with recent release. Depends on sphinx, docutils, myst-parser, and beartype—all standard documentation tooling.
License in practice
MIT license permits use in open-source and commercial projects with minimal restrictions; attribution required.
Quickstart
pip install sphinx-substitution-extensions
# In conf.py:
extensions = ["sphinx_substitution_extensions"]
rst_prolog = """
.. |version| replace:: 1.0
.. |author| replace:: Jane
"""
# In your .rst file:
.. code-block:: shell
:substitutions:
echo "|author| released |version|"
Requires Python 3.11 or later and Sphinx 8.2.0 or later.
Verify before relying
- Whether substitution syntax conflicts with existing Sphinx extensions in real projects
- Performance impact when substitutions_default_enabled is true on large documentation sets
- Exact scope of MyST Markdown support beyond the documented examples
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.11) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — beartype, docutils, myst-parser, sphinx |
| Maintenance | actively maintained — 1 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 253,757/month — #8,509 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: sphinx_substitution_extensions-2026.8.13.1-py3-none-any.whl
Keywords: documentation, rst, sphinx
Tags
More Sphinx packages
Parses Python docstrings in ReST, Google,…
permissive · top 1,000 on PyPI
SphinxSphinx generates professional documentation…
permissive · top 1,000 on PyPI
sphinxcontrib-serializinghtmlA Sphinx extension that outputs documentation…
permissive · top 1,000 on PyPI
alabasterAlabaster is a clean, responsive Sphinx theme…
permissive · top 1,000 on PyPI
sphinxcontrib-htmlhelpA Sphinx extension that generates HTML help…
permissive · top 1,000 on PyPI
sphinxcontrib-qthelpA Sphinx extension that converts documentation…
permissive · top 1,000 on PyPI
sphinx-jinjaA Sphinx extension that lets you embed Jinja2…
permissive · top 5,000 on PyPI
sphinxcontrib-jqueryA Sphinx extension that ensures jQuery is…
permissive · top 5,000 on PyPI
sphinxemojiSphinx extension that replaces emoji codes…
permissive · top 15,000 on PyPI
sphinx_mdincludeSphinx extension that lets you include and…
permissive · top 15,000 on PyPI
sphinx-issuesA Sphinx extension that adds roles for linking…
permissive · top 15,000 on PyPI
sphinx-needsSphinx-Needs is a Sphinx extension that lets…
permissive · top 15,000 on PyPI
sphinx-math-dollarA Sphinx extension that lets you write LaTeX…
permissive · top 15,000 on PyPI
sphinxcontrib-imagesA Sphinx extension that replaces standard image…
permissive · top 15,000 on PyPI
sphinx-thebeAdds interactive, executable code blocks to…
unclear · top 15,000 on PyPI
sphinx-markdown-builderA Sphinx extension that generates Markdown…
permissive · top 15,000 on PyPI