Skip to content

Fix/test minimal lowest direct - #318

Merged
martin-schlipf merged 2 commits into
masterfrom
fix/test-minimal-lowest-direct
Sep 2, 2026
Merged

Fix/test minimal lowest direct#318
martin-schlipf merged 2 commits into
masterfrom
fix/test-minimal-lowest-direct

Conversation

@martin-schlipf

Copy link
Copy Markdown
Collaborator

CI: make test-minimal actually test the lowest versions

Summary

test-minimal passed --resolution lowest-direct to uv lock only, but the
following uv sync (and uv run) re-resolve the lockfile as well, so the pins
were discarded before the tests ever ran:

after lock: ipython 8.26.0
after sync: ipython 9.17.1

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_RESOLUTION for the whole job makes every uv
invocation 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 I
checked that one notch below still fails:

dep was now why
h5py >=3.9.0 >=3.11.0 3.9/3.10 are built against numpy 1.x → numpy.dtype size changed on import
pandas >=2.0 >=2.2.2 same up to 2.1; 2.2.0 and 2.2.1 declare numpy<2
scipy >=1.12.0 >=1.15.0 interpolate.AAA, used by _third_party.numeric, was added in 1.15
spglib >=2.1 >=2.5 get_symmetry_dataset returns a plain dict before 2.5, while _calculation.structure and _calculation.symmetry access it by attribute

core/pyproject.toml carried the same h5py>=3.9.0 next to numpy>=2.0, so it
is raised too. There is no test-minimal job for core, so nothing in CI would
have caught it.

Both lock files are updated because they record the specifiers in
requires-dist; no resolved version changes. I edited just those lines rather
than running uv lock, which with my older local uv would have re-added 41
lines of dependency markers that #316 removed.

Testing

  • Fixed job end-to-end: numpy 2.0.0, h5py 3.11.0, pandas 2.2.2, scipy 1.15.0,
    spglib 2.5.0, ipython 8.26.0 → 3248 passed, 90 skipped, 2 xfailed
  • test-core scenario (cp core/* . + uv sync --locked --all-extras --dev)
    → 2926 passed, 310 skipped
  • Root uv sync --locked succeeds, so test-full / install see no stale lock

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.
@martin-schlipf
martin-schlipf enabled auto-merge (squash) September 2, 2026 11:01
@martin-schlipf
martin-schlipf merged commit 579d4cc into master Sep 2, 2026
28 checks passed
@martin-schlipf
martin-schlipf deleted the fix/test-minimal-lowest-direct branch September 2, 2026 11:10
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