From bc3144abde34b5ba00e4b1eb4be993f0ad64cae7 Mon Sep 17 00:00:00 2001 From: Marcel Loose Date: Fri, 19 Jun 2026 11:04:32 +0200 Subject: [PATCH 1/7] WIP: Prepare for release 3.8 * Dropped support for Python 3.8 and 3.9; added support for Python 3.14 * Updated some outdated GitHub actions --- .github/workflows/build_release.yml | 4 ++-- .github/workflows/linux.yml | 2 +- pyproject.toml | 16 ++++++---------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index a0307d7..765e9b7 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -15,7 +15,7 @@ jobs: name: Build source distribution runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: # Needed for `setuptools-scm` fetch-depth: 0 @@ -36,7 +36,7 @@ jobs: os: [ubuntu-latest] #, macos-latest] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: # Needed for `setuptools-scm` fetch-depth: 0 diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 7d164da..9e7db0e 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -17,7 +17,7 @@ jobs: - py3_casacore_master steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: # Needed for `setuptools-scm` fetch-depth: 0 diff --git a/pyproject.toml b/pyproject.toml index 66c89ff..fe68bf7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ dynamic = ["version"] keywords = ["pyrap", "casacore", "utilities", "astronomy"] license = {file = "LICENSE"} readme = {file = "README.rst", content-type = "text/x-rst"} -requires-python = ">=3.8" +requires-python = ">=3.10" authors = [ {name = "Malte Marquarding", email = "Malte.Marquarding@gmail.com"}, {name = "Ger van Diepen", email = "gervandiepen@gmail.com"}, @@ -51,7 +51,7 @@ Homepage = "https://github.com/casacore/python-casacore" ######################### [tool.cibuildwheel] -build = "cp3{8,9,10,11,12,13}-*_x86_64" +build = "cp3{10,11,12,13,14}-*_x86_64" build-verbosity = 1 environment = """ \ CXXFLAGS="-I/usr/include/cfitsio" \ @@ -68,14 +68,6 @@ repair-wheel-command = """\ [tool.cibuildwheel.linux] skip = ["*-musllinux_*"] -[[tool.cibuildwheel.overrides]] -select="cp38-*" -manylinux-x86_64-image = "quay.io/casacore/casacore:py38_master" - -[[tool.cibuildwheel.overrides]] -select="cp39-*" -manylinux-x86_64-image = "quay.io/casacore/casacore:py39_master" - [[tool.cibuildwheel.overrides]] select="cp310-*" manylinux-x86_64-image = "quay.io/casacore/casacore:py310_master" @@ -92,6 +84,10 @@ manylinux-x86_64-image = "quay.io/casacore/casacore:py312_master" select="cp313-*" manylinux-x86_64-image = "quay.io/casacore/casacore:py313_master" +[[tool.cibuildwheel.overrides]] +select="cp314-*" +manylinux-x86_64-image = "quay.io/casacore/casacore:py314_master" + ######################### # scikit-build settings # From 27e65e9645446d5782586032c0a9279ac686bc7f Mon Sep 17 00:00:00 2001 From: Marcel Loose Date: Fri, 19 Jun 2026 18:07:28 +0200 Subject: [PATCH 2/7] Add LD_LIBRARY_PATH to environment Auditwheel failed because it couldn't find the Boost libraries. Added `LD_LIBRARY_PATH` to the environemt, using a hard-coded path to where the `casacore` build put those libraries. TODO: Fix hard-coded path? We could replace it by an environment variable that must be set by the `casacore` build, but that solution is just as fragile as using the hard-coded path. We somehow need to transparently transfer knowledge about the location of those libraries. Since these Boost libraries are Python version specific we do _not_ want to install them in `/usr/local/lib`! --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index fe68bf7..0b7afad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,6 +55,7 @@ build = "cp3{10,11,12,13,14}-*_x86_64" build-verbosity = 1 environment = """ \ CXXFLAGS="-I/usr/include/cfitsio" \ + LD_LIBRARY_PATH=/opt/boost/lib \ """ test-command = "cd {package}/tests && pytest" test-requires = "pytest" From 22d7bed0e3e0b4679f369683516903adb65de30d Mon Sep 17 00:00:00 2001 From: Marcel Loose Date: Wed, 24 Jun 2026 23:07:16 +0200 Subject: [PATCH 3/7] Use casacore v3.8.1 base image Do not use the casacore base image based on `master`, but the one based on `v3.8.1`. --- pyproject.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0b7afad..69da3f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,23 +71,23 @@ skip = ["*-musllinux_*"] [[tool.cibuildwheel.overrides]] select="cp310-*" -manylinux-x86_64-image = "quay.io/casacore/casacore:py310_master" +manylinux-x86_64-image = "quay.io/casacore/casacore:py310_v3.8.1" [[tool.cibuildwheel.overrides]] select="cp311-*" -manylinux-x86_64-image = "quay.io/casacore/casacore:py311_master" +manylinux-x86_64-image = "quay.io/casacore/casacore:py311_v3.8.1" [[tool.cibuildwheel.overrides]] select="cp312-*" -manylinux-x86_64-image = "quay.io/casacore/casacore:py312_master" +manylinux-x86_64-image = "quay.io/casacore/casacore:py312_v3.8.1" [[tool.cibuildwheel.overrides]] select="cp313-*" -manylinux-x86_64-image = "quay.io/casacore/casacore:py313_master" +manylinux-x86_64-image = "quay.io/casacore/casacore:py313_v3.8.1" [[tool.cibuildwheel.overrides]] select="cp314-*" -manylinux-x86_64-image = "quay.io/casacore/casacore:py314_master" +manylinux-x86_64-image = "quay.io/casacore/casacore:py314_v3.8.1" ######################### From 8936c4b9d16219bce80e3c1eb3d946bffe5a3fc6 Mon Sep 17 00:00:00 2001 From: Marcel Loose Date: Wed, 24 Jun 2026 23:29:31 +0200 Subject: [PATCH 4/7] Bump versions of GitHub actions Bump the version of the GitHub actions we use to the latest released version. --- .github/workflows/build_release.yml | 12 ++++++------ .github/workflows/linux.yml | 2 +- .github/workflows/osx.yml | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 765e9b7..1c3e8f6 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -15,7 +15,7 @@ jobs: name: Build source distribution runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 with: # Needed for `setuptools-scm` fetch-depth: 0 @@ -23,7 +23,7 @@ jobs: - name: Build sdist run: pipx run build --sdist - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: tarball path: dist/*.tar.gz @@ -36,16 +36,16 @@ jobs: os: [ubuntu-latest] #, macos-latest] steps: - - uses: actions/checkout@v6 + - uses: actions/checkout@v7 with: # Needed for `setuptools-scm` fetch-depth: 0 - name: Build wheels - uses: pypa/cibuildwheel@v2.23 + uses: pypa/cibuildwheel@v4.1 - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: wheels-${{ matrix.os }} path: wheelhouse/*.whl @@ -66,7 +66,7 @@ jobs: # Alternatively, to publish when a GitHub Release is created, use the following rule: # if: github.event_name == 'release' && github.event.action == 'published' steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v7 with: path: dist # put artifacts where next action expects them to be merge-multiple: true diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 9e7db0e..8ea6a83 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -17,7 +17,7 @@ jobs: - py3_casacore_master steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 with: # Needed for `setuptools-scm` fetch-depth: 0 diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index df43053..c0e3d42 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -9,12 +9,12 @@ on: jobs: osx: - runs-on: macos-13 + runs-on: macos-15 continue-on-error: true steps: - name: checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 with: # Needed for `setuptools-scm` fetch-depth: 0 @@ -43,6 +43,6 @@ jobs: run: venv/bin/delocate-wheel -v dist/*.whl - name: Publish OS X binary wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: path: dist/*.whl From df309d66a8800f9f76fbae94a28afd643141c8ff Mon Sep 17 00:00:00 2001 From: Marcel Loose Date: Wed, 24 Jun 2026 23:37:45 +0200 Subject: [PATCH 5/7] Update OSes for test Drop Ubuntu 22.04, add Ubuntu 26.04. Use Numpy 2.x --- .github/workflows/linux.yml | 2 +- .github/workflows/py3_casacore_master.docker | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 8ea6a83..9850f56 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -12,7 +12,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-22.04, ubuntu-24.04] + os: [ubuntu-24.04, ubuntu-26.04] dist: - py3_casacore_master steps: diff --git a/.github/workflows/py3_casacore_master.docker b/.github/workflows/py3_casacore_master.docker index 5e3b5a8..e2f50e4 100644 --- a/.github/workflows/py3_casacore_master.docker +++ b/.github/workflows/py3_casacore_master.docker @@ -14,7 +14,7 @@ ADD . /src WORKDIR /src RUN python3 -m venv venv && \ . venv/bin/activate && \ - pip install 'numpy<2' && \ + pip install numpy && \ pip install . && \ cd tests && \ pip install -r requirements.txt && \ From 6664b02e82c49a24708b504b245e0f8e31621a0b Mon Sep 17 00:00:00 2001 From: Marcel Loose Date: Thu, 25 Jun 2026 00:01:25 +0200 Subject: [PATCH 6/7] Update workflows Run Linux workflow only with `ubuntu-latest` Run Build Release workflow also for `macos-latest` --- .github/workflows/build_release.yml | 2 +- .github/workflows/linux.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index 1c3e8f6..a1e9caa 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -33,7 +33,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest] #, macos-latest] + os: [ubuntu-latest, macos-latest] steps: - uses: actions/checkout@v7 diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 9850f56..a6bdbb7 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -12,7 +12,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-24.04, ubuntu-26.04] + os: [ubuntu-latest] dist: - py3_casacore_master steps: From 1baa0d48b52ade0d13cd32f0667f8be6ac251fc1 Mon Sep 17 00:00:00 2001 From: Marcel Loose Date: Thu, 25 Jun 2026 00:05:03 +0200 Subject: [PATCH 7/7] Cannot build wheels for MacOS We cannot build wheels for MacOS, because: 1. `pyproject.toml` only defines x86_64 targets 2. we do not build `casacore` docker images for MacOS --- .github/workflows/build_release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_release.yml b/.github/workflows/build_release.yml index a1e9caa..1c3e8f6 100644 --- a/.github/workflows/build_release.yml +++ b/.github/workflows/build_release.yml @@ -33,7 +33,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest] #, macos-latest] steps: - uses: actions/checkout@v7