''' Created on Jul 17, 2014 @author: roj-idl71 ''' DEFAULT_SERIALIZER = None try: import cPickle DEFAULT_SERIALIZER = 'cPickle' except: pass try: import msgpack_numpy DEFAULT_SERIALIZER = 'msgpack' except: pass # import jsonpickle # import yaml class Serializer(object): def __init__(self): self.serializer = None def dumps(self, obj, **kwargs): return self.serializer.dumps(obj, **kwargs) def loads(self, obj, **kwargs): return self.serializer.loads(obj, **kwargs) class cPickleSerializer(Serializer): def __init__(self): self.serializer = cPickle def dumps(self, obj, **kwargs): return self.serializer.dumps(obj, 2) def loads(self, obj, **kwargs): return self.serializer.loads(obj) class msgpackSerializer(Serializer): def __init__(self): self.serializer = msgpack_numpy def dumps(self, obj, **kwargs): return self.serializer.packb(obj) def loads(self, obj, **kwargs): return self.serializer.unpackb(obj) # class jsonpickleSerializer(Serializer): # # def __init__(self): # # self.serializer = jsonpickle # # def dumps(self, obj, **kwargs): # return self.serializer.encode(obj, **kwargs) # # def loads(self, obj, **kwargs): # return self.serializer.decode(obj, **kwargs) # # class yamlSerializer(Serializer): # # def __init__(self): # # self.serializer = yaml # # def dumps(self, obj, **kwargs): # return self.serializer.dump(obj, **kwargs) # # def loads(self, obj, **kwargs): # return self.serializer.load(obj, **kwargs) class DynamicSerializer(Serializer): def __init__(self, module = None): if not DEFAULT_SERIALIZER: raise ImportError, "Install a python serializer like cPickle or msgpack" if not module: module == DEFAULT_SERIALIZER if module == 'cPickle': self.serializer = cPickleSerializer() # # if module == 'jsonpickle': # self.serializer = jsonpickleSerializer() # # if module == 'yaml': # self.serializer = yamlSerializer() if module == 'msgpack': self.serializer = msgpackSerializer() if __name__ == '__main__': pass