Repository navigation
Closed
Description
Overview
Raise PyAutoArray's maintained Python floor to 3.12 and remove compatibility machinery that becomes unreachable at that floor. Keep the independently justified nufftax>=0.4.0,<0.5.0 constraint and all scientific behavior unchanged.
Plan
- Raise package metadata and classifiers to Python 3.12/3.13.
- Remove only the Python-version markers and pre-3.12 nufftax error path made obsolete by the new floor.
- Update the corresponding tests, collection-skip wording, and contributor contract atomically.
- Validate both supported interpreters, built metadata, downstream smoke, review, and Heart.
Detailed implementation plan
Work Classification
Library
Affected Repositories
- PyAutoArray (primary)
Worktree root
/home/jammy/Code/PyAutoLabs/.codex-worktrees/python-312-floor
Branch Survey
| Repository | Current Branch | Dirty? |
|---|---|---|
| ./PyAutoArray | main | clean |
No conflicting worktree claim exists. The earlier phase-1 crash-fix issue #416 is closed.
Suggested branch: feature/python-312-floor
Implementation Steps
- Update
pyproject.tomlto require Python >=3.12, advertise only 3.12/3.13, and remove the two now-tautological Python markers from the optional/devnufftaxrequirements without changing>=0.4.0,<0.5.0. - Simplify
autoarray/operators/transformer.py::nufftax_exceptionto the supported-interpreter missing-dependency message and remove the now-unusedsysimport. - Delete the mocked Python 3.11 exception test in
test_autoarray/operators/test_transformer.py; simplify the supported-path test so it exercises the real runtime rather than mockingsys.version_info. - Make
test_autoarray/conftest.pyskip documentation/reason version-neutral while preserving the exact import-presence behavior and DFT/pynufft exclusions. - Update the floor statement in
AGENTS.md. - Run the complete PyAutoArray suite on Python 3.12 and 3.13; build and inspect wheel metadata; run the downstream smoke gate; obtain Review Faculty CLEAN and an admissible Heart verdict.
Key Files
pyproject.toml— Python floor, classifiers, and nufftax requirements.autoarray/operators/transformer.py— obsolete pre-floor exception branch.test_autoarray/operators/test_transformer.py— atomic branch/test cleanup.test_autoarray/conftest.py— version-neutral optional-backend skip wording.AGENTS.md— contributor contract.
Scope boundaries
- Keep
nufftax>=0.4.0,<0.5.0, JAX, SciPy, Astropy, TFP, and all other behavior-driven constraints unchanged. - No public symbol, signature, scientific behavior, workspace script, generated artifact, or release operation changes.
- Python 3.14 and JAX 0.11 remain separate follow-ups.
Original Prompt
Click to expand starting prompt
Ok, lets remove support for anything below python3.12, do a census to make sure we simplify requriements, build server, testing, etc. Also make sure all docs are updated.
Metadata
Metadata
Assignees
Labels
No labels
Activity
Jammy2211 commentedon Jul 29, 2026
Phase 1B autonomous checkpoint — parked at the strict smoke gate
Implementation is complete in the local feature/python-312-floor worktree but intentionally remains uncommitted and unpushed.
Validated:
Separate pre-existing finding:
Curated ecosystem smoke:
The same script has prior history as a known long timeout, and the Phase 1B change only raises packaging metadata and removes an unreachable pre-3.12 nufftax branch/test. Nevertheless, the autonomous ship contract does not permit me to waive a failed smoke leg. Review, Heart re-check, commit, push, and PR creation therefore did not run.
Checkpoint question: please explicitly authorize treating this known non-causal timeout as accepted smoke evidence and resuming the ship gate, or direct a separate smoke-fix/parking decision. All dependent Python-floor phases remain queued behind Phase 1B.
Jammy2211 commentedon Jul 29, 2026
Human authorization received in the development session on 2026-07-29:
This explicitly answers the parked checkpoint by accepting autolens_workspace_test/imaging/subhalo_recovery.py exceeding the 300-second smoke limit as known, non-causal evidence for Phase 1B.
The resumed ship gate is complete:
Proceeding to commit, push, and pending-release PR. Merge is contemporaneously human-authorized by the quoted instruction, contingent on the exact reviewed head remaining unchanged and CI passing.
Jammy2211 commentedon Jul 29, 2026
Phase 1B merge outcome
PyAutoArray PR #419 merged unchanged at merge commit 41c55a4 after all four CI checks passed on the exact Claude Opus 5-reviewed head ca98473.
Delivered:
No release was performed. Per the human instruction, the campaign now advances to Phase 1C (PyAutoFit). This issue remains open pending separate human close authorization.
Jammy2211 commentedon Jul 30, 2026
Phase 1B merged unchanged as PyAutoArray#419 (41c55a4), CI 4/4 green on the reviewed head. python-312-floor arc complete (record: PyAutoMind/complete/2026/07/python-312-floor.md; parent PyAutoNerves#142 closed). Closing on the same 2026-07-30 human cleanup authorization.