已合并
chore: 精简未使用 Python 依赖(#166) #433
chore: 精简未使用 Python 依赖(#166) #433
已合并
sinat_31531339创建于 7月17日
sinat_31531339
sinat_31531339成员
7月17日

描述

  • 从 requirements.txt 中移除未被项目运行时直接使用的 pytest-cov、ruff、yapf、PyYAML、requests。
  • coverage 已由 scripts/run_tests.sh 通过 python3 -m coverage 直接调用,无需 pytest-cov 插件。
  • ruff 由 pre-commit hook 的隔离环境管理,requirements.txt 中不再重复声明。
  • pandas 和 h5py 暂保留:构建同步出的 msaccucmp 比对能力中存在 CSV/HDF5 解析使用点,直接删除会带来运行时缺依赖风险。

移除依赖的核实证据(可追溯性)

每个被移除依赖均已全局搜索确认在本项目代码(src/scripts/)中无 import 引用,仅测试虚拟环境 .venv_test/ 下的第三方包使用(非项目运行时代码):

依赖 核实结论
PyYAML src/scripts/import yaml / from yaml;仅 .venv_test/ 第三方包(torch 等)使用
requests src/scripts/import requests / from requests;仅 .venv_test/ 第三方包(fsspec、sympy 等)使用
pytest-cov 覆盖率收集在 scripts/run_tests.sh:471python3 -m coverage run --source=... -m pytest,非 pytest --cov;全仓无 pytest --cov 用法,coverage 依赖已保留
ruff 由 pre-commit 隔离环境统一管理(.pre-commit-config.yaml),scripts/incremental_codecheck.py 作为 pre-commit 钩子在该环境运行,不依赖 requirements.txt
yapf 本项目代码无任何引用

关联的Issue

关联 Issue #166

测试

  • python3 -m pip install --dry-run --no-deps -r requirements.txt
  • python3 -m pytest test/ut/asys/ test/ut/msaicerr/ -q(1011 passed, 5 skipped)
  • git diff --check

文档更新

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 sinat_31531339 的贡献)
sinat_31531339sinat_31531339成员
7月17日 关联了issue:[Requirement|需求建议]: [第三方依赖消减] 移除 6 项未使用或冗余的 Python 运行时依赖
atomgit-bot
atomgit-bot
7月17日 评论:

变更摘要

本次变更对 requirements.txt 进行依赖清理,移除了五个项目运行时非必需的 Python 包(pytest-covruffyapfPyYAMLrequests),同时明确保留 pandash5py,以降低依赖冗余并避免因误删关键包导致的运行时风险。

主要改动

  • 移除 pytest-cov:测试覆盖率已通过 scripts/run_tests.sh 中的 python3 -m coverage 直接调用,无需额外安装 pytest-cov 插件。
  • 移除 ruff:代码检查工具 ruff 由 pre-commit hook 的隔离环境统一管理,requirements.txt 中不再重复声明。
  • 移除 yapfPyYAMLrequests:这三个包未被项目运行时直接使用,属于冗余依赖,一并清理。
  • 保留 pandash5py:构建流程中的 msaccucmp 比对能力依赖 CSV/HDF5 解析,删除这两个包会导致运行时缺依赖风险,故暂予保留。
likedislike
atomgit-bot
atomgit-bot
7月17日 评论:

代码审查

审查总结

变更文件审查:

  • requirements.txt — 审查完成,发现 1 个问题

问题按优先级统计:

优先级 数量
P0 0
P1 0
P2 0
P3 1

整体风险评估:低风险。

本次变更从 requirements.txt 中移除了 5 个确认未被项目代码 import 的依赖(pytest-cov、ruff、yapf、PyYAML、requests),减少了依赖供应链攻击面和安装开销。唯一需关注的是 ruff 被移除后,scripts/incremental_codecheck.py 在脱离 pre-commit 直接执行时可能因缺少 ruff 模块而失败,但这属于边缘场景,且 PR 的设计意图是 ruff 应由 pre-commit 隔离环境管理。其余移除项(pytest-cov、yapf、PyYAML、requests)在全仓 1108 个文件中均无 import 引用,移除安全。decorator 仅因文件尾换行符修复而重新定位,内容未变。pandash5py 按设计保留,属于合理的范围决策。

⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。

likedislike
CANN-robotCANN-robot成员
7月17日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
7月17日 评论:

CLA Signature Pass

sinat_31531339, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robot
CANN-robot成员
7月17日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/oam-tools zhuliangying, newstarzj (2/2) zhuliangying (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)
likedislike
CANN-robotCANN-robot成员
7月17日 将newstarzj,chenhao_1209,wulinyu,zhuliangying,yaoguangxiu,fujun19,jinyingqi,yuanjiang_设为评审人
CANN-robotCANN-robot成员
7月17日 将newstarzj,chenhao_1209,wulinyu,zhuliangying,yaoguangxiu,fujun19,jinyingqi,yuanjiang_设为审查人
sinat_31531339
sinat_31531339成员
7月17日 评论:

compile

likedislike
CANN-robotCANN-robot成员
7月17日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月17日 评论:

流水线任务触发成功
任务链接 [9ba90a2340d64d508c898b81427cbfeb][流水线指导]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
cocheck_codestyle ✅ SUCCESS
precommit ✅ SUCCESS >>>>>
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
UT_Test_asys ✅ SUCCESS >>>>>
UT_Test_msaicerr ✅ SUCCESS >>>>>
UT_Test_msprof ✅ SUCCESS >>>>>
API_Check ✅ SUCCESS >>>>>
PreSmoke_A900 ✅ SUCCESS >>>>>

[2026-07-17 23:05:12]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月17日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月17日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月17日 添加了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
7月17日 评论:
流水线 PR-pipeline_cann_oam-tools#1403 [ commitID:88bbc7c4 ] 已完成
likedislike
sinat_31531339
sinat_31531339成员
7月18日 评论:
likedislike
zhangjie
zhangjie成员7月18日进行代码检视1
requirements.txt
@@ -1,0 +1,0 @@
11pytest>=9.0.2
zhangjie
zhangjie7月18日评论:

级别:严重
问题:移除了 PyYAML 依赖,但若项目中存在 import yaml 的代码,将导致运行时 ImportError。
影响:任何使用 YAML 配置文件解析或序列化的功能将在运行时崩溃。
修复建议:在合并前全局搜索 import yamlyaml. 确认无引用;若仍有使用,请保留 PyYAML 依赖。

likedislike
zhangjie
zhangjie成员7月18日进行代码检视1
requirements.txt
@@ -1,0 +1,0 @@
11pytest>=9.0.2
zhangjie
zhangjie7月18日评论:

级别:严重
问题:移除了 requests 依赖,但若项目中存在 import requests 的代码,将导致运行时 ImportError。
影响:任何使用 requests 进行 HTTP 请求的功能(如下载模型、API 调用)将在运行时崩溃。
修复建议:在合并前全局搜索 import requests 确认无引用;若仍有使用,请保留 requests 依赖或替换为其他 HTTP 库。

likedislike
zhangjie
zhangjie成员7月18日进行代码检视1
requirements.txt
@@ -1,0 +1,0 @@
11pytest>=9.0.2
zhangjie
zhangjie7月18日评论:

级别:一般
问题:移除了 pytest-cov,但保留了 coverage。若 CI 脚本或 Makefile 中使用 pytest --cov 参数,将导致覆盖率收集失败。
影响:CI 流水线中覆盖率收集步骤可能报错退出,阻断流水线。
修复建议:检查 CI 配置和测试脚本中是否使用 --cov 参数;若使用,需保留 pytest-cov 或改为直接使用 coverage run -m pytest 方式。

likedislike
zhangjie
zhangjie成员7月18日进行代码检视1
requirements.txt
@@ -1,0 +1,0 @@
11pytest>=9.0.2
zhangjie
zhangjie7月18日评论:

级别:一般
问题:移除了 ruff 和 yapf,若 CI 中有代码风格检查或格式化步骤,将导致 CI 失败。
影响:代码质量门禁可能被绕过或 CI 步骤报错。
修复建议:检查 CI 配置中是否调用 ruff/yapf;若有,需将它们移至单独的 dev-requirements 或 lint-requirements 文件中,而非直接删除。

likedislike
zhangjie
zhangjie成员7月18日进行代码检视1
requirements.txt
@@ -1,0 +1,0 @@
11pytest>=9.0.2
zhangjie
zhangjie7月18日评论:

级别:提示
问题:移除多个依赖后未说明变更原因,缺乏可追溯性。
影响:后续维护者难以判断这些依赖是否可安全移除,可能引入回归。
修复建议:在 PR 描述中补充移除每个依赖的理由,并附上全局搜索无引用的证据。

likedislike
sinat_31531339
sinat_31531339成员
7月21日 评论:

@newstarzj 感谢评审,5 条意见已逐条核实并处理如下(因 GitCode 已禁用 v4 接口无法逐条挂线程回复,这里统一引用回复):

requirements.txt(PyYAML)级别:严重 —— 移除 PyYAML 可能导致 import yaml 运行时 ImportError

已核实:全局搜索本项目代码(src/scripts/无任何 import yaml / from yaml 引用,仅测试虚拟环境 .venv_test/ 下第三方包(torch 等)使用,非项目运行时代码。移除安全,不引入 ImportError。

requirements.txt(requests)级别:严重 —— 移除 requests 可能导致 import requests 运行时 ImportError

已核实:本项目代码中无任何 import requests / from requests 引用,仅 .venv_test/ 下第三方包(fsspec、sympy 等)使用。移除安全,不影响运行时。

requirements.txt(pytest-cov)级别:一般 —— 若用 pytest --cov 会导致覆盖率收集失败

已核实:覆盖率收集在 scripts/run_tests.sh:471 使用 python3 -m coverage run --source=... -m pytest并非 pytest --cov;脚本中出现的 --cov) 只是 run_tests.sh 自身的 getopt 选项名,与 pytest-cov 插件无关。全仓无 pytest --cov 用法,coverage 依赖已保留,移除 pytest-cov 不影响 CI 覆盖率收集。

requirements.txt(ruff/yapf)级别:一般 —— 若 CI 有风格检查/格式化步骤会失败,建议移至 dev-requirements 而非删除

已核实:ruff 由 pre-commit 隔离环境统一管理(见 .pre-commit-config.yaml),scripts/incremental_codecheck.py 也是作为 pre-commit 钩子在该隔离环境中运行,不依赖 requirements.txt 中的声明;yapf 在本项目代码中无任何引用。CI 风格检查走 pre-commit,不受本次移除影响,故无需保留或迁移到 dev-requirements。

requirements.txt(可追溯性)级别:提示 —— 移除多个依赖未说明原因,建议在 PR 描述补充证据

建议已采纳:已在 PR 描述中补充每个被移除依赖的移除理由与"全局搜索确认无 import 引用"的证据。

likedislike
sinat_31531339sinat_31531339成员
7月21日 修改了pull request 的描述
sinat_31531339sinat_31531339成员
7月21日 解决了最后一个问题
zhangjie
zhangjie成员
7月21日 评论:

/lgtm

likedislike
zhangjie
zhangjie成员
7月21日 评论:

/lgtm

likedislike
zhangjie
zhangjie成员
7月21日 评论:

/lgtm

likedislike
zhuliangying成员
7月21日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
7月21日 添加了label:lgtmapproved
CANN-robotCANN-robot成员
7月21日 删除了label:ci-pipeline-passed
CANN-robot
CANN-robot成员
7月21日 评论:

The following label is not ready.

ci-pipeline-passed: The ci-pipeline-passed label is expired. Please compile again.

likedislike
sinat_31531339
sinat_31531339成员
7月21日 评论:

compile

likedislike
CANN-robotCANN-robot成员
7月21日 删除了label:api-check-pass
CANN-robotCANN-robot成员
7月21日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月21日 评论:

流水线任务触发成功
任务链接 [e0d31103342a466fa741442b8ddc2273][流水线指导]

任务名称状态日志下载链接
codecheck ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>
antipoison ✅ SUCCESS >>>>>
Check_Pr ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
pre_comment ✅ SUCCESS >>>>>
cocheck_codestyle ✅ SUCCESS
precommit ✅ SUCCESS >>>>>
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
UT_Test_asys ✅ SUCCESS >>>>>
UT_Test_msaicerr ✅ SUCCESS >>>>>
UT_Test_msprof ✅ SUCCESS >>>>>
API_Check ✅ SUCCESS >>>>>
PreSmoke_A900 ✅ SUCCESS >>>>>

[2026-07-21 20:31:13]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月21日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月21日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月21日 添加了label:ci-pipeline-passed
CANN-robotCANN-robot成员
7月21日 合入了pull request