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. - Tutorials, converted from the Jupyter notebooks in
tutorials/bystarlight-notebooks. Each notebook is executed and its outputs (text, images, tables) are written into an MDX page. - Full examples, built from Python scripts in
examples/bydocs/tools/examples.py. Each page shows the module docstring, the complete source file, and its Matplotlib plots. - 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/freeofcharge/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 tutorials
Section titled “Writing tutorials”Put a Jupyter notebook in tutorials/. Tutorials 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 full examples
Section titled “Writing full examples”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.