Skip to content

fix(uv): match CPython wheel ABIs to the interpreter minor - #1548

Open
dzbarsky wants to merge 4 commits into
aspect-build:mainfrom
dzbarsky:upstream/exact-wheel-abi
Open

dzbarsky wants to merge 4 commits into
aspect-build:mainfrom
dzbarsky:upstream/exact-wheel-abi

Conversation

@dzbarsky

@dzbarsky dzbarsky commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

CPython ABI tags currently use lower-bound Python version flags, so Python 3.13 also matches cp311 and cp312 wheels. Exclude the next minor's version flag when matching a version-specific ABI. The abi3 constraint keeps its forward-compatible behavior.

The test project runs Python 3.13 but its lockfile only included Python 3.10–3.11 wheels. Regenerate the lockfile for the configured interpreter and update rpds-py to 0.19.1, its first release with cp313 wheels; all other package versions stay unchanged. Regenerate the affected virtualenv snapshots.

Validation: the new Python 3.12 and 3.13 analysis tests fail before the fix. All 22 tests in the ABI and virtualenv test packages pass afterward on Bazel 8.6.0.

@coderabbitai

coderabbitai Bot commented Sep 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 95353733-caa8-4378-b289-936d8fc04343

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

@xangcastle
xangcastle self-requested a review September 18, 2026 03:47
dzbarsky and others added 3 commits September 18, 2026 00:03
The root project limited uv resolution to Python 3.10 and 3.11 while the Bazel tests use Python 3.13. Exact ABI matching correctly rejects those older CPython wheels. Extend the root project range through Python 3.13 and regenerate uv.lock with the Bazel-managed uv command.

Update rpds-py from 0.18.0 to 0.19.1, its first release with cp313 wheels. All other package versions remain unchanged. Regenerate the virtualenv snapshots for the compatible wheels.

Validation: all 22 tests in //uv/private/constraints/abi/tests:all and //py/private/py_venv/tests:all pass on Bazel 8.6.0.
Widening the root project's Python range to 3.13 adds cp312 configurations,
new resolution markers and SCC arms to the generated hub repositories;
//uv/private/uv_hub:snapshots pins those and was red.
One probe target over nine ABI tags, one analysis test per interpreter
configuration: 3.12 and 3.13 as before, 3.13 free-threaded (cp313t and
abi3t only), 3.13 debug (cp313d only, abi3 unaffected) and 3.20, the last
minor in MINORS, which has no upper bound while 3.19 still does. Flag labels
resolve through Label() instead of hand-written canonical names.
@xangcastle

xangcastle commented Sep 18, 2026

Copy link
Copy Markdown
Member

Pushed two commits on top of yours: //uv/private/uv_hub:snapshots was red after the widened lock (new cp312 configurations, markers and SCC arms), regenerated; and the ABI tests now also cover 3.13 free-threaded, 3.13 debug and the last minor in MINORS, with flag labels through Label(). Full root suite green locally on Bazel 8.

Follow-up, not for this PR: the python-tag axis has the same lower-bound shape for cpXY (constraints/python aliases cp312 to py312). Right for cpXY-abi3, wrong for cpXY-none-<plat> wheels, which pip treats as exact.
cc: @jbedard

@xangcastle
xangcastle requested a review from jbedard September 18, 2026 04:36
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.

2 participants