Sphinx.ext.autodocModuleDocumenter()的配置和扩展
Sphinx是一个基于Python的文档生成工具,可以用来自动生成API文档、教程、用户手册等。其中有一个扩展模块Sphinx.ext.autodoc可以自动地从Python源代码中提取API文档,并将其添加到生成的文档中。
autodoc模块提供了ModuleDocumenter类,用于自动提取模块的文档信息。在sphinx.ext.autodoc模块中,可以使用autodoc_default_options配置项来配置模块文档生成的默认选项。以下是一些常用的配置项:
- members: 默认为True,表示提取模块的成员。
- imported-members: 默认为True,表示导入的成员也会被提取。
- private-members: 默认为False,表示只提取公共成员,可以通过设置为True来提取私有成员。
- special-members: 默认为True,表示提取特殊成员,比如以双下划线开头和结束的成员。
- undoc-members: 默认为False,表示只提取有文档字符串的成员。
除了配置项,还可以使用autodoc模块提供的装饰器来修饰函数、类、方法等,以指定其在生成文档时的显示方式。常用的装饰器有:
- .. deprecated:: message: 标记函数、类、方法等为废弃的,message是一条说明废弃原因的字符串。
- .. versionadded:: version: 标记函数、类、方法等为在指定版本中新增的,version是新增的版本号。
- .. versionchanged:: version: 标记函数、类、方法等在指定版本中发生变化,version是发生变化的版本号。
- .. seealso:: reference: 标记函数、类、方法等与其他相关内容的链接,reference是其他文档的链接。
以下是一个使用Sphinx.ext.autodoc.ModuleDocumenter的例子:
# mymodule.py
"""
This is a module example.
"""
def func():
"""
This is a function example.
"""
pass
class MyClass:
"""
This is a class example.
"""
def __init__(self):
"""
This is the constructor of MyClass.
"""
pass
def method(self):
"""
This is a method example.
"""
pass
# conf.py
extensions = ['sphinx.ext.autodoc']
autodoc_default_options = {
'members': True,
'undoc-members': True,
}
# index.rst
.. automodule:: mymodule
:members:
:undoc-members:
以上代码中,mymodule.py是要生成文档的Python源文件,conf.py是Sphinx的配置文件,index.rst是Sphinx的源文件。在index.rst中,使用.. automodule:: directive来自动生成mymodule模块的文档,使用:members:和:undoc-members:选项来指定需要提取的成员及其文档。如果不指定这两个选项,则只会提取模块的文档。
生成文档的命令是sphinx-build -b html sourcedir builddir,其中sourcedir是存放源文件的目录,builddir是存放生成文件的目录。运行这个命令后,会生成一个HTML格式的文档文件。
可以通过sphinx.ext.autodoc.Config.auto_add_templates()方法来自动添加模块文档的其他模版。
以上就是Sphinx.ext.autodoc.ModuleDocumenter的配置和扩展的使用例子,希望对你有帮助。
