Apply pending backend dependency bumps with regenerated lockfiles - #293
Conversation
Supersedes the four open dependabot PRs for the backend: sqlalchemy 2.0.51 -> 2.0.52 (#286) litellm 1.94.1 -> 1.96.2 (#287) uvicorn 0.52.0 -> 0.52.3 (#288) alembic 1.18.5 -> 1.19.1 (#289) Each of those PRs edits one line of pyproject.toml and stops there. Because CI installs `--require-hashes` from the lock and then `pip install --no-deps -e .`, pyproject's pins are never enforced — so merging them as written would change the declared versions without changing a single installed package. This applies the same four bumps and regenerates both lockfiles, so they actually take effect. No transitive versions moved beyond the four and their own pins. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KqXjgMRArAxubgd5f5UYgC
|
No checks will appear on this PR until #292 merges — that's expected, not a stuck run.
on:
pull_request:
branches: [main]This PR is based on So the sequence is: merge #292 → this retargets → CI runs here → close #286–#289 as superseded. If you'd rather see a green run before merging anything, say so and I'll collapse both into a single PR against Meanwhile, #292 is green on all four jobs (run 34877012532), including the two that matter most here: Generated by Claude Code |
Supersedes the four open backend dependabot PRs, applying the same bumps in a form that actually takes effect.
Why supersede rather than merge them
Each of those PRs changes exactly one line of
backend/pyproject.tomland nothing else — no lockfile regeneration. Because CI installs--require-hashesfrom the lock and then runspip install --no-deps -e ., pyproject's pins are never enforced against the lock. Merging them as written would change the declared versions without changing a single installed package.That's not hypothetical: it's how
fastapi,litellmanduvicornended up two or three releases behind their declared pins, which #292 corrects. This PR applies the same four bumps and regenerates both lockfiles, so they land for real.Once this is green, #286–#289 can be closed as superseded.
Stacked on #292
Based on
claude/backend-dep-audit-fixes(#292), notmain, because it needs the corrected locks as a starting point. GitHub will retarget this tomainautomatically when #292 merges. Merge #292 first.Relative to #292, exactly four versions move — the four bumps themselves. No transitive dependency changed:
Testing
Clean Python 3.12 venv, installed exactly as CI does:
pip-audit— No known vulnerabilities foundruff check .— All checks passedmypy luma --ignore-missing-imports— Success, 78 source filespytest -x -q— 201 passedpip-compilere-run, so Regenerate backend lockfiles to clear pip-audit failures, and assert they match pyproject #292's new drift check passes here.alembic1.18 → 1.19 is the one bump that touches machinery I can't fully exercise locally — theMigrations — apply & checkjob needs a live TimescaleDB. What I could verify: under alembic 1.19.1 and SQLAlchemy 2.0.52 the script directory loads all 36 revisions, resolves to a single head (0033_add_water_presets), andluma.db.modelsimports cleanly with all 29 tables. The migrations job on this PR is the real check onalembic upgrade headandalembic check— worth a look before merging.🤖 Generated with Claude Code
https://claude.ai/code/session_01KqXjgMRArAxubgd5f5UYgC
Generated by Claude Code