Python:Sphinx引用了在包级别导入的类

时间:2016-05-14 10:39:00

标签: python python-sphinx

我想使用Sphinx记录Python包。让我们假设包由两个模块组成,并具有以下结构:

my_package
    __init__.py
    mod_a.py
        class_a_1
        class_a_2
    mod_a.py
        class_b_1
        class_b_2

要在程序包级别为用户提供所有类,__init__.py包含以下行:

from .mod_a import class_a_1, class_a_2
from .mod_b import class_b_1, class_b_2

目前,我使用带有以下行的第一个文件生成我的类的API文档:

.. automodule:: my_package.mod_a
   :members:
   :undoc-members:

.. automodule:: my_package.mod_b
   :members:
   :undoc-members:

在结果文档中列出了类,例如为:

class mypackage.mod_a.class_a_1

问题1

如何让Sphinx以下列两种方式列出类:

class class_a_1

或:

class my_package.class_a_1

除了API参考之外,我还想添加一个教程,其中包含对类及其一些方法的引用。目前,以下 第一个参考工作:

.. currentmodule:: my_package.mod_a
:class:`class_a_1`

或:

:class:`my_package.mod_a.class_a_1`

问题2

有没有一种方法可以在不定义完整模块结构且不使用.. currentmodule::指令的情况下引用类和方法?在文档中,我经常需要在不同模块的类之间切换,并希望避免大量的.. currentmodule::指令。理想情况下,我想使用以下引用方式:

此句使用对:class:`class_a_1`:class:`class_b_1`的引用。或者,如果我能写:class:`my_package.class_a_2`:class:`my_package.class_b_2`,那就太好了。

问题3

我希望包对主用命名空间中所有类的用户看起来都是平的。有什么我可以添加到我的Sphinx文档文件或__init__.py,以便能够使用单个命令生成API文档,如

.. automodule:: my_package
   :members:
   :undoc-members:

目前,此命令会生成一个空页面。

非常感谢!

0 个答案:

没有答案