From 3d67a3cff230410297a8ea1be2736f001077d906 Mon Sep 17 00:00:00 2001 From: AlexWells Date: Wed, 9 Sep 2026 16:38:54 +0100 Subject: [PATCH 1/3] Add Python3.14 non-free-threading builds Windows seems to default to using a free-threaded build, which isn't supported by upstream EPICS python packages. We don't really care to release a free-threading build anywhere really, so globally block it --- .github/workflows/code.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 01908d95..25f89abb 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -54,7 +54,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-15-intel] - python: [cp37, cp38, cp39, cp310, cp311, cp312, cp313] + python: [cp37, cp38, cp39, cp310, cp311, cp312, cp313, cp314] include: @@ -120,7 +120,9 @@ jobs: CIBW_REPAIR_WHEEL_COMMAND: "" CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 CIBW_ENVIRONMENT_LINUX: SETUPTOOLS_DSO_PLAT_NAME=manylinux2014_x86_64 - CIBW_SKIP: "*-musllinux*" # epicscorelibs doesn't build on musllinux platforms + # epicscorelibs doesn't build on musllinux platforms + # Ensure we never use free-threaded variants, as we (and our EPICS python dependencies) do not support it + CIBW_SKIP: "*-musllinux* cp3??t-*" - name: Upload Wheel uses: actions/upload-artifact@v4 @@ -140,7 +142,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-15-intel] - python: [cp37, cp38, cp39, cp310, cp311, cp312, cp313] + python: [cp37, cp38, cp39, cp310, cp311, cp312, cp313, cp314] exclude: # Exclude Windows + Python 3.9 as p4p can't build there, due to numpy bug #27224 From 747d492d89ad0a1c13e1dbf8221b9c359906b65a Mon Sep 17 00:00:00 2001 From: AlexWells Date: Fri, 11 Sep 2026 10:13:48 +0100 Subject: [PATCH 2/3] Remove Coverage from tests See https://github.com/DiamondLightSource/cothread/issues/73 The simplest solution seems to be to just remove coverage. --- .github/workflows/code.yml | 17 ++++------------- setup.cfg | 7 ------- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml index 25f89abb..4038c3b9 100644 --- a/.github/workflows/code.yml +++ b/.github/workflows/code.yml @@ -58,17 +58,14 @@ jobs: include: - # Put coverage and results files in the project directory for mac + # Put results files in the project directory for mac - os: macos-15-intel - cov_file: "{project}/dist/coverage.xml" results_file: "{project}/dist/pytest-results.xml" # And for windows - os: windows-latest - cov_file: "{project}/dist/coverage.xml" results_file: "{project}/dist/pytest-results.xml" - # But put coverage and results files in the output dir mounted in docker for linux + # But put results files in the output dir mounted in docker for linux - os: ubuntu-latest - cov_file: /output/coverage.xml results_file: /output/pytest-results.xml exclude: @@ -112,9 +109,9 @@ jobs: # cibuildwheel reports it cannot clean up the temp dir used for testing, # and fails the build. Sleeping seems to give pytest enough time to # fully clean up. - CIBW_TEST_COMMAND: pytest {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} && sleep 2 + CIBW_TEST_COMMAND: pytest {project}/tests --junit-xml=${{ matrix.results_file }} && sleep 2 # Run with faulthandler and -s in the hope we get a stack trace on seg fault on windows... - CIBW_TEST_COMMAND_WINDOWS: python -X faulthandler -m pytest -s {project}/tests --cov-report xml:${{ matrix.cov_file }} --junit-xml=${{ matrix.results_file }} + CIBW_TEST_COMMAND_WINDOWS: python -X faulthandler -m pytest -s {project}/tests --junit-xml=${{ matrix.results_file }} # Disable auditwheel as it isn't compatible with setuptools_dso approach # https://github.com/mdavidsaver/setuptools_dso/issues/17 CIBW_REPAIR_WHEEL_COMMAND: "" @@ -130,12 +127,6 @@ jobs: name: dist-${{ matrix.os }}-${{ matrix.python }} path: dist/softioc* - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 - with: - name: ${{ matrix.os }}/${{ matrix.python }} - directory: dist - test-sdist: needs: [sdist] strategy: diff --git a/setup.cfg b/setup.cfg index f58723a0..8a18f8f9 100644 --- a/setup.cfg +++ b/setup.cfg @@ -48,7 +48,6 @@ useful = dev = # Pytest 9.1.0 deprecates some APIs that some of our plugins require pytest<9.1.0 - pytest-cov pytest-flake8 # Flake8 5.0 starts printing error, so pin to avoid it: # AttributeError: module 'flake8.options.config' has no attribute 'ConfigFileFinder' @@ -77,12 +76,6 @@ extend-ignore = # Don't do flake8 here as we need to separate it out for CI addopts = --tb=native -vv --doctest-modules --ignore=softioc/iocStats --ignore=epicscorelibs --ignore=docs - --cov=softioc --cov-report term --cov-report xml:cov.xml # Enables all discovered async tests and fixtures to be automatically marked as async, even if # they don't have a specific marker https://github.com/pytest-dev/pytest-asyncio#auto-mode asyncio_mode = auto - -[coverage:run] -# This is covered in the versiongit test suite so exclude it here -omit = */_version_git.py -patch = subprocess From 079ccdaa3e9c4bf9342c3e1ea60a366c0b73239b Mon Sep 17 00:00:00 2001 From: AlexWells Date: Fri, 11 Sep 2026 10:59:45 +0100 Subject: [PATCH 3/3] Add CHANGELOG --- CHANGELOG.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index bfa5d44a..e8b16a40 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,7 +10,7 @@ Versioning `_. Unreleased_ ----------- -Nothing yet! +- `Add Python3.14 non-free-threading builds <../../pull/212>`_ 4.7.1_ - 2026-07-23 -------------------