[Zodb-checkins] SVN: ZODB/branches/3.8-2.5/ r4138@dhcp157: jim |
2007-06-24 13:59:04 -0400
Jim Fulton
jim at zope.com
Mon Jun 25 09:58:19 EDT 2007
Log message for revision 77038:
r4138 at dhcp157: jim | 2007-06-24 13:59:04 -0400
Added working pickling support to override Python 2.5's broken
exception pickling.
Changed:
_U ZODB/branches/3.8-2.5/
U ZODB/branches/3.8-2.5/src/ZODB/POSException.py
-=-
Property changes on: ZODB/branches/3.8-2.5
___________________________________________________________________
Name: svk:merge
+ 00440d54-f1b3-4d03-ae2a-ae4fd7ee82eb:/3.8-2.5:4138
62d5b8a3-27da-0310-9561-8e5933582275:/ZODB/branches/3.8:76620
62d5b8a3-27da-0310-9561-8e5933582275:/ZODB/trunk:76619
Modified: ZODB/branches/3.8-2.5/src/ZODB/POSException.py
===================================================================
--- ZODB/branches/3.8-2.5/src/ZODB/POSException.py 2007-06-25 13:09:53 UTC (rev 77037)
+++ ZODB/branches/3.8-2.5/src/ZODB/POSException.py 2007-06-25 13:58:18 UTC (rev 77038)
@@ -21,9 +21,23 @@
s = reason and (": %s" % reason) or ""
return "Undo error %s%s" % (oid_repr(oid), s)
+def _recon(class_, state):
+ err = class_.__new__(class_)
+ err.__setstate__(state)
+ return err
+_recon.__no_side_effects__ = True
+
class POSError(StandardError):
"""Persistent object system error."""
+ def __reduce__(self):
+ # Cope extra data from internal structures
+ state = self.__dict__.copy()
+ state['message'] = self.message
+ state['args'] = self.args
+
+ return (_recon, (self.__class__, state))
+
class POSKeyError(KeyError, POSError):
"""Key not found in database."""
More information about the Zodb-checkins
mailing list