Skip to content

Commit 1944bce

Browse files
Build fan-out test graphs step-by-step
From CoPilot review of #189: expand the two new instance-middleware tests' inner and parent graph construction from inline method chains to the step-by-step named-builder pattern used throughout the module.
1 parent f098761 commit 1944bce

1 file changed

Lines changed: 39 additions & 35 deletions

File tree

tests/unit/test_fan_out.py

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -679,23 +679,25 @@ async def __call__(self, state: WorkerState, next_: Any, /) -> Any:
679679
async def compute(state: WorkerState) -> Mapping[str, Any]:
680680
return {"result": state.item}
681681

682-
inner = (
683-
GraphBuilder(WorkerState).add_node("compute", compute).add_edge("compute", END).set_entry("compute")
684-
).compile()
685-
parent = (
686-
GraphBuilder(InstanceMwParentState)
687-
.add_fan_out_node(
688-
"process",
689-
subgraph=inner,
690-
items_field="items",
691-
item_field="item",
692-
collect_field="result",
693-
target_field="results",
694-
instance_middleware=[_RecordIndexMW()],
695-
)
696-
.add_edge("process", END)
697-
.set_entry("process")
698-
).compile()
682+
inner_builder: GraphBuilder[WorkerState] = GraphBuilder(WorkerState)
683+
inner_builder.set_entry("compute")
684+
inner_builder.add_node("compute", compute)
685+
inner_builder.add_edge("compute", END)
686+
inner = inner_builder.compile()
687+
688+
parent_builder: GraphBuilder[InstanceMwParentState] = GraphBuilder(InstanceMwParentState)
689+
parent_builder.set_entry("process")
690+
parent_builder.add_fan_out_node(
691+
"process",
692+
subgraph=inner,
693+
items_field="items",
694+
item_field="item",
695+
collect_field="result",
696+
target_field="results",
697+
instance_middleware=[_RecordIndexMW()],
698+
)
699+
parent_builder.add_edge("process", END)
700+
parent = parent_builder.compile()
699701

700702
await parent.invoke(InstanceMwParentState(items=[10, 20, 30]))
701703
await parent.drain()
@@ -722,24 +724,26 @@ async def __call__(self, state: WorkerState, next_: Any, /) -> Any:
722724
async def boom(_state: WorkerState) -> Mapping[str, Any]:
723725
raise RuntimeError("boom")
724726

725-
inner = (
726-
GraphBuilder(WorkerState).add_node("boom", boom).add_edge("boom", END).set_entry("boom")
727-
).compile()
728-
parent = (
729-
GraphBuilder(InstanceMwParentState)
730-
.add_fan_out_node(
731-
"process",
732-
subgraph=inner,
733-
items_field="items",
734-
item_field="item",
735-
collect_field="result",
736-
target_field="results",
737-
instance_middleware=[_RecordMW()],
738-
concurrency=1,
739-
)
740-
.add_edge("process", END)
741-
.set_entry("process")
742-
).compile()
727+
inner_builder: GraphBuilder[WorkerState] = GraphBuilder(WorkerState)
728+
inner_builder.set_entry("boom")
729+
inner_builder.add_node("boom", boom)
730+
inner_builder.add_edge("boom", END)
731+
inner = inner_builder.compile()
732+
733+
parent_builder: GraphBuilder[InstanceMwParentState] = GraphBuilder(InstanceMwParentState)
734+
parent_builder.set_entry("process")
735+
parent_builder.add_fan_out_node(
736+
"process",
737+
subgraph=inner,
738+
items_field="items",
739+
item_field="item",
740+
collect_field="result",
741+
target_field="results",
742+
instance_middleware=[_RecordMW()],
743+
concurrency=1,
744+
)
745+
parent_builder.add_edge("process", END)
746+
parent = parent_builder.compile()
743747

744748
with pytest.raises(NodeException):
745749
await parent.invoke(InstanceMwParentState(items=[1, 2]))

0 commit comments

Comments
 (0)