make the node standalone and rename it to dora-image-view #3

Merged
cristhian merged 5 commits from standalone-dora-plot into main 2026-09-15 09:33:12 +00:00
Owner

Summary

Two things kept this repository from standing on its own: the node was named opencv-plot everywhere, and the example dataflow could not run without a webcam and two nodes fetched from dora-hub over the network.

This renames the node to dora-image-view, replaces the external example with a synthetic source in this checkout, and makes the dataflow something CI runs rather than only validates.

Changes

  • Rename opencv_plot/ to dora_image_view/, plot.py to view.py, Plot to View, the entrypoint and manifest name: to dora-image-view, and PLOT_WIDTH/PLOT_HEIGHT to VIEW_WIDTH/VIEW_HEIGHT. Breaking for anyone wiring path: opencv-plot or setting PLOT_WIDTH; nothing was tagged.
  • Add a synthetic source node in this checkout, so the example dataflow needs no camera, no detector and no network, and CI can run it rather than only validate it.
  • Type the source's outputs inline with output_types: rather than shipping a second dora-node.yml. A manifest describes exactly one node and is what dora hub publish operates on; this repository ships one node, so it carries one manifest.
  • Merge the two CI jobs into one. They each paid for a checkout, an apt-get update and an OpenCV install — about twenty seconds apiece — to run gates that together take about a second. The dora CLI is cached, pinned to DORA_VERSION.
  • Drop the dora-zed and dora-yolo wirings from the README; the inputs are documented generically, so no sibling repository is named.

Why the original run failed

dora validate matches a node manifest to a path: node by entrypoint. The source node added here is a path node, the repository-root dora-node.yml was the only manifest, its entrypoint did not name that path, and strict_types: true turned the resulting warning into a non-zero exit. The source now runs through the interpreter, which leaves nothing for a manifest to be matched against.

Validation

Checked against dora-cli 1.0.1, installed for the purpose:

  • dora validate dataflow.yml passes, with both contracts injected and compared
  • CI=true SOURCE_FRAMES=30 dora run dataflow.yml --uv runs both nodes to a clean exit
  • uv run ruff check . clean, tests pass
  • The type gate still bites: a deliberate Float32 → String swap fails validate

Both things the original description could not check — validation under strict_types and a path node getting the project's pinned dependencies — are now verified rather than reasoned about.

# Summary Two things kept this repository from standing on its own: the node was named `opencv-plot` everywhere, and the example dataflow could not run without a webcam and two nodes fetched from dora-hub over the network. This renames the node to `dora-image-view`, replaces the external example with a synthetic source in this checkout, and makes the dataflow something CI runs rather than only validates. ## Changes - Rename `opencv_plot/` to `dora_image_view/`, `plot.py` to `view.py`, `Plot` to `View`, the entrypoint and manifest `name:` to `dora-image-view`, and `PLOT_WIDTH`/`PLOT_HEIGHT` to `VIEW_WIDTH`/`VIEW_HEIGHT`. Breaking for anyone wiring `path: opencv-plot` or setting `PLOT_WIDTH`; nothing was tagged. - Add a synthetic source node in this checkout, so the example dataflow needs no camera, no detector and no network, and CI can run it rather than only validate it. - Type the source's outputs inline with `output_types:` rather than shipping a second `dora-node.yml`. A manifest describes exactly one node and is what `dora hub publish` operates on; this repository ships one node, so it carries one manifest. - Merge the two CI jobs into one. They each paid for a checkout, an `apt-get update` and an OpenCV install — about twenty seconds apiece — to run gates that together take about a second. The dora CLI is cached, pinned to `DORA_VERSION`. - Drop the dora-zed and dora-yolo wirings from the README; the inputs are documented generically, so no sibling repository is named. ## Why the original run failed `dora validate` matches a node manifest to a `path:` node **by entrypoint**. The source node added here is a path node, the repository-root `dora-node.yml` was the only manifest, its entrypoint did not name that path, and `strict_types: true` turned the resulting warning into a non-zero exit. The source now runs through the interpreter, which leaves nothing for a manifest to be matched against. ## Validation Checked against `dora-cli 1.0.1`, installed for the purpose: - [x] `dora validate dataflow.yml` passes, with both contracts injected and compared - [x] `CI=true SOURCE_FRAMES=30 dora run dataflow.yml --uv` runs both nodes to a clean exit - [x] `uv run ruff check .` clean, tests pass - [x] The type gate still bites: a deliberate `Float32` → `String` swap fails validate Both things the original description could not check — validation under `strict_types` and a path node getting the project's pinned dependencies — are now verified rather than reasoned about.
cristhian added 2 commits 2026-09-14 20:10:43 +00:00
The repository is dora-plot, but the package, the entrypoint, the manifest
name and the window title were all opencv-plot. Consumers wire the node by
`path:`, so the split name was visible in every dataflow.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018WLVZCFFcCH1EpTXGfS9aD
add an in-repo synthetic source so the example needs no network
validate / dataflow (pull_request) Failing after 59m9s
validate / test (pull_request) Successful in 59m8s
22bd1e9e89
The example dataflow pulled opencv-video-capture and pyarrow-sender from
dora-hub, needed a webcam, and left `bbox` unwired because every bbox source
is a detector. examples/source.py emits an animated frame, the box around the
square in it, and a caption, so the dataflow exercises all three inputs with
nothing outside this checkout.

