feat: serve docs flat at /<repo>/ with no redirects

- collect.py copies each repo's built site contents directly to a
  top-level <repo>/ dir (was libs|apis|wiki/<repo>/site nesting)
- nginx uses `index index.html lib/index.html api/index.html` so
  /dagpipe/ -> lib/index.html, /auth-server/ -> api/index.html are
  served internally with no redirects
- _index regenerates links against the flat layout
  (/dagpipe/lib/, /auth-server/api/, /mongo-ops/, /blog/...)
- config.yml static entries point at vendored blog/ + media-manager/
- Dockerfile copies per-repo dirs flat into the nginx html root
- removed stale libs/, apis/, wiki/, tutorials/ category trees
This commit is contained in:
2026-09-11 21:32:30 +05:30
parent 0c25cbb19f
commit a32eeaf2b4
882 changed files with 85 additions and 1982 deletions

6
dagpipe/mcp/index.json Normal file
View File

@@ -0,0 +1,6 @@
{
"project": "dagpipe",
"type": "docforge-model",
"modules_count": 6,
"source": "docforge"
}

View File

@@ -0,0 +1,485 @@
{
"module": "dagpipe.engine",
"content": {
"path": "dagpipe.engine",
"docstring": "# Summary\n\nExecution engine responsible for running pipelines and graphs.\n\nThe `Engine` executes `Node` objects and propagates immutable `State` instances\nthrough either a linear sequence or a directed acyclic graph (`Graph`).\nIt orchestrates execution order, branching, and state propagation.\n\n---\n\n# Guarantees\n\n- Deterministic execution and consistent state lineage.\n- Orchestrates execution without modifying `Graph`, `Node`, or `State` objects.",
"objects": {
"deque": {
"name": "deque",
"kind": "alias",
"path": "dagpipe.engine.deque",
"signature": "<bound method Alias.signature of Alias('deque', 'collections.deque')>",
"docstring": null
},
"AsyncIterator": {
"name": "AsyncIterator",
"kind": "alias",
"path": "dagpipe.engine.AsyncIterator",
"signature": "<bound method Alias.signature of Alias('AsyncIterator', 'collections.abc.AsyncIterator')>",
"docstring": null
},
"Awaitable": {
"name": "Awaitable",
"kind": "alias",
"path": "dagpipe.engine.Awaitable",
"signature": "<bound method Alias.signature of Alias('Awaitable', 'collections.abc.Awaitable')>",
"docstring": null
},
"Callable": {
"name": "Callable",
"kind": "alias",
"path": "dagpipe.engine.Callable",
"signature": "<bound method Alias.signature of Alias('Callable', 'collections.abc.Callable')>",
"docstring": null
},
"Iterator": {
"name": "Iterator",
"kind": "alias",
"path": "dagpipe.engine.Iterator",
"signature": "<bound method Alias.signature of Alias('Iterator', 'collections.abc.Iterator')>",
"docstring": null
},
"Sequence": {
"name": "Sequence",
"kind": "alias",
"path": "dagpipe.engine.Sequence",
"signature": "<bound method Alias.signature of Alias('Sequence', 'collections.abc.Sequence')>",
"docstring": null
},
"Any": {
"name": "Any",
"kind": "alias",
"path": "dagpipe.engine.Any",
"signature": "<bound method Alias.signature of Alias('Any', 'typing.Any')>",
"docstring": null
},
"Optional": {
"name": "Optional",
"kind": "alias",
"path": "dagpipe.engine.Optional",
"signature": "<bound method Alias.signature of Alias('Optional', 'typing.Optional')>",
"docstring": null
},
"Graph": {
"name": "Graph",
"kind": "class",
"path": "dagpipe.engine.Graph",
"signature": "<bound method Alias.signature of Alias('Graph', 'dagpipe.graph.Graph')>",
"docstring": "Directed Acyclic Graph defining execution topology of `Node` objects.\n\nNotes:\n **Responsibilities:**\n\n - Stores node connectivity and validates that the topology remains acyclic.\n - Structure determines how `State` flows between nodes during execution.\n\n **Guarantees:**\n\n - Topology is acyclic. Node relationships remain consistent.\n - Thread-safe for concurrent reads after construction.",
"members": {
"add_edge": {
"name": "add_edge",
"kind": "function",
"path": "dagpipe.engine.Graph.add_edge",
"signature": "<bound method Alias.signature of Alias('add_edge', 'dagpipe.graph.Graph.add_edge')>",
"docstring": "Add a directed edge from `src` to `dst`.\n\nArgs:\n src (Node):\n Source node.\n\n dst (Node):\n Destination node.\n\nRaises:\n TypeError:\n If `src` or `dst` is not a `Node`.\n\n ValueError:\n If the edge would create a cycle or if `src` and `dst` are common.\n\nNotes:\n - Validates node types.\n - Prevents cycles.\n - Registers nodes if not present.\n - Updates parent and child mappings."
},
"add_root": {
"name": "add_root",
"kind": "function",
"path": "dagpipe.engine.Graph.add_root",
"signature": "<bound method Alias.signature of Alias('add_root', 'dagpipe.graph.Graph.add_root')>",
"docstring": "Add a root node with no parents.\n\nArgs:\n node (Node):\n Node to add as a root.\n\nRaises:\n TypeError:\n If node is not a Node instance."
},
"children": {
"name": "children",
"kind": "function",
"path": "dagpipe.engine.Graph.children",
"signature": "<bound method Alias.signature of Alias('children', 'dagpipe.graph.Graph.children')>",
"docstring": "Return child nodes of a node.\n\nArgs:\n node (Node):\n Node to query.\n\nReturns:\n Tuple[Node, ...]:\n Outgoing neighbors."
},
"parents": {
"name": "parents",
"kind": "function",
"path": "dagpipe.engine.Graph.parents",
"signature": "<bound method Alias.signature of Alias('parents', 'dagpipe.graph.Graph.parents')>",
"docstring": "Return parent nodes of a node.\n\nArgs:\n node (Node):\n Node to query.\n\nReturns:\n Tuple[Node, ...]:\n Incoming neighbors."
},
"roots": {
"name": "roots",
"kind": "function",
"path": "dagpipe.engine.Graph.roots",
"signature": "<bound method Alias.signature of Alias('roots', 'dagpipe.graph.Graph.roots')>",
"docstring": "Return root nodes (nodes with no incoming edges).\n\nReturns:\n Tuple[Node, ...]:\n Entry point nodes."
},
"nodes": {
"name": "nodes",
"kind": "function",
"path": "dagpipe.engine.Graph.nodes",
"signature": "<bound method Alias.signature of Alias('nodes', 'dagpipe.graph.Graph.nodes')>",
"docstring": "Return all nodes in the graph.\n\nReturns:\n Tuple[Node, ...]:\n All registered nodes."
}
}
},
"AsyncNode": {
"name": "AsyncNode",
"kind": "class",
"path": "dagpipe.engine.AsyncNode",
"signature": "<bound method Alias.signature of Alias('AsyncNode', 'dagpipe.node.AsyncNode')>",
"docstring": "Base class for nodes whose execution is asynchronous.\n\nSubclasses implement `resolve_async` (an async generator yielding derived\n`State` objects). The engine dispatches to `resolve_async` when running an\nasync traversal (see `Engine.run_async`).\n\nSync-only engines (and the base `Node.run`) treat an `AsyncNode` as a no-op\nconsumer: calling `run` on an `AsyncNode` returns no states, signalling that\nan async engine is required.",
"members": {
"resolve": {
"name": "resolve",
"kind": "function",
"path": "dagpipe.engine.AsyncNode.resolve",
"signature": "<bound method Alias.signature of Alias('resolve', 'dagpipe.node.AsyncNode.resolve')>",
"docstring": null
},
"resolve_async": {
"name": "resolve_async",
"kind": "function",
"path": "dagpipe.engine.AsyncNode.resolve_async",
"signature": "<bound method Alias.signature of Alias('resolve_async', 'dagpipe.node.AsyncNode.resolve_async')>",
"docstring": "Execute node logic asynchronously.\n\nArgs:\n state (State):\n Input execution state.\n\nReturns:\n Iterable[State]:\n Derived execution state(s).\n\nNotes:\n Subclasses implement this. Must not mutate the input state.\n Should use `fork()` to create child states."
},
"run_async": {
"name": "run_async",
"kind": "function",
"path": "dagpipe.engine.AsyncNode.run_async",
"signature": "<bound method Alias.signature of Alias('run_async', 'dagpipe.node.AsyncNode.run_async')>",
"docstring": "Execute this node asynchronously on a state, validating outputs."
}
}
},
"Node": {
"name": "Node",
"kind": "class",
"path": "dagpipe.engine.Node",
"signature": "<bound method Alias.signature of Alias('Node', 'dagpipe.node.Node')>",
"docstring": "Base class for all dagpipe execution nodes.\n\nAttributes:\n id (str):\n Unique identifier of the node (snake_case dotted format).\n\n name (str):\n Human-readable display name.\n\nNotes:\n **Responsibilities:**\n\n - Represents a deterministic unit of execution in the pipeline graph.\n - Consumes one `State` and produces zero, one, or many derived states.\n - Defines execution logic and enables branching, filtering, and transformation.\n\n **Guarantees:**\n\n - Nodes must never mutate the input `State`.\n - Instances are singletons per subclass and reused across executions.",
"members": {
"id": {
"name": "id",
"kind": "attribute",
"path": "dagpipe.engine.Node.id",
"signature": "<bound method Alias.signature of Alias('id', 'dagpipe.node.Node.id')>",
"docstring": null
},
"name": {
"name": "name",
"kind": "attribute",
"path": "dagpipe.engine.Node.name",
"signature": "<bound method Alias.signature of Alias('name', 'dagpipe.node.Node.name')>",
"docstring": null
},
"node_id_to_name": {
"name": "node_id_to_name",
"kind": "function",
"path": "dagpipe.engine.Node.node_id_to_name",
"signature": "<bound method Alias.signature of Alias('node_id_to_name', 'dagpipe.node.Node.node_id_to_name')>",
"docstring": "Convert a dotted snake_case node ID into a human-readable name.\n\nArgs:\n node_id (str):\n Unique node identifier (e.g., 'entity.resolve.numeric_merchant').\n\nReturns:\n str:\n Human-readable display name (e.g., 'Entity Resolve Numeric Merchant')."
},
"clean_id_and_name": {
"name": "clean_id_and_name",
"kind": "function",
"path": "dagpipe.engine.Node.clean_id_and_name",
"signature": "<bound method Alias.signature of Alias('clean_id_and_name', 'dagpipe.node.Node.clean_id_and_name')>",
"docstring": "Normalize and validate node ID and display name.\n\nRaises:\n TypeError:\n If ID is not a string.\n ValueError:\n If ID format is invalid.\n\nNotes:\n **Guarantees:**\n\n - Generates ID from module and class name if missing.\n - Validates ID format.\n - Generates human-readable name if missing."
},
"run": {
"name": "run",
"kind": "function",
"path": "dagpipe.engine.Node.run",
"signature": "<bound method Alias.signature of Alias('run', 'dagpipe.node.Node.run')>",
"docstring": "Execute this node on a `State`.\n\nArgs:\n state (State):\n Input execution state.\n\nReturns:\n tuple[State, ...]:\n Derived execution states.\n\nRaises:\n TypeError:\n If `resolve()` yields a non-`State` object."
},
"fork": {
"name": "fork",
"kind": "function",
"path": "dagpipe.engine.Node.fork",
"signature": "<bound method Alias.signature of Alias('fork', 'dagpipe.node.Node.fork')>",
"docstring": "Create a child `State` attributed to this node.\n\nArgs:\n state (State):\n Parent execution state.\n\n payload_update (Mapping[str, Any], optional):\n Dot-path payload updates.\n\n confidence_delta (float, optional):\n Confidence adjustment.\n\n metadata_update (Mapping[str, Any], optional):\n Metadata updates.\n\nReturns:\n State:\n New child execution state.\n\nNotes:\n **Responsibilities:**\n\n - Convenience wrapper around `State.fork()` that automatically\n records this node's ID in state history."
},
"resolve": {
"name": "resolve",
"kind": "function",
"path": "dagpipe.engine.Node.resolve",
"signature": "<bound method Alias.signature of Alias('resolve', 'dagpipe.node.Node.resolve')>",
"docstring": "Execute node logic.\n\nArgs:\n state (State):\n Input execution state.\n\nYields:\n State:\n Derived execution state(s).\n\nNotes:\n **Responsibilities:**\n\n - Subclasses implement specific resolution behavior.\n - Must not mutate input state.\n - Should use `fork()` to create child states.\n - May yield zero states to terminate a branch."
},
"is_async": {
"name": "is_async",
"kind": "function",
"path": "dagpipe.engine.Node.is_async",
"signature": "<bound method Alias.signature of Alias('is_async', 'dagpipe.node.Node.is_async')>",
"docstring": "Return whether this node executes asynchronously."
}
}
},
"State": {
"name": "State",
"kind": "class",
"path": "dagpipe.engine.State",
"signature": "<bound method Alias.signature of Alias('State', 'dagpipe.state.State')>",
"docstring": "Immutable execution state propagated through dagpipe pipeline.\n\nAttributes:\n payload (Payload):\n Execution data container.\n\n schema (ClassVar[Schema]):\n Payload validation schema.\n\n confidence (float):\n Execution confidence score.\n\n parent (Optional[State]):\n Parent state reference.\n\n depth (int):\n Execution depth.\n\n history (Tuple[str, ...]):\n Ordered node execution lineage.\n\n metadata (Dict[str, Any]):\n Execution metadata.\n\nNotes:\n **Responsibilities:**\n\n - Represents a complete execution snapshot at a specific point in\n pipeline traversal.\n - Fundamental unit of execution in `dagpipe`.\n - Fully thread-safe due to immutability.",
"members": {
"payload": {
"name": "payload",
"kind": "attribute",
"path": "dagpipe.engine.State.payload",
"signature": "<bound method Alias.signature of Alias('payload', 'dagpipe.state.State.payload')>",
"docstring": null
},
"schema": {
"name": "schema",
"kind": "attribute",
"path": "dagpipe.engine.State.schema",
"signature": "<bound method Alias.signature of Alias('schema', 'dagpipe.state.State.schema')>",
"docstring": null
},
"confidence": {
"name": "confidence",
"kind": "attribute",
"path": "dagpipe.engine.State.confidence",
"signature": "<bound method Alias.signature of Alias('confidence', 'dagpipe.state.State.confidence')>",
"docstring": null
},
"parent": {
"name": "parent",
"kind": "attribute",
"path": "dagpipe.engine.State.parent",
"signature": "<bound method Alias.signature of Alias('parent', 'dagpipe.state.State.parent')>",
"docstring": null
},
"depth": {
"name": "depth",
"kind": "attribute",
"path": "dagpipe.engine.State.depth",
"signature": "<bound method Alias.signature of Alias('depth', 'dagpipe.state.State.depth')>",
"docstring": null
},
"history": {
"name": "history",
"kind": "attribute",
"path": "dagpipe.engine.State.history",
"signature": "<bound method Alias.signature of Alias('history', 'dagpipe.state.State.history')>",
"docstring": null
},
"metadata": {
"name": "metadata",
"kind": "attribute",
"path": "dagpipe.engine.State.metadata",
"signature": "<bound method Alias.signature of Alias('metadata', 'dagpipe.state.State.metadata')>",
"docstring": null
},
"fork": {
"name": "fork",
"kind": "function",
"path": "dagpipe.engine.State.fork",
"signature": "<bound method Alias.signature of Alias('fork', 'dagpipe.state.State.fork')>",
"docstring": "Create a new child `State` derived from this state.\n\nArgs:\n payload_update (Mapping[str, Any], optional):\n Dot-path updates applied to the payload.\n\n confidence_delta (float, optional):\n Adjustment applied to current confidence.\n\n node_id (str, optional):\n Identifier of the node creating this state.\n\n metadata_update (Mapping[str, Any], optional):\n Updates merged into state metadata.\n\nReturns:\n State:\n A new immutable `State` instance.\n\nNotes:\n **Guarantees:**\n\n - This is the only supported mechanism for modifying execution data.\n - Validates payload updates, preserves lineage, increments depth,\n and appends to history."
},
"lineage": {
"name": "lineage",
"kind": "function",
"path": "dagpipe.engine.State.lineage",
"signature": "<bound method Alias.signature of Alias('lineage', 'dagpipe.state.State.lineage')>",
"docstring": "Return lineage from root to this State.\n\nReturns:\n Tuple[State, ...]:\n Ordered execution lineage (root first)."
},
"get": {
"name": "get",
"kind": "function",
"path": "dagpipe.engine.State.get",
"signature": "<bound method Alias.signature of Alias('get', 'dagpipe.state.State.get')>",
"docstring": "Retrieve payload value.\n\nArgs:\n key (str):\n Dot-path key.\n default (Any, optional):\n Fallback value.\n\nReturns:\n Any:\n Stored value or default."
},
"has": {
"name": "has",
"kind": "function",
"path": "dagpipe.engine.State.has",
"signature": "<bound method Alias.signature of Alias('has', 'dagpipe.state.State.has')>",
"docstring": "Check whether payload contains key.\n\nArgs:\n key (str):\n Dot-path key.\n\nReturns:\n bool:\n Existence of the key."
}
}
},
"StepHook": {
"name": "StepHook",
"kind": "attribute",
"path": "dagpipe.engine.StepHook",
"signature": null,
"docstring": null
},
"AsyncStepHook": {
"name": "AsyncStepHook",
"kind": "attribute",
"path": "dagpipe.engine.AsyncStepHook",
"signature": null,
"docstring": null
},
"ProgressMessage": {
"name": "ProgressMessage",
"kind": "class",
"path": "dagpipe.engine.ProgressMessage",
"signature": "<bound method Class.signature of Class('ProgressMessage', 33, 82)>",
"docstring": "Lightweight progress payload emitted by engine step hooks.\n\nMirrors the imperative `ProgressMessage` used by the legacy orchestrator so\ncallers can surface counts/lines/errors without coupling the engine to pydantic.",
"members": {
"lines": {
"name": "lines",
"kind": "attribute",
"path": "dagpipe.engine.ProgressMessage.lines",
"signature": null,
"docstring": null
},
"blocks": {
"name": "blocks",
"kind": "attribute",
"path": "dagpipe.engine.ProgressMessage.blocks",
"signature": null,
"docstring": null
},
"count": {
"name": "count",
"kind": "attribute",
"path": "dagpipe.engine.ProgressMessage.count",
"signature": null,
"docstring": null
},
"unit": {
"name": "unit",
"kind": "attribute",
"path": "dagpipe.engine.ProgressMessage.unit",
"signature": null,
"docstring": null
},
"raw_ocr_line": {
"name": "raw_ocr_line",
"kind": "attribute",
"path": "dagpipe.engine.ProgressMessage.raw_ocr_line",
"signature": null,
"docstring": null
},
"error": {
"name": "error",
"kind": "attribute",
"path": "dagpipe.engine.ProgressMessage.error",
"signature": null,
"docstring": null
},
"step": {
"name": "step",
"kind": "attribute",
"path": "dagpipe.engine.ProgressMessage.step",
"signature": null,
"docstring": null
},
"status": {
"name": "status",
"kind": "attribute",
"path": "dagpipe.engine.ProgressMessage.status",
"signature": null,
"docstring": null
},
"as_dict": {
"name": "as_dict",
"kind": "function",
"path": "dagpipe.engine.ProgressMessage.as_dict",
"signature": "<bound method Function.signature of Function('as_dict', 72, 82)>",
"docstring": null
}
}
},
"StepResult": {
"name": "StepResult",
"kind": "class",
"path": "dagpipe.engine.StepResult",
"signature": "<bound method Class.signature of Class('StepResult', 85, 103)>",
"docstring": "A single checkpointed step within an async/resumable engine run.\n\nAttributes:\n index (int): Ordinal index of the step.\n node_id (str): Identifier of the node associated with this step.\n states (Tuple[State, ...]): States produced by running this step.\n completed (bool): Whether this step succeeded (vs. paused/interrupted).",
"members": {
"index": {
"name": "index",
"kind": "attribute",
"path": "dagpipe.engine.StepResult.index",
"signature": null,
"docstring": null
},
"node_id": {
"name": "node_id",
"kind": "attribute",
"path": "dagpipe.engine.StepResult.node_id",
"signature": null,
"docstring": null
},
"states": {
"name": "states",
"kind": "attribute",
"path": "dagpipe.engine.StepResult.states",
"signature": null,
"docstring": null
},
"completed": {
"name": "completed",
"kind": "attribute",
"path": "dagpipe.engine.StepResult.completed",
"signature": null,
"docstring": null
}
}
},
"Engine": {
"name": "Engine",
"kind": "class",
"path": "dagpipe.engine.Engine",
"signature": "<bound method Class.signature of Class('Engine', 106, 537)>",
"docstring": "Execution engine responsible for running pipeline logic.\n\nNotes:\n **Responsibilities:**\n\n - Accepts either a linear sequence of `Node` objects or a `Graph`\n defining execution topology.\n - Propagates immutable `State` objects through `Node` objects and\n collects terminal states.\n - Supports synchronous (`run`) and asynchronous (`run_async`)\n execution, dispatching per-node.\n - Supports step-wise / resumable execution and progress hooks.\n\n **Guarantees:**\n\n - Never mutates `State`, `Node`, or `Graph` instances.\n - `State` objects are never modified in place; each branch produces\n independent instances.\n - Execution order is deterministic and follows graph or pipeline topology.\n - Thread-safe for concurrent execution.",
"members": {
"MODE_LINEAR": {
"name": "MODE_LINEAR",
"kind": "attribute",
"path": "dagpipe.engine.Engine.MODE_LINEAR",
"signature": null,
"docstring": null
},
"MODE_GRAPH": {
"name": "MODE_GRAPH",
"kind": "attribute",
"path": "dagpipe.engine.Engine.MODE_GRAPH",
"signature": null,
"docstring": null
},
"run": {
"name": "run",
"kind": "function",
"path": "dagpipe.engine.Engine.run",
"signature": "<bound method Function.signature of Function('run', 165, 200)>",
"docstring": "Execute the pipeline starting from a root `State`.\n\nArgs:\n root (State):\n Initial execution state.\n\nReturns:\n list[State]:\n Terminal execution states produced by the pipeline.\n\nRaises:\n TypeError:\n If `root` is not a `State` instance.\n\n RuntimeError:\n If the engine execution mode is invalid.\n\nNotes:\n **Responsibilities:**\n\n - Selects execution mode, propagates state through nodes, creates\n new instances for branches, and collects terminal states."
},
"run_async": {
"name": "run_async",
"kind": "function",
"path": "dagpipe.engine.Engine.run_async",
"signature": "<bound method Function.signature of Function('run_async', 206, 232)>",
"docstring": "Execute the pipeline starting from `root`, dispatching sync vs async nodes.\n\nArgs:\n root (State):\n Initial execution state.\n\nReturns:\n list[State]:\n Terminal execution states produced by the pipeline.\n\nNotes:\n Each node is executed with `Node.run` when synchronous and\n `AsyncNode.run_async` when asynchronous. Linear and graph topologies\n are both supported."
},
"run_steps": {
"name": "run_steps",
"kind": "function",
"path": "dagpipe.engine.Engine.run_steps",
"signature": "<bound method Function.signature of Function('run_steps', 322, 384)>",
"docstring": "Execute the pipeline step-by-step, yielding one `StepResult` per step.\n\nArgs:\n root (State):\n Initial execution state.\n\n resume_from (int, optional):\n Skip steps at index < `resume_from` (for resume-after-partial).\n Steps are 0-indexed.\n\n on_step (StepHook, optional):\n Callback `(step, status, message)` invoked per step; falls back\n to the engine-level hook when unset.\n\nYields:\n StepResult:\n One per executed node/step, carrying the produced states.\n\nNotes:\n This is a synchronous, generator-based checkpoint interface compatible\n with the imperative resume-by-step behaviour of the legacy\n orchestrator. Use `run_steps_async` for async nodes."
},
"run_steps_async": {
"name": "run_steps_async",
"kind": "function",
"path": "dagpipe.engine.Engine.run_steps_async",
"signature": "<bound method Function.signature of Function('run_steps_async', 386, 440)>",
"docstring": "Async variant of `run_steps` supporting `AsyncNode` execution.\n\nArgs:\n root (State):\n Initial execution state.\n\n resume_from (int, optional):\n Skip steps at index < `resume_from`.\n\n on_step (AsyncStepHook, optional):\n Async callback `(step, status, message)` invoked per step.\n\nYields:\n StepResult:\n One per executed node/step."
},
"nodes": {
"name": "nodes",
"kind": "attribute",
"path": "dagpipe.engine.Engine.nodes",
"signature": null,
"docstring": "Return nodes managed by this engine.\n\nReturns:\n tuple[Node, ...]:\n Ordered sequence in linear mode or all nodes in graph mode."
}
}
},
"Incomplete": {
"name": "Incomplete",
"kind": "alias",
"path": "dagpipe.engine.Incomplete",
"signature": "<bound method Alias.signature of Alias('Incomplete', '_typeshed.Incomplete')>",
"docstring": null
}
}
}
}

View File

@@ -0,0 +1,132 @@
{
"module": "dagpipe.graph",
"content": {
"path": "dagpipe.graph",
"docstring": "# Summary\n\nDefines DAG structure connecting nodes.\n\nA `Graph` describes execution topology only. It does not execute nodes or manage\n`State`. Execution is handled by an `Engine`.\n\n---\n\n# Responsibilities\n\n- Multiple roots, branching, and merging support.\n- Deterministic traversal based on topology.\n- Graph is mutable during construction but treated as immutable at runtime.",
"objects": {
"defaultdict": {
"name": "defaultdict",
"kind": "alias",
"path": "dagpipe.graph.defaultdict",
"signature": "<bound method Alias.signature of Alias('defaultdict', 'collections.defaultdict')>",
"docstring": null
},
"Node": {
"name": "Node",
"kind": "class",
"path": "dagpipe.graph.Node",
"signature": "<bound method Alias.signature of Alias('Node', 'dagpipe.node.Node')>",
"docstring": "Base class for all dagpipe execution nodes.\n\nAttributes:\n id (str):\n Unique identifier of the node (snake_case dotted format).\n\n name (str):\n Human-readable display name.\n\nNotes:\n **Responsibilities:**\n\n - Represents a deterministic unit of execution in the pipeline graph.\n - Consumes one `State` and produces zero, one, or many derived states.\n - Defines execution logic and enables branching, filtering, and transformation.\n\n **Guarantees:**\n\n - Nodes must never mutate the input `State`.\n - Instances are singletons per subclass and reused across executions.",
"members": {
"id": {
"name": "id",
"kind": "attribute",
"path": "dagpipe.graph.Node.id",
"signature": "<bound method Alias.signature of Alias('id', 'dagpipe.node.Node.id')>",
"docstring": null
},
"name": {
"name": "name",
"kind": "attribute",
"path": "dagpipe.graph.Node.name",
"signature": "<bound method Alias.signature of Alias('name', 'dagpipe.node.Node.name')>",
"docstring": null
},
"node_id_to_name": {
"name": "node_id_to_name",
"kind": "function",
"path": "dagpipe.graph.Node.node_id_to_name",
"signature": "<bound method Alias.signature of Alias('node_id_to_name', 'dagpipe.node.Node.node_id_to_name')>",
"docstring": "Convert a dotted snake_case node ID into a human-readable name.\n\nArgs:\n node_id (str):\n Unique node identifier (e.g., 'entity.resolve.numeric_merchant').\n\nReturns:\n str:\n Human-readable display name (e.g., 'Entity Resolve Numeric Merchant')."
},
"clean_id_and_name": {
"name": "clean_id_and_name",
"kind": "function",
"path": "dagpipe.graph.Node.clean_id_and_name",
"signature": "<bound method Alias.signature of Alias('clean_id_and_name', 'dagpipe.node.Node.clean_id_and_name')>",
"docstring": "Normalize and validate node ID and display name.\n\nRaises:\n TypeError:\n If ID is not a string.\n ValueError:\n If ID format is invalid.\n\nNotes:\n **Guarantees:**\n\n - Generates ID from module and class name if missing.\n - Validates ID format.\n - Generates human-readable name if missing."
},
"run": {
"name": "run",
"kind": "function",
"path": "dagpipe.graph.Node.run",
"signature": "<bound method Alias.signature of Alias('run', 'dagpipe.node.Node.run')>",
"docstring": "Execute this node on a `State`.\n\nArgs:\n state (State):\n Input execution state.\n\nReturns:\n tuple[State, ...]:\n Derived execution states.\n\nRaises:\n TypeError:\n If `resolve()` yields a non-`State` object."
},
"fork": {
"name": "fork",
"kind": "function",
"path": "dagpipe.graph.Node.fork",
"signature": "<bound method Alias.signature of Alias('fork', 'dagpipe.node.Node.fork')>",
"docstring": "Create a child `State` attributed to this node.\n\nArgs:\n state (State):\n Parent execution state.\n\n payload_update (Mapping[str, Any], optional):\n Dot-path payload updates.\n\n confidence_delta (float, optional):\n Confidence adjustment.\n\n metadata_update (Mapping[str, Any], optional):\n Metadata updates.\n\nReturns:\n State:\n New child execution state.\n\nNotes:\n **Responsibilities:**\n\n - Convenience wrapper around `State.fork()` that automatically\n records this node's ID in state history."
},
"resolve": {
"name": "resolve",
"kind": "function",
"path": "dagpipe.graph.Node.resolve",
"signature": "<bound method Alias.signature of Alias('resolve', 'dagpipe.node.Node.resolve')>",
"docstring": "Execute node logic.\n\nArgs:\n state (State):\n Input execution state.\n\nYields:\n State:\n Derived execution state(s).\n\nNotes:\n **Responsibilities:**\n\n - Subclasses implement specific resolution behavior.\n - Must not mutate input state.\n - Should use `fork()` to create child states.\n - May yield zero states to terminate a branch."
},
"is_async": {
"name": "is_async",
"kind": "function",
"path": "dagpipe.graph.Node.is_async",
"signature": "<bound method Alias.signature of Alias('is_async', 'dagpipe.node.Node.is_async')>",
"docstring": "Return whether this node executes asynchronously."
}
}
},
"Graph": {
"name": "Graph",
"kind": "class",
"path": "dagpipe.graph.Graph",
"signature": "<bound method Class.signature of Class('Graph', 23, 212)>",
"docstring": "Directed Acyclic Graph defining execution topology of `Node` objects.\n\nNotes:\n **Responsibilities:**\n\n - Stores node connectivity and validates that the topology remains acyclic.\n - Structure determines how `State` flows between nodes during execution.\n\n **Guarantees:**\n\n - Topology is acyclic. Node relationships remain consistent.\n - Thread-safe for concurrent reads after construction.",
"members": {
"add_edge": {
"name": "add_edge",
"kind": "function",
"path": "dagpipe.graph.Graph.add_edge",
"signature": "<bound method Function.signature of Function('add_edge', 84, 125)>",
"docstring": "Add a directed edge from `src` to `dst`.\n\nArgs:\n src (Node):\n Source node.\n\n dst (Node):\n Destination node.\n\nRaises:\n TypeError:\n If `src` or `dst` is not a `Node`.\n\n ValueError:\n If the edge would create a cycle or if `src` and `dst` are common.\n\nNotes:\n - Validates node types.\n - Prevents cycles.\n - Registers nodes if not present.\n - Updates parent and child mappings."
},
"add_root": {
"name": "add_root",
"kind": "function",
"path": "dagpipe.graph.Graph.add_root",
"signature": "<bound method Function.signature of Function('add_root', 127, 146)>",
"docstring": "Add a root node with no parents.\n\nArgs:\n node (Node):\n Node to add as a root.\n\nRaises:\n TypeError:\n If node is not a Node instance."
},
"children": {
"name": "children",
"kind": "function",
"path": "dagpipe.graph.Graph.children",
"signature": "<bound method Function.signature of Function('children', 148, 161)>",
"docstring": "Return child nodes of a node.\n\nArgs:\n node (Node):\n Node to query.\n\nReturns:\n Tuple[Node, ...]:\n Outgoing neighbors."
},
"parents": {
"name": "parents",
"kind": "function",
"path": "dagpipe.graph.Graph.parents",
"signature": "<bound method Function.signature of Function('parents', 163, 176)>",
"docstring": "Return parent nodes of a node.\n\nArgs:\n node (Node):\n Node to query.\n\nReturns:\n Tuple[Node, ...]:\n Incoming neighbors."
},
"roots": {
"name": "roots",
"kind": "function",
"path": "dagpipe.graph.Graph.roots",
"signature": "<bound method Function.signature of Function('roots', 178, 187)>",
"docstring": "Return root nodes (nodes with no incoming edges).\n\nReturns:\n Tuple[Node, ...]:\n Entry point nodes."
},
"nodes": {
"name": "nodes",
"kind": "function",
"path": "dagpipe.graph.Graph.nodes",
"signature": "<bound method Function.signature of Function('nodes', 189, 198)>",
"docstring": "Return all nodes in the graph.\n\nReturns:\n Tuple[Node, ...]:\n All registered nodes."
}
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,253 @@
{
"module": "dagpipe.node",
"content": {
"path": "dagpipe.node",
"docstring": "# Summary\n\nDefines the `Node` abstraction used by `dagpipe`.\n\nA node represents a single unit of pipeline execution logic. It consumes one\n`State` and produces zero, one, or many new `State` objects.\n\nNodes are connected using a `Graph` and executed by an `Engine`.\n\n---\n\n# Design principles\n\n- **Pure:** Must not mutate input state.\n- **Deterministic:** Same input produces same output.\n- **Stateless:** Recommended to be stateless for reuse.\n- **Composable:** Nodes enable branching execution graphs.",
"objects": {
"inspect": {
"name": "inspect",
"kind": "alias",
"path": "dagpipe.node.inspect",
"signature": "<bound method Alias.signature of Alias('inspect', 'inspect')>",
"docstring": null
},
"re": {
"name": "re",
"kind": "alias",
"path": "dagpipe.node.re",
"signature": "<bound method Alias.signature of Alias('re', 're')>",
"docstring": null
},
"ABC": {
"name": "ABC",
"kind": "alias",
"path": "dagpipe.node.ABC",
"signature": "<bound method Alias.signature of Alias('ABC', 'abc.ABC')>",
"docstring": null
},
"abstractmethod": {
"name": "abstractmethod",
"kind": "alias",
"path": "dagpipe.node.abstractmethod",
"signature": "<bound method Alias.signature of Alias('abstractmethod', 'abc.abstractmethod')>",
"docstring": null
},
"Iterable": {
"name": "Iterable",
"kind": "alias",
"path": "dagpipe.node.Iterable",
"signature": "<bound method Alias.signature of Alias('Iterable', 'collections.abc.Iterable')>",
"docstring": null
},
"Iterator": {
"name": "Iterator",
"kind": "alias",
"path": "dagpipe.node.Iterator",
"signature": "<bound method Alias.signature of Alias('Iterator', 'collections.abc.Iterator')>",
"docstring": null
},
"Any": {
"name": "Any",
"kind": "alias",
"path": "dagpipe.node.Any",
"signature": "<bound method Alias.signature of Alias('Any', 'typing.Any')>",
"docstring": null
},
"cast": {
"name": "cast",
"kind": "alias",
"path": "dagpipe.node.cast",
"signature": "<bound method Alias.signature of Alias('cast', 'typing.cast')>",
"docstring": null
},
"State": {
"name": "State",
"kind": "class",
"path": "dagpipe.node.State",
"signature": "<bound method Alias.signature of Alias('State', 'dagpipe.state.State')>",
"docstring": "Immutable execution state propagated through dagpipe pipeline.\n\nAttributes:\n payload (Payload):\n Execution data container.\n\n schema (ClassVar[Schema]):\n Payload validation schema.\n\n confidence (float):\n Execution confidence score.\n\n parent (Optional[State]):\n Parent state reference.\n\n depth (int):\n Execution depth.\n\n history (Tuple[str, ...]):\n Ordered node execution lineage.\n\n metadata (Dict[str, Any]):\n Execution metadata.\n\nNotes:\n **Responsibilities:**\n\n - Represents a complete execution snapshot at a specific point in\n pipeline traversal.\n - Fundamental unit of execution in `dagpipe`.\n - Fully thread-safe due to immutability.",
"members": {
"payload": {
"name": "payload",
"kind": "attribute",
"path": "dagpipe.node.State.payload",
"signature": "<bound method Alias.signature of Alias('payload', 'dagpipe.state.State.payload')>",
"docstring": null
},
"schema": {
"name": "schema",
"kind": "attribute",
"path": "dagpipe.node.State.schema",
"signature": "<bound method Alias.signature of Alias('schema', 'dagpipe.state.State.schema')>",
"docstring": null
},
"confidence": {
"name": "confidence",
"kind": "attribute",
"path": "dagpipe.node.State.confidence",
"signature": "<bound method Alias.signature of Alias('confidence', 'dagpipe.state.State.confidence')>",
"docstring": null
},
"parent": {
"name": "parent",
"kind": "attribute",
"path": "dagpipe.node.State.parent",
"signature": "<bound method Alias.signature of Alias('parent', 'dagpipe.state.State.parent')>",
"docstring": null
},
"depth": {
"name": "depth",
"kind": "attribute",
"path": "dagpipe.node.State.depth",
"signature": "<bound method Alias.signature of Alias('depth', 'dagpipe.state.State.depth')>",
"docstring": null
},
"history": {
"name": "history",
"kind": "attribute",
"path": "dagpipe.node.State.history",
"signature": "<bound method Alias.signature of Alias('history', 'dagpipe.state.State.history')>",
"docstring": null
},
"metadata": {
"name": "metadata",
"kind": "attribute",
"path": "dagpipe.node.State.metadata",
"signature": "<bound method Alias.signature of Alias('metadata', 'dagpipe.state.State.metadata')>",
"docstring": null
},
"fork": {
"name": "fork",
"kind": "function",
"path": "dagpipe.node.State.fork",
"signature": "<bound method Alias.signature of Alias('fork', 'dagpipe.state.State.fork')>",
"docstring": "Create a new child `State` derived from this state.\n\nArgs:\n payload_update (Mapping[str, Any], optional):\n Dot-path updates applied to the payload.\n\n confidence_delta (float, optional):\n Adjustment applied to current confidence.\n\n node_id (str, optional):\n Identifier of the node creating this state.\n\n metadata_update (Mapping[str, Any], optional):\n Updates merged into state metadata.\n\nReturns:\n State:\n A new immutable `State` instance.\n\nNotes:\n **Guarantees:**\n\n - This is the only supported mechanism for modifying execution data.\n - Validates payload updates, preserves lineage, increments depth,\n and appends to history."
},
"lineage": {
"name": "lineage",
"kind": "function",
"path": "dagpipe.node.State.lineage",
"signature": "<bound method Alias.signature of Alias('lineage', 'dagpipe.state.State.lineage')>",
"docstring": "Return lineage from root to this State.\n\nReturns:\n Tuple[State, ...]:\n Ordered execution lineage (root first)."
},
"get": {
"name": "get",
"kind": "function",
"path": "dagpipe.node.State.get",
"signature": "<bound method Alias.signature of Alias('get', 'dagpipe.state.State.get')>",
"docstring": "Retrieve payload value.\n\nArgs:\n key (str):\n Dot-path key.\n default (Any, optional):\n Fallback value.\n\nReturns:\n Any:\n Stored value or default."
},
"has": {
"name": "has",
"kind": "function",
"path": "dagpipe.node.State.has",
"signature": "<bound method Alias.signature of Alias('has', 'dagpipe.state.State.has')>",
"docstring": "Check whether payload contains key.\n\nArgs:\n key (str):\n Dot-path key.\n\nReturns:\n bool:\n Existence of the key."
}
}
},
"Node": {
"name": "Node",
"kind": "class",
"path": "dagpipe.node.Node",
"signature": "<bound method Class.signature of Class('Node', 32, 276)>",
"docstring": "Base class for all dagpipe execution nodes.\n\nAttributes:\n id (str):\n Unique identifier of the node (snake_case dotted format).\n\n name (str):\n Human-readable display name.\n\nNotes:\n **Responsibilities:**\n\n - Represents a deterministic unit of execution in the pipeline graph.\n - Consumes one `State` and produces zero, one, or many derived states.\n - Defines execution logic and enables branching, filtering, and transformation.\n\n **Guarantees:**\n\n - Nodes must never mutate the input `State`.\n - Instances are singletons per subclass and reused across executions.",
"members": {
"id": {
"name": "id",
"kind": "attribute",
"path": "dagpipe.node.Node.id",
"signature": null,
"docstring": null
},
"name": {
"name": "name",
"kind": "attribute",
"path": "dagpipe.node.Node.name",
"signature": null,
"docstring": null
},
"node_id_to_name": {
"name": "node_id_to_name",
"kind": "function",
"path": "dagpipe.node.Node.node_id_to_name",
"signature": "<bound method Function.signature of Function('node_id_to_name', 60, 80)>",
"docstring": "Convert a dotted snake_case node ID into a human-readable name.\n\nArgs:\n node_id (str):\n Unique node identifier (e.g., 'entity.resolve.numeric_merchant').\n\nReturns:\n str:\n Human-readable display name (e.g., 'Entity Resolve Numeric Merchant')."
},
"clean_id_and_name": {
"name": "clean_id_and_name",
"kind": "function",
"path": "dagpipe.node.Node.clean_id_and_name",
"signature": "<bound method Function.signature of Function('clean_id_and_name', 82, 119)>",
"docstring": "Normalize and validate node ID and display name.\n\nRaises:\n TypeError:\n If ID is not a string.\n ValueError:\n If ID format is invalid.\n\nNotes:\n **Guarantees:**\n\n - Generates ID from module and class name if missing.\n - Validates ID format.\n - Generates human-readable name if missing."
},
"run": {
"name": "run",
"kind": "function",
"path": "dagpipe.node.Node.run",
"signature": "<bound method Function.signature of Function('run', 149, 166)>",
"docstring": "Execute this node on a `State`.\n\nArgs:\n state (State):\n Input execution state.\n\nReturns:\n tuple[State, ...]:\n Derived execution states.\n\nRaises:\n TypeError:\n If `resolve()` yields a non-`State` object."
},
"fork": {
"name": "fork",
"kind": "function",
"path": "dagpipe.node.Node.fork",
"signature": "<bound method Function.signature of Function('fork', 178, 218)>",
"docstring": "Create a child `State` attributed to this node.\n\nArgs:\n state (State):\n Parent execution state.\n\n payload_update (Mapping[str, Any], optional):\n Dot-path payload updates.\n\n confidence_delta (float, optional):\n Confidence adjustment.\n\n metadata_update (Mapping[str, Any], optional):\n Metadata updates.\n\nReturns:\n State:\n New child execution state.\n\nNotes:\n **Responsibilities:**\n\n - Convenience wrapper around `State.fork()` that automatically\n records this node's ID in state history."
},
"resolve": {
"name": "resolve",
"kind": "function",
"path": "dagpipe.node.Node.resolve",
"signature": "<bound method Function.signature of Function('resolve', 250, 272)>",
"docstring": "Execute node logic.\n\nArgs:\n state (State):\n Input execution state.\n\nYields:\n State:\n Derived execution state(s).\n\nNotes:\n **Responsibilities:**\n\n - Subclasses implement specific resolution behavior.\n - Must not mutate input state.\n - Should use `fork()` to create child states.\n - May yield zero states to terminate a branch."
},
"is_async": {
"name": "is_async",
"kind": "function",
"path": "dagpipe.node.Node.is_async",
"signature": "<bound method Function.signature of Function('is_async', 274, 276)>",
"docstring": "Return whether this node executes asynchronously."
}
}
},
"AsyncNode": {
"name": "AsyncNode",
"kind": "class",
"path": "dagpipe.node.AsyncNode",
"signature": "<bound method Class.signature of Class('AsyncNode', 279, 342)>",
"docstring": "Base class for nodes whose execution is asynchronous.\n\nSubclasses implement `resolve_async` (an async generator yielding derived\n`State` objects). The engine dispatches to `resolve_async` when running an\nasync traversal (see `Engine.run_async`).\n\nSync-only engines (and the base `Node.run`) treat an `AsyncNode` as a no-op\nconsumer: calling `run` on an `AsyncNode` returns no states, signalling that\nan async engine is required.",
"members": {
"resolve": {
"name": "resolve",
"kind": "function",
"path": "dagpipe.node.AsyncNode.resolve",
"signature": "<bound method Function.signature of Function('resolve', 308, 309)>",
"docstring": null
},
"resolve_async": {
"name": "resolve_async",
"kind": "function",
"path": "dagpipe.node.AsyncNode.resolve_async",
"signature": "<bound method Function.signature of Function('resolve_async', 311, 327)>",
"docstring": "Execute node logic asynchronously.\n\nArgs:\n state (State):\n Input execution state.\n\nReturns:\n Iterable[State]:\n Derived execution state(s).\n\nNotes:\n Subclasses implement this. Must not mutate the input state.\n Should use `fork()` to create child states."
},
"run_async": {
"name": "run_async",
"kind": "function",
"path": "dagpipe.node.AsyncNode.run_async",
"signature": "<bound method Function.signature of Function('run_async', 329, 342)>",
"docstring": "Execute this node asynchronously on a state, validating outputs."
}
}
},
"abc": {
"name": "abc",
"kind": "alias",
"path": "dagpipe.node.abc",
"signature": "<bound method Alias.signature of Alias('abc', 'abc')>",
"docstring": null
}
}
}
}

View File

@@ -0,0 +1,267 @@
{
"module": "dagpipe.state",
"content": {
"path": "dagpipe.state",
"docstring": "# Summary\n\nDefines the core `State` object used by `dagpipe`.\n\nThe `State` represents a single point in pipeline execution. It contains\narbitrary data and metadata and is designed to be immutable. Instead of\nmodifying an existing state, nodes create new child states via `fork()`.\n\n---\n\n# Design principles\n\n- **Immutability:** States must never be modified after creation.\n All transformations must create a new state via `fork()`.\n- **Cheap cloning:** Forking must be efficient since branching may create many states.\n- **Lineage tracking:** Each state maintains a reference to its parent and\n execution metadata for debugging and observability.\n- **Domain agnostic:** State contains generic key-value data and does not\n assume any schema.\n- **Engine-friendly:** State contains execution metadata such as depth and history.",
"objects": {
"Iterable": {
"name": "Iterable",
"kind": "alias",
"path": "dagpipe.state.Iterable",
"signature": "<bound method Alias.signature of Alias('Iterable', 'collections.abc.Iterable')>",
"docstring": null
},
"Mapping": {
"name": "Mapping",
"kind": "alias",
"path": "dagpipe.state.Mapping",
"signature": "<bound method Alias.signature of Alias('Mapping', 'collections.abc.Mapping')>",
"docstring": null
},
"dataclass": {
"name": "dataclass",
"kind": "alias",
"path": "dagpipe.state.dataclass",
"signature": "<bound method Alias.signature of Alias('dataclass', 'dataclasses.dataclass')>",
"docstring": null
},
"field": {
"name": "field",
"kind": "alias",
"path": "dagpipe.state.field",
"signature": "<bound method Alias.signature of Alias('field', 'dataclasses.field')>",
"docstring": null
},
"UnionType": {
"name": "UnionType",
"kind": "alias",
"path": "dagpipe.state.UnionType",
"signature": "<bound method Alias.signature of Alias('UnionType', 'types.UnionType')>",
"docstring": null
},
"Any": {
"name": "Any",
"kind": "alias",
"path": "dagpipe.state.Any",
"signature": "<bound method Alias.signature of Alias('Any', 'typing.Any')>",
"docstring": null
},
"ClassVar": {
"name": "ClassVar",
"kind": "alias",
"path": "dagpipe.state.ClassVar",
"signature": "<bound method Alias.signature of Alias('ClassVar', 'typing.ClassVar')>",
"docstring": null
},
"Optional": {
"name": "Optional",
"kind": "alias",
"path": "dagpipe.state.Optional",
"signature": "<bound method Alias.signature of Alias('Optional', 'typing.Optional')>",
"docstring": null
},
"Union": {
"name": "Union",
"kind": "alias",
"path": "dagpipe.state.Union",
"signature": "<bound method Alias.signature of Alias('Union', 'typing.Union')>",
"docstring": null
},
"get_args": {
"name": "get_args",
"kind": "alias",
"path": "dagpipe.state.get_args",
"signature": "<bound method Alias.signature of Alias('get_args', 'typing.get_args')>",
"docstring": null
},
"Payload": {
"name": "Payload",
"kind": "class",
"path": "dagpipe.state.Payload",
"signature": "<bound method Class.signature of Class('Payload', 36, 193)>",
"docstring": "Immutable hierarchical container with dot-path access.\n\nAttributes:\n _data (Mapping[str, Any]):\n Immutable hierarchical data structure.\n\nNotes:\n **Responsibilities:**\n\n - Stores execution data used by `State`.\n - Supports efficient atomic updates without modifying existing instances.\n - `Payload` instances are fully thread-safe due to immutability.",
"members": {
"iter_paths": {
"name": "iter_paths",
"kind": "function",
"path": "dagpipe.state.Payload.iter_paths",
"signature": "<bound method Function.signature of Function('iter_paths', 55, 77)>",
"docstring": "Recursively yield dot-paths for all leaf nodes.\n\nArgs:\n data (Mapping[str, Any]):\n The mapping to iterate over.\n prefix (str, optional):\n Current path prefix.\n\nReturns:\n Iterable[str]:\n Generator yielding dot-paths."
},
"get": {
"name": "get",
"kind": "function",
"path": "dagpipe.state.Payload.get",
"signature": "<bound method Function.signature of Function('get', 83, 106)>",
"docstring": "Retrieve value using dot-path.\n\nArgs:\n path (str):\n Dot-separated path to the value.\n default (Any, optional):\n Default value if path doesn't exist.\n\nReturns:\n Any:\n The retrieved value or default."
},
"has": {
"name": "has",
"kind": "function",
"path": "dagpipe.state.Payload.has",
"signature": "<bound method Function.signature of Function('has', 108, 122)>",
"docstring": "Return True if path exists.\n\nArgs:\n path (str):\n Dot-separated path to check.\n\nReturns:\n bool:\n Existence of the path."
},
"update": {
"name": "update",
"kind": "function",
"path": "dagpipe.state.Payload.update",
"signature": "<bound method Function.signature of Function('update', 128, 166)>",
"docstring": "Create a new `Payload` with dot-path updates applied.\n\nArgs:\n updates (Mapping[str, Any]):\n Dot-path to value mapping.\n\nReturns:\n Payload:\n New immutable payload instance with updates.\n\nNotes:\n **Guarantees:**\n\n - Preserves existing data by copying only modified branches.\n - Returns a new immutable `Payload`."
},
"keys": {
"name": "keys",
"kind": "function",
"path": "dagpipe.state.Payload.keys",
"signature": "<bound method Function.signature of Function('keys', 172, 180)>",
"docstring": "Return top-level keys.\n\nReturns:\n Iterable[str]:\n Iterator over top-level keys."
},
"as_dict": {
"name": "as_dict",
"kind": "function",
"path": "dagpipe.state.Payload.as_dict",
"signature": "<bound method Function.signature of Function('as_dict', 182, 190)>",
"docstring": "Return underlying mapping.\n\nReturns:\n Mapping[str, Any]:\n Read-only view of the underlying data."
}
}
},
"SchemaNode": {
"name": "SchemaNode",
"kind": "attribute",
"path": "dagpipe.state.SchemaNode",
"signature": null,
"docstring": null
},
"Schema": {
"name": "Schema",
"kind": "class",
"path": "dagpipe.state.Schema",
"signature": "<bound method Class.signature of Class('Schema', 204, 337)>",
"docstring": "Immutable hierarchical schema defining allowed payload structure.\n\nAttributes:\n tree (Mapping[str, SchemaNode]):\n Hierarchical schema definition.\n\nNotes:\n **Responsibilities:**\n\n - Validates `State` payloads and updates.\n - Reusable across all `State` instances.\n - Fully thread-safe due to immutability.",
"members": {
"tree": {
"name": "tree",
"kind": "attribute",
"path": "dagpipe.state.Schema.tree",
"signature": null,
"docstring": null
},
"validate_payload": {
"name": "validate_payload",
"kind": "function",
"path": "dagpipe.state.Schema.validate_payload",
"signature": "<bound method Function.signature of Function('validate_payload', 227, 239)>",
"docstring": "Validate complete payload structure.\n\nArgs:\n payload (Payload):\n Payload to validate.\n\nRaises:\n SchemaError:\n If payload violates schema."
},
"validate_update": {
"name": "validate_update",
"kind": "function",
"path": "dagpipe.state.Schema.validate_update",
"signature": "<bound method Function.signature of Function('validate_update', 241, 254)>",
"docstring": "Validate payload update paths.\n\nArgs:\n updates (Mapping[str, Any]):\n Dot-path updates to validate.\n\nRaises:\n SchemaError:\n If any path is invalid according to the schema."
}
}
},
"SchemaError": {
"name": "SchemaError",
"kind": "class",
"path": "dagpipe.state.SchemaError",
"signature": "<bound method Class.signature of Class('SchemaError', 340, 348)>",
"docstring": "Raised when payload data violates the declared schema.\n\nIndicates invalid structure, invalid path, or invalid type.\n---"
},
"State": {
"name": "State",
"kind": "class",
"path": "dagpipe.state.State",
"signature": "<bound method Class.signature of Class('State', 351, 531)>",
"docstring": "Immutable execution state propagated through dagpipe pipeline.\n\nAttributes:\n payload (Payload):\n Execution data container.\n\n schema (ClassVar[Schema]):\n Payload validation schema.\n\n confidence (float):\n Execution confidence score.\n\n parent (Optional[State]):\n Parent state reference.\n\n depth (int):\n Execution depth.\n\n history (Tuple[str, ...]):\n Ordered node execution lineage.\n\n metadata (Dict[str, Any]):\n Execution metadata.\n\nNotes:\n **Responsibilities:**\n\n - Represents a complete execution snapshot at a specific point in\n pipeline traversal.\n - Fundamental unit of execution in `dagpipe`.\n - Fully thread-safe due to immutability.",
"members": {
"payload": {
"name": "payload",
"kind": "attribute",
"path": "dagpipe.state.State.payload",
"signature": null,
"docstring": null
},
"schema": {
"name": "schema",
"kind": "attribute",
"path": "dagpipe.state.State.schema",
"signature": null,
"docstring": null
},
"confidence": {
"name": "confidence",
"kind": "attribute",
"path": "dagpipe.state.State.confidence",
"signature": null,
"docstring": null
},
"parent": {
"name": "parent",
"kind": "attribute",
"path": "dagpipe.state.State.parent",
"signature": null,
"docstring": null
},
"depth": {
"name": "depth",
"kind": "attribute",
"path": "dagpipe.state.State.depth",
"signature": null,
"docstring": null
},
"history": {
"name": "history",
"kind": "attribute",
"path": "dagpipe.state.State.history",
"signature": null,
"docstring": null
},
"metadata": {
"name": "metadata",
"kind": "attribute",
"path": "dagpipe.state.State.metadata",
"signature": null,
"docstring": null
},
"fork": {
"name": "fork",
"kind": "function",
"path": "dagpipe.state.State.fork",
"signature": "<bound method Function.signature of Function('fork', 404, 467)>",
"docstring": "Create a new child `State` derived from this state.\n\nArgs:\n payload_update (Mapping[str, Any], optional):\n Dot-path updates applied to the payload.\n\n confidence_delta (float, optional):\n Adjustment applied to current confidence.\n\n node_id (str, optional):\n Identifier of the node creating this state.\n\n metadata_update (Mapping[str, Any], optional):\n Updates merged into state metadata.\n\nReturns:\n State:\n A new immutable `State` instance.\n\nNotes:\n **Guarantees:**\n\n - This is the only supported mechanism for modifying execution data.\n - Validates payload updates, preserves lineage, increments depth,\n and appends to history."
},
"lineage": {
"name": "lineage",
"kind": "function",
"path": "dagpipe.state.State.lineage",
"signature": "<bound method Function.signature of Function('lineage', 469, 486)>",
"docstring": "Return lineage from root to this State.\n\nReturns:\n Tuple[State, ...]:\n Ordered execution lineage (root first)."
},
"get": {
"name": "get",
"kind": "function",
"path": "dagpipe.state.State.get",
"signature": "<bound method Function.signature of Function('get', 488, 503)>",
"docstring": "Retrieve payload value.\n\nArgs:\n key (str):\n Dot-path key.\n default (Any, optional):\n Fallback value.\n\nReturns:\n Any:\n Stored value or default."
},
"has": {
"name": "has",
"kind": "function",
"path": "dagpipe.state.State.has",
"signature": "<bound method Function.signature of Function('has', 505, 518)>",
"docstring": "Check whether payload contains key.\n\nArgs:\n key (str):\n Dot-path key.\n\nReturns:\n bool:\n Existence of the key."
}
}
},
"Incomplete": {
"name": "Incomplete",
"kind": "alias",
"path": "dagpipe.state.Incomplete",
"signature": "<bound method Alias.signature of Alias('Incomplete', '_typeshed.Incomplete')>",
"docstring": null
}
}
}
}

View File

@@ -0,0 +1,443 @@
{
"module": "dagpipe.yaml_loader",
"content": {
"path": "dagpipe.yaml_loader",
"docstring": "# Summary\n\nLoads dagpipe pipelines from YAML configuration.\n\nCreates fully configured pipeline objects from declarative YAML definitions,\nincluding `Schema`, `State` subclasses, `Node` instances, `Graph` topology,\nand initial payloads.",
"objects": {
"importlib": {
"name": "importlib",
"kind": "alias",
"path": "dagpipe.yaml_loader.importlib",
"signature": "<bound method Alias.signature of Alias('importlib', 'importlib')>",
"docstring": null
},
"types": {
"name": "types",
"kind": "alias",
"path": "dagpipe.yaml_loader.types",
"signature": "<bound method Alias.signature of Alias('types', 'types')>",
"docstring": null
},
"Mapping": {
"name": "Mapping",
"kind": "alias",
"path": "dagpipe.yaml_loader.Mapping",
"signature": "<bound method Alias.signature of Alias('Mapping', 'collections.abc.Mapping')>",
"docstring": null
},
"dataclass": {
"name": "dataclass",
"kind": "alias",
"path": "dagpipe.yaml_loader.dataclass",
"signature": "<bound method Alias.signature of Alias('dataclass', 'dataclasses.dataclass')>",
"docstring": null
},
"Any": {
"name": "Any",
"kind": "alias",
"path": "dagpipe.yaml_loader.Any",
"signature": "<bound method Alias.signature of Alias('Any', 'typing.Any')>",
"docstring": null
},
"cast": {
"name": "cast",
"kind": "alias",
"path": "dagpipe.yaml_loader.cast",
"signature": "<bound method Alias.signature of Alias('cast', 'typing.cast')>",
"docstring": null
},
"yaml": {
"name": "yaml",
"kind": "alias",
"path": "dagpipe.yaml_loader.yaml",
"signature": "<bound method Alias.signature of Alias('yaml', 'yaml')>",
"docstring": null
},
"Engine": {
"name": "Engine",
"kind": "class",
"path": "dagpipe.yaml_loader.Engine",
"signature": "<bound method Alias.signature of Alias('Engine', 'dagpipe.engine.Engine')>",
"docstring": "Execution engine responsible for running pipeline logic.\n\nNotes:\n **Responsibilities:**\n\n - Accepts either a linear sequence of `Node` objects or a `Graph`\n defining execution topology.\n - Propagates immutable `State` objects through `Node` objects and\n collects terminal states.\n - Supports synchronous (`run`) and asynchronous (`run_async`)\n execution, dispatching per-node.\n - Supports step-wise / resumable execution and progress hooks.\n\n **Guarantees:**\n\n - Never mutates `State`, `Node`, or `Graph` instances.\n - `State` objects are never modified in place; each branch produces\n independent instances.\n - Execution order is deterministic and follows graph or pipeline topology.\n - Thread-safe for concurrent execution.",
"members": {
"MODE_LINEAR": {
"name": "MODE_LINEAR",
"kind": "attribute",
"path": "dagpipe.yaml_loader.Engine.MODE_LINEAR",
"signature": "<bound method Alias.signature of Alias('MODE_LINEAR', 'dagpipe.engine.Engine.MODE_LINEAR')>",
"docstring": null
},
"MODE_GRAPH": {
"name": "MODE_GRAPH",
"kind": "attribute",
"path": "dagpipe.yaml_loader.Engine.MODE_GRAPH",
"signature": "<bound method Alias.signature of Alias('MODE_GRAPH', 'dagpipe.engine.Engine.MODE_GRAPH')>",
"docstring": null
},
"run": {
"name": "run",
"kind": "function",
"path": "dagpipe.yaml_loader.Engine.run",
"signature": "<bound method Alias.signature of Alias('run', 'dagpipe.engine.Engine.run')>",
"docstring": "Execute the pipeline starting from a root `State`.\n\nArgs:\n root (State):\n Initial execution state.\n\nReturns:\n list[State]:\n Terminal execution states produced by the pipeline.\n\nRaises:\n TypeError:\n If `root` is not a `State` instance.\n\n RuntimeError:\n If the engine execution mode is invalid.\n\nNotes:\n **Responsibilities:**\n\n - Selects execution mode, propagates state through nodes, creates\n new instances for branches, and collects terminal states."
},
"run_async": {
"name": "run_async",
"kind": "function",
"path": "dagpipe.yaml_loader.Engine.run_async",
"signature": "<bound method Alias.signature of Alias('run_async', 'dagpipe.engine.Engine.run_async')>",
"docstring": "Execute the pipeline starting from `root`, dispatching sync vs async nodes.\n\nArgs:\n root (State):\n Initial execution state.\n\nReturns:\n list[State]:\n Terminal execution states produced by the pipeline.\n\nNotes:\n Each node is executed with `Node.run` when synchronous and\n `AsyncNode.run_async` when asynchronous. Linear and graph topologies\n are both supported."
},
"run_steps": {
"name": "run_steps",
"kind": "function",
"path": "dagpipe.yaml_loader.Engine.run_steps",
"signature": "<bound method Alias.signature of Alias('run_steps', 'dagpipe.engine.Engine.run_steps')>",
"docstring": "Execute the pipeline step-by-step, yielding one `StepResult` per step.\n\nArgs:\n root (State):\n Initial execution state.\n\n resume_from (int, optional):\n Skip steps at index < `resume_from` (for resume-after-partial).\n Steps are 0-indexed.\n\n on_step (StepHook, optional):\n Callback `(step, status, message)` invoked per step; falls back\n to the engine-level hook when unset.\n\nYields:\n StepResult:\n One per executed node/step, carrying the produced states.\n\nNotes:\n This is a synchronous, generator-based checkpoint interface compatible\n with the imperative resume-by-step behaviour of the legacy\n orchestrator. Use `run_steps_async` for async nodes."
},
"run_steps_async": {
"name": "run_steps_async",
"kind": "function",
"path": "dagpipe.yaml_loader.Engine.run_steps_async",
"signature": "<bound method Alias.signature of Alias('run_steps_async', 'dagpipe.engine.Engine.run_steps_async')>",
"docstring": "Async variant of `run_steps` supporting `AsyncNode` execution.\n\nArgs:\n root (State):\n Initial execution state.\n\n resume_from (int, optional):\n Skip steps at index < `resume_from`.\n\n on_step (AsyncStepHook, optional):\n Async callback `(step, status, message)` invoked per step.\n\nYields:\n StepResult:\n One per executed node/step."
},
"nodes": {
"name": "nodes",
"kind": "attribute",
"path": "dagpipe.yaml_loader.Engine.nodes",
"signature": "<bound method Alias.signature of Alias('nodes', 'dagpipe.engine.Engine.nodes')>",
"docstring": "Return nodes managed by this engine.\n\nReturns:\n tuple[Node, ...]:\n Ordered sequence in linear mode or all nodes in graph mode."
}
}
},
"Graph": {
"name": "Graph",
"kind": "class",
"path": "dagpipe.yaml_loader.Graph",
"signature": "<bound method Alias.signature of Alias('Graph', 'dagpipe.graph.Graph')>",
"docstring": "Directed Acyclic Graph defining execution topology of `Node` objects.\n\nNotes:\n **Responsibilities:**\n\n - Stores node connectivity and validates that the topology remains acyclic.\n - Structure determines how `State` flows between nodes during execution.\n\n **Guarantees:**\n\n - Topology is acyclic. Node relationships remain consistent.\n - Thread-safe for concurrent reads after construction.",
"members": {
"add_edge": {
"name": "add_edge",
"kind": "function",
"path": "dagpipe.yaml_loader.Graph.add_edge",
"signature": "<bound method Alias.signature of Alias('add_edge', 'dagpipe.graph.Graph.add_edge')>",
"docstring": "Add a directed edge from `src` to `dst`.\n\nArgs:\n src (Node):\n Source node.\n\n dst (Node):\n Destination node.\n\nRaises:\n TypeError:\n If `src` or `dst` is not a `Node`.\n\n ValueError:\n If the edge would create a cycle or if `src` and `dst` are common.\n\nNotes:\n - Validates node types.\n - Prevents cycles.\n - Registers nodes if not present.\n - Updates parent and child mappings."
},
"add_root": {
"name": "add_root",
"kind": "function",
"path": "dagpipe.yaml_loader.Graph.add_root",
"signature": "<bound method Alias.signature of Alias('add_root', 'dagpipe.graph.Graph.add_root')>",
"docstring": "Add a root node with no parents.\n\nArgs:\n node (Node):\n Node to add as a root.\n\nRaises:\n TypeError:\n If node is not a Node instance."
},
"children": {
"name": "children",
"kind": "function",
"path": "dagpipe.yaml_loader.Graph.children",
"signature": "<bound method Alias.signature of Alias('children', 'dagpipe.graph.Graph.children')>",
"docstring": "Return child nodes of a node.\n\nArgs:\n node (Node):\n Node to query.\n\nReturns:\n Tuple[Node, ...]:\n Outgoing neighbors."
},
"parents": {
"name": "parents",
"kind": "function",
"path": "dagpipe.yaml_loader.Graph.parents",
"signature": "<bound method Alias.signature of Alias('parents', 'dagpipe.graph.Graph.parents')>",
"docstring": "Return parent nodes of a node.\n\nArgs:\n node (Node):\n Node to query.\n\nReturns:\n Tuple[Node, ...]:\n Incoming neighbors."
},
"roots": {
"name": "roots",
"kind": "function",
"path": "dagpipe.yaml_loader.Graph.roots",
"signature": "<bound method Alias.signature of Alias('roots', 'dagpipe.graph.Graph.roots')>",
"docstring": "Return root nodes (nodes with no incoming edges).\n\nReturns:\n Tuple[Node, ...]:\n Entry point nodes."
},
"nodes": {
"name": "nodes",
"kind": "function",
"path": "dagpipe.yaml_loader.Graph.nodes",
"signature": "<bound method Alias.signature of Alias('nodes', 'dagpipe.graph.Graph.nodes')>",
"docstring": "Return all nodes in the graph.\n\nReturns:\n Tuple[Node, ...]:\n All registered nodes."
}
}
},
"Node": {
"name": "Node",
"kind": "class",
"path": "dagpipe.yaml_loader.Node",
"signature": "<bound method Alias.signature of Alias('Node', 'dagpipe.node.Node')>",
"docstring": "Base class for all dagpipe execution nodes.\n\nAttributes:\n id (str):\n Unique identifier of the node (snake_case dotted format).\n\n name (str):\n Human-readable display name.\n\nNotes:\n **Responsibilities:**\n\n - Represents a deterministic unit of execution in the pipeline graph.\n - Consumes one `State` and produces zero, one, or many derived states.\n - Defines execution logic and enables branching, filtering, and transformation.\n\n **Guarantees:**\n\n - Nodes must never mutate the input `State`.\n - Instances are singletons per subclass and reused across executions.",
"members": {
"id": {
"name": "id",
"kind": "attribute",
"path": "dagpipe.yaml_loader.Node.id",
"signature": "<bound method Alias.signature of Alias('id', 'dagpipe.node.Node.id')>",
"docstring": null
},
"name": {
"name": "name",
"kind": "attribute",
"path": "dagpipe.yaml_loader.Node.name",
"signature": "<bound method Alias.signature of Alias('name', 'dagpipe.node.Node.name')>",
"docstring": null
},
"node_id_to_name": {
"name": "node_id_to_name",
"kind": "function",
"path": "dagpipe.yaml_loader.Node.node_id_to_name",
"signature": "<bound method Alias.signature of Alias('node_id_to_name', 'dagpipe.node.Node.node_id_to_name')>",
"docstring": "Convert a dotted snake_case node ID into a human-readable name.\n\nArgs:\n node_id (str):\n Unique node identifier (e.g., 'entity.resolve.numeric_merchant').\n\nReturns:\n str:\n Human-readable display name (e.g., 'Entity Resolve Numeric Merchant')."
},
"clean_id_and_name": {
"name": "clean_id_and_name",
"kind": "function",
"path": "dagpipe.yaml_loader.Node.clean_id_and_name",
"signature": "<bound method Alias.signature of Alias('clean_id_and_name', 'dagpipe.node.Node.clean_id_and_name')>",
"docstring": "Normalize and validate node ID and display name.\n\nRaises:\n TypeError:\n If ID is not a string.\n ValueError:\n If ID format is invalid.\n\nNotes:\n **Guarantees:**\n\n - Generates ID from module and class name if missing.\n - Validates ID format.\n - Generates human-readable name if missing."
},
"run": {
"name": "run",
"kind": "function",
"path": "dagpipe.yaml_loader.Node.run",
"signature": "<bound method Alias.signature of Alias('run', 'dagpipe.node.Node.run')>",
"docstring": "Execute this node on a `State`.\n\nArgs:\n state (State):\n Input execution state.\n\nReturns:\n tuple[State, ...]:\n Derived execution states.\n\nRaises:\n TypeError:\n If `resolve()` yields a non-`State` object."
},
"fork": {
"name": "fork",
"kind": "function",
"path": "dagpipe.yaml_loader.Node.fork",
"signature": "<bound method Alias.signature of Alias('fork', 'dagpipe.node.Node.fork')>",
"docstring": "Create a child `State` attributed to this node.\n\nArgs:\n state (State):\n Parent execution state.\n\n payload_update (Mapping[str, Any], optional):\n Dot-path payload updates.\n\n confidence_delta (float, optional):\n Confidence adjustment.\n\n metadata_update (Mapping[str, Any], optional):\n Metadata updates.\n\nReturns:\n State:\n New child execution state.\n\nNotes:\n **Responsibilities:**\n\n - Convenience wrapper around `State.fork()` that automatically\n records this node's ID in state history."
},
"resolve": {
"name": "resolve",
"kind": "function",
"path": "dagpipe.yaml_loader.Node.resolve",
"signature": "<bound method Alias.signature of Alias('resolve', 'dagpipe.node.Node.resolve')>",
"docstring": "Execute node logic.\n\nArgs:\n state (State):\n Input execution state.\n\nYields:\n State:\n Derived execution state(s).\n\nNotes:\n **Responsibilities:**\n\n - Subclasses implement specific resolution behavior.\n - Must not mutate input state.\n - Should use `fork()` to create child states.\n - May yield zero states to terminate a branch."
},
"is_async": {
"name": "is_async",
"kind": "function",
"path": "dagpipe.yaml_loader.Node.is_async",
"signature": "<bound method Alias.signature of Alias('is_async', 'dagpipe.node.Node.is_async')>",
"docstring": "Return whether this node executes asynchronously."
}
}
},
"Payload": {
"name": "Payload",
"kind": "class",
"path": "dagpipe.yaml_loader.Payload",
"signature": "<bound method Alias.signature of Alias('Payload', 'dagpipe.state.Payload')>",
"docstring": "Immutable hierarchical container with dot-path access.\n\nAttributes:\n _data (Mapping[str, Any]):\n Immutable hierarchical data structure.\n\nNotes:\n **Responsibilities:**\n\n - Stores execution data used by `State`.\n - Supports efficient atomic updates without modifying existing instances.\n - `Payload` instances are fully thread-safe due to immutability.",
"members": {
"iter_paths": {
"name": "iter_paths",
"kind": "function",
"path": "dagpipe.yaml_loader.Payload.iter_paths",
"signature": "<bound method Alias.signature of Alias('iter_paths', 'dagpipe.state.Payload.iter_paths')>",
"docstring": "Recursively yield dot-paths for all leaf nodes.\n\nArgs:\n data (Mapping[str, Any]):\n The mapping to iterate over.\n prefix (str, optional):\n Current path prefix.\n\nReturns:\n Iterable[str]:\n Generator yielding dot-paths."
},
"get": {
"name": "get",
"kind": "function",
"path": "dagpipe.yaml_loader.Payload.get",
"signature": "<bound method Alias.signature of Alias('get', 'dagpipe.state.Payload.get')>",
"docstring": "Retrieve value using dot-path.\n\nArgs:\n path (str):\n Dot-separated path to the value.\n default (Any, optional):\n Default value if path doesn't exist.\n\nReturns:\n Any:\n The retrieved value or default."
},
"has": {
"name": "has",
"kind": "function",
"path": "dagpipe.yaml_loader.Payload.has",
"signature": "<bound method Alias.signature of Alias('has', 'dagpipe.state.Payload.has')>",
"docstring": "Return True if path exists.\n\nArgs:\n path (str):\n Dot-separated path to check.\n\nReturns:\n bool:\n Existence of the path."
},
"update": {
"name": "update",
"kind": "function",
"path": "dagpipe.yaml_loader.Payload.update",
"signature": "<bound method Alias.signature of Alias('update', 'dagpipe.state.Payload.update')>",
"docstring": "Create a new `Payload` with dot-path updates applied.\n\nArgs:\n updates (Mapping[str, Any]):\n Dot-path to value mapping.\n\nReturns:\n Payload:\n New immutable payload instance with updates.\n\nNotes:\n **Guarantees:**\n\n - Preserves existing data by copying only modified branches.\n - Returns a new immutable `Payload`."
},
"keys": {
"name": "keys",
"kind": "function",
"path": "dagpipe.yaml_loader.Payload.keys",
"signature": "<bound method Alias.signature of Alias('keys', 'dagpipe.state.Payload.keys')>",
"docstring": "Return top-level keys.\n\nReturns:\n Iterable[str]:\n Iterator over top-level keys."
},
"as_dict": {
"name": "as_dict",
"kind": "function",
"path": "dagpipe.yaml_loader.Payload.as_dict",
"signature": "<bound method Alias.signature of Alias('as_dict', 'dagpipe.state.Payload.as_dict')>",
"docstring": "Return underlying mapping.\n\nReturns:\n Mapping[str, Any]:\n Read-only view of the underlying data."
}
}
},
"Schema": {
"name": "Schema",
"kind": "class",
"path": "dagpipe.yaml_loader.Schema",
"signature": "<bound method Alias.signature of Alias('Schema', 'dagpipe.state.Schema')>",
"docstring": "Immutable hierarchical schema defining allowed payload structure.\n\nAttributes:\n tree (Mapping[str, SchemaNode]):\n Hierarchical schema definition.\n\nNotes:\n **Responsibilities:**\n\n - Validates `State` payloads and updates.\n - Reusable across all `State` instances.\n - Fully thread-safe due to immutability.",
"members": {
"tree": {
"name": "tree",
"kind": "attribute",
"path": "dagpipe.yaml_loader.Schema.tree",
"signature": "<bound method Alias.signature of Alias('tree', 'dagpipe.state.Schema.tree')>",
"docstring": null
},
"validate_payload": {
"name": "validate_payload",
"kind": "function",
"path": "dagpipe.yaml_loader.Schema.validate_payload",
"signature": "<bound method Alias.signature of Alias('validate_payload', 'dagpipe.state.Schema.validate_payload')>",
"docstring": "Validate complete payload structure.\n\nArgs:\n payload (Payload):\n Payload to validate.\n\nRaises:\n SchemaError:\n If payload violates schema."
},
"validate_update": {
"name": "validate_update",
"kind": "function",
"path": "dagpipe.yaml_loader.Schema.validate_update",
"signature": "<bound method Alias.signature of Alias('validate_update', 'dagpipe.state.Schema.validate_update')>",
"docstring": "Validate payload update paths.\n\nArgs:\n updates (Mapping[str, Any]):\n Dot-path updates to validate.\n\nRaises:\n SchemaError:\n If any path is invalid according to the schema."
}
}
},
"State": {
"name": "State",
"kind": "class",
"path": "dagpipe.yaml_loader.State",
"signature": "<bound method Alias.signature of Alias('State', 'dagpipe.state.State')>",
"docstring": "Immutable execution state propagated through dagpipe pipeline.\n\nAttributes:\n payload (Payload):\n Execution data container.\n\n schema (ClassVar[Schema]):\n Payload validation schema.\n\n confidence (float):\n Execution confidence score.\n\n parent (Optional[State]):\n Parent state reference.\n\n depth (int):\n Execution depth.\n\n history (Tuple[str, ...]):\n Ordered node execution lineage.\n\n metadata (Dict[str, Any]):\n Execution metadata.\n\nNotes:\n **Responsibilities:**\n\n - Represents a complete execution snapshot at a specific point in\n pipeline traversal.\n - Fundamental unit of execution in `dagpipe`.\n - Fully thread-safe due to immutability.",
"members": {
"payload": {
"name": "payload",
"kind": "attribute",
"path": "dagpipe.yaml_loader.State.payload",
"signature": "<bound method Alias.signature of Alias('payload', 'dagpipe.state.State.payload')>",
"docstring": null
},
"schema": {
"name": "schema",
"kind": "attribute",
"path": "dagpipe.yaml_loader.State.schema",
"signature": "<bound method Alias.signature of Alias('schema', 'dagpipe.state.State.schema')>",
"docstring": null
},
"confidence": {
"name": "confidence",
"kind": "attribute",
"path": "dagpipe.yaml_loader.State.confidence",
"signature": "<bound method Alias.signature of Alias('confidence', 'dagpipe.state.State.confidence')>",
"docstring": null
},
"parent": {
"name": "parent",
"kind": "attribute",
"path": "dagpipe.yaml_loader.State.parent",
"signature": "<bound method Alias.signature of Alias('parent', 'dagpipe.state.State.parent')>",
"docstring": null
},
"depth": {
"name": "depth",
"kind": "attribute",
"path": "dagpipe.yaml_loader.State.depth",
"signature": "<bound method Alias.signature of Alias('depth', 'dagpipe.state.State.depth')>",
"docstring": null
},
"history": {
"name": "history",
"kind": "attribute",
"path": "dagpipe.yaml_loader.State.history",
"signature": "<bound method Alias.signature of Alias('history', 'dagpipe.state.State.history')>",
"docstring": null
},
"metadata": {
"name": "metadata",
"kind": "attribute",
"path": "dagpipe.yaml_loader.State.metadata",
"signature": "<bound method Alias.signature of Alias('metadata', 'dagpipe.state.State.metadata')>",
"docstring": null
},
"fork": {
"name": "fork",
"kind": "function",
"path": "dagpipe.yaml_loader.State.fork",
"signature": "<bound method Alias.signature of Alias('fork', 'dagpipe.state.State.fork')>",
"docstring": "Create a new child `State` derived from this state.\n\nArgs:\n payload_update (Mapping[str, Any], optional):\n Dot-path updates applied to the payload.\n\n confidence_delta (float, optional):\n Adjustment applied to current confidence.\n\n node_id (str, optional):\n Identifier of the node creating this state.\n\n metadata_update (Mapping[str, Any], optional):\n Updates merged into state metadata.\n\nReturns:\n State:\n A new immutable `State` instance.\n\nNotes:\n **Guarantees:**\n\n - This is the only supported mechanism for modifying execution data.\n - Validates payload updates, preserves lineage, increments depth,\n and appends to history."
},
"lineage": {
"name": "lineage",
"kind": "function",
"path": "dagpipe.yaml_loader.State.lineage",
"signature": "<bound method Alias.signature of Alias('lineage', 'dagpipe.state.State.lineage')>",
"docstring": "Return lineage from root to this State.\n\nReturns:\n Tuple[State, ...]:\n Ordered execution lineage (root first)."
},
"get": {
"name": "get",
"kind": "function",
"path": "dagpipe.yaml_loader.State.get",
"signature": "<bound method Alias.signature of Alias('get', 'dagpipe.state.State.get')>",
"docstring": "Retrieve payload value.\n\nArgs:\n key (str):\n Dot-path key.\n default (Any, optional):\n Fallback value.\n\nReturns:\n Any:\n Stored value or default."
},
"has": {
"name": "has",
"kind": "function",
"path": "dagpipe.yaml_loader.State.has",
"signature": "<bound method Alias.signature of Alias('has', 'dagpipe.state.State.has')>",
"docstring": "Check whether payload contains key.\n\nArgs:\n key (str):\n Dot-path key.\n\nReturns:\n bool:\n Existence of the key."
}
}
},
"Pipeline": {
"name": "Pipeline",
"kind": "class",
"path": "dagpipe.yaml_loader.Pipeline",
"signature": "<bound method Class.signature of Class('Pipeline', 29, 83)>",
"docstring": "Executable pipeline created from YAML configuration.\n\nAttributes:\n engine (Engine):\n Execution engine responsible for running the pipeline.\n\n state_cls (Type[State]):\n Dynamically created `State` subclass with configured schema.\n\n initial_payload (Payload):\n Default payload used when execution begins.\n\nNotes:\n **Responsibilities:**\n\n - Encapsulates engine, state type, and initial payload.\n - Provides a simplified interface for executing configured pipelines.\n - Safe for concurrent execution if underlying nodes are thread-safe.",
"members": {
"engine": {
"name": "engine",
"kind": "attribute",
"path": "dagpipe.yaml_loader.Pipeline.engine",
"signature": null,
"docstring": null
},
"state_cls": {
"name": "state_cls",
"kind": "attribute",
"path": "dagpipe.yaml_loader.Pipeline.state_cls",
"signature": null,
"docstring": null
},
"initial_payload": {
"name": "initial_payload",
"kind": "attribute",
"path": "dagpipe.yaml_loader.Pipeline.initial_payload",
"signature": null,
"docstring": null
},
"run": {
"name": "run",
"kind": "function",
"path": "dagpipe.yaml_loader.Pipeline.run",
"signature": "<bound method Function.signature of Function('run', 56, 83)>",
"docstring": "Execute the pipeline.\n\nArgs:\n payload_override (Mapping[str, Any], optional):\n Payload values overriding initial payload.\n\nReturns:\n list[State]:\n Terminal execution states.\n\nNotes:\n **Responsibilities:**\n\n - Merges override payload with initial payload.\n - Creates root `State` and executes engine."
}
}
},
"load_pipeline": {
"name": "load_pipeline",
"kind": "function",
"path": "dagpipe.yaml_loader.load_pipeline",
"signature": "<bound method Function.signature of Function('load_pipeline', 91, 125)>",
"docstring": "Load pipeline from YAML file.\n\nArgs:\n path (str):\n Path to YAML configuration file.\n\nReturns:\n Pipeline:\n Executable pipeline instance.\n\nNotes:\n **Responsibilities:**\n\n - Loads YAML configuration and builds schema.\n - Creates `State` subclass and loads `Node` instances.\n - Builds `Graph` topology and initializes `Engine`."
}
}
}
}

26
dagpipe/mcp/nav.json Normal file
View File

@@ -0,0 +1,26 @@
[
{
"module": "dagpipe",
"resource": "doc://modules/dagpipe"
},
{
"module": "dagpipe.engine",
"resource": "doc://modules/dagpipe.engine"
},
{
"module": "dagpipe.graph",
"resource": "doc://modules/dagpipe.graph"
},
{
"module": "dagpipe.node",
"resource": "doc://modules/dagpipe.node"
},
{
"module": "dagpipe.state",
"resource": "doc://modules/dagpipe.state"
},
{
"module": "dagpipe.yaml_loader",
"resource": "doc://modules/dagpipe.yaml_loader"
}
]