Skip to content

fix(build): pick the smoke venv from both bounds, not the wheel tag alone - #27

Open
catinspace-au wants to merge 1 commit into
mainfrom
fix/smoke-check-abi3-floor
Open

catinspace-au wants to merge 1 commit into
mainfrom
fix/smoke-check-abi3-floor

Conversation

@catinspace-au

Copy link
Copy Markdown
Contributor

The 1.0.8 release failed three of four wheel builds. This is why, and the fix.

What broke

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 wheel is tagged cp312-abi3 and declares Requires-Python >=3.14. wheel_smoke_check.py read 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-python in vector-vrl/pyproject.toml and left pyo3 on abi3-py312 in vector-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-Python floor read from the wheel's own dist-info/METADATA. Reading it from the artefact rather than from pyproject.toml keeps one source of truth -- the same file uv is about to install.

Evidence

Run against the wheel that actually failed, downloaded from run 35810804378:

wheel            vector_vrl-1.0.8-cp312-abi3-macosx_10_12_x86_64.whl
tag version      (3, 12)
Requires-Python  (3, 14)
venv resolves to 3.14

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_tag with 3.12 against 3.14, reproducing the CI failure. Restored immediately; that variant is not in the commit.

The other fix, not taken

Moving pyo3 to abi3-py314 would 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.

…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

No deployments
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