如何从 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 配置文件。