Sphinx类属性文档

时间:2014-03-28 15:36:37

标签: python python-sphinx

我一直在尝试记录基于MongoEngine的应用程序,但是我在记录Document类的属性方面遇到了问题。

我采用了正确的语法,如下所示:

class Asset(Document):
     #: This is the URI of the document
     uri = StringField()

我已经尝试过各种记录我发现的这些属性的方法,甚至添加了一个不是MongoEngine字段的属性,只是为了确保这不是问题:

class Asset(Document):
    """
    The representation of a file uploaded into the data store.
    """

    #: This is a test attribute.
    foo = 'bar'
    """baz?"""

    #: This is a URI.
    uri = StringField(required=True)
    """This is a URI """

我在相应的.rst文件中尝试了各种指令组合。目前它看起来像这样:

.. currentmodule:: mymodule.asset
.. autoclass:: Asset
.. autoattribute:: Asset.foo
.. autoattribute:: Asset.uri

输出不是很令人满意:foo属性根本没有显示任何文档,而uri字段有MongoEngine的“一个unicode字符串字段”。 (StringField类的文档)作为文档。此外,属性文档不会放在类的“下面”(与automodule +:members: - 使用MongoEngine描述输出所有字段)

我是否想念狮身人面像扩展?或者我搞砸了语法?

2 个答案:

答案 0 :(得分:8)

要将类的成员放入文档中,请使用:members:选项:

.. autoclass:: Asset
   :members:

如果没有:members:,则会插入only the class docstring

另请参阅autodoc_default_flags配置选项。


您可以使用autoattribute:members:获得与上述相同的结果(请注意缩进):

.. autoclass:: Asset

   .. autoattribute:: foo
   .. autoattribute:: uri

我无法重现使用StringField中的docstring记录uri属性的问题。

我使用的是Sphinx 1.2.2。

答案 1 :(得分:0)

事实证明这个问题是由于mzjn的回答而引起的:我必须完全限定我..autoclass::的类才能使它工作,因为我为..currentmodule::指定的模块正在导入使用from x import y语法,即以下语法有效:

.. currentmodule: mymodule.asset
.. autoclass: mymodule.asset.Asset
   :members:

长话短说:检查您的进口商品!