Sphinx扩展,用于在每个构建时运行'sphinx-apidoc'
项目描述
一个Sphinx扩展,用于在每个构建时运行sphinx-apidoc。
概述
sphinx-apidoc是一个工具,用于自动生成Sphinx源文件,使用autodoc扩展,以其他自动API文档工具的风格记录整个包。实际上sphinx-apidoc并不构建文档,而是简单地生成它。因此,它必须在sphinx-build之前运行。这通常会导致以下tox.ini
文件
[testenv:docs]
commands =
sphinx-apidoc -o doc/api my_code my_code/tests
sphinx-build -W -b html doc doc/_build/html
此扩展消除了需要在Sphinx外部保持该配置的需要。相反,此功能可以通过您的文档的conf.py
文件启用和配置,如下所示
extensions = [
'sphinxcontrib.apidoc',
# ...
]
apidoc_module_dir = '../my_code'
apidoc_output_dir = 'reference'
apidoc_excluded_paths = ['tests']
apidoc_separate_modules = True
配置
apidoc扩展使用以下配置值
- apidoc_module_dir
要记录的模块的路径。这必须是Python包的路径。此路径可以是相对于文档源目录的相对路径或绝对路径。
必需
- apidoc_output_dir
输出目录。如果它不存在,则创建。此路径相对于文档源目录。
可选,默认为
api
。- apidoc_template_dir
包含用户定义模板的目录。该目录下与默认apidoc模板(module.rst_t、package.rst_t、toc.rst_t)匹配的模板文件将覆盖它们。默认模板位于site-packages/sphinx/templates/apidoc/。此路径是相对于文档源目录的。
可选,默认为'templates'。
- apidoc_excluded_paths
一个可选的排除模块列表。这些应该是相对于apidoc_module_dir的路径。支持fnmatch样式通配符。
可选,默认为[]。
- apidoc_separate_modules
将每个模块的文档放置在单独的页面上。否则,每个(子)包将有一个页面。
可选,默认为False。
- apidoc_toc_file
内容表文件的文件名。默认为modules。如果设置为False,则apidoc不会创建内容表文件。
可选,默认为None。
- apidoc_module_first
当设置为True时,将模块文档放在子模块文档之前。
可选,默认为False。
- apidoc_extra_args
传递给sphinx-apidoc的额外参数。这些参数放置在标志之后和模块名称之前。
可选,默认为[]。
从pbr迁移
pbr历史上包含了一个自定义的build_sphinx distutils命令变体。这提供了一些功能,包括在构建过程中生成API文档。显然,这个扩展不需要这些功能。
pbr中API文档功能有两个实现:autodoc_tree和autodoc。为了描述它们之间的差异,让我们探索如何使用这两个功能迁移实际项目。您的项目可能使用一个或两个:autodoc_tree使用autodoc_tree_index_modules设置启用,而autodoc使用autodoc_index_modules设置启用,这两个设置都位于setup.cfg的[pbr]部分。
autodoc_tree
由于autodoc_tree基于sphinx-apidoc,迁移很简单。以python-openstackclient为例,查看最小版本的setup.cfg和doc/source/conf.py
[build_sphinx]
all_files = 1
build-dir = doc/build
source-dir = doc/source
[pbr]
autodoc_tree_index_modules = True
autodoc_tree_excludes =
setup.py
openstackclient/volume/v3
openstackclient/tests/
openstackclient/tests/*
api_doc_dir = contributor/api
extensions = ['']
迁移后,它将看起来像这样
[build_sphinx]
all_files = 1
build-dir = doc/build
source-dir = doc/source
extensions = ['sphinxcontrib.apidoc']
apidoc_module_dir = '../../openstack'
apidoc_excluded_paths = [
'volume',
'tests'
]
apidoc_output_dir = 'contributor/api'
这里有一些改动
在conf.py中配置apidoc_module_dir
使用autodoc_tree功能,API文档总是为包含setup.cfg的目录生成,通常是顶级目录。使用此扩展时,您必须显式指定要为其生成文档的目录,使用apidoc_module_dir设置。您应该配置此设置以指向实际的包而不是顶级目录,这意味着您不需要担心跳过不相关的文件,如setup.py。
在conf.py中配置apidoc_excluded_paths
在 conf.py 中的 apidoc_excluded_paths 设置与在 setup.cfg 中的 [pbr] autodoc_tree_excludes 设置的工作方式完全相同;也就是说,它是一个描述相对于源目录要排除的文件和目录的 fnmatch 风格的路径列表。这意味着您可以使用 [pbr] autodoc_tree_excludes 设置中的值,尽管如果您已将 apidoc_module_dir 配置为指向顶级目录以外的其他目录,可能需要更新这些值。
在 conf.py 中配置 apidoc_output_dir
在 conf.py 中的 apidoc_output_dir 设置与在 setup.cfg 中的 [pbr] api_doc_dir 设置的工作方式完全相同;也就是说,它是一个相对于文档源目录的路径,所有 API 文档都应该写入该路径。您可以直接复制 [pbr] api_doc_dir 设置中的值。
从 setup.cfg 中删除设置
从 setup.cfg 文件的 [pbr] 部分删除以下设置
autodoc_tree_index_modules
autodoc_tree_excludes
api_doc_dir
如果您希望使用 sphinx-build 来构建文档,还可能需要删除整个 [build_sphinx] 部分。
完成这些操作后,您的输出应该与之前完全一样。
autodoc
autodoc 不是基于 sphinx-apidoc。幸运的是,可以生成非常类似(虽然不是完全相同!)的内容。以 oslo.privsep 为例,再次查看 setup.cfg 和 doc/source/conf.py 的最小版本。
[build_sphinx]
all_files = 1
build-dir = doc/build
source-dir = doc/source
[pbr]
autodoc_index_modules = True
api_doc_dir = reference/api
autodoc_exclude_modules =
oslo_privsep.tests.*
oslo_privsep._*
extensions = ['']
迁移后,它将看起来像这样
[build_sphinx]
all_files = 1
build-dir = doc/build
source-dir = doc/source
extensions = ['sphinxcontrib.apidoc']
apidoc_module_dir = '../../oslo_privsep'
apidoc_excluded_paths = ['tests', '_*']
apidoc_output_dir = 'reference/api'
apidoc_separate_modules = True
所需的大部分更改与 autodoc_tree 相同,有一些例外。
在conf.py中配置apidoc_module_dir
使用 autodoc 功能时,API 文档始终为 setup.cfg 所在的目录生成,这通常是顶级目录。使用此扩展时,必须使用 apidoc_module_dir 设置显式指定要为哪个目录生成文档。应将此配置为指向您的实际包而不是顶级目录,因为这意味着您不必担心跳过诸如 setup.py 这样的无关文件。
在conf.py中配置apidoc_excluded_paths
在 conf.py 中的 apidoc_excluded_paths 设置与在 setup.cfg 中的 [pbr] autodoc_exclude_modules 设置不同,前者是 fnmatch 风格的 文件路径 列表,而后者是 fnmatch 风格的 模块路径 列表。因此,您可以重用 [pbr] autodoc_exclude_modules 设置中的大多数值,但您必须从 x.y 格式切换到 x/y 格式。如果您已将 apidoc_module_dir 配置为指向顶级目录以外的其他目录,可能还需要更新这些路径。
在 conf.py 中配置 apidoc_output_dir
在 conf.py 中的 apidoc_output_dir 设置与在 setup.cfg 中的 [pbr] api_doc_dir 设置的工作方式完全相同;也就是说,它是一个相对于文档源目录的路径,所有 API 文档都应该写入该路径。您可以直接复制 [pbr] api_doc_dir 设置中的值。
在 conf.py 中配置 apidoc_separate_modules=True
默认情况下,sphinx-apidoc 为每个包生成一个文档,而 autodoc 为每个(子)模块生成一个文档。通过将此属性设置为 True,我们确保使用后者行为。
将 autoindex.rst 的引用替换为 modules.rst
自动文档(autodoc)功能在输出目录中生成一个名为 autoindex.rst 的文件中的模块列表。相比之下,sphinx-apidoc 和此扩展将此文件称为 modules.rst。您必须将所有对 autoindex.rst 的引用更新为 modules.rst。您还可能希望配置任何包含此文档的 toctree 的 depth 选项,因为 modules.rst 是嵌套的。
从 setup.cfg 中删除设置
从 setup.cfg 文件的 [pbr] 部分删除以下设置
autodoc_index_modules
autodoc_exclude_modules
api_doc_dir
如果您希望使用 sphinx-build 来构建文档,还可能需要删除整个 [build_sphinx] 部分。
完成后,您的输出应类似于之前。主要变化将在上面提到的 modules.rst 中,它使用嵌套布局,与 autoindex.rst 文件的平面布局相比。
链接
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
sphinxcontrib-apidoc-0.5.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 65efcd92212a5f823715fb95ee098b458a6bb09a5ee617d9ed3dead97177cd55 |
|
MD5 | 659a1364b99ad854f1837bf788921f2f |
|
BLAKE2b-256 | 528ca4fe93b51a1026c217731337cfe50569b8521d3e254dd451126bed208cd8 |
sphinxcontrib_apidoc-0.5.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c671d644d6dc468be91b813dcddf74d87893bff74fe8f1b8b01b69408f0fb776 |
|
MD5 | 6c2742a4a0233d8620dc30036faebaa3 |
|
BLAKE2b-256 | 1c35453ba8b0f407b9b86520eba5122fe28e87230266cfae9524a623b524485e |