Overview
Raise PyAutoLens's supported Python floor to 3.12 as the final core-library leg of the ecosystem migration. Keep optional-extra propagation and all behavior-driven dependency pins intact, while removing stale test commentary tied to the retired 3.9/3.10 matrix.
Plan
- Raise package metadata and classifiers to Python 3.12/3.13.
- Preserve the complete dependency and optional-extra structure unchanged.
- Update the repository floor contract and version-neutralize two optional-JAX skip explanations.
- Census metadata, CI, docs, source, and tests for remaining live below-floor support assumptions.
- Validate on Python 3.12 and 3.13, inspect built-wheel metadata, run the ecosystem smoke surface, and require independent review plus the Heart gate before shipping.
Detailed implementation plan
Affected Repositories
Branch Survey
| Repository |
Current Branch |
Dirty? |
| ./PyAutoLens |
main |
clean |
Suggested branch: feature/python-312-floor
Implementation Steps
- Update
pyproject.toml to require Python 3.12 and retain only the Python 3.12/3.13 classifiers. Do not alter dependencies, pins, or the jax, coolest, optional, docs, test, and dev extra topology.
- Update
AGENTS.md so the documented repository floor matches the package metadata.
- In
test_autolens/potential_correction/test_iterative_interferometer.py and test_fit_interferometer.py, retain the missing-JAX skip behavior but remove explanations tied to the retired Python 3.9/3.10 matrix; describe the actual optional-dependency condition instead.
- Search live packaging, CI, docs, source, and tests for remaining pre-3.12 support claims or interpreter compatibility branches. Leave published JOSS papers and historical provenance untouched; leave coordinated release and final last-compatible pip wording to the existing Phase 3/6 tasks.
- Run the full PyAutoLens suite on Python 3.12 and 3.13, build and inspect wheel metadata, then run the six-workspace smoke surface against the fully migrated local upstream chain.
- Obtain Claude Opus 5 CLEAN and an admissible PyAutoHeart verdict on the exact tree before delegating mechanical shipping.
Key Files
pyproject.toml — Python floor and classifiers.
AGENTS.md — repository support guidance.
test_autolens/potential_correction/test_iterative_interferometer.py — version-neutral optional-JAX test rationale.
test_autolens/potential_correction/test_fit_interferometer.py — version-neutral optional-JAX test rationale.
Original Prompt
Click to expand starting prompt
Python 3.12 floor — Phase 1E: PyAutoLens
Type: feature
Target: PyAutoLens
Difficulty: small
Autonomy: supervised
Priority: high
Status: formalised
Parent: python_312_floor_phase_1_core.md
Depends on: python_312_floor_phase_1d_galaxy.md
Scope
In @PyAutoLens, raise metadata/classifiers to 3.12/3.13 and update the
AGENTS.md floor contract. Preserve optional-extra propagation and all
behavior-driven dependency pins. Validate on Python 3.12 and 3.13.
Overview
Raise PyAutoLens's supported Python floor to 3.12 as the final core-library leg of the ecosystem migration. Keep optional-extra propagation and all behavior-driven dependency pins intact, while removing stale test commentary tied to the retired 3.9/3.10 matrix.
Plan
Detailed implementation plan
Affected Repositories
Branch Survey
Suggested branch:
feature/python-312-floorImplementation Steps
pyproject.tomlto require Python 3.12 and retain only the Python 3.12/3.13 classifiers. Do not alter dependencies, pins, or thejax,coolest,optional,docs,test, anddevextra topology.AGENTS.mdso the documented repository floor matches the package metadata.test_autolens/potential_correction/test_iterative_interferometer.pyandtest_fit_interferometer.py, retain the missing-JAX skip behavior but remove explanations tied to the retired Python 3.9/3.10 matrix; describe the actual optional-dependency condition instead.Key Files
pyproject.toml— Python floor and classifiers.AGENTS.md— repository support guidance.test_autolens/potential_correction/test_iterative_interferometer.py— version-neutral optional-JAX test rationale.test_autolens/potential_correction/test_fit_interferometer.py— version-neutral optional-JAX test rationale.Original Prompt
Click to expand starting prompt
Python 3.12 floor — Phase 1E: PyAutoLens
Type: feature
Target: PyAutoLens
Difficulty: small
Autonomy: supervised
Priority: high
Status: formalised
Parent:
python_312_floor_phase_1_core.mdDepends on:
python_312_floor_phase_1d_galaxy.mdScope
In @PyAutoLens, raise metadata/classifiers to 3.12/3.13 and update the
AGENTS.mdfloor contract. Preserve optional-extra propagation and allbehavior-driven dependency pins. Validate on Python 3.12 and 3.13.