Skip to content

Commit 395c8cd

Browse files
committed
build: provide 3.14 wheels
This required using a different Python version for kit building. cibuildwheel now requires 3.11, so we use 3.11 for pinning kit.pip and for making the wheels.
1 parent 6154fda commit 395c8cd

File tree

14 files changed

+63
-53
lines changed

14 files changed

+63
-53
lines changed

.github/workflows/kit.yml

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ env:
3636
PIP_DISABLE_PIP_VERSION_CHECK: 1
3737
# PYVERSIONS: changing the list of versions will change the number of
3838
# expected distributions. This must match the same number in publish.yml.
39-
EXPECTED: 66
39+
EXPECTED: 77
4040

4141
permissions:
4242
contents: read
@@ -78,16 +78,15 @@ jobs:
7878
# "windows": ["x86", "AMD64", "ARM64"],
7979
# }
8080
# # PYVERSIONS. Available versions: https://pypi.org/project/cibuildwheel/
81-
# # PyPy versions are handled further below in the "pypy" step.
8281
# # Note that cibuildwheel recommends not shipping wheels for pre-release versions
8382
# # of Python: https://cibuildwheel.readthedocs.io/en/stable/options/#enable
8483
#
85-
# pys = ["cp39", "cp310", "cp311", "cp312", "cp313"]
84+
# pys = ["cp39", "cp310", "cp311", "cp312", "cp313", "cp314"]
8685
#
8786
# # Some OS/arch combinations need overrides for the Python versions:
8887
# os_arch_pys = {
8988
# # ("macos", "arm64"): ["cp38", "cp39", "cp310", "cp311", "cp312"],
90-
# ("windows", "ARM64"): ["cp311", "cp312", "cp313"],
89+
# ("windows", "ARM64"): ["cp311", "cp312", "cp313", "cp314"],
9190
# }
9291
#
9392
# #----- ^^^ ---------------------- ^^^ -----
@@ -105,7 +104,7 @@ jobs:
105104
# them["os-version"] = "13"
106105
# if the_os == "windows" and the_arch == "ARM64":
107106
# them["os-version"] = "11-arm"
108-
# them["minpy"] = "3.11"
107+
# # them["minpy"] = "3.11"
109108
# if the_arch == "aarch64":
110109
# # https://github.com/pypa/cibuildwheel/issues/2257
111110
# them["os-version"] = "22.04-arm"
@@ -116,41 +115,49 @@ jobs:
116115
- {"os": "ubuntu", "py": "cp311", "arch": "x86_64"}
117116
- {"os": "ubuntu", "py": "cp312", "arch": "x86_64"}
118117
- {"os": "ubuntu", "py": "cp313", "arch": "x86_64"}
118+
- {"os": "ubuntu", "py": "cp314", "arch": "x86_64"}
119119
- {"os": "ubuntu", "py": "cp39", "arch": "i686"}
120120
- {"os": "ubuntu", "py": "cp310", "arch": "i686"}
121121
- {"os": "ubuntu", "py": "cp311", "arch": "i686"}
122122
- {"os": "ubuntu", "py": "cp312", "arch": "i686"}
123123
- {"os": "ubuntu", "py": "cp313", "arch": "i686"}
124+
- {"os": "ubuntu", "py": "cp314", "arch": "i686"}
124125
- {"os": "ubuntu", "py": "cp39", "arch": "aarch64", "os-version": "22.04-arm"}
125126
- {"os": "ubuntu", "py": "cp310", "arch": "aarch64", "os-version": "22.04-arm"}
126127
- {"os": "ubuntu", "py": "cp311", "arch": "aarch64", "os-version": "22.04-arm"}
127128
- {"os": "ubuntu", "py": "cp312", "arch": "aarch64", "os-version": "22.04-arm"}
128129
- {"os": "ubuntu", "py": "cp313", "arch": "aarch64", "os-version": "22.04-arm"}
130+
- {"os": "ubuntu", "py": "cp314", "arch": "aarch64", "os-version": "22.04-arm"}
129131
- {"os": "macos", "py": "cp39", "arch": "arm64", "os-version": "13"}
130132
- {"os": "macos", "py": "cp310", "arch": "arm64", "os-version": "13"}
131133
- {"os": "macos", "py": "cp311", "arch": "arm64", "os-version": "13"}
132134
- {"os": "macos", "py": "cp312", "arch": "arm64", "os-version": "13"}
133135
- {"os": "macos", "py": "cp313", "arch": "arm64", "os-version": "13"}
136+
- {"os": "macos", "py": "cp314", "arch": "arm64", "os-version": "13"}
134137
- {"os": "macos", "py": "cp39", "arch": "x86_64", "os-version": "13"}
135138
- {"os": "macos", "py": "cp310", "arch": "x86_64", "os-version": "13"}
136139
- {"os": "macos", "py": "cp311", "arch": "x86_64", "os-version": "13"}
137140
- {"os": "macos", "py": "cp312", "arch": "x86_64", "os-version": "13"}
138141
- {"os": "macos", "py": "cp313", "arch": "x86_64", "os-version": "13"}
142+
- {"os": "macos", "py": "cp314", "arch": "x86_64", "os-version": "13"}
139143
- {"os": "windows", "py": "cp39", "arch": "x86"}
140144
- {"os": "windows", "py": "cp310", "arch": "x86"}
141145
- {"os": "windows", "py": "cp311", "arch": "x86"}
142146
- {"os": "windows", "py": "cp312", "arch": "x86"}
143147
- {"os": "windows", "py": "cp313", "arch": "x86"}
148+
- {"os": "windows", "py": "cp314", "arch": "x86"}
144149
- {"os": "windows", "py": "cp39", "arch": "AMD64"}
145150
- {"os": "windows", "py": "cp310", "arch": "AMD64"}
146151
- {"os": "windows", "py": "cp311", "arch": "AMD64"}
147152
- {"os": "windows", "py": "cp312", "arch": "AMD64"}
148153
- {"os": "windows", "py": "cp313", "arch": "AMD64"}
149-
- {"os": "windows", "py": "cp311", "arch": "ARM64", "os-version": "11-arm", "minpy": "3.11"}
150-
- {"os": "windows", "py": "cp312", "arch": "ARM64", "os-version": "11-arm", "minpy": "3.11"}
151-
- {"os": "windows", "py": "cp313", "arch": "ARM64", "os-version": "11-arm", "minpy": "3.11"}
152-
# [[[end]]] (sum: zo6I8z19si)
153-
# ^^^^^^^^
154+
- {"os": "windows", "py": "cp314", "arch": "AMD64"}
155+
- {"os": "windows", "py": "cp311", "arch": "ARM64", "os-version": "11-arm"}
156+
- {"os": "windows", "py": "cp312", "arch": "ARM64", "os-version": "11-arm"}
157+
- {"os": "windows", "py": "cp313", "arch": "ARM64", "os-version": "11-arm"}
158+
- {"os": "windows", "py": "cp314", "arch": "ARM64", "os-version": "11-arm"}
159+
# [[[end]]] (sum: 7BoHzaIHKR)
160+
# ^^^^^^^^^^^^^^^
154161
# If a check fails and points to this checksum line, it means you edited
155162
# the matrix directly instead of editing the Python code in the comment
156163
# above it. The matrix is generated by running cog as described at the
@@ -167,7 +174,7 @@ jobs:
167174
- name: "Install Python"
168175
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
169176
with:
170-
python-version: "${{ matrix.minpy || '3.9' }}" # Minimum of PYVERSIONS
177+
python-version: "${{ matrix.minpy || '3.11' }}" # PYVERSIONS needed by cibuildwheel
171178
cache: pip
172179
cache-dependency-path: 'requirements/*.pip'
173180

