Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/docs-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ jobs:
run: |
install=package
case "${{ inputs.package }}" in
autoconf|autonerves) repo=PyAutoConf; deps="" ;;
autofit) repo=PyAutoFit; deps="PyAutoConf" ;;
autoarray) repo=PyAutoArray; deps="PyAutoConf" ;;
autogalaxy) repo=PyAutoGalaxy; deps="PyAutoConf PyAutoFit PyAutoArray" ;;
autolens) repo=PyAutoLens; deps="PyAutoConf PyAutoFit PyAutoArray PyAutoGalaxy" ;;
autoconf|autonerves) repo=PyAutoNerves; deps="" ;;
autofit) repo=PyAutoFit; deps="PyAutoNerves" ;;
autoarray) repo=PyAutoArray; deps="PyAutoNerves" ;;
autogalaxy) repo=PyAutoGalaxy; deps="PyAutoNerves PyAutoFit PyAutoArray" ;;
autolens) repo=PyAutoLens; deps="PyAutoNerves PyAutoFit PyAutoArray PyAutoGalaxy" ;;
# Docs-only repos: no pip package — install docs/requirements.txt.
pyautoscientist) repo=PyAutoBrain; deps=""; install=requirements ;;
*) echo "::error::unknown package '${{ inputs.package }}'"; exit 1 ;;
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/lib-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ jobs:
id: map
run: |
case "${{ inputs.package }}" in
autoconf|autonerves) repo=PyAutoConf; deps="" ;;
autofit) repo=PyAutoFit; deps="PyAutoConf" ;;
autoarray) repo=PyAutoArray; deps="PyAutoConf" ;;
autogalaxy) repo=PyAutoGalaxy; deps="PyAutoConf PyAutoFit PyAutoArray" ;;
autolens) repo=PyAutoLens; deps="PyAutoConf PyAutoFit PyAutoArray PyAutoGalaxy" ;;
autocti) repo=PyAutoCTI; deps="PyAutoConf PyAutoFit PyAutoArray" ;;
autoconf|autonerves) repo=PyAutoNerves; deps="" ;;
autofit) repo=PyAutoFit; deps="PyAutoNerves" ;;
autoarray) repo=PyAutoArray; deps="PyAutoNerves" ;;
autogalaxy) repo=PyAutoGalaxy; deps="PyAutoNerves PyAutoFit PyAutoArray" ;;
autolens) repo=PyAutoLens; deps="PyAutoNerves PyAutoFit PyAutoArray PyAutoGalaxy" ;;
autocti) repo=PyAutoCTI; deps="PyAutoNerves PyAutoFit PyAutoArray" ;;
*) echo "::error::unknown package '${{ inputs.package }}'"; exit 1 ;;
esac
echo "repo=$repo" >> "$GITHUB_OUTPUT"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/smoke-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ name: Smoke Tests (reusable)
# jobs:
# smoke:
# uses: PyAutoLabs/PyAutoHeart/.github/workflows/smoke-tests.yml@main
# with: { chain: "PyAutoConf PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens" }
# with: { chain: "PyAutoNerves PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens" }
# secrets: inherit
#
# The workflow owns the ceremony (dependency-chain checkout at the matching
Expand All @@ -24,7 +24,7 @@ on:
workflow_call:
inputs:
chain:
description: "Space-separated dependency libraries in install order, e.g. 'PyAutoConf PyAutoFit'"
description: "Space-separated dependency libraries in install order, e.g. 'PyAutoNerves PyAutoFit'"
required: true
type: string
python-versions:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/url-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ permissions:
env:
REPOS: >-
HowToFit HowToGalaxy HowToLens
PyAutoConf PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens
PyAutoNerves PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens
autofit_workspace autogalaxy_workspace autolens_workspace
euclid_strong_lens_modeling_pipeline

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/workspace-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ jobs:
if: needs.find_scripts.outputs.mode == 'smoke'
run: |
set -e
for lib in PyAutoConf PyAutoArray PyAutoFit PyAutoGalaxy PyAutoLens; do
for lib in PyAutoNerves PyAutoArray PyAutoFit PyAutoGalaxy PyAutoLens; do
git clone --depth 1 "https://github.com/PyAutoLabs/$lib" "libs/$lib"
done
- name: Set up Python ${{ matrix.python-version }}
Expand Down Expand Up @@ -290,7 +290,7 @@ jobs:
if: needs.find_scripts.outputs.mode == 'smoke'
run: |
LIBS="$(pwd)/libs"
export PYTHONPATH="$LIBS/PyAutoConf:$LIBS/PyAutoArray:$LIBS/PyAutoFit:$LIBS/PyAutoGalaxy:$LIBS/PyAutoLens:$(pwd)/PyAutoHands:$PYTHONPATH"
export PYTHONPATH="$LIBS/PyAutoNerves:$LIBS/PyAutoArray:$LIBS/PyAutoFit:$LIBS/PyAutoGalaxy:$LIBS/PyAutoLens:$(pwd)/PyAutoHands:$PYTHONPATH"
pushd workspace
python3 "$(pwd)/../PyAutoHands/autobuild/run_python.py" \
"${{ matrix.project.name }}" "scripts/${{ matrix.project.directory }}" \
Expand Down Expand Up @@ -380,7 +380,7 @@ jobs:
if: steps.gate.outputs.run == 'true'
run: |
set -e
for lib in PyAutoConf PyAutoArray PyAutoFit PyAutoGalaxy PyAutoLens; do
for lib in PyAutoNerves PyAutoArray PyAutoFit PyAutoGalaxy PyAutoLens; do
git clone --depth 1 "https://github.com/PyAutoLabs/$lib" "libs/$lib"
done
- name: Download generated notebooks
Expand All @@ -406,7 +406,7 @@ jobs:
if: steps.gate.outputs.run == 'true'
run: |
LIBS="$(pwd)/libs"
export PYTHONPATH="$LIBS/PyAutoConf:$LIBS/PyAutoArray:$LIBS/PyAutoFit:$LIBS/PyAutoGalaxy:$LIBS/PyAutoLens:$(pwd)/PyAutoHands:$PYTHONPATH"
export PYTHONPATH="$LIBS/PyAutoNerves:$LIBS/PyAutoArray:$LIBS/PyAutoFit:$LIBS/PyAutoGalaxy:$LIBS/PyAutoLens:$(pwd)/PyAutoHands:$PYTHONPATH"
pushd workspace
python3 "$(pwd)/../PyAutoHands/autobuild/run.py" \
"${{ matrix.project.name }}" "notebooks/${{ matrix.project.directory }}" \
Expand Down
2 changes: 1 addition & 1 deletion config/repos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

repos:
libraries:
- name: PyAutoConf
- name: PyAutoNerves
owner: PyAutoLabs
- name: PyAutoFit
owner: PyAutoLabs
Expand Down
4 changes: 2 additions & 2 deletions config/url_fixups.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ rewrites:
- pattern: (github\.com|githubusercontent\.com)/Jammy2211/(PyAutoArray|PyAutoLens|PyAutoGalaxy)
replacement: \1/PyAutoLabs/\2
description: Jammy2211/<library> → PyAutoLabs/<library>
- pattern: (github\.com|githubusercontent\.com)/(?:Jammy2211|rhayes777)/(PyAutoFit|PyAutoConf)
- pattern: (github\.com|githubusercontent\.com)/(?:Jammy2211|rhayes777)/(PyAutoFit|PyAutoNerves)
replacement: \1/PyAutoLabs/\2
description: Jammy2211|rhayes777/{PyAutoFit,PyAutoConf} → PyAutoLabs/...
description: Jammy2211|rhayes777/{PyAutoFit,PyAutoNerves} → PyAutoLabs/...
- pattern: (github\.com|githubusercontent\.com)/rhayes777/PyAutoGalaxy
replacement: \1/PyAutoLabs/PyAutoGalaxy
description: rhayes777/PyAutoGalaxy → PyAutoLabs/PyAutoGalaxy
Expand Down
2 changes: 1 addition & 1 deletion docs/release_validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ unset `PYAUTO_SMALL_DATASETS` for full-resolution FITS scripts, keep JAX on for
overrides remain per-script.

The full library env-var surface (canonical entry:
`PyAutoConf/autoconf/test_mode.py`) is 13 `PYAUTO_*` vars, not the 4 smoke
`PyAutoNerves/autoconf/test_mode.py`) is 13 `PYAUTO_*` vars, not the 4 smoke
defaults:

