From 8a94d828096fb8ff7bcd2e4f85e883af1fa8e688 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 14:21:20 +0000 Subject: [PATCH 1/3] Initial plan From 8184b0d254e069d2ee917b4d990608aea3347146 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 14:38:49 +0000 Subject: [PATCH 2/3] Add Python 3.14 support following lensfunpy PR #64 Co-authored-by: letmaik <530988+letmaik@users.noreply.github.com> --- .github/scripts/build-linux.sh | 24 +++++++--------- .github/scripts/build-macos.sh | 4 +++ .github/scripts/build-windows.ps1 | 3 ++ .github/scripts/test-linux.sh | 20 ++++---------- .github/workflows/ci.yml | 46 +++++++++++++++++++++++++++++++ 5 files changed, 69 insertions(+), 28 deletions(-) diff --git a/.github/scripts/build-linux.sh b/.github/scripts/build-linux.sh index bc97b40..cfcbf7c 100755 --- a/.github/scripts/build-linux.sh +++ b/.github/scripts/build-linux.sh @@ -4,20 +4,12 @@ set -e -x # List python versions ls /opt/python -if [ $PYTHON_VERSION == "3.8" ]; then - PYBIN="/opt/python/cp38-cp38/bin" -elif [ $PYTHON_VERSION == "3.9" ]; then - PYBIN="/opt/python/cp39-cp39/bin" -elif [ $PYTHON_VERSION == "3.10" ]; then - PYBIN="/opt/python/cp310-cp310/bin" -elif [ $PYTHON_VERSION == "3.11" ]; then - PYBIN="/opt/python/cp311-cp311/bin" -elif [ $PYTHON_VERSION == "3.12" ]; then - PYBIN="/opt/python/cp312-cp312/bin" -elif [ $PYTHON_VERSION == "3.13" ]; then - PYBIN="/opt/python/cp313-cp313/bin" -else - echo "Unsupported Python version $PYTHON_VERSION" +# Compute PYBIN from PYTHON_VERSION (e.g., "3.14" -> "cp314-cp314") +PYVER_NO_DOT=${PYTHON_VERSION//./} +PYBIN="/opt/python/cp${PYVER_NO_DOT}-cp${PYVER_NO_DOT}/bin" + +if [ ! -d "$PYBIN" ]; then + echo "Python version $PYTHON_VERSION not found at $PYBIN" exit 1 fi @@ -26,6 +18,10 @@ if [ ! -z "$GITHUB_ENV" ]; then echo "PATH=$PYBIN:$PATH" >> $GITHUB_ENV fi +# Upgrade pip and prefer binary packages +${PYBIN}/python -m pip install --upgrade pip +export PIP_PREFER_BINARY=1 + # install compile-time dependencies ${PYBIN}/pip install numpy==${NUMPY_VERSION} ${PYBIN}/pip install setuptools diff --git a/.github/scripts/build-macos.sh b/.github/scripts/build-macos.sh index f6997cd..4984ca7 100755 --- a/.github/scripts/build-macos.sh +++ b/.github/scripts/build-macos.sh @@ -28,6 +28,10 @@ source venv/bin/activate set -x popd +# Upgrade pip and prefer binary packages +python -m pip install --upgrade pip +export PIP_PREFER_BINARY=1 + # Install dependencies pip install numpy==$NUMPY_VERSION wheel delocate setuptools diff --git a/.github/scripts/build-windows.ps1 b/.github/scripts/build-windows.ps1 index ec6bcc1..e8b270d 100644 --- a/.github/scripts/build-windows.ps1 +++ b/.github/scripts/build-windows.ps1 @@ -71,6 +71,9 @@ if (!$env:NUMPY_VERSION) { Initialize-Python +# Prefer binary packages over building from source +$env:PIP_PREFER_BINARY = 1 + Get-ChildItem env: # Build the wheel. diff --git a/.github/scripts/test-linux.sh b/.github/scripts/test-linux.sh index 9d34fb7..f8dfa6f 100755 --- a/.github/scripts/test-linux.sh +++ b/.github/scripts/test-linux.sh @@ -4,20 +4,12 @@ set -e -x # List python versions ls /opt/python -if [ $PYTHON_VERSION == "3.8" ]; then - PYBIN="/opt/python/cp38-cp38/bin" -elif [ $PYTHON_VERSION == "3.9" ]; then - PYBIN="/opt/python/cp39-cp39/bin" -elif [ $PYTHON_VERSION == "3.10" ]; then - PYBIN="/opt/python/cp310-cp310/bin" -elif [ $PYTHON_VERSION == "3.11" ]; then - PYBIN="/opt/python/cp311-cp311/bin" -elif [ $PYTHON_VERSION == "3.12" ]; then - PYBIN="/opt/python/cp312-cp312/bin" -elif [ $PYTHON_VERSION == "3.13" ]; then - PYBIN="/opt/python/cp313-cp313/bin" -else - echo "Unsupported Python version $PYTHON_VERSION" +# Compute PYBIN from PYTHON_VERSION (e.g., "3.14" -> "cp314-cp314") +PYVER_NO_DOT=${PYTHON_VERSION//./} +PYBIN="/opt/python/cp${PYVER_NO_DOT}-cp${PYVER_NO_DOT}/bin" + +if [ ! -d "$PYBIN" ]; then + echo "Python version $PYTHON_VERSION not found at $PYBIN" exit 1 fi PYVER=${PYTHON_VERSION//.} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8905bc9..3ebdec9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,6 +62,12 @@ jobs: python-arch: 'x86_64' python-version: '3.13' numpy-version: '2.2.*' + - os-image: ubuntu-latest + os-name: linux + docker-image: quay.io/pypa/manylinux2014_x86_64 + python-arch: 'x86_64' + python-version: '3.14' + numpy-version: '2.3.*' - os-image: ubuntu-latest os-name: linux @@ -93,6 +99,12 @@ jobs: python-arch: 'aarch64' python-version: '3.13' numpy-version: '2.2.*' + - os-image: ubuntu-latest + os-name: linux + docker-image: quay.io/pypa/manylinux_2_28_aarch64 + python-arch: 'aarch64' + python-version: '3.14' + numpy-version: '2.3.*' - os-image: macos-13 os-name: mac @@ -124,6 +136,12 @@ jobs: macos-min-version: '10.9' python-version: '3.13' numpy-version: '2.2.*' + - os-image: macos-13 + os-name: mac + python-arch: x86_64 + macos-min-version: '10.9' + python-version: '3.14' + numpy-version: '2.3.*' - os-image: macos-14 # M1 os-name: mac @@ -149,6 +167,12 @@ jobs: macos-min-version: '11.0' python-version: '3.13' numpy-version: '2.2.*' + - os-image: macos-14 # M1 + os-name: mac + python-arch: arm64 + macos-min-version: '11.0' + python-version: '3.14' + numpy-version: '2.3.*' - os-image: windows-latest os-name: windows @@ -175,6 +199,11 @@ jobs: python-version: '3.13' python-arch: 'x86_64' numpy-version: '2.2.*' + - os-image: windows-latest + os-name: windows + python-version: '3.14' + python-arch: 'x86_64' + numpy-version: '2.3.*' permissions: security-events: write @@ -282,6 +311,12 @@ jobs: python-arch: 'x86_64' python-version: '3.13' numpy-version: '2.2.*' + - os-image: ubuntu-latest + os-name: linux + docker-image: quay.io/pypa/manylinux2014_x86_64 + python-arch: 'x86_64' + python-version: '3.14' + numpy-version: '2.3.*' - os-image: ubuntu-latest os-name: linux @@ -313,6 +348,12 @@ jobs: python-arch: 'aarch64' python-version: '3.13' numpy-version: '2.2.*' + - os-image: ubuntu-latest + os-name: linux + docker-image: quay.io/pypa/manylinux_2_28_aarch64 + python-arch: 'aarch64' + python-version: '3.14' + numpy-version: '2.3.*' - os-image: windows-latest os-name: windows @@ -339,6 +380,11 @@ jobs: python-version: '3.13' python-arch: 'x86_64' numpy-version: '2.2.*' + - os-image: windows-latest + os-name: windows + python-version: '3.14' + python-arch: 'x86_64' + numpy-version: '2.3.*' runs-on: ${{ matrix.config.os-image }} # container: ${{ matrix.config.docker-image }} From fc34e1861f2a83bdced27427d0696ea193a1a5dd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 14:54:47 +0000 Subject: [PATCH 3/3] Update macOS runner images to macos-15-intel and macos-15 Co-authored-by: letmaik <530988+letmaik@users.noreply.github.com> --- .github/workflows/ci.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3ebdec9..ad18c27 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -106,68 +106,68 @@ jobs: python-version: '3.14' numpy-version: '2.3.*' - - os-image: macos-13 + - os-image: macos-15-intel os-name: mac python-arch: x86_64 macos-min-version: '10.9' python-version: '3.9' numpy-version: '2.0.*' - - os-image: macos-13 + - os-image: macos-15-intel os-name: mac python-arch: x86_64 macos-min-version: '10.9' python-version: '3.10' numpy-version: '2.0.*' - - os-image: macos-13 + - os-image: macos-15-intel os-name: mac python-arch: x86_64 macos-min-version: '10.9' python-version: '3.11' numpy-version: '2.0.*' - - os-image: macos-13 + - os-image: macos-15-intel os-name: mac python-arch: x86_64 macos-min-version: '10.9' python-version: '3.12' numpy-version: '2.0.*' - - os-image: macos-13 + - os-image: macos-15-intel os-name: mac python-arch: x86_64 macos-min-version: '10.9' python-version: '3.13' numpy-version: '2.2.*' - - os-image: macos-13 + - os-image: macos-15-intel os-name: mac python-arch: x86_64 macos-min-version: '10.9' python-version: '3.14' numpy-version: '2.3.*' - - os-image: macos-14 # M1 + - os-image: macos-15 os-name: mac python-arch: arm64 macos-min-version: '11.0' python-version: '3.10' numpy-version: '2.0.*' - - os-image: macos-14 # M1 + - os-image: macos-15 os-name: mac python-arch: arm64 macos-min-version: '11.0' python-version: '3.11' numpy-version: '2.0.*' - - os-image: macos-14 # M1 + - os-image: macos-15 os-name: mac python-arch: arm64 macos-min-version: '11.0' python-version: '3.12' numpy-version: '2.0.*' - - os-image: macos-14 # M1 + - os-image: macos-15 os-name: mac python-arch: arm64 macos-min-version: '11.0' python-version: '3.13' numpy-version: '2.2.*' - - os-image: macos-14 # M1 + - os-image: macos-15 os-name: mac python-arch: arm64 macos-min-version: '11.0'