Skip to content

Commit 8406c34

Browse files
dance858claude
andcommitted
Drop 3.13t from the wheel matrix; run twine via python -m
NumPy >= 2.5 ships no cp313t wheels on any platform, so the 3.13t builds had to compile NumPy from source: macOS failed outright, Windows took six minutes for the NumPy build alone, and Linux aarch64 under QEMU was still running after an hour. Only 3.14t is built now. The macOS 3.14t job built and tested both wheels fine (GIL stays disabled on x86_64 and arm64) but then failed in the twine step with "pip: command not found". Call pip and twine via python -m so the step does not depend on a pip launcher being on PATH. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013aQs1u37EG6XTHFrcaBRkA
1 parent 2e19844 commit 8406c34

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

‎.github/workflows/build-and-publish.yml‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,16 @@ jobs:
3333
os: [ ubuntu-22.04, macos-14, windows-2022 ]
3434
python-version: [ "3.11", "3.12", "3.13", "3.14" ]
3535
# "" builds the default (GIL) interpreter, "t" the free-threaded one.
36-
# Free-threaded CPython exists from 3.13 onwards.
36+
# Only 3.14t: NumPy >= 2.5 ships no cp313t wheels on any platform, so a
37+
# 3.13t build would have to compile NumPy from source.
3738
abi: [ "", "t" ]
3839
exclude:
3940
- python-version: "3.11"
4041
abi: "t"
4142
- python-version: "3.12"
4243
abi: "t"
44+
- python-version: "3.13"
45+
abi: "t"
4346

4447
env:
4548
PYTHON_VERSION: ${{ matrix.python-version }}
@@ -86,8 +89,8 @@ jobs:
8689
- name: Check wheels
8790
shell: bash
8891
run: |
89-
pip install --upgrade twine
90-
twine check wheelhouse/*
92+
python -m pip install --upgrade twine
93+
python -m twine check wheelhouse/*
9194
9295
- uses: actions/upload-artifact@v4
9396
with:

‎README.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ from sparsediffpy import _sparsediffengine
1616

1717
## Free-threaded Python
1818

19-
Wheels are published for the free-threaded CPython builds (`cp313t`, `cp314t`) as
20-
well as the default ones. The extension declares that it does not need the GIL:
19+
Wheels are published for free-threaded CPython 3.14 (`cp314t`) as well as the
20+
default builds. There is no 3.13t wheel because NumPy 2.5 and later ship no
21+
`cp313t` wheels. The extension declares that it does not need the GIL:
2122
the engine keeps no global mutable state, every problem and expression owns its
2223
own buffers, and all inputs and outputs are copied at the boundary. Distinct
2324
problems can therefore be built and evaluated concurrently from different

0 commit comments

Comments
 (0)