raise error, \
"un-deep-copyable object of type %s" % type(x)
else:
- y = _reconstruct(x, reductor(), 1)
+ y = _reconstruct(x, reductor(), 1, memo)
else:
y = copier(memo)
else:
return y
d[types.InstanceType] = _deepcopy_inst
-def _reconstruct(x, info, deep):
+def _reconstruct(x, info, deep, memo=None):
if isinstance(info, str):
return x
assert isinstance(info, tuple)
+ if memo is None:
+ memo = {}
n = len(info)
assert n in (2, 3)
callable, args = info[:2]
else:
state = {}
if deep:
- args = deepcopy(args)
+ args = deepcopy(args, memo)
y = callable(*args)
if state:
if deep:
- state = deepcopy(state)
+ state = deepcopy(state, memo)
y.__dict__.update(state)
return y