Replace more uses of plugins dict

This commit is contained in:
Kovid Goyal 2020-10-18 09:33:09 +05:30
parent 983bb2aabb
commit 830b1a94e6
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
9 changed files with 19 additions and 39 deletions

View File

@ -8,12 +8,8 @@ __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
import io import io
from struct import pack from struct import pack
from calibre.constants import plugins
from polyglot.builtins import range from polyglot.builtins import range
cPalmdoc = plugins['cPalmdoc'][0] from calibre_extensions import cPalmdoc
if not cPalmdoc:
raise RuntimeError(('Failed to load required cPalmdoc module: '
'%s')%plugins['cPalmdoc'][1])
def decompress_doc(data): def decompress_doc(data):

View File

@ -14,16 +14,14 @@ import sys
import struct import struct
from calibre.ebooks.djvu.djvubzzdec import BZZDecoder from calibre.ebooks.djvu.djvubzzdec import BZZDecoder
from calibre.constants import plugins
class DjvuChunk(object): class DjvuChunk(object):
def __init__(self, buf, start, end, align=True, bigendian=True, def __init__(self, buf, start, end, align=True, bigendian=True,
inclheader=False, verbose=0): inclheader=False, verbose=0):
self.speedup, err = plugins['bzzdec'] from calibre_extensions import speedup
if self.speedup is None: self.speedup = speedup
raise RuntimeError('Failed to load bzzdec plugin: %s' % err)
self.subtype = None self.subtype = None
self._subchunks = [] self._subchunks = []
self.buf = buf self.buf = buf

View File

@ -733,10 +733,9 @@ class BZZDecoder():
# for testing # for testing
def main(): def main():
import sys import sys
from calibre.constants import plugins from calibre_extensions import bzzdec as d
with open(sys.argv[1], "rb") as f: with open(sys.argv[1], "rb") as f:
raw = f.read() raw = f.read()
d = plugins['bzzdec'][0]
print(d.decompress(raw)) print(d.decompress(raw))

View File

@ -7,11 +7,7 @@ LZX compression/decompression wrapper.
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2008, Marshall T. Vandegrift <llasram@gmail.com>' __copyright__ = '2008, Marshall T. Vandegrift <llasram@gmail.com>'
from calibre.constants import plugins from calibre_extensions import lzx as _lzx
_lzx, _error = plugins['lzx']
if _lzx is None:
raise RuntimeError('Failed to load the lzx plugin: %s' % _error)
__all__ = ['Compressor', 'Decompressor', 'LZXError'] __all__ = ['Compressor', 'Decompressor', 'LZXError']

View File

@ -17,12 +17,9 @@ import calibre.ebooks.lit.mssha1 as mssha1
from calibre.ebooks.oeb.base import urlnormalize, xpath from calibre.ebooks.oeb.base import urlnormalize, xpath
from calibre.ebooks.oeb.reader import OEBReader from calibre.ebooks.oeb.reader import OEBReader
from calibre.ebooks import DRMError from calibre.ebooks import DRMError
from calibre.constants import plugins
from polyglot.builtins import codepoint_to_chr, unicode_type, string_or_bytes, range, itervalues from polyglot.builtins import codepoint_to_chr, unicode_type, string_or_bytes, range, itervalues
from polyglot.urllib import unquote as urlunquote, urldefrag from polyglot.urllib import unquote as urlunquote, urldefrag
from calibre_extensions import lzx, msdes
lzx, lxzerror = plugins['lzx']
msdes, msdeserror = plugins['msdes']
__all__ = ["LitReader"] __all__ = ["LitReader"]

View File

@ -27,8 +27,7 @@ from calibre.ebooks.oeb.base import prefixname, \
from calibre.ebooks.oeb.stylizer import Stylizer from calibre.ebooks.oeb.stylizer import Stylizer
from calibre.ebooks.lit.lzx import Compressor from calibre.ebooks.lit.lzx import Compressor
import calibre import calibre
from calibre.constants import plugins from calibre_extensions import msdes
msdes, msdeserror = plugins['msdes']
import calibre.ebooks.lit.mssha1 as mssha1 import calibre.ebooks.lit.mssha1 as mssha1
from polyglot.builtins import codepoint_to_chr, unicode_type, string_or_bytes, range, zip, native_string_type from polyglot.builtins import codepoint_to_chr, unicode_type, string_or_bytes, range, zip, native_string_type
from polyglot.urllib import urldefrag, unquote from polyglot.urllib import urldefrag, unquote

View File

@ -10,12 +10,10 @@ import codecs, zlib, numbers
from io import BytesIO from io import BytesIO
from datetime import datetime from datetime import datetime
from calibre.constants import plugins
from calibre.utils.logging import default_log from calibre.utils.logging import default_log
from polyglot.builtins import iteritems, unicode_type, codepoint_to_chr from polyglot.builtins import iteritems, unicode_type, codepoint_to_chr
from polyglot.binary import as_hex_bytes from polyglot.binary import as_hex_bytes
from calibre_extensions.speedup import pdf_float
pdf_float = plugins['speedup'][0].pdf_float
EOL = b'\n' EOL = b'\n'

View File

