[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