From 8e853a3ff8b8c08266808511bddbe9a3331e67e0 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Mon, 4 Feb 2019 23:48:51 -0500 Subject: [PATCH] python3: add polyglot compat layer for builtins / __builtin__ --- src/calibre/__init__.py | 5 +++-- src/calibre/gui2/wizard/__init__.py | 4 ++-- src/calibre/startup.py | 16 ++++++++-------- src/calibre/utils/resources.py | 7 ++++--- src/polyglot/builtins.py | 9 ++++++--- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py index d72b709f07..6665dd38db 100644 --- a/src/calibre/__init__.py +++ b/src/calibre/__init__.py @@ -3,8 +3,9 @@ __license__ = 'GPL v3' __copyright__ = '2008, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import sys, os, re, time, random, __builtin__, warnings -__builtin__.__dict__['dynamic_property'] = lambda func: func(None) +import sys, os, re, time, random, warnings +from polyglot.builtins import builtins +builtins.__dict__['dynamic_property'] = lambda func: func(None) from math import floor from functools import partial diff --git a/src/calibre/gui2/wizard/__init__.py b/src/calibre/gui2/wizard/__init__.py index 0fb0d7efb4..39b9aaa119 100644 --- a/src/calibre/gui2/wizard/__init__.py +++ b/src/calibre/gui2/wizard/__init__.py @@ -689,8 +689,8 @@ class LibraryPage(QWizardPage, LibraryUI): def change_language(self, idx): prefs['language'] = str(self.language.itemData(self.language.currentIndex()) or '') - import __builtin__ - __builtin__.__dict__['_'] = lambda x: x + from polyglot.builtins import builtins + builtins.__dict__['_'] = lambda x: x from calibre.utils.localization import set_translators from calibre.gui2 import qt_app from calibre.ebooks.metadata.book.base import reset_field_metadata diff --git a/src/calibre/startup.py b/src/calibre/startup.py index b1be5025f7..481d8780ab 100644 --- a/src/calibre/startup.py +++ b/src/calibre/startup.py @@ -10,12 +10,12 @@ Perform various initialization tasks. import locale, sys # Default translation is NOOP -import __builtin__ -__builtin__.__dict__['_'] = lambda s: s +from polyglot.builtins import builtins +builtins.__dict__['_'] = lambda s: s # For strings which belong in the translation tables, but which shouldn't be # immediately translated to the environment language -__builtin__.__dict__['__'] = lambda s: s +builtins.__dict__['__'] = lambda s: s from calibre.constants import iswindows, preferred_encoding, plugins, isosx, islinux, isfrozen, DEBUG, isfreebsd @@ -161,12 +161,12 @@ if not _run_once: supports_mode_e = True return ans - __builtin__.__dict__['lopen'] = local_open + builtins.__dict__['lopen'] = local_open from calibre.utils.icu import title_case, lower as icu_lower, upper as icu_upper - __builtin__.__dict__['icu_lower'] = icu_lower - __builtin__.__dict__['icu_upper'] = icu_upper - __builtin__.__dict__['icu_title'] = title_case + builtins.__dict__['icu_lower'] = icu_lower + builtins.__dict__['icu_upper'] = icu_upper + builtins.__dict__['icu_title'] = title_case def connect_lambda(bound_signal, self, func, **kw): import weakref @@ -184,7 +184,7 @@ if not _run_once: func(ctx, *args) bound_signal.connect(slot, **kw) - __builtin__.__dict__['connect_lambda'] = connect_lambda + builtins.__dict__['connect_lambda'] = connect_lambda if islinux or isosx or isfreebsd: # Name all threads at the OS level created using the threading module, see diff --git a/src/calibre/utils/resources.py b/src/calibre/utils/resources.py index 4b2952c92f..0a7c2fb56c 100644 --- a/src/calibre/utils/resources.py +++ b/src/calibre/utils/resources.py @@ -8,9 +8,10 @@ __copyright__ = '2009, Kovid Goyal ' __docformat__ = 'restructuredtext en' -import __builtin__, sys, os +import sys, os from calibre import config_dir +from polyglot.builtins import builtins class PathResolver(object): @@ -150,5 +151,5 @@ def load_hyphenator_dicts(hp_cache, lang, default_lang='en'): return js, lang -__builtin__.__dict__['P'] = get_path -__builtin__.__dict__['I'] = get_image_path +builtins.__dict__['P'] = get_path +builtins.__dict__['I'] = get_image_path diff --git a/src/polyglot/builtins.py b/src/polyglot/builtins.py index 6f4fc35ddd..2872b24009 100644 --- a/src/polyglot/builtins.py +++ b/src/polyglot/builtins.py @@ -20,9 +20,11 @@ if is_py3: value = None tb = None - zip = __builtins__['zip'] - map = __builtins__['map'] - filter = __builtins__['filter'] + import builtins + + zip = builtins.__dict__['zip'] + map = builtins.__dict__['map'] + filter = builtins.__dict__['filter'] def iteritems(d): return iter(d.items()) @@ -42,6 +44,7 @@ else: """) from future_builtins import zip, map, filter # noqa + import __builtin__ as builtins def iteritems(d): return d.iteritems()