@@ -192,8 +199,7 @@ jobs:
192199
CIBW_BUILD: ${{ matrix.py }}*-*
193200
CIBW_ARCHS: ${{ matrix.arch }}
194201
CIBW_ENVIRONMENT: PIP_DISABLE_PIP_VERSION_CHECK=1
195-
CIBW_PRERELEASE_PYTHONS: True
196-
CIBW_FREE_THREADED_SUPPORT: True
202+
CIBW_ENABLE: cpython-prerelease cpython-freethreading
197203
CIBW_TEST_COMMAND: python -c "from coverage.tracer import CTracer; print('CTracer OK!')"
198204
run: |
199205
python -m cibuildwheel --output-dir wheelhouse
@@ -225,7 +231,7 @@ jobs:
225231
- name: "Install Python"
226232
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
227233
with:
228-
python-version: "3.9" # Minimum of PYVERSIONS
234+
python-version: "3.11" # PYVERSIONS: the kit-building version
229235
cache: pip
230236
cache-dependency-path: 'requirements/*.pip'
231237

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ defaults:
1717
env:
1818
# PYVERSIONS: changing the list of versions will change the number of
1919
# expected distributions. This must match the same number in kit.yml.
20-
EXPECTED: 66
20+
EXPECTED: 88
2121

2222
permissions:
2323
contents: read

