Example #1
0
    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)
Example #2
0
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)
Example #3
0
 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,
         )
Example #4
0
    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)