concurrent foreach preparation, types, validation, refactors

This commit is contained in:
lda
2026-05-22 12:11:51 +07:00 Verified
parent afafe40109
commit d8d5770c9f
17 changed files with 712 additions and 15 deletions
+9 -1
View File
@@ -394,9 +394,16 @@ class WorkflowBuilder:
id: str | None = None,
over: PathArg,
as_: str,
mode: Literal["serial", "parallel"] = "serial",
mode: Literal["serial", "concurrent"] = "serial",
on_item_error: Literal["fail", "collect", "skip"] = "fail",
concurrent: Mapping[str, object] | None = None,
) -> ForeachNode:
"""Add a foreach step.
Concurrent mode is intentionally model-only for now: it validates saved
shape, but runtime execution still rejects it until barrier commits are
implemented.
"""
node = ForeachNode.model_validate(
{
"id": id or self._next_step_id(f"foreach_{slug_id(as_)}"),
@@ -405,6 +412,7 @@ class WorkflowBuilder:
"as": as_,
"mode": mode,
"on_item_error": on_item_error,
"concurrent": concurrent,
}
)
self.nodes.append(node)