diff piecrust/baking/records.py @ 698:33ab9badfd7a

render: Change how we store render passes info. Previously we used a dictionary with integers as keys, which doesn't go well with JSON serialization. Now replace with an array of fixed length with items that are `None` by default.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 23 Mar 2016 16:39:22 -0700
parents 9ae9390192da
children ab5c6a8ae90a
line wrap: on
line diff
--- a/piecrust/baking/records.py	Wed Mar 23 12:19:35 2016 -0700
+++ b/piecrust/baking/records.py	Wed Mar 23 16:39:22 2016 -0700
@@ -21,7 +21,7 @@
 
 
 class BakeRecord(Record):
-    RECORD_VERSION = 17
+    RECORD_VERSION = 18
 
     def __init__(self):
         super(BakeRecord, self).__init__()
@@ -45,7 +45,7 @@
         self.out_path = out_path
         self.flags = self.FLAG_NONE
         self.errors = []
-        self.render_info = None
+        self.render_info = [None, None]  # Same length as RENDER_PASSES
 
     @property
     def was_clean(self):
@@ -60,14 +60,12 @@
         return self.was_baked and len(self.errors) == 0
 
     def anyPass(self, func):
-        assert self.render_info is not None
-        for p, pinfo in self.render_info.items():
-            if func(pinfo):
+        for pinfo in self.render_info:
+            if pinfo and func(pinfo):
                 return True
         return False
 
     def copyRenderInfo(self):
-        assert self.render_info
         return copy.deepcopy(self.render_info)
 
 
@@ -142,16 +140,16 @@
     def getAllUsedSourceNames(self):
         res = set()
         for o in self.subs:
-            if o.render_info is not None:
-                for p, pinfo in o.render_info.items():
+            for pinfo in o.render_info:
+                if pinfo:
                     res |= pinfo.used_source_names
         return res
 
     def getAllUsedTaxonomyTerms(self):
         res = set()
         for o in self.subs:
-            if o.render_info is not None:
-                for p, pinfo in o.render_info.items():
+            for pinfo in o.render_info:
+                if pinfo:
                     res |= pinfo.used_taxonomy_terms
         return res