From 1af2840c92a8657ae2637bbc16cbbc010231097b Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Sun, 12 Apr 2026 16:47:54 +0100 Subject: [PATCH 1/7] build: add Python 3.13 to CI matrix and classifiers Add Python 3.13 to the GitHub Actions test matrix so CI runs on both 3.12 and 3.13. Add the 3.13 classifier to pyproject.toml. Part of PyAutoLabs/PyAutoConf#89. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/main.yml | 7 +++++-- pyproject.toml | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1de48285b..6a0b25a49 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.12'] + python-version: ['3.12', '3.13'] steps: - name: Checkout PyAutoConf uses: actions/checkout@v2 @@ -67,7 +67,10 @@ jobs: pip3 install setuptools pip3 install wheel pip3 install pytest coverage pytest-cov - pip install ./PyAutoConf ./PyAutoFit "./PyAutoArray[optional]" "./PyAutoGalaxy[optional]" "./PyAutoLens[optional]" + pip install ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens + if [ "${{ matrix.python-version }}" = "3.12" ]; then + pip install "./PyAutoArray[optional]" "./PyAutoGalaxy[optional]" "./PyAutoLens[optional]" + fi - name: Run tests run: | export ROOT_DIR=`pwd` diff --git a/pyproject.toml b/pyproject.toml index 5ab7affaf..d44d0d2a6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,8 @@ classifiers = [ "Topic :: Scientific/Engineering :: Physics", "Natural Language :: English", "Operating System :: OS Independent", - "Programming Language :: Python :: 3.12" + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13" ] keywords = ["cli"] dependencies = [ From 7a6dcfc299ee938b98815d38c96552d59b76d849 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Sun, 12 Apr 2026 16:55:58 +0100 Subject: [PATCH 2/7] fix: install numba and pynufft on Python 3.13, skip only tf-probability The previous commit skipped all [optional] deps on 3.13 but tests need numba and pynufft. Only tensorflow-probability lacks 3.13 wheels. Also add fail-fast: false so both matrix jobs always run. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6a0b25a49..b1289f2e4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,6 +6,7 @@ jobs: unittest: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: python-version: ['3.12', '3.13'] steps: @@ -70,6 +71,8 @@ jobs: pip install ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens if [ "${{ matrix.python-version }}" = "3.12" ]; then pip install "./PyAutoArray[optional]" "./PyAutoGalaxy[optional]" "./PyAutoLens[optional]" + else + pip install numba pynufft fi - name: Run tests run: | From 2099c08be0eb7ee9adc0736fbe8eef3eb67900ee Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Sun, 12 Apr 2026 17:07:30 +0100 Subject: [PATCH 3/7] fix: skip pynufft on Python 3.13 CI pynufft's build process tries to compile scipy from source in an isolated build environment, failing without system OpenBLAS. Install only numba on 3.13; pynufft remains available via [optional] on 3.12. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b1289f2e4..feb7339a9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,7 +6,7 @@ jobs: unittest: runs-on: ubuntu-latest strategy: - fail-fast: false + fail-fast: false matrix: python-version: ['3.12', '3.13'] steps: @@ -72,7 +72,7 @@ jobs: if [ "${{ matrix.python-version }}" = "3.12" ]; then pip install "./PyAutoArray[optional]" "./PyAutoGalaxy[optional]" "./PyAutoLens[optional]" else - pip install numba pynufft + pip install numba fi - name: Run tests run: | From 444b71ed49967e60ecb747bdccda6911642a4b02 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Sun, 12 Apr 2026 17:17:41 +0100 Subject: [PATCH 4/7] fix: pre-install compiled deps from wheels on Python 3.13 Pip's resolver backtracks through scipy, h5py, contourpy versions on 3.13 because exact-pinned deps constrain the solution space. Pre-install the heavy compiled packages from binary wheels first. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index feb7339a9..a912974da 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -68,10 +68,12 @@ jobs: pip3 install setuptools pip3 install wheel pip3 install pytest coverage pytest-cov - pip install ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens if [ "${{ matrix.python-version }}" = "3.12" ]; then + pip install ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens pip install "./PyAutoArray[optional]" "./PyAutoGalaxy[optional]" "./PyAutoLens[optional]" else + pip install --only-binary :all: scipy numpy matplotlib h5py contourpy + pip install ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens pip install numba fi - name: Run tests From 9f714504a7ef1ac08408ad19d65099d387a1499d Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Sun, 12 Apr 2026 17:24:56 +0100 Subject: [PATCH 5/7] fix: use --only-binary for compiled deps during main install on 3.13 Co-Authored-By: Claude Opus 4.6 --- .github/workflows/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a912974da..f19dce350 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -72,8 +72,7 @@ jobs: pip install ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens pip install "./PyAutoArray[optional]" "./PyAutoGalaxy[optional]" "./PyAutoLens[optional]" else - pip install --only-binary :all: scipy numpy matplotlib h5py contourpy - pip install ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens + pip install --only-binary scipy,numpy,matplotlib,h5py,contourpy ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens pip install numba fi - name: Run tests From 0033d2538e401e9318f8f0a5341b711e6f14fe52 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Sun, 12 Apr 2026 17:29:05 +0100 Subject: [PATCH 6/7] fix: remove --only-binary hack, rely on PyAutoFit anesthetic pin fix Co-Authored-By: Claude Opus 4.6 --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f19dce350..490ef003f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -72,7 +72,7 @@ jobs: pip install ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens pip install "./PyAutoArray[optional]" "./PyAutoGalaxy[optional]" "./PyAutoLens[optional]" else - pip install --only-binary scipy,numpy,matplotlib,h5py,contourpy ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens + pip install ./PyAutoConf ./PyAutoFit ./PyAutoArray ./PyAutoGalaxy ./PyAutoLens pip install numba fi - name: Run tests From 275d62a33a5efa786b882adfc7a4d1df97624b0b Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Sun, 12 Apr 2026 17:33:32 +0100 Subject: [PATCH 7/7] ci: re-trigger after PyAutoFit dict iteration fix Co-Authored-By: Claude Opus 4.6