blob: 7595683d753e7198c772387e2a7a88533f06c0bb [file] [log] [blame]
.. _pyreverse:
Pyreverse
---------
``pyreverse`` analyzes your source code and generates package and class diagrams.
It supports output to ``.dot``/``.gv``, ``.puml``/``.plantuml`` (PlantUML) and ``.mmd``/``.html`` (MermaidJS) file formats.
If Graphviz (or the ``dot`` command) is installed, all `output formats supported by Graphviz <https://graphviz.org/docs/outputs/>`_
can be used as well. In this case, ``pyreverse`` first generates a temporary ``.gv`` file, which is then
fed to Graphviz to generate the final image.
Running Pyreverse
'''''''''''''''''
To run ``pyreverse``, use::
pyreverse [options] <packages>
<packages> can also be a single Python module.
To see a full list of the available options, run::
pyreverse -h
Example Output
''''''''''''''
Example diagrams generated with the ``.puml`` output format are shown below.
Class Diagram
.............
.. image:: media/pyreverse_example_classes.png
:width: 625
:height: 589
:alt: Class diagram generated by pyreverse
:align: center
Package Diagram
...............
.. image:: media/pyreverse_example_packages.png
:width: 344
:height: 177
:alt: Package diagram generated by pyreverse
:align: center
Creating Class Diagrams for Specific Classes
''''''''''''''''''''''''''''''''''''''''''''
In many cases creating a single diagram depicting all classes in the project yields a rather unwieldy, giant diagram.
While limiting the input path to a single package or module can already help greatly to narrow down the scope, the ``-c`` option
provides another way to create a class diagram focusing on a single class and its collaborators.
For example, running::
pyreverse -ASmy -c pylint.checkers.classes.ClassChecker pylint
will generate the full class and package diagrams for ``pylint``, but will additionally generate a file ``pylint.checkers.classes.ClassChecker.dot``:
.. image:: media/ClassChecker_diagram.png
:width: 757
:height: 1452
:alt: Package diagram generated by pyreverse
:align: center