diff --git a/src/calibre/utils/complete.py b/src/calibre/utils/complete.py index d688033fce..2f3ec79695 100644 --- a/src/calibre/utils/complete.py +++ b/src/calibre/utils/complete.py @@ -117,7 +117,7 @@ class EbookConvert(object): self.previous = words[-2 if prefix else -1] from calibre.utils.serialize import msgpack_loads self.cache = msgpack_loads(open(os.path.join(sys.resources_location, - 'ebook-convert-complete.calibre_msgpack'), 'rb').read()) + 'ebook-convert-complete.calibre_msgpack'), 'rb').read(), use_list=False) self.complete(wc) def complete(self, wc): diff --git a/src/calibre/utils/serialize.py b/src/calibre/utils/serialize.py index d54d6d6885..f5d560c468 100644 --- a/src/calibre/utils/serialize.py +++ b/src/calibre/utils/serialize.py @@ -107,9 +107,10 @@ def msgpack_decoder(code, data): return decoders[code](msgpack_loads(data), False) -def msgpack_loads(dump): +def msgpack_loads(dump, use_list=True): + # use_list controls whether msgpack arrays are unpacked as lists or tuples import msgpack - return msgpack.unpackb(dump, ext_hook=msgpack_decoder, raw=False) + return msgpack.unpackb(dump, ext_hook=msgpack_decoder, raw=False, use_list=use_list) def json_loads(data):