Sphinx的释放过程

版本化

Sphinx坚持 PEP 440 版本,带有 major.minor.micro 计划,为 release segment (例如1.2.3)。主要版本、次要版本和微型版本部分应更改如下:

  • 对于不兼容的行为更改和公共API更新,应增加主版本部分。

  • 对于Sphinx的大多数版本,应该增加次要版本部分,其中保留了API和功能的向后兼容性。

  • 微版部分应该只为紧急的错误修复版本增加。

当主要版本部分递增时,次要版本部分和微版本部分必须设置为 0 。当次要版本部分递增时,微版本部分必须设置为 0

新的主要版本应该在最终发布之前有一段测试期。

不建议的功能

Sphinx中的代码可能被否决有以下几个原因:

  • 如果某个功能已以向后不兼容的方式进行了改进或修改,则旧的功能或行为将被弃用。

  • 有时,sphinx会包含一个python库的后端口,该库不包含在sphinx当前支持的python版本中。当sphinx不再需要支持不包含库的旧版本的python时,该库将在sphinx中被弃用。

作为 弃用政策 描述了Sphinx的第一个版本,它否决了一个特性 (A.B )应该提高 RemovedInSphinxXXWarning (何处) XX 调用不推荐使用的功能时,是否删除该功能的sphinx版本。假设我们有良好的测试覆盖率,那么在运行启用了警告的测试套件时,这些警告将转换为错误::

pytest -Wall

因此,在添加 RemovedInSphinxXXWarning 您需要消除或消除运行测试时生成的任何警告。

弃用政策

主要版本和次要版本可能会取消先前版本的某些功能。如果某个功能在A.X版本中被否决,它将继续在所有A.X.X版本中工作(对于X的所有版本)。它将继续在所有B.X.X版本中工作,但会发出拒绝警告。不推荐使用的功能将在C.0.0中删除。这意味着不推荐使用的功能至少在两个主要版本中可用。

例如,如果我们决定开始对sphinx 2.x中的函数进行反预测:

  • sphinx 2.x将包含函数的向后兼容副本,该副本将引发 RemovedInSphinx40Warning . 这是 PendingDeprecationWarning ,即默认不显示。

  • Sphinx3.x仍然包含向后兼容的副本,但是 RemovedInSphinx40Warning 将是 DeprecationWarning 然后,默认显示。

  • Sphinx4.0将彻底删除该功能。

弃用警告

Sphinx 将使其 RemovedInNextVersionWarning 默认情况下,如果 PYTHONWARNINGS 未设置。因此,可以使用以下命令禁用它们:

  • PYTHONWARNINGS= make html (LINUX/MAC)

  • export PYTHONWARNINGS= 并且做 make html (LINUX/MAC)

  • set PYTHONWARNINGS= 并且做 make html (Windows)

但是您也可以显式地使用。 PYTHONWARNINGS=default (见 Python docs on configuring warnings )更多细节。

Python版本支持策略

Sphinx在过去42个月内发布的所有次要版本中都支持至少3个次要版本的Python。本保单源自 NEP 29 ,一种科学的Python域标准。

例如,2024年5月发布的Sphinx版本将支持Python3.10、3.11和3.12。

这是包含当前策略的汇总表:

日期

Python

2021年12月26日

3.8+

2023年4月14日

3.9+

2024年4月5日

3.10+

2025年4月4日

3.11+

放行程序

发布程序在中列出 utils/release-checklist.rst