Fix/test minimal lowest direct - #318
Merged
Merged
Conversation
The job passed --resolution lowest-direct to `uv lock` only, but the following
`uv sync` (and `uv run`) re-resolve the lockfile too, so the pins were thrown
away again before the tests ever ran:
after lock: ipython 8.26.0
after sync: ipython 9.17.1
The job therefore tested the *newest* versions and left the declared lower
bounds unguarded. Set UV_RESOLUTION for the whole job so every uv invocation
agrees on the resolution.
With the job fixed, four declared bounds turn out to be too low next to
numpy>=2.0 and are raised to the first version that works:
- h5py>=3.11.0: 3.9 and 3.10 are built against numpy 1.x, so importing them
next to numpy 2 fails with "numpy.dtype size changed".
- pandas>=2.2.2: same binary incompatibility up to 2.1; 2.2.0 and 2.2.1
declare numpy<2.
- scipy>=1.15.0: interpolate.AAA, used by _third_party.numeric, was added in
1.15.
- spglib>=2.5: get_symmetry_dataset returns a plain dict before 2.5, while
_calculation.structure and _calculation.symmetry access it by attribute.
uv.lock is refreshed because it records the specifiers; the resolved versions
are unchanged.
core/pyproject.toml declares the same h5py>=3.9.0 next to numpy>=2.0 as the full package did, and it is wrong for the same reason: h5py 3.9 and 3.10 are built against numpy 1.x, so importing them next to numpy 2 fails with "numpy.dtype size changed". There is no test-minimal job for core, so nothing in CI catches it. core/uv.lock is refreshed because it records the specifier; the resolved versions are unchanged.
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.
CI: make test-minimal actually test the lowest versions
Summary
test-minimalpassed--resolution lowest-directtouv lockonly, but thefollowing
uv sync(anduv run) re-resolve the lockfile as well, so the pinswere discarded before the tests ever ran:
The job was therefore testing the newest versions, and the declared lower
bounds were never guarded — which is why an IPython 9.17 regression showed up
there at all (#317). Setting
UV_RESOLUTIONfor the whole job makes every uvinvocation agree.
With the job actually doing its stated job, four bounds turn out to be too low
next to
numpy>=2.0. Each is raised to the first version that works, and Ichecked that one notch below still fails:
>=3.9.0>=3.11.0numpy.dtype size changedon import>=2.0>=2.2.2numpy<2>=1.12.0>=1.15.0interpolate.AAA, used by_third_party.numeric, was added in 1.15>=2.1>=2.5get_symmetry_datasetreturns a plaindictbefore 2.5, while_calculation.structureand_calculation.symmetryaccess it by attributecore/pyproject.tomlcarried the sameh5py>=3.9.0next tonumpy>=2.0, so itis raised too. There is no
test-minimaljob for core, so nothing in CI wouldhave caught it.
Both lock files are updated because they record the specifiers in
requires-dist; no resolved version changes. I edited just those lines ratherthan running
uv lock, which with my older local uv would have re-added 41lines of dependency markers that #316 removed.
Testing
spglib 2.5.0, ipython 8.26.0 → 3248 passed, 90 skipped, 2 xfailed
test-corescenario (cp core/* .+uv sync --locked --all-extras --dev)→ 2926 passed, 310 skipped
uv sync --lockedsucceeds, sotest-full/installsee no stale lock