bayspec 0.3.11 Changelog
Release Date: 2026-05-06
Previous Release: 0.3.10 (2026-04-27)
✨ Features
- Memoization Fingerprinting — Implement fingerprinting for memoization cache keys to enable robust caching of model evaluations across different parameter and data configurations. Improves inference performance for repeated evaluations.
🔧 Refactoring
Caching System
- Cache Attribute Convention — Update
cached_propertyimplementation to use single underscore (_cache_*) prefix for cache attributes per Python private-member conventions. - Documentation Enhancement — Expand docstrings for
cached_propertydescriptor explaining fingerprinting strategy, cache invalidation, and usage patterns.
Code Quality
- Format & Linting — Apply ruff formatting across the entire
bayspec/codebase (29 files):- Standardize quote styles, import ordering, and line wrapping
- Fix ambiguous Unicode punctuation (en/em dashes → ASCII)
- Resolve mutable default arguments (tuples for constants,
MappingProxyTypefor dicts) - Add explicit exception chaining (
raise ... from None/err) - Convert legacy format strings to f-strings
- Enforce canonical Google-style docstring section titles (
Example:notTypical usage:) - Inject
__doc__into dynamically-synthesized XSPEC/astromodels bridge classes
Python 3.8+ Compatibility
- Add
from __future__ import annotationstobayspec/util/corner.pyto support PEP 604 type hints (X | None) on Python 3.8–3.9.
📝 Documentation
- Updated Example Files — Re-run all Jupyter notebook examples (
quickstart,advancement,intermediate, etc.) with new fingerprinting logic; binary outputs and statistical results regenerated. - Configuration — Add
pyproject.tomlwith ruff linter configuration (py312target, code quality rules UP/B/SIM/RUF enabled).
🐛 Bug Fixes
- Mutable Default Fixes — Eliminate shared mutable default values in
Response/Spectrum/BalrogResponseconstructors; each instance now gets a freshPar()object (fixes latent identity-based comparison bugs). - Exception Handling — Improve exception chaining clarity in model/data property getters; replace bare
except:withexcept Exception:inemceeintegration to allow properKeyboardInterruptpropagation. - Resource Cleanup — Consolidate nested file-open context managers for proper resource cleanup on exceptions.
📦 Dependencies & Build
- Target Python:
py312(ruff minimum);python_requires='>=3.8'maintained (3.8/3.9 compat via__future__imports). - Ruff Linting: Enabled rules
E W F I UP B SIM RUF; ignoreRUF001/002/003(allowed-confusables whitelist for physics units).
Summary
0.3.11 is a maintenance + quality release focused on caching robustness, code standardization, and docstring/configuration completeness per the project's v1.2 docstring standard. No breaking API changes. All user-facing behavior is preserved; improvements are internal code quality and example reproducibility.