Skip to main content

NodeProtocol Objects

Protocol defining the interface of a decorated node.

BranchError Objects

A failure inside a branch pipeline, recorded instead of raised so the main path is never taken down by a side pipeline.

Graph Objects

get_state

Get the current graph state. Returns: The current graph state.

set_state

Set the graph state. Arguments:
  • state - The new state to set for the graph.
Returns: The graph instance.

update_state

Update the graph state with new values. Arguments:
  • values - The new values to update the graph state with.
Returns: The graph instance.

reset_state

Reset the graph state to an empty dict.

add_node

Adds a node to the graph. Arguments:
  • node - The node to add to the graph.
Raises:
  • Exception - If a node with the same name already exists in the graph.

add_edge

Adds an edge between two nodes that already exist in the graph. Arguments:
  • source - The source node or its name.
  • destination - The destination node or its name.

add_branch

Adds a branch edge: a side pipeline that starts at destination once source has run, without becoming a fork of the main path. Regular edges out of a node with two or more successors fork the main path and expect a join. A branch edge instead runs destination and whatever regular edges follow it as an isolated pipeline: it needs no join and no end node, it stops at the first node with no successors (or one whose output has success: False), and an exception inside it is recorded in branch_errors rather than raised. Branches may themselves have branches. Arguments:
  • source - The node whose completion starts the branch.
  • destination - The first node of the branch pipeline.
  • condition - Optional callable (output, state) -> bool (may be async) evaluated with the source node’s output; the branch is skipped when it returns a falsy value.
  • wait - When True (default) the main path waits for the branch to finish before moving on. When False the branch runs as a detached task; source0 still waits for all detached branches before returning.

add_router

Adds a router node, allowing for a decision to be made on which branch to follow based on the choice output of the router node. Arguments:
  • sources - The list of source nodes for the router.
  • router - The router node.
  • destinations - The list of destination nodes for the router.

compile

Validate the graph:
  • exactly one start node present (or Graph.start_node set)
  • at least one end node present
  • all edges reference known nodes
  • all nodes reachable from the start (optional) no cycles when strict=True Returns self on success; raises GraphCompileError otherwise.

wait_for_branches

Wait for every detached branch pipeline started by this graph. Called by execute() before it returns; exposed for callers that drive _execute_branch themselves.

execute_many

Execute the graph on many inputs concurrently. Arguments:
  • inputs (Iterable[dict]): An iterable of input dicts to feed into the graph.
  • concurrency (int): Maximum number of graph executions to run at once.
  • state (Optional[Any]): Optional shared state to pass to each execution. If you want isolated state per execution, pass None and the graph’s normal semantics will apply.
Returns: list[Any]: The list of results in the same order as inputs.

get_callback

Get a new instance of the callback class. Returns: Callback: A new instance of the callback class.

set_callback

Set the callback class that is returned by the get_callback method and used as the default callback when no callback is passed to the execute method. Arguments:
  • callback_class (type[Callback]): The callback class to use as the default callback.

add_parallel

Add multiple outgoing edges from a single source node to be executed in parallel. Arguments:
  • source - The source node for the parallel branches.
  • destinations - The list of destination nodes for the parallel branches.

add_join

Joins multiple parallel branches into a single branch. Arguments:
  • sources - The list of source nodes for the join.
  • destination - The destination node for the join.

visualize

Render the current graph. If matplotlib is not installed, raise a helpful error telling users to install the viz extra. Optionally save to a file via save_path.

BranchEdge Objects

Side edge from source to the first node of an isolated pipeline. See Graph.add_branch.