Prhub

#39024 Add structure to `requirements/` directory

原始 PR 作者 hmellor 合并时间 2026-04-11 04:46 文件变更 40 提交数 15 评论 15 代码增减 +354 / -331

执行摘要

重构 requirements 目录结构,将构建和测试需求文件移至子目录以提升管理一致性。

根据 PR body 描述,当前构建和测试需求文件与用户需求混同在 requirements/ 目录下,导致噪音和一致性不足。移动这些文件可以“减少噪音并提高跨设备依赖管理的一致性”。

该 PR 值得快速浏览以了解依赖管理的最佳实践,但无需深入代码细节。关注点包括:

  • 学习如何通过子目录结构化依赖文件来提升项目整洁度。
  • 参考 .pre-commit-config.yaml 中统一设备处理的设计,特别是新增的 XPU 钩子如何标准化流程。
讨论亮点

review 中讨论较少,主要聚焦于合并冲突和测试失败的处理:

  • gemini-code-assist[bot] 总结了变更内容,指出“没有反馈可提供”。
  • jikunshang 评论提到“Intel CI is breaking due to known issue”,但认为可忽略并推进,表明团队认可此 PR 的变更与测试失败无关。
  • hmellor 在 issue 评论中强调“Since this PR just moves requirements files around all failures should be unrelated”,支持了变更的低风险性。
    无重大争议或未解决疑虑,变更获得批准。

实现拆解

  1. 移动测试需求文件:将所有测试专用文件(如 rocm-test.inxpu-test.in)重命名并移动到 requirements/test/ 子目录,例如 requirements/test/rocm.in,同时更新文件内容中的相对路径引用(如将 -r common.txt 改为 -r ../common.txt)。
  2. 移动构建需求文件:类似地将构建专用文件移至 requirements/build/ 子目录,但上下文未提供具体文件列表,推测涉及类似的重构。
  3. 更新配置和工具脚本:在多个配置文件中同步更新路径引用,包括:
    • .pre-commit-config.yaml:修改 pip-compile 钩子的 argsfiles 模式,以指向新路径,并为 XPU 添加新的钩子以统一处理。
    • docs/mkdocs/hooks/generate_argparse.py:将读取版本信息的文件从 requirements/test.txt 改为 requirements/test/cuda.txt
    • tools/generate_cmake_presets.py:更新注释中的引用,从 requirements/build.txt 改为 requirements/build/cuda.txt
    • Dockerfiles(如 docker/Dockerfile)和测试脚本(如 tools/pre_commit/generate_nightly_torch_test.py):调整安装或检查命令中的文件路径。
  4. 测试和部署配套:更新了测试脚本(如 tests/standalone_tests/pytorch_nightly_dependency.sh)和 Docker 镜像构建文件,确保 CI/CD 流程能正确找到新位置的需求文件。
文件 模块 状态 重要度
.pre-commit-config.yaml 预提交钩子 modified 4.74
docs/mkdocs/hooks/generate_argparse.py 文档生成 modified 4.32
tools/generate_cmake_presets.py 构建工具 modified 4.32
requirements/test/rocm.txt 依赖管理 renamed 4.46
docker/Dockerfile 容器构建 modified 3.57

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

评论区精华

测试失败与 PR 无关性确认 question

jikunshang 提到 Intel CI 因已知问题失败,但认为可忽略;hmellor 强调 PR 仅移动文件,所有失败应无关。

结论:团队一致认为测试失败非由此 PR 引起,支持推进合并。 · 已解决

变更总结与批准 other

gemini-code-assist[bot] 总结了重组需求文件的变更,指出无反馈;DarkLight1337 和 jikunshang 给予批准。

结论:变更被认可为低风险改进,获得快速批准。 · 已解决

风险与影响

技术风险较低,但需注意:

  • 路径变更风险:如果任何配置文件或脚本遗漏更新,可能导致构建失败或依赖解析错误,例如在 .pre-commit-config.yaml 中,files 模式未正确匹配新路径可能使钩子失效。
  • 兼容性风险:对 Docker 镜像和 CI 流程的修改可能影响现有部署,但 PR 已同步更新所有相关文件,风险可控。
  • 回归风险:由于文件移动,开发者本地环境若缓存旧路径可能需手动调整,但无核心逻辑变更。

影响范围主要限于内部开发和 CI 流程:

  • 对用户:无直接影响,因不涉及 API 或功能变更。
  • 对系统:依赖管理更清晰,长期可维护性提升,但短期内需团队适应新目录结构。
  • 对团队:简化了 requirements 目录的杂乱,使构建和测试依赖更易于管理,尤其利于多设备(如 CUDA、ROCm、XPU)环境的一致性。
路径变更风险 配置遗漏风险

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论