Skip to content

feat: require Python 3.12 #663

Description

@Jammy2211

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

  • PyAutoLens (primary)

Branch Survey

Repository Current Branch Dirty?
./PyAutoLens main clean

Suggested branch: feature/python-312-floor

Implementation Steps

  1. 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.
  2. Update AGENTS.md so the documented repository floor matches the package metadata.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions