diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index 2cf4dde..126f237 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -1,7 +1,7 @@
# Copilot Coding Agent Instructions
-You are working on **PyAutoConf**, the configuration, serialization and I/O
-foundation of the PyAuto ecosystem (package `autoconf`).
+You are working on **PyAutoNerves**, the configuration, serialization and I/O
+foundation of the PyAuto ecosystem (package `autonerves`).
The canonical, agent-agnostic instructions for this repo live in **`AGENTS.md`** at
the repository root — build and test commands, architecture, the base-layer config
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 248e1a2..da5cea3 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -9,5 +9,5 @@ jobs:
unittest:
uses: PyAutoLabs/PyAutoHeart/.github/workflows/lib-tests.yml@main
with:
- package: autoconf
+ package: autonerves
secrets: inherit
diff --git a/.gitignore b/.gitignore
index ad85c0e..17fbd68 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-test_autoconf/unit/json_prior/code/priors/
+test_autonerves/unit/json_prior/code/priors/
test/autofit/test_fit
# Byte-compiled / optimized / DLL files
diff --git a/.url_check_allowlist.txt b/.url_check_allowlist.txt
index 993f8fb..c5ab33e 100644
--- a/.url_check_allowlist.txt
+++ b/.url_check_allowlist.txt
@@ -10,4 +10,4 @@
http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy # CODE_OF_CONDUCT.md:305
# Internal PyAuto docs — pages renamed, need editorial fix
-https://pyautofit.readthedocs.io/en/latest/general/adding_a_model_component.html # autoconf/directory_config.py:235
+https://pyautofit.readthedocs.io/en/latest/general/adding_a_model_component.html # autonerves/directory_config.py:235
diff --git a/AGENTS.md b/AGENTS.md
index c6fe8ee..ecac93d 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,10 +1,10 @@
-# PyAutoConf — Agent Instructions
+# PyAutoNerves — Agent Instructions
Canonical, agent-agnostic instructions for this repo. `CLAUDE.md` imports this
file; any tool that does not process `@`-imports should read this directly.
**This repo is the Nerves organ of the PyAuto organism** — the base
-configuration/serialization layer (`autoconf`) that every scientific library
+configuration/serialization layer (`autonerves`) that every scientific library
imports. It is a full organ (promoted to the seventh organ 2026-07); the
organism map below is generated from `PyAutoMind/repos.yaml`.
@@ -25,7 +25,7 @@ Canonical boundaries live in `PyAutoBrain/ORGANISM.md`; the full body map
| **Heart** | PyAutoHeart | Health/readiness — the authoritative "is it safe to release?" verdict. |
| **Memory** | PyAutoMemory | Long-term scientific/software/project knowledge (see science pointer below). |
| **Gut** | PyAutoGut | Owns the lifecycle of condemned self-material (stale branches, stashes, dead code/tests): holds it as durable, recoverable git refs through a transit window and voids it on a sweep. The storage mirror of Memory (retention vs release). |
-| **Nerves** | PyAutoConf | The Nerves — the configuration/serialization layer connecting workspace conventions to libraries (layered config, version handshake, test_mode), delivered as the `autoconf` package. |
+| **Nerves** | PyAutoNerves | The Nerves — the configuration/serialization layer connecting workspace conventions to libraries (layered config, version handshake, test_mode), delivered as the `autonerves` package. |
Call chain (always this order): **Brain → Heart (gate) → Build (execute)**. Brain agents are **conductors** (front-door; a human drives them; they decide *and* act) or **faculties** (read-only opinions the conductors consult; they judge and stop). New capability grows as a faculty, not a new organ, unless it owns state or effects no existing organ can.
@@ -34,46 +34,46 @@ Generated from `PyAutoMind/repos.yaml` + `PyAutoBrain/ORGANISM.md`; edit there,
## What this repo is
-**PyAutoConf** (package `autoconf`) is the configuration, serialization, and
+**PyAutoNerves** (package `autonerves`) is the configuration, serialization, and
I/O foundation of the PyAuto ecosystem: layered config with overrides,
dict/JSON/CSV serialization, FITS I/O, JSON-based priors, and the shared
`jax_wrapper` / `test_mode` utilities.
-Dependency direction: autoconf is the **base layer**. It does **not** import
+Dependency direction: autonerves is the **base layer**. It does **not** import
`autofit`, `autoarray`, `autogalaxy`, or `autolens`. All four of those depend
-on autoconf, so any public-API change here ripples downstream.
+on autonerves, so any public-API change here ripples downstream.
## Related repos
- **Source siblings (downstream):** PyAutoFit, PyAutoArray, PyAutoGalaxy,
- PyAutoLens — all depend on autoconf.
+ PyAutoLens — all depend on autonerves.
- No `_workspace`, `_workspace_test`, or HowTo companion repo.
-- No `docs/` / RTD site — the package source and `test_autoconf/` are the
+- No `docs/` / RTD site — the package source and `test_autonerves/` are the
authoritative reference.
## Architecture
-- `autoconf/conf.py` — layered config system (`Config` / `conf.instance`).
-- `autoconf/dictable.py` — dict / JSON serialization (`output_to_json` / `from_json`).
-- `autoconf/fitsable.py` — FITS I/O (`output_to_fits` / `ndarray_via_fits_from`).
-- `autoconf/json_prior/` — JSON-based priors.
-- `autoconf/tools/` — shared decorators and helpers.
-- `test_autoconf/` — test suite.
+- `autonerves/conf.py` — layered config system (`Config` / `conf.instance`).
+- `autonerves/dictable.py` — dict / JSON serialization (`output_to_json` / `from_json`).
+- `autonerves/fitsable.py` — FITS I/O (`output_to_fits` / `ndarray_via_fits_from`).
+- `autonerves/json_prior/` — JSON-based priors.
+- `autonerves/tools/` — shared decorators and helpers.
+- `test_autonerves/` — test suite.
## Quick commands
```bash
pip install -e ".[dev]" # install with dev/test extras
-python -m pytest test_autoconf/ # full test suite
-python -m pytest test_autoconf/tools/test_decorators.py # one focused test
-black autoconf/ # formatter (advisory — not gated)
+python -m pytest test_autonerves/ # full test suite
+python -m pytest test_autonerves/tools/test_decorators.py # one focused test
+black autonerves/ # formatter (advisory — not gated)
```
In a sandboxed / restricted environment, point numba and matplotlib at
writable caches:
```bash
-NUMBA_CACHE_DIR=/tmp/numba_cache MPLCONFIGDIR=/tmp/matplotlib python -m pytest test_autoconf/
+NUMBA_CACHE_DIR=/tmp/numba_cache MPLCONFIGDIR=/tmp/matplotlib python -m pytest test_autonerves/
```
## CI / definition of green
@@ -84,11 +84,11 @@ is no black/ruff/flake8 gate — formatting is advisory. (`requires-python` in
## Public API
-The public surface is defined authoritatively in `autoconf/__init__.py` — read
+The public surface is defined authoritatively in `autonerves/__init__.py` — read
it rather than trusting a hand-maintained list. Canonical import:
```python
-from autoconf import conf
+from autonerves import conf
```
Key surfaces: `Config` / `conf.instance`, `output_to_json` / `from_json`
@@ -106,7 +106,7 @@ Key surfaces: `Config` / `conf.instance`, `output_to_json` / `from_json`
1. Read the issue description and any linked plan.
2. Identify affected files and make the change.
-3. Run the full suite: `python -m pytest test_autoconf/`.
+3. Run the full suite: `python -m pytest test_autonerves/`.
4. If you changed public API, say so explicitly — PyAutoFit, PyAutoArray,
PyAutoGalaxy, and PyAutoLens all depend on this package and may need updates.
5. Ensure all tests pass before opening a PR.
diff --git a/CLAUDE.md b/CLAUDE.md
index eb8aadc..efdd9a3 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1,4 +1,4 @@
-# PyAutoConf — agent instructions
+# PyAutoNerves — agent instructions
The canonical, agent-agnostic instructions live in `AGENTS.md`. Claude Code loads them
via the import below; if your tool does not process `@`-imports, open `AGENTS.md` in
this directory and read it directly.
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 9dd3442..776848e 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,11 +1,11 @@
-# PyAutoConf Code of Conduct
+# PyAutoNerves Code of Conduct
**Table of Contents**
- [The Short Version](#the-short-version)
- [The Longer Version](#the-longer-version)
- - [PyAutoConf Diversity Statement](#project-diversity-statement)
- - [PyAutoConf Code of Conduct: Introduction & Scope](#project-code-of-conduct-introduction--scope)
+ - [PyAutoNerves Diversity Statement](#project-diversity-statement)
+ - [PyAutoNerves Code of Conduct: Introduction & Scope](#project-code-of-conduct-introduction--scope)
- [Standards for Behavior](#standards-for-behavior)
- [Unacceptable Behavior](#unacceptable-behavior)
- [Reporting Guidelines](#reporting-guidelines)
@@ -28,12 +28,12 @@
## The Short Version
Be kind to others. Do not insult or put down others. Behave professionally. Remember that harassment and sexist,
-racist, or exclusionary jokes are not appropriate for PyAutoConf.
+racist, or exclusionary jokes are not appropriate for PyAutoNerves.
All communication should be appropriate for a professional audience including people of many different backgrounds.
Sexual language and imagery is not appropriate.
-PyAutoConf is dedicated to providing a harassment-free community for everyone, regardless of gender, sexual orientation,
+PyAutoNerves is dedicated to providing a harassment-free community for everyone, regardless of gender, sexual orientation,
gender identity and expression, disability, physical appearance, body size, race, or religion. We do not tolerate
harassment of community members in any form.
@@ -41,9 +41,9 @@ Thank you for helping make this a welcoming, friendly community for all.
## The Longer Version
-### PyAutoConf Diversity Statement
+### PyAutoNerves Diversity Statement
-PyAutoConf welcomes and encourages participation in our community by people of all backgrounds and identities. We
+PyAutoNerves welcomes and encourages participation in our community by people of all backgrounds and identities. We
are committed to promoting and sustaining a culture that values mutual respect, tolerance, and learning, and we work
together as a community to help each other live out these values.
@@ -54,28 +54,28 @@ or research.
Although we have phrased the formal diversity statement generically to make it all-inclusive, we recognize that there
are specific identities that are impacted by systemic discrimination and marginalization. We welcome all people to
-participate in the PyAutoConf community regardless of their identity or background.
+participate in the PyAutoNerves community regardless of their identity or background.
-### PyAutoConf Code of Conduct: Introduction & Scope
+### PyAutoNerves Code of Conduct: Introduction & Scope
-This code of conduct should be honored by everyone who participates in the PyAutoConf community. It should be
-honored in any PyAutoConf-related activities, by anyone claiming affiliation with PyAutoConf, and especially when
-someone is representing PyAutoConf in any role (including as an event volunteer or speaker).
+This code of conduct should be honored by everyone who participates in the PyAutoNerves community. It should be
+honored in any PyAutoNerves-related activities, by anyone claiming affiliation with PyAutoNerves, and especially when
+someone is representing PyAutoNerves in any role (including as an event volunteer or speaker).
-This code of conduct applies to all spaces managed by PyAutoConf, including all public and private mailing lists,
+This code of conduct applies to all spaces managed by PyAutoNerves, including all public and private mailing lists,
issue trackers, wikis, forums, and any other communication channel used by our community. The code of conduct equally
-applies at PyAutoConf events and governs standards of behavior for attendees, speakers, volunteers, booth staff,
+applies at PyAutoNerves events and governs standards of behavior for attendees, speakers, volunteers, booth staff,
and event sponsors.
This code is not exhaustive or complete. It serves to distill our understanding of a collaborative, inclusive
community culture. Please try to follow this code in spirit as much as in letter, to create a friendly and
-productive environment that enriches the PyAutoConf community.
+productive environment that enriches the PyAutoNerves community.
-The PyAutoConf Code of Conduct follows below.
+The PyAutoNerves Code of Conduct follows below.
### Standards for Behavior
-PyAutoConf is a worldwide community. All communication should be appropriate for a professional audience including
+PyAutoNerves is a worldwide community. All communication should be appropriate for a professional audience including
people of many different backgrounds.
**Please always be kind and courteous. There's never a need to be mean or rude or disrespectful.** Thank you for
@@ -83,7 +83,7 @@ helping make this a welcoming, friendly community for all.
We strive to:
-**Be empathetic, welcoming, friendly, and patient.** We remember that PyAutoConf is crafted by human beings who
+**Be empathetic, welcoming, friendly, and patient.** We remember that PyAutoNerves is crafted by human beings who
deserve to be treated with kindness and empathy. We work together to resolve conflict and assume good intentions.
We may all experience some frustration from time to time, but we do not allow frustration to turn into a personal
attack. A community where people feel uncomfortable or threatened is not a productive one.
@@ -127,7 +127,7 @@ physical or electronic addresses, without explicit permission
### Reporting Guidelines
If you believe someone is violating the code of conduct, please report this in a timely manner. Code of conduct
-violations reduce the value of the community for everyone. The PyAutoConf leadership team takes reports of misconduct
+violations reduce the value of the community for everyone. The PyAutoNerves leadership team takes reports of misconduct
very seriously and is committed to preserving and maintaining the welcoming nature of our community.
**All reports will be kept confidential.**
@@ -136,30 +136,30 @@ In some cases we may determine that a public statement will need to be made. If
all involved parties and reporters will remain confidential unless those individuals instruct us otherwise.
All complaints will be reviewed and investigated and will result in a response that is deemed necessary and
-appropriate to the circumstances. The PyAutoConf team commits to maintaining confidentiality with regard to the
+appropriate to the circumstances. The PyAutoNerves team commits to maintaining confidentiality with regard to the
reporter of an incident.
For possibly unintentional breaches of the code of conduct, you may want to respond to the person and point out
this code of conduct (either in public or in private, whatever is most appropriate). If you would prefer not to do
-that, please report the issue to PyAutoConf directly, or ask James Nightingale for advice in confidence. Complete contact
+that, please report the issue to PyAutoNerves directly, or ask James Nightingale for advice in confidence. Complete contact
information is below, under "How to Submit a Report."
-Take care of each other. Alert PyAutoConf if you notice a dangerous situation, someone in distress, or violations of
+Take care of each other. Alert PyAutoNerves if you notice a dangerous situation, someone in distress, or violations of
this code of conduct, even if they seem inconsequential.
#### How to Submit a Report
-**If you feel your safety is in jeopardy or the situation is an emergency, we urge you to contact local law enforcement before making a report to PyAutoConf.** (In the U.K., dial 999.)
+**If you feel your safety is in jeopardy or the situation is an emergency, we urge you to contact local law enforcement before making a report to PyAutoNerves.** (In the U.K., dial 999.)
-PyAutoConf is committed to promptly addressing any reported issues. If you have experienced or witnessed behavior that
-violates the PyAutoConf Code of Conduct, please report it by sending an email to one of the members of the PyAutoConf
+PyAutoNerves is committed to promptly addressing any reported issues. If you have experienced or witnessed behavior that
+violates the PyAutoNerves Code of Conduct, please report it by sending an email to one of the members of the PyAutoNerves
CoC Enforcement Team.
#### Person(s) Responsible for Resolving Complaints
-All reports of breaches of the code of conduct will be investigated and handled by the **PyAutoConf Code of Conduct Enforcement Team**.
+All reports of breaches of the code of conduct will be investigated and handled by the **PyAutoNerves Code of Conduct Enforcement Team**.
-The current PyAutoConf Code of Conduct Enforcement Team consists of:
+The current PyAutoNerves Code of Conduct Enforcement Team consists of:
- James Nightingale
@@ -167,7 +167,7 @@ The current PyAutoConf Code of Conduct Enforcement Team consists of:
#### Conflicts of Interest
-In the event of any conflict of interest, the team member will immediately notify the PyAutoConf Code of Conduct
+In the event of any conflict of interest, the team member will immediately notify the PyAutoNerves Code of Conduct
Enforcement Team and recuse themselves if necessary.
#### What to Include in a Report
@@ -188,7 +188,7 @@ used), **your account of what happened**, and any available **supporting records
anyone else observe the incident?)
- **Any other relevant information** you believe we should have
-At PyAutoConf Events: Event staff will attempt to gather and write down the above information from anyone making a
+At PyAutoNerves Events: Event staff will attempt to gather and write down the above information from anyone making a
verbal report in-person at an event. Recording the details in writing is exceedingly important in order for us to
effectively respond to reports. If event staff write down a report taken verbally, then the person making the
report will be asked to review the written report for accuracy.
@@ -201,15 +201,15 @@ What happens after a report is filed?
#### Acknowledgment and Responding to Immediate Needs
-PyAutoConf and/or our event staff will attempt to ensure your safety and help with any immediate needs, particularly
-at an in-person event. PyAutoConf will make every effort to **acknowledge receipt within 24 hours** (and we'll aim
+PyAutoNerves and/or our event staff will attempt to ensure your safety and help with any immediate needs, particularly
+at an in-person event. PyAutoNerves will make every effort to **acknowledge receipt within 24 hours** (and we'll aim
for much more quickly than that).
#### Reviewing the Report
-PyAutoConf will make all efforts to **review the incident within three days** and determine:
+PyAutoNerves will make all efforts to **review the incident within three days** and determine:
- Whether this is an ongoing situation, or if there is a threat to anyone's physical safety
- What happened
@@ -218,36 +218,36 @@ PyAutoConf will make all efforts to **review the incident within three days** an
#### Contacting the Person Reported
-After PyAutoConf has had time to review and discuss the report, someone will attempt to contact the person who is the
+After PyAutoNerves has had time to review and discuss the report, someone will attempt to contact the person who is the
subject of the report to inform them of what has been reported about them. We will then ask that person for their
account of what happened.
#### Response and Potential Consequences
-Once PyAutoConf has completed our investigation of the report, we will make a decision as to how to respond. The
+Once PyAutoNerves has completed our investigation of the report, we will make a decision as to how to respond. The
person making a report will not normally be consulted as to the proposed resolution of the issue, except insofar as
we need to understand how to help them feel safe.
-Potential consequences for violating the PyAutoConf code of conduct include:
+Potential consequences for violating the PyAutoNerves code of conduct include:
- Nothing (if we determine that no violation occurred)
-- Private feedback or reprimand from PyAutoConf to the individual(s) involved
+- Private feedback or reprimand from PyAutoNerves to the individual(s) involved
- Warning the person to cease their behavior and that any further reports will result in sanctions
- A public announcement that an incident occurred
- Mediation (only if both reporter and reportee agree)
- An imposed vacation (e.g. asking someone to "take a week off" from a mailing list)
-- A permanent or temporary ban from some or all PyAutoConf spaces (mailing lists, GitHub repos, in-person events, etc.)
+- A permanent or temporary ban from some or all PyAutoNerves spaces (mailing lists, GitHub repos, in-person events, etc.)
- Assistance to the complainant with a report to other bodies, for example, institutional offices or appropriate law enforcement agencies
-- Removing a person from PyAutoConf membership or other formal affiliation
+- Removing a person from PyAutoNerves membership or other formal affiliation
- Publishing an account of the harassment and calling for the resignation of the alleged harasser from their
responsibilities (usually pursued by people without formal authority: may be called for if the person is the
event leader, or refuses to stand aside from the conflict of interest, or similar)
-- Any other response that PyAutoConf deems necessary and appropriate to the situation
+- Any other response that PyAutoNerves deems necessary and appropriate to the situation
-At PyAutoConf events, if a participant engages in behavior that violates this code of conduct, the conference
+At PyAutoNerves events, if a participant engages in behavior that violates this code of conduct, the conference
organizers and staff may take any action they deem appropriate.
-Potential consequences for violating the PyAutoConf Code of Conduct at an in-person event include:
+Potential consequences for violating the PyAutoNerves Code of Conduct at an in-person event include:
- Warning the person to cease their behavior and that any further reports will result in sanctions
- Requiring that the person avoid any interaction with, and physical proximity to, the person they are harassing
@@ -256,14 +256,14 @@ for the remainder of the event
- Not publishing the video or slides of a talk that violated the policy
- Not allowing a speaker who violated the policy to give (further) talks at the event now or in the future
- Immediately ending any event volunteer responsibilities and privileges the reported person holds
-- Requiring that the person not volunteer for future events PyAutoConf runs (either indefinitely or for a certain time period)
+- Requiring that the person not volunteer for future events PyAutoNerves runs (either indefinitely or for a certain time period)
- Expelling the person from the event without a refund
- Requiring that the person immediately leave the event and not return
- Banning the person from future events (either indefinitely or for a certain time period)
-- Any other response that PyAutoConf deems necessary and appropriate to the situation
+- Any other response that PyAutoNerves deems necessary and appropriate to the situation
No one espousing views or values contrary to the standards of our code of conduct will be permitted to hold any
-position representing PyAutoConf, including volunteer positions. PyAutoConf has the right and responsibility to
+position representing PyAutoNerves, including volunteer positions. PyAutoNerves has the right and responsibility to
remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not
aligned with this code of conduct.
@@ -274,12 +274,12 @@ We will contact the person who is the subject of the report to let them know wha
the report, if any.
Our policy is to make sure that everyone aware of the initial incident is also made aware that official action has
-been taken, while still respecting the privacy of individuals. PyAutoConf may choose to make a public report of the
+been taken, while still respecting the privacy of individuals. PyAutoNerves may choose to make a public report of the
incident, while maintaining the anonymity of those involved.
#### Appealing a Decision
-To appeal a decision of PyAutoConf, contact James Nightingale via email at
+To appeal a decision of PyAutoNerves, contact James Nightingale via email at
[*james.w.nightingale@durham.ac.uk*](mailto:james.w.nightingale@durham.ac.uk) with your appeal and
the Leadership Team will review the case.
@@ -287,12 +287,12 @@ the Leadership Team will review the case.
#### Confirming Receipt
-PyAutoConf will make every effort to acknowledge receipt of a report **within 24 hours** (and we'll aim for much more
+PyAutoNerves will make every effort to acknowledge receipt of a report **within 24 hours** (and we'll aim for much more
quickly than that).
#### Reviewing the Report
-PyAutoConf will make all efforts to review the incident **within three days**.
+PyAutoNerves will make all efforts to review the incident **within three days**.
#### Consequences & Resolution
@@ -304,4 +304,4 @@ the situation is not yet resolved.
This code of conduct has been adapted from [*NUMFOCUS code of conduct*](https://numfocus.org/code-of-conduct),
which is adapted from numerous sources, including the [*Geek Feminism wiki, created by the Ada Initiative and other volunteers, which is under a Creative Commons Zero license*](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy), the [*Contributor Covenant version 1.2.0*](http://contributor-covenant.org/version/1/2/0/), the [*Bokeh Code of Conduct*](https://github.com/bokeh/bokeh/blob/main/docs/CODE_OF_CONDUCT.md), the [*SciPy Code of Conduct*](https://github.com/jupyter/governance/blob/main/conduct/enforcement.md), the [*Carpentries Code of Conduct*](https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html#enforcement-manual), and the [*NeurIPS Code of Conduct*](https://neurips.cc/public/CodeOfConduct).
-**PyAutoConf Code of Conduct is licensed under the [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/).**
\ No newline at end of file
+**PyAutoNerves Code of Conduct is licensed under the [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/).**
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3950442..319f7b6 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -66,7 +66,7 @@ Contributions are welcome and greatly appreciated!
3. Make your changes and run tests:
```
- python -m pytest test_autoconf/
+ python -m pytest test_autonerves/
```
4. Commit, push, and submit a pull request.
diff --git a/MANIFEST.in b/MANIFEST.in
index 7a2909e..9b76746 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -8,5 +8,5 @@ prune dist
recursive-exclude *.egg-info *
include requirements.txt
-global-exclude test_autoconf
-recursive-exclude test_autoconf *
\ No newline at end of file
+global-exclude test_autonerves
+recursive-exclude test_autonerves *
\ No newline at end of file
diff --git a/README.md b/README.md
index e1e41cc..26c2590 100644
--- a/README.md
+++ b/README.md
@@ -1,20 +1,20 @@
-
+
-# PyAutoConf
+# PyAutoNerves
🧬 **PyAutoScientist → ** — this repo is one organ of the PyAuto organism.
📖 **Full documentation → ** — the whole PyAutoScientist organism, including how to fork and run your own.
-**PyAutoConf** (package `autoconf`) is the configuration, serialization, and
+**PyAutoNerves** (package `autonerves`) is the configuration, serialization, and
I/O foundation of the [PyAuto](https://github.com/PyAutoLabs) ecosystem. It
provides a layered configuration system with workspace overrides, dict / JSON /
CSV serialization of arbitrary objects, and FITS I/O.
`PyAutoFit`, `PyAutoArray`, `PyAutoGalaxy`, and `PyAutoLens` all depend on
-autoconf: it supplies their packaged default config, the object-serialization
+autonerves: it supplies their packaged default config, the object-serialization
used to persist models and results, and shared utilities (`test_mode`,
`jax_wrapper`). Centralising these here keeps a single, consistent config and
I/O layer beneath every library. Within the
@@ -24,7 +24,7 @@ Nerves — the layer connecting the workspace's conventions to every library.
## Install
```bash
-pip install autoconf
+pip install autonerves
```
## Examples
@@ -32,7 +32,7 @@ pip install autoconf
Layered config — read a directory of YAML into a queryable `Config`:
```python
-from autoconf.conf import Config
+from autonerves.conf import Config
config = Config("path/to/config") # directory of YAML files
value = config["general"]["model"]["section"]["value"]
@@ -41,7 +41,7 @@ value = config["general"]["model"]["section"]["value"]
JSON serialization — round-trip arbitrary Python objects:
```python
-from autoconf.dictable import output_to_json, from_json
+from autonerves.dictable import output_to_json, from_json
data = {"sersic_index": 4.0, "centre": [0.0, 0.0]}
output_to_json(data, "model.json")
@@ -52,7 +52,7 @@ FITS I/O — write and read a NumPy array:
```python
import numpy as np
-from autoconf.fitsable import output_to_fits, ndarray_via_fits_from
+from autonerves.fitsable import output_to_fits, ndarray_via_fits_from
arr = np.arange(12.0).reshape(3, 4)
output_to_fits(values=arr, file_path="demo.fits", overwrite=True)
@@ -61,6 +61,6 @@ loaded = ndarray_via_fits_from(file_path="demo.fits", hdu=0) # np.allclose(arr
## Links
-- Source & tests: [`autoconf/`](autoconf), [`test_autoconf/`](test_autoconf)
+- Source & tests: [`autonerves/`](autonerves), [`test_autonerves/`](test_autonerves)
- Agent/contributor instructions: [`AGENTS.md`](AGENTS.md)
- Ecosystem: [PyAutoLabs on GitHub](https://github.com/PyAutoLabs)
diff --git a/autoconf/__init__.py b/autonerves/__init__.py
similarity index 87%
rename from autoconf/__init__.py
rename to autonerves/__init__.py
index a1c1442..2796b3e 100644
--- a/autoconf/__init__.py
+++ b/autonerves/__init__.py
@@ -1,11 +1,11 @@
"""
-autoconf — configuration, serialization, and I/O helpers for the PyAuto ecosystem.
+autonerves — configuration, serialization, and I/O helpers for the PyAuto ecosystem.
Text-format I/O surfaces:
-- :mod:`autoconf.dictable` — JSON (``output_to_json`` / ``from_json``)
-- :mod:`autoconf.fitsable` — FITS (``output_to_fits`` / ``ndarray_via_fits_from``)
-- :mod:`autoconf.csvable` — CSV (``output_to_csv`` / ``list_from_csv``)
+- :mod:`autonerves.dictable` — JSON (``output_to_json`` / ``from_json``)
+- :mod:`autonerves.fitsable` — FITS (``output_to_fits`` / ``ndarray_via_fits_from``)
+- :mod:`autonerves.csvable` — CSV (``output_to_csv`` / ``list_from_csv``)
"""
import sys
import warnings
diff --git a/autoconf/class_path.py b/autonerves/class_path.py
similarity index 100%
rename from autoconf/class_path.py
rename to autonerves/class_path.py
diff --git a/autoconf/conf.py b/autonerves/conf.py
similarity index 95%
rename from autoconf/conf.py
rename to autonerves/conf.py
index 8beac61..0f6a89e 100644
--- a/autoconf/conf.py
+++ b/autonerves/conf.py
@@ -8,14 +8,14 @@
import yaml
-from autoconf.directory_config import (
+from autonerves.directory_config import (
RecursiveConfig,
PriorConfigWrapper,
AbstractConfig,
family,
)
-from autoconf.exc import ConfigException
-from autoconf.json_prior.config import JSONPriorConfig
+from autonerves.exc import ConfigException
+from autonerves.json_prior.config import JSONPriorConfig
logger = logging.getLogger(__name__)
diff --git a/autoconf/csvable.py b/autonerves/csvable.py
similarity index 97%
rename from autoconf/csvable.py
rename to autonerves/csvable.py
index 8bf8e72..1e8ddf8 100644
--- a/autoconf/csvable.py
+++ b/autonerves/csvable.py
@@ -1,7 +1,7 @@
"""
Generic CSV reader/writer helpers for the PyAuto ecosystem.
-Sits alongside :mod:`autoconf.dictable` (JSON) and :mod:`autoconf.fitsable`
+Sits alongside :mod:`autonerves.dictable` (JSON) and :mod:`autonerves.fitsable`
(FITS) as the third text-format I/O surface. The functions here are schema
agnostic — callers layer their own column conventions on top (see e.g.
``autolens.point.dataset`` for the PointDataset schema layer).
diff --git a/autoconf/dictable.py b/autonerves/dictable.py
similarity index 99%
rename from autoconf/dictable.py
rename to autonerves/dictable.py
index 50b7ed6..ff3da6d 100644
--- a/autoconf/dictable.py
+++ b/autonerves/dictable.py
@@ -7,7 +7,7 @@
from pathlib import Path
from typing import Union, Callable, Set, Tuple
-from autoconf.class_path import get_class_path, get_class
+from autonerves.class_path import get_class_path, get_class
logger = logging.getLogger(__name__)
diff --git a/autoconf/directory_config.py b/autonerves/directory_config.py
similarity index 96%
rename from autoconf/directory_config.py
rename to autonerves/directory_config.py
index 1125fb8..d7be68b 100644
--- a/autoconf/directory_config.py
+++ b/autonerves/directory_config.py
@@ -5,7 +5,7 @@
import yaml
-from autoconf import exc
+from autonerves import exc
class AbstractConfig(ABC):
diff --git a/autoconf/exc.py b/autonerves/exc.py
similarity index 100%
rename from autoconf/exc.py
rename to autonerves/exc.py
diff --git a/autoconf/fitsable.py b/autonerves/fitsable.py
similarity index 100%
rename from autoconf/fitsable.py
rename to autonerves/fitsable.py
diff --git a/autoconf/jax_wrapper.py b/autonerves/jax_wrapper.py
similarity index 100%
rename from autoconf/jax_wrapper.py
rename to autonerves/jax_wrapper.py
diff --git a/autoconf/json_prior/__init__.py b/autonerves/json_prior/__init__.py
similarity index 100%
rename from autoconf/json_prior/__init__.py
rename to autonerves/json_prior/__init__.py
diff --git a/autoconf/json_prior/config.py b/autonerves/json_prior/config.py
similarity index 96%
rename from autoconf/json_prior/config.py
rename to autonerves/json_prior/config.py
index 851e6d7..e75df53 100644
--- a/autoconf/json_prior/config.py
+++ b/autonerves/json_prior/config.py
@@ -7,7 +7,7 @@
import yaml
-from autoconf.directory_config import family
+from autonerves.directory_config import family
logger = logging.getLogger(__name__)
diff --git a/autoconf/json_prior/generate.py b/autonerves/json_prior/generate.py
similarity index 100%
rename from autoconf/json_prior/generate.py
rename to autonerves/json_prior/generate.py
diff --git a/autoconf/mock/__init__.py b/autonerves/mock/__init__.py
similarity index 100%
rename from autoconf/mock/__init__.py
rename to autonerves/mock/__init__.py
diff --git a/autoconf/mock/mock_real.py b/autonerves/mock/mock_real.py
similarity index 100%
rename from autoconf/mock/mock_real.py
rename to autonerves/mock/mock_real.py
diff --git a/autoconf/output.py b/autonerves/output.py
similarity index 93%
rename from autoconf/output.py
rename to autonerves/output.py
index fc44fc6..dfc8f4f 100644
--- a/autoconf/output.py
+++ b/autonerves/output.py
@@ -2,7 +2,7 @@
from typing import Callable
import logging
-from autoconf.conf import instance
+from autonerves.conf import instance
logger = logging.getLogger(__name__)
diff --git a/autoconf/setup_colab.py b/autonerves/setup_colab.py
similarity index 98%
rename from autoconf/setup_colab.py
rename to autonerves/setup_colab.py
index 12511b4..0914258 100644
--- a/autoconf/setup_colab.py
+++ b/autonerves/setup_colab.py
@@ -8,7 +8,7 @@
On Colab, ``setup`` installs the project's package stack, clones the matching
workspace repository (at the tag matching the installed release where one
-exists) and points the autoconf config / output paths at it.
+exists) and points the autonerves config / output paths at it.
The per-project package lists, workspace repositories and Colab directories
live in the ``_PROJECTS`` registry below — one table, shared by the public
@@ -35,7 +35,7 @@
"anesthetic==2.8.14",
]
-_AUTOFIT_STACK = ["autoconf", "autofit"]
+_AUTOFIT_STACK = ["autonerves", "autofit"]
_AUTOGALAXY_STACK = _AUTOFIT_STACK + ["autoarray", "autogalaxy"]
_AUTOLENS_STACK = _AUTOGALAXY_STACK + ["autolens"]
@@ -244,8 +244,8 @@ def _colab_setup(
_clone_workspace(workspace_repo, workspace_dir, top_package)
- # --- Configure autoconf paths ---
- from autoconf import conf
+ # --- Configure autonerves paths ---
+ from autonerves import conf
os.chdir(workspace_dir)
diff --git a/autoconf/setup_notebook.py b/autonerves/setup_notebook.py
similarity index 90%
rename from autoconf/setup_notebook.py
rename to autonerves/setup_notebook.py
index 68c2088..d70d6eb 100644
--- a/autoconf/setup_notebook.py
+++ b/autonerves/setup_notebook.py
@@ -8,12 +8,12 @@ def setup_notebook():
Finds the workspace root by walking up from the current directory
looking for a ``config`` directory (the marker for a PyAuto workspace),
- changes to it, reconfigures autoconf paths, and enables inline plotting.
+ changes to it, reconfigures autonerves paths, and enables inline plotting.
"""
root = _find_workspace_root()
os.chdir(root)
- from autoconf import conf
+ from autonerves import conf
conf.instance.push(
new_path=root / "config",
diff --git a/autoconf/test_mode.py b/autonerves/test_mode.py
similarity index 100%
rename from autoconf/test_mode.py
rename to autonerves/test_mode.py
diff --git a/autoconf/tools/__init__.py b/autonerves/tools/__init__.py
similarity index 100%
rename from autoconf/tools/__init__.py
rename to autonerves/tools/__init__.py
diff --git a/autoconf/tools/decorators.py b/autonerves/tools/decorators.py
similarity index 92%
rename from autoconf/tools/decorators.py
rename to autonerves/tools/decorators.py
index b60592b..ad73abc 100644
--- a/autoconf/tools/decorators.py
+++ b/autonerves/tools/decorators.py
@@ -32,7 +32,7 @@ def cached_property_names(cls) -> frozenset:
anywhere in ``cls``'s MRO.
Recognises both stdlib :class:`functools.cached_property` and the
- autoconf :class:`CachedProperty` wrapper above. Walks the MRO so
+ autonerves :class:`CachedProperty` wrapper above. Walks the MRO so
descriptors declared on base classes are picked up.
The first call for a given class walks the MRO and caches the resulting
@@ -56,7 +56,7 @@ def cached_property_names(cls) -> frozenset:
Returns
-------
A frozenset of attribute names corresponding to ``cached_property`` or
- autoconf ``CachedProperty`` descriptors found in ``cls.__mro__``.
+ autonerves ``CachedProperty`` descriptors found in ``cls.__mro__``.
"""
cache = cls.__dict__.get("__cached_property_names_cache__")
if cache is not None:
diff --git a/autoconf/workspace.py b/autonerves/workspace.py
similarity index 99%
rename from autoconf/workspace.py
rename to autonerves/workspace.py
index 9a1bb19..0994608 100644
--- a/autoconf/workspace.py
+++ b/autonerves/workspace.py
@@ -3,7 +3,7 @@
import warnings
from pathlib import Path
-from autoconf import exc
+from autonerves import exc
class WorkspaceVersionMismatchError(exc.ConfigException):
diff --git a/eden.yaml b/eden.yaml
index 86bcaea..38e1d00 100644
--- a/eden.yaml
+++ b/eden.yaml
@@ -1,2 +1,2 @@
-name: autoconf
+name: autonerves
eden_prefix: VIS_CTI
diff --git a/llms.txt b/llms.txt
index 191205b..f0a18d8 100644
--- a/llms.txt
+++ b/llms.txt
@@ -1,10 +1,10 @@
-# PyAutoConf
+# PyAutoNerves
-> PyAutoConf (package `autoconf`) is the foundational configuration, serialization and I/O layer of the PyAuto ecosystem — layered config with overrides, dict/JSON/FITS serialization, JSON priors, and shared utilities every other library inherits. This file is a signpost: it points you to the right resource by intent — see where it is used, or work on the library itself.
+> PyAutoNerves (package `autonerves`) is the foundational configuration, serialization and I/O layer of the PyAuto ecosystem — layered config with overrides, dict/JSON/FITS serialization, JSON priors, and shared utilities every other library inherits. This file is a signpost: it points you to the right resource by intent — see where it is used, or work on the library itself.
## Where it's used
-- PyAutoConf has no standalone workspace or tutorial series; it underpins every other PyAuto library. You meet it in practice through the consumer libraries — [PyAutoFit](https://github.com/PyAutoLabs/PyAutoFit), [PyAutoGalaxy](https://github.com/PyAutoLabs/PyAutoGalaxy), [PyAutoLens](https://github.com/PyAutoLabs/PyAutoLens) — and their workspaces.
+- PyAutoNerves has no standalone workspace or tutorial series; it underpins every other PyAuto library. You meet it in practice through the consumer libraries — [PyAutoFit](https://github.com/PyAutoLabs/PyAutoFit), [PyAutoGalaxy](https://github.com/PyAutoLabs/PyAutoGalaxy), [PyAutoLens](https://github.com/PyAutoLabs/PyAutoLens) — and their workspaces.
## Work on it (contributors / coding agents)
diff --git a/pyproject.toml b/pyproject.toml
index 4175f5c..71a309b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,7 +3,7 @@ requires = ["setuptools>=79.0", "setuptools-scm", "wheel"]
build-backend = "setuptools.build_meta"
[project]
-name = "autoconf"
+name = "autonerves"
dynamic = ["version"]
description = "PyAuto Configration"
readme = { file = "README.md", content-type = "text/markdown" }
@@ -33,13 +33,13 @@ dependencies = [
]
[project.urls]
-Homepage = "https://github.com/PyAutoLabs/PyAutoConf"
+Homepage = "https://github.com/PyAutoLabs/PyAutoNerves"
[tool.setuptools]
include-package-data = true
[tool.setuptools.packages.find]
-exclude = ["docs", "test_autoconf", "test_autoconf*"]
+exclude = ["docs", "test_autonerves", "test_autonerves*"]
[tool.setuptools_scm]
version_scheme = "post-release"
@@ -52,14 +52,14 @@ jax = [
"jaxnnls==1.0.1; python_version >= '3.11'"
]
optional = [
- "autoconf[jax]",
+ "autonerves[jax]",
"astropy>=5.0"
]
test = ["pytest"]
dev = ["pytest", "black"]
[tool.pytest.ini_options]
-testpaths = ["test_autoconf"]
+testpaths = ["test_autonerves"]
filterwarnings = [
"ignore:cuda_plugin_extension:UserWarning",
"ignore::DeprecationWarning:jax",
diff --git a/scripts/convert_config.py b/scripts/convert_config.py
index 4c8f6f6..47ddaaa 100755
--- a/scripts/convert_config.py
+++ b/scripts/convert_config.py
@@ -13,7 +13,7 @@
import yaml
-from autoconf.directory_config import RecursiveConfig, YAMLConfig
+from autonerves.directory_config import RecursiveConfig, YAMLConfig
target_path = Path(sys.argv[1])
diff --git a/scripts/generate_priors.py b/scripts/generate_priors.py
index 74755dc..c0f6e59 100755
--- a/scripts/generate_priors.py
+++ b/scripts/generate_priors.py
@@ -5,7 +5,7 @@
from sys import argv
-from autoconf.json_prior import generate
+from autonerves.json_prior import generate
if __name__ == "__main__":
try:
diff --git a/test_autoconf/__init__.py b/test_autonerves/__init__.py
similarity index 100%
rename from test_autoconf/__init__.py
rename to test_autonerves/__init__.py
diff --git a/test_autoconf/conftest.py b/test_autonerves/conftest.py
similarity index 90%
rename from test_autoconf/conftest.py
rename to test_autonerves/conftest.py
index 34507cb..f35aa3f 100644
--- a/test_autoconf/conftest.py
+++ b/test_autonerves/conftest.py
@@ -2,7 +2,7 @@
import pytest
-from autoconf import conf
+from autonerves import conf
@pytest.fixture(scope="session", name="files_directory")
diff --git a/test_autoconf/files/3x3_ones.fits b/test_autonerves/files/3x3_ones.fits
similarity index 100%
rename from test_autoconf/files/3x3_ones.fits
rename to test_autonerves/files/3x3_ones.fits
diff --git a/test_autoconf/files/4x3_ones.fits b/test_autonerves/files/4x3_ones.fits
similarity index 100%
rename from test_autoconf/files/4x3_ones.fits
rename to test_autonerves/files/4x3_ones.fits
diff --git a/test_autoconf/files/array.fits b/test_autonerves/files/array.fits
similarity index 100%
rename from test_autoconf/files/array.fits
rename to test_autonerves/files/array.fits
diff --git a/test_autoconf/files/array_out.fits b/test_autonerves/files/array_out.fits
similarity index 100%
rename from test_autoconf/files/array_out.fits
rename to test_autonerves/files/array_out.fits
diff --git a/test_autoconf/files/config/embedded.yaml b/test_autonerves/files/config/embedded.yaml
similarity index 100%
rename from test_autoconf/files/config/embedded.yaml
rename to test_autonerves/files/config/embedded.yaml
diff --git a/test_autoconf/files/config/general.yaml b/test_autonerves/files/config/general.yaml
similarity index 100%
rename from test_autoconf/files/config/general.yaml
rename to test_autonerves/files/config/general.yaml
diff --git a/test_autoconf/files/config/label.ini b/test_autonerves/files/config/label.ini
similarity index 100%
rename from test_autoconf/files/config/label.ini
rename to test_autonerves/files/config/label.ini
diff --git a/test_autoconf/files/config/logging.yaml b/test_autonerves/files/config/logging.yaml
similarity index 100%
rename from test_autoconf/files/config/logging.yaml
rename to test_autonerves/files/config/logging.yaml
diff --git a/test_autoconf/files/config/one/two.ini b/test_autonerves/files/config/one/two.ini
similarity index 100%
rename from test_autoconf/files/config/one/two.ini
rename to test_autonerves/files/config/one/two.ini
diff --git a/test_autoconf/files/config/output.yaml b/test_autonerves/files/config/output.yaml
similarity index 100%
rename from test_autoconf/files/config/output.yaml
rename to test_autonerves/files/config/output.yaml
diff --git a/test_autoconf/files/config/priors/mock_real.json b/test_autonerves/files/config/priors/mock_real.json
similarity index 100%
rename from test_autoconf/files/config/priors/mock_real.json
rename to test_autonerves/files/config/priors/mock_real.json
diff --git a/test_autoconf/files/config/priors/subdirectory/subconfig.yaml b/test_autonerves/files/config/priors/subdirectory/subconfig.yaml
similarity index 100%
rename from test_autoconf/files/config/priors/subdirectory/subconfig.yaml
rename to test_autonerves/files/config/priors/subdirectory/subconfig.yaml
diff --git a/test_autoconf/files/config/priors/test_yaml_config.yaml b/test_autonerves/files/config/priors/test_yaml_config.yaml
similarity index 100%
rename from test_autoconf/files/config/priors/test_yaml_config.yaml
rename to test_autonerves/files/config/priors/test_yaml_config.yaml
diff --git a/test_autoconf/files/config/text/label.ini b/test_autonerves/files/config/text/label.ini
similarity index 100%
rename from test_autoconf/files/config/text/label.ini
rename to test_autonerves/files/config/text/label.ini
diff --git a/test_autoconf/files/config_flip/general.yaml b/test_autonerves/files/config_flip/general.yaml
similarity index 100%
rename from test_autoconf/files/config_flip/general.yaml
rename to test_autonerves/files/config_flip/general.yaml
diff --git a/test_autoconf/files/default/default/other.ini b/test_autonerves/files/default/default/other.ini
similarity index 100%
rename from test_autoconf/files/default/default/other.ini
rename to test_autonerves/files/default/default/other.ini
diff --git a/test_autoconf/files/default/default_file.ini b/test_autonerves/files/default/default_file.ini
similarity index 100%
rename from test_autoconf/files/default/default_file.ini
rename to test_autonerves/files/default/default_file.ini
diff --git a/test_autoconf/files/default/embedded.yaml b/test_autonerves/files/default/embedded.yaml
similarity index 100%
rename from test_autoconf/files/default/embedded.yaml
rename to test_autonerves/files/default/embedded.yaml
diff --git a/test_autoconf/files/default/general.ini b/test_autonerves/files/default/general.ini
similarity index 100%
rename from test_autoconf/files/default/general.ini
rename to test_autonerves/files/default/general.ini
diff --git a/test_autoconf/files/default/logging.yaml b/test_autonerves/files/default/logging.yaml
similarity index 100%
rename from test_autoconf/files/default/logging.yaml
rename to test_autonerves/files/default/logging.yaml
diff --git a/test_autoconf/files/default/one.yaml b/test_autonerves/files/default/one.yaml
similarity index 100%
rename from test_autoconf/files/default/one.yaml
rename to test_autonerves/files/default/one.yaml
diff --git a/test_autoconf/files/default/priors/mock_real.json b/test_autonerves/files/default/priors/mock_real.json
similarity index 100%
rename from test_autoconf/files/default/priors/mock_real.json
rename to test_autonerves/files/default/priors/mock_real.json
diff --git a/test_autoconf/files/default/text/label.ini b/test_autonerves/files/default/text/label.ini
similarity index 100%
rename from test_autoconf/files/default/text/label.ini
rename to test_autonerves/files/default/text/label.ini
diff --git a/test_autoconf/json_prior/__init__.py b/test_autonerves/json_prior/__init__.py
similarity index 100%
rename from test_autoconf/json_prior/__init__.py
rename to test_autonerves/json_prior/__init__.py
diff --git a/test_autoconf/json_prior/source_code/__init__.py b/test_autonerves/json_prior/source_code/__init__.py
similarity index 100%
rename from test_autoconf/json_prior/source_code/__init__.py
rename to test_autonerves/json_prior/source_code/__init__.py
diff --git a/test_autoconf/json_prior/source_code/module.py b/test_autonerves/json_prior/source_code/module.py
similarity index 100%
rename from test_autoconf/json_prior/source_code/module.py
rename to test_autonerves/json_prior/source_code/module.py
diff --git a/test_autoconf/json_prior/source_code/subdirectory/__init__.py b/test_autonerves/json_prior/source_code/subdirectory/__init__.py
similarity index 100%
rename from test_autoconf/json_prior/source_code/subdirectory/__init__.py
rename to test_autonerves/json_prior/source_code/subdirectory/__init__.py
diff --git a/test_autoconf/json_prior/source_code/subdirectory/subconfig.py b/test_autonerves/json_prior/source_code/subdirectory/subconfig.py
similarity index 100%
rename from test_autoconf/json_prior/source_code/subdirectory/subconfig.py
rename to test_autonerves/json_prior/source_code/subdirectory/subconfig.py
diff --git a/test_autoconf/json_prior/test_config.py b/test_autonerves/json_prior/test_config.py
similarity index 90%
rename from test_autoconf/json_prior/test_config.py
rename to test_autonerves/json_prior/test_config.py
index 6b52674..2dd9023 100644
--- a/test_autoconf/json_prior/test_config.py
+++ b/test_autonerves/json_prior/test_config.py
@@ -6,7 +6,7 @@ def test_lookup_cache_repeats_and_misses():
probe in for_class_and_suffix_path performs repeatedly by design.
"""
import pytest
- from autoconf.json_prior.config import JSONPriorConfig
+ from autonerves.json_prior.config import JSONPriorConfig
config = JSONPriorConfig({"module.Class": {"value": 1}})
diff --git a/test_autoconf/json_prior/test_generate.py b/test_autonerves/json_prior/test_generate.py
similarity index 93%
rename from test_autoconf/json_prior/test_generate.py
rename to test_autonerves/json_prior/test_generate.py
index b4117df..63321fa 100644
--- a/test_autoconf/json_prior/test_generate.py
+++ b/test_autonerves/json_prior/test_generate.py
@@ -4,7 +4,7 @@
import pytest
-from autoconf.json_prior import generate as g
+from autonerves.json_prior import generate as g
directory = Path(__file__).parent
package_directory = directory / "source_code"
diff --git a/test_autoconf/json_prior/test_json_config.py b/test_autonerves/json_prior/test_json_config.py
similarity index 55%
rename from test_autoconf/json_prior/test_json_config.py
rename to test_autonerves/json_prior/test_json_config.py
index f805f8a..d2284be 100644
--- a/test_autoconf/json_prior/test_json_config.py
+++ b/test_autonerves/json_prior/test_json_config.py
@@ -1,12 +1,12 @@
import pytest
-import autoconf as aconf
-from autoconf.mock.mock_real import SphProfile
+import autonerves as aconf
+from autonerves.mock.mock_real import SphProfile
@pytest.fixture(name="geometry_profile_path")
def make_geometry_profile_path():
- return ["autoconf", "mock", "mock_real", "SphProfile"]
+ return ["autonerves", "mock", "mock_real", "SphProfile"]
def test_path_for_class(geometry_profile_path):
@@ -18,44 +18,44 @@ def test_path_for_class(geometry_profile_path):
[
(
{
- "autoconf.mock.mock_real.SphProfile": "test",
- "autoconf.mock.mock_real.Other": "toast",
+ "autonerves.mock.mock_real.SphProfile": "test",
+ "autonerves.mock.mock_real.Other": "toast",
},
- ["autoconf.mock.mock_real.SphProfile", "autoconf.mock.mock_real.Other"],
+ ["autonerves.mock.mock_real.SphProfile", "autonerves.mock.mock_real.Other"],
),
(
- {"autoconf.mock.mock_real": {"SphProfile": "test", "Other": "toast"}},
+ {"autonerves.mock.mock_real": {"SphProfile": "test", "Other": "toast"}},
[
- "autoconf.mock.mock_real",
- "autoconf.mock.mock_real.SphProfile",
- "autoconf.mock.mock_real.Other",
+ "autonerves.mock.mock_real",
+ "autonerves.mock.mock_real.SphProfile",
+ "autonerves.mock.mock_real.Other",
],
),
(
{
- "autoconf": {
+ "autonerves": {
"mock": {"mock_real": {"SphProfile": "test", "Other": "toast"}}
}
},
[
- "autoconf",
- "autoconf.mock",
- "autoconf.mock.mock_real",
- "autoconf.mock.mock_real.SphProfile",
- "autoconf.mock.mock_real.Other",
+ "autonerves",
+ "autonerves.mock",
+ "autonerves.mock.mock_real",
+ "autonerves.mock.mock_real.SphProfile",
+ "autonerves.mock.mock_real.Other",
],
),
(
{
- "autoconf": {
+ "autonerves": {
"mock": {"mock_real.SphProfile": "test", "mock_real.Other": "toast"}
}
},
[
- "autoconf",
- "autoconf.mock",
- "autoconf.mock.mock_real.SphProfile",
- "autoconf.mock.mock_real.Other",
+ "autonerves",
+ "autonerves.mock",
+ "autonerves.mock.mock_real.SphProfile",
+ "autonerves.mock.mock_real.Other",
],
),
({"SphProfile": "test", "Other": "toast"}, ["SphProfile", "Other"]),
@@ -78,13 +78,13 @@ def test_paths(config_dict, paths):
"config_dict",
[
{
- "autoconf.mock.mock_real.SphProfile": "test",
- "autoconf.mock.mock_real.Other": "toast",
+ "autonerves.mock.mock_real.SphProfile": "test",
+ "autonerves.mock.mock_real.Other": "toast",
},
- {"autoconf.mock.mock_real": {"SphProfile": "test", "Other": "toast"}},
- {"autoconf": {"mock": {"mock_real": {"SphProfile": "test", "Other": "toast"}}}},
+ {"autonerves.mock.mock_real": {"SphProfile": "test", "Other": "toast"}},
+ {"autonerves": {"mock": {"mock_real": {"SphProfile": "test", "Other": "toast"}}}},
{
- "autoconf": {
+ "autonerves": {
"mock": {"mock_real.SphProfile": "test", "mock_real.Other": "toast"}
}
},
@@ -95,7 +95,7 @@ def test_paths(config_dict, paths):
def test_config_for_path(geometry_profile_path, config_dict):
config = aconf.JSONPriorConfig(config_dict)
assert config(geometry_profile_path) == "test"
- assert config(["autoconf", "mock", "mock_real", "Other"]) == "toast"
+ assert config(["autonerves", "mock", "mock_real", "Other"]) == "toast"
def test_path_double():
diff --git a/test_autoconf/json_prior/test_yaml_config.py b/test_autonerves/json_prior/test_yaml_config.py
similarity index 100%
rename from test_autoconf/json_prior/test_yaml_config.py
rename to test_autonerves/json_prior/test_yaml_config.py
diff --git a/test_autoconf/priors/subconfig.json b/test_autonerves/priors/subconfig.json
similarity index 100%
rename from test_autoconf/priors/subconfig.json
rename to test_autonerves/priors/subconfig.json
diff --git a/test_autoconf/test_cached_property_names.py b/test_autonerves/test_cached_property_names.py
similarity index 88%
rename from test_autoconf/test_cached_property_names.py
rename to test_autonerves/test_cached_property_names.py
index 093c3e9..ca4bdf9 100644
--- a/test_autoconf/test_cached_property_names.py
+++ b/test_autonerves/test_cached_property_names.py
@@ -1,4 +1,4 @@
-"""Tests for autoconf.tools.decorators.cached_property_names — the
+"""Tests for autonerves.tools.decorators.cached_property_names — the
MRO-walking helper used by PyAutoFit and PyAutoArray to extend their
__dict__-iteration filters with a forward-compat guard against
cached_property pytree/dict leaks."""
@@ -7,7 +7,7 @@
import pytest
-from autoconf.tools.decorators import (
+from autonerves.tools.decorators import (
CachedProperty,
cached_property,
cached_property_names,
@@ -32,7 +32,7 @@ def derived(self):
assert cached_property_names(Container) == frozenset({"derived"})
-def test_autoconf_cached_property_is_recognised():
+def test_autonerves_cached_property_is_recognised():
class Container:
@CachedProperty
def derived(self):
@@ -41,8 +41,8 @@ def derived(self):
assert cached_property_names(Container) == frozenset({"derived"})
-def test_autoconf_cached_property_alias_is_recognised():
- """``cached_property`` re-exported from autoconf.tools.decorators is
+def test_autonerves_cached_property_alias_is_recognised():
+ """``cached_property`` re-exported from autonerves.tools.decorators is
the same object as ``CachedProperty`` — verifies both spellings work."""
class Container:
@@ -76,18 +76,18 @@ def leaf_value(self):
assert cached_property_names(Base) == frozenset({"base_value"})
-def test_mixed_stdlib_and_autoconf_descriptors_both_recognised():
+def test_mixed_stdlib_and_autonerves_descriptors_both_recognised():
class Container:
@functools.cached_property
def stdlib_value(self):
return 1
@CachedProperty
- def autoconf_value(self):
+ def autonerves_value(self):
return 2
assert cached_property_names(Container) == frozenset(
- {"stdlib_value", "autoconf_value"}
+ {"stdlib_value", "autonerves_value"}
)
diff --git a/test_autoconf/test_config.py b/test_autonerves/test_config.py
similarity index 85%
rename from test_autoconf/test_config.py
rename to test_autonerves/test_config.py
index 95c3dd0..28a749a 100644
--- a/test_autoconf/test_config.py
+++ b/test_autonerves/test_config.py
@@ -4,10 +4,10 @@
import pytest
-from autoconf import conf
-from autoconf.directory_config import NamedConfig
-from autoconf.mock.mock_real import EllProfile, Gaussian
-from autoconf.exc import ConfigException
+from autonerves import conf
+from autonerves.directory_config import NamedConfig
+from autonerves.mock.mock_real import EllProfile, Gaussian
+from autonerves.exc import ConfigException
directory = Path(__file__).resolve().parent
diff --git a/test_autoconf/test_csvable.py b/test_autonerves/test_csvable.py
similarity index 98%
rename from test_autoconf/test_csvable.py
rename to test_autonerves/test_csvable.py
index 6afc87c..820c5f0 100644
--- a/test_autoconf/test_csvable.py
+++ b/test_autonerves/test_csvable.py
@@ -1,6 +1,6 @@
import pytest
-from autoconf.csvable import list_from_csv, output_to_csv
+from autonerves.csvable import list_from_csv, output_to_csv
def test_round_trip__uniform_dict_rows(tmp_path):
diff --git a/test_autoconf/test_decorator.py b/test_autonerves/test_decorator.py
similarity index 83%
rename from test_autoconf/test_decorator.py
rename to test_autonerves/test_decorator.py
index 44bac15..d90f530 100644
--- a/test_autoconf/test_decorator.py
+++ b/test_autonerves/test_decorator.py
@@ -1,7 +1,7 @@
import pytest
-from autoconf import conf
-from autoconf.conf import with_config
+from autonerves import conf
+from autonerves.conf import with_config
@pytest.fixture(autouse=True)
diff --git a/test_autoconf/test_default.py b/test_autonerves/test_default.py
similarity index 94%
rename from test_autoconf/test_default.py
rename to test_autonerves/test_default.py
index b802eef..27e9049 100644
--- a/test_autoconf/test_default.py
+++ b/test_autonerves/test_default.py
@@ -1,4 +1,4 @@
-from autoconf.mock.mock_real import Redshift
+from autonerves.mock.mock_real import Redshift
def test_override_file(session_config):
diff --git a/test_autoconf/test_dictable.py b/test_autonerves/test_dictable.py
similarity index 93%
rename from test_autoconf/test_dictable.py
rename to test_autonerves/test_dictable.py
index da2c407..840abde 100644
--- a/test_autoconf/test_dictable.py
+++ b/test_autonerves/test_dictable.py
@@ -4,7 +4,7 @@
import pytest
from pathlib import Path
-from autoconf.dictable import to_dict, from_dict, register_parser
+from autonerves.dictable import to_dict, from_dict, register_parser
@pytest.fixture(name="array_dict")
@@ -104,7 +104,7 @@ def test_serialise_kwargs():
"child_arg": "child",
"parent_arg": "parent",
},
- "class_path": "test_autoconf.test_dictable.Child",
+ "class_path": "test_autonerves.test_dictable.Child",
"type": "instance",
}
new_child = from_dict(child_dict)
@@ -120,7 +120,7 @@ def __init__(self, arg: int = 1):
def test_serialise_with_arg():
assert to_dict(WithOptional()) == {
"arguments": {"arg": 1},
- "class_path": "test_autoconf.test_dictable.WithOptional",
+ "class_path": "test_autonerves.test_dictable.WithOptional",
"type": "instance",
}
@@ -128,7 +128,7 @@ def test_serialise_with_arg():
def test_serialise_without_arg():
assert to_dict(WithOptional(), filter_args=("arg",)) == {
"arguments": {},
- "class_path": "test_autoconf.test_dictable.WithOptional",
+ "class_path": "test_autonerves.test_dictable.WithOptional",
"type": "instance",
}
diff --git a/test_autoconf/test_fitsable.py b/test_autonerves/test_fitsable.py
similarity index 92%
rename from test_autoconf/test_fitsable.py
rename to test_autonerves/test_fitsable.py
index 42dfa86..51be151 100644
--- a/test_autoconf/test_fitsable.py
+++ b/test_autonerves/test_fitsable.py
@@ -5,8 +5,8 @@
import os
from pathlib import Path
-from autoconf import conf
-from autoconf import fitsable
+from autonerves import conf
+from autonerves import fitsable
test_path = Path(__file__).resolve().parent
diff --git a/test_autoconf/test_jax_wrapper.py b/test_autonerves/test_jax_wrapper.py
similarity index 95%
rename from test_autoconf/test_jax_wrapper.py
rename to test_autonerves/test_jax_wrapper.py
index 00fc714..7eb8437 100644
--- a/test_autoconf/test_jax_wrapper.py
+++ b/test_autonerves/test_jax_wrapper.py
@@ -1,4 +1,4 @@
-"""Tests for the env-var handling in autoconf.jax_wrapper.
+"""Tests for the env-var handling in autonerves.jax_wrapper.
The wrapper's env logic runs at import time, so each test reloads the module
under a controlled os.environ. No test imports jax — the wrapper only sets
@@ -10,7 +10,7 @@
import pytest
-import autoconf.jax_wrapper
+import autonerves.jax_wrapper
CONSTANT_FOLDING = "--xla_disable_hlo_passes=constant_folding"
@@ -26,11 +26,11 @@ def clean_env(monkeypatch):
):
monkeypatch.delenv(key, raising=False)
yield monkeypatch
- importlib.reload(autoconf.jax_wrapper)
+ importlib.reload(autonerves.jax_wrapper)
def reload_wrapper():
- return importlib.reload(autoconf.jax_wrapper)
+ return importlib.reload(autonerves.jax_wrapper)
def test_xla_flags_set_when_unset(clean_env):
diff --git a/test_autoconf/test_output_config.py b/test_autonerves/test_output_config.py
similarity index 85%
rename from test_autoconf/test_output_config.py
rename to test_autonerves/test_output_config.py
index 87adab1..a87f4a9 100644
--- a/test_autoconf/test_output_config.py
+++ b/test_autonerves/test_output_config.py
@@ -1,8 +1,8 @@
import pytest
-from autoconf import instance
-from autoconf.conf import with_config
-from autoconf.output import conditional_output
+from autonerves import instance
+from autonerves.conf import with_config
+from autonerves.output import conditional_output
class OutputClass:
diff --git a/test_autoconf/test_setup_colab.py b/test_autonerves/test_setup_colab.py
similarity index 97%
rename from test_autoconf/test_setup_colab.py
rename to test_autonerves/test_setup_colab.py
index 6194c84..3e8d6ea 100644
--- a/test_autoconf/test_setup_colab.py
+++ b/test_autonerves/test_setup_colab.py
@@ -5,7 +5,7 @@
import pytest
-from autoconf import setup_colab
+from autonerves import setup_colab
class FakeDevice:
@@ -65,7 +65,7 @@ def test_all_projects_have_required_fields(self):
}
for project, spec in setup_colab._PROJECTS.items():
assert required <= set(spec), project
- assert spec["packages"][0] == "autoconf", project
+ assert spec["packages"][0] == "autonerves", project
assert spec["workspace_repo"].startswith(
"https://github.com/PyAutoLabs/"
), project
@@ -82,7 +82,7 @@ def test_unknown_project_raises_with_choices(self):
class TestNoImportSideEffects:
def test_import_does_not_set_xla_flags(self):
# Regression: the module used to set XLA_FLAGS at import time,
- # clobbering user environments on every `import autoconf.setup_colab`.
+ # clobbering user environments on every `import autonerves.setup_colab`.
import ast
import inspect
diff --git a/test_autoconf/test_test_mode.py b/test_autonerves/test_test_mode.py
similarity index 96%
rename from test_autoconf/test_test_mode.py
rename to test_autonerves/test_test_mode.py
index 5968397..22cad07 100644
--- a/test_autoconf/test_test_mode.py
+++ b/test_autonerves/test_test_mode.py
@@ -1,4 +1,4 @@
-"""Tests for autoconf.test_mode helpers — focused on
+"""Tests for autonerves.test_mode helpers — focused on
``with_test_mode_segment`` since the other helpers (``is_test_mode``,
``skip_fit_output``, etc.) are exercised by PyAutoFit/PyAutoArray
integration tests downstream."""
@@ -8,7 +8,7 @@
import pytest
-from autoconf.test_mode import (
+from autonerves.test_mode import (
is_test_mode,
test_mode_level,
test_mode_samples,
diff --git a/test_autoconf/test_workspace.py b/test_autonerves/test_workspace.py
similarity index 98%
rename from test_autoconf/test_workspace.py
rename to test_autonerves/test_workspace.py
index 5472536..3b9e7ef 100644
--- a/test_autoconf/test_workspace.py
+++ b/test_autonerves/test_workspace.py
@@ -3,7 +3,7 @@
import pytest
-from autoconf.workspace import check_version, WorkspaceVersionMismatchError
+from autonerves.workspace import check_version, WorkspaceVersionMismatchError
def _write_general_yaml(tmp_path, body):
diff --git a/test_autoconf/tools/__init__.py b/test_autonerves/tools/__init__.py
similarity index 100%
rename from test_autoconf/tools/__init__.py
rename to test_autonerves/tools/__init__.py
diff --git a/test_autoconf/tools/test_decorators.py b/test_autonerves/tools/test_decorators.py
similarity index 80%
rename from test_autoconf/tools/test_decorators.py
rename to test_autonerves/tools/test_decorators.py
index a624765..c9877ca 100644
--- a/test_autoconf/tools/test_decorators.py
+++ b/test_autonerves/tools/test_decorators.py
@@ -1,4 +1,4 @@
-from autoconf.tools.decorators import cached_property
+from autonerves.tools.decorators import cached_property
class MockClass: