Prhub

#32354 Fix PyPI release: drop the git-only sgl-eval dep from packaged metadata

原始 PR 作者 Kangyan-Zhou 合并时间 2026-07-25 08:00 文件变更 2 提交数 1 评论 2 代码增减 +14 / -5

执行摘要

修复 PyPI 发布失败,移除 git-only 依赖

v0.5.16 的 PyPI 发布因 wheel 元数据中包含 git direct URL 依赖(sgl-eval)而被 PyPI 拒绝,导致发布失败。

值得快速合并,已修复关键发布阻塞问题。可关注后续是否有其他 git-only 依赖需要在发布前检查。

讨论亮点

无 review 讨论。

实现拆解

  1. 移除 pyproject.toml 中的 git-only 依赖:在 python/pyproject.tomltest extra 中删除了 sgl-eval @ git+... 条目,并更新注释说明原因和替代安装路径。
  2. 将依赖移至 CI 安装脚本:在 scripts/ci/cuda/ci_install_dependency.shinstall_extra_deps() 函数中添加了通过 pip 安装 sgl-eval(指定 SHA)的步骤,确保 CI(如夜间 GSM8K 评估)仍能正常安装。
  3. 保持兼容性:在 pyproject.toml 中保留 antlr4-python3-runtime==4.9.3 固定版本,确保当 sgl-eval 通过 CI 脚本安装时环境兼容。
文件 模块 状态 重要度
python/pyproject.toml 项目配置 modified 4.7
scripts/ci/cuda/ci_install_dependency.sh CI 脚本 modified 4.53

关键源码片段

python/pyproject.toml configuration

主元数据文件,移除 sgl-eval 的 git direct URL 依赖,修复 PyPI 发布失败的根本原因。

# python/pyproject.toml - test extra 片段(变更后)
# 4.9.3 is what sgl-eval's math_verify grader needs (latex2sympy2_extended
# raises ImportError on 4.7.x), so a `sglang[test]` environment is already
# compatible when sgl-eval is installed on top of it.
# Do NOT declare sgl-eval itself here: it is git-only, and PyPI rejects any
# uploaded distribution whose metadata carries a direct URL requirement.
# CUDA CI installs it in scripts/ci/cuda/ci_install_dependency.sh.
"antlr4-python3-runtime==4.9.3",
# "sgl-eval @ git+..." 已删除
scripts/ci/cuda/ci_install_dependency.sh infrastructure

CI 安装脚本,新增 sgl-eval 的 pip 安装步骤,确保 CUDA CI 测试仍能正常获取该依赖。

# scripts/ci/cuda/ci_install_dependency.sh 片段(变更后)
install_extra_deps() {
    MOONCAKE_VERSION="0.3.11.post1"
    NIXL_VERSION="1.3.0"
    # sgl-eval is git-only and cannot be declared in python/pyproject.toml (see
    # the note there). The nightly GSM8K eval shells out to the sgl-eval CLI and
    # fails without it. Bumping the SHA can change zero-shot \boxed{} grading, so
    # re-baseline MODEL_SCORE_THRESHOLDS in
    # test/registered/eval/test_text_models_gsm8k_eval.py first.
    SGL_EVAL_REF="b2a2703c42cae379bbcb8b7ff092df6601a61694"
    # ... 其他安装逻辑 ...
    $PIP_CMD install "sgl-eval @ git+https://github.com/sgl-project/sgl-eval.git@${SGL_EVAL_REF}" $PIP_INSTALL_SUFFIX
    # ...
}

评论区精华

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

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

风险与影响

低风险:仅涉及元数据和 CI 脚本调整,不修改任何核心逻辑。风险在于 CI 脚本中 pip 安装可能因网络问题失败,但已有幂等处理。另外,非 CUDA 的 CI 作业(如 pr-test)将不再安装 sgl-eval,但这不影响现有测试(已 mock)。

影响范围:主要影响 PyPI 发布流程(修复阻断问题)和 CUDA CI 中的夜间评估。CPU/AMD/其他平台的 CI 不受影响。用户无需变更。

非核心路径变更 CI 脚本调整可能影响测试环境

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论