Keep the CI numba pick solvable against numpy 1.25 and 1.26 - #622
Merged
Conversation
eriknw
force-pushed
the
41-ci-numba057-numpy-ceiling
branch
from
August 5, 2026 17:44
94753b1 to
fb9761a
Compare
eriknw
force-pushed
the
41-ci-numba057-numpy-ceiling
branch
from
August 5, 2026 18:03
fb9761a to
05dc4a7
Compare
eriknw
force-pushed
the
41-ci-numba057-numpy-ceiling
branch
from
August 5, 2026 18:05
05dc4a7 to
19a5625
Compare
eriknw
force-pushed
the
41-ci-numba057-numpy-ceiling
branch
from
August 6, 2026 07:57
19a5625 to
30ccd2f
Compare
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
force-pushed
the
41-ci-numba057-numpy-ceiling
branch
from
August 6, 2026 15:38
30ccd2f to
f5eb23d
Compare
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) |
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.
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)on00-ci-pypy-branch-condition): the picker drewnumpy=1.25withnumba=0.57, and conda-forge numba 0.57 requiresnumpy <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.62no 2.x;<0.64needs<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 teachesvalidate()the pairing.The boundary is verified by dry-run solves against conda-forge (not taken from memory):
0.57+1.25conflicts;0.58+1.25,0.58+1.26, and0.59+1.26all solve.--validatepasses 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.