From 079dcfe2598a980dba193c7bd9b8428aa0ee6a5d 2013-03-21 20:50:59 From: MinRK <benjaminrk@gmail.com> Date: 2013-03-21 20:50:59 Subject: [PATCH] add hook to CannedObject so that additional post-processing can happen on uncanning --- diff --git a/IPython/utils/pickleutil.py b/IPython/utils/pickleutil.py index 6e0a04d..bfff04c 100644 --- a/IPython/utils/pickleutil.py +++ b/IPython/utils/pickleutil.py @@ -49,9 +49,10 @@ else: class CannedObject(object): - def __init__(self, obj, keys=[]): + def __init__(self, obj, keys=[], hook=None): self.keys = keys self.obj = copy.copy(obj) + self.hook = can(hook) for key in keys: setattr(self.obj, key, can(getattr(obj, key))) @@ -60,8 +61,13 @@ class CannedObject(object): def get_object(self, g=None): if g is None: g = {} + obj = self.obj for key in self.keys: - setattr(self.obj, key, uncan(getattr(self.obj, key), g)) + setattr(obj, key, uncan(getattr(obj, key), g)) + + if self.hook: + self.hook = uncan(self.hook, g) + self.hook(obj, g) return self.obj