[Checkins] SVN: Sandbox/ocql-foliage/src/ocql/engine/runnablequery.py started debuggable functions

Adam Groszer agroszer at gmail.com
Tue Sep 25 09:04:48 EDT 2007


Log message for revision 79998:
  started debuggable functions

Changed:
  U   Sandbox/ocql-foliage/src/ocql/engine/runnablequery.py

-=-
Modified: Sandbox/ocql-foliage/src/ocql/engine/runnablequery.py
===================================================================
--- Sandbox/ocql-foliage/src/ocql/engine/runnablequery.py	2007-09-25 13:03:25 UTC (rev 79997)
+++ Sandbox/ocql-foliage/src/ocql/engine/runnablequery.py	2007-09-25 13:04:48 UTC (rev 79998)
@@ -3,6 +3,18 @@
 # This will return the resultset
 #
 
+#import __builtin__
+
+_marker = object()
+
+def d_reduce(function, sequence, initializer=_marker):
+    if initializer is _marker:
+        rv = reduce(function, sequence)
+    else:
+        rv = reduce(function, sequence, initializer)
+    return rv
+    
+
 class RunnableQuery:
     """
         metadata: ocql.metadata instance
@@ -16,15 +28,19 @@
     def reanalyze(self):
         self.code = self.engine.compile_algebra(self.alg)
     
-    def execute(self):
+    def execute(self, debug=False):
         metadata = self.engine.metadata
         
         #return reduce(set.union, map(lambda c: reduce(set.union, map(lambda d: ((d.name=="Computing Science") and (((d==set(filter(lambda i: i.runBy,c))) and (((c.credits<=3) and (((1<=c.credits) and (set([c])) or (set()))) or (set()))) or (set()))) or (set())),set(metadata.getAll("IDepartments"))) , set()),set(metadata.getAll("ICurses"))) , set())
         
         #TODO: why is the metadata not working in locals?
         import operator
-        return eval(self.code,
-                    {'metadata': self.engine.metadata, 'operator': operator},
-                    {'metadata': self.engine.metadata, 'operator': operator})
         
+        mapping = {'metadata': self.engine.metadata,
+                   'operator': operator}
+        if debug:
+            mapping['reduce'] = d_reduce
+        
+        return eval(self.code, mapping, mapping)
+        
         #return eval(self.code)



More information about the Checkins mailing list