HOLMES
HOLMES (HydrOLogical Modeling Educational Software) is a software developed to teach operational hydrology. It is developed at Université Laval, Québec, Canada.
📖 Documentation · 📦 PyPI
The dashboard guides students through a modeling pipeline — stations → weather → model → calibration → simulation → projection — starting from an interactive map of hydrometric stations. The backend is Starlette, the frontend is vanilla JavaScript with an Elm architecture (d3 and Leaflet), and communication is mostly over WebSocket. All numerical computation runs in holmes-rs, a Rust extension.
Usage
Installation
pip install holmes-hydro
Running HOLMES
After installation, start the dashboard with:
holmes run
The web interface will be available at http://127.0.0.1:8000.
Other commands:
holmes experiment # run batch calibration experiments
holmes download # maintainers: build every data product from its true source
holmes package # maintainers: zip the built products into data-YYYY-MM-DD.zip
Data
The server never builds data.
At startup it compares the newest data-YYYY-MM-DD.zip asset on the repo's rolling data release against its local copy, and downloads and extracts the archive if it is newer — old data keeps being served during the swap, and no credentials are ever needed to run the app.
Data lives in the per-user data directory (~/.local/share/holmes on Linux, ~/Library/Application Support/holmes on macOS, %LOCALAPPDATA%\holmes\holmes on Windows), overridable with HOLMES_DATA_DIR; map tiles are the one exception, still fetched lazily from CartoDB.
Rebuilding the archive is the maintainer path.
holmes download builds every product incrementally from its true source: daily re-runs only fetch the current year (plus the previous year in January) for ERA5 and the ministry grid, always refresh the small streamflow files, recompute the cheap derived products, and skip the static ones (station data, projections).
It needs the download extra (pip install 'holmes-hydro[download]', which carries the heavy geo dependencies) and, on a cold ERA5 cell cache, CDS credentials in ~/.cdsapirc or the CDSAPI_URL/CDSAPI_KEY environment variables.
holmes package then zips the built products into the dated archive.
A nightly GitHub Actions workflow (.github/workflows/data.yml, 07:00 UTC) runs both and replaces the dated zip on the data release; it is toggled with the DATA_REFRESH_ENABLED repository variable (Settings → Actions → Variables) and can always be run manually via workflow dispatch.
Configuration
Customize the server by creating a .env file:
DEBUG=True # Enable debug mode (default: False)
RELOAD=True # Enable auto-reload on code changes (default: False)
HOST=127.0.0.1 # Server host (default: 127.0.0.1)
PORT=8000 # Server port (default: 8000)
HOLMES_DATA_DIR=data # Data directory (default: the per-user data
# directory, e.g. ~/.local/share/holmes on Linux)
HOLMES_SKIP_DATA_SYNC=True # Skip the startup data sync (default: False)
A repo checkout should set HOLMES_DATA_DIR=data to keep using the repo-local data/ directory.
Development
Setup
-
Install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Clone and install in development mode:
git clone https://github.com/antoinelb/holmes.git cd holmes uv sync
Running
uv run holmes run
Or activate the virtual environment and run directly:
source .venv/bin/activate
holmes run
Code Quality
make static-analysis
Tests
make test # unit + integration (100% coverage) and the Rust suites
make test-e2e # Playwright end-to-end tests
References
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file holmes_hydro-4.3.0.tar.gz.
File metadata
- Download URL: holmes_hydro-4.3.0.tar.gz
- Upload date:
- Size: 37.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80b1fc1e589c0bf6489e48da6088e70cf1546c28278983e8d0c2e1cae37af532
|
|
| MD5 |
0d424718609533f8997499c56ba8de03
|
|
| BLAKE2b-256 |
3ce42724b535bef57583c82a524761fbb2349c8a5624b89616cab5ece1cc2c7d
|
Provenance
The following attestation bundles were made for holmes_hydro-4.3.0.tar.gz:
Publisher:
ci-holmes.yml on antoinelb/holmes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
holmes_hydro-4.3.0.tar.gz -
Subject digest:
80b1fc1e589c0bf6489e48da6088e70cf1546c28278983e8d0c2e1cae37af532 - Sigstore transparency entry: 2480966673
- Sigstore integration time:
-
Permalink:
antoinelb/holmes@6b7379b17bebc0e28c99baca91ed4e291186e79a -
Branch / Tag:
refs/tags/4.3.0 - Owner: https://github.com/antoinelb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci-holmes.yml@6b7379b17bebc0e28c99baca91ed4e291186e79a -
Trigger Event:
push
-
Statement type:
File details
Details for the file holmes_hydro-4.3.0-py3-none-any.whl.
File metadata
- Download URL: holmes_hydro-4.3.0-py3-none-any.whl
- Upload date:
- Size: 327.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b3209ea3e50907e42e13f5270ced278eb661c041213415496dce96ecb087477
|
|
| MD5 |
7ff331cd94cb2f657c4123d880cc9583
|
|
| BLAKE2b-256 |
9a4fde5d142dc163ae27202092ba50e82176416f3848effcdb828c0867f9e1f4
|
Provenance
The following attestation bundles were made for holmes_hydro-4.3.0-py3-none-any.whl:
Publisher:
ci-holmes.yml on antoinelb/holmes
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
holmes_hydro-4.3.0-py3-none-any.whl -
Subject digest:
0b3209ea3e50907e42e13f5270ced278eb661c041213415496dce96ecb087477 - Sigstore transparency entry: 2480967405
- Sigstore integration time:
-
Permalink:
antoinelb/holmes@6b7379b17bebc0e28c99baca91ed4e291186e79a -
Branch / Tag:
refs/tags/4.3.0 - Owner: https://github.com/antoinelb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci-holmes.yml@6b7379b17bebc0e28c99baca91ed4e291186e79a -
Trigger Event:
push
-
Statement type: