所以我正在尝试修复现有项目中的警告,其中包含
license.rst
:
License
=======
.. include:: ../LICENSE.txt
其中
LICENSE.txt
具有以下结构:
Copyright ...
... provided that the following conditions are met:
* Foo
bar.
* Baz
bee.
* Bop
bow.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ...
这会导致错误
../LICENSE.txt:7: ERROR: Unexpected indentation.
(指的是 * FOO
线)。这是因为 include
中的 license.rst
指令将解析 LICENSE.txt
,就好像它是 .rst
文件一样(根据我的理解)。
我可以在
:literal:
中添加 :code:
或 license.rst
来修复错误:
License
=======
.. include:: ../LICENSE.txt
:literal:
但这极大地改变了生成网站的外观,我必须征求客户的批准,这有点令人头疼。
我已经使用
suppress_warnings = ["etoc.toctree"]
来抑制警告,但是 Unexpected indentation
没有说明它属于哪种警告类型。
我尝试使用
suppress_warnings = ["etoc.toctree", "Unexpected indentation", "Unexpected indentation.", "ERROR: Unexpected indentation", "ERROR: Unexpected indentation."]
,但是代码库中提到的suppress_warnings似乎并不表明可以使用suppress_warnings
。
我发现这个 Sphinx GitHub 问题评论要求相同的功能,但该评论是在 2020 年留下的,所以我很好奇是否进行了更改,现在使其成为可能。
那么,有没有一种方法可以抑制此警告,或者只是抑制此特定文件中的所有警告?谢谢。
我不知道Sphinx警告系统。然而,此错误消息来自 Docutils rST 解析器。 Docutils 允许通过“docutils.conf”配置文件中的“report-level”配置设置来配置报告级别。
“错误”意味着
一个需要解决的重大问题。如果忽略,输出可能包含不可预测的错误。
— https://docutils.sourceforge.io/docs/peps/pep-0258.html#error-handling
解决方法是通过导入和打印 文件作为“原始”输入或通过编辑它以成为有效的 reStructuredText(即在列表周围添加空行)。
如果这是不可能的,并且您确定许可证文本的输出是正确的并且文件中没有其他错误或警告级别的问题,您可以尝试使用
[general]
report_level: 2
在项目根目录下的文件
docutils.conf
中。
不幸的是,没有细粒度的报告级别系统,因此这将永久禁用 2 级以上(严重)的所有 Docutils 消息,并在不被注意的情况下放过未来的问题。