CHANGES.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ Unreleased
6464
:ref:`config_json_output`, :ref:`config_lcov_output` and
6565
:ref:`config_run_debug_file`. This is now fixed.
6666

67+
- Wheels are included for 3.14 now that 3.14 rc1 is available.
68+
6769
- We no longer ship a PyPy-specific wheel. PyPy will install the pure-Python
6870
wheel. Closes `issue 2001`_.
6971

Makefile

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ metahtml: ## Produce meta-coverage HTML reports.
107107

108108
DOCBIN = .tox/doc/bin
109109

110+
# PYVERSION to use for kitting, based on cibuildwheel's requirements.
111+
KITVER = py311
112+
KITBIN = .tox/$(KITVER)/bin
113+
114+
$(KITBIN):
115+
tox -q -e $(KITVER) --notest
110116

111117
PIP_COMPILE = uv pip compile -q ${COMPILE_OPTS}
112118
upgrade: ## Update the *.pip files with the latest packages satisfying *.in files.
@@ -117,10 +123,10 @@ upgrade_one: ## Update the *.pip files for one package. `make upgrade_one pac
117123
$(MAKE) _upgrade COMPILE_OPTS="--upgrade-package $(package)"
118124

119125
_upgrade: export UV_CUSTOM_COMPILE_COMMAND=make upgrade
120-
_upgrade: $(DOCBIN)
126+
_upgrade: $(DOCBIN) $(KITBIN)
121127
$(PIP_COMPILE) -o requirements/pip.pip requirements/pip.in
122128
$(PIP_COMPILE) -o requirements/pytest.pip requirements/pytest.in
123-
$(PIP_COMPILE) -o requirements/kit.pip requirements/kit.in
129+
$(PIP_COMPILE) -p $(KITBIN)/python3 -o requirements/kit.pip requirements/kit.in
124130
$(PIP_COMPILE) -o requirements/tox.pip requirements/tox.in
125131
$(PIP_COMPILE) -o requirements/dev.pip requirements/dev.in
126132
$(PIP_COMPILE) -o requirements/light-threads.pip requirements/light-threads.in

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Coverage.py runs on these versions of Python:
2626

2727
.. PYVERSIONS
2828
29-
* Python 3.9 through 3.14 beta 4, including free-threading.
29+
* Python 3.9 through 3.14 rc1, including free-threading.
3030
* PyPy3 versions 3.9, 3.10, and 3.11.
3131

3232
Documentation is on `Read the Docs`_. Code repository and issue tracker are on

doc/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ supported on:
1818

1919
.. PYVERSIONS
2020
21-
* Python 3.9 through 3.14 beta 4, including free-threading.
21+
* Python 3.9 through 3.14 rc1, including free-threading.
2222
* PyPy3 versions 3.9, 3.10, and 3.11.
2323

2424
.. ifconfig:: prerelease

doc/requirements.pip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ sphinxcontrib-serializinghtml==2.0.0
119119
# via sphinx
120120
sphinxcontrib-spelling==8.0.1
121121
# via -r doc/requirements.in
122-
starlette==0.47.1
122+
starlette==0.47.2
123123
# via sphinx-autobuild
124124
stevedore==5.4.1
125125
# via doc8

