reci.validation.rules.flow¶
Data-flow validation rules (FLOW001–FLOW007).
Functions
|
An input name matches multiple upstream outputs, in a job or across jobs. |
|
A string output is wired to a likely-boolean input. |
|
A job output consumed by another job comes from a matrix or conditional job. |
|
A |
|
Required input has no source at any level. |
|
An output is declared but never consumed downstream. |
- reci.validation.rules.flow.check_ambiguous_wiring(graph, config)[source]¶
An input name matches multiple upstream outputs, in a job or across jobs.
Within a job the nearest preceding step wins. Across jobs there is no nearer: the first producing job in recipe order is used.
- reci.validation.rules.flow.check_boolean_coercion(graph, config)[source]¶
A string output is wired to a likely-boolean input.
- reci.validation.rules.flow.check_matrix_output(graph, config)[source]¶
A job output consumed by another job comes from a matrix or conditional job.
A matrix job has one output value for all its legs: whichever leg finishes last wins. A job with an
if:that is false is skipped, and so is every job thatneedsit (unless it usesalways()or similar).
- reci.validation.rules.flow.check_output_references(graph, config)[source]¶
A
steps.*.outputs.*orneeds.*.outputs.*reference that resolves to nothing.steps.<id>.outputs.<name>naming a step that does not run before the reader, or an output the step’s action does not declare (-and_are different characters to GitHub).needs.<job>.outputs.<name>naming a job that is not among the job’sneeds(explicit or inferred from data flow), or an output that job neither declares inoutputs:nor has forwarded by the compiler.
- reci.validation.rules.flow.check_unsourced_required_inputs(graph, config)[source]¶
Required input has no source at any level.
- reci.validation.rules.flow.check_unused_outputs(graph, config)[source]¶
An output is declared but never consumed downstream.
Consumed means: matched by an input of a later step (by name, honouring
bind:), or read explicitly assteps.<id>.outputs.<name>(dot or bracket syntax; ids and names compared as GitHub does: ignoring case, but-and_differ) inside a${{ }}of a later step of the same job: itswith:,env:,run:,if:,name:or other keys, or in a joboutputs:entry (a job’s other fields cannot readsteps).needs.references are not counted: only the compiler’s own forwarding and the joboutputs:the recipe declares make them resolve.