Skip to content

Commit 9f0ba62

Browse files
clin1234indygreg
authored andcommitted
ci: add coverage for free-threaded Python
We add 3.13t and 3.14t into the matrix. For the wheels, we skip upload of free-threaded wheels for the moment because we don't yet want to officially declare free-threaded support. Closes #276.
1 parent 68e4389 commit 9f0ba62

File tree

5 files changed

+21
-1
lines changed

5 files changed

+21
-1
lines changed

.github/workflows/test.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ jobs:
2222
- '3.11'
2323
- '3.12'
2424
- '3.13'
25+
- '3.13t'
2526
- '3.14'
27+
- '3.14t'
2628
arch:
2729
- 'arm64'
2830
- 'x86'
@@ -99,6 +101,7 @@ jobs:
99101
uv -v run --locked pytest --numprocesses=auto --hypothesis-profile=${HYPOTHESIS_PROFILE} -v
100102
101103
- name: Test CFFI Backend
104+
if: matrix.py != '3.13t'
102105
env:
103106
PYTHON_ZSTANDARD_IMPORT_POLICY: 'cffi'
104107
run: |

.github/workflows/typing.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ jobs:
1515
- '3.11'
1616
- '3.12'
1717
- '3.13'
18+
- '3.13t'
1819
- '3.14'
20+
- '3.14t'
1921
runs-on: 'ubuntu-24.04'
2022
steps:
2123
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

.github/workflows/wheel.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ jobs:
1616
- 'cp311'
1717
- 'cp312'
1818
- 'cp313'
19+
- 'cp313t'
1920
- 'cp314'
21+
- 'cp314t'
2022
arch:
2123
- 'aarch64'
2224
- 'i686'
@@ -61,9 +63,13 @@ jobs:
6163
image: 'manylinux_2_28'
6264
- py: 'cp314'
6365
image: 'manylinux2014'
66+
- py: 'cp314t'
67+
image: 'manylinux2014'
6468
# Drop support for musllinux_1_1 on 3.14+
6569
- py: 'cp314'
6670
image: 'musllinux_1_1'
71+
- py: 'cp314t'
72+
image: 'musllinux_1_1'
6773
runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-22.04-arm' || 'ubuntu-22.04' }}
6874
env:
6975
CIBW_ARCHS: ${{ matrix.arch }}
@@ -100,6 +106,7 @@ jobs:
100106
uvx -p 3.13 [email protected]
101107
102108
- name: Upload Wheel
109+
if: ${{ !endsWith(matrix.py, 't') }}
103110
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
104111
with:
105112
name: linux-${{ matrix.py }}-${{ matrix.arch }}-${{ matrix.abi }}-${{ matrix.image }}
@@ -115,7 +122,9 @@ jobs:
115122
- 'cp311'
116123
- 'cp312'
117124
- 'cp313'
125+
- 'cp313t'
118126
- 'cp314'
127+
- 'cp314t'
119128
arch:
120129
- 'arm64'
121130
- 'x86_64'
@@ -139,6 +148,7 @@ jobs:
139148
uvx -p 3.13 [email protected]
140149
141150
- name: Upload Wheel
151+
if: ${{ !endsWith(matrix.py, 't') }}
142152
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
143153
with:
144154
name: macos-${{ matrix.py }}-${{ matrix.arch }}
@@ -154,7 +164,9 @@ jobs:
154164
- 'cp311'
155165
- 'cp312'
156166
- 'cp313'
167+
- 'cp313t'
157168
- 'cp314'
169+
- 'cp314t'
158170
arch:
159171
- 'win32'
160172
- 'win_amd64'
@@ -184,6 +196,7 @@ jobs:
184196
uvx -p 3.13 [email protected]
185197
186198
- name: Upload Wheel
199+
if: ${{ !endsWith(matrix.py, 't') }}
187200
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
188201
with:
189202
name: windows-${{ matrix.py }}-${{ matrix.arch }}

docs/news.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ Version History
4646
* The cffi backend is now automatically disabled for free-threaded builds
4747
on Python <3.14, as cffi didn't implement free-threaded support until
4848
the 2.0 release. (#274)
49+
* Added CI coverage for free-threaded CPython 3.13 and 3.14. We do not yet
50+
formally support free-threaded builds. (#276)
4951

5052
0.24.0 (released 2025-08-17)
5153
============================

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ line-length = 80
6161
select = ["E4", "E7", "E9", "F", "I"]
6262

6363
[tool.cibuildwheel]
64-
enable = ["cpython-prerelease"]
64+
enable = ["cpython-freethreading", "cpython-prerelease"]
6565
build-frontend = "build[uv]"
6666

6767
# Turn compiler warnings into errors.

0 commit comments

Comments
 (0)