pythonpython-sphinxsphinx-napoleon

sphinx autodoc-skip-member handler: can't show __init__() when using napoleon


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.

So it seems specific to __init__().

Is this a known issue, and is there another way to control this when using napoleon?


Solution

  • 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!