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

二次信任 提交于 2019-12-24 15:37:44

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!