ci: install the declared floors wheel-only without letting the resolver climb - #139
Merged
Merged
Conversation
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 floors job now installs each declared floor exactly, so a floor with no wheel fails the job instead of passing on a higher version. It uses two uv commands and no script.
The gap
--only-binary PyYAMLdoesn't make a floor with no wheel fail. It makes that version ineligible, and--resolution lowest-directthen climbs to the lowest version that has a wheel, then passes. This is howPyYAML>=6resolved 6.0.1 and 6.0.2 on 3.12 and 3.13 while the job stayed green (#135). uv has no option that turns the climb into an error. Its maintainers treat skipping versions without wheels as intended (astral-sh/uv#16186).The fix
--no-depslimits the output to direct dependencies.-r pyproject.tomlinstalls the dependencies but not the project. So--no-buildneeds no carve-out, and the smoke import readscompose2podfrom the checkout.This follows what larger projects do: sunpy, jwst, napari, scikit-image and scikit-learn all test exact minimum pins rather than a lowest resolution. It needs no generator script, so the rollout to other repos is a change to
_checks.ymlonly, which also works for repos that currently useuv sync --no-install-project.Verified
PyYAML>=6. Onlyfloors (3.12)failed, at the wheel-only install step; every other check passed. DO NOT MERGE: prove the floors job fails on a wheel-less floor #140 is closed.pyyaml==6.0 has no usable wheels ... unsatisfiable.Known limits
requires-python. The compile would still move up past a declared floor whose ownrequires-pythonexcludes this interpreter.