Skip to content

chore(deps): five python floors + the lock recompiled in the prod image (#356 #357 #359 #365 #366) - #368

Merged
ibuilder merged 2 commits into
mainfrom
chore/py-floors-2026-08-28
Aug 28, 2026
Merged

chore(deps): five python floors + the lock recompiled in the prod image (#356 #357 #359 #365 #366)#368
ibuilder merged 2 commits into
mainfrom
chore/py-floors-2026-08-28

Conversation

@ibuilder

@ibuilder ibuilder commented Aug 28, 2026

Copy link
Copy Markdown
Owner

Batches the five Python floor bumps that share one artifact — services/api/requirements.lock
and commits the lock compiled by .github/workflows/lockfile.yml in python:3.12-slim.

Why batched

Each of these raises a floor above what the lock pins, and test_lock_satisfies_requirements
checks exactly that, so merging any one alone reddens main. They also all resolve through the same
lock, so merging singly would recompile it four times.

pin was now
pyhanko 0.35.2 0.36.2
pyhanko-certvalidator 0.31.1 0.31.4 (transitive)
reportlab 5.0.0 5.0.1
scipy 1.18.0 1.18.1
sentry-sdk[fastapi] 2.66.1 2.68.1

110 pins in, 110 out — nothing added or removed.

Why the lock came from CI rather than from here

It carries --generate-hashes and is resolved in the prod image. A Windows compile produces a
different artifact: uvloop has no Windows build, and colorama is absent from a Linux-compiled
lock. The workflow uploads the freshly-compiled lock as an artifact even when its verify step fails,
which is the documented bootstrap path. The follow-up push then made that same workflow pass its
"verify committed lock is up to date" step — that success is the evidence the lock matches a
fresh compile.

Held back deliberately

anthropic >=0.120.0 → >=1.0.0 (#362) is NOT in this batch. It is a major on the LLM SDK and
wants its own change with the call sites read. Including it would put a breaking-change candidate
inside a routine floor bump, and would block four safe bumps behind one risky resolution. The lock
here keeps anthropic==0.120.2.

What needs CI, not local verification

pyhanko 0.35.2 → 0.36.2 is the PDF-signing stack. This machine's venv cannot install the lock at
all (the Windows problem above), so CI is the authority for that bump — which is the whole
reason this is a PR rather than a direct push.

Closes #356, #357, #359, #365, #366

Summary by CodeRabbit

  • Chores
    • Updated minimum supported versions for scientific computing, document generation, PDF signing, and error-monitoring components.
    • Applied consistent version updates across API and data services.
    • No dependencies were added or removed.

reportlab >=5.0.1 (#356 #359), scipy >=1.18.1 (#357), pyhanko >=0.36.2 (#365),
sentry-sdk >=2.68.1 (#366). Mirrored into services/data/requirements.txt where it declares the
same package, because requirements.in carries those floors too and the two are maintained together.

anthropic (#362, >=0.120.0 -> >=1.0.0) is DELIBERATELY NOT HERE. It is a major on the LLM SDK and
wants its own change with the call sites actually read.

The lock is compiled in python:3.12-slim by .github/workflows/lockfile.yml — it cannot be
regenerated correctly on Windows (uvloop has no Windows build, colorama is absent from a
Linux-compiled lock), so this push exists to make that workflow produce the artifact.
Produced by .github/workflows/lockfile.yml on the previous commit of this branch — the workflow
uploads the freshly-compiled lock as an artifact even when its verify step fails, which is the
documented bootstrap path and the only correct one here: the lock carries --generate-hashes and is
resolved in the prod image, so a Windows compile would produce a different artifact (uvloop has no
Windows build; colorama is absent from a Linux-compiled lock).

EXACTLY FIVE PINS MOVED, 110 in and 110 out — no package added or removed:

    pyhanko                 0.35.2 -> 0.36.2
    pyhanko-certvalidator   0.31.1 -> 0.31.4   (transitive, pulled by pyhanko)
    reportlab               5.0.0  -> 5.0.1
    scipy                   1.18.0 -> 1.18.1
    sentry-sdk[fastapi]     2.66.1 -> 2.68.1

anthropic stayed at 0.120.2, which is the point of holding #362 out of this batch.

Verified by parsing both locks and diffing the PIN SETS rather than by reading a textual diff. My
first two attempts under-reported: one regex did not allow bracketed extras, so it matched no
"sentry-sdk[fastapi]==" line at all and reported sentry as unmoved when it had in fact moved. A diff
is only as good as the pattern that feeds it, and a pattern that silently matches nothing looks
exactly like agreement.

pyhanko 0.35.2 -> 0.36.2 is the one worth watching here: it is the PDF-signing stack, and this venv
cannot install the lock to exercise it (Windows), so CI is the authority for that bump.
@strix-security

Copy link
Copy Markdown

Strix is installed on this repository, but we couldn't run this PR security review because this workspace's trial has ended. Add a card to resume code reviews here.

So far, Strix has reviewed 28 pull requests, surfaced 3 security issues (1 critical/high) and blocked 2 risky merges across this workspace.

@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing

@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 4159dcf0-8a75-47b5-b671-655cba89f2f0

📥 Commits

Reviewing files that changed from the base of the PR and between 499750a and 73687d3.

⛔ Files ignored due to path filters (1)
  • services/api/requirements.lock is excluded by !**/*.lock
📒 Files selected for processing (2)
  • services/api/requirements.in
  • services/data/requirements.txt

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

The pull request raises minimum versions for SciPy and ReportLab in both services, and for pyHanko and Sentry SDK in the API service. No dependencies are added or removed.

Changes

Dependency version floors

Layer / File(s) Summary
Update dependency minimums
services/api/requirements.in, services/data/requirements.txt
The requirement files raise minimum versions for SciPy, ReportLab, pyHanko, and Sentry SDK. NetworkX and Shapely remain unchanged.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 73687

This change raises supported Python dependency floors and refreshes the API lockfile without introducing an identified product or production risk; no actionable merge-blocking risk remains after normal checks and review.

Suggested reviewers: claude

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The linked issue covers only the ReportLab update in services/data. The pull request also changes SciPy, pyhanko, pyhanko-certvalidator, sentry-sdk, and the API ReportLab floor. These changes are not … Link the issues that authorize the additional dependency updates, or remove those unrelated changes from this pull request.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the dependency floor updates and lockfile recompilation.
Description check ✅ Passed The description explains the dependency changes, batching rationale, CI lockfile process, intentional exclusion, and linked issues. It omits the repository checklist, but the main required context is …
Linked Issues check ✅ Passed The change satisfies issue #356 by raising the ReportLab requirement from >=5.0.0 to >=5.0.1 in services/data/requirements.txt.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Full details: Description check

Explanation

The description explains the dependency changes, batching rationale, CI lockfile process, intentional exclusion, and linked issues. It omits the repository checklist, but the main required context is complete.

Full details: Out of Scope Changes check

Explanation

The linked issue covers only the ReportLab update in services/data. The pull request also changes SciPy, pyhanko, pyhanko-certvalidator, sentry-sdk, and the API ReportLab floor. These changes are not supported by the single provided linked issue.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/py-floors-2026-08-28

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant