跳转到主要内容

Sphinx扩展,用于在每个构建时运行'sphinx-apidoc'

项目描述

Build Status

一个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_tpackage.rst_ttoc.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_treeautodoc。为了描述它们之间的差异,让我们探索如何使用这两个功能迁移实际项目。您的项目可能使用一个或两个:autodoc_tree使用autodoc_tree_index_modules设置启用,而autodoc使用autodoc_index_modules设置启用,这两个设置都位于setup.cfg[pbr]部分。

autodoc_tree

由于autodoc_tree基于sphinx-apidoc,迁移很简单。以python-openstackclient为例,查看最小版本的setup.cfgdoc/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'

这里有一些改动

  1. conf.py中配置apidoc_module_dir

    使用autodoc_tree功能,API文档总是为包含setup.cfg的目录生成,通常是顶级目录。使用此扩展时,您必须显式指定要为其生成文档的目录,使用apidoc_module_dir设置。您应该配置此设置以指向实际的包而不是顶级目录,这意味着您不需要担心跳过不相关的文件,如setup.py

  2. conf.py中配置apidoc_excluded_paths

    conf.py 中的 apidoc_excluded_paths 设置与在 setup.cfg 中的 [pbr] autodoc_tree_excludes 设置的工作方式完全相同;也就是说,它是一个描述相对于源目录要排除的文件和目录的 fnmatch 风格的路径列表。这意味着您可以使用 [pbr] autodoc_tree_excludes 设置中的值,尽管如果您已将 apidoc_module_dir 配置为指向顶级目录以外的其他目录,可能需要更新这些值。

  3. conf.py 中配置 apidoc_output_dir

    conf.py 中的 apidoc_output_dir 设置与在 setup.cfg 中的 [pbr] api_doc_dir 设置的工作方式完全相同;也就是说,它是一个相对于文档源目录的路径,所有 API 文档都应该写入该路径。您可以直接复制 [pbr] api_doc_dir 设置中的值。

  4. 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.cfgdoc/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 相同,有一些例外。

  1. conf.py中配置apidoc_module_dir

    使用 autodoc 功能时,API 文档始终为 setup.cfg 所在的目录生成,这通常是顶级目录。使用此扩展时,必须使用 apidoc_module_dir 设置显式指定要为哪个目录生成文档。应将此配置为指向您的实际包而不是顶级目录,因为这意味着您不必担心跳过诸如 setup.py 这样的无关文件。

  2. 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 配置为指向顶级目录以外的其他目录,可能还需要更新这些路径。

  3. conf.py 中配置 apidoc_output_dir

    conf.py 中的 apidoc_output_dir 设置与在 setup.cfg 中的 [pbr] api_doc_dir 设置的工作方式完全相同;也就是说,它是一个相对于文档源目录的路径,所有 API 文档都应该写入该路径。您可以直接复制 [pbr] api_doc_dir 设置中的值。

  4. conf.py 中配置 apidoc_separate_modules=True

    默认情况下,sphinx-apidoc 为每个包生成一个文档,而 autodoc 为每个(子)模块生成一个文档。通过将此属性设置为 True,我们确保使用后者行为。

  5. autoindex.rst 的引用替换为 modules.rst

    自动文档(autodoc)功能在输出目录中生成一个名为 autoindex.rst 的文件中的模块列表。相比之下,sphinx-apidoc 和此扩展将此文件称为 modules.rst。您必须将所有对 autoindex.rst 的引用更新为 modules.rst。您还可能希望配置任何包含此文档的 toctreedepth 选项,因为 modules.rst 是嵌套的。

  6. 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 (16.1 kB 查看哈希)

上传时间

构建分布

sphinxcontrib_apidoc-0.5.0-py3-none-any.whl (8.6 kB 查看哈希)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面