From b05e1582b1322800ddc2ded6f119edd33cf1eebe Mon Sep 17 00:00:00 2001 From: Dan F-M Date: Sun, 12 Jul 2026 09:26:34 -0400 Subject: [PATCH 1/4] Test/build against Python 3.14 Bump the test matrix to cover Python 3.14 (and shift the macOS include to 3.13), and update the scikit-build-core config to the non-deprecated cmake.version/ninja.version keys, which are required by scikit-build-core >= 0.8 to build wheels at all. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/tests.yml | 4 ++-- pyproject.toml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2e366f2e..5cacf591 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,12 +15,12 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10", "3.13"] + python-version: ["3.10", "3.14"] os: [ubuntu-latest] with-options: [false] include: - os: macos-14 - python-version: "3.12" + python-version: "3.13" with-options: false - os: ubuntu-latest python-version: "3.11" diff --git a/pyproject.toml b/pyproject.toml index ebb083d4..c364525d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,8 +29,8 @@ requires = ["scikit-build-core", "numpy"] build-backend = "scikit_build_core.build" [tool.scikit-build] -ninja.minimum-version = "1.10" -cmake.minimum-version = "3.17.2" +ninja.version = ">=1.10" +cmake.version = ">=3.17.2" sdist.exclude = ["src/fsps/libfsps"] sdist.include = [ "src/fsps/libfsps/src/*.f90", From 6b70d6414598fd7e149c4b06c509b87aa289adc0 Mon Sep 17 00:00:00 2001 From: Dan F-M Date: Sun, 12 Jul 2026 09:29:01 -0400 Subject: [PATCH 2/4] Update Read the Docs config for Python 3.14 Bump build.os to ubuntu-24.04 (ubuntu-20.04 is no longer a valid RTD build image) and build the docs on Python 3.14. Verified the docs build locally on 3.14 with fail_on_warning enabled. Co-Authored-By: Claude Opus 4.8 (1M context) --- .readthedocs.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 4cbeff25..6f1df513 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -4,13 +4,13 @@ submodules: include: all build: - os: ubuntu-20.04 + os: ubuntu-24.04 apt_packages: - gcc - g++ - gfortran tools: - python: "3.10" + python: "3.14" python: install: From f5b7566786efeb2ce6b492220f6a869b413d0606 Mon Sep 17 00:00:00 2001 From: Dan F-M Date: Sun, 12 Jul 2026 09:36:45 -0400 Subject: [PATCH 3/4] Fix macOS wheel repair by pinning the runner and deployment target macos-latest has rolled onto the macOS 26 (Darwin 25) image, where Homebrew's gfortran runtime libs (libgfortran, libquadmath) have a minimum target of 16.0. delocate then refused to vendor them into a wheel pinned to MACOSX_DEPLOYMENT_TARGET=15.0. Pin the runner to the stable macos-14 image and set the deployment target to 14.0 so the toolchain libs and the wheel agree, and the resulting macosx_14_0_arm64 tag installs on a broad range of macOS versions (a lower floor than the previous 15.0). This also matches the macOS setup already used in tests.yml. Free-threaded (cp3xxt) wheels are intentionally left enabled: they build and run correctly (the interpreter re-enables the GIL with a benign import warning since the f2py extension can't declare GIL-safety), which is a better experience for free-threaded users than no wheel at all. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fd253fbf..4874b524 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: matrix: os: - "ubuntu-latest" - - "macos-latest" + - "macos-14" steps: - uses: actions/checkout@v6 with: @@ -35,10 +35,10 @@ jobs: fetch-depth: 0 - name: Set up macOS run: echo "FC=gfortran-13" >> "$GITHUB_ENV" - if: ${{ matrix.os == 'macos-latest' }} + if: ${{ matrix.os == 'macos-14' }} - uses: pypa/cibuildwheel@v3.4.0 env: - MACOSX_DEPLOYMENT_TARGET: "15.0" + MACOSX_DEPLOYMENT_TARGET: "14.0" - uses: actions/upload-artifact@v7 with: name: binary-${{ matrix.os }} From 750852df286e3988da6b2104173fdf858052dabd Mon Sep 17 00:00:00 2001 From: Dan F-M Date: Sun, 12 Jul 2026 09:42:55 -0400 Subject: [PATCH 4/4] Migrate to standard [[tool.dynamic-metadata]] config scikit-build-core deprecated the tool.scikit-build.metadata table in favor of the standard top-level [[tool.dynamic-metadata]] array. The setuptools_scm provider string is unchanged (it resolves via the dynamic_metadata.provider entry-point group). Verified sdist and wheel both build without the deprecation warning and the version still resolves via setuptools_scm. Co-Authored-By: Claude Opus 4.8 (1M context) --- pyproject.toml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c364525d..e124766f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,9 @@ sdist.include = [ "src/fsps/libfsps/README", "src/fsps/fsps_version.py", ] -metadata.version.provider = "scikit_build_core.metadata.setuptools_scm" + +[[tool.dynamic-metadata]] +provider = "scikit_build_core.metadata.setuptools_scm" [tool.setuptools_scm] write_to = "src/fsps/fsps_version.py"