Import docstrings with Sphinx autodoc
¶
Module and function details are useful reference material to have in documentation, but the process of manually pulling all the necessary details over can become tedious. The Sphinx autodoc
extension provides the capability to automatically pull in docstrings and module information for Python code.
Prerequisites¶
To use the Sphinx autodoc
extension with the Starter Pack, you need:
Python module files located within the same repository as your documentation
OR
The code repository added as a Git submodule into the documentation repository
Setup¶
In the conf.py
file in your docs directory, update the sys.path
so that Sphinx can find your module files. At the top of the file, add a sys.path.insert
that adds your <code>
directory:
conf.py
¶import sys
from pathlib import Path
relative_code_path = Path('..', '<code>')
absolute_code_path = relative_code_path.resolve()
absolute_code_path_str = str(absolute_code_path)
sys.path.insert(0, absolute_code_path_str) # insert at index 0 so it occurs early in the list
Then, further down in the conf.py
, add sphinx.ext.autodoc
to the list of extensions:
conf.py
¶extensions = [
...
"sphinx.ext.autodoc",
]
Usage¶
See Sphinx’s autodoc
instructions for details.
Known issues and limitations¶
There are a few issues and limitations that should be taken into consideration.
Language¶
The extension’s usage is limited to Python code. There are extensions for some other languages but they have not been tested with the Starter Pack, such as sphinxcontrib-rust for Rust.
Docstring format¶
The autodoc
extension pulls the docstrings straight into the the reStructuredText (reST) document, which requires the docstrings to be in reST format. For docstrings in the Numpy or Google style, the napoleon extension can convert the docstrings into reST prior to processing by autodoc
.
For documentation that is written in MyST Markdown, wrap the eval-rst
directive around the autodoc
calls:
```{eval-rst}
.. py:currentmodule:: code.<module-name>
.. automodule:: <module-name>
:members:
```
Canonical examples¶
Product |
|
Raw Doc |
Rendered Doc |
---|---|---|---|
Jubilant |
|||
Ops |