VBPCApy 0.4.12 validation¶
This patch enforces the dense diagnostic budget before allocating full fit, selected-model and inverse-reconstruction outputs. Fit diagnostics count the three full-shape float64 arrays together, using the original shape even when empty rows or columns are removed internally. Byte estimates use Python integers, so large shapes cannot wrap an integer product and bypass the guard.
return_diagnostics=False suppresses fit diagnostic outputs; explicit
max_dense_bytes=None opts out of the limit. Factors, covariance stores,
temporary arrays and peak process memory are outside this budget. An explicit
model-selection request for best-model diagnostics still requires space for
those outputs.
Dense updates and RMS calculations also retain boolean masks, avoid redundant preparation copies and mask newly owned residuals in place. These changes preserve caller input ownership, numeric-mask behavior, probe isolation and the existing numerical and stopping policies.
From the release checkout:
uv sync --extra dev --extra plot --extra docs
uv run python scripts/check_release_metadata.py --tag v0.4.12
just ci
uv run --extra docs mkdocs build --strict
just build-check
just build-test
Memory regressions check exact budget boundaries, refusal before allocation, restored shapes, model selection, single inverse outputs and large integer products. Dense-copy regressions cover layout, input ownership, probes and numeric masks. Required numerical references remain separate from timing and memory measurements. The publishing workflow must build and test all twelve advertised wheels and the source archive, then pass artifact completeness checks before PyPI upload. Frozen scientific studies retain their registered software versions pending a recorded adoption.