让Sphinx autodoc包含隐藏的'类

时间:2015-04-07 17:46:07

标签: python python-sphinx autodoc

我们有一个模块,其中每个类文件都在一个以下划线开头的文件中。在 init .py中,我们导入这些文件,并为每个类公开构造函数(这是必要的,因为每个类构造函数都需要一些我们不希望模块用户的其他状态需要打扰)。

E.g。我们可能有_foo.py:

class Foo(object):
  def __init(context, params):
    ...

init .py中我们有:

from ._foo import Foo as _Foo

def foo(params):
  return _Foo(_getContext(), params)

我尝试使用Sphinx autodoc为此生成文档。我显然希望为Foo及其方法(尽管最好不是它的构造函数)以及foo()构造函数包装器生成文档。

我可以让Sphinx为foo()生成文档,但似乎无法为Foo生成任何内容。我试过了:

.. automodule:: foo_module
    :members:

以及:

.. autoclass:: foo_module.Foo
    :members:

但无济于事。前者只包括foo();后者给了我一个错误:

index.rst:17: WARNING: autodoc: failed to import class u'Foo' from module u'foo_module'; the following exception was raised:
Traceback (most recent call last):
  File "/python2.7/site-packages/sphinx/ext/autodoc.py", line 342, in import_object
    obj = self.get_attr(obj, part)
  File "/python2.7/site-packages/sphinx/ext/autodoc.py", line 241, in get_attr
    return safe_getattr(obj, name, *defargs)
  File "/python2.7/site-packages/sphinx/util/inspect.py", line 114, in safe_getattr
    raise AttributeError(name)
AttributeError: Foo

有解决方法吗?

1 个答案:

答案 0 :(得分:0)

很久以前,但是...

也只需使用指令选项 :private-members:

来自https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html