changeset 2335:54cf7034bee0

EE don't abort compile on partial data
author drewp@bigasterisk.com
date Fri, 02 Jun 2023 14:54:11 -0700
parents 887fde4a9a2c
children 47f7f5ac81e8
files light9/effect/sequencer/eval_faders.py
diffstat 1 files changed, 16 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/light9/effect/sequencer/eval_faders.py	Fri Jun 02 14:53:18 2023 -0700
+++ b/light9/effect/sequencer/eval_faders.py	Fri Jun 02 14:54:11 2023 -0700
@@ -52,15 +52,25 @@
         """rebuild our data from the graph"""
         self.faders = []
         for fader in self.graph.subjects(RDF.type, L9['Fader']):
-            effect = typedValue(EffectUri, self.graph, fader, L9['effect'])
-            setting = typedValue(Node, self.graph, fader, L9['setting'])
-            setAttr = typedValue(EffectAttr, self.graph, setting, L9['effectAttr'])
-            self.faders.append(Fader(self.graph, self.lib, cast(URIRef, fader), effect, setAttr))
+            try:
+                self.faders.append(self._compileFader(fader))
+            except ValueError:
+                pass
 
         # this could go in a second, smaller addHandler call to avoid rebuilding Fader objs constantly
         for f in self.faders:
-            setting = typedValue(Node, self.graph, f.uri, L9['setting'])
-            f.value = typedValue(float, self.graph, setting, L9['value'])
+            try:
+                setting = typedValue(Node, self.graph, f.uri, L9['setting'])
+            except ValueError:
+                f.value = None
+            else:
+                f.value = typedValue(float, self.graph, setting, L9['value'])
+
+    def _compileFader(self, fader: URIRef) -> Fader:
+        effect = typedValue(EffectUri, self.graph, fader, L9['effect'])
+        setting = typedValue(Node, self.graph, fader, L9['setting'])
+        setAttr = typedValue(EffectAttr, self.graph, setting, L9['effectAttr'])
+        return (Fader(self.graph, self.lib, cast(URIRef, fader), effect, setAttr))
 
     def computeOutput(self) -> DeviceSettings:
         faderEffectOutputs: List[DeviceSettings] = []