autodoc-traits
is a Sphinx extension that builds on sphinx.ext.autodoc
to better document classes with Traitlets based configuration.
autodoc-traits
provides the Sphinx directives autoconfigurable
(use with
classes) and autotrait
(use with the traitlets based configuration options).
The sphinx.ext.autodoc
provided directive [automodule
][], which can overview
classes, will with autodoc-traits
enabled use autoconfigurable
over
autoclass
for classes has trait based configuration. Similarly, the
sphinx.ext.autodoc
provided autoclass
directive will use autotrait
over
autoattribute
if configured to present the traitlets attributes normally
not presented.
The autoattribute
directive will provide a header looking like trait c.TestConfigurable.trait = Bool(False)
, and as docstring it will use the
trait's configured help text.
-
Install
autodoc-traits
:pip install autodoc-traits
-
Configure Sphinx to use the
autodoc_traits
extensions in a Sphinx project'sconf.py
file:# -- General Sphinx configuration -------------------------------------------- # ref: https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration # extensions = [ "autodoc_traits", # sphinx.ext.autodoc will be registered by autodoc_traits, # but can safely be registered again. # ... ]
-
Make use of the
sphinx.ext.autodoc
Sphinx directive likeautomodule
that document classes, theautodoc_traits
providedautoconfigurable
that documents traitlets configurable classes, or theautodoc_traits
providedautotrait
that documents individual traitlets configuration options:From a .rst document:
.. automodule:: test_module :members: .. autoconfigurable:: test_module.TestConfigurable .. autotrait:: test_module.TestConfigurable.trait
While you can use myst-parser
, sphinx.ext.autodoc
's directives emits
unparsed rST, forcing us to parse the autodoc directives in a rST context.
From a .md document, with myst-parser
:
```{eval-rst}
.. autoconfigurable:: test_module.TestConfigurable
```
Due to this, also the Python docstrings are required to be in rST as well. Addressing this can be tracked from executablebooks/team-compass issue #6.