You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
961 B
45 lines
961 B
"""
|
|
get/put functions that consume/produce Python lists using msgpack or pickle
|
|
to serialize.
|
|
|
|
First we try msgpack (it's faster). If that fails then we default to pickle.
|
|
"""
|
|
from __future__ import absolute_import
|
|
from .compatibility import pickle
|
|
|
|
try:
|
|
from pandas import msgpack
|
|
except ImportError:
|
|
try:
|
|
import msgpack
|
|
except ImportError:
|
|
msgpack = False
|
|
|
|
|
|
from .encode import Encode
|
|
from functools import partial
|
|
|
|
|
|
def dumps(x):
|
|
try:
|
|
return msgpack.packb(x, use_bin_type=True)
|
|
except:
|
|
return pickle.dumps(x, protocol=pickle.HIGHEST_PROTOCOL)
|
|
|
|
def loads(x):
|
|
try:
|
|
if msgpack.version >= (0, 5, 2):
|
|
unpack_kwargs = {'raw': False}
|
|
else:
|
|
unpack_kwargs = {'encoding': 'utf-8'}
|
|
return msgpack.unpackb(x, **unpack_kwargs)
|
|
except:
|
|
return pickle.loads(x)
|
|
|
|
|
|
def concat(lists):
|
|
return sum(lists, [])
|
|
|
|
|
|
Python = partial(Encode, dumps, loads, concat)
|