''' Created on Jul 17, 2014 @author: roj-idl71 ''' import cPickle import msgpack_numpy import jsonpickle import yaml # import JROMsgpack # import JROJsonpickle 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, mode = 'cPickle'): if mode == 'cPickle': self.serializer = cPickleSerializer() if mode == 'jsonpickle': self.serializer = jsonpickleSerializer() if mode == 'yaml': self.serializer = yamlSerializer() if mode == 'msgpack': self.serializer = msgpackSerializer() if __name__ == '__main__': pass