diff --git a/diagrams/__init__.py b/diagrams/__init__.py index 1fb33db7..d491c23a 100644 --- a/diagrams/__init__.py +++ b/diagrams/__init__.py @@ -87,6 +87,7 @@ class Diagram: graph_attr: dict = {}, node_attr: dict = {}, edge_attr: dict = {}, + preserve_graphviz_file: bool = False ): """Diagram represents a global diagrams context. @@ -142,6 +143,7 @@ class Diagram: self.dot.edge_attr.update(edge_attr) self.show = show + self.preserve_graphviz_file = preserve_graphviz_file def __str__(self) -> str: return str(self.dot) @@ -153,7 +155,8 @@ class Diagram: def __exit__(self, exc_type, exc_value, traceback): self.render() # Remove the graphviz file leaving only the image. - os.remove(self.filename) + if (not self.preserve_graphviz_file): + os.remove(self.filename) setdiagram(None) def _repr_png_(self): @@ -504,7 +507,8 @@ class Edge: self._attrs = o.attrs.copy() result.append(o) else: - result.append(Edge(o, forward=forward, reverse=reverse, **self._attrs)) + result.append( + Edge(o, forward=forward, reverse=reverse, **self._attrs)) return result def connect(self, other: Union["Node", "Edge", List["Node"]]): diff --git a/diagrams/programming/language.py b/diagrams/programming/language.py index 5503c7b6..c7502e77 100644 --- a/diagrams/programming/language.py +++ b/diagrams/programming/language.py @@ -16,6 +16,10 @@ class C(_Language): _icon = "c.png" +class Cobol(_Language): + _icon = "cobol.png" + + class Cpp(_Language): _icon = "cpp.png" @@ -36,6 +40,10 @@ class Erlang(_Language): _icon = "erlang.png" +class Fortran(_Language): + _icon = "fortran.png" + + class Go(_Language): _icon = "go.png" @@ -68,6 +76,10 @@ class Php(_Language): _icon = "php.png" +class Powershell(_Language): + _icon = "powershell.png" + + class Python(_Language): _icon = "python.png" diff --git a/docs/nodes/programming.md b/docs/nodes/programming.md index df813899..027ab933 100644 --- a/docs/nodes/programming.md +++ b/docs/nodes/programming.md @@ -54,11 +54,13 @@ Node classes list of programming provider. - **diagrams.programming.language.Bash** - **diagrams.programming.language.C** +- **diagrams.programming.language.Cobol** - **diagrams.programming.language.Cpp** - **diagrams.programming.language.Csharp** - **diagrams.programming.language.Dart** - **diagrams.programming.language.Elixir** - **diagrams.programming.language.Erlang** +- **diagrams.programming.language.Fortran** - **diagrams.programming.language.Go** - **diagrams.programming.language.Java** - **diagrams.programming.language.Javascript**, **JavaScript** (alias) @@ -67,6 +69,7 @@ Node classes list of programming provider. - **diagrams.programming.language.Matlab** - **diagrams.programming.language.Nodejs**, **NodeJS** (alias) - **diagrams.programming.language.Php**, **PHP** (alias) +- **diagrams.programming.language.Powershell** - **diagrams.programming.language.Python** - **diagrams.programming.language.R** - **diagrams.programming.language.Ruby** diff --git a/resources/programming/language/cobol.png b/resources/programming/language/cobol.png new file mode 100644 index 00000000..57eb7db6 Binary files /dev/null and b/resources/programming/language/cobol.png differ diff --git a/resources/programming/language/fortran.png b/resources/programming/language/fortran.png new file mode 100644 index 00000000..4b60b193 Binary files /dev/null and b/resources/programming/language/fortran.png differ diff --git a/resources/programming/language/powershell.png b/resources/programming/language/powershell.png new file mode 100644 index 00000000..c5e45148 Binary files /dev/null and b/resources/programming/language/powershell.png differ