Project

Development happens in a single uv workspace: one lockfile, one virtual environment, two publishable packages under packages/.

Set up

$ uv sync --all-packages --group dev

This installs both workspace packages editable plus the docs, testing, and lint tooling.

Development loop

Run every change through this loop:

$ uv run ruff format .
$ uv run pytest
$ uv run ruff check . --fix --show-fixes
$ uv run ty check

The just recipes wrap these: just test, just ruff, just ruff-format, just ty, and just build-docs.