requirements/dev.pip

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ colorama==0.4.6
3535
# tox
3636
dill==0.4.0
3737
# via pylint
38-
distlib==0.3.9
38+
distlib==0.4.0
3939
# via virtualenv
4040
docutils==0.21.2
4141
# via readme-renderer
@@ -53,7 +53,7 @@ flaky==3.8.1
5353
# via -r requirements/pytest.in
5454
greenlet==3.2.3
5555
# via -r requirements/dev.in
56-
hypothesis==6.135.29
56+
hypothesis==6.136.3
5757
# via -r requirements/pytest.in
5858
id==1.5.0
5959
# via twine
@@ -96,7 +96,7 @@ more-itertools==10.7.0
9696
# via
9797
# jaraco-classes
9898
# jaraco-functools
99-
nh3==0.2.21
99+
nh3==0.3.0
100100
# via readme-renderer
101101
packaging==25.0
102102
# via
@@ -177,7 +177,7 @@ tomli==2.2.1
177177
# tox
178178
tomlkit==0.13.3
179179
# via pylint
180-
tox==4.27.0
180+
tox==4.28.1
181181
# via
182182
# -r requirements/tox.in
183183
# tox-gh
@@ -202,7 +202,7 @@ urwid==3.0.2
202202
# urwid-readline
203203
urwid-readline==0.15.1
204204
# via pudb
205-
virtualenv==20.31.2
205+
virtualenv==20.32.0
206206
# via
207207
# -r requirements/pip.in
208208
# tox

requirements/kit.pip

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,16 @@ bashlex==0.18
99
bracex==2.6
1010
# via cibuildwheel
1111
build==1.2.2.post1
12-
# via -r requirements/kit.in
12+
# via
13+
# -r requirements/kit.in
14+
# cibuildwheel
1315
certifi==2025.7.14
1416
# via
1517
# cibuildwheel
1618
# requests
1719
charset-normalizer==3.4.2
1820
# via requests
19-
cibuildwheel==2.23.3
21+
cibuildwheel==3.1.0
2022
# via -r requirements/kit.in
2123
colorama==0.4.6
2224
# via -r requirements/kit.in
@@ -26,15 +28,14 @@ docutils==0.21.2
2628
# via readme-renderer
2729
filelock==3.18.0
2830
# via cibuildwheel
31+
humanize==4.12.3
32+
# via cibuildwheel
2933
id==1.5.0
3034
# via twine
3135
idna==3.10
3236
# via requests
3337
importlib-metadata==8.7.0
34-
# via
35-
# build
36-
# keyring
37-
# twine
38+
# via keyring
3839
jaraco-classes==3.4.0
3940
# via keyring
4041
jaraco-context==6.0.1
@@ -51,7 +52,7 @@ more-itertools==10.7.0
5152
# via
5253
# jaraco-classes
5354
# jaraco-functools
54-
nh3==0.2.21
55+
nh3==0.3.0
5556
# via readme-renderer
5657
packaging==25.0
5758
# via
@@ -63,7 +64,9 @@ packaging==25.0
6364
platformdirs==4.3.8
6465
# via cibuildwheel
6566
pyelftools==0.32
66-
# via auditwheel
67+
# via
68+
# auditwheel
69+
# cibuildwheel
6770
pygments==2.19.2
6871
# via
6972
# readme-renderer
@@ -85,22 +88,15 @@ rich==14.0.0
8588
# via twine
8689
setuptools==80.9.0
8790
# via -r requirements/kit.in
88-
tomli==2.2.1
89-
# via
90-
# build
91-
# cibuildwheel
92-
# dependency-groups
9391
twine==6.1.0
9492
# via -r requirements/kit.in
95-
typing-extensions==4.14.1
96-
# via
97-
# cibuildwheel
98-
# rich
9993
urllib3==2.5.0
10094
# via
10195
# requests
10296
# twine
10397
wheel==0.45.1
104-
# via -r requirements/kit.in
98+
# via
99+
# -r requirements/kit.in
100+
# cibuildwheel
105101
zipp==3.23.0
106102
# via importlib-metadata

requirements/light-threads.pip

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ cffi==1.17.1
44
# via -r requirements/light-threads.in
55
dnspython==2.7.0
66
# via eventlet
7-
eventlet==0.40.1
7+
eventlet==0.40.2
88
# via -r requirements/light-threads.in
99
gevent==25.5.1
1010
# via -r requirements/light-threads.in
@@ -19,7 +19,7 @@ setuptools==80.9.0
1919
# via
2020
# zope-event
2121
# zope-interface
22-
zope-event==5.1
22+
zope-event==5.1.1
2323
# via gevent
2424
zope-interface==7.2
2525
# via gevent

0 commit comments

Comments
 (0)