[py-svn] r57098 - py/branch/event/py/test2/rsession

hpk at codespeak.net hpk at codespeak.net
Fri Aug 8 13:34:16 CEST 2008


Author: hpk
Date: Fri Aug  8 13:34:15 2008
New Revision: 57098

Modified:
   py/branch/event/py/test2/rsession/pickle.py
Log:
defer updates of memo for when its actually needed


Modified: py/branch/event/py/test2/rsession/pickle.py
==============================================================================
--- py/branch/event/py/test2/rsession/pickle.py	(original)
+++ py/branch/event/py/test2/rsession/pickle.py	Fri Aug  8 13:34:15 2008
@@ -4,32 +4,38 @@
 
 class ImmutablePickler:
     def __init__(self, protocol=0):
-        self.picklememo = {}
-        self.unpicklememo = {}
-        self.protocol = protocol
+        self._picklememo = {}
+        self._unpicklememo = {}
+        self._protocol = protocol
 
     def dumps(self, obj):
         f = StringIO()
-        pickler = Pickler(f, self.protocol)
-        pickler.memo = self.picklememo
+        pickler = Pickler(f, self._protocol)
+        self._updatepicklememo()
+        pickler.memo = self._picklememo
         pickler.dump(obj)
-        if self.protocol == 0:
-            self.unpicklememo.update(dict(
-                [(str(x), y) 
-                    for x, y in self.picklememo.itervalues()]))
-        else:
-            self.unpicklememo.update(dict(
-                [(x, y) 
-                    for x, y in self.picklememo.itervalues()]))
+
         return f.getvalue()
 
     def loads(self, string):
         f = StringIO(string)
         unpickler = Unpickler(f)
-        unpickler.memo = self.unpicklememo
+        self._updateunpicklememo()
+        unpickler.memo = self._unpicklememo
         res = unpickler.load()
-        self.picklememo.update(dict(
-            [(id(obj), (int(x), obj))
-                  for x, obj in self.unpicklememo.items()]))
         return res
 
+    def _updatepicklememo(self):
+        self._picklememo.update(dict(
+            [(id(obj), (int(x), obj))
+                  for x, obj in self._unpicklememo.items()]))
+
+    def _updateunpicklememo(self):
+        if self._protocol == 0:
+            self._unpicklememo.update(dict(
+                [(str(x), y) 
+                    for x, y in self._picklememo.itervalues()]))
+        else:
+            self._unpicklememo.update(dict(
+                [(x, y) 
+                    for x, y in self._picklememo.itervalues()]))



More information about the pytest-commit mailing list