如何从 automodapi 输出中排除导入?
How to exclude imports from automodapi output?
我正在尝试使用 automodapi 为我的 Django 项目生成文档。当我这样调用 automodapi 时:
.. automodapi:: mypackage.mymodule
输出包括所有导入的 classes 和函数,例如 Django 模型 class,在函数和 类 的索引中。我想排除导入,只列出那些在我指定的模块中声明的 classes 和函数。
我在文档中看不到任何相关信息。
有没有办法做到这一点,最好不修改模块?
更新:@saimn 使用 __all__
提供了一个可行的解决方案,但我的项目没有使用 __all__
。如果有一个不涉及修改模块的解决方案就好了。
您可以使用 __all__
变量(这可能应该在文档中更清楚地说明)。
修补 automodapi
以仅包含本地人也解决了这个问题,同时不需要对您的代码进行任何更改:
def patch_automodapi(app):
"""Monkey-patch the automodapi extension to exclude imported members"""
from sphinx_automodapi import automodsumm
from sphinx_automodapi.utils import find_mod_objs
automodsumm.find_mod_objs = lambda *args: find_mod_objs(args[0], onlylocals=True)
def setup(app):
app.connect("builder-inited", patch_automodapi)
来源:https://github.com/astropy/sphinx-automodapi/issues/119
以上代码片段进入您的 conf.py
sphinx 配置文件。
我正在尝试使用 automodapi 为我的 Django 项目生成文档。当我这样调用 automodapi 时:
.. automodapi:: mypackage.mymodule
输出包括所有导入的 classes 和函数,例如 Django 模型 class,在函数和 类 的索引中。我想排除导入,只列出那些在我指定的模块中声明的 classes 和函数。
我在文档中看不到任何相关信息。
有没有办法做到这一点,最好不修改模块?
更新:@saimn 使用 __all__
提供了一个可行的解决方案,但我的项目没有使用 __all__
。如果有一个不涉及修改模块的解决方案就好了。
您可以使用 __all__
变量(这可能应该在文档中更清楚地说明)。
修补 automodapi
以仅包含本地人也解决了这个问题,同时不需要对您的代码进行任何更改:
def patch_automodapi(app):
"""Monkey-patch the automodapi extension to exclude imported members"""
from sphinx_automodapi import automodsumm
from sphinx_automodapi.utils import find_mod_objs
automodsumm.find_mod_objs = lambda *args: find_mod_objs(args[0], onlylocals=True)
def setup(app):
app.connect("builder-inited", patch_automodapi)
来源:https://github.com/astropy/sphinx-automodapi/issues/119
以上代码片段进入您的 conf.py
sphinx 配置文件。