Hi, I'm using a custom pickler that replaces any un-pickleable objects (such as sockets or files) with a string representation of them, based on the code from Shane Hathaway here: http://stackoverflow.com/questions/4080688/python-pickling-a-dict-with-some-unpicklable-items
It works most of the time, but when I try to unpickle a Django HttpResponse, I get the following error: UnpicklingError: NEWOBJ class argument isn't a type object I have no clue what the error actually means. If it pickles okay, why should it not be able to unpickle? Any ideas? thanks for the help, imran Here is my code: from cPickle import Pickler, Unpickler, UnpicklingError class FilteredObject: def __init__(self, about): self.about = about def __repr__(self): return 'FilteredObject(%s)' % repr(self.about) class MyPickler(object): def __init__(self, file, protocol=2): pickler = Pickler(file, protocol) pickler.persistent_id = self.persistent_id self.dump = pickler.dump self.clear_memo = pickler.clear_memo def persistent_id(self, obj): if not hasattr(obj, '__getstate__') and not isinstance(obj, (basestring, bool, int, long, float, complex, tuple, list, set, dict)): return ["filtered:%s" % str(obj)] else: return None class MyUnpickler(object): def __init__(self, file): unpickler = Unpickler(file) unpickler.persistent_load = self.persistent_load self.load = unpickler.load self.noload = unpickler.noload def persistent_load(self, obj_id): if obj_id[0].startswith('filtered:'): return FilteredObject(obj_id[0][9:]) else: raise UnpicklingError('Invalid persistent id') ###### serialize to file f = open('test.txt','wb') p = MyPickler(f) p.dump(data) f.close() ###### unserialize from file f = open('test.txt','rb') pickled_data = f.read() f.seek(0) u = MyUnpickler(f) data = u.load() -- http://mail.python.org/mailman/listinfo/python-list