```
Expand Down
2 changes: 1 addition & 1 deletion heart/checks/unit_test_timing.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@

# Each library's suite is discovered via its own pytest config (testpaths), so we
# just invoke pytest from the repo root. Import-name maps to repo dir name.
DEFAULT_REPOS = ["PyAutoConf", "PyAutoFit", "PyAutoArray", "PyAutoGalaxy", "PyAutoLens"]
DEFAULT_REPOS = ["PyAutoNerves", "PyAutoFit", "PyAutoArray", "PyAutoGalaxy", "PyAutoLens"]

# A runner maps a repo checkout dir to {test_nodeid: call_seconds} for the
# slowest tests, or None when the suite could not be run. Injected in tests.
Expand Down
4 changes: 2 additions & 2 deletions heart/checks/url_check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ ENTRIES=(
# --- libraries moved Jammy2211|rhayes777 → PyAutoLabs ---
'github\.com/Jammy2211/(PyAutoArray|PyAutoLens|PyAutoGalaxy)|||Jammy2211/<library> (use PyAutoLabs/<library>)'
'githubusercontent\.com/Jammy2211/(PyAutoArray|PyAutoLens|PyAutoGalaxy)|||Jammy2211/<library> in raw URL (use PyAutoLabs/<library>)'
'github\.com/Jammy2211/(PyAutoFit|PyAutoConf)|||Jammy2211/(PyAutoFit|PyAutoConf) (use PyAutoLabs/...)'
'github\.com/rhayes777/(PyAutoFit|PyAutoConf|PyAutoGalaxy|PyAutoBuild)|||rhayes777/<lib> (use PyAutoLabs/<lib>)'
'github\.com/Jammy2211/(PyAutoFit|PyAutoNerves)|||Jammy2211/(PyAutoFit|PyAutoNerves) (use PyAutoLabs/...)'
'github\.com/rhayes777/(PyAutoFit|PyAutoNerves|PyAutoGalaxy|PyAutoBuild)|||rhayes777/<lib> (use PyAutoLabs/<lib>)'

# --- workspace /tree/release/ — same fate as /blob/release/ ---
'github\.com/PyAutoLabs/(autolens_workspace|autogalaxy_workspace|autofit_workspace)/tree/release/|||workspace /tree/release/ branch removed (use /tree/main/ or a tag)'
Expand Down
2 changes: 1 addition & 1 deletion heart/checks/url_sweep.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ CHECK_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
# The repos that previously ran url_check.yml on every PR. Centralised here.
URL_CHECK_REPOS=(
HowToFit HowToGalaxy HowToLens
PyAutoConf PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens
PyAutoNerves PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens
autofit_workspace autogalaxy_workspace autolens_workspace
euclid_strong_lens_modeling_pipeline
)
Expand Down
2 changes: 1 addition & 1 deletion heart/checks/verify_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
set -uo pipefail # NB: no -e — checks must continue past expected failures.

# Unset PYTHONPATH so checks aren't shadowed by user-side editable installs.
# When the calling shell exports PYTHONPATH=/path/to/PyAutoConf:/path/to/...
# When the calling shell exports PYTHONPATH=/path/to/PyAutoNerves:/path/to/...
# (a common setup when developing the libs), throwaway venvs created here
# will still resolve `import autolens` etc. from those local source dirs
# rather than from the just-installed PyPI artefacts. That defeats the
Expand Down
2 changes: 1 addition & 1 deletion heart/validate.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"testpypi_version": "2026.6.30.1.dev64501",
"profile": "release", # env profile the integration tier ran under
"commit_shas": { # per-repo HEAD the rehearsal was built from
"PyAutoConf": "abc123...", "PyAutoFit": "...", "PyAutoArray": "...",
"PyAutoNerves": "abc123...", "PyAutoFit": "...", "PyAutoArray": "...",
"PyAutoGalaxy": "...", "PyAutoLens": "..."
},
"stages": { # per-stage status (pass|fail|skip)
Expand Down
2 changes: 1 addition & 1 deletion skills/cli_noise_clean/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ PYAUTO_DISABLE_JAX=0 # JAX ON so we catch JAX-specific noise

### 2. Pytest noise audit

For each library repo (PyAutoConf, PyAutoFit, PyAutoArray, PyAutoGalaxy, PyAutoLens):
For each library repo (PyAutoNerves, PyAutoFit, PyAutoArray, PyAutoGalaxy, PyAutoLens):

```bash
cd <repo_path>
Expand Down
12 changes: 6 additions & 6 deletions skills/dep_audit/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ In Claude, invoke the same skill as `/dep_audit`.

