Skip to content

Commit fff3697

Browse files
Merge pull request #212 from DiamondLightSource/add_cp314
Add Python3.14 non-free-threading builds
2 parents 096beca + 079ccda commit fff3697

3 files changed

Lines changed: 10 additions & 24 deletions

File tree

.github/workflows/code.yml

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,18 @@ jobs:
5454
fail-fast: false
5555
matrix:
5656
os: [ubuntu-latest, windows-latest, macos-15-intel]
57-
python: [cp37, cp38, cp39, cp310, cp311, cp312, cp313]
57+
python: [cp37, cp38, cp39, cp310, cp311, cp312, cp313, cp314]
5858

5959

6060
include:
61-
# Put coverage and results files in the project directory for mac
61+
# Put results files in the project directory for mac
6262
- os: macos-15-intel
63-
cov_file: "{project}/dist/coverage.xml"
6463
results_file: "{project}/dist/pytest-results.xml"
6564
# And for windows
6665
- os: windows-latest
67-
cov_file: "{project}/dist/coverage.xml"
6866
results_file: "{project}/dist/pytest-results.xml"
69-
# But put coverage and results files in the output dir mounted in docker for linux
67+
# But put results files in the output dir mounted in docker for linux
7068
- os: ubuntu-latest
71-
cov_file: /output/coverage.xml
7269
results_file: /output/pytest-results.xml
7370

7471
exclude:
@@ -112,35 +109,31 @@ jobs:
112109
# cibuildwheel reports it cannot clean up the temp dir used for testing,
113110
# and fails the build. Sleeping seems to give pytest enough time to
114111
# fully clean up.
115-
CIBW_TEST_COMMAND: pytest {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} && sleep 2
112+
CIBW_TEST_COMMAND: pytest {project}/tests --junit-xml=${{ matrix.results_file }} && sleep 2
116113
# Run with faulthandler and -s in the hope we get a stack trace on seg fault on windows...
117-
CIBW_TEST_COMMAND_WINDOWS: python -X faulthandler -m pytest -s {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }}
114+
CIBW_TEST_COMMAND_WINDOWS: python -X faulthandler -m pytest -s {project}/tests --junit-xml=${{ matrix.results_file }}
118115
# Disable auditwheel as it isn't compatible with setuptools_dso approach
119116
# https://github.com/mdavidsaver/setuptools_dso/issues/17
120117
CIBW_REPAIR_WHEEL_COMMAND: ""
121118
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
122119
CIBW_ENVIRONMENT_LINUX: SETUPTOOLS_DSO_PLAT_NAME=manylinux2014_x86_64
123-
CIBW_SKIP: "*-musllinux*" # epicscorelibs doesn't build on musllinux platforms
120+
# epicscorelibs doesn't build on musllinux platforms
121+
# Ensure we never use free-threaded variants, as we (and our EPICS python dependencies) do not support it
122+
CIBW_SKIP: "*-musllinux* cp3??t-*"
124123

125124
- name: Upload Wheel
126125
uses: actions/upload-artifact@v4
127126
with:
128127
name: dist-${{ matrix.os }}-${{ matrix.python }}
129128
path: dist/softioc*
130129

131-
- name: Upload coverage to Codecov
132-
uses: codecov/codecov-action@v4
133-
with:
134-
name: ${{ matrix.os }}/${{ matrix.python }}
135-
directory: dist
136-
137130
test-sdist:
138131
needs: [sdist]
139132
strategy:
140133
fail-fast: false
141134
matrix:
142135
os: [ubuntu-latest, windows-latest, macos-15-intel]
143-
python: [cp37, cp38, cp39, cp310, cp311, cp312, cp313]
136+
python: [cp37, cp38, cp39, cp310, cp311, cp312, cp313, cp314]
144137

145138
exclude:
146139
# Exclude Windows + Python 3.9 as p4p can't build there, due to numpy bug #27224

CHANGELOG.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Versioning <https://semver.org/spec/v2.0.0.html>`_.
1010
Unreleased_
1111
-----------
1212

13-
Nothing yet!
13+
- `Add Python3.14 non-free-threading builds <../../pull/212>`_
1414

1515
4.7.1_ - 2026-07-23
1616
-------------------

setup.cfg

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ useful =
4848
dev =
4949
# Pytest 9.1.0 deprecates some APIs that some of our plugins require
5050
pytest<9.1.0
51-
pytest-cov
5251
pytest-flake8
5352
# Flake8 5.0 starts printing error, so pin to avoid it:
5453
# AttributeError: module 'flake8.options.config' has no attribute 'ConfigFileFinder'
@@ -77,12 +76,6 @@ extend-ignore =
7776
# Don't do flake8 here as we need to separate it out for CI
7877
addopts =
7978
--tb=native -vv --doctest-modules --ignore=softioc/iocStats --ignore=epicscorelibs --ignore=docs
80-
--cov=softioc --cov-report term --cov-report xml:cov.xml
8179
# Enables all discovered async tests and fixtures to be automatically marked as async, even if
8280
# they don't have a specific marker https://github.com/pytest-dev/pytest-asyncio#auto-mode
8381
asyncio_mode = auto
84-
85-
[coverage:run]
86-
# This is covered in the versiongit test suite so exclude it here
87-
omit = */_version_git.py
88-
patch = subprocess

0 commit comments

Comments
 (0)