问题
I want to include the docstrings for __init__()
in my sphinx-generated documentation.
I was following the accepted answer to this stackoverflow question to add a handler for autodoc-skip-member
and was still unable to see my __init__()
documentation. Trace code inside the if name == "__init__":
block shows I am hitting that code.
On a hunch I removed 'sphinx.ext.napoleon'
from my extensions
definition, leaving
extensions = [
'sphinx.ext.autodoc',
# 'sphinx.ext.napoleon',
]
and then I can see the __init__()
documentation.
The only thing I see in the napoleon documentation that seems relevant is napoleon_include_special_with_doc
, which it says defaults to True
. Explicitly setting it to True
in conf.py
doesn't seem to change anything.
ETA: If I add the following method:
def __blah__(self):
'''blah blah blah'''
print self.__class__
I see __blah__()
in my generated documentation.
- If I change the name of
__blah__
to__repr__
or__str__
, I see them in the generated documentation. - If I comment out the existing
__init__
and change__blah__
to__init__
I don't see it.
So it seems specific to __init__()
.
Is this a known issue, and is there another way to control this when using napoleon?
回答1:
Napoleon defers to your autodoc configuration for how you want to handle the __init__
method.
Check your autodoc settings in conf.py
. In particular, make sure autoclass_content is set to either init
or both
.
回答2:
Per Rob's followon at https://github.com/sphinx-doc/sphinx/issues/2374, if you're using any extension that also sets a handler for the "autodoc-skip-member" event only one of the handlers will be used. This would seem to be the issue at hand. Thanks Rob!
来源:https://stackoverflow.com/questions/36270358/sphinx-autodoc-skip-member-handler-cant-show-init-when-using-napoleon