def visit_project(self, node): """visit an pyreverse.utils.Project node create a diagram definition for packages """ mode = self.config.mode if len(node.modules) > 1: self.pkgdiagram = PackageDiagram('packages %s' % node.name, mode) else: self.pkgdiagram = None self.classdiagram = ClassDiagram('classes %s' % node.name, mode)
class DefaultDiadefGenerator(LocalsVisitor, DiaDefGenerator): """generate minimum diagram definition for the project : * a package diagram including project's modules * a class diagram including project's classes """ def __init__(self, linker, handler): DiaDefGenerator.__init__(self, linker, handler) LocalsVisitor.__init__(self) def visit_project(self, node): """visit an pyreverse.utils.Project node create a diagram definition for packages """ mode = self.config.mode if len(node.modules) > 1: self.pkgdiagram = PackageDiagram('packages %s' % node.name, mode) else: self.pkgdiagram = None self.classdiagram = ClassDiagram('classes %s' % node.name, mode) def leave_project(self, node): # pylint: disable=unused-argument """leave the pyreverse.utils.Project node return the generated diagram definition """ if self.pkgdiagram: return self.pkgdiagram, self.classdiagram return self.classdiagram, def visit_module(self, node): """visit an astroid.Module node add this class to the package diagram definition """ if self.pkgdiagram: self.linker.visit(node) self.pkgdiagram.add_object(node.name, node) def visit_classdef(self, node): """visit an astroid.Class node add this class to the class diagram definition """ anc_level, ass_level = self._get_levels() self.extract_classes(node, anc_level, ass_level) def visit_importfrom(self, node): """visit astroid.ImportFrom and catch modules for package diagram """ if self.pkgdiagram: self.pkgdiagram.add_from_depend(node, node.modname)
def write_packages(self, diagram: PackageDiagram) -> None: """Write a package diagram.""" # sorted to get predictable (hence testable) results for module in sorted(diagram.modules(), key=lambda x: x.title): module.fig_id = module.node.qname() self.printer.emit_node( module.fig_id, type_=NodeType.PACKAGE, properties=self.get_package_properties(module), ) # package dependencies for rel in diagram.get_relationships("depends"): self.printer.emit_edge( rel.from_object.fig_id, rel.to_object.fig_id, type_=EdgeType.USES, )
def visit_project(self, node: Project) -> None: """visit a pyreverse.utils.Project node create a diagram definition for packages """ mode = self.config.mode if len(node.modules) > 1: self.pkgdiagram: Optional[PackageDiagram] = PackageDiagram( f"packages {node.name}", mode) else: self.pkgdiagram = None self.classdiagram = ClassDiagram(f"classes {node.name}", mode)