Skip to content

Refresh the CI dependency pools to the current releases - #631

Open
eriknw wants to merge 1 commit into
mainfrom
41-ci-dep-pools-refresh
Open

eriknw wants to merge 1 commit into
mainfrom
41-ci-dep-pools-refresh

Conversation

@eriknw

@eriknw eriknw commented Aug 26, 2026 •

Copy link
Copy Markdown
Member

Stacked on #630. One commit remains here, the sparse pool refresh: the general pool refresh described first below landed on main as part of #629.

Refresh the CI dependency pools to the current releases. The pools had drifted a few releases behind: numpy 2.5, scipy 1.18, numba 0.65 through 0.67, and awkward 2.12 and 2.13 all exist and none were reachable except through the "latest" draw, which does not pin and so never produces a reproducible combination. Each addition brings a constraint, read off the packages' own conda metadata rather than assumed:

  • numpy 2.5 and scipy 1.18 have no py3.11 builds.
  • numba declares an exclusive numpy ceiling. 0.64 through 0.66 stop below 2.5, so numpy 2.5 forces numba 0.67 or latest.
  • scipy below 1.16 stops below numpy 2.5. The comment above that block already said so; only the numpy <2.3 half was implemented.

awkward needs nothing new: the existing numpy 2.5 rule already re-picks from the pool filtered to >=2.10, so 2.12 and 2.13 join it for free. Each rule is added to both apply_constraints and validate. The stress test covers 160000 combinations and passes; deleting any one of the three new fix-ups makes it fail (760, 3329 and 50380 bad combinations respectively), which is what says they are load-bearing rather than decorative.

Refresh the sparse pool and lift its stale Python 3.13 exclusion. The refresh above left sparse behind: the pool stopped at 0.15 while 0.16 through 0.19.2 exist, and py3.13/3.14 hardcoded "NA" under a comment saying sparse does not support them. That was true in the 0.15 era, when numba could not run on those Pythons; it is not true now. Every sparse release here is noarch with numba >=0.49 and no numpy ceiling, so only the Python floors matter: 0.16/0.17 declare python >=3.10 and 0.18/0.19 declare >=3.11. On py3.13/3.14 the pool starts at 0.16 because 0.14/0.15 predate those Pythons. No new pairing rules are needed: the workflow already skips sparse whenever numba is skipped or NA. Verified beyond metadata on py3.14 (macOS arm64): sparse 0.16.0 and 0.19.2 pass the pydata-sparse io tests, and 0.18.0 passed the full suite. Stress test: 160000 combos, 0 failures.

@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch from 712caaf to 7b5e4e3 Compare August 27, 2026 16:04
@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch from 7b5e4e3 to 5fb2230 Compare August 27, 2026 16:26
@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch from 5fb2230 to 90a345d Compare August 27, 2026 16:40
@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch from 90a345d to d9e757e Compare August 27, 2026 16:46
@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch 2 times, most recently from d3abbb0 to 2f55c85 Compare September 18, 2026 03:46
@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch from 2f55c85 to add51db Compare September 23, 2026 18:19
@eriknw
eriknw added this pull request to stack #634 September 23, 2026 18:19
@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch from add51db to aba52ce Compare September 24, 2026 20:06
@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch 2 times, most recently from a3c5b44 to 4162246 Compare September 25, 2026 06:10
Base automatically changed from 40-ss-import-jit-control to main September 26, 2026 05:23
@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch from 4162246 to 439bc4e Compare September 26, 2026 05:23
The pools refresh below this commit left sparse behind: the pool stopped at
0.15 while 0.16 through 0.19.2 exist, and py3.13/3.14 hardcoded "NA" under a
comment saying sparse does not support them. That was true in the 0.15 era,
when numba could not run on those Pythons; it is not true now.

Constraints read off conda-forge metadata rather than assumed: every sparse
release here is noarch with numba >=0.49 and numpy >=1.17 and no numpy
ceiling, so only the Python floors matter. 0.16/0.17 declare python >=3.10
and 0.18/0.19 declare >=3.11. On py3.13/3.14 the pool starts at 0.16 because
0.14/0.15 predate those Pythons; on py3.11/3.12 the old entries stay.

No new pairing rules are needed: the workflow already skips sparse whenever
numba is skipped or NA, which covers sparse's only runtime dependency. The
validate() Python check moves from "any sparse on py3.13+" to the 0.16
floor, and the stress test passes 160000 combos.

Verified beyond metadata on this machine (py3.14, macOS arm64): sparse
0.16.0 and 0.19.2 pass the pydata-sparse io tests, and 0.18.0 passed the
full suite.

**Edit: rebased to include the changes on main, which largely supercedes this**
@eriknw
eriknw force-pushed the 41-ci-dep-pools-refresh branch from 439bc4e to 44c030e Compare September 26, 2026 05:25
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