Sphinx autosummary:数据类继承



以下代码使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_allhttps://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版新增。

相关内容

  • 没有找到相关文章

最新更新