以下代码使Sphinx自动摘要失败:
@dataclasses.dataclass
class Foo:
bar: int
class FooChild(Foo):
pass
我的自动摘要模板(_templates/autosummary/class.rst
(:
{{ name | escape | underline}}
.. currentmodule:: {{ module }}
.. autoclass:: {{ objname }}
:members:
{% block attributes %}
{% if attributes %}
.. rubric:: {{ _('Attributes') }}
.. autosummary::
{% for item in attributes %}
~{{ name }}.{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
当运行sphinx-build -j 2 -W -b html docs docs/gh-pages
时,我收到以下警告:
Warning, treated as error:
~/path/docs/generated/module.FooChild.rst:14:autosummary:
failed to import FooChild.bar.
我需要将警告视为错误,因为否则我的项目中的文档会很快降级,但我想要么解决这个问题的根本原因,要么忽略这个特定的警告。
我找不到任何方法可以忽略源代码注释中的警告,也无法选择性地抑制Sphinx配置中的警告。请帮忙!
编辑:以下是生成的FooChild.rst
文件的样子:
FooChild
========
.. currentmodule:: package.module
.. autoclass:: FooChild
:members:
.. rubric:: Attributes
.. autosummary::
~FooChild.bar
我有一个conf.py
,它将api.rst
添加到toctree中,api.rst
被设计为触发自动摘要,为所有模块和类创建文档,在本例中仅为module.py
。
API Overview
************
.. currentmodule:: package
.. autosummary::
:toctree: generated
:recursive:
module
虽然它没有解决根本原因,但您要求找到一种方法来忽略此警告:
您可以将__all__
添加到模块中,但不包括FooChild
。这样,它将被自动摘要忽略。
来自文件autosummary_ignore_module_all
https://www.sphinx-doc.org/en/master/usage/extensions/autosummary.html:
如果为False并且模块设置了
__all__
属性,则自动汇总__all__
中列出的每个成员,而不汇总其他成员。默认值为True
请注意,如果
__all__
中列出了导入的成员,则无论autosummary_imported_members的值如何,都会对其进行记录。要匹配from module import*的行为,请将autosummary_ignore_module_all设置为False,将autosummary_imported_members设置为True。
4.4版新增。