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.