Errors¶
This page is the canonical catalogue of validation errors and domain exceptions raised by BioImageFlow. The full contract lives in BioImageFlow Library Specifications §6.6; this reference is the curated, GUI-oriented view.
ValidationError¶
ValidationError is the dataclass that
represents a single problem found during graph construction or
validation. The library never raises ValidationError itself — it
either raises one of the domain exceptions (see below) or appends a
ValidationError to an active error collector.
Field |
Description |
|---|---|
|
One of the values in |
|
Human-readable, English. Free-form; not stable across versions. |
|
Scoped name of the node the error applies to, or |
|
Name of the input field involved, or |
|
|
|
Optional opaque GUI-supplied id for the edge (round-tripped
through |
|
Tuple of parent workflow-node names for recursive scoping. Empty
tuple |
ValidationErrorKind¶
The full set of kinds, drawn from bioimageflow.validation.ValidationErrorKind:
Kind |
When raised |
Populated fields |
|---|---|---|
|
The graph contains a directed cycle (specs.md §6.5). |
|
|
A column binding’s producer |
|
|
A required input has neither a column binding, a constant, nor a default. |
|
|
A binding refers to a field that is not declared on the tool’s
|
|
|
A |
|
|
Pydantic validation failed for a constant value (range,
conversion, …). Reported by |
|
|
A node’s tool class could not be resolved during |
|
|
Two nodes share the same name within a workflow. |
|
|
Graph construction raised in
|
|
|
A source tool ( |
|
Domain exceptions¶
These exceptions are raised by the library outside an error-collector
context. Each carries a to_validation_error(...) method that maps
it onto the matching ValidationError for GUIs that catch and
surface them:
Exception |
When raised |
|---|---|
|
A required input has no source (no column ref, no constant, no
default) at construction time. Maps to |
|
|
|
Multiple upstream DataFrames cannot be aligned by index at
execution time (e.g., row counts diverge in a ProcessingTool
merge). Maps to |
|
A source |
|
|
|
|
|
|
Two |
Cycle handling¶
Cycles are reported in two different ways:
Workflow.validate()returns acycleValidationErrorand continues — other steps still run, so a graph with a cycle plus parameter errors gets all errors at once.Workflow.plan()raisesCycleInWorkflowErrorbecause a cyclic graph cannot be topologically ordered for planning.
Hosts that drive both should call validate() first and gate
plan() on no cycle entries — see Planning and Cache State.