From 344a52709757bc2732c3d8ca4f8d06c60245240e Mon Sep 17 00:00:00 2001 From: Cristhian Date: Tue, 15 Sep 2026 06:50:43 -0300 Subject: [PATCH 1/2] record that the webcam example is verified, and pin v0.1.1 The example carried a caveat saying it validated but could not be run, because a `git:` node could not be fetched. The organization is public now, so it can: dora clones dora-webcam at the pinned tag, builds both nodes, and runs them against a real camera to a clean exit. The pin moves to v0.1.1, whose documentation shows the https URL. v0.1.0 points at an ssh:// URL that dora cannot authenticate, so anyone copying the wiring out of that tag would have hit the failure this example exists to demonstrate the absence of. What a `git:` node does require is still recorded, since it is not obvious: anonymous read, which on Gitea means a public organization and not merely a public repository. --- README.md | 13 ++++++++----- dataflow_webcam.yml | 11 ++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ff3ba1a..92a4d6d 100644 --- a/README.md +++ b/README.md @@ -85,12 +85,15 @@ else, and `dora validate --strict` warns about every *typed* input this node dec that a dataflow leaves unwired. The strictness belongs to `dataflow.yml`, which drives all of them. +Verified end to end: dora clones dora-webcam at the pinned tag, builds both nodes, and +runs them against a real camera to a clean exit. + **A `git:` node needs anonymous read access.** dora-cli 1.0.1 fetches through libgit2 -with no credential callback, so a repository that asks for credentials fails with -`remote authentication required but no callback set`, and `ssh://` cannot authenticate -at all. Note that marking a repository public is not sufficient on Gitea: a repository -inside a **private organization** is treated as internal and still answers anonymous -clones with `401`. The organization has to be public too. +with no credential callback, so `ssh://` cannot authenticate at all and anything asking +for credentials fails with `remote authentication required but no callback set`. On +Gitea, marking a repository public is not sufficient — a repository inside a private +organization is internal and answers an anonymous clone with `401`, so the organization +has to be public too. ### Node manifest diff --git a/dataflow_webcam.yml b/dataflow_webcam.yml index 728907f..46e60a6 100644 --- a/dataflow_webcam.yml +++ b/dataflow_webcam.yml @@ -5,10 +5,11 @@ # dataflow.yml is the gate, and needs neither. # # This needs anonymous read access to the camera's repository. dora-cli 1.0.1 -# fetches through libgit2 with no credential callback, so anything that asks for -# credentials fails with "remote authentication required but no callback set". -# On Gitea, marking the repository public is not enough: a repository inside a -# private organization is internal and still answers anonymous clones with 401. +# fetches through libgit2 with no credential callback, so ssh:// cannot +# authenticate at all and anything asking for credentials fails with "remote +# authentication required but no callback set". On Gitea, marking the repository +# public is not enough: a repository inside a private organization is internal +# and answers an anonymous clone with 401, so the organization must be public. # # `strict_types` is deliberately absent. A camera publishes an image and nothing # else, and `dora validate --strict` warns about every *typed* input this node @@ -19,7 +20,7 @@ nodes: - id: camera git: https://gitea.liria.cl/liria/dora-webcam.git - tag: v0.1.0 + tag: v0.1.1 build: uv pip install . path: dora-webcam inputs: -- 2.54.0 From 7eeb83bf6deac5b8fd9d8c31ed98d9881f9088a4 Mon Sep 17 00:00:00 2001 From: Cristhian Date: Tue, 15 Sep 2026 06:51:02 -0300 Subject: [PATCH 2/2] scope pytest to this repository's tests `dora run` vendors a `git:` node's source into git/ inside the checkout, and pytest collected that node's tests along with these: running the webcam example and then the test suite reported 67 tests, 26 of them another project's. A failure there would have gone red here, for a reason no one would find quickly. --- pyproject.toml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 5dda844..dfeb1fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,13 @@ build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["dora_image_view"] +[tool.pytest.ini_options] +# Only this repository's tests. `dora run` vendors a `git:` node's source into +# git/ inside the checkout, and pytest would otherwise collect that node's tests +# too -- reporting another project's results as this one's, and going red when +# they fail. +testpaths = ["tests"] + [tool.ruff.lint] extend-select = ["D", "I", "N", "RET", "UP"] -- 2.54.0