def create_transition_graph(d, role, format_):
graph = gv.Digraph(format=format_)
for node in d:
node_name = to_node_name(node)
graph.node(node_name, label=node_name)
self_transitions = defaultdict(lambda: [])
for source, transitions in d.items():
source_name = to_node_name(source)
for received, dest in transitions.items():
dest_name = to_node_name(dest)
received_name = to_node_name(received)
if source_name == dest_name:
self_transitions[source_name].append(received_name)
continue
graph.edge(source_name, dest_name,
label=received_name)
for node_name, received_list in self_transitions.items():
graph.edge(node_name, node_name, label=' / '.join(received_list))
return graph
评论列表
文章目录