serializer.py
107 lines
| 2.5 KiB
| text/x-python
|
PythonLexer
|
r568 | ''' | |
Created on Jul 17, 2014 | |||
@author: roj-idl71 | |||
''' | |||
|
r703 | DEFAULT_SERIALIZER = None | |
|
r568 | ||
|
r703 | try: | |
import cPickle | |||
DEFAULT_SERIALIZER = 'cPickle' | |||
except: | |||
pass | |||
try: | |||
import msgpack_numpy | |||
DEFAULT_SERIALIZER = 'msgpack' | |||
except: | |||
pass | |||
# import jsonpickle | |||
# import yaml | |||
|
r568 | ||
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) | |||
|
r703 | # 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) | |||
|
r568 | ||
class DynamicSerializer(Serializer): | |||
|
r703 | def __init__(self, module = None): | |
|
r568 | ||
|
r703 | if not DEFAULT_SERIALIZER: | |
raise ImportError, "Install a python serializer like cPickle or msgpack" | |||
|
r800 | if not module: | |
module == DEFAULT_SERIALIZER | |||
|
r703 | ||
|
r800 | if module == 'cPickle': | |
|
r568 | self.serializer = cPickleSerializer() | |
|
r703 | # | |
|
r800 | # if module == 'jsonpickle': | |
|
r703 | # self.serializer = jsonpickleSerializer() | |
# | |||
|
r800 | # if module == 'yaml': | |
|
r703 | # self.serializer = yamlSerializer() | |
|
r568 | ||
|
r800 | if module == 'msgpack': | |
|
r568 | self.serializer = msgpackSerializer() | |
if __name__ == '__main__': | |||
pass |