fix: ensure global diagram and cluster contexts are cleared even on rendering failure

pull/1203/head
Carlos Barbero 8 months ago
parent 4eb914f264
commit 14f30fcf73

@ -208,10 +208,14 @@ class Diagram:
try: try:
self.render() self.render()
finally: finally:
if os.path.exists(self.filename): try:
# Remove the graphviz file leaving only the image. if os.path.exists(self.filename) and os.path.isfile(self.filename):
os.remove(self.filename) # Remove the graphviz file leaving only the image.
os.remove(self.filename)
except OSError:
pass
setdiagram(None) setdiagram(None)
setcluster(None)
def _repr_png_(self): def _repr_png_(self):
return self.dot.pipe(format="png") return self.dot.pipe(format="png")
@ -316,11 +320,13 @@ class Cluster:
return self return self
def __exit__(self, exc_type, exc_value, traceback): def __exit__(self, exc_type, exc_value, traceback):
if self._parent: try:
self._parent.subgraph(self.dot) if self._parent:
else: self._parent.subgraph(self.dot)
self._diagram.subgraph(self.dot) else:
setcluster(self._parent) self._diagram.subgraph(self.dot)
finally:
setcluster(self._parent)
def _validate_direction(self, direction: str) -> bool: def _validate_direction(self, direction: str) -> bool:
return direction.upper() in self.__directions return direction.upper() in self.__directions

Loading…
Cancel
Save