From 2dfe5c0e594e4c372ad9b961cd7b84818ebd9c67 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Wed, 20 May 2026 08:53:29 +0200 Subject: [PATCH 1/2] CI: replace retired macos-13 runner with macos-15-intel and macos-15 --- .github/workflows/pypi_deploy.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pypi_deploy.yml b/.github/workflows/pypi_deploy.yml index 444d455f..5bd8867f 100644 --- a/.github/workflows/pypi_deploy.yml +++ b/.github/workflows/pypi_deploy.yml @@ -43,8 +43,8 @@ jobs: os: - ubuntu-latest - ubuntu-24.04-arm - - macos-13 # intel - - macos-14 # apple silicon + - macos-15-intel # intel + - macos-15 # apple silicon steps: - uses: actions/checkout@v4 - name: Build wheels @@ -74,8 +74,8 @@ jobs: os: - ubuntu-latest - ubuntu-24.04-arm - - macos-13 # intel - - macos-14 # apple silicon + - macos-15-intel # intel + - macos-15 # apple silicon steps: - name: Download wheel uses: actions/download-artifact@v4 From eca8b419c6135aca1c97b6c97fb7327d812ccba1 Mon Sep 17 00:00:00 2001 From: Hannes Vogt Date: Wed, 20 May 2026 12:31:16 +0200 Subject: [PATCH 2/2] Build a single py3-none wheel per platform serialbox4py is a ctypes wrapper with no libpython linkage, so the wheel is Python-ABI-independent. Tag it py3-none via wheel.py-api and build on one interpreter per platform (CIBW_BUILD=cp310-*). One wheel per platform now covers all Python 3 versions, including 3.14. --- .github/workflows/pypi_deploy.yml | 3 ++- pyproject.toml | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pypi_deploy.yml b/.github/workflows/pypi_deploy.yml index 5bd8867f..1a113078 100644 --- a/.github/workflows/pypi_deploy.yml +++ b/.github/workflows/pypi_deploy.yml @@ -50,7 +50,8 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v2.22.0 env: - CIBW_SKIP: pp* *musllinux* cp36-* cp37-* + CIBW_BUILD: cp310-* # ctypes wrapper -> py3-none wheel, one interpreter per platform suffices + CIBW_SKIP: '*musllinux*' CIBW_BEFORE_BUILD_LINUX: yum -y install boost-devel CIBW_ARCHS_LINUX: ${{ fromJSON('["x86_64", "aarch64"]')[matrix.os == 'ubuntu-24.04-arm'] }} # poor man ternary https://github.com/orgs/community/discussions/25725#discussioncomment-3248924 CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 diff --git a/pyproject.toml b/pyproject.toml index df74229c..9352ff08 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,7 @@ classifiers = [ 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'Programming Language :: Python :: Implementation :: CPython', 'Topic :: File Formats', 'Topic :: Scientific/Engineering :: Atmospheric Science', @@ -62,6 +63,7 @@ cmake.args = [ "-DSERIALBOX_ASYNC_API=false" ] wheel.expand-macos-universal-tags = true +wheel.py-api = "py3" # ctypes wrapper, no libpython linkage: one wheel works for all Python 3 wheel.install-dir = "serialbox" wheel.packages = [] wheel.license-files = []