Skip to content

Commit 4110f71

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 c950bbf commit 4110f71

6 files changed

Lines changed: 23 additions & 9 deletions

File tree

.github/workflows/sphinx.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ jobs:
99
steps:
1010
- uses: actions/checkout@v4
1111
- name: Install uv
12-
uses: astral-sh/setup-uv@v3
12+
uses: astral-sh/setup-uv@v6
1313
with:
14-
version: "0.4.29"
14+
version: "0.8.11"
1515
- name: Run Sphinx
1616
env:
1717
PIP_CONSTRAINT: 'ci/constraints.txt'

.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.0-rc.2'
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.0-rc.2'
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.0-rc.2'
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.0-rc.2'
120121
# Rust backend is currently experimental. So ignore failures in it.
121122
continue-on-error: true
122123
env:

.github/workflows/typing.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,14 @@ 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
2021
- name: Install uv
21-
uses: astral-sh/setup-uv@v3
22+
uses: astral-sh/setup-uv@v6
2223
with:
23-
version: "0.4.29"
24+
version: "0.8.11"
2425

2526
- name: Install Dependencies
2627
run: |

.github/workflows/wheel.yml

Lines changed: 8 additions & 1 deletion
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: 'cp314-cp314'
35+
- image: 'musllinux_1_1_x86_64'
36+
py: 'cp314-cp314'
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'
@@ -64,7 +71,6 @@ jobs:
6471
CIBW_ARCHS: ${{ matrix.arch }}
6572
CIBW_BUILD: ${{ matrix.py }}-*
6673
CIBW_BUILD_VERBOSITY: '1'
67-
CIBW_PRERELEASE_PYTHONS: '1'
6874
ZSTD_WARNINGS_AS_ERRORS: '1'
6975
steps:
7076
- name: Set up Python
@@ -98,6 +104,7 @@ jobs:
98104
- '3.11'
99105
- '3.12'
100106
- '3.13'
107+
- '3.14.0-rc.2'
101108
arch:
102109
- 'x86'
103110
- '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: 4 additions & 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

@@ -39,3 +40,6 @@ line-length = 80
3940

4041
[tool.ruff.lint]
4142
select = ["E4", "E7", "E9", "F", "I"]
43+
44+
[tool.cibuildwheel]
45+
enable = ["cpython-prerelease"]

0 commit comments

Comments
 (0)