mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Revert changes to delay loading
This commit is contained in:
parent
88c3b111d7
commit
d8cf28ae1b
@ -10,7 +10,6 @@ __docformat__ = 'restructuredtext en'
|
|||||||
|
|
||||||
import inspect, re, traceback
|
import inspect, re, traceback
|
||||||
from math import trunc
|
from math import trunc
|
||||||
from threading import RLock
|
|
||||||
|
|
||||||
from calibre import human_readable
|
from calibre import human_readable
|
||||||
from calibre.constants import DEBUG
|
from calibre.constants import DEBUG
|
||||||
@ -26,15 +25,6 @@ class FormatterFunctions(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._builtins = {}
|
self._builtins = {}
|
||||||
self._functions = {}
|
self._functions = {}
|
||||||
self._lock = RLock()
|
|
||||||
self._loaded = False
|
|
||||||
|
|
||||||
def load_builtins(self):
|
|
||||||
with self._lock:
|
|
||||||
if not self._loaded:
|
|
||||||
self._loaded = True
|
|
||||||
for c in _formatter_builtins:
|
|
||||||
c()
|
|
||||||
|
|
||||||
def register_builtin(self, func_class):
|
def register_builtin(self, func_class):
|
||||||
if not isinstance(func_class, FormatterFunction):
|
if not isinstance(func_class, FormatterFunction):
|
||||||
@ -49,7 +39,6 @@ class FormatterFunctions(object):
|
|||||||
self._functions[a] = func_class
|
self._functions[a] = func_class
|
||||||
|
|
||||||
def register_function(self, func_class):
|
def register_function(self, func_class):
|
||||||
self.load_builtins()
|
|
||||||
if not isinstance(func_class, FormatterFunction):
|
if not isinstance(func_class, FormatterFunction):
|
||||||
raise ValueError('Class %s is not an instance of FormatterFunction'%(
|
raise ValueError('Class %s is not an instance of FormatterFunction'%(
|
||||||
func_class.__class__.__name__))
|
func_class.__class__.__name__))
|
||||||
@ -59,11 +48,9 @@ class FormatterFunctions(object):
|
|||||||
self._functions[name] = func_class
|
self._functions[name] = func_class
|
||||||
|
|
||||||
def get_builtins(self):
|
def get_builtins(self):
|
||||||
self.load_builtins()
|
|
||||||
return self._builtins
|
return self._builtins
|
||||||
|
|
||||||
def get_builtins_and_aliases(self):
|
def get_builtins_and_aliases(self):
|
||||||
self.load_builtins()
|
|
||||||
res = {}
|
res = {}
|
||||||
for f in self._builtins.itervalues():
|
for f in self._builtins.itervalues():
|
||||||
res[f.name] = f
|
res[f.name] = f
|
||||||
@ -72,12 +59,10 @@ class FormatterFunctions(object):
|
|||||||
return res
|
return res
|
||||||
|
|
||||||
def get_functions(self):
|
def get_functions(self):
|
||||||
self.load_builtins()
|
|
||||||
return self._functions
|
return self._functions
|
||||||
|
|
||||||
def reset_to_builtins(self):
|
def reset_to_builtins(self):
|
||||||
self._functions = {}
|
self._functions = {}
|
||||||
self.load_builtins()
|
|
||||||
for n,c in self._builtins.items():
|
for n,c in self._builtins.items():
|
||||||
self._functions[n] = c
|
self._functions[n] = c
|
||||||
for a in c.aliases:
|
for a in c.aliases:
|
||||||
@ -1225,27 +1210,27 @@ class BuiltinFinishFormatting(BuiltinFormatterFunction):
|
|||||||
return prefix + formatter._do_format(val, fmt) + suffix
|
return prefix + formatter._do_format(val, fmt) + suffix
|
||||||
|
|
||||||
_formatter_builtins = [
|
_formatter_builtins = [
|
||||||
BuiltinAdd, BuiltinAnd, BuiltinApproximateFormats,
|
BuiltinAdd(), BuiltinAnd(), BuiltinApproximateFormats(),
|
||||||
BuiltinAssign, BuiltinBooksize,
|
BuiltinAssign(), BuiltinBooksize(),
|
||||||
BuiltinCapitalize, BuiltinCmp, BuiltinContains, BuiltinCount,
|
BuiltinCapitalize(), BuiltinCmp(), BuiltinContains(), BuiltinCount(),
|
||||||
BuiltinCurrentLibraryName, BuiltinCurrentLibraryPath,
|
BuiltinCurrentLibraryName(), BuiltinCurrentLibraryPath(),
|
||||||
BuiltinDaysBetween, BuiltinDivide, BuiltinEval, BuiltinFirstNonEmpty,
|
BuiltinDaysBetween(), BuiltinDivide(), BuiltinEval(), BuiltinFirstNonEmpty(),
|
||||||
BuiltinField, BuiltinFinishFormatting, BuiltinFormatDate,
|
BuiltinField(), BuiltinFinishFormatting(), BuiltinFormatDate(),
|
||||||
BuiltinFormatNumber, BuiltinFormatsModtimes, BuiltinFormatsPaths,
|
BuiltinFormatNumber(), BuiltinFormatsModtimes(), BuiltinFormatsPaths(),
|
||||||
BuiltinFormatsSizes,
|
BuiltinFormatsSizes(),
|
||||||
BuiltinHasCover, BuiltinHumanReadable, BuiltinIdentifierInList,
|
BuiltinHasCover(), BuiltinHumanReadable(), BuiltinIdentifierInList(),
|
||||||
BuiltinIfempty, BuiltinLanguageCodes, BuiltinLanguageStrings,
|
BuiltinIfempty(), BuiltinLanguageCodes(), BuiltinLanguageStrings(),
|
||||||
BuiltinInList, BuiltinListDifference, BuiltinListEquals,
|
BuiltinInList(), BuiltinListDifference(), BuiltinListEquals(),
|
||||||
BuiltinListIntersection, BuiltinListitem, BuiltinListRe,
|
BuiltinListIntersection(), BuiltinListitem(), BuiltinListRe(),
|
||||||
BuiltinListSort, BuiltinListUnion, BuiltinLookup,
|
BuiltinListSort(), BuiltinListUnion(), BuiltinLookup(),
|
||||||
BuiltinLowercase, BuiltinMultiply, BuiltinNot,
|
BuiltinLowercase(), BuiltinMultiply(), BuiltinNot(),
|
||||||
BuiltinOndevice, BuiltinOr, BuiltinPrint, BuiltinRawField,
|
BuiltinOndevice(), BuiltinOr(), BuiltinPrint(), BuiltinRawField(),
|
||||||
BuiltinRe, BuiltinSelect, BuiltinSeriesSort, BuiltinShorten,
|
BuiltinRe(), BuiltinSelect(), BuiltinSeriesSort(), BuiltinShorten(),
|
||||||
BuiltinStrcat, BuiltinStrcatMax,
|
BuiltinStrcat(), BuiltinStrcatMax(),
|
||||||
BuiltinStrcmp, BuiltinStrInList, BuiltinStrlen, BuiltinSubitems,
|
BuiltinStrcmp(), BuiltinStrInList(), BuiltinStrlen(), BuiltinSubitems(),
|
||||||
BuiltinSublist,BuiltinSubstr, BuiltinSubtract, BuiltinSwapAroundComma,
|
BuiltinSublist(),BuiltinSubstr(), BuiltinSubtract(), BuiltinSwapAroundComma(),
|
||||||
BuiltinSwitch, BuiltinTemplate, BuiltinTest, BuiltinTitlecase,
|
BuiltinSwitch(), BuiltinTemplate(), BuiltinTest(), BuiltinTitlecase(),
|
||||||
BuiltinToday, BuiltinUppercase,
|
BuiltinToday(), BuiltinUppercase(),
|
||||||
]
|
]
|
||||||
|
|
||||||
class FormatterUserFunction(FormatterFunction):
|
class FormatterUserFunction(FormatterFunction):
|
||||||
@ -1275,11 +1260,10 @@ class UserFunction(FormatterUserFunction):
|
|||||||
return cls
|
return cls
|
||||||
|
|
||||||
def load_user_template_functions(funcs):
|
def load_user_template_functions(funcs):
|
||||||
if funcs:
|
formatter_functions().reset_to_builtins()
|
||||||
formatter_functions().reset_to_builtins()
|
for func in funcs:
|
||||||
for func in funcs:
|
try:
|
||||||
try:
|
cls = compile_user_function(*func)
|
||||||
cls = compile_user_function(*func)
|
formatter_functions().register_function(cls)
|
||||||
formatter_functions().register_function(cls)
|
except:
|
||||||
except:
|
traceback.print_exc()
|
||||||
traceback.print_exc()
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user