From 113cdb4f861ec6f27060a9f3cd4f5f627643d517 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Thu, 30 Apr 2026 20:00:09 +0100 Subject: [PATCH 1/2] feat(python-version): support Python 3.9-3.14, first-class 3.12/3.13 Wide-support / narrow-first-class model for Python versions across the PyAuto family. Python 3.12 and 3.13 remain the recommended versions. 3.9, 3.10, 3.11, 3.14 install cleanly but emit a loud bypassable warning at import time. JAX moved to optional [jax] extra gated on python_version >= '3.11' (so 3.9/3.10 users get numpy-only mode without install failures). Coordinated change across PyAutoConf, PyAutoArray, PyAutoFit, PyAutoGalaxy, PyAutoLens, PyAutoBuild, and the 6 workspace repos. See sibling PRs on the feature/python-version-policy branch in each repo. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/main.yml | 2 +- pyproject.toml | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 56ae9fdd3..dc40e84ad 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,7 +8,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.12', '3.13'] + python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] steps: - name: Checkout PyAutoConf uses: actions/checkout@v2 diff --git a/pyproject.toml b/pyproject.toml index 8e0ce01c4..3cb33a353 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ dynamic = ["version"] description="PyAuto Data Structures" readme = { file = "README.rst", content-type = "text/x-rst" } license = { text = "MIT" } -requires-python = ">=3.12" +requires-python = ">=3.9" authors = [ { name = "James Nightingale", email = "James.Nightingale@newcastle.ac.uk" }, { name = "Richard Hayes", email = "richard@rghsoftware.co.uk" }, @@ -18,8 +18,12 @@ classifiers = [ "Topic :: Scientific/Engineering :: Physics", "Natural Language :: English", "Operating System :: OS Independent", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13" + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14" ] keywords = ["cli"] dependencies = [ @@ -49,7 +53,9 @@ local_scheme = "no-local-version" [project.optional-dependencies] -optional=[ +jax = ["autoconf[jax]"] +optional = [ + "autoarray[jax]", "numba", "pynufft", "tensorflow-probability==0.25.0" From 386c90bedc8e7dc3d50d51a7c7195063d46f6771 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Thu, 30 Apr 2026 20:14:54 +0100 Subject: [PATCH 2/2] ci: narrow per-PR matrix to 3.12/3.13; install [optional] uniformly Per-PR CI now tests only the first-class Python versions (3.12, 3.13). Wide-span 3.9-3.14 verification moves to PyAutoBuild's python_matrix.yml workflow (weekly + on-demand). Install commands now always use the [optional] extra so JAX is available on both 3.12 and 3.13 (the conftest.py eager `import jax` was failing on 3.13 because the previous CI only added [optional] for 3.12). Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/main.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dc40e84ad..a7960118d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,7 +8,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] + python-version: ['3.12', '3.13'] steps: - name: Checkout PyAutoConf uses: actions/checkout@v2 @@ -37,12 +37,7 @@ jobs: pip3 install setuptools pip3 install wheel pip3 install pytest coverage pytest-cov - pip install ./PyAutoConf ./PyAutoArray - if [ "${{ matrix.python-version }}" = "3.12" ]; then - pip install "./PyAutoArray[optional]" - else - pip install numba pynufft - fi + pip install ./PyAutoConf "./PyAutoArray[optional]" - name: Extract branch name shell: bash