diff options
Diffstat (limited to 'pylint/pyreverse/writer.py')
-rw-r--r-- | pylint/pyreverse/writer.py | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/pylint/pyreverse/writer.py b/pylint/pyreverse/writer.py index d92f4e2e5..58e967115 100644 --- a/pylint/pyreverse/writer.py +++ b/pylint/pyreverse/writer.py @@ -1,8 +1,8 @@ # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html -# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE -# Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt +# For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE +# Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt -"""Utilities for creating VCG and Dot diagrams.""" +"""Utilities for creating diagrams.""" from __future__ import annotations @@ -57,6 +57,12 @@ class DiagramWriter: # sorted to get predictable (hence testable) results for module in sorted(diagram.modules(), key=lambda x: x.title): module.fig_id = module.node.qname() + if self.config.no_standalone and not any( + module in (rel.from_object, rel.to_object) + for rel in diagram.get_relationships("depends") + ): + continue + self.printer.emit_node( module.fig_id, type_=NodeType.PACKAGE, @@ -75,9 +81,17 @@ class DiagramWriter: # sorted to get predictable (hence testable) results for obj in sorted(diagram.objects, key=lambda x: x.title): # type: ignore[no-any-return] obj.fig_id = obj.node.qname() - type_ = NodeType.INTERFACE if obj.shape == "interface" else NodeType.CLASS + if self.config.no_standalone and not any( + obj in (rel.from_object, rel.to_object) + for rel_type in ("specialization", "association", "aggregation") + for rel in diagram.get_relationships(rel_type) + ): + continue + self.printer.emit_node( - obj.fig_id, type_=type_, properties=self.get_class_properties(obj) + obj.fig_id, + type_=NodeType.CLASS, + properties=self.get_class_properties(obj), ) # inheritance links for rel in diagram.get_relationships("specialization"): @@ -86,13 +100,6 @@ class DiagramWriter: rel.to_object.fig_id, type_=EdgeType.INHERITS, ) - # implementation links - for rel in diagram.get_relationships("implements"): - self.printer.emit_edge( - rel.from_object.fig_id, - rel.to_object.fig_id, - type_=EdgeType.IMPLEMENTS, - ) # generate associations for rel in diagram.get_relationships("association"): self.printer.emit_edge( |