Prhub

#22385 Fix get_version_tag.py to handle dot-separated post versions

原始 PR 作者 Fridge003 合并时间 2026-04-09 06:18 文件变更 1 提交数 1 评论 1 代码增减 +2 / -2

执行摘要

修复版本标签解析正则表达式,支持 PEP 440 带点号的 post-release 格式。

根据PR body描述,版本标签如v0.5.10.post1之前无法被正则表达式识别,导致被排序为(0, 0, 0, 0, 0)而成为最低版本,而非预期的最高版本。这影响了版本标签的正确排序,需要修复以支持PEP 440规范的post-release格式。

该PR变更简单明确,无需深入精读。值得关注的是对PEP 440版本规范的支持完善,以及正则表达式设计中对可选点号的处理方式。

讨论亮点

无review评论或讨论,PR由作者直接合并。

实现拆解

仅修改了python/tools/get_version_tag.py文件中的parse_version_tuple函数。关键改动是将正则表达式从r"^(\d+)\.(\d+)\.(\d+)(?:(rc|post)(\d+))?$"改为r"^(\d+)\.(\d+)\.(\d+)(?:\.?(rc|post)(\d+))?$",即在(rc|post)前添加了\.?(可选点号),以匹配v0.5.10.post1这样的格式。

文件 模块 状态 重要度
python/tools/get_version_tag.py tools modified 5.0

关键符号

parse_version_tuple

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险较低:

  1. 变更范围极小(仅2行修改),逻辑简单直接。
  2. 正则表达式修改仅扩展了匹配模式,不影响原有匹配逻辑。
  3. 但需注意正则表达式可能匹配到非预期格式(如v0.5.10..post1),不过PEP 440规范中post-release本身允许点号,且\.?为可选,风险可控。

影响范围有限:

  1. 仅影响使用get_version_tag.py工具进行版本标签解析和排序的场景。
  2. 修复后能正确支持PEP 440 post-release标签,提升版本管理的准确性。
  3. 对用户和系统其他模块无直接影响,属于工具链内部修复。
正则表达式扩展

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论