开发者工作流程

开发者工作流程#

从文档字符串生成API参考文档#

如果你正在使用Jupyter Book来编写包文档,使用Sphinx autodoc扩展可以自动生成API参考文档,从而节省时间。为此,首先需要在_config.yaml中添加autodoc扩展:

sphinx:
  extra_extensions:
  - 'sphinx.ext.autodoc'

然后,你可以选择使用MyST eval_rst指令,或者为API参考页创建一个单独的.rst文件。这个文件可以命名为任何名称(例如api.rst),只要它在_toc.yml中被引用,并且内容应类似于:

API Reference
=============

.. automodule:: my_project.my_module
    :members:

下次构建你的书籍时,autodoc将从该模块中提取所有文档字符串,并为所有这些字符串创建一个单独的文档页面。如果你想获得更多控制权并在右侧边栏中显示目录,可以逐个添加标题和函数:

API Reference
=============

Func one
--------
.. autofunction:: my_project.my_module.func_one

Func two
--------
.. autofunction:: my_project.my_module.func_two

如果你的文档字符串遵循NumPy或Google的约定,可以添加Napoleon扩展来正确解析和渲染它们。另一个有用的扩展可以为每个函数插入源代码链接,并且可以选择将函数名称缩短为仅基名:

sphinx:
  extra_extensions:
  - 'sphinx.ext.autodoc'
  - 'sphinx.ext.napoleon'
  - 'sphinx.ext.viewcode'
  config:
    add_module_names: False

如果你的项目结构更为复杂,并希望递归提取所有子模块及其函数的文档字符串,可以使用Autosummary扩展,并结合recursive:选项(自Sphinx 3.1起):

sphinx:
  extra_extensions:
  - 'sphinx.ext.autodoc'
  - 'sphinx.ext.autosummary'
  config:
    autosummary_generate: True

你的api.rst文件现在应如下所示:

API documentation
=================

.. autosummary::
   :toctree: _autosummary
   :recursive:

   my_module

要从摘要页面插入可点击的链接指向每个函数的文档字符串,目前需要修改默认模板,并且默认情况下,链接至少在Sphinx 4之前不会启用。另一种递归生成可点击函数链接的选项是AutoAPI扩展,它可以通过pip安装,并且相对于上述方法需要较少的定制。