diff --git a/docs/superpowers/evidence/pypi-pins-bump-2026-10-22.json b/docs/superpowers/evidence/pypi-pins-bump-2026-10-22.json new file mode 100644 index 00000000..362e3a25 --- /dev/null +++ b/docs/superpowers/evidence/pypi-pins-bump-2026-10-22.json @@ -0,0 +1,27 @@ +{ + "intent": "Python pins in meta/requirements*.txt are the newest stable releases again, so the dependency-freshness gate and Pre-commit checks go green in CI.", + "scope": [ + "meta/requirements.txt, meta/requirements-test.txt (anthropic, coverage, hypothesis, ruff, types-python-dateutil, websockets)", + "Non-goal: typescript 6.0.3 allowlist entry (unchanged, predicate still blocking)" + ], + "changes": [ + "anthropic 1.15.0 -> 2.1.0, coverage 7.16.2 -> 7.17.0, hypothesis 6.170.2 -> 6.170.5", + "ruff 0.17.1 -> 0.17.2, types-python-dateutil 2.9.0.20260807 -> 2.9.0.20261021, websockets 17.2 -> 17.3" + ], + "verification": [ + { + "command": "scripts/check_dependency_freshness.sh --all --strict", + "result": "pass", + "evidence": "see commit run; CI run 39843132891 listed exactly these 8 findings before the bump" + }, + { + "command": "PYTHONPATH= pytest python_pkg/code_tutor/tests/test_claude_backend.py python_pkg/code_tutor/tests/test_llm_fallback.py", + "result": "pass", + "evidence": "16 passed with anthropic 2.1.0 (only importer: python_pkg/code_tutor)" + } + ], + "risks": [ + "anthropic is a major bump; only code_tutor uses anthropic.Anthropic/APIError/messages.create/stream, covered by the 16 tests above" + ], + "rollback": ["git revert this commit"] +} diff --git a/meta/requirements-test.txt b/meta/requirements-test.txt index 7344a8ac..511df934 100644 --- a/meta/requirements-test.txt +++ b/meta/requirements-test.txt @@ -21,9 +21,9 @@ # suite itself fails loudly here on a missing import. # ============================================================================== -anthropic==1.15.0 +anthropic==2.1.0 beautifulsoup4==4.15.0 -coverage==7.16.2 +coverage==7.17.0 defusedxml==0.7.1 genanki==0.13.1 markdownify==1.2.3 diff --git a/meta/requirements.txt b/meta/requirements.txt index f18bf5e8..02f97f4e 100644 --- a/meta/requirements.txt +++ b/meta/requirements.txt @@ -6,7 +6,7 @@ add-trailing-comma==4.0.0 aiohttp==3.14.5 -anthropic==1.15.0 +anthropic==2.1.0 autoflake==2.4.0 autopep8==2.3.2 bandit==1.9.4 @@ -15,7 +15,7 @@ berserk==0.14.0 black==26.10.1 bottle==0.13.4 codespell==2.4.3 -coverage==7.16.2 +coverage==7.17.0 cryptography==50.0.2 darglint==1.8.1 dead==2.1.0 @@ -39,7 +39,7 @@ gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.11.0#subdirectory=gate genanki==0.13.1 geopandas==1.2.0 howlongtobeatpy==1.0.24 -hypothesis==6.170.2 +hypothesis==6.170.5 importlib-metadata==9.0.1 interrogate==1.7.0 # isort is deliberately not pinned: nothing here imports it (ruff's isort @@ -77,16 +77,16 @@ radon==6.0.1 reorder-python-imports==3.19.0 requests==2.34.2 rich==15.0.0 -ruff==0.17.1 +ruff==0.17.2 # safety is deliberately not pinned: its only reference in this repo is a # commented-out pre-commit hook, and safety 3.8.1 declares `typer<0.26`, # which would hold the typer this repo actually imports below latest. secretstorage==3.5.0 selenium==4.51.0 typer==0.27.3 -types-python-dateutil==2.9.0.20260807 +types-python-dateutil==2.9.0.20261021 types-PyYAML==6.0.12.20260906 types-requests==2.33.0.20261006 types-setuptools==84.0.0.20261006 typing_extensions==4.16.0 # Self annotation on py310 target (session_autopsy store lock) -websockets==17.2 +websockets==17.3