### 1. Collect current constraints

For each library repo (PyAutoConf, PyAutoFit, PyAutoArray, PyAutoGalaxy, PyAutoLens), read `pyproject.toml` and extract:
For each library repo (PyAutoNerves, PyAutoFit, PyAutoArray, PyAutoGalaxy, PyAutoLens), read `pyproject.toml` and extract:

- Every entry in `dependencies`
- Every entry in `[project.optional-dependencies]` sections
Expand Down Expand Up @@ -95,9 +95,9 @@ Python: >=3.12

| Package | Owner Repo | Constraint | Installed | Latest | Status | Tier |
|---------|-----------|------------|-----------|--------|--------|------|
| numpy | PyAutoConf | >=1.24,<3 | 2.4.4 | 2.4.4 | Current | — |
| numpy | PyAutoNerves | >=1.24,<3 | 2.4.4 | 2.4.4 | Current | — |
| scipy | PyAutoFit | <=1.17.1 | 1.14.0 | 1.17.1 | Cap stale | 1 |
| jax | PyAutoConf | >=0.4.35,<0.10 | 0.4.38 | 0.9.2 | Cap stale | 2 |
| jax | PyAutoNerves | >=0.4.35,<0.10 | 0.4.38 | 0.9.2 | Cap stale | 2 |
...

