# HG changeset patch # User drewp@bigasterisk.com # Date 2023-06-02 21:54:11 # Node ID 54cf7034bee05cc7413a8f9e1c7d7f87fad9e003 # Parent 887fde4a9a2c24bb94a9bd8ae054489cb987860f EE don't abort compile on partial data diff --git a/light9/effect/sequencer/eval_faders.py b/light9/effect/sequencer/eval_faders.py --- a/light9/effect/sequencer/eval_faders.py +++ b/light9/effect/sequencer/eval_faders.py @@ -52,15 +52,25 @@ class FaderEval: """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] = []