如何从 Sphinx autodoc 中排除 pytest test_* 函数?

Shu*_*kar 5 python pytest python-sphinx autodoc

我的package.

package/
|--mod1.py
|--mod2.py
Run Code Online (Sandbox Code Playgroud)

每个模块包含一些functions和一个test_function用于测试该模块的。

我用来为每个insphinx-apidoc生成文件。我的问题是,当我为包生成文档时,这些函数也包含在文档中。我知道可以使用以下方式跳过函数:。但我正在寻找一种解决方案,允许我使用类似于 的模式对所有模块执行此操作。.rstmodulepackagetest:exclude members: functiontest_*

我的package.rst文件如下所示:

package package
===============

Submodules
----------

.. toctree::

   package.mod1
   package.mod2

Module contents
---------------

.. automodule:: package
    :members:
    :undoc-members:
    :show-inheritance:
Run Code Online (Sandbox Code Playgroud)

我的mod1.rst文件如下所示:

package.mod1 module
===================

.. automodule:: package.mod1
    :members:
    :undoc-members:
    :show-inheritance:
Run Code Online (Sandbox Code Playgroud)

提前致谢。

Rig*_*leg 10

虽然 @mzjn 的评论绝对是一个很好的指导,但我仍然为此苦苦挣扎了一段时间。

解决方案是在文件中编写该autodoc-skip-member事件的处理程序并将其连接到该autodoc-skip-member事件conf.py

后者如下所示:

# conf.py

# Loads of configuration settings

# This is the expected signature of the handler for this event, cf doc
def autodoc_skip_member_handler(app, what, name, obj, skip, options):
    # Basic approach; you might want a regex instead
    return name.startswith("test_")

# Automatically called by sphinx at startup
def setup(app):
    # Connect the autodoc-skip-member event from apidoc to the callback
    app.connect('autodoc-skip-member', autodoc_skip_member_handler)
Run Code Online (Sandbox Code Playgroud)