lib/bb/data_smart.py:
authorHolger Hans Peter Freyther <zecke@selfish.org>
Thu, 30 Mar 2006 18:14:56 +0000 (18:14 +0000)
committerHolger Hans Peter Freyther <zecke@selfish.org>
Thu, 30 Mar 2006 18:14:56 +0000 (18:14 +0000)
-The pickling API is not too obvious. One can
 not call p.dump multiple times. Instead
 we store it as a tuple.
-Same applies for unpickling.
-Hmm current programming languages suck. It
 can't be true to use multiple assignment
 for something as easy as a 'symmetric'
 command.

lib/bb/data_smart.py

index c894b7f..a0258e5 100644 (file)
@@ -286,9 +286,7 @@ class DataSmartPackage(DataSmart):
         """
         cache_bbfile = self.sanitize_filename(self.bbfile)
         p = pickle.Unpickler( file("%s/%s"%(self.cache,cache_bbfile),"rb"))
-        self.dict = p.load()
-        self._seen_overrides = p.load()
-        self._special_values = p.load()
+        (self.dict, self._seen_overrides, self._special_values) = p.load()
         self.unpickle_prep()
 
         # compile the functions into global scope
@@ -337,9 +335,7 @@ class DataSmartPackage(DataSmart):
 
         cache_bbfile = self.sanitize_filename(self.bbfile)
         p = pickle.Pickler(file("%s/%s" %(self.cache,cache_bbfile), "wb" ), -1 )
-        p.dump( self.dict )
-        p.dump( self._seen_overrides )
-        p.dump( self._special_values )
+        p.dump( (self.dict,self._seen_overrides,self._special_values) )
 
         self.unpickle_prep()