SOURCE_FRAMES bounds the run, which lets CI run the dataflow headless rather
than only validate it. Drops the dora-zed and dora-yolo wirings from the
README and trims AGENTS.md to what the code and README do not already say.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018WLVZCFFcCH1EpTXGfS9aD
cristhian added the feature label 2026-09-14 20:10:52 +00:00
cristhian added 3 commits 2026-09-15 09:04:10 +00:00
The repository, the Python package, the entrypoint and the manifest name all
now agree. `plot` was carried over from the upstream opencv-plot node and no
longer described anything here, so the module, the class and the environment
variables follow the node:

  dora_plot/         -> dora_image_view/
  dora_plot/plot.py  -> dora_image_view/view.py
  Plot               -> View
  PLOT_WIDTH/HEIGHT  -> VIEW_WIDTH/HEIGHT
  --plot-width/-height -> --view-width/-height

Breaking for anyone wiring `path: dora-plot` or setting PLOT_WIDTH; nothing is
tagged yet.
`dora validate` matches a node manifest to a `path:` node by entrypoint. With
no manifest beside examples/source.py the root dora-node.yml was tried against
it, did not match its entrypoint, and warned -- which `strict_types: true`
turns into a non-zero exit, failing CI.

Declaring the source's output types in the new manifest rather than as
`output_types:` in dataflow.yml is also what makes them checked: an inline
annotation shadows the manifest, so the manifest would be injected but never
compared against the viewer's.

Verified with dora-cli 1.0.1: validate passes with both contracts injected, and
`CI=true SOURCE_FRAMES=30 dora run dataflow.yml --uv` runs both nodes to a
clean exit.
refactor CI into a single job and cache the dora CLI
validate / validate (pull_request) Successful in 59m51s
407395ab88
The two jobs each paid for a checkout, an apt-get update and an OpenCV shared
library install -- about twenty seconds apiece -- to run gates that together
take about a second. Merging them pays that once. The dora CLI is a static
binary pinned to DORA_VERSION, so it caches exactly.
cristhian changed title from make dora-plot standalone and rename the node to match the repository to make the node standalone and rename it to dora-image-view 2026-09-15 09:33:05 +00:00
cristhian merged commit 7eb00000ea into main 2026-09-15 09:33:12 +00:00
cristhian deleted branch standalone-dora-plot 2026-09-15 09:33:12 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: liria/dora-image-view#3