Building the docs
The site in docs/ is built with Astro and
Starlight. It has three kinds of pages:
- Hand-written pages in
docs/src/content/docs/, as Markdown or MDX. - Examples, converted from the Jupyter notebooks in
tutorials/bystarlight-notebooks(thesectionsetting indocs/package.jsonpublishes them underexamples/). Each notebook is executed and its outputs (text, images, tables) are written into an MDX page. - Example scripts, a “Scripts” group of the Examples, built from the Python scripts in
examples/bydocs/tools/examples.py. Each page shows the module docstring, the complete source file, and its Matplotlib plots.
Guides, when a project has them, are hand-written pages that explain the model or a concept; anything runnable belongs in the Examples.
- API reference, generated from the docstrings by starlight-pydocs, one page per module.
The configuration (defineDocs in docs/astro.config.mjs), the look, the header, the notebook
tool and the build workflow come from the shared
starlight-theme of the max-models projects;
change them there, and update the version in docs/package.json and
.github/workflows/docs.yml to pick up a new release.
Requirements
Section titled “Requirements”- Node 22 or newer.
- The package installed with the
docsextra:pip install -e ".[docs]".
Commands
Section titled “Commands”make docs-install # npm packages and the Python docs extramake docs-notebooks # execute tutorials/*.ipynb and convert them to pagesmake docs-examples # run examples/*.py and publish their plotsmake docs-dev # live preview at http://localhost:4321/mpifield/make docs-build # the static site in docs/dist, as in CImake docs-preview # serve docs/distmake docs-clean # remove generated pages and build outputmake docs-notebooks only reruns a notebook whose cells changed since the last run; pass
FORCE=1 to rerun all of them.
Writing example notebooks
Section titled “Writing example notebooks”Put a Jupyter notebook in tutorials/. Examples are authored only as .ipynb files. Its first # Heading becomes the page title and the first
paragraph its description. Cell tags control the output:
| Tag | Effect |
|---|---|
remove-cell | the cell is left out of the page |
hide-input | the code is hidden, the outputs are kept |
fold-input | the code is in a closed “Show code” box |
remove-output | the outputs are left out |
raises-exception | an error output is shown, not a failure |
Math in $...$ and $$...$$ is rendered with KaTeX.
Writing example scripts
Section titled “Writing example scripts”Put a Python script in examples/ with a module docstring. Its first line becomes the page
title and the rest becomes the description. Leave Matplotlib figures open at the end of the
script so the docs builder can save them as plots. The complete script is shown on the page.