From ba84358fc4bfabc6bd3bcfe57f1f40c437c4a00c Mon Sep 17 00:00:00 2001 From: Sai Kishore Punagani <63619246+saikishore-p@users.noreply.github.com> Date: Sat, 12 Sep 2026 13:00:56 -0400 Subject: [PATCH] docs: fix contributor setup instructions in AGENTS.md `uv sync --all-packages --group dev` is not enough to run `tests/examples/` or `tests/integration/`. The `tests` group carries the extra dependencies those suites need - `examples/langgraph-checkpointer/agent.py` imports `langchain_ollama`, which only that group installs - and it is what CI syncs for both of those jobs (`.github/workflows/run-tests.yaml`). Following the setup section as written, `pytest tests/examples/` fails with a ModuleNotFoundError. Points the setup section at the `tests` group for those suites and names the requirement in the two command comments. Also corrects the pinned ruff version, which had drifted: AGENTS.md said 0.14.1 in two places while `pyproject.toml` pins `ruff==0.15.19`. Signed-off-by: Sai Kishore Punagani <63619246+saikishore-p@users.noreply.github.com> --- AGENTS.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 6c174db60..3ef13b338 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -94,6 +94,15 @@ Install all packages in editable mode with dev dependencies: uv sync --all-packages --group dev ``` +To run `tests/examples/` or `tests/integration/`, sync the `tests` group instead. It +includes everything in `dev` plus the dependencies those suites need — notably +`langchain-ollama`, which `examples/langgraph-checkpointer` imports. This is what CI +installs for both of those jobs: + +```bash +uv sync --all-packages --group tests +``` + ## Running tests Tests use Python's built-in `unittest` framework with `coverage`. The vendored durabletask tests use `pytest`. @@ -120,16 +129,16 @@ uv run ruff check --fix && uv run ruff format # Run type checking uv run mypy -# Run output-based example tests (requires Dapr runtime) +# Run output-based example tests (requires Dapr runtime and the `tests` group) uv run pytest tests/examples/ -# Run programmatic integration tests (requires Dapr runtime) +# Run programmatic integration tests (requires Dapr runtime and the `tests` group) uv run pytest tests/integration/ ``` ## Code style and linting -**Formatter/Linter**: Ruff (v0.14.1) +**Formatter/Linter**: Ruff (v0.15.19) Key rules: - **Line length**: 100 characters (E501 is currently ignored, but respect the 100-char target) @@ -224,7 +233,7 @@ When completing any task on this project, work through this checklist. Not every - **Do not bump `grpcio-tools` like a normal dev dependency**: its pin must stay the version that generated the committed files under `dapr/proto/` — regenerating with a newer one raises the minimum `grpcio`/`protobuf` that SDK users can install, while leaving it alone is always safe. Dependabot is configured to ignore it; the comment in `.github/dependabot.yml` lists when a bump is justified and the 3-step recipe (pin + regen + floors, in one PR, enforced by `tests/test_proto_gencode_floor.py`). - **Bundled extensions**: live under `dapr/ext//`, opted in via extras (`dapr[fastapi]`, etc.). The legacy `dapr-ext-*` and `flask-dapr` distributions are no longer published; legacy installs must be uninstalled before upgrading or `import dapr` will emit a `FutureWarning`. - **DCO signoff**: PRs will be blocked by the DCO bot if commits lack `Signed-off-by`. Always use `git commit -s`. -- **Ruff version pinned**: `pyproject.toml` pins `ruff==0.14.1` in `[dependency-groups].dev`. Use `uv sync --all-packages --group dev` to get the exact version. +- **Ruff version pinned**: `pyproject.toml` pins `ruff==0.15.19` in `[dependency-groups].dev`. Use `uv sync --all-packages --group dev` to get the exact version. - **Examples are tested by output matching**: Changing output format (log messages, print statements) can break `tests/examples/`. Always check expected output there when modifying user-visible output. - **Background processes in examples**: Examples that start background services (servers, subscribers) must include a cleanup step to stop them, or CI will hang. - **Workflow is the most active area**: See `dapr/ext/workflow/AGENTS.md` for workflow-specific architecture and constraints.