docs(v2.0.0-alpha.3): inline plot injection across the entire doc tree

Add scripts/inject_doc_plots.py that scans every .md and .rst page under
docs/source/, executes each Python code-block in an isolated namespace
with a non-interactive matplotlib backend, captures every figure
produced, and inserts an inline image directive immediately after the
code-block.  Markers AUTO-PLOT-BEGIN/END make the injection idempotent
on re-runs.  Blocks that fail to execute or produce no figure are left
untouched.

Add a transparent __getattr__ fallback in python/optimizr/__init__.py
that forwards any unresolved top-level attribute to the compiled _core
extension.  This lets all v1.x and v2.0 doc samples that use
'from optimizr import X' (estimate_ou_params_py, linear_bsde_constant_coeffs,
mmd_gaussian, ...) execute as written.

Augment the OU Parameter Estimation example
(docs/source/algorithms/optimal_control.md) with a two-panel
visualization (simulated path plus empirical/theoretical autocorrelation).

Net effect: 14 doc pages now display matplotlib plots inline directly
under the code that produced them -- including the OU page, point
processes, Grid Search, HMM, MCMC, plus the 8 v2.0 RST pages.
This commit is contained in:
ThotDjehuty
2026-05-12 13:05:14 +02:00
parent d8682f61e5
commit cce31055c1
43 changed files with 537 additions and 1 deletions
+17
View File
@@ -103,3 +103,20 @@ __all__ = [
"min_variance_weights",
"erc_weights",
]
def __getattr__(name):
"""Transparent fallback: forward any unresolved top-level attribute access
to the compiled `_core` extension. This keeps `from optimizr import X`
working for every Rust-backed function (v1.x and v2.0 primitives) without
having to enumerate the full list above."""
try:
from optimizr import _core as _ext
except ImportError as exc: # pragma: no cover
raise AttributeError(
f"module 'optimizr' has no attribute {name!r} "
f"(_core extension is not built: {exc})"
) from exc
if hasattr(_ext, name):
return getattr(_ext, name)
raise AttributeError(f"module 'optimizr' has no attribute {name!r}")