diff --git a/src/calibre/ebooks/compression/tcr.py b/src/calibre/ebooks/compression/tcr.py index c02da7bee8..565399eb4d 100644 --- a/src/calibre/ebooks/compression/tcr.py +++ b/src/calibre/ebooks/compression/tcr.py @@ -43,8 +43,8 @@ class TCRCompressor(object): possible_codes.append(single_code.pop()) for code in possible_codes: - self.coded_txt = self.coded_txt.replace(code, code[0]) - self.codes[ord(code[0])] = b'%s%s' % (self.codes[ord(code[0])], self.codes[ord(code[1])]) + self.coded_txt = self.coded_txt.replace(code, code[0:1]) + self.codes[ord(code[0:1])] = b'%s%s' % (self.codes[ord(code[0:1])], self.codes[ord(code[1:2])]) def _free_unused_codes(self): ''' diff --git a/src/calibre/ebooks/djvu/djvu.py b/src/calibre/ebooks/djvu/djvu.py index 88b5d0074f..95381c982e 100644 --- a/src/calibre/ebooks/djvu/djvu.py +++ b/src/calibre/ebooks/djvu/djvu.py @@ -84,9 +84,9 @@ class DjvuChunk(object): if not res.strip(b'\0'): raise ValueError('TXTz block is completely null') l = 0 - for x in res[:3]: + for x in bytearray(res[:3]): l <<= 8 - l += ord(x) + l += x if verbose > 0 and out: print(l, file=out) txtout.write(res[3:3+l]) @@ -94,9 +94,9 @@ class DjvuChunk(object): if txtout and self.type == b'TXTa': res = self.buf[self.datastart: self.dataend] l = 0 - for x in res[:3]: + for x in bytearray(res[:3]): l <<= 8 - l += ord(x) + l += x if verbose > 0 and out: print(l, file=out) txtout.write(res[3:3+l]) diff --git a/src/calibre/ebooks/lit/reader.py b/src/calibre/ebooks/lit/reader.py index b4d0d7c373..86b0b94b3b 100644 --- a/src/calibre/ebooks/lit/reader.py +++ b/src/calibre/ebooks/lit/reader.py @@ -871,7 +871,7 @@ class LitFile(object): for i in range(1, nentries + 1): if len(data) <= 1: break - size, data = ord(data[0]), data[1:] + size, data = ord(data[0:1]), data[1:] if size == 0 or len(data) < size: break tags[i], data = data[:size], data[size:] diff --git a/src/calibre/ebooks/metadata/kfx.py b/src/calibre/ebooks/metadata/kfx.py index 33a9ff247f..d927a9469d 100644 --- a/src/calibre/ebooks/metadata/kfx.py +++ b/src/calibre/ebooks/metadata/kfx.py @@ -17,7 +17,7 @@ from calibre.utils.config_base import tweaks from calibre.utils.date import parse_only_date from calibre.utils.localization import canonicalize_lang from calibre.utils.imghdr import identify -from polyglot.builtins import unicode_type, filter +from polyglot.builtins import unicode_type, filter, map from polyglot.binary import as_base64_bytes, from_base64_bytes @@ -62,7 +62,11 @@ COVER_KEY = "cover_image_base64" def hexs(string, sep=' '): - return sep.join('%02x' % ord(b) for b in string) + if isinstance(string, bytes): + string = bytearray(string) + else: + string = map(ord, string) + return sep.join('%02x' % b for b in string) class PackedData(object): diff --git a/src/calibre/ebooks/metadata/topaz.py b/src/calibre/ebooks/metadata/topaz.py index 364df5bba7..880ee237de 100644 --- a/src/calibre/ebooks/metadata/topaz.py +++ b/src/calibre/ebooks/metadata/topaz.py @@ -277,9 +277,9 @@ class MetadataUpdater(object): offset += consumed self.md_header['tag'] = self.data[offset:offset+taglen] offset += taglen - self.md_header['flags'] = ord(self.data[offset]) + self.md_header['flags'] = ord(self.data[offset:offset+1]) offset += 1 - self.md_header['num_recs'] = ord(self.data[offset]) + self.md_header['num_recs'] = ord(self.data[offset:offset+1]) offset += 1 # print "self.md_header: %s" % self.md_header diff --git a/src/calibre/ebooks/mobi/debug/mobi6.py b/src/calibre/ebooks/mobi/debug/mobi6.py index ee6819e206..e70459c356 100644 --- a/src/calibre/ebooks/mobi/debug/mobi6.py +++ b/src/calibre/ebooks/mobi/debug/mobi6.py @@ -79,7 +79,7 @@ class SecondaryIndexHeader(object): # {{{ raise ValueError('TAGX last entry is not EOF') idxt0_pos = self.header_length+self.tagx_header_length - num = ord(raw[idxt0_pos]) + num = ord(raw[idxt0_pos:idxt0_pos+1]) count_pos = idxt0_pos+1+num self.last_entry = raw[idxt0_pos+1:count_pos] self.ncx_count, = struct.unpack(b'>H', raw[count_pos:count_pos+2]) diff --git a/src/calibre/ebooks/pdb/plucker/reader.py b/src/calibre/ebooks/pdb/plucker/reader.py index 9bf9b1ad6b..76555dc706 100644 --- a/src/calibre/ebooks/pdb/plucker/reader.py +++ b/src/calibre/ebooks/pdb/plucker/reader.py @@ -496,11 +496,11 @@ class Reader(FormatReader): html += u'

' paragraph_open = True - c = ord(d[offset]) + c = ord(d[offset:offset+1]) # PHTML "functions" if c == 0x0: offset += 1 - c = ord(d[offset]) + c = ord(d[offset:offset+1]) # Page link begins # 2 Bytes # record ID diff --git a/src/calibre/gui2/store/search/models.py b/src/calibre/gui2/store/search/models.py index 05b86c7024..8f83333ee3 100644 --- a/src/calibre/gui2/store/search/models.py +++ b/src/calibre/gui2/store/search/models.py @@ -333,7 +333,7 @@ class SearchFilter(SearchQueryParser): def __init__(self): SearchQueryParser.__init__(self, locations=self.USABLE_LOCATIONS) - self.srs = set([]) + self.srs = set() # remove joiner words surrounded by space or at string boundaries self.joiner_pat = re.compile(r'(^|\s)(and|not|or|a|the|is|of)(\s|$)', re.IGNORECASE) self.punctuation_table = {ord(x):' ' for x in string.punctuation} diff --git a/src/calibre/utils/__init__.py b/src/calibre/utils/__init__.py index abed0fd8b0..ca4af880d1 100644 --- a/src/calibre/utils/__init__.py +++ b/src/calibre/utils/__init__.py @@ -41,7 +41,7 @@ def unpickle_binary_string(data): sz, = struct.unpack_from('> 4 nibble1 = b & 0x0f @@ -144,7 +144,7 @@ class Dict(ByteCode): self.stack = [] index = 0 while index < len(data): - b0 = ord(data[index]) + b0 = ord(data[index:index+1]) index += 1 handler = getattr(self, self.operand_encoding[b0]) value, index = handler(b0, data, index) @@ -153,7 +153,7 @@ class Dict(ByteCode): def do_operator(self, b0, data, index): if b0 == 12: - op = (b0, ord(data[index])) + op = (b0, ord(data[index:index+1])) index += 1 else: op = b0 diff --git a/src/css_selectors/parser.py b/src/css_selectors/parser.py index d9575eef3c..edb4db15c0 100644 --- a/src/css_selectors/parser.py +++ b/src/css_selectors/parser.py @@ -18,7 +18,7 @@ from css_selectors.errors import SelectorSyntaxError, ExpressionError from polyglot.builtins import unicode_type, codepoint_to_chr, range -utab = {c:c+32 for c in range(ord('A'), ord('Z')+1)} +utab = {c:c+32 for c in range(ord(u'A'), ord(u'Z')+1)} if sys.version_info.major < 3: tab = string.maketrans(string.ascii_uppercase, string.ascii_lowercase)