fix(build): pick the smoke venv from both bounds, not the wheel tag alone - #27
Open
catinspace-au wants to merge 1 commit into
Open
catinspace-au wants to merge 1 commit into
catinspace-au wants to merge 1 commit into
Conversation
…lone The 1.0.8 release failed three of four wheel builds. The wheel is tagged cp312-abi3 and declares Requires-Python >=3.14, so the smoke check built a 3.12 venv from the tag and uv then refused the install: Because the current Python version (3.12.14) does not satisfy Python>=3.14 and vector-vrl==1.0.8 depends on Python>=3.14, we can conclude that vector-vrl==1.0.8 cannot be used. The floor sweep to 3.14 moved requires-python and left pyo3 on abi3-py312. That combination is legitimate -- an abi3 wheel is forward compatible, so its tag is the LOWER of the two bounds -- and the check was reading the lower one as if it were the only one. The venv now satisfies both: the tag version, and the Requires-Python floor read from the wheel's own dist-info METADATA. Reading it from the artefact rather than from pyproject keeps one source of truth, the same file uv will install. Proven on the wheel that failed, downloaded from run 35810804378: tag version (3, 12) Requires-Python (3, 14) venv resolves to 3.14 Eleven tests, each writing a real .whl rather than a mock. Restoring the old one-bound behaviour fails test_the_declared_floor_wins_over_an_abi3_tag with 3.12 against 3.14, reproducing the CI failure; restored immediately. 19 pass. Moving pyo3 to abi3-py314 would also resolve it, and is the larger change: pyo3 is at 0.29.2 and this repo pins 0.22.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The 1.0.8 release failed three of four wheel builds. This is why, and the fix.
What broke
The wheel is tagged
cp312-abi3and declaresRequires-Python >=3.14.wheel_smoke_check.pyread the venv version off the filename tag, built a 3.12 venv, and uv then refused to install the wheel into it. macos-arm64, linux-x86_64 and linux-aarch64 all died there; only macos-x86_64 got through.Why the combination is legitimate
The floor sweep to 3.14 moved
requires-pythoninvector-vrl/pyproject.tomland leftpyo3onabi3-py312invector-bindings/Cargo.toml. That is not itself wrong -- an abi3 wheel is forward compatible, so its tag is the LOWER of the two bounds and the package's own floor can sit above it.The check was reading the lower bound as if it were the only one. Its docstring already said "unless tagged abi3"; the code just did not act on it.
The fix
The venv now satisfies both bounds: the tag version, and the
Requires-Pythonfloor read from the wheel's owndist-info/METADATA. Reading it from the artefact rather than frompyproject.tomlkeeps one source of truth -- the same file uv is about to install.Evidence
Run against the wheel that actually failed, downloaded from run 35810804378:
Eleven new tests, each writing a real
.whl-- a zip carrying a real METADATA -- rather than mocking the reader. 19 pass.The test has teeth, checked rather than assumed: restoring the old one-bound behaviour fails
test_the_declared_floor_wins_over_an_abi3_tagwith3.12against3.14, reproducing the CI failure. Restored immediately; that variant is not in the commit.The other fix, not taken
Moving
pyo3toabi3-py314would also resolve it and is the larger change: pyo3 is at 0.29.2 (2026-08-05, read from the crates.io API) and this repo pins 0.22. Worth doing on its own, not as part of unbreaking a release.Not verified
The install and the smoke run itself still need a real 3.14 interpreter and a real compiled extension. Those are exercised by the CI job that runs this script against the built
dist/, not by these tests.