diff --git a/diagrams/__init__.py b/diagrams/__init__.py index 1fb33db7..dddf64e8 100644 --- a/diagrams/__init__.py +++ b/diagrams/__init__.py @@ -1,5 +1,6 @@ import contextvars import os +import shutil import uuid from pathlib import Path from typing import List, Union, Dict @@ -87,6 +88,7 @@ class Diagram: graph_attr: dict = {}, node_attr: dict = {}, edge_attr: dict = {}, + generate_dot_file: bool = False ): """Diagram represents a global diagrams context. @@ -109,7 +111,7 @@ class Diagram: filename = "_".join(self.name.split()).lower() self.filename = filename self.dot = Digraph(self.name, filename=self.filename) - + self.generate_dot_file = generate_dot_file # Set attributes. for k, v in self._default_graph_attrs.items(): self.dot.graph_attr[k] = v @@ -140,7 +142,6 @@ class Diagram: self.dot.graph_attr.update(graph_attr) self.dot.node_attr.update(node_attr) self.dot.edge_attr.update(edge_attr) - self.show = show def __str__(self) -> str: @@ -187,6 +188,12 @@ class Diagram: else: self.dot.render(format=self.outformat, view=self.show, quiet=True) + if self.generate_dot_file: + try: + shutil.copy(self.filename, f"{self.filename}.dot") + except shutil.Error: + print("Dot file not generated") + class Cluster: __directions = ("TB", "BT", "LR", "RL")