[Python-checkins] r69269 - sandbox/trunk/dbm_sqlite/alt/dbdict.py

raymond.hettinger python-checkins at python.org
Wed Feb 4 11:06:10 CET 2009


Author: raymond.hettinger
Date: Wed Feb  4 11:06:10 2009
New Revision: 69269

Log:
Add eval format.

Modified:
   sandbox/trunk/dbm_sqlite/alt/dbdict.py

Modified: sandbox/trunk/dbm_sqlite/alt/dbdict.py
==============================================================================
--- sandbox/trunk/dbm_sqlite/alt/dbdict.py	(original)
+++ sandbox/trunk/dbm_sqlite/alt/dbdict.py	Wed Feb  4 11:06:10 2009
@@ -5,7 +5,7 @@
 close time's are potentially long because the whole dict must be
 read or written to disk.
 
-File format is selectable between pickle, json, and csv.
+File format is selectable between pickle, json, eval, and csv.
 All three are backed by fast C implementations.
 
 '''
@@ -48,16 +48,21 @@
             json.dump(self, f, separators=(',',':'))
         elif self.format == 'pickle':
             pickle.dump(self.items(), f, -1)
+        elif self.format == 'eval':
+            f.write(repr(self))
         else:
             raise NotImplementedError('Unknown format: %r' % self.format)
 
     def load(self, f):
+        # Use csv or json for untrusted data.  Use pickle or eval for trusted.
         if self.format == 'csv':
             return csv.reader(f)
         elif self.format == 'json':
             return json.load(f)
         elif self.format == 'pickle':
             return pickle.load(f)
+        elif self.format == 'eval':
+            return eval(f.read())
         else:
             raise NotImplementedError('Unknown format: %r' % self.format)
 


More information about the Python-checkins mailing list