# HG changeset patch # User drewp@bigasterisk.com # Date 2017-06-11 18:58:23 # Node ID 604fbd5243912fda9ed78f83fb9de4119caec63b # Parent 1626e3b6f181a15eb42909690e9ba3fce318439d effecteval graph read optimizations Ignore-this: 1adf7746190be77cc7f45d7144e00601 diff --git a/light9/effect/effecteval.py b/light9/effect/effecteval.py --- a/light9/effect/effecteval.py +++ b/light9/effect/effecteval.py @@ -72,11 +72,12 @@ class EffectEval(object): for effect in self.graph.subjects(RDF.type, L9['Effect']): settings = [] for setting in self.graph.objects(effect, L9['setting']): + settingValues = dict(self.graph.predicate_objects(setting)) try: - d = self.graph.value(setting, L9['device']) - a = self.graph.value(setting, L9['deviceAttr']) - v = self.graph.value(setting, L9['value']) - sv = self.graph.value(setting, L9['scaledValue']) + d = settingValues.get(L9['device'], None) + a = settingValues.get(L9['deviceAttr'], None) + v = settingValues.get(L9['value'], None) + sv = settingValues.get(L9['scaledValue'], None) if not (bool(v) ^ bool(sv)): raise NotImplementedError('no value for %s' % setting) if d is None: diff --git a/light9/effect/sequencer.py b/light9/effect/sequencer.py --- a/light9/effect/sequencer.py +++ b/light9/effect/sequencer.py @@ -84,8 +84,9 @@ class Note(object): graph, g.value(uri, L9['effectClass']), sharedEffectOutputs) self.baseEffectSettings = {} # {effectAttr: value} for s in g.objects(uri, L9['setting']): - ea = g.value(s, L9['effectAttr']) - self.baseEffectSettings[ea] = g.value(s, L9['value']) + settingValues = dict(g.predicate_objects(s)) + ea = settingValues[L9['effectAttr']] + self.baseEffectSettings[ea] = settingValues[L9['value']] floatVal = lambda s, p: float(g.value(s, p).toPython()) originTime = floatVal(uri, L9['originTime'])