serializer.py.svn-base
107 lines
| 2.5 KiB
| text/plain
|
TextLexer
|
r965 | ''' | |
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 |