diff --git a/src/calibre/ebooks/lit/mssha1.py b/src/calibre/ebooks/lit/mssha1.py index 9982bd592c..48d145ca4e 100644 --- a/src/calibre/ebooks/lit/mssha1.py +++ b/src/calibre/ebooks/lit/mssha1.py @@ -9,6 +9,7 @@ __license__ = 'GPL v3' __copyright__ = '2008, Marshall T. Vandegrift ' import struct, copy +from polyglot.builtins import range # ====================================================================== # Bit-Manipulation helpers @@ -170,7 +171,7 @@ class mssha1(object): D = self.H3 E = self.H4 - for t in xrange(0, 80): + for t in range(0, 80): TEMP = _rotateLeft(A, 5) + f[t](B, C, D) + E + W[t] + K[t/20] E = D D = C @@ -341,7 +342,7 @@ if __name__ == '__main__': data = file.read(16384) file.close() digest = context.hexdigest().upper() - for i in xrange(0, 40, 8): + for i in range(0, 40, 8): print(digest[i:i+8], end=' ') print() main() diff --git a/src/calibre/ebooks/lit/writer.py b/src/calibre/ebooks/lit/writer.py index ce1c3acdcc..c1610b6e50 100644 --- a/src/calibre/ebooks/lit/writer.py +++ b/src/calibre/ebooks/lit/writer.py @@ -31,7 +31,7 @@ import calibre from calibre import plugins msdes, msdeserror = plugins['msdes'] import calibre.ebooks.lit.mssha1 as mssha1 -from polyglot.builtins import codepoint_to_chr, unicode_type, string_or_bytes +from polyglot.builtins import codepoint_to_chr, unicode_type, string_or_bytes, range __all__ = ['LitWriter'] @@ -49,7 +49,7 @@ ALL_MS_COVER_TYPES = [ def invert_tag_map(tag_map): tags, dattrs, tattrs = tag_map - tags = dict((tags[i], i) for i in xrange(len(tags))) + tags = dict((tags[i], i) for i in range(len(tags))) dattrs = dict((v, k) for k, v in dattrs.items()) tattrs = [dict((v, k) for k, v in (map or {}).items()) for map in tattrs] for map in tattrs: @@ -135,7 +135,7 @@ def decint(value): def randbytes(n): - return ''.join(chr(random.randint(0, 255)) for x in xrange(n)) + return ''.join(chr(random.randint(0, 255)) for x in range(n)) def warn(x): @@ -332,7 +332,7 @@ class LitWriter(object): self._oeb = oeb self._logger = oeb.logger self._stream = stream - self._sections = [StringIO() for i in xrange(4)] + self._sections = [StringIO() for i in range(4)] self._directory = [] self._meta = None self._litize_oeb() @@ -363,7 +363,7 @@ class LitWriter(object): 1, PRIMARY_SIZE, 5, SECONDARY_SIZE)) self._write(packguid(LITFILE_GUID)) offset = self._tell() - pieces = list(xrange(offset, offset + (PIECE_SIZE * 5), PIECE_SIZE)) + pieces = list(range(offset, offset + (PIECE_SIZE * 5), PIECE_SIZE)) self._write((5 * PIECE_SIZE) * '\0') aoli1 = len(dchunks) if ichunk else ULL_NEG1 last = len(dchunks) - 1 @@ -662,7 +662,7 @@ class LitWriter(object): hash.update(data) digest = hash.digest() key = [0] * 8 - for i in xrange(0, len(digest)): + for i in range(0, len(digest)): key[i % 8] ^= ord(digest[i]) return ''.join(chr(x) for x in key) diff --git a/src/calibre/ebooks/metadata/plucker.py b/src/calibre/ebooks/metadata/plucker.py index ecf3b207af..7861918b7d 100644 --- a/src/calibre/ebooks/metadata/plucker.py +++ b/src/calibre/ebooks/metadata/plucker.py @@ -17,6 +17,7 @@ from calibre.ebooks.metadata import MetaInformation from calibre.ebooks.pdb.header import PdbHeaderReader from calibre.ebooks.pdb.plucker.reader import SectionHeader, DATATYPE_METADATA, \ MIBNUM_TO_NAME +from polyglot.builtins import range def get_metadata(stream, extract_cover=True): @@ -44,7 +45,7 @@ def get_metadata(stream, extract_cover=True): title = None author = None pubdate = 0 - for i in xrange(record_count): + for i in range(record_count): try: type, length = struct.unpack_from('>HH', section_data, 2 + adv) except struct.error: diff --git a/src/calibre/ebooks/mobi/utils.py b/src/calibre/ebooks/mobi/utils.py index 69ef8f0b9f..bd545e5ce0 100644 --- a/src/calibre/ebooks/mobi/utils.py +++ b/src/calibre/ebooks/mobi/utils.py @@ -14,7 +14,7 @@ from io import BytesIO from calibre.utils.img import save_cover_data_to, scale_image, image_to_data, image_from_data, resize_image from calibre.utils.imghdr import what from calibre.ebooks import normalize -from polyglot.builtins import unicode_type +from polyglot.builtins import unicode_type, range from tinycss.color3 import parse_color_string IMAGE_MAX_SIZE = 10 * 1024 * 1024 @@ -242,7 +242,7 @@ def encode_fvwi(val, flags, flag_size=4): bytestring. ''' ans = val << flag_size - for i in xrange(flag_size): + for i in range(flag_size): ans |= (flags & (1 << i)) return encint(ans) @@ -254,7 +254,7 @@ def decode_fvwi(byts, flag_size=4): arg, consumed = decint(bytes(byts)) val = arg >> flag_size flags = 0 - for i in xrange(flag_size): + for i in range(flag_size): flags |= (arg & (1 << i)) return val, flags, consumed @@ -462,7 +462,7 @@ def read_font_record(data, extent=1040): extent = len(font_data) if extent is None else extent extent = min(extent, len(font_data)) - for n in xrange(extent): + for n in range(extent): buf[n] ^= key[n%xor_len] # XOR of buf and key font_data = bytes(buf) @@ -506,7 +506,7 @@ def write_font_record(data, obfuscate=True, compress=True): xor_key = os.urandom(key_len) key = bytearray(xor_key) data = bytearray(data) - for i in xrange(1040): + for i in range(1040): data[i] ^= key[i%key_len] data = bytes(data) diff --git a/src/calibre/ebooks/oeb/base.py b/src/calibre/ebooks/oeb/base.py index d312faf993..db678847de 100644 --- a/src/calibre/ebooks/oeb/base.py +++ b/src/calibre/ebooks/oeb/base.py @@ -22,7 +22,7 @@ from calibre.ebooks.oeb.parse_utils import (barename, XHTML_NS, RECOVER_PARSER, namespace, XHTML, parse_html, NotHTML) from calibre.utils.cleantext import clean_xml_chars from calibre.utils.short_uuid import uuid4 -from polyglot.builtins import unicode_type, string_or_bytes +from polyglot.builtins import unicode_type, string_or_bytes, range XML_NS = 'http://www.w3.org/XML/1998/namespace' OEB_DOC_NS = 'http://openebook.org/namespaces/oeb-document/1.0/' @@ -431,8 +431,8 @@ def serialize(data, media_type, pretty_print=False): return bytes(data) -ASCII_CHARS = set(chr(x) for x in xrange(128)) -UNIBYTE_CHARS = set(chr(x) for x in xrange(256)) +ASCII_CHARS = set(chr(x) for x in range(128)) +UNIBYTE_CHARS = set(chr(x) for x in range(256)) URL_SAFE = set('ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' '0123456789' '_.-/~') @@ -1338,7 +1338,7 @@ class Spine(object): item.linear = self._linear(linear) item.spine_position = index self.items.insert(index, item) - for i in xrange(index, len(self.items)): + for i in range(index, len(self.items)): self.items[i].spine_position = i return item @@ -1346,7 +1346,7 @@ class Spine(object): """Remove :param:`item` from the `Spine`.""" index = item.spine_position self.items.pop(index) - for i in xrange(index, len(self.items)): + for i in range(index, len(self.items)): self.items[i].spine_position = i item.spine_position = None @@ -2044,7 +2044,7 @@ def rel_href(base_href, href): target, frag = urldefrag(href) target = target.split('/') index = 0 - for index in xrange(min(len(base), len(target))): + for index in range(min(len(base), len(target))): if base[index] != target[index]: break else: diff --git a/src/calibre/gui2/catalog/catalog_bibtex.py b/src/calibre/gui2/catalog/catalog_bibtex.py index e98f9a3a09..0e38160819 100644 --- a/src/calibre/gui2/catalog/catalog_bibtex.py +++ b/src/calibre/gui2/catalog/catalog_bibtex.py @@ -9,7 +9,7 @@ __docformat__ = 'restructuredtext en' from calibre.gui2 import gprefs from calibre.gui2.catalog.catalog_bibtex_ui import Ui_Form -from polyglot.builtins import unicode_type +from polyglot.builtins import unicode_type, range from PyQt5.Qt import QWidget, QListWidgetItem @@ -48,7 +48,7 @@ class PluginWidget(QWidget, Ui_Form): self.name = name fields = gprefs.get(name+'_db_fields', self.all_fields) # Restore the activated db_fields from last use - for x in xrange(self.db_fields.count()): + for x in range(self.db_fields.count()): item = self.db_fields.item(x) item.setSelected(unicode_type(item.text()) in fields) self.bibfile_enc.clear() @@ -72,7 +72,7 @@ class PluginWidget(QWidget, Ui_Form): # Save the currently activated fields fields = [] - for x in xrange(self.db_fields.count()): + for x in range(self.db_fields.count()): item = self.db_fields.item(x) if item.isSelected(): fields.append(unicode_type(item.text())) diff --git a/src/calibre/gui2/catalog/catalog_csv_xml.py b/src/calibre/gui2/catalog/catalog_csv_xml.py index 6280b606b7..03f6c16cc4 100644 --- a/src/calibre/gui2/catalog/catalog_csv_xml.py +++ b/src/calibre/gui2/catalog/catalog_csv_xml.py @@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en' from calibre.gui2 import gprefs from calibre.gui2.ui import get_gui -from polyglot.builtins import unicode_type +from polyglot.builtins import unicode_type, range from PyQt5.Qt import QWidget, QListWidgetItem, Qt, QVBoxLayout, QLabel, QListWidget @@ -90,7 +90,7 @@ class PluginWidget(QWidget): def options(self): # Save the currently activated fields fields, all_fields = [], [] - for x in xrange(self.db_fields.count()): + for x in range(self.db_fields.count()): item = self.db_fields.item(x) all_fields.append(unicode_type(item.data(Qt.UserRole))) if item.checkState() == Qt.Checked: diff --git a/src/calibre/gui2/dialogs/search.py b/src/calibre/gui2/dialogs/search.py index 92f76f110e..1bc27dfb21 100644 --- a/src/calibre/gui2/dialogs/search.py +++ b/src/calibre/gui2/dialogs/search.py @@ -19,7 +19,7 @@ from calibre.utils.icu import sort_key from calibre.utils.config import tweaks from calibre.utils.date import now from calibre.utils.localization import localize_user_manual_link -from polyglot.builtins import unicode_type +from polyglot.builtins import unicode_type, range box_values = {} last_matchkind = CONTAINS_MATCH @@ -191,7 +191,7 @@ def create_date_tab(self, db): dy.setRange(102, 10000) dy.setValue(now().year) self.date_month = dm = add(_('mo&nth'), QComboBox(w)) - for val, text in [(0, '')] + [(i, strftime('%B', date(2010, i, 1).timetuple())) for i in xrange(1, 13)]: + for val, text in [(0, '')] + [(i, strftime('%B', date(2010, i, 1).timetuple())) for i in range(1, 13)]: dm.addItem(text, val) self.date_day = dd = add(_('&day'), QSpinBox(w)) dd.setRange(0, 31) diff --git a/src/calibre/gui2/toc/location.py b/src/calibre/gui2/toc/location.py index af90566fb6..8dd91685a6 100644 --- a/src/calibre/gui2/toc/location.py +++ b/src/calibre/gui2/toc/location.py @@ -19,7 +19,7 @@ from PyQt5.QtWebKit import QWebElement from calibre.ebooks.oeb.display.webview import load_html from calibre.gui2 import error_dialog, question_dialog, gprefs, secure_web_page from calibre.utils.logging import default_log -from polyglot.builtins import unicode_type +from polyglot.builtins import unicode_type, range class Page(QWebPage): # {{{ @@ -259,7 +259,7 @@ class ItemEdit(QWidget): self.name.setCursorPosition(0) toc = item.data(0, Qt.UserRole) if toc.dest: - for i in xrange(self.dest_list.count()): + for i in range(self.dest_list.count()): litem = self.dest_list.item(i) if unicode_type(litem.data(Qt.DisplayRole) or '') == toc.dest: dest_index = i diff --git a/src/calibre/gui2/toc/main.py b/src/calibre/gui2/toc/main.py index 986543c682..ba23176964 100644 --- a/src/calibre/gui2/toc/main.py +++ b/src/calibre/gui2/toc/main.py @@ -10,7 +10,7 @@ __docformat__ = 'restructuredtext en' import sys, os, textwrap from threading import Thread from functools import partial -from polyglot.builtins import map, unicode_type +from polyglot.builtins import map, unicode_type, range from PyQt5.Qt import (QPushButton, QFrame, QMenu, QInputDialog, QCheckBox, QDialog, QVBoxLayout, QDialogButtonBox, QSize, QStackedWidget, QWidget, @@ -44,7 +44,7 @@ class XPathDialog(QDialog): # {{{ la.setWordWrap(True) l.addWidget(la) self.widgets = [] - for i in xrange(5): + for i in range(5): la = _('Level %s ToC:')%('&%d'%(i+1)) xp = XPathEdit(self) xp.set_msg(la) @@ -307,10 +307,10 @@ class ItemView(QFrame): # {{{ l.addWidget(la, l.rowCount(), 0, 1, 2) def create_from_major_headings(self): - self.create_from_xpath.emit(['//h:h%d'%i for i in xrange(1, 4)], True) + self.create_from_xpath.emit(['//h:h%d'%i for i in range(1, 4)], True) def create_from_all_headings(self): - self.create_from_xpath.emit(['//h:h%d'%i for i in xrange(1, 7)], True) + self.create_from_xpath.emit(['//h:h%d'%i for i in range(1, 7)], True) def create_from_user_xpath(self): d = XPathDialog(self, self.prefs) @@ -404,7 +404,7 @@ class TreeWidget(QTreeWidget): # {{{ def iteritems(self, parent=None): if parent is None: parent = self.invisibleRootItem() - for i in xrange(parent.childCount()): + for i in range(parent.childCount()): child = parent.child(i) yield child for gc in self.iteritems(parent=child): @@ -496,7 +496,7 @@ class TreeWidget(QTreeWidget): # {{{ is_expanded = item.isExpanded() or item.childCount() == 0 gp = parent.parent() or self.invisibleRootItem() idx = gp.indexOfChild(parent) - for gc in [parent.child(i) for i in xrange(parent.indexOfChild(item)+1, parent.childCount())]: + for gc in [parent.child(i) for i in range(parent.indexOfChild(item)+1, parent.childCount())]: parent.removeChild(gc) item.addChild(gc) parent.removeChild(item) @@ -798,7 +798,7 @@ class TOCView(QWidget): # {{{ if item is not None: p = item.parent() or self.root idx = p.indexOfChild(item) - children = [item.child(i) for i in xrange(item.childCount())] + children = [item.child(i) for i in range(item.childCount())] for child in reversed(children): item.removeChild(child) p.insertChild(idx+1, child) @@ -816,7 +816,7 @@ class TOCView(QWidget): # {{{ self.tocw.move_down() def data_changed(self, top_left, bottom_right): - for r in xrange(top_left.row(), bottom_right.row()+1): + for r in range(top_left.row(), bottom_right.row()+1): idx = self.tocw.model().index(r, 0, top_left.parent()) new_title = unicode_type(idx.data(Qt.DisplayRole) or '').strip() toc = idx.data(Qt.UserRole) @@ -908,7 +908,7 @@ class TOCView(QWidget): # {{{ root = TOC() def process_node(parent, toc_parent): - for i in xrange(parent.childCount()): + for i in range(parent.childCount()): item = parent.child(i) title = unicode_type(item.data(0, Qt.DisplayRole) or '').strip() toc = item.data(0, Qt.UserRole) diff --git a/src/calibre/utils/podofo/__init__.py b/src/calibre/utils/podofo/__init__.py index b362cdef2e..0f81fc1d17 100644 --- a/src/calibre/utils/podofo/__init__.py +++ b/src/calibre/utils/podofo/__init__.py @@ -12,7 +12,7 @@ from calibre.constants import plugins, preferred_encoding from calibre.ebooks.metadata import authors_to_string from calibre.ptempfile import TemporaryDirectory from calibre.utils.ipc.simple_worker import fork_job, WorkerError -from polyglot.builtins import unicode_type +from polyglot.builtins import unicode_type, range def get_podofo(): @@ -110,7 +110,7 @@ def delete_all_but(path, pages): p.load(raw) total = p.page_count() pages = {total + x if x < 0 else x for x in pages} - for page in xrange(total-1, -1, -1): + for page in range(total-1, -1, -1): if page not in pages: p.delete_page(page) @@ -144,7 +144,7 @@ def test_outline(src): p.load(raw) total = p.page_count() root = p.create_outline(u'Table of Contents') - for i in xrange(0, total): + for i in range(0, total): root.create(u'Page %d'%i, i, True) raw = p.write() out = '/tmp/outlined.pdf'