Skip to content

Commit 540f45c

Browse files
committed
ci: add Python 3.14 wheels and test coverage
Our version of PyO3 doesn't have 3.14 support. We we have to exclude the Rust backend from 3.14. No attempt was made to fix the deprecation warnings we're now seeing on these builds.
1 parent 685c6c8 commit 540f45c

5 files changed

Lines changed: 16 additions & 4 deletions

File tree

.github/workflows/test.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ jobs:
2121
- '3.11'
2222
- '3.12'
2323
- '3.13'
24+
- '3.14.0-rc.2'
2425
arch:
2526
- 'arm64'
2627
- 'x86'
@@ -77,7 +78,7 @@ jobs:
7778
architecture: ${{ matrix.arch }}
7879

7980
- name: Install Rust
80-
if: matrix.arch != 'x86'
81+
if: matrix.arch != 'x86' && matrix.py != '3.14'
8182
uses: dtolnay/rust-toolchain@v1
8283
with:
8384
toolchain: stable
@@ -92,14 +93,14 @@ jobs:
9293
python -m pip install --require-hashes -r ci/requirements.txt
9394
9495
- name: Build (Rust)
95-
if: matrix.arch != 'x86'
96+
if: matrix.arch != 'x86' && matrix.py != '3.14'
9697
env:
9798
PIP_CONSTRAINT: 'ci/constraints.txt'
9899
run: |
99100
python -m pip -v install --config-settings='--build-option=--rust-backend' -e .
100101
101102
- name: Build (No Rust)
102-
if: matrix.arch == 'x86'
103+
if: matrix.arch == 'x86' || matrix.py == '3.14'
103104
env:
104105
PIP_CONSTRAINT: 'ci/constraints.txt'
105106
run: |
@@ -116,7 +117,7 @@ jobs:
116117
pytest --numprocesses=auto --hypothesis-profile=${HYPOTHESIS_PROFILE} -v tests/
117118
118119
- name: Test Rust Backend
119-
if: matrix.arch != 'x86'
120+
if: matrix.arch != 'x86' && matrix.py != '3.14'
120121
# Rust backend is currently experimental. So ignore failures in it.
121122
continue-on-error: true
122123
env:

.github/workflows/typing.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ jobs:
1414
- '3.11'
1515
- '3.12'
1616
- '3.13'
17+
- '3.14'
1718
runs-on: 'ubuntu-24.04'
1819
steps:
1920
- uses: actions/checkout@v4

.github/workflows/wheel.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ jobs:
2828
- 'cp311-cp311'
2929
- 'cp312-cp312'
3030
- 'cp313-cp313'
31+
- 'cp314-cp314'
32+
exclude:
33+
- image: 'musllinux_1_1_aarch64'
34+
py: '3.14'
35+
- image: 'musllinux_1_1_x86_64'
36+
py: '3.14'
3137
runs-on: ${{ endsWith(matrix.image, 'aarch64') && 'ubuntu-22.04-arm' || 'ubuntu-22.04' }}
3238
steps:
3339
- uses: actions/checkout@v4
@@ -56,6 +62,7 @@ jobs:
5662
- 'cp311'
5763
- 'cp312'
5864
- 'cp313'
65+
- 'cp314'
5966
arch:
6067
- 'arm64'
6168
- 'x86_64'
@@ -98,6 +105,7 @@ jobs:
98105
- '3.11'
99106
- '3.12'
100107
- '3.13'
108+
- '3.14.0-rc.2'
101109
arch:
102110
- 'x86'
103111
- 'x64'

docs/news.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ Changes
7474
defining the zstandard frame type. You can pass e.g.
7575
``zstandard.FORMAT_ZSTD1_MAGICLESS`` to decode frames without header magic.
7676
(#217)
77+
* Initial Python 3.14 support. We build wheels and have CI test coverage.
7778

7879
Backwards Compatibility Notes
7980
-----------------------------

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ classifiers = [
1818
"Programming Language :: Python :: 3.11",
1919
"Programming Language :: Python :: 3.12",
2020
"Programming Language :: Python :: 3.13",
21+
"Programming Language :: Python :: 3.14",
2122
]
2223
keywords = ["zstandard", "zstd", "compression"]
2324

0 commit comments

Comments
 (0)