Skip to content

build: add CPython 3.15 and 3.15t wheels, drop 3.10 - #405

Merged
lgray merged 1 commit into
scikit-hep:mainfrom
graphed-org:py315
Oct 4, 2026
Merged

lgray merged 1 commit into
scikit-hep:mainfrom
graphed-org:py315

Conversation

@lgray

@lgray lgray commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

🤖 AI text below 🤖

Adds CPython 3.15 and 3.15t wheels and drops 3.10.

  • requires-python >=3.11, mypy python_version = 3.11, pyupgrade --py311-plus.
  • Wheel matrix: 311, 312, 313, 314, 315, 314t, 315t (cibuildwheel v4.2 builds 3.15 from its bundled rc). The windows-11-arm 310 exclude goes away with 3.10.
  • CI checks run on 3.11, 3.15, 3.15t (setup-python gets allow-prereleases: true until 3.15.0 is out); the wheel test job moves to 315, 315t.
  • Test extras on 3.15: dask-awkward[test] pulls pyarrow, which has no cp315 wheels yet, so 3.15 installs plain dask-awkward>=2026.2.1. The floor matters because without the [test] extra's distributed<2025.4 pin the resolver otherwise pairs dask 2026.8 with dask-awkward 2025.3.0, which breaks test_008/test_009 (Cannot fuse tasks with multiple outputs). The two graphed tests that write parquet now importorskip("pyarrow").

Local run (macOS arm64, CPython 3.15.0rc3 and 3.15.0rc3t): 146 passed, 2 skipped (the parquet tests, no pyarrow) on each; dask 2025.3.1 / dask-awkward 2026.2.1 / distributed 2025.3.1 resolved.

Note: as on 3.14t today, importing fastjet on 3.15t re-enables the GIL (fastjet._ext / _swig do not declare free-threading support).

On 3.15 the test extra takes plain dask-awkward (pyarrow has no cp315
wheels yet) with a floor that keeps dask inside dask-awkward's cap; the
graphed tests that write parquet skip without pyarrow.
@lgray
lgray merged commit dfdf29f into scikit-hep:main Oct 4, 2026
67 checks passed
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