changeset 1674:604fbd524391

effecteval graph read optimizations Ignore-this: 1adf7746190be77cc7f45d7144e00601
author drewp@bigasterisk.com
date Sun, 11 Jun 2017 18:58:23 +0000
parents 1626e3b6f181
children e2ddb3e55b84
files light9/effect/effecteval.py light9/effect/sequencer.py
diffstat 2 files changed, 8 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/light9/effect/effecteval.py	Sun Jun 11 18:58:08 2017 +0000
+++ b/light9/effect/effecteval.py	Sun Jun 11 18:58:23 2017 +0000
@@ -72,11 +72,12 @@
         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:
--- a/light9/effect/sequencer.py	Sun Jun 11 18:58:08 2017 +0000
+++ b/light9/effect/sequencer.py	Sun Jun 11 18:58:23 2017 +0000
@@ -84,8 +84,9 @@
             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'])