I'm using sphinx and the autodoc extension to automatically generate documentation from docstrings in my python modules.
I currently using the automodule
directive to document all the public members of the module
.. automodule::
:members:
My module also has a number of private attributes. I'd like to include one of them in the documentation.
Is there a way to tell automodule
to document all public members and also this one private member? I've tried using the :private-members:
option, but that includes all private members. I've also tried manually specifying the private attribute, but then it doesn't document any of the public members.
.. automodule::
:members: _PRIVATE_ATTR
I'd like to avoid having to manually list every single public member just to add this one private member.
Is there a way to do this with autodoc?
Here is what I would expect to work (tested with Sphinx 1.8.3):
.. automodule:: yourmodule
:members:
:private-members: _PRIVATE_ATTR
But it does not quite work. If the :private-members:
option is given, with or without arguments, all private members are included (provided that they have a docstring).
The :special-members:
option takes arguments, so it is strange that :private-members:
doesn't.
Instead you can use autodata
:
.. automodule:: yourmodule
:members:
.. autodata:: yourmodule._PRIVATE_ATTR
Here is a slightly different alternative with autodata
"inside of" automodule
:
.. automodule:: yourmodule
:members:
.. autodata:: _PRIVATE_ATTR
There is also an autoattribute
directive but it does not work with module-level "data members". I have found that autoattribute
can be used to document private class attributes, but the documentation is not clear on the exact difference between autodata
and autoattribute
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With