From 5c404456ddce447ce4d34b4869dad0b2854b0184 Mon Sep 17 00:00:00 2001 From: Haoyu Xi Date: Wed, 11 Nov 2026 11:37:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(deps):=20=E4=BF=AE=E5=A4=8D=20requirements.?= =?UTF-8?q?lock.txt=20=E4=B8=8D=E5=8F=AF=E8=A7=A3=EF=BC=88numpy=20/=20pyda?= =?UTF-8?q?ntic-core=20=E4=B8=8E=20Python=203.11=20=E5=86=B2=E7=AA=81?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #351 合并后 lock 装不上,`uv pip install -r requirements.lock.txt` 直接解不出解: 1. numpy==2.5.4 要求 Python>=3.12,而项目 .venv 固定 3.11(README: `uv venv --python 3.11`;Android Chaquopy 更老)⇒ 回退 2.4.6。 根因是 dependabot 早先的 numpy minor bump(a8ab228)只改 lock 里一行、 未做版本约束求解;已在 .github/dependabot.yml 对 numpy 暂缓 minor/major, 并写明解除条件(项目最低 Python 升到 3.12)。 2. pydantic-core==2.50.4 与 pydantic==2.14.2 冲突:pydantic 2.14.2 精确要求 pydantic-core==2.50.2 ⇒ 回退 2.50.2。 教训:dependabot 对 requirements*.txt 的单包升级**不做整体一致性求解**, 合并此类 PR 前必须真跑一次 `uv pip install --dry-run -r requirements.lock.txt` (等价于「锁文件可解」探针),不能只看 CI——CI 装的是 requirements.txt。 验证:本地项目级 .venv 用 `uv pip install --python ./.venv/Scripts/python.exe -r requirements.lock.txt` 安装成功(click 8.5.1 / fastapi 0.162.2 / typer 0.28.0 / typing-inspection 0.4.5); 升级后的 .venv 跑全量 pytest:3040 passed,2 failed + 3 errors 均为本地环境既有 问题(GBK 控制台解码、player_tray_probe/probe_json_contract 在纯 master 上同样红)。 --- .github/dependabot.yml | 9 +++++++++ requirements.lock.txt | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e4eb8760..88859d58 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -34,6 +34,15 @@ updates: # app.openapi()["paths"])而免疫;2026-09-26 本地全量验证通过后升 fastapi 0.141.1, # 同时**撤销 ignore** —— 恢复由「dependabot 周更 + ci.yml 全量门禁」兜底。 # 若将来再遇同类"守卫依赖上游实现细节"的问题,优先修守卫而不是加 ignore。 + # + # numpy 暂缓 minor/major(2026-11-11 实测):dependabot 已把 lock 里的 numpy 升到 + # 2.5.4,而 numpy 2.5 起要求 Python>=3.12;本项目 `.venv` 固定 3.11(README + # `uv venv --python 3.11`,Android 侧 Chaquopy 更老),结果 + # `uv pip install -r requirements.lock.txt` 直接解不出解 —— lock 变成装不上的清单。 + # 解除条件:项目最低 Python 升到 3.12(需同步 README / CI matrix / Android 互锁)。 + ignore: + - dependency-name: "numpy" + update-types: ["version-update:semver-minor", "version-update:semver-major"] - package-ecosystem: "github-actions" diff --git a/requirements.lock.txt b/requirements.lock.txt index 043770ea..fecf3657 100644 --- a/requirements.lock.txt +++ b/requirements.lock.txt @@ -37,7 +37,7 @@ markupsafe==3.0.4 mdurl==0.1.2 multidict==7.2.1 murmurhash==1.0.16 -numpy==2.5.4 +numpy==2.4.6 opentelemetry-api==1.45.2 packaging==26.3 pefile==2024.8.26 @@ -48,7 +48,7 @@ propcache==0.5.4 proxy-tools==0.1.0 pycparser==3.12 pydantic==2.14.2 -pydantic-core==2.50.4 +pydantic-core==2.50.2 pygments==2.21.0 pyinstaller==6.22.3 pyinstaller-hooks-contrib==2026.9