[Zope-Checkins] SVN: Zope/trunk/src/Products/ZCatalog/plan.py Finish the switch to named tuples

Hanno Schlichting hannosch at hannosch.eu
Sun Aug 1 17:35:48 EDT 2010


Log message for revision 115355:
  Finish the switch to named tuples
  

Changed:
  U   Zope/trunk/src/Products/ZCatalog/plan.py

-=-
Modified: Zope/trunk/src/Products/ZCatalog/plan.py
===================================================================
--- Zope/trunk/src/Products/ZCatalog/plan.py	2010-08-01 21:24:15 UTC (rev 115354)
+++ Zope/trunk/src/Products/ZCatalog/plan.py	2010-08-01 21:35:48 UTC (rev 115355)
@@ -110,6 +110,8 @@
 IndexMeasurement = namedtuple('IndexMeasurement',
                               ['name', 'duration', 'num'])
 Benchmark = namedtuple('Benchmark', ['num', 'duration', 'hits'])
+RecentQuery = namedtuple('RecentQuery', ['duration', 'details'])
+Report = namedtuple('Report', ['hits', 'duration', 'last'])
 
 
 class CatalogPlan(object):
@@ -231,7 +233,7 @@
             return
 
         key = self.key
-        res = (total, self.res)
+        recent = RecentQuery(duration=total, details=self.res)
 
         reports_lock.acquire()
         try:
@@ -242,9 +244,9 @@
             if previous:
                 counter, mean, last = previous
                 mean = (mean * counter + total) / float(counter + 1)
-                reports[self.cid][key] = (counter + 1, mean, res)
+                reports[self.cid][key] = Report(counter + 1, mean, recent)
             else:
-                reports[self.cid][key] = (1, total, res)
+                reports[self.cid][key] = Report(1, total, recent)
         finally:
             reports_lock.release()
 
@@ -256,34 +258,21 @@
             reports_lock.release()
 
     def report(self):
-        """Returns a statistic report of catalog queries as list of dicts as
-        follows:
-
-        [{'query': <query_key>,
-          'counter': <hits>
-          'duration': <mean duration>,
-          'last': <details of recent query>,
-         },
-         ...
-        ]
-
-        <details of recent query> := {'duration': <duration of last query>,
-                                      'details': <duration of single indexes>,
-                                     }
-
+        """Returns a statistic report of catalog queries as list of dicts.
         The duration is provided in millisecond.
         """
         rval = []
-        for k, v in reports.get(self.cid, {}).items():
+        for key, report in reports.get(self.cid, {}).items():
+            last = report.last
             info = {
-                'query': k,
-                'counter': v[0],
-                'duration': v[1] * 1000,
-                'last': {'duration': v[2][0] * 1000,
-                         'details': [dict(id=i.name,
-                                          duration=i.duration * 1000,
-                                          length=i.num)
-                                     for i in v[2][1]],
+                'query': key,
+                'counter': report.hits,
+                'duration': report.duration * 1000,
+                'last': {'duration': last.duration * 1000,
+                         'details': [dict(id=d.name,
+                                          duration=d.duration * 1000,
+                                          length=d.num)
+                                     for d in last.details],
                         },
                 }
             rval.append(info)



More information about the Zope-Checkins mailing list