diff --git a/AGENTS.md b/AGENTS.md index 64f637a..68886b5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,7 +6,8 @@ Rules for AI coding assistants working in this repository. `.gitea/workflows/validate.yml`. - **`uv` for everything:** `uv sync --group dev`, `uv run pytest`, `uv run ruff check .`, `uv run python ...`. Never `pip` into the ambient - environment. + environment. A node's `build:` is `uv pip install .`, so dataflows must be run + with `--uv`. - **`ruff` is the linter and the formatter.** `uv run ruff check .` must be clean. - **Markdown is linted too.** `uv run pymarkdown scan *.md` must be clean. Its line length is set in `pyproject.toml`. diff --git a/README.md b/README.md index bd7dc9a..d7f4ee3 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ nodes: - id: view git: ssh://git@gitea.liria.cl:5001/liria/dora-image-view.git tag: v0.1.0 - build: pip install . + build: uv pip install . path: dora-image-view inputs: image: camera/image_bgr diff --git a/dataflow.yml b/dataflow.yml index 5099a51..bf33145 100644 --- a/dataflow.yml +++ b/dataflow.yml @@ -4,7 +4,7 @@ # # It lives at the repository root rather than beside tests/source.py because a # node's working directory is the directory of the dataflow file, and both -# nodes build with `pip install .`, which needs pyproject.toml in that +# nodes build with `uv pip install .`, which needs pyproject.toml in that # directory. # # Both nodes are built from the checkout with `path:` + `build:`, which is what @@ -38,7 +38,7 @@ nodes: args: tests/source.py # The source needs dora-rs, numpy and pyarrow; installing the project gives # it exactly the versions pinned in uv.lock. - build: pip install . + build: uv pip install . inputs: tick: dora/timer/millis/33 outputs: @@ -57,7 +57,7 @@ nodes: - id: view path: dora-image-view - build: pip install . + build: uv pip install . inputs: image: source/image depth: source/depth diff --git a/dora-node.yml b/dora-node.yml index beb1a55..68fbdc1 100644 --- a/dora-node.yml +++ b/dora-node.yml @@ -13,10 +13,10 @@ keywords: [opencv, view, bbox, bounding-box, image, depth, intrinsics, camera-in runtime: python entrypoint: dora-image-view -# `dora build --uv` / `dora run --uv` rewrites this to `uv pip install .` and -# gives the node its own managed venv under `.dora/python-envs/`, so the -# dependencies it sees at runtime are the ones installed here. -build: pip install . +# Run the dataflow with --uv, which gives the node its own managed venv under +# `.dora/python-envs/`, so what it imports at runtime is what was installed +# here. Without --uv this needs a virtualenv to install into. +build: uv pip install . dora: ">=1.0" inputs: @@ -88,7 +88,7 @@ example: | - id: view git: ssh://git@gitea.liria.cl:5001/liria/dora-image-view.git tag: v0.1.0 - build: pip install . + build: uv pip install . path: dora-image-view inputs: image: camera/image_bgr