See also

This notebook can be downloaded here

UML class diagram generator#

  • This notebook generates UML diagrams of class hierarchies

  • Dependencies: pylint, ipykernel (install these two in a python env), graphviz

from IPython.display import Image, display
from quantify_scheduler.helpers.inspect import make_uml_diagram

General notes#

  • Yellow labels indicate addition as a submodule

  • Different colors indicate different packages

  • Generated figures are saved in png format

  • Options must be given in list[str] format

  • For more information, visit the Wikipedia page on relationships in class diagrams

Plotting all classes in a module#

  • Be aware that this option will only plot classes that are contained within module_to_plot, and not related classes defined outside the module.

  • Extra options:

    • Show ancestors (aka parent classes): -A

    • Ignore specific submodules: --ignore <file[,file...]> (e.g. ["--ignore", "circuit_to_device.py,corrections.py,zhinst"])

from quantify_scheduler.backends import qblox

module_to_plot = qblox
options = ["-A"]

diagram_name = make_uml_diagram(module_to_plot, options)
if diagram_name:
    display(Image(diagram_name))
Something went wrong in the plotting backend. Please make sure pylint is installed and the provided options have the correct syntax: ['-A']
Error running 'dot': is 'graphviz' installed?
Error: dot: can't open classes.dot

Plotting ancestors and submodules of a class#

  • Remove --only-classnames option to show all class attributes

from quantify_scheduler.device_under_test.transmon_element import BasicTransmonElement

class_to_plot = BasicTransmonElement
options = ["--only-classnames"]

diagram_name = make_uml_diagram(class_to_plot, options)
if diagram_name:
    display(Image(diagram_name))
Something went wrong in the plotting backend. Please make sure pylint is installed and the provided options have the correct syntax: ['--only-classnames']
Error running 'dot': is 'graphviz' installed?
Error: dot: can't open quantify_scheduler.device_under_test.transmon_element.BasicTransmonElement.dot