Skip to content

Keep the CI numba pick solvable against numpy 1.25 and 1.26 - #622

Merged
eriknw merged 2 commits into
mainfrom
41-ci-numba057-numpy-ceiling
Aug 6, 2026
Merged

Keep the CI numba pick solvable against numpy 1.25 and 1.26#622
eriknw merged 2 commits into
mainfrom
41-ci-numba057-numpy-ceiling

Conversation

@eriknw

@eriknw eriknw commented Aug 5, 2026

Copy link
Copy Markdown
Member

Stacked on #621. The overnight matrix's third failure was a conda solver failure on the bottom rung (build_and_test (ubuntu-latest, pytest_normal) on 00-ci-pypy-branch-condition): the picker drew numpy=1.25 with numba=0.57, and conda-forge numba 0.57 requires numpy <1.25, so the environment could not solve and the job died before running any tests. No code implicated; any rung can draw this pairing.

The picker's constraints covered numba's numpy 2.x boundaries (<0.62 no 2.x; <0.64 needs <2.4) but not this 1.x-era ceiling. This PR bumps numba 0.57 to 0.58 whenever the numpy pick is 1.25 or 1.26, following the existing 0.62/0.63-to-0.64 pattern, and teaches validate() the pairing.

The boundary is verified by dry-run solves against conda-forge (not taken from memory): 0.57+1.25 conflicts; 0.58+1.25, 0.58+1.26, and 0.59+1.26 all solve. --validate passes 160,000 combos; 200 fresh draws produce zero bad pairings.

(The same rung-00 run also had a macos-15-intel segfault in test_udt_auto_monoid; that is a separate matter analyzed in the overnight stack report: rung 00 contains no operator-code changes, rung 01 passed the same job on a different draw, and the UDT crash fixes sit above at rungs 04-15.)

Gates: pre-commit all hooks pass; the change is CI-tooling only.

@eriknw
eriknw force-pushed the 41-ci-numba057-numpy-ceiling branch from 94753b1 to fb9761a Compare August 5, 2026 17:44
@eriknw
eriknw force-pushed the 41-ci-numba057-numpy-ceiling branch from fb9761a to 05dc4a7 Compare August 5, 2026 18:03
@eriknw
eriknw force-pushed the 41-ci-numba057-numpy-ceiling branch from 05dc4a7 to 19a5625 Compare August 5, 2026 18:05
@eriknw
eriknw force-pushed the 41-ci-numba057-numpy-ceiling branch from 19a5625 to 30ccd2f Compare August 6, 2026 07:57
Base automatically changed from 40-ci-matplotlib-numpy-pick to main August 6, 2026 15:38
eriknw added 2 commits August 6, 2026 10:38
The overnight matrix hit a conda solver failure on the bottom rung:
the picker drew numpy 1.25 with numba 0.57, and conda-forge numba 0.57
requires numpy <1.25, so the environment could not solve and the job
died before running anything. The picker's constraints covered numba's
numpy 2.x boundaries but not this 1.x-era ceiling.

Bump numba 0.57 to 0.58 whenever the numpy pick is 1.25 or 1.26,
following the existing 0.62/0.63-to-0.64 pattern, and teach validate()
the pairing. The boundary is verified by dry-run solves against
conda-forge: 0.57+1.25 conflicts; 0.58+1.25, 0.58+1.26, and 0.59+1.26
all solve. The --validate stress test passes 160000 combos, and 200
fresh draws produce zero bad pairings.
The matrix hit another conda solver failure: the picker drew pandas 2.2
with scipy 1.9, reachable only on the py3.11 numpy 1.x path, and the
environment could not solve, so the job died before running anything.
conda-forge pandas >=2.2 carries run_constrained "scipy >=1.10.0"
(the latest 2.2.3 build and all 2.3 builds; pandas 2.0 and 2.1 declare
no scipy constraint), and scipy 1.9.3 py311 builds exist even on win-64,
so the pairing fails purely on the pandas constraint. Verified with
conda search --info against conda-forge.

Re-pick scipy from the pool's 1.10 through 1.14 pins whenever a pandas
2.2 or 2.3 pin lands next to a scipy pin below 1.10, and teach
validate() the pairing. The replacement stays pinned below 1.15 because
scipy 1.9 only survives to this point alongside numpy 1.24 or 1.25,
whose scipy ceiling is 1.15. Unpinned pandas is left alone: the solver
backs it off below 2.2 on its own, which keeps scipy 1.9 coverage.

The --validate stress test passes 160000 combos, 4800 fresh draws
produce zero bad pairings, and forcing the old bad pair through
apply_constraints now always lands scipy in 1.10 through 1.14 with no
validate() errors.
@eriknw
eriknw force-pushed the 41-ci-numba057-numpy-ceiling branch from 30ccd2f to f5eb23d Compare August 6, 2026 15:38
@eriknw

eriknw commented Aug 6, 2026

Copy link
Copy Markdown
Member Author

I'm mostly letting Agents maintain scripts/ci_pick_versions.py (before, doing this manually was a pain and mostly trial and error)

@eriknw
eriknw merged commit 978c17b into main Aug 6, 2026
1 of 4 checks passed
@eriknw
eriknw deleted the 41-ci-numba057-numpy-ceiling branch August 6, 2026 15:41
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