@@ -223,12 +223,14 @@ def _allow_render(self) -> bool: ...
223
223
224
224
else :
225
225
_allow_render : bool = True
226
- """Allow this diagram to be rendered by the internal rendering engine.
226
+ """Always allow rendering this diagram with the internal engine.
227
227
228
228
If this property is set to False, and a diagram cache was
229
229
specified for the model, this diagram can only be loaded from
230
- the cache, and will never be rendered. Has no effect if there
231
- was no diagram cache specified.
230
+ the cache, and will never be rendered. If set to True, a cache
231
+ miss will instead cause the diagram to be rendered internally.
232
+
233
+ Has no effect if there was no diagram cache specified.
232
234
233
235
:meta public:
234
236
"""
@@ -400,10 +402,25 @@ def render(
400
402
try :
401
403
return self .__load_cache (chain )
402
404
except KeyError :
403
- pass
404
-
405
- if not self ._allow_render :
406
- raise RuntimeError (f"Diagram not in cache: { self .name } " )
405
+ if not (
406
+ self ._model ._fallback_render_aird or self ._allow_render
407
+ ):
408
+ raise RuntimeError (
409
+ f"Diagram not in cache: { self .name } "
410
+ ) from None
411
+ except Exception :
412
+ if not self ._model ._fallback_render_aird :
413
+ raise
414
+ LOGGER .warning (
415
+ (
416
+ "Diagram cache lookup failed,"
417
+ " falling back to internal renderer"
418
+ " for diagram %r (%s)"
419
+ ),
420
+ self .name ,
421
+ self .uuid ,
422
+ exc_info = True ,
423
+ )
407
424
408
425
render = self .__render_fresh (params )
409
426
return _run_converter_chain (chain , render , pretty_print = pretty_print )
@@ -634,9 +651,10 @@ class DRepresentationDescriptor(AbstractDiagram):
634
651
description = _pods .HTMLStringPOD ("documentation" )
635
652
636
653
_element : aird .DRepresentationDescriptor
637
-
638
654
_node_cache : list [etree ._Element ]
639
655
656
+ _allow_render = False
657
+
640
658
@classmethod
641
659
def from_model (
642
660
cls ,
@@ -700,10 +718,6 @@ def semantic_nodes(self) -> _obj.ElementList:
700
718
elems .append (obj ._element )
701
719
return _obj .ElementList (self ._model , elems , legacy_by_type = True )
702
720
703
- @property
704
- def _allow_render (self ) -> bool :
705
- return self ._model ._fallback_render_aird
706
-
707
721
@property
708
722
def viewpoint (self ) -> str :
709
723
return aird .viewpoint_of (self ._element )
0 commit comments