diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index 33043bb7e8..6ca9826849 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -52,7 +52,7 @@ from calibre.utils.filenames import make_long_path_useable from calibre.utils.icu import lower as icu_lower from calibre.utils.icu import sort_key from calibre.utils.localization import canonicalize_lang -from polyglot.builtins import cmp, iteritems, itervalues +from polyglot.builtins import cmp, iteritems class ExtraFile(NamedTuple): @@ -2119,10 +2119,10 @@ class Cache: implementation of :meth:`has_book` in a worker process without access to the db. ''' try: - return {icu_lower(title) for title in itervalues(self.fields['title'].table.book_col_map)} + return {icu_lower(title) for title in self.fields['title'].table.book_col_map.values()} except TypeError: # Some non-unicode titles in the db - return {icu_lower(as_unicode(title)) for title in itervalues(self.fields['title'].table.book_col_map)} + return {icu_lower(as_unicode(title)) for title in self.fields['title'].table.book_col_map.values()} @read_api def has_book(self, mi): @@ -2134,7 +2134,7 @@ class Cache: if isbytestring(title): title = title.decode(preferred_encoding, 'replace') q = icu_lower(title).strip() - for title in itervalues(self.fields['title'].table.book_col_map): + for title in self.fields['title'].table.book_col_map.values(): if q == icu_lower(title): return True return False diff --git a/src/calibre/db/tables.py b/src/calibre/db/tables.py index 6db008c028..39d24b98ae 100644 --- a/src/calibre/db/tables.py +++ b/src/calibre/db/tables.py @@ -14,7 +14,6 @@ from calibre.ebooks.metadata import author_to_author_sort from calibre.utils.date import UNDEFINED_DATE, parse_date, utc_tz from calibre.utils.icu import lower as icu_lower from calibre_extensions.speedup import parse_date as _c_speedup -from polyglot.builtins import itervalues def identity(x): @@ -680,7 +679,7 @@ class FormatsTable(ManyToManyTable): def zero_max(book_id): try: - return max(itervalues(self.size_map[book_id])) + return max(self.size_map[book_id].values()) except ValueError: return 0 @@ -710,7 +709,7 @@ class FormatsTable(ManyToManyTable): self.size_map[book_id][fmt] = size db.execute('INSERT OR REPLACE INTO data (book,format,uncompressed_size,name) VALUES (?,?,?,?)', (book_id, fmt, size, fname)) - return max(itervalues(self.size_map[book_id])) + return max(self.size_map[book_id].values()) class IdentifiersTable(ManyToManyTable): diff --git a/src/calibre/db/tests/add_remove.py b/src/calibre/db/tests/add_remove.py index e8e757dbab..47cba463bc 100644 --- a/src/calibre/db/tests/add_remove.py +++ b/src/calibre/db/tests/add_remove.py @@ -18,7 +18,7 @@ from calibre.ptempfile import PersistentTemporaryFile from calibre.utils.date import UNDEFINED_DATE, now, utcnow from calibre.utils.img import image_from_path from calibre.utils.resources import get_image_path -from polyglot.builtins import iteritems, itervalues +from polyglot.builtins import iteritems def import_test(replacement_data, replacement_fmt=None): @@ -253,9 +253,9 @@ class AddRemoveTest(BaseTest): table = c.fields['authors'].table self.assertNotIn(1, c.all_book_ids()) self.assertNotIn('Author Two', set(table.id_map.values())) - self.assertNotIn(6, set(itervalues(c.fields['rating'].table.id_map))) - self.assertIn('A Series One', set(itervalues(c.fields['series'].table.id_map))) - self.assertNotIn('My Series Two', set(itervalues(c.fields['#series'].table.id_map))) + self.assertNotIn(6, set(c.fields['rating'].table.id_map.values())) + self.assertIn('A Series One', set(c.fields['series'].table.id_map.values())) + self.assertNotIn('My Series Two', set(c.fields['#series'].table.id_map.values())) self.assertNotIn(item_id, c.fields['#series'].table.col_book_map) self.assertNotIn(1, c.fields['#series'].table.book_col_map) diff --git a/src/calibre/db/tests/reading.py b/src/calibre/db/tests/reading.py index 38717b9e06..773eebfdb1 100644 --- a/src/calibre/db/tests/reading.py +++ b/src/calibre/db/tests/reading.py @@ -13,7 +13,7 @@ from time import time from calibre.db.tests.base import BaseTest from calibre.utils.date import utc_tz from calibre.utils.localization import calibre_langcode_to_name -from polyglot.builtins import iteritems, itervalues +from polyglot.builtins import iteritems def p(x): @@ -502,7 +502,7 @@ class ReadingTest(BaseTest): from calibre.ebooks.metadata.book.base import Metadata cache = self.init_cache() db = self.init_old() - for title in itervalues(cache.fields['title'].table.book_col_map): + for title in cache.fields['title'].table.book_col_map.values(): for x in (db, cache): self.assertTrue(x.has_book(Metadata(title))) self.assertTrue(x.has_book(Metadata(title.upper()))) diff --git a/src/calibre/db/tests/writing.py b/src/calibre/db/tests/writing.py index 241b5fbf10..a031622447 100644 --- a/src/calibre/db/tests/writing.py +++ b/src/calibre/db/tests/writing.py @@ -16,7 +16,7 @@ from calibre.db.tests.base import IMG, BaseTest from calibre.ebooks.metadata import author_to_author_sort, title_sort from calibre.ebooks.metadata.book.base import Metadata from calibre.utils.date import UNDEFINED_DATE -from polyglot.builtins import iteritems, itervalues +from polyglot.builtins import iteritems class WritingTest(BaseTest): @@ -576,7 +576,7 @@ class WritingTest(BaseTest): for c in (cache, c2): self.assertEqual(c.field_for('tags', 1), ()) self.assertEqual(c.field_for('tags', 2), ('b', 'a')) - self.assertNotIn('c', set(itervalues(c.get_id_map('tags')))) + self.assertNotIn('c', set(c.get_id_map('tags').values())) self.assertEqual(c.field_for('series', 1), None) self.assertEqual(c.field_for('series', 2), 'a') self.assertEqual(c.field_for('series_index', 1), 1.0) diff --git a/src/calibre/devices/mtp/windows/driver.py b/src/calibre/devices/mtp/windows/driver.py index c2a4d6e58b..ed55e96cab 100644 --- a/src/calibre/devices/mtp/windows/driver.py +++ b/src/calibre/devices/mtp/windows/driver.py @@ -17,7 +17,6 @@ from calibre.constants import __appname__, isxp, numeric_version from calibre.devices.errors import BlacklistedDevice, DeviceError, OpenFailed from calibre.devices.mtp.base import MTPDeviceBase, debug from calibre.ptempfile import SpooledTemporaryFile -from polyglot.builtins import itervalues null = object() @@ -287,7 +286,7 @@ class MTP_DEVICE(MTPDeviceBase): for x in id_map.values(): x['storage_id'] = storage_id all_storage.append(storage) - items.append(itervalues(id_map)) + items.append(id_map.values()) self._filesystem_cache = FilesystemCache(all_storage, chain(*items)) debug(f'Filesystem metadata loaded in {time.time()-st:g} seconds ({len(self._filesystem_cache)} objects)') return self._filesystem_cache diff --git a/src/calibre/ebooks/docx/cleanup.py b/src/calibre/ebooks/docx/cleanup.py index 4cee3a633a..6e87ee32e8 100644 --- a/src/calibre/ebooks/docx/cleanup.py +++ b/src/calibre/ebooks/docx/cleanup.py @@ -6,8 +6,6 @@ __copyright__ = '2013, Kovid Goyal ' import os -from polyglot.builtins import itervalues - NBSP = '\xa0' @@ -154,7 +152,7 @@ def cleanup_markup(log, root, styles, dest_dir, detect_cover, XPath, uuid): current_run = [span] # Process dir attributes - class_map = dict(itervalues(styles.classes)) + class_map = dict(styles.classes.values()) parents = ('p', 'div') + tuple(f'h{i}' for i in range(1, 7)) for parent in root.xpath('//*[({})]'.format(' or '.join(f'name()="{t}"' for t in parents))): # Ensure that children of rtl parents that are not rtl have an diff --git a/src/calibre/ebooks/lrf/html/convert_from.py b/src/calibre/ebooks/lrf/html/convert_from.py index 821be38607..be37d55dce 100644 --- a/src/calibre/ebooks/lrf/html/convert_from.py +++ b/src/calibre/ebooks/lrf/html/convert_from.py @@ -44,7 +44,6 @@ from calibre.ebooks.lrf.pylrs.pylrs import ( TextBlock, ) from calibre.ptempfile import PersistentTemporaryFile -from polyglot.builtins import itervalues from polyglot.urllib import unquote ''' @@ -1782,7 +1781,7 @@ class HTMLConverter: self.book.renderLrs(path) if lrs else self.book.renderLrf(path) def cleanup(self): - for _file in chain(itervalues(self.scaled_images), itervalues(self.rotated_images)): + for _file in chain(self.scaled_images.values(), self.rotated_images.values()): _file.__del__() diff --git a/src/calibre/ebooks/lrf/lrfparser.py b/src/calibre/ebooks/lrf/lrfparser.py index 7358bd4461..c2084f59de 100644 --- a/src/calibre/ebooks/lrf/lrfparser.py +++ b/src/calibre/ebooks/lrf/lrfparser.py @@ -15,7 +15,6 @@ from calibre.ebooks.lrf.meta import LRFMetaFile from calibre.ebooks.lrf.objects import BookAttr, Font, PageTree, StyleObject, Text, TOCObject, get_object, ruby_tags from calibre.utils.config import OptionParser from calibre.utils.filenames import ascii_filename -from polyglot.builtins import itervalues class LRFDocument(LRFMetaFile): @@ -81,7 +80,7 @@ class LRFDocument(LRFMetaFile): yield from self.page_trees def write_files(self): - for obj in chain(itervalues(self.image_map), itervalues(self.font_map)): + for obj in chain(self.image_map.values(), self.font_map.values()): with open(obj.file, 'wb') as f: f.write(obj.stream) diff --git a/src/calibre/ebooks/mobi/writer2/indexer.py b/src/calibre/ebooks/mobi/writer2/indexer.py index ec7460e21d..6d28acbdbc 100644 --- a/src/calibre/ebooks/mobi/writer2/indexer.py +++ b/src/calibre/ebooks/mobi/writer2/indexer.py @@ -12,7 +12,6 @@ from struct import pack from calibre.ebooks.mobi.utils import CNCX as CNCX_ from calibre.ebooks.mobi.utils import RECORD_SIZE, align_block, encint, encode_number_as_hex, encode_tbs -from polyglot.builtins import itervalues class CNCX(CNCX_): # {{{ @@ -222,8 +221,7 @@ class SecondaryIndexEntry(IndexEntry): # The values for this index entry # I don't know what the 5 means, it is not the number of entries - self.secondary = [5 if tag == min( - itervalues(self.INDEX_MAP)) else 0, 0, tag] + self.secondary = [5 if tag == min(self.INDEX_MAP.values()) else 0, 0, tag] @property def tag_nums(self): diff --git a/src/calibre/gui2/actions/copy_to_library.py b/src/calibre/gui2/actions/copy_to_library.py index 1da3b6aa23..dc03f2cf3f 100644 --- a/src/calibre/gui2/actions/copy_to_library.py +++ b/src/calibre/gui2/actions/copy_to_library.py @@ -45,7 +45,6 @@ from calibre.startup import connect_lambda from calibre.utils.config import prefs from calibre.utils.icu import numeric_sort_key, sort_key from calibre.utils.localization import ngettext -from polyglot.builtins import itervalues def ask_about_cc_mismatch(gui, db, newdb, missing_cols, incompatible_cols): # {{{ @@ -514,7 +513,7 @@ class CopyToLibraryAction(InterfaceAction): self.gui.status_bar.show_message(donemsg.format(num=len(self.worker.processed), loc=loc), 2000) if self.worker.auto_merged_ids: - books = '\n'.join(itervalues(self.worker.auto_merged_ids)) + books = '\n'.join(self.worker.auto_merged_ids.values()) info_dialog(self.gui, _('Auto merged'), _('Some books were automatically merged into existing ' 'records in the target library. Click "Show ' diff --git a/src/calibre/gui2/actions/save_to_disk.py b/src/calibre/gui2/actions/save_to_disk.py index 6c183941bf..25d2fea998 100644 --- a/src/calibre/gui2/actions/save_to_disk.py +++ b/src/calibre/gui2/actions/save_to_disk.py @@ -12,7 +12,6 @@ from functools import partial from calibre.gui2 import Dispatcher, choose_dir, error_dialog from calibre.gui2.actions import InterfaceAction from calibre.utils.config import prefs -from polyglot.builtins import itervalues class SaveToDiskAction(InterfaceAction): @@ -127,7 +126,7 @@ class SaveToDiskAction(InterfaceAction): def save_library_format_by_ids(self, book_ids, fmt, single_dir=True): if isinstance(book_ids, numbers.Integral): book_ids = [book_ids] - rows = list(itervalues(self.gui.library_view.ids_to_rows(book_ids))) + rows = list(self.gui.library_view.ids_to_rows(book_ids).values()) rows = [self.gui.library_view.model().index(r, 0) for r in rows] self.save_to_disk(True, single_dir=single_dir, single_format=fmt, rows=rows, write_opf=False, save_cover=False) diff --git a/src/calibre/gui2/covers.py b/src/calibre/gui2/covers.py index f65114367a..cc2136a3eb 100644 --- a/src/calibre/gui2/covers.py +++ b/src/calibre/gui2/covers.py @@ -45,7 +45,6 @@ from calibre.startup import connect_lambda from calibre.utils.date import now from calibre.utils.filenames import make_long_path_useable from calibre.utils.icu import primary_sort_key, sort_key -from polyglot.builtins import itervalues class Preview(QLabel): @@ -336,7 +335,7 @@ class CoverSettingsWidget(QWidget): li.setSelected(True) break else: - next(itervalues(self.colors_map)).setSelected(True) + next(iter(self.colors_map.values())).setSelected(True) disabled = set(prefs['disabled_styles']) self.styles_list.clear() @@ -354,7 +353,7 @@ class CoverSettingsWidget(QWidget): li.setSelected(True) break else: - next(itervalues(self.style_map)).setSelected(True) + next(iter(self.style_map.values())).setSelected(True) @property def current_colors(self): diff --git a/src/calibre/gui2/gestures.py b/src/calibre/gui2/gestures.py index 19198f2dc6..5d2f652b3e 100644 --- a/src/calibre/gui2/gestures.py +++ b/src/calibre/gui2/gestures.py @@ -9,7 +9,6 @@ from qt.core import QApplication, QEvent, QInputDevice, QMouseEvent, QObject, QP from calibre.startup import connect_lambda from calibre.utils.monotonic import monotonic -from polyglot.builtins import itervalues HOLD_THRESHOLD = 1.0 # seconds TAP_THRESHOLD = 50 # manhattan pixels @@ -96,14 +95,14 @@ class State(QObject): else: self.check_for_holds() if Flick in self.possible_gestures: - tp = next(itervalues(self.touch_points)) + tp = next(iter(self.touch_points.values())) self.flicking.emit(tp, False) def check_for_holds(self): if not {TapAndHold} & self.possible_gestures: return now = monotonic() - tp = next(itervalues(self.touch_points)) + tp = next(iter(self.touch_points.values())) if now - tp.time_of_last_move < HOLD_THRESHOLD: return if self.hold_started: @@ -121,20 +120,20 @@ class State(QObject): def finalize(self): if Tap in self.possible_gestures: - tp = next(itervalues(self.touch_points)) + tp = next(iter(self.touch_points.values())) if tp.total_movement <= TAP_THRESHOLD: self.tapped.emit(tp) return if Flick in self.possible_gestures: - tp = next(itervalues(self.touch_points)) + tp = next(iter(self.touch_points.values())) self.flicking.emit(tp, True) if not self.hold_started: return if TapAndHold in self.possible_gestures: - tp = next(itervalues(self.touch_points)) + tp = next(iter(self.touch_points.values())) self.tap_hold_finished.emit(tp) return diff --git a/src/calibre/gui2/languages.py b/src/calibre/gui2/languages.py index b26d3aa7c8..bfc190d65a 100644 --- a/src/calibre/gui2/languages.py +++ b/src/calibre/gui2/languages.py @@ -11,7 +11,6 @@ from calibre.gui2 import gui_prefs from calibre.gui2.complete2 import EditWithComplete from calibre.utils.icu import lower, sort_key from calibre.utils.localization import lang_map_for_ui -from polyglot.builtins import itervalues class LanguagesEdit(EditWithComplete): @@ -33,7 +32,7 @@ class LanguagesEdit(EditWithComplete): self.lineEdit().set_use_startswith_search(False) def init_langs(self, db): - self.update_items_cache(itervalues(self._lang_map)) + self.update_items_cache(self._lang_map.values()) def refresh_recently_used(self): recently_used = self.prefs.get('recently_used_languages') or () diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 56fd3608a4..31ca780416 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -22,7 +22,7 @@ from calibre.utils.date import UNDEFINED_DATE, clean_date_for_sort, now, parse_d from calibre.utils.icu import lower as icu_lower from calibre.utils.localization import _, canonicalize_lang, get_udc, lang_map from calibre.utils.search_query_parser import ParseException, SearchQueryParser -from polyglot.builtins import cmp, itervalues +from polyglot.builtins import cmp class MetadataBackup(Thread): # {{{ @@ -947,8 +947,7 @@ class ResultCache(SearchQueryParser): # {{{ self.marked_ids_dict = dict.fromkeys(id_dict, 'true') else: # Ensure that all the items in the dict are text - self.marked_ids_dict = dict(zip(iter(id_dict), map(str, - itervalues(id_dict)))) + self.marked_ids_dict = dict(zip(iter(id_dict), map(str, id_dict.values()))) # Set the values in the cache marked_col = self.FIELD_MAP['marked'] diff --git a/src/calibre/library/field_metadata.py b/src/calibre/library/field_metadata.py index 84bbdc32a6..1ffad07695 100644 --- a/src/calibre/library/field_metadata.py +++ b/src/calibre/library/field_metadata.py @@ -10,7 +10,6 @@ from collections import OrderedDict from calibre.utils.config_base import tweaks from calibre.utils.icu import lower as icu_lower from calibre.utils.localization import _, ngettext -from polyglot.builtins import itervalues category_icon_map = { 'authors' : 'user_profile.png', @@ -496,7 +495,7 @@ class FieldMetadata: yield from self._tb_cats def itervalues(self): - return itervalues(self._tb_cats) + yield from self._tb_cats.values() def values(self): return list(self._tb_cats.values()) diff --git a/src/calibre/srv/code.py b/src/calibre/srv/code.py index df85728c7f..66ffda6710 100644 --- a/src/calibre/srv/code.py +++ b/src/calibre/srv/code.py @@ -28,7 +28,6 @@ from calibre.utils.localization import _, get_lang, lang_code_for_user_manual, l from calibre.utils.resources import get_path as P from calibre.utils.search_query_parser import ParseException from calibre.utils.serialize import json_dumps -from polyglot.builtins import itervalues POSTABLE = frozenset({'GET', 'POST', 'HEAD'}) @@ -466,7 +465,7 @@ def tag_browser(ctx, rd): def all_lang_names(): ans = getattr(all_lang_names, 'ans', None) if ans is None: - ans = all_lang_names.ans = tuple(sorted(itervalues(lang_map_for_ui()), key=numeric_sort_key)) + ans = all_lang_names.ans = tuple(sorted(lang_map_for_ui().values(), key=numeric_sort_key)) return ans diff --git a/src/calibre/srv/handler.py b/src/calibre/srv/handler.py index 8389ecb119..20306b5c48 100644 --- a/src/calibre/srv/handler.py +++ b/src/calibre/srv/handler.py @@ -14,7 +14,6 @@ from calibre.srv.routes import Router from calibre.srv.users import UserManager from calibre.utils.date import utcnow from calibre.utils.search_query_parser import ParseException -from polyglot.builtins import itervalues class Context: @@ -205,7 +204,7 @@ class Handler: self.router = Router(ctx=ctx, url_prefix=opts.url_prefix, auth_controller=self.auth_controller) for module in SRV_MODULES: module = import_module('calibre.srv.' + module) - self.router.load_routes(itervalues(vars(module))) + self.router.load_routes(vars(module).values()) self.router.finalize() self.router.ctx.url_for = self.router.url_for self.dispatch = self.router.dispatch diff --git a/src/calibre/srv/routes.py b/src/calibre/srv/routes.py index 66078805b0..e43e09f88a 100644 --- a/src/calibre/srv/routes.py +++ b/src/calibre/srv/routes.py @@ -18,7 +18,6 @@ from urllib.parse import quote as urlquote from calibre.srv.errors import HTTPNotFound, HTTPSimpleResponse, RouteError from calibre.srv.utils import http_date from calibre.utils.serialize import MSGPACK_MIME, json_dumps, msgpack_dumps -from polyglot.builtins import itervalues default_methods = frozenset(('HEAD', 'GET')) @@ -255,7 +254,7 @@ class Router: self.add(item) def __iter__(self): - return itervalues(self.routes) + yield from self.routes.values() def finalize(self): try: diff --git a/src/calibre/srv/tests/auth.py b/src/calibre/srv/tests/auth.py index dca72f1beb..395945a297 100644 --- a/src/calibre/srv/tests/auth.py +++ b/src/calibre/srv/tests/auth.py @@ -20,7 +20,6 @@ from calibre.srv.errors import HTTPForbidden from calibre.srv.routes import Router, endpoint from calibre.srv.tests.base import BaseTest, TestServer from polyglot.binary import as_base64_bytes -from polyglot.builtins import itervalues REALM = 'calibre-test' is_ci = os.environ.get('CI', '').lower() == 'true' @@ -48,7 +47,7 @@ def android2(ctx, data): def router(prefer_basic_auth=False, ban_for=0, ban_after=5): from calibre.srv.auth import AuthController - return Router(itervalues(globals()), auth_controller=AuthController( + return Router(globals().values(), auth_controller=AuthController( {'testuser':'testpw', '!@#$%^&*()-=_+':'!@#$%^&*()-=_+'}, ban_time_in_minutes=ban_for, ban_after=ban_after, prefer_basic_auth=prefer_basic_auth, realm=REALM, max_age_seconds=1)) diff --git a/src/calibre/utils/fonts/scanner.py b/src/calibre/utils/fonts/scanner.py index bb34cc9d9d..f9c8d4d241 100644 --- a/src/calibre/utils/fonts/scanner.py +++ b/src/calibre/utils/fonts/scanner.py @@ -15,7 +15,6 @@ from calibre.utils.fonts.metadata import FontMetadata, UnsupportedFont from calibre.utils.icu import lower as icu_lower from calibre.utils.icu import sort_key from calibre.utils.resources import get_path as P -from polyglot.builtins import itervalues class NoFonts(ValueError): @@ -188,8 +187,7 @@ def build_families(cached_fonts, folders, family_attr='font-family'): fonts.sort(key=font_priority) font_family_map = dict.copy(families) - font_families = tuple(sorted((f[0]['font-family'] for f in - itervalues(font_family_map)), key=sort_key)) + font_families = tuple(sorted((f[0]['font-family'] for f in font_family_map.values()), key=sort_key)) return font_family_map, font_families # }}} diff --git a/src/calibre/utils/fonts/sfnt/subset.py b/src/calibre/utils/fonts/sfnt/subset.py index 9780bd65a0..1e6d329e37 100644 --- a/src/calibre/utils/fonts/sfnt/subset.py +++ b/src/calibre/utils/fonts/sfnt/subset.py @@ -14,7 +14,6 @@ from calibre.utils.fonts.sfnt.container import Sfnt from calibre.utils.fonts.sfnt.errors import NoGlyphs, UnsupportedFont from calibre.utils.icu import ord_string, safe_chr from calibre.utils.resources import get_path as P -from polyglot.builtins import itervalues # TrueType outlines {{{ @@ -162,7 +161,7 @@ def subset(raw, individual_chars, ranges=(), warnings=None): gsub = sfnt[b'GSUB'] try: gsub.decompile() - extra_glyphs = gsub.all_substitutions(itervalues(character_map)) + extra_glyphs = gsub.all_substitutions(character_map.values()) except UnsupportedFont as e: warn(f'Usupported GSUB table: {e}') except Exception: diff --git a/src/calibre/utils/matcher.py b/src/calibre/utils/matcher.py index 0d54550be9..8948676f7e 100644 --- a/src/calibre/utils/matcher.py +++ b/src/calibre/utils/matcher.py @@ -21,7 +21,7 @@ from calibre.constants import filesystem_encoding from calibre.utils.icu import lower as icu_lower from calibre.utils.icu import primary_collator, primary_find, primary_sort_key from calibre.utils.icu import upper as icu_upper -from polyglot.builtins import iteritems, itervalues +from polyglot.builtins import iteritems DEFAULT_LEVEL1 = '/' DEFAULT_LEVEL2 = '-_ 0123456789' @@ -313,7 +313,7 @@ def test(return_tests=False): def test_non_bmp(self): raw = '_\U0001f431-' m = Matcher([raw], scorer=CScorer) - positions = next(itervalues(m(raw))) + positions = next(iter(m(raw).values())) self.assertEqual( positions, (0, 1, 2) ) diff --git a/src/calibre/utils/winreg/dde.py b/src/calibre/utils/winreg/dde.py index c4f3abeaa4..0ba7c44a69 100644 --- a/src/calibre/utils/winreg/dde.py +++ b/src/calibre/utils/winreg/dde.py @@ -8,8 +8,6 @@ import numbers from ctypes import POINTER, WINFUNCTYPE, byref, c_char_p, c_ulong, c_void_p, windll from ctypes.wintypes import BOOL, DWORD, LPCWSTR, UINT -from polyglot.builtins import itervalues - HCONV = c_void_p # = DECLARE_HANDLE(HCONV) HDDEDATA = c_void_p # = DECLARE_HANDLE(HDDEDATA) HSZ = c_void_p # = DECLARE_HANDLE(HSZ) @@ -55,7 +53,7 @@ DML_ERRORS = { 'UNFOUND_QUEUE_ID': (0x4011, 'An invalid transaction identifier was passed to a DDEML function. Once the application has returned from an XTYP_XACT_COMPLETE callback, the transaction identifier for that callback function is no longer valid.'), # noqa: E501 } -DML_ERROR_TEXT = dict(itervalues(DML_ERRORS)) +DML_ERROR_TEXT = dict(DML_ERRORS.values()) user32 = windll.user32