代码之家  ›  专栏  ›  技术社区  ›  MarkG

如何从automodapi输出中排除导入?

  •  1
  • MarkG  · 技术社区  · 6 年前

    我正在尝试使用 automodapi

    .. automodapi:: mypackage.mymodule
    

    输出包括函数和类索引中所有导入的类和函数,例如Django模型类。我想排除导入,只列出我指定的模块中声明的那些类和函数。

    我在文档中没有看到任何关于这方面的内容。

    有没有办法做到这一点,最好不修改模块?

    __all__ 但我的项目没有使用 __全部__ . 如果有一个解决方案不涉及修改模块,那就太好了。

    2 回复  |  直到 6 年前
        1
  •  1
  •   saimn    6 年前

    您可以使用 __all__ 变量(这可能应该在文档中更清楚地说明)。

        2
  •  1
  •   jmm    3 年前

    修补 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配置文件。