diff --git a/src/calibre/db/adding.py b/src/calibre/db/adding.py index febd2dda5c..2376e229c8 100644 --- a/src/calibre/db/adding.py +++ b/src/calibre/db/adding.py @@ -8,7 +8,7 @@ __copyright__ = '2013, Kovid Goyal ' import os, time, re from collections import defaultdict -from polyglot.builtins import itervalues, map, unicode_type +from polyglot.builtins import itervalues, map as it_map, unicode_type from contextlib import contextmanager from functools import partial @@ -69,7 +69,7 @@ def metadata_extensions(): # but not actually added) global _metadata_extensions if _metadata_extensions is None: - _metadata_extensions = frozenset(map(unicode_type, BOOK_EXTENSIONS)) | {'opf'} + _metadata_extensions = frozenset(it_map(unicode_type, BOOK_EXTENSIONS)) | {'opf'} return _metadata_extensions diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index d6504520ea..20d2c05eb3 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -11,7 +11,7 @@ import os, traceback, random, shutil, operator from io import BytesIO from collections import defaultdict, Set, MutableSet from functools import wraps, partial -from polyglot.builtins import iteritems, itervalues, unicode_type, zip, string_or_bytes, cmp, filter +from polyglot.builtins import iteritems, itervalues, unicode_type, zip, string_or_bytes, cmp from time import time from calibre import isbytestring, as_unicode @@ -186,7 +186,7 @@ class Cache(object): # There is a chance that these can be duplicates of an existing # user category. Print the exception and continue. try: - self.field_metadata.add_user_category(label=u'@' + cat, name=cat) + self.field_metadata.add_user_category(label='@' + cat, name=cat) except ValueError: traceback.print_exc() self._ensure_has_search_category() @@ -1513,7 +1513,7 @@ class Cache(object): for aut in authors: aid = rmap.get(key_func(aut), None) result.append(author_to_author_sort(aut) if aid is None else table.asort_map[aid]) - return ' & '.join(filter(None, result)) + return ' & '.join(_f for _f in result if _f) @read_api def data_for_has_book(self): @@ -1975,7 +1975,7 @@ class Cache(object): title (title is fuzzy matched). See also :meth:`data_for_find_identical_books`. ''' from calibre.db.utils import fuzzy_title identical_book_ids = set() - langq = tuple(filter(lambda x: x and x != 'und', map(canonicalize_lang, mi.languages or ()))) + langq = tuple(x for x in map(canonicalize_lang, mi.languages or ()) if x and x != 'und') if mi.authors: try: quathors = mi.authors[:20] # Too many authors causes parsing of the search expression to fail diff --git a/src/calibre/debug.py b/src/calibre/debug.py index e0566fae42..ab80c157de 100644 --- a/src/calibre/debug.py +++ b/src/calibre/debug.py @@ -165,8 +165,8 @@ def reinit_db(dbpath): def debug_device_driver(): from calibre.devices import debug debug(ioreg_to_tmp=True, buf=sys.stdout) - if iswindows: - raw_input('Press Enter to continue...') + if iswindows: # no2to3 + raw_input('Press Enter to continue...') # no2to3 def add_simple_plugin(path_to_plugin): diff --git a/src/calibre/linux.py b/src/calibre/linux.py index e4f92ad1dc..f3cb635251 100644 --- a/src/calibre/linux.py +++ b/src/calibre/linux.py @@ -782,7 +782,7 @@ class PostInstall: self.manifest.append(bash_comp_dest) write_completion(bash_comp_dest, zsh) except TypeError as err: - if 'resolve_entities' in str(err): + if 'resolve_entities' in unicode_type(err): print('You need python-lxml >= 2.0.5 for calibre') sys.exit(1) raise @@ -824,11 +824,11 @@ class PostInstall: def install_single_icon(iconsrc, basename, size, context, is_last_icon=False): filename = '%s-%s.png' % (basename, size) render_img(iconsrc, filename, width=int(size), height=int(size)) - cmd = ['xdg-icon-resource', 'install', '--noupdate', '--context', context, '--size', str(size), filename, basename] + cmd = ['xdg-icon-resource', 'install', '--noupdate', '--context', context, '--size', unicode_type(size), filename, basename] if is_last_icon: del cmd[2] cc(cmd) - self.icon_resources.append((context, basename, str(size))) + self.icon_resources.append((context, basename, unicode_type(size))) def install_icons(iconsrc, basename, context, is_last_icon=False): sizes = (16, 32, 48, 64, 128, 256) @@ -1133,7 +1133,7 @@ def write_appdata(key, entry, base, translators): fpath = os.path.join(base, '%s.appdata.xml' % key) screenshots = E.screenshots() for w, h, url in entry['screenshots']: - s = E.screenshot(E.image(url, width=str(w), height=str(h))) + s = E.screenshot(E.image(url, width=unicode_type(w), height=unicode_type(h))) screenshots.append(s) screenshots[0].set('type', 'default') description = E.description() diff --git a/src/calibre/ptempfile.py b/src/calibre/ptempfile.py index 3af84a15ab..9d9bf81d42 100644 --- a/src/calibre/ptempfile.py +++ b/src/calibre/ptempfile.py @@ -74,7 +74,7 @@ def osx_cache_dir(): l = libc.confstr(65538, ctypes.byref(buf), len(buf)) # _CS_DARWIN_USER_CACHE_DIR = 65538 if 0 < l < len(buf): try: - q = buf.value.decode('utf-8').rstrip(u'\0') + q = buf.value.decode('utf-8').rstrip('\0') except ValueError: pass if q and os.path.isdir(q) and os.access(q, os.R_OK | os.W_OK | os.X_OK): @@ -103,7 +103,7 @@ def base_dir(): base = os.environ.get('CALIBRE_TEMP_DIR', None) if base is not None and iswindows: base = getenv('CALIBRE_TEMP_DIR') - prefix = app_prefix(u'tmp_') + prefix = app_prefix('tmp_') if base is None: if iswindows: # On windows, if the TMP env var points to a path that @@ -148,12 +148,12 @@ def force_unicode(x): def _make_file(suffix, prefix, base): - suffix, prefix = map(force_unicode, (suffix, prefix)) + suffix, prefix = map(force_unicode, (suffix, prefix)) # no2to3 return tempfile.mkstemp(suffix, prefix, dir=base) def _make_dir(suffix, prefix, base): - suffix, prefix = map(force_unicode, (suffix, prefix)) + suffix, prefix = map(force_unicode, (suffix, prefix)) # no2to3 return tempfile.mkdtemp(suffix, prefix, base) diff --git a/src/calibre/rpdb.py b/src/calibre/rpdb.py index f4eafbcc87..f132276613 100644 --- a/src/calibre/rpdb.py +++ b/src/calibre/rpdb.py @@ -11,7 +11,7 @@ import pdb, socket, inspect, sys, select, os, atexit, time from calibre import prints from calibre.utils.ipc import eintr_retry_call from calibre.constants import cache_dir -from polyglot.builtins import range, raw_input +from polyglot.builtins import range, raw_input as rinput PROMPT = b'(debug) ' QUESTION = b'\x00\x01\x02' @@ -141,7 +141,7 @@ def cli(port=4444): stdout.write(recvd) raw = b'' try: - raw = raw_input(PROMPT.decode('utf-8')) + raw = rinput(PROMPT.decode('utf-8')) except (EOFError, KeyboardInterrupt): pass else: diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py index da0fc53e7e..84aaa87a2c 100644 --- a/src/calibre/test_build.py +++ b/src/calibre/test_build.py @@ -14,7 +14,7 @@ Test a binary calibre build to ensure that all needed binary images/libraries ha import os, ctypes, sys, unittest, time from calibre.constants import plugins, iswindows, islinux, isosx, ispy3 -from polyglot.builtins import iteritems, map, unicode_type, getenv +from polyglot.builtins import iteritems, map, unicode_type, getenv, native_string_type is_ci = os.environ.get('CI', '').lower() == 'true' @@ -28,7 +28,7 @@ class BuildTest(unittest.TestCase): for x in os.listdir(base): if x.lower().endswith('.dll'): try: - ctypes.WinDLL(str(os.path.join(base, x))) + ctypes.WinDLL(native_string_type(os.path.join(base, x))) except Exception as err: self.assertTrue(False, 'Failed to load DLL %s with error: %s' % (x, err))