From 8311f0a8d3e4e33c90c9b26d0b3f389b7dbe7ed0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 16 Oct 2020 20:02:57 +0530 Subject: [PATCH] Cleanup calibre initialization --- src/calibre/__init__.py | 5 +++-- src/calibre/startup.py | 26 +++++++------------------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index 3354796305..22a670dd3a 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -19,13 +19,14 @@ except EnvironmentError: from calibre.constants import (iswindows, ismacos, islinux, isfrozen, isbsd, preferred_encoding, __appname__, __version__, __author__, plugins, filesystem_encoding, config_dir) -from calibre.startup import get_debug_executable +from calibre.startup import initialize_calibre +initialize_calibre() from calibre.utils.icu import safe_chr from calibre.prints import prints if False: # Prevent pyflakes from complaining - get_debug_executable, __appname__, islinux, __version__ + __appname__, islinux, __version__ isfrozen, __author__, isbsd, config_dir, plugins _mt_inited = False diff --git a/src/calibre/startup.py b/src/calibre/startup.py index 6802f04862..571ad82753 100644 --- a/src/calibre/startup.py +++ b/src/calibre/startup.py @@ -20,10 +20,7 @@ builtins.__dict__['__'] = lambda s: s # For backwards compat with some third party plugins builtins.__dict__['dynamic_property'] = lambda func: func(None) - -from calibre.constants import iswindows, preferred_encoding, plugins, ismacos, islinux, DEBUG, isfreebsd - -_run_once = False +from calibre.constants import iswindows, plugins, ismacos, islinux, DEBUG, isfreebsd def get_debug_executable(): @@ -46,8 +43,11 @@ def get_debug_executable(): return [exe_name] -if not _run_once: - _run_once = True +def initialize_calibre(): + if hasattr(initialize_calibre, 'initialized'): + return + initialize_calibre.initialized = True + # Ensure that all temp files/dirs are created under a calibre tmp dir from calibre.ptempfile import base_dir try: @@ -55,15 +55,6 @@ if not _run_once: except EnvironmentError: pass # Ignore this error during startup, so we can show a better error message to the user later. - # - # Convert command line arguments to unicode - enc = preferred_encoding - if ismacos: - enc = 'utf-8' - for i in range(1, len(sys.argv)): - if not isinstance(sys.argv[i], unicode_type): - sys.argv[i] = sys.argv[i].decode(enc, 'replace') - # # Ensure that the max number of open files is at least 1024 if iswindows: @@ -130,10 +121,7 @@ if not _run_once: except: pass - # local_open() opens a file that wont be inherited by child processes - local_open = open # PEP 446 - builtins.__dict__['lopen'] = local_open - + builtins.__dict__['lopen'] = open # legacy compatibility from calibre.utils.icu import title_case, lower as icu_lower, upper as icu_upper builtins.__dict__['icu_lower'] = icu_lower builtins.__dict__['icu_upper'] = icu_upper