Skip to content

feat(python-version): support Python 3.9-3.14, first-class 3.12/3.13#102

Merged
Jammy2211 merged 2 commits intomainfrom
feature/python-version-policy
Apr 30, 2026
Merged

feat(python-version): support Python 3.9-3.14, first-class 3.12/3.13#102
Jammy2211 merged 2 commits intomainfrom
feature/python-version-policy

Conversation

@Jammy2211
Copy link
Copy Markdown
Collaborator

Summary

Part of the Python version policy change supporting Python 3.9–3.14 across PyAuto. First-class support remains 3.12/3.13; 3.9–3.11 and 3.14 are supported with a loud bypassable warning.

This is the canary repo — it contains the import-time version check that all PyAuto libraries surface to users.

Changes in this repo

  • autoconf/__init__.py: replaced hard RuntimeError for non-3.12+ Pythons with a loud ASCII-bordered banner to stderr plus a UserWarning. Recommended (silent): 3.12, 3.13. All other versions get the banner + warning. <3.11 also gets a "JAX unavailable" note. Bypass via version.python_version_check: False in config/general.yaml unchanged.
  • pyproject.toml: requires-python 3.12 → 3.9. Classifiers expanded to 3.9–3.14. jax, jaxlib, jaxnnls moved out of main dependencies into a new [jax] optional extra gated on python_version >= '3.11'. The existing [optional] extra now pulls autoconf[jax] for back-compat.
  • .github/workflows/main.yml: matrix expanded to [3.9, 3.10, 3.11, 3.12, 3.13, 3.14].

Test plan

  • 95/95 unit tests pass on Python 3.12
  • Banner verified across simulated 3.9, 3.11, 3.12, 3.13, 3.14
  • Per-lib CI matrix runs after merge (3.9–3.14)
  • Autobuild matrix workflow (PyAutoLabs/PyAutoBuild) verifies full stack

This is one of 12 coordinated PRs. See sibling PRs on feature/python-version-policy in PyAutoArray, PyAutoFit, PyAutoGalaxy, PyAutoLens, PyAutoBuild, and the 6 workspace repos.

Jammy2211 and others added 2 commits April 30, 2026 19:59
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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
@Jammy2211 Jammy2211 merged commit a51a97f into main Apr 30, 2026
4 checks passed
@Jammy2211 Jammy2211 deleted the feature/python-version-policy branch April 30, 2026 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant