From b278d9d6883b6aa42f1753f73161b7fe1e28edf2 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Thu, 30 Apr 2026 20:00:29 +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 | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0192a2776..c70e7a549 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 60c770068..0ef31888c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ dynamic = ["version"] description = "Classy Probabilistic Programming" 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 = [ @@ -64,11 +68,12 @@ local_scheme = "no-local-version" [project.optional-dependencies] -optional=[ +jax = ["autoconf[jax]"] +optional = [ + "autofit[jax]", "astropy>=5.0", "getdist==1.4", "nautilus-sampler==1.0.5", - "zeus-mcmc==2.5.4", ] docs=[ From 6c0dc5c9ed36782404f6e50c93e48d8ecb8b59aa Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Thu, 30 Apr 2026 20:14:56 +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 | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c70e7a549..0f9f05166 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 @@ -60,11 +60,7 @@ jobs: pip3 install setuptools pip3 install wheel pip3 install pytest coverage pytest-cov - if [ "${{ matrix.python-version }}" = "3.12" ]; then - pip install ./PyAutoConf "./PyAutoFit[optional]" - else - pip install ./PyAutoConf ./PyAutoFit - fi + pip install ./PyAutoConf "./PyAutoFit[optional]" - name: Run tests run: | export ROOT_DIR=`pwd`