From 5af7889ae6d43b6220791a0ab7b54d70668bd060 Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Sat, 22 Aug 2026 20:44:18 -0400 Subject: [PATCH 1/2] build: floor autonerves at 2026.8.23.1 for the SMALLDAT regime stamp The previous floor, autonerves>=2026.8.22.1, was the newest release on PyPI but predates the SMALLDAT regime stamp (PyAutoNerves#153/#154). A PyPI-installed autoarray therefore resolved an autonerves whose FITS writer emits no card at all: should_simulate read the regime as "unknown" and fell back to the shape heuristic, which provably cannot see capped interferometer datasets -- the case the stamp exists for. The stamp was inert for anyone installing rather than running from a checkout. 2026.8.23.1 is the first release carrying it (nerves 0ecefa0). Verified against the published wheel in a clean venv, not the source tree: the card is written as a genuine FITS boolean in both regimes. The existing PyAutoLens#687/#702 reason for this floor is kept -- both reasons are load-bearing and the comment now says so. Deliberately unchanged: - the shape fallback in should_simulate and _is_capped_at_the_current_cap on the capped branch. This floor governs what a fresh install WRITES; it says nothing about datasets already on disk, every one of which is unstamped. Those fallbacks are what protect them. - the duplicated "SMALLDAT" literal in dataset_util. Importing it from autonerves becomes safe now the floor names a stamped release, but the duplication is documented and a stale reader degrades to the fallback, which is the safe direction. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01QqMr6QKGALYhcxpQAHZtry --- pyproject.toml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 592f76b6..83a6889a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,14 @@ dependencies = [ # Floor, not a pin (PyAutoLens#687) — bump to the first release with JAX # in autonerves' base dependencies once it exists (PyAutoLens#702), so # backtracking cannot pair this autoarray with a jax-optional autonerves. - "autonerves>=2026.8.22.1", + # + # It ALSO floors the SMALLDAT regime stamp (PyAutoNerves#153/#154), first + # released in 2026.8.23.1. Below that release autonerves' FITS writer emits + # no card at all, so should_simulate reads the regime as "unknown" and falls + # back to the shape heuristic -- which cannot see capped interferometer + # datasets, the case the stamp exists for. Both reasons are load-bearing: + # neither replaces the other, so do not drop either when next bumping. + "autonerves>=2026.8.23.1", "astropy>=5.0", "decorator>=4.0.0", "dill>=0.3.1.1", From 1f7de3cc6359b282727a1be1e709bd55e4a8ad4e Mon Sep 17 00:00:00 2001 From: James Nightingale Date: Wed, 26 Aug 2026 16:20:53 -0400 Subject: [PATCH 2/2] docs: align SMALLDAT reader comment with dependency floor --- autoarray/util/dataset_util.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/autoarray/util/dataset_util.py b/autoarray/util/dataset_util.py index afd91422..bd3ed05f 100644 --- a/autoarray/util/dataset_util.py +++ b/autoarray/util/dataset_util.py @@ -8,10 +8,10 @@ # The FITS header card ``autonerves.fitsable.stamp_small_datasets_regime`` writes # on every array the stack outputs. Deliberately duplicated here rather than -# imported: ``pyproject.toml`` floors autonerves at a release that predates the -# stamp, so an import would hard-fail against a legitimately-resolved older -# autonerves. Reading the card by name degrades to "absent" instead, which is -# exactly the fallback path below. Keep in sync with PyAutoNerves#153. +# imported even though ``pyproject.toml`` now floors autonerves at the first +# stamped release: the card name is an on-disk format detail, and keeping the +# reader independent of the writer's Python API preserves the safe "absent" +# fallback if that API moves. Keep in sync with PyAutoNerves#153. SMALL_DATASETS_HEADER_KEY = "SMALLDAT"