Path 1: 12 calls (0.5)

'data.clientmodule_test' (4) 'data.clientmodule_test.Specialization' (4) 'data.clientmodule_test.Ancestor' (4)

'data.suppliermodule_test' (4) 'data.clientmodule_test.Ancestor' (4) 'data.suppliermodule_test.Interface' (4)

EdgeType (12)

None (12)

1def emit_edge(
2        self,
3        from_node: str,
4        to_node: str,
5        type_: EdgeType,
6        label: str | None = None,
7    ) -> None:
8        """Create an edge from one node to another to display relationships."""
9        arrowstyle = ARROWS[type_]
10        attrs = [f'{prop}="{value}"' for prop, value in arrowstyle.items()]
11        if label:
12            attrs.append(f'label="{label}"')
13        self.emit(f'"{from_node}" -> "{to_node}" [{", ".join(sorted(attrs))}];')
            

Path 2: 12 calls (0.5)

'data.suppliermodule_test.DoNothing' (8) 'data.suppliermodule_test.DoNothing2' (4)

'data.clientmodule_test.Specialization' (8) 'data.clientmodule_test.Ancestor' (4)

EdgeType (12)

'cls_member' (4) 'relation' (4) 'relation2' (4)

1def emit_edge(
2        self,
3        from_node: str,
4        to_node: str,
5        type_: EdgeType,
6        label: str | None = None,
7    ) -> None:
8        """Create an edge from one node to another to display relationships."""
9        arrowstyle = ARROWS[type_]
10        attrs = [f'{prop}="{value}"' for prop, value in arrowstyle.items()]
11        if label:
12            attrs.append(f'label="{label}"')
13        self.emit(f'"{from_node}" -> "{to_node}" [{", ".join(sorted(attrs))}];')