Tier 1 — Safe cap bumps: <count> packages
Expand Down Expand Up @@ -125,9 +125,9 @@ This table defines which repo "owns" each constraint (i.e., where the version sp

| Package | Owner | Inherited By |
|---------|-------|-------------|
| numpy | PyAutoConf | all |
| jax, jaxlib | PyAutoConf | all |
| jaxnnls | PyAutoConf | all |
| numpy | PyAutoNerves | all |
| jax, jaxlib | PyAutoNerves | all |
| jaxnnls | PyAutoNerves | all |
| scipy | PyAutoFit, PyAutoArray | Galaxy, Lens |
| matplotlib | PyAutoFit (uncapped), PyAutoArray (floored) | Galaxy, Lens |
| astropy | PyAutoArray, PyAutoGalaxy | Lens |
Expand Down
4 changes: 2 additions & 2 deletions skills/health_sweep/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Quick "is everything still green?" sweep across the PyAuto stack. Refreshes loca
## Scope

**Libraries (run `pytest`):**
- PyAutoConf
- PyAutoNerves
- PyAutoArray
- PyAutoFit
- PyAutoGalaxy
Expand Down Expand Up @@ -95,7 +95,7 @@ Single table, one row per repo:
```
Repo | Branch | Sync | Tests
---------------------------|--------|------------------|---------------------------
PyAutoConf | main | synced | ✓ unit (412/412)
PyAutoNerves | main | synced | ✓ unit (412/412)
PyAutoArray | main | already up to date | ✓ unit (1240/1240)
PyAutoFit | main | dirty — skipped | ✗ unit (3 failed)
PyAutoGalaxy | main | synced | ✓ unit (980/980)
Expand Down
2 changes: 1 addition & 1 deletion skills/pyauto-status/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Read all three registry files (schemas in `PyAutoMind/README.md`):

### 2. Live-scan repos and worktrees

Scan each canonical checkout (PyAutoConf, PyAutoFit, PyAutoArray, PyAutoGalaxy,
Scan each canonical checkout (PyAutoNerves, PyAutoFit, PyAutoArray, PyAutoGalaxy,
PyAutoLens, autofit_workspace, autogalaxy_workspace, autolens_workspace,
autolens_workspace_test, euclid_strong_lens_modeling_pipeline, HowToLens):

Expand Down
4 changes: 2 additions & 2 deletions skills/smoke_test/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,10 @@ for ws in autofit_workspace autogalaxy_workspace autolens_workspace \
autolens_workspace_test euclid_strong_lens_modeling_pipeline HowToLens; do
[ -d "$WORK_DIR/$ws" ] || git clone "https://github.com/PyAutoLabs/$ws.git" "$WORK_DIR/$ws"
done
for lib in PyAutoConf PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens; do
for lib in PyAutoNerves PyAutoFit PyAutoArray PyAutoGalaxy PyAutoLens; do
[ -d "$WORK_DIR/$lib" ] || git clone "https://github.com/PyAutoLabs/$lib.git" "$WORK_DIR/$lib"
done
export PYTHONPATH="$WORK_DIR/PyAutoConf:$WORK_DIR/PyAutoFit:$WORK_DIR/PyAutoArray:$WORK_DIR/PyAutoGalaxy:$WORK_DIR/PyAutoLens:$PYTHONPATH"
export PYTHONPATH="$WORK_DIR/PyAutoNerves:$WORK_DIR/PyAutoFit:$WORK_DIR/PyAutoArray:$WORK_DIR/PyAutoGalaxy:$WORK_DIR/PyAutoLens:$PYTHONPATH"
export NUMBA_CACHE_DIR=/tmp/numba_cache MPLCONFIGDIR=/tmp/matplotlib
```

Expand Down
2 changes: 1 addition & 1 deletion tests/test_dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

from heart import dashboard

LIBS = ["PyAutoConf", "PyAutoFit", "PyAutoArray", "PyAutoGalaxy", "PyAutoLens"]
LIBS = ["PyAutoNerves", "PyAutoFit", "PyAutoArray", "PyAutoGalaxy", "PyAutoLens"]
TS = "2026-06-01T00:00:00+00:00"


Expand Down
2 changes: 1 addition & 1 deletion tests/test_manifest_drift.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
check PyAutoHeart/config/repos.yaml: OK
check ensure_workspace_labels.sh: 2 mismatch(es)
✗ ensure_workspace_labels targets 'rhayes777/PyAutoFit', manifest says 'PyAutoLabs/PyAutoFit'
✗ ensure_workspace_labels targets 'rhayes777/PyAutoConf', manifest says 'PyAutoLabs/PyAutoConf'
✗ ensure_workspace_labels targets 'rhayes777/PyAutoNerves', manifest says 'PyAutoLabs/PyAutoNerves'
check local checkout origins: 1 mismatch(es)
✗ 'PyAutoFit': origin is 'rhayes777/PyAutoFit', manifest says 'PyAutoLabs/PyAutoFit'
"""
Expand Down
6 changes: 3 additions & 3 deletions tests/test_readiness.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from heart import readiness

LIBS = ["PyAutoConf", "PyAutoFit", "PyAutoArray", "PyAutoGalaxy", "PyAutoLens"]
LIBS = ["PyAutoNerves", "PyAutoFit", "PyAutoArray", "PyAutoGalaxy", "PyAutoLens"]

# Deterministic 40-char main HEAD sha per library; the baseline validation
# report's commit_shas match these, so the release-validation gate stays GREEN.
Expand Down Expand Up @@ -565,10 +565,10 @@ def test_red_dominates_yellow():

def test_missing_library_is_stale_unknown():
snap = make_snapshot()
del snap["repos"]["PyAutoConf"]
del snap["repos"]["PyAutoNerves"]
v = compute(snap)
assert v["verdict"] == "stale"
assert any("PyAutoConf" in r and "unknown" in r for r in v["stale_reasons"])
assert any("PyAutoNerves" in r and "unknown" in r for r in v["stale_reasons"])


def test_empty_snapshot_not_green_no_crash():
Expand Down
4 changes: 2 additions & 2 deletions tests/test_validate.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def _write(path, payload):
}

SHAS = {
"PyAutoConf": "1" * 40,
"PyAutoNerves": "1" * 40,
"PyAutoFit": "2" * 40,
"PyAutoArray": "3" * 40,
"PyAutoGalaxy": "4" * 40,
Expand Down Expand Up @@ -194,7 +194,7 @@ def test_ingest_explicit_overrides(tmp_path):
)
assert report["profile"] == "release"
assert report["testpypi_version"] == "9.9.9"
assert report["commit_shas"]["PyAutoConf"] == "1" * 40
assert report["commit_shas"]["PyAutoNerves"] == "1" * 40


def test_ingest_explicit_file_path_not_dir(tmp_path):
Expand Down
Loading