@ -8,14 +8,13 @@ import os
import re import re
import shutil import shutil
import sys import sys
from calibre_extensions import hunspell
from collections import defaultdict, namedtuple from collections import defaultdict, namedtuple
from functools import partial from functools import partial
from itertools import chain from itertools import chain
from calibre import prints from calibre import prints
from calibre.constants import ( from calibre.constants import config_dir, filesystem_encoding, iswindows
config_dir, filesystem_encoding, iswindows, plugins
)
from calibre.spell import parse_lang_code from calibre.spell import parse_lang_code
from calibre.utils.config import JSONConfig from calibre.utils.config import JSONConfig
from calibre.utils.icu import capitalize from calibre.utils.icu import capitalize
@ -24,9 +23,6 @@ from polyglot.builtins import filter, iteritems, itervalues, map, unicode_type
Dictionary = namedtuple('Dictionary', 'primary_locale locales dicpath affpath builtin name id') Dictionary = namedtuple('Dictionary', 'primary_locale locales dicpath affpath builtin name id')
LoadedDictionary = namedtuple('Dictionary', 'primary_locale locales obj builtin name id') LoadedDictionary = namedtuple('Dictionary', 'primary_locale locales obj builtin name id')
hunspell = plugins['hunspell'][0]
if hunspell is None:
raise RuntimeError('Failed to load hunspell: %s' % plugins['hunspell'][1])
dprefs = JSONConfig('dictionaries/prefs.json') dprefs = JSONConfig('dictionaries/prefs.json')
dprefs.defaults['preferred_dictionaries'] = {} dprefs.defaults['preferred_dictionaries'] = {}
dprefs.defaults['preferred_locales'] = {} dprefs.defaults['preferred_locales'] = {}

View File

@ -12,7 +12,7 @@ Test a binary calibre build to ensure that all needed binary images/libraries ha
import os, ctypes, sys, unittest, time, shutil import os, ctypes, sys, unittest, time, shutil
from calibre.constants import plugins, iswindows, islinux, ismacos, plugins_loc from calibre.constants import iswindows, islinux, ismacos, plugins_loc
from polyglot.builtins import iteritems, map, unicode_type, getenv from polyglot.builtins import iteritems, map, unicode_type, getenv
is_ci = os.environ.get('CI', '').lower() == 'true' is_ci = os.environ.get('CI', '').lower() == 'true'
@ -22,7 +22,8 @@ class BuildTest(unittest.TestCase):
@unittest.skipUnless(iswindows and not is_ci, 'DLL loading needs testing only on windows (non-continuous integration)') @unittest.skipUnless(iswindows and not is_ci, 'DLL loading needs testing only on windows (non-continuous integration)')
def test_dlls(self): def test_dlls(self):
base = plugins['winutil'][0].get_dll_directory() from calibre_extensions import winutil
base = winutil.get_dll_directory()
for x in os.listdir(base): for x in os.listdir(base):
if x.lower().endswith('.dll'): if x.lower().endswith('.dll'):
try: try:
@ -105,14 +106,15 @@ class BuildTest(unittest.TestCase):
if islinux and not os.path.exists('/dev/bus/usb'): if islinux and not os.path.exists('/dev/bus/usb'):
# libusb fails to initialize in containers without USB subsystems # libusb fails to initialize in containers without USB subsystems
exclusions.update(set('libusb libmtp'.split())) exclusions.update(set('libusb libmtp'.split()))
for name in plugins: from importlib import import_module
from importlib.resources import contents
for name in contents('calibre_extensions'):
if name in exclusions: if name in exclusions:
if name in ('libusb', 'libmtp'): if name in ('libusb', 'libmtp'):
# Just check that the DLL can be loaded # Just check that the DLL can be loaded
ctypes.CDLL(os.path.join(plugins_loc, name + ('.dylib' if ismacos else '.so'))) ctypes.CDLL(os.path.join(plugins_loc, name + ('.dylib' if ismacos else '.so')))
continue continue
mod, err = plugins[name] import_module('calibre_extensions.' + name)
self.assertTrue(mod, f'Failed to load plugin: {name} with error: {err}')
def test_lxml(self): def test_lxml(self):
from calibre.utils.cleantext import test_clean_xml_chars from calibre.utils.cleantext import test_clean_xml_chars
@ -147,9 +149,8 @@ class BuildTest(unittest.TestCase):
@unittest.skipUnless(iswindows, 'winutil is windows only') @unittest.skipUnless(iswindows, 'winutil is windows only')
def test_winutil(self): def test_winutil(self):
import tempfile import tempfile
from calibre.constants import plugins
from calibre import strftime from calibre import strftime
winutil = plugins['winutil'][0] from calibre_extensions import winutil
def au(x, name): def au(x, name):
self.assertTrue( self.assertTrue(
@ -363,7 +364,7 @@ class BuildTest(unittest.TestCase):
@unittest.skipUnless(iswindows, 'WPD is windows only') @unittest.skipUnless(iswindows, 'WPD is windows only')
def test_wpd(self): def test_wpd(self):
wpd = plugins['wpd'][0] from calibre_extensions import wpd
try: try:
wpd.init('calibre', 1, 1, 1) wpd.init('calibre', 1, 1, 1)
except wpd.NoWPD: except wpd.NoWPD: