A plugin for Hatch for building documentation with Sphinx
Project description
Hatch Sphinx Plugin
A plugin for Hatch that allows you to build documentation with Sphinx and include the output in your package distributions.
Installation
hatch-sphinx is a plugin for the hatchling build system, so to use it
in your project you'll need to to be using that build-backend. You can add
hatch-sphinx to your project's pyproject.toml file as a build-system
requirement:
[build-system]
requires = ["hatchling", "hatch-sphinx"]
build-backend = "hatchling.build"
Standard Python package builders (pip install <package>, python -m build,
hatchling build, ...) will install the hatch-sphinx package for you
into the build environment.
(Or at least, they will do so once hatch-sphinx is uploaded to PyPI!)
Usage
The set of Sphinx build steps needed by your project are configured in
the the [[tool.hatch.build.targets.wheel.hooks.sphinx.tools]] tables in
your pyproject.toml file. You can repeat this table multiple times to
run different tools (e.g. sphinx-apidoc and then sphinx-build).
Which tool is being run is configured via the tool configuration key.
The known values are build, apidoc, custom, and the different
configuration keys they support are listed below
Common options
| Key | Default | Description |
|---|---|---|
tool |
required | Select the tool to be run build, apidoc or custom |
doc_dir |
"doc", "docs", "." (first existing) |
The 'base' of the Sphinx documentation tree; set as the working directory prior to invoking any tool. |
out_dir |
"output" |
The directory the tool outputs will be placed into, relative do doc_dir; created if it doesn't exist and deleted on clean. |
work_dir |
"." |
The directory to run the commands in. All artifact patterns are relative to this directory. |
sphinx_opts |
"" |
Any additional options to be sent to the tool. |
environment |
{} |
Dictionary of environment settings passed to the tool. |
Tool apidoc options
| Key | Default | Description |
|---|---|---|
tool |
required | apidoc |
depth |
3 |
API depth to be included (-d 3 option). |
private |
false |
Include private members in documentation (--private option). |
separate |
true |
Make a separate rst file per module (--separate option). |
header |
None |
Header for documentation (-H header option). |
source |
"." |
Source code to be included in the API docs. |
tool_apidoc |
["python", "-m", "sphinx.ext.apidoc" |
Command to run as a list of strings |
Tool build options
| Key | Default | Description |
|---|---|---|
tool |
required | build |
format |
"html" |
Output format for documentation (-b html option). |
warnings |
false |
Treat warnings as errors (--warnings option). |
keep_going |
false |
Continue after warnings rather exiting immediately (--keep-going option). |
source |
"." |
Source code to be included in the docs. |
tool_build |
["python", "-m", "sphinx", "build" |
Command to run as a list of strings |
Tool custom options
| Key | Default | Description |
|---|---|---|
tool |
required | custom |
commands |
required | List of commands to be executed; the magic string {python} is replaced with current interpreter (sys.executable). Each command can be a list of strings (preferred) or a single string. |
shell |
false |
Whether to run the command via the shell (i.e. the shell parameter for subprocess.run) which permits wildcard expansion and scripting; note that the command cannot be a list of strings in shell=true mode. The standard warnings from subprocess.run to avoid using the shell apply here too. |
expand_globs |
false |
Whether to expand globs in the command arguments. |
Note that not all combinations of shell=true, expand_globs=true and the
individual command being a single string are supported. The recommended
configuration is to use shell=false and each command as a list, with
expand_globs=true if wildcard expansion is needed.
Examples
A sample configuration for generating the API docs and then running Sphinx
[[tool.hatch.build.targets.wheel.hooks.sphinx.tools]]
tool = "apidoc"
source = "../src/mymodule"
out_dir = "source/api"
depth = 4
header = "MyModule API Documentation"
[[tool.hatch.build.targets.wheel.hooks.sphinx.tools]]
tool = "build"
format = "html"
source = "source"
out_dir = "build"
[[tool.hatch.build.targets.wheel.hooks.sphinx.tools]]
tool = "custom"
out_dir = "build"
shell = false
expand_globs = true
commands = [
[ "ls", "-l", "*.py" ],
"ls -l *.py",
[ "{python}", "-c", "import shutil; shutil.copytree('foo', 'bar')"],
]
Notes
- The examples above are focusing on the
wheelstage but it is possible to build the docs in thesdiststage instead if desired. - The
outputdirectory is deleted in the clean step if used (e.g.hatchling build --clean)
To-do list
- support a
maketool forMakefilebased invocation of Sphinx - add option to allow
commandsto exit uncleanly
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hatch_sphinx-0.0.2.tar.gz.
File metadata
- Download URL: hatch_sphinx-0.0.2.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
099df0095c608d52583e171cd24bdba09eb5974f289a8fe4b20c6ec7dc4a8926
|
|
| MD5 |
59b78ae522ec6c3dccc59bee0cd674d9
|
|
| BLAKE2b-256 |
95d84cd69711308f1c36d64ff72df4f7c36a35dc3a8cdf993e0432a6f93d283a
|
File details
Details for the file hatch_sphinx-0.0.2-py3-none-any.whl.
File metadata
- Download URL: hatch_sphinx-0.0.2-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37f4dbd85999c7eb9ccbdd148fc90d213af9269fd5ea433abfb07f753ebb5153
|
|
| MD5 |
902a69aacdf739fc8be6239386f5029e
|
|
| BLAKE2b-256 |
c6e7ce9394e74b089374f7a7fbbc747df664d2a16ec121d516b78a441e8dfa5e
|