Skip to content

Development

Running EPICC locally

Install dependencies with a manager that reads pyproject.toml; the project uses uv:

uv sync
uv run -m streamlit run app.py

This step is not needed in the development container (.devcontainer/), which has everything installed.

Checks

Command What it runs
make check lint, type check and tests; run it before opening a pull request
make lint ruff
make typecheck mypy
make test pytest

The static app

The public app is a static stlite build: Python runs in the visitor's browser, so there is no server.

make build    # -> dist/
make serve    # serve dist/ locally

This website

The site is built with MkDocs and the Material theme from the Markdown in docs/. The model pages under Models are generated from the model files by scripts/build_model_docs.py and are not committed.

make docs          # generate the model pages and build the site -> site/
make docs-serve    # the same, served with live reload

The Pages workflow publishes the app at the site root and this documentation under /docs/. Pull requests build the site in strict mode, so a broken link or a missing page fails the check.

Versions

The documentation is versioned with mike; the selector next to the title switches between versions.

Version Published when Contents
1.1.0, 1.2.0, ... a v* tag is pushed that release, permanently
latest a v* tag is pushed alias of the newest release; /docs/ lands here
dev every push to main the current main
<version> (unreleased) a push to main whose version is not tagged yet replaced by the release

The app links to the documentation of its own version (app.docs_url contains {version}). The app on the site is built from main, so the unreleased entry makes sure that link works before the release exists.

scripts/deploy_docs.sh release|main does the publishing. Every version lives in its own folder on the docs-versions branch, which is the history: old versions are never rebuilt. Versions start at 1.1.0; earlier releases predate this site.

To document something, edit or add a Markdown page in docs/ and list it under nav in mkdocs.yml.