2017-06-01 53 views
0

我目前有一個用例,我使用下面的代碼在模塊中創建Python類。如何在使用動態類和動態模塊時自動生成使用Sphinx的Python文檔

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

但是Sphinx無法爲這些類生成文檔。它甚至無法找到類。有沒有辦法給Sphinx添加一個擴展來處理這個用例呢?思考?

此完整的最低工作示例位於here

+0

當模塊導入它們是否產生? – jonrsharpe

+0

是的,他們是。子模塊在['__init __。py'](https://github.com/kdheepak/dynamic-classes/blob/master/modules/__init__.py)文件中創建。 – kdheepak

回答

1

你有modules.rst以下automodule指令:

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

但動態模塊的合格的名稱是modules.Module1modules.Module2(這些名稱添加到sys.modules在_factory.py)。

對我來說,以下工作:

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

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

感謝您的回答!這解決了它!那麼問題出現在'sphinx-apidoc'中了嗎?因爲我用它來生成'modules.rst'文件。 – kdheepak

+0

是的,我認爲是。 sphinx-apidoc尋找「正常」模塊,並且不夠聰明,推斷出有動態創建的模塊。 – mzjn

相關問題