如何在使用动态类和动态模块时使用Sphinx自动生成Python文档

时间:2017-06-01 20:41:28

标签: python python-sphinx

我目前有一个用例,我使用以下代码在模块中创建Python类。

...
module = type.ModuleType(module_name)
...
klass = type(name, (object, ), dict(__doc__='docstring'))
...
setattr(module, name, klass)
...

但是Sphinx无法为这些类生成文档。它甚至无法找到课程。有没有办法为Sphinx添加扩展来处理这个用例?思考?

完整的最低工作示例位于here

1 个答案:

答案 0 :(得分:1)

您在modules.rst中有以下automodule指令:

.. automodule:: modules
   :members:
   :undoc-members:
   :show-inheritance:

但动态模块的限定名称为modules.Module1modules.Module2(这些名称将添加到_factory.py中的sys.modules)。

以下适用于我:

.. automodule:: modules.Module1
    :members:
    :undoc-members:
    :show-inheritance:

.. automodule:: modules.Module2
    :members:
    :undoc-members:
    :show-inheritance: