Method: pylint.pyreverse.writer.DiagramWriter.write_classes
Calls: 25, Exceptions: 0, Paths: 4Back
Path 1: 14 calls (0.56)
ClassDiagram (14)
1def write_classes(self, diagram: ClassDiagram) -> None:
2 """Write a class diagram."""
3 # sorted to get predictable (hence testable) results
4 for obj in sorted(diagram.objects, key=lambda x: x.title): # type: ignore[no-any-return]
5 obj.fig_id = obj.node.qname()
6 type_ = NodeType.INTERFACE if obj.shape == "interface" else NodeType.CLASS
7 self.printer.emit_node(
8 obj.fig_id, type_=type_, properties=self.get_class_properties(obj)
9 )
10 # inheritance links
11 for rel in diagram.get_relationships("specialization"):
12 self.printer.emit_edge(
13 rel.from_object.fig_id,
14 rel.to_object.fig_id,
15 type_=EdgeType.INHERITS,
16 )
17 # implementation links
18 for rel in diagram.get_relationships("implements"):
19 self.printer.emit_edge(
20 rel.from_object.fig_id,
21 rel.to_object.fig_id,
22 type_=EdgeType.IMPLEMENTS,
23 )
24 # generate associations
25 for rel in diagram.get_relationships("association"):
26 self.printer.emit_edge(
27 rel.from_object.fig_id,
28 rel.to_object.fig_id,
29 label=rel.name,
30 type_=EdgeType.ASSOCIATION,
31 )
32 # generate aggregations
33 for rel in diagram.get_relationships("aggregation"):
34 self.printer.emit_edge(
35 rel.from_object.fig_id,
36 rel.to_object.fig_id,
37 label=rel.name,
38 type_=EdgeType.AGGREGATION,
39 )
Path 2: 9 calls (0.36)
ClassDiagram (9)
1def write_classes(self, diagram: ClassDiagram) -> None:
2 """Write a class diagram."""
3 # sorted to get predictable (hence testable) results
4 for obj in sorted(diagram.objects, key=lambda x: x.title): # type: ignore[no-any-return]
5 obj.fig_id = obj.node.qname()
6 type_ = NodeType.INTERFACE if obj.shape == "interface" else NodeType.CLASS
7 self.printer.emit_node(
8 obj.fig_id, type_=type_, properties=self.get_class_properties(obj)
9 )
10 # inheritance links
11 for rel in diagram.get_relationships("specialization"):
12 self.printer.emit_edge(
13 rel.from_object.fig_id,
14 rel.to_object.fig_id,
15 type_=EdgeType.INHERITS,
16 )
17 # implementation links
18 for rel in diagram.get_relationships("implements"):
19 self.printer.emit_edge(
20 rel.from_object.fig_id,
21 rel.to_object.fig_id,
22 type_=EdgeType.IMPLEMENTS,
23 )
24 # generate associations
25 for rel in diagram.get_relationships("association"):
26 self.printer.emit_edge(
27 rel.from_object.fig_id,
28 rel.to_object.fig_id,
29 label=rel.name,
30 type_=EdgeType.ASSOCIATION,
31 )
32 # generate aggregations
33 for rel in diagram.get_relationships("aggregation"):
34 self.printer.emit_edge(
35 rel.from_object.fig_id,
36 rel.to_object.fig_id,
37 label=rel.name,
38 type_=EdgeType.AGGREGATION,
39 )
Path 3: 1 calls (0.04)
ClassDiagram (1)
1def write_classes(self, diagram: ClassDiagram) -> None:
2 """Write a class diagram."""
3 # sorted to get predictable (hence testable) results
4 for obj in sorted(diagram.objects, key=lambda x: x.title): # type: ignore[no-any-return]
5 obj.fig_id = obj.node.qname()
6 type_ = NodeType.INTERFACE if obj.shape == "interface" else NodeType.CLASS
7 self.printer.emit_node(
8 obj.fig_id, type_=type_, properties=self.get_class_properties(obj)
9 )
10 # inheritance links
11 for rel in diagram.get_relationships("specialization"):
12 self.printer.emit_edge(
13 rel.from_object.fig_id,
14 rel.to_object.fig_id,
15 type_=EdgeType.INHERITS,
16 )
17 # implementation links
18 for rel in diagram.get_relationships("implements"):
19 self.printer.emit_edge(
20 rel.from_object.fig_id,
21 rel.to_object.fig_id,
22 type_=EdgeType.IMPLEMENTS,
23 )
24 # generate associations
25 for rel in diagram.get_relationships("association"):
26 self.printer.emit_edge(
27 rel.from_object.fig_id,
28 rel.to_object.fig_id,
29 label=rel.name,
30 type_=EdgeType.ASSOCIATION,
31 )
32 # generate aggregations
33 for rel in diagram.get_relationships("aggregation"):
34 self.printer.emit_edge(
35 rel.from_object.fig_id,
36 rel.to_object.fig_id,
37 label=rel.name,
38 type_=EdgeType.AGGREGATION,
39 )
Path 4: 1 calls (0.04)
ClassDiagram (1)
1def write_classes(self, diagram: ClassDiagram) -> None:
2 """Write a class diagram."""
3 # sorted to get predictable (hence testable) results
4 for obj in sorted(diagram.objects, key=lambda x: x.title): # type: ignore[no-any-return]
5 obj.fig_id = obj.node.qname()
6 type_ = NodeType.INTERFACE if obj.shape == "interface" else NodeType.CLASS
7 self.printer.emit_node(
8 obj.fig_id, type_=type_, properties=self.get_class_properties(obj)
9 )
10 # inheritance links
11 for rel in diagram.get_relationships("specialization"):
12 self.printer.emit_edge(
13 rel.from_object.fig_id,
14 rel.to_object.fig_id,
15 type_=EdgeType.INHERITS,
16 )
17 # implementation links
18 for rel in diagram.get_relationships("implements"):
19 self.printer.emit_edge(
20 rel.from_object.fig_id,
21 rel.to_object.fig_id,
22 type_=EdgeType.IMPLEMENTS,
23 )
24 # generate associations
25 for rel in diagram.get_relationships("association"):
26 self.printer.emit_edge(
27 rel.from_object.fig_id,
28 rel.to_object.fig_id,
29 label=rel.name,
30 type_=EdgeType.ASSOCIATION,
31 )
32 # generate aggregations
33 for rel in diagram.get_relationships("aggregation"):
34 self.printer.emit_edge(
35 rel.from_object.fig_id,
36 rel.to_object.fig_id,
37 label=rel.name,
38 type_=EdgeType.AGGREGATION,
39 )