Move more databases to msgpack instead of pickle

This commit is contained in:
Kovid Goyal 2018-09-10 18:35:19 +05:30
parent 8b3ea8fb83
commit b9767b2b92
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 18 additions and 14 deletions

4
.gitignore vendored
View File

@ -14,8 +14,8 @@ build
dist dist
docs docs
resources/localization resources/localization
resources/scripts.pickle resources/scripts.calibre_msgpack
resources/ebook-convert-complete.pickle resources/ebook-convert-complete.calibre_msgpack
resources/builtin_recipes.xml resources/builtin_recipes.xml
resources/builtin_recipes.zip resources/builtin_recipes.zip
resources/template-functions.json resources/template-functions.json

View File

@ -7,7 +7,7 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import os, re, shutil, zipfile, glob, time, sys, hashlib, json, errno, cPickle import os, re, shutil, zipfile, glob, time, sys, hashlib, json, errno
from zlib import compress from zlib import compress
from itertools import chain from itertools import chain
is_ci = os.environ.get('CI', '').lower() == 'true' is_ci = os.environ.get('CI', '').lower() == 'true'
@ -297,11 +297,12 @@ class Resources(Command): # {{{
continue continue
scripts[name] = x scripts[name] = x
dest = self.j(self.RESOURCES, 'scripts.pickle') dest = self.j(self.RESOURCES, 'scripts.calibre_msgpack')
if self.newer(dest, self.j(self.SRC, 'calibre', 'linux.py')): if self.newer(dest, self.j(self.SRC, 'calibre', 'linux.py')):
self.info('\tCreating scripts.pickle') self.info('\tCreating ' + os.path.basename(dest))
f = open(dest, 'wb') from calibre.utils.serialize import msgpack_dumps
cPickle.dump(scripts, f, -1) with open(dest, 'wb') as f:
f.write(msgpack_dumps(scripts))
from calibre.web.feeds.recipes.collection import \ from calibre.web.feeds.recipes.collection import \
serialize_builtin_recipes, iterate_over_builtin_recipe_files serialize_builtin_recipes, iterate_over_builtin_recipe_files
@ -326,7 +327,7 @@ class Resources(Command): # {{{
with open(n, 'rb') as f: with open(n, 'rb') as f:
zf.writestr(os.path.basename(n), f.read()) zf.writestr(os.path.basename(n), f.read())
dest = self.j(self.RESOURCES, 'ebook-convert-complete.pickle') dest = self.j(self.RESOURCES, 'ebook-convert-complete.calibre_msgpack')
files = [] files = []
for x in os.walk(self.j(self.SRC, 'calibre')): for x in os.walk(self.j(self.SRC, 'calibre')):
for f in x[-1]: for f in x[-1]:
@ -356,7 +357,8 @@ class Resources(Command): # {{{
complete[(inf, ouf)] = [x+' 'for x in complete[(inf, ouf)] = [x+' 'for x in
get_opts_from_parser(p)] get_opts_from_parser(p)]
cPickle.dump(complete, open(dest, 'wb'), -1) with open(dest, 'wb') as f:
f.write(msgpack_dumps(complete))
self.info('\tCreating template-functions.json') self.info('\tCreating template-functions.json')
dest = self.j(self.RESOURCES, 'template-functions.json') dest = self.j(self.RESOURCES, 'template-functions.json')

View File

@ -4,7 +4,7 @@ __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
''' Post installation script for linux ''' ''' Post installation script for linux '''
import sys, os, cPickle, textwrap, stat, errno import sys, os, textwrap, stat, errno
from subprocess import check_call, check_output from subprocess import check_call, check_output
from functools import partial from functools import partial
@ -672,7 +672,8 @@ class PostInstall:
self.opts.staging_etc = '/etc' if self.opts.staging_root == '/usr' else \ self.opts.staging_etc = '/etc' if self.opts.staging_root == '/usr' else \
os.path.join(self.opts.staging_root, 'etc') os.path.join(self.opts.staging_root, 'etc')
scripts = cPickle.loads(P('scripts.pickle', data=True)) from calibre.utils.serialize import msgpack_loads
scripts = msgpack_loads(P('scripts.calibre_msgpack', data=True))
self.manifest = manifest or [] self.manifest = manifest or []
if getattr(sys, 'frozen_path', False): if getattr(sys, 'frozen_path', False):
if os.access(self.opts.staging_bindir, os.W_OK): if os.access(self.opts.staging_bindir, os.W_OK):

View File

@ -12,7 +12,7 @@ BASH completion for calibre commands that are too complex for simple
completion. completion.
''' '''
import sys, os, shlex, glob, re, cPickle import sys, os, shlex, glob, re
def prints(*args, **kwargs): def prints(*args, **kwargs):
@ -113,8 +113,9 @@ class EbookConvert(object):
self.words = words self.words = words
self.prefix = prefix self.prefix = prefix
self.previous = words[-2 if prefix else -1] self.previous = words[-2 if prefix else -1]
self.cache = cPickle.load(open(os.path.join(sys.resources_location, from calibre.utils.serialize import msgpack_loads
'ebook-convert-complete.pickle'), 'rb')) self.cache = msgpack_loads(open(os.path.join(sys.resources_location,
'ebook-convert-complete.calibre_msgpack'), 'rb').read())
self.complete(wc) self.complete(wc)
def complete(self, wc): def complete(self, wc):