diff --git a/src/calibre/utils/formatter_functions.py b/src/calibre/utils/formatter_functions.py index 005e1a6932..4e4a2c22a8 100644 --- a/src/calibre/utils/formatter_functions.py +++ b/src/calibre/utils/formatter_functions.py @@ -295,8 +295,8 @@ class FormatterFunction: class BuiltinFormatterFunction(FormatterFunction): - def __init__(self): - formatter_functions().register_builtin(self) + def __init_subclass__(cls): + formatter_functions().register_builtin(cls()) class BuiltinStrcmp(BuiltinFormatterFunction): @@ -3843,12 +3843,6 @@ returns `Foo, book 3 of 5` raise ValueError(_('This function cannot be called directly. It is built into the formatter')) -# Registering builtins -for obj in list(globals().values()): - if isinstance(obj, type) and issubclass(obj, BuiltinFormatterFunction) and obj is not BuiltinFormatterFunction: - obj() - - class FormatterUserFunction(FormatterFunction): def __init__(self, name, doc, arg_count, program_text, object_type):