diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3607f1d --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +# Root task entrypoints (uv workspace). Tools land in Epic 2 (#17–#20). +.PHONY: sync test lint typecheck build help + +help: + @echo "Targets: sync test lint typecheck build" + @echo "All commands run via uv from the workspace root." + +sync: + uv sync + +test: + uv run pytest + +lint: + uv run ruff check . + +typecheck: + uv run pyright + +build: + uv build --all --out-dir dist diff --git a/README.md b/README.md index 6e76e46..f6a55c1 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,21 @@ uv sync ``` + +## Development commands + +From the repo root (requires [uv](https://docs.astral.sh/uv/)): + +| Task | Make | Equivalent | +|------|------|------------| +| Install workspace | `make sync` | `uv sync` | +| Tests | `make test` | `uv run pytest` | +| Lint | `make lint` | `uv run ruff check .` | +| Type-check | `make typecheck` | `uv run pyright` | +| Build packages | `make build` | `uv build --all` | + +> Ruff, Pyright, and pytest are wired in Epic 2 (`#17`–`#20`). Until then, `make lint` / `test` / `typecheck` will fail if those tools are not installed yet — that is expected. + ## Python version - **Pin file:** `.python-version` → `3.12` diff --git a/pyproject.toml b/pyproject.toml index 1650210..03c4258 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,3 +10,8 @@ members = ["packages/*"] [tool.uv] # Prefer the pinned interpreter from .python-version when creating the venv. python-preference = "managed" + + +# Dev tools are added in Epic 2; groups reserved so root tasks stay stable. +[dependency-groups] +dev = []