Skip to content

v0.19.0

Choose a tag to compare

@mortenoh mortenoh released this 23 Apr 19:58
· 127 commits to main since this release
v0.19.0
49a3833

Highlights

chapkit run — serve existing MLproject directories (#35)

Point chapkit at an MLflow-style MLproject directory and get a full chapkit service with zero code changes:

chapkit run              # current directory
chapkit run .            # same
chapkit run /path/to/mlproject
  • Canonical MLproject parameter mapping aligned with chap-core: train_data, historic_data, future_data, out_file, model, model_config, polygons.
  • user_options from the MLproject become typed fields on a dynamically-generated BaseConfig subclass (via pydantic.create_model); prediction_periods: int = 3 is injected when absent.
  • --param NAME=FILENAME repeatable flag overrides the canonical map.
  • Env-field warnings for docker_env, renv_env, python_env, uv_env, conda_env.

Full walkthrough: MLproject Runner guide.

Published container images (#36, #37)

Three base images for chapkit run now published to ghcr.io, maintained in the sibling dhis2-chap/chapkit-images repo:

Image Arches Purpose
ghcr.io/dhis2-chap/chapkit-py linux/amd64, linux/arm64 Python MLproject models (lean)
ghcr.io/dhis2-chap/chapkit-r linux/amd64, linux/arm64 R MLproject models without INLA (R 4.5 + renv + pak)
ghcr.io/dhis2-chap/chapkit-r-inla linux/amd64 only R + INLA + chap-core R stack (fmesher, sf, spdep, ...)

Usage:

docker run --rm -p 8000:8000 -v "$(pwd):/work" ghcr.io/dhis2-chap/chapkit-r:latest

All three run as root today; non-root hardening is a deferred follow-up.

Docs (#38)

New MLproject Runner guide. README gets a chapkit run section and a pointer to chapkit-images.

Other changes

  • Dep refresh: typer, mypy, pyright, pytest(+plugins), ruff, coverage, pandas/numpy, scikit-learn, mkdocs + plugins. One follow-on annotation fix — -> AsyncGenerator[...] on @asynccontextmanager — for pyright 1.1.409 compat.

Full changelog

  • feat: add chapkit run for MLproject auto-discovery (#35)
  • fix(docker): own the R toolchain; split into chapkit-r + chapkit-r-inla (#36)
  • chore: move docker images out of chapkit core (#37)
  • docs: surface chapkit run + chapkit-images split (#38)
  • chore: bump version to v0.19.0

Full diff: v0.18.0...v0.19.0