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.
Updated Branding in ReadTheDocs:
- ✅ All 'OptimizR' → 'Optimiz-rs' (17 files)
- ✅ Project name in conf.py
- ✅ HTML title and short title
- ✅ All algorithm documentation
- ✅ Getting started guide
- ✅ Installation guide
- ✅ Theory/mathematical foundations
- ✅ Archive documentation
Documentation now consistently uses the new 'optimiz-rs' branding that
matches both PyPI and crates.io package names.
Note: Python module name 'optimizr' in import statements intentionally
unchanged (that's the actual module name).