Coverage for archdocs/features/messaging_queue/renderer.py: 100%
13 statements
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
1import typing
3from archdocs import diagram_model
4from archdocs.features.messaging_queue.const import BrokerFlow, MQFeatures
7def _render_flow_edges(
8 service_node: diagram_model.DiagramNode,
9 one_flow: BrokerFlow,
10 /,
11) -> tuple[diagram_model.DiagramEdge, ...]:
12 broker_node: typing.Final = diagram_model.build_diagram_node(
13 one_flow.broker_name,
14 one_flow.broker_name,
15 diagram_model.NodeGroup.messaging_and_tasks,
16 )
17 all_edges: typing.Final[list[diagram_model.DiagramEdge]] = []
18 if one_flow.consumes:
19 all_edges.append(
20 diagram_model.DiagramEdge(
21 source_node=broker_node,
22 target_node=service_node,
23 edge_label=", ".join(one_flow.consumed_topics),
24 ),
25 )
26 if one_flow.produces:
27 all_edges.append(
28 diagram_model.DiagramEdge(
29 source_node=service_node,
30 target_node=broker_node,
31 edge_label=", ".join(one_flow.produced_topics),
32 ),
33 )
34 return tuple(all_edges)
37def render_mq_features(
38 service_node: diagram_model.DiagramNode,
39 features_to_draw: MQFeatures,
40 /,
41) -> tuple[diagram_model.DiagramEdge, ...]:
42 return tuple(
43 one_edge
44 for one_flow in features_to_draw.broker_flows
45 for one_edge in _render_flow_edges(service_node, one_flow)
46 )