diff --git a/autodoc/doc_state.py b/autodoc/doc_state.py index 66463ac..13609ca 100644 --- a/autodoc/doc_state.py +++ b/autodoc/doc_state.py @@ -197,6 +197,11 @@ def __doc_iogam__(id, obj, edges, thread): inode += "" inode += ">" inode += "];\n" + if not bold: + e_in, e_out = edges[-2:] + edges = edges[:-2] + edges.append((e_in[0], e_out[1], thread)) + inode = "" node += inode irows = [] orows = [] @@ -332,7 +337,7 @@ def __doc_gam__(label, obj, edges, thread, classfilter=True): return node, edges -def __process_gamds__(name, signals, edges): +def __process_gamds__(name, cls, signals, edges): node = "" outputs = {} inputs = {} @@ -386,7 +391,7 @@ def __process_gamds__(name, signals, edges): f"<{doc.format_name(sig_name)}> {sig_name} ({doc.type_to_string(sig_type)})" ) if node: - node = f'{name} [label="{name}\nGAMDataSource | {node}", color=blue];\n' + node = f'{name} [label="{name}\n{cls} | {node}", color=blue];\n' return node, edges @@ -410,8 +415,8 @@ def __process_ds__(name, obj, edges): elif thread != edge[-1]: multi_thread = True if sigs: - if cls == "GAMDataSource": - node, edges = __process_gamds__(name, sigs, edges) + if cls == "GAMDataSource" or cls == "RealTimeThreadAsyncBridge": + node, edges = __process_gamds__(name, cls, sigs, edges) else: order = [] lost = [] @@ -447,6 +452,13 @@ def __process_ds__(name, obj, edges): def __process_edges__(edges, datasources): + # remove duplicated edges + clean_edges = [] + for edge in edges: + if edge not in clean_edges: + clean_edges.append(edge) + edges = clean_edges + # generate arrows arrows = "" for source, target, _ in edges: src_obj = source[0]