JROSerializer.py
92 lines
| 2.1 KiB
| text/x-python
|
PythonLexer
|
r568 | ''' | |
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 |