Releases: PyAutoLabs/PyAutoFit
v2026.5.8.2
⚠️ v2026.5.8.2 is a no-op re-release of v2026.5.8.1 — same code, second release dispatched the same day to validate updated release-pipeline gates. The full set of changes shipped on 2026-05-08 follows.
PyAutoFit v2026.5.8.2
What's New
Breaking Changes
- feat: add BlackJAXNUTS first-class non-linear search (#1256)
- Visualizer.visualize_combined: accept quick_update kwarg (#1254)
- Tiny additive signature change on a single method.
Visualizer.visualize_combinednow declaresquick_update: bool = Falseso callers may pass it (the factor-graph dispatch always does). Default no-op behaviour is preserved; subclasses that already override the method without**kwargsget unblocked. See full details below.
- Tiny additive signature change on a single method.
- Fix AnalysisFactor.visualize_combined dispatch in FactorGraph (#1253)
- Support fixed Array elements through the EP fitting pipeline (#1250)
- Add EPAnalysisFactor for cavity-message injection (#1248)
- Added
af.EPAnalysisFactor— anAnalysisFactorsubclass with aset_cavity_dist(cavity_dist)hook that the EP optimiser invokes before every fit, attaching the cavityMeanFieldtoanalysis._cavity_mean_fieldso the user'slog_likelihood_functioncan read per-variable cavity messages (.mean,.sigma) at evaluation time. No symbols removed, renamed, or behaviour-changed for existing factors. See full details below.
- Added
Bug Fixes
- fix: populate NUTS samples_info keys under test-mode bypass (#1260)
Internal
- fix: stop passing dataset=None to fit_cls when sensitivity Job is complete (#1259)
- refactor: replace os.path with pathlib (#1258)
- Refresh cached SearchUpdater when AbstractSearch.paths is reassigned (#1252)
- docs: update workspace prose refs from README.rst to README.md (#1251)
- docs: convert remaining prose .rst to MyST .md (pass 2) (#1249)
- test: delete jax-using unit tests (moved to autofit_workspace_test) (#1247)
- docs: convert prose .rst files to MyST .md (#1246)
Full changelog: 2026.5.1.4...2026.5.8.2
v2026.5.8.1
PyAutoFit v2026.5.8.1
What's New
Breaking Changes
- feat: add BlackJAXNUTS first-class non-linear search (#1256)
- Visualizer.visualize_combined: accept quick_update kwarg (#1254)
- Tiny additive signature change on a single method.
Visualizer.visualize_combinednow declaresquick_update: bool = Falseso callers may pass it (the factor-graph dispatch always does). Default no-op behaviour is preserved; subclasses that already override the method without**kwargsget unblocked. See full details below.
- Tiny additive signature change on a single method.
- Fix AnalysisFactor.visualize_combined dispatch in FactorGraph (#1253)
- Support fixed Array elements through the EP fitting pipeline (#1250)
- Add EPAnalysisFactor for cavity-message injection (#1248)
- Added
af.EPAnalysisFactor— anAnalysisFactorsubclass with aset_cavity_dist(cavity_dist)hook that the EP optimiser invokes before every fit, attaching the cavityMeanFieldtoanalysis._cavity_mean_fieldso the user'slog_likelihood_functioncan read per-variable cavity messages (.mean,.sigma) at evaluation time. No symbols removed, renamed, or behaviour-changed for existing factors. See full details below.
- Added
Bug Fixes
- fix: populate NUTS samples_info keys under test-mode bypass (#1260)
Internal
- fix: stop passing dataset=None to fit_cls when sensitivity Job is complete (#1259)
- refactor: replace os.path with pathlib (#1258)
- Refresh cached SearchUpdater when AbstractSearch.paths is reassigned (#1252)
- docs: update workspace prose refs from README.rst to README.md (#1251)
- docs: convert remaining prose .rst to MyST .md (pass 2) (#1249)
- test: delete jax-using unit tests (moved to autofit_workspace_test) (#1247)
- docs: convert prose .rst files to MyST .md (#1246)
Full changelog: 2026.5.1.4...2026.5.8.1
v2026.5.1.4
PyAutoFit v2026.5.1.4
Highlights
Python 3.9–3.13 supported, 3.12 / 3.13 recommended
This release expands supported Python versions to 3.9 through 3.13 (#1244). 3.12 and 3.13 are first-class recommended; 3.9, 3.10, 3.11 are supported but emit a loud (bypassable) banner on import. Silence the banner via version.python_version_check: False in your workspace's config/general.yaml. Python 3.14 is not yet supported (parked on a known FactorGraphModel iteration bug).
Key impacts for users:
requires-python = ">=3.9"inpyproject.toml(lower floor than before)- Classifiers now cover 3.9, 3.10, 3.11, 3.12, 3.13
- JAX is now an optional extra:
pip install autofit[jax], gated onpython_version >= '3.11'. Plainpip install autofitno longer pulls JAX as a transitive dep. Analysis(use_jax=True)falls back to numpy with aUserWarningwhen JAX isn't installed, instead of failing at import time.
JAX-jitted likelihoods in Dynesty (use_jax_jit)
Dynesty searches now support JAX-jitted likelihood evaluation via the new use_jax_jit option (#1243). For likelihood-bound runs, this can deliver substantial speedups by JIT-compiling the likelihood once instead of evaluating it interpretively per sample.
Bug Fixes
compute_latent_samplesnow skips samples that raised aFitExceptioninstead of crashing the whole computation (#1233)
Internal / Cleanup
- Remove unused
pyprojrootdependency (#1242) —pip install autofitno longer pulls pyprojroot - Delete jax-using unit tests; cross-xp checks live in
autofit_workspace_test(#1247) — keeps the library's unit suite numpy-only
Upstream Changes
PyAutoConf
- Support Python 3.9–3.13, first-class 3.12/3.13 (PyAutoConf#102)
- Soften Python version check with
general.yamlbypass (PyAutoConf#96)
Full changelog: 2026.4.13.6...2026.5.1.4
v2026.4.13.6
PyAutoFit v2026.4.13.6
What's New
Bug Fixes
- fix: pin autoconf dependency version and update homepage URL (#1206)
Full changelog: 2026.4.13.5...2026.4.13.6
v2026.4.13.5
PyAutoFit v2026.4.13.5
What's New
Bug Fixes
- fix: pin autoconf dependency version and update homepage URL (#1206)
Full changelog: 2026.4.13.3...2026.4.13.5
v2026.4.13.3
PyAutoFit v2026.4.13.3
What's New
Breaking Changes
- fix: guard interpolator and grid search against edge cases (#1201)
New Features
- docs: update Python version to 3.12-3.13 (#1199)
Bug Fixes
- fix: bump scipy cap to <=1.15.2 (#1196)
Internal
- refactor: replace search YAML config with explicit Python defaults (#1202)
- build: add Python 3.13 support (#1198)
- build: raise scipy cap, relax threadpoolctl and SQLAlchemy pins (#1197)
- refactor: separate PYAUTOFIT_TEST_MODE into distinct PYAUTO_* env vars (#1195)
Full changelog: 2026.4.5.3...2026.4.13.3
v2026.4.5.3
PyAutoFit v2026.4.5.3
What's New
New Features
- Flatten plot API: replace Plotter classes with module-level functions (#1174)
Bug Fixes
- fixes to figure of merit (#1166)
Internal
- Drop Python 3.9-3.11, add 3.13 (#1177)
- Make search logging JAX-aware (#1176)
- Add expanded model mapping unit tests (#1172)
- feature/jax_cpu_jit (#1170)
- feature/jax_cpu_batch_size_1 (#1169)
- feature/samples_summary_failsafe (#1168)
Full changelog: 2025.5.10.1...2026.4.5.3
May 2025
- Remove Analysis summing API, replacing all dataset combinations with
AnalysisFactorandFactorGraphModelAPI used for graphical modeling:
https://github.com/Jammy2211/autofit_workspace/blob/main/notebooks/cookbooks/multiple_datasets.ipynb
- Results workflow API, which generates .csv, .png and .fits files of large libraries of results for quick and efficient inspection:
https://github.com/Jammy2211/autolens_workspace/tree/main/notebooks/results/workflow
- Latent variable API bug fixes and now used in some test example scripts.
January 2025
This update is mostly bug fixes and small improvements, with no major new functionality added.
What's Changed
- Feature/enviroment warning by @Jammy2211 in #1077
- cache hdus to avoid object deletion causing files to be closed by @rhayes777 in #1081
- feature/constant comparison by @rhayes777 in #1080
- Remove database test path by @Jammy2211 in #1083
- analysis_summed_latent by @Jammy2211 in #1084
- monkey patch abstract_search.gc during testing to prevent expensive calls to gc.collect() by @rhayes777 in #1088
- feature/aggregate summary by @rhayes777 in #1089
Full Changelog: 2024.11.13.2...2025.1.18.7
November 2024 update
Garbage collection and other things to improve memory use.