Repository navigation
chore: bump CI Python to 3.13 - #683
Conversation
Reviewer's guide (collapsed on small PRs)Reviewer's GuideThis PR moves CI testing from Python 3.9 to 3.13 and updates affected dependency fixtures and golden SBOM snapshots to reflect the package-resolution and output changes caused by Python-version markers. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
pipdeptree 4.x transitively requires typing_extensions>=4.16, which upgrades whatever the user has pinned and triggers version-mismatch errors. pipdeptree 2.x has no such transitive deps. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #683 +/- ##
==========================================
+ Coverage 92.02% 92.03% +0.01%
==========================================
Files 43 43
Lines 11284 11305 +21
Branches 2258 2265 +7
==========================================
+ Hits 10384 10405 +21
Misses 900 900
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
ruromero
left a comment
There was a problem hiding this comment.
Thanks for unblocking CI! The Python 3.13 bump and the immutables 0.20 → 0.21 change look right (0.20 has no cp313 wheels). A few things need addressing before merge:
Blocking
-
poetry_only_depssnapshot now encodes a parser bug. The new expected output hasflask → zippas a direct dependency, which is wrong. Flask doesn't depend on zipp. Root cause is insrc/providers/python_poetry.js(~L271-277): when a child's marker evaluates false wecontinuebefore pushing it ontostack, so its own children (zippat depth 2) get attached to the grandparent.zippcarries the samepython_version < "3.10"marker inpoetry.lock, so it should be dropped as well. This was latent while CI ran on 3.9. Please fix the parser (e.g. track skipped subtrees by depth) and regenerate the fixture rather than snapshotting the current output. See inline comment. -
pipdeptree pin rationale doesn't hold up. Per PyPI metadata:
pipdeptree 2.35.3(what<3resolves to on Python ≥3.10) →packaging>=26pipdeptree 3.0.0→packaging>=26,tomli>=2; python_version < "3.11"pipdeptree 4.0.0→nab-index,nab-python(thetyping_extensionssource)
So the commit message's "pipdeptree 2.x has no such transitive deps" isn't accurate:
<3still upgrades the user'spackaging, and excluding 3.x buys essentially nothing over<4. The PR summary ("constrain to the 3.x release line") also contradicts the code. Suggestpipdeptree<4with an accurate comment, or longer term avoid installing into the user's environment at all. -
DCO sign-off missing on both commits (
CONTRIBUTING.md: "Commits must be signed-off";CONVENTIONS.md: "DCO required").76d74e0only has aCo-Authored-Bytrailer.
Non-blocking
- The pipdeptree pin is a user-facing runtime change, but the PR is titled
chore:. If squashed, it won't appear as afixin release notes. Consider retitling or splitting it into its own PR, since the CI bump doesn't depend on it. async-timeoutdisappears from thepip_requirements_txt_ignorefixtures because ofpython_full_version < '3.11', not the< "3.10"markers mentioned in the description.- Pip/poetry fixtures now only pass on Python ≥3.11 locally. Might be worth a note for contributors.
- The README "Using
pipdeptree" section could mention the version constraint, since we install it into the user's environment.
pipdeptree 4.x depends on nab-* packages that pull typing_extensions>=4.16, polluting the user's env and causing version-mismatch errors. 2.x and 3.x have no such transitive deps. Fix a latent bug in the poetry tree parser where marker-excluded deps had their children re-parented onto the grandparent. Now tracks skipDepth to skip entire subtrees, and checks package-level markers from poetry.lock in addition to dependency-edge markers. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Noah Santschi-Cooney <noah@santschi-cooney.ch>
Description
Due to the error at https://github.com/guacsec/trustify-da-javascript-client/actions/runs/40760713959/job/123071561601
Error: The version '3.9' with architecture 'x64' was not found for Ubuntu 26.04., we have to upgrade to a newer Python version in CI. As a result, some test files need updating as the SBOM outputs have changed due topython_version < "3.10"markers in some of themChecklist
Summary by Sourcery
Upgrade CI and Python dependency analysis for Python 3.13 compatibility while keeping generated dependency SBOMs accurate.
Bug Fixes:
Enhancements:
CI:
Tests:
Chores: