Commit 345169f7 authored by Jeremy Hylton's avatar Jeremy Hylton

Deal with references in zodb_unpickle().

parent 148f640b
...@@ -31,6 +31,7 @@ from cPickle import Pickler, Unpickler ...@@ -31,6 +31,7 @@ from cPickle import Pickler, Unpickler
from cStringIO import StringIO from cStringIO import StringIO
from ZODB.Transaction import Transaction from ZODB.Transaction import Transaction
from ZODB.utils import u64
from ZODB.tests.MinPO import MinPO from ZODB.tests.MinPO import MinPO
...@@ -64,10 +65,15 @@ def zodb_pickle(obj): ...@@ -64,10 +65,15 @@ def zodb_pickle(obj):
p.dump(state) p.dump(state)
return f.getvalue(1) return f.getvalue(1)
def persistent_load(pid):
# helper for zodb_unpickle
return "ref to %s.%s oid=%s" % (pid[1][0], pid[1][1], u64(pid[0]))
def zodb_unpickle(data): def zodb_unpickle(data):
"""Unpickle an object stored using the format expected by ZODB.""" """Unpickle an object stored using the format expected by ZODB."""
f = StringIO(data) f = StringIO(data)
u = Unpickler(f) u = Unpickler(f)
u.persistent_load = persistent_load
klass_info = u.load() klass_info = u.load()
if isinstance(klass_info, types.TupleType): if isinstance(klass_info, types.TupleType):
if isinstance(klass_info[0], types.TupleType): if isinstance(klass_info[0], types.TupleType):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment