Sphinx 的发布过程¶
版本管理¶
Sphinx遵循 PEP 440 版本规范,采用 major.minor.micro
方案用于 发布部分 (例如 1.2.3).主要版本、次要版本和微版本部分应按以下方式进行更改:
主要版本部分应在不兼容的行为变化和公共API更新时进行递增.
Sphinx的大多数版本更新中,次版本号应递增,以保持API和功能的向后兼容性.
微版本部分仅应在紧急的仅修复错误的版本中递增.
当主版本部分递增时,次版本和微版本部分必须设置为 0
.当次版本部分递增时,微版本部分必须设置为 0
.
新主要版本在最终发布之前应该经过一个beta测试阶段.
不推荐使用某个特性¶
有几个原因导致Sphinx中的代码可能被弃用:
如果某个功能已经以不兼容的方式进行了改进或修改,则旧功能或行为将被弃用.
有时候,Sphinx会包含一个不在当前支持的Python版本中的库的回溯版本.当Sphinx不再需要支持该旧版本的Python(该版本不包含该库)时,该库将在Sphinx中被弃用.
如 :ref :deprecation-policy 所述,Sphinx 首次发布弃用某个特性的版本 ( A.B
) 时,当调用该弃用特性时,应引发 RemovedInSphinxXXWarning
(其中 XX
是该特性将在其被移除的 Sphinx 版本).假设我们有良好的测试覆盖率,当启用警告时,这些警告在运行测试套件时会被转换为错误:
pytest -Wall
因此,在添加 RemovedInSphinxXXWarning
时,需要消除或静默运行测试时产生的任何警告.
弃用政策¶
主要和次要版本可能会弃用以前版本中的某些功能.如果在版本 A.x 中弃用某个功能,它将在所有 A.x.x 版本中继续工作(对于所有 x 的版本).它将在所有 B.x.x 版本中继续工作,但会发出弃用警告.弃用的功能将在 C.0.0 中被移除.这意味着弃用的功能至少将在 2 个主要版本期间有效.
所以,例如,如果我们决定从 Sphinx 2.x 开始不推荐使用某个函数:
Sphinx 2.x 将包含一个向后兼容的函数副本,该函数将引发
RemovedInSphinx40Warning
.这是PendingDeprecationWarning
的一个子类,即默认情况下不会显示.Sphinx 3.x 仍将包含向后兼容的副本,但
RemovedInSphinx40Warning
将成为DeprecationWarning
的一个子类,并默认显示.Sphinx 4.0 将彻底移除此功能.
弃用警告¶
Sphinx将默认启用其 RemovedInNextVersionWarning
警告,前提是未设置:envvar:python:PYTHONWARNINGS .因此,您可以通过以下方式禁用它们:
PYTHONWARNINGS= make html
(Linux/Mac)export PYTHONWARNINGS=
and domake html
(Linux/Mac)设置
PYTHONWARNINGS=
并执行make html
(Windows)
但是您也可以显式启用待处理的警告,例如使用 PYTHONWARNINGS=default
(有关详细信息,请参见 Python 文档中的配置警告 ).
Python 版本支持政策¶
Sphinx支持过去3年内发布的所有小版本的Python,最少支持3个小版本.该政策源自 SPEC 0 ,这是一个科学Python领域标准.
例如,2025年5月发布的Sphinx版本将支持Python 3.11、3.12和3.13.
这是当前政策的汇总表:
日期 |
Python |
---|---|
05 10 2023 |
3.10+ |
04 10月 2024 |
3.11+ |
24 十月 2025 |
3.12+ |
01 2026年10月 |
3.13+ |
01 2027年10月 |
3.14+ |
发布流程¶
发布程序列在 utils/release-checklist.rst
.