Skip to content

v2026.5.29.4

Latest

Choose a tag to compare

@Jammy2211 Jammy2211 released this 29 May 10:25
· 3 commits to main since this release

PyAutoFit v2026.5.29.4

What's New

Breaking Changes

  • fix(nss): chunked algo.init follow-up to #1303 (#1305)
  • Remove use_jax_for_visualization; add visualization warmup (#1297)
    • Analysis.__init__ no longer accepts use_jax_for_visualization. Visualization now automatically follows use_jax — if the search uses JAX, visualization does too. The _jitted_fit_from lazy JIT cache on Analysis is removed; the warmup in Fitness.__init__ is a better approach (pre-compiles before sampling, not on first quick update). See full details below.
  • Add live_visual_update flag for opt-in on-the-fly visualization (#1293)
  • fix: PYAUTO_TEST_MODE should write to a separate output dir (#1292)
    • No public symbol additions, removals, or signature changes.
    • Behaviour change: when the PYAUTO_TEST_MODE environment variable is set (any truthy value), AutoFit search output paths get a test_mode/ segment inserted directly after conf.instance.output_path. This affects every search-output path including SQLite database files opened via open_database() with a relative filename.
  • feat(quick_update): IPython.display.update_display for live Jupyter cells (#1290)
    • One additive optional kwarg on BackgroundQuickUpdate: display_id: str = "pyauto_fit_progress". Behavioural change: when running inside a Jupyter / Colab kernel, the worker additionally pushes the freshly-written subplot_fit.png to the active cell via IPython.display.update_display. Outside a kernel — unchanged (PNG-on-disk only). No public symbol removed, renamed, or signature-broken.
  • feat(analysis): LATENT_BATCH_MODE attribute (vmap default, jit option) (#1288)
    • New public class attribute Analysis.LATENT_BATCH_MODE: str (default "vmap"). Two values supported: "vmap" and "jit". Other values raise ValueError at compute_latent_samples time with a clear message.
  • Fix Sample.kwargs mixed string/tuple key bug (#1287)
    • Internal in-memory representation of Sample.kwargs is now uniformly tuple-keyed — single-name keys become ('name',) instead of staying as raw strings. All serialized forms (CSV headers, database JSON via Sample.dict()) are unchanged because they already join tuples back to dotted strings on serialize, and Sample.__init__ re-tuples them on deserialize, so the round-trip is symmetric. The change also silently repairs Samples.values_for_path and the aggregator CSV Column.value lookup, both of which expected tuple keys but would have silently failed on dotless-name kwargs pre-fix.

Bug Fixes

  • fix(jax): structural defense against cached_property pytree/dict leaks (#1302)
  • fix(jax): keep parameterization cache off ModelInstance + auto-register pytrees (#1300)

Internal

  • chore(deps): allow anesthetic>=2.9.0 to unblock jax>=0.7 / numpy>=2 resolution (#1306)
  • feat(nss): chunk_size kwarg for inversion-heavy A100 likelihoods (#1303)
  • Cache model.parameterization; try interactive matplotlib backends (#1299)
  • Prefer fit_quick.png in quick-update display candidates (#1298)
  • fix: skip _compute_latent_samples in PYAUTO_TEST_MODE (#1294) (#1295)
  • nss extras: strip git+https URLs to unblock PyPI uploads (#1286)

Full changelog: 2026.5.21.1...2026.5.29.4