more misc recomendation (auto-fix)

ruff 'PIE'
This commit is contained in:
un-pogaz 2025-01-24 11:14:21 +01:00
parent b2c90ff460
commit e006114716
52 changed files with 99 additions and 111 deletions

View File

@ -32,14 +32,11 @@ class AnimalPolitico(BasicNewsRecipe):
def parse_index(self): def parse_index(self):
soup = self.index_to_soup('http://www.animalpolitico.com/') soup = self.index_to_soup('http://www.animalpolitico.com/')
articles = [] articles = []
for a in soup(**{ for a in soup(name='a', attrs={
'name': 'a',
'attrs': {
'href': True, 'title': True, 'href': True, 'title': True,
'data-author': True, 'data-type': True, 'data-author': True, 'data-type': True,
'data-home-title': True 'data-home-title': True
} }):
}):
title = a['title'] title = a['title']
url = a['href'] url = a['href']
author = a['data-author'] author = a['data-author']

View File

@ -32,7 +32,7 @@ class brewiarz(BasicNewsRecipe):
now = datetime.datetime.now() now = datetime.datetime.now()
feeds = [] feeds = []
for i in range(0, self.next_days): for i in range(self.next_days):
url_date = now + datetime.timedelta(days=i) url_date = now + datetime.timedelta(days=i)
url_date_month = url_date.strftime('%m') url_date_month = url_date.strftime('%m')
url_date_month_roman = dec2rom_dict[url_date_month] url_date_month_roman = dec2rom_dict[url_date_month]

View File

@ -142,7 +142,7 @@ class expansion_spanish(BasicNewsRecipe):
link = link.split('/')[-2] link = link.split('/')[-2]
a = ['0B', '0C', '0D', '0E', '0F', '0G', '0N', '0L0S', '0A'] a = ['0B', '0C', '0D', '0E', '0F', '0G', '0N', '0L0S', '0A']
b = ['.', '/', '?', '-', '=', '&', '.com', 'www.', '0'] b = ['.', '/', '?', '-', '=', '&', '.com', 'www.', '0']
for i in range(0, len(a)): for i in range(len(a)):
link = link.replace(a[i], b[i]) link = link.replace(a[i], b[i])
link = 'http://' + link link = 'http://' + link

View File

@ -48,7 +48,7 @@ class IlSole24Ore(BasicNewsRecipe):
link = link.split('/')[-2] link = link.split('/')[-2]
a = ['0B', '0C', '0D', '0E', '0F', '0G', '0N', '0L0S', '0A'] a = ['0B', '0C', '0D', '0E', '0F', '0G', '0N', '0L0S', '0A']
b = ['.', '/', '?', '-', '=', '&', '.com', 'www.', '0'] b = ['.', '/', '?', '-', '=', '&', '.com', 'www.', '0']
for i in range(0, len(a)): for i in range(len(a)):
link = link.replace(a[i], b[i]) link = link.replace(a[i], b[i])
link = 'http://' + link link = 'http://' + link
return link return link

View File

@ -126,7 +126,7 @@ class OrangeCountyRegister(BasicNewsRecipe):
# articleList = [] # articleList = []
ans = [] ans = []
feedsCount = len(self.feeds) feedsCount = len(self.feeds)
for x in range(0, feedsCount - 1): # should be ,4 for x in range(feedsCount - 1): # should be ,4
feedarticles = self.parsePage(x) feedarticles = self.parsePage(x)
if feedarticles is not None: if feedarticles is not None:
ans.append((self.feeds[x][0], feedarticles)) ans.append((self.feeds[x][0], feedarticles))

View File

@ -84,7 +84,7 @@ class RealClear(BasicNewsRecipe):
baseParse = urlparse(pageURL) baseParse = urlparse(pageURL)
baseURL = baseParse[0] + '://' + baseParse[1] baseURL = baseParse[0] + '://' + baseParse[1]
hintsCount = len(self.printhints) hintsCount = len(self.printhints)
for x in range(0, hintsCount): for x in range(hintsCount):
if pageURL.find(self.printhints[x][0]) == -1: if pageURL.find(self.printhints[x][0]) == -1:
continue continue
print('Trying ' + self.printhints[x][0]) print('Trying ' + self.printhints[x][0])
@ -218,7 +218,7 @@ class RealClear(BasicNewsRecipe):
# articleList = [] # articleList = []
ans = [] ans = []
feedsCount = len(self.feedsets) feedsCount = len(self.feedsets)
for x in range(0, feedsCount): # should be ,4 for x in range(feedsCount): # should be ,4
feedarticles = self.parseRSS(x) feedarticles = self.parseRSS(x)
if feedarticles is not None: if feedarticles is not None:
ans.append((self.feedsets[x][0], feedarticles)) ans.append((self.feedsets[x][0], feedarticles))

View File

@ -22,14 +22,14 @@ quote-style = 'single'
explicit-preview-rules = true explicit-preview-rules = true
ignore = [ ignore = [
'E402', 'E722', 'E741', 'E402', 'E722', 'E741',
'UP012', 'UP030', 'UP032', 'UP038', 'C413', 'C420', 'UP012', 'UP030', 'UP032', 'UP038', 'C413', 'C420', 'PIE790', 'PIE794', 'PIE810',
'RUF001', 'RUF002', 'RUF003', 'RUF005', 'RUF012', 'RUF013', 'RUF015', 'RUF031', 'RUF100', 'RUF001', 'RUF002', 'RUF003', 'RUF005', 'RUF012', 'RUF013', 'RUF015', 'RUF031', 'RUF100',
'F841', # because in preview, unused tuple unpacking variable that not use dummy syntax (prefix '_' underscore) 'F841', # because in preview, unused tuple unpacking variable that not use dummy syntax (prefix '_' underscore)
# raise error 'unused-variable', sigh (https://github.com/astral-sh/ruff/issues/8884) # raise error 'unused-variable', sigh (https://github.com/astral-sh/ruff/issues/8884)
] ]
select = [ select = [
'E', 'F', 'I', 'W', 'INT', 'E', 'F', 'I', 'W', 'INT',
'Q', 'UP', 'YTT', 'TID', 'C4', 'COM818', 'Q', 'UP', 'YTT', 'TID', 'C4', 'COM818', 'PIE',
'RUF', # nota: RUF can flag many unsolicited errors 'RUF', # nota: RUF can flag many unsolicited errors
# preview rules # preview rules
'RUF051', 'RUF056', # useless dict operation 'RUF051', 'RUF056', # useless dict operation

View File

@ -1303,7 +1303,7 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
if will_use_cache: if will_use_cache:
books_on_device = [] books_on_device = []
self._debug('caching. count=', count) self._debug('caching. count=', count)
for i in range(0, count): for i in range(count):
opcode, result = self._receive_from_client(print_debug_info=False) opcode, result = self._receive_from_client(print_debug_info=False)
books_on_device.append(result) books_on_device.append(result)
@ -1356,7 +1356,7 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
self._call_client('NOOP', {'priKey':priKey}, self._call_client('NOOP', {'priKey':priKey},
print_debug_info=False, wait_for_response=False) print_debug_info=False, wait_for_response=False)
for i in range(0, count): for i in range(count):
if (i % 100) == 0: if (i % 100) == 0:
self._debug('getting book metadata. Done', i, 'of', count) self._debug('getting book metadata. Done', i, 'of', count)
opcode, result = self._receive_from_client(print_debug_info=False) opcode, result = self._receive_from_client(print_debug_info=False)
@ -1539,7 +1539,7 @@ class SMART_DEVICE_APP(DeviceConfig, DevicePlugin):
for path in paths: for path in paths:
new_paths.append(self._strip_prefix(path)) new_paths.append(self._strip_prefix(path))
opcode, result = self._call_client('DELETE_BOOK', {'lpaths': new_paths}) opcode, result = self._call_client('DELETE_BOOK', {'lpaths': new_paths})
for i in range(0, len(new_paths)): for i in range(len(new_paths)):
opcode, result = self._receive_from_client(False) opcode, result = self._receive_from_client(False)
self._debug('removed book with UUID', result['uuid']) self._debug('removed book with UUID', result['uuid'])
self._debug('removed', len(new_paths), 'books') self._debug('removed', len(new_paths), 'books')

View File

@ -98,7 +98,7 @@ class DeviceConfig:
if cls.EXTRA_CUSTOMIZATION_MESSAGE: if cls.EXTRA_CUSTOMIZATION_MESSAGE:
if isinstance(cls.EXTRA_CUSTOMIZATION_MESSAGE, list): if isinstance(cls.EXTRA_CUSTOMIZATION_MESSAGE, list):
ec = [] ec = []
for i in range(0, len(cls.EXTRA_CUSTOMIZATION_MESSAGE)): for i in range(len(cls.EXTRA_CUSTOMIZATION_MESSAGE)):
if config_widget.opt_extra_customization[i] is None: if config_widget.opt_extra_customization[i] is None:
ec.append(None) ec.append(None)
continue continue

View File

@ -105,7 +105,7 @@ class TCRCompressor:
# Generate the code dictionary. # Generate the code dictionary.
code_dict = [] code_dict = []
for i in range(0, 256): for i in range(256):
if i in self.unused_codes: if i in self.unused_codes:
code_dict.append(b'\0') code_dict.append(b'\0')
else: else:

View File

@ -151,7 +151,7 @@ class DocAnalysis:
# max = l # max = l
# print('max line found is '+str(max)) # print('max line found is '+str(max))
# Build the line length histogram # Build the line length histogram
hRaw = [0 for i in range(0,buckets)] hRaw = [0 for i in range(buckets)]
for line in self.lines: for line in self.lines:
l = len(line) l = len(line)
if l > minLineLength and l < maxLineLength: if l > minLineLength and l < maxLineLength:
@ -170,7 +170,7 @@ class DocAnalysis:
# Find the biggest bucket # Find the biggest bucket
maxValue = 0 maxValue = 0
for i in range(0,len(h)): for i in range(len(h)):
if h[i] > maxValue: if h[i] > maxValue:
maxValue = h[i] maxValue = h[i]

View File

@ -164,7 +164,7 @@ class mssha1:
D = self.H3 D = self.H3
E = self.H4 E = self.H4
for t in range(0, 80): for t in range(80):
TEMP = _rotateLeft(A, 5) + f[t](B, C, D) + E + W[t] + K[t//20] TEMP = _rotateLeft(A, 5) + f[t](B, C, D) + E + W[t] + K[t//20]
E = D E = D
D = C D = C

View File

@ -244,7 +244,7 @@ class Row:
i = -1 i = -1
cell = None cell = None
for cell in self.cells: for cell in self.cells:
for k in range(0, cell.colspan): for k in range(cell.colspan):
if i == col: if i == col:
break break
i += 1 i += 1

View File

@ -68,7 +68,7 @@ def set_metadata(stream, mi):
if pheader.section_data(0) != 132: if pheader.section_data(0) != 132:
return return
sections = [pheader.section_data(x) for x in range(0, pheader.section_count())] sections = [pheader.section_data(x) for x in range(pheader.section_count())]
hr = HeaderRecord(sections[0]) hr = HeaderRecord(sections[0])
if hr.compression not in (2, 10): if hr.compression not in (2, 10):

View File

@ -22,7 +22,7 @@ def get_metadata(stream, extract_cover=True):
stream.seek(0) stream.seek(0)
mdata = '' mdata = ''
for x in range(0, 4): for x in range(4):
line = stream.readline().decode('utf-8', 'replace') line = stream.readline().decode('utf-8', 'replace')
if not line: if not line:
break break

View File

@ -114,7 +114,7 @@ def section_lengths(header):
print('Section Sizes') print('Section Sizes')
print('') print('')
for i in range(0, header.section_count()): for i in range(header.section_count()):
size = len(header.section_data(i)) size = len(header.section_data(i))
if size > 65505: if size > 65505:
message = '<--- Over!' message = '<--- Over!'

View File

@ -157,7 +157,7 @@ class Reader132(FormatReader):
os.makedirs(os.path.join(output_dir, 'images/')) os.makedirs(os.path.join(output_dir, 'images/'))
images = [] images = []
with CurrentDir(os.path.join(output_dir, 'images/')): with CurrentDir(os.path.join(output_dir, 'images/')):
for i in range(0, self.header_record.num_image_pages): for i in range(self.header_record.num_image_pages):
name, img = self.get_image(self.header_record.image_data_offset + i) name, img = self.get_image(self.header_record.image_data_offset + i)
images.append(name) images.append(name)
with open(name, 'wb') as imgf: with open(name, 'wb') as imgf:
@ -210,7 +210,7 @@ class Reader132(FormatReader):
os.makedirs(output_dir) os.makedirs(output_dir)
with CurrentDir(output_dir): with CurrentDir(output_dir):
for i in range(0, self.header_record.num_image_pages): for i in range(self.header_record.num_image_pages):
name, img = self.get_image(self.header_record.image_data_offset + i) name, img = self.get_image(self.header_record.image_data_offset + i)
with open(name, 'wb') as imgf: with open(name, 'wb') as imgf:
imgf.write(img) imgf.write(img)

View File

@ -160,7 +160,7 @@ class Reader202(FormatReader):
os.makedirs(output_dir) os.makedirs(output_dir)
with CurrentDir(output_dir): with CurrentDir(output_dir):
for i in range(0, self.header_record.num_image_pages): for i in range(self.header_record.num_image_pages):
name, img = self.get_image(self.header_record.image_data_offset + i) name, img = self.get_image(self.header_record.image_data_offset + i)
with open(name, 'wb') as imgf: with open(name, 'wb') as imgf:
imgf.write(img) imgf.write(img)

View File

@ -32,7 +32,7 @@ class Writer(FormatWriter):
section_lengths = [len(header_record)] section_lengths = [len(header_record)]
self.log.info('Compessing data...') self.log.info('Compessing data...')
for i in range(0, len(txt_records)): for i in range(len(txt_records)):
self.log.debug('\tCompressing record %i' % i) self.log.debug('\tCompressing record %i' % i)
txt_records[i] = compress_doc(txt_records[i]) txt_records[i] = compress_doc(txt_records[i])
section_lengths.append(len(txt_records[i])) section_lengths.append(len(txt_records[i]))
@ -55,7 +55,7 @@ class Writer(FormatWriter):
txt_length = len(txt) txt_length = len(txt)
txt_records = [] txt_records = []
for i in range(0, (len(txt) // MAX_RECORD_SIZE) + 1): for i in range((len(txt) // MAX_RECORD_SIZE) + 1):
txt_records.append(txt[i * MAX_RECORD_SIZE: (i * MAX_RECORD_SIZE) + MAX_RECORD_SIZE]) txt_records.append(txt[i * MAX_RECORD_SIZE: (i * MAX_RECORD_SIZE) + MAX_RECORD_SIZE])
return txt_records, txt_length return txt_records, txt_length

View File

@ -32,7 +32,7 @@ class Writer(FormatWriter):
section_lengths = [] section_lengths = []
compressor = zlib.compressobj(9) compressor = zlib.compressobj(9)
self.log.info('Compressing data...') self.log.info('Compressing data...')
for i in range(0, len(txt_records)): for i in range(len(txt_records)):
self.log.debug('\tCompressing record %i' % i) self.log.debug('\tCompressing record %i' % i)
txt_records[i] = compressor.compress(txt_records[i]) txt_records[i] = compressor.compress(txt_records[i])
txt_records[i] = txt_records[i] + compressor.flush(zlib.Z_FULL_FLUSH) txt_records[i] = txt_records[i] + compressor.flush(zlib.Z_FULL_FLUSH)
@ -60,7 +60,7 @@ class Writer(FormatWriter):
txt_length = len(txt) txt_length = len(txt)
txt_records = [] txt_records = []
for i in range(0, (len(txt) / MAX_RECORD_SIZE) + 1): for i in range((len(txt) / MAX_RECORD_SIZE) + 1):
txt_records.append(txt[i * MAX_RECORD_SIZE : (i * MAX_RECORD_SIZE) + MAX_RECORD_SIZE]) txt_records.append(txt[i * MAX_RECORD_SIZE : (i * MAX_RECORD_SIZE) + MAX_RECORD_SIZE])
return txt_records, txt_length return txt_records, txt_length

View File

@ -47,7 +47,7 @@ from polyglot.urllib import urlparse
# }}} # }}}
OK, KILL_SIGNAL = range(0, 2) OK, KILL_SIGNAL = range(2)
HANG_TIME = 60 # seconds HANG_TIME = 60 # seconds

View File

@ -517,7 +517,7 @@ class Column:
def collect_stats(self): def collect_stats(self):
if len(self.elements) > 1: if len(self.elements) > 1:
gaps = [self.elements[i+1].top - self.elements[i].bottom for i in gaps = [self.elements[i+1].top - self.elements[i].bottom for i in
range(0, len(self.elements)-1)] range(len(self.elements)-1)]
self.average_line_separation = sum(gaps)/len(gaps) self.average_line_separation = sum(gaps)/len(gaps)
for i, elem in enumerate(self.elements): for i, elem in enumerate(self.elements):
left_margin = elem.left - self.left left_margin = elem.left - self.left

View File

@ -18,7 +18,7 @@ def unique_name(name, used_names):
else: else:
ext = os.path.splitext(name)[1][:3] ext = os.path.splitext(name)[1][:3]
base_name = name[:22] base_name = name[:22]
for i in range(0, 9999): for i in range(9999):
name = '{}-{}.{}'.format(str(i).rjust('0', 4)[:4], base_name, ext) name = '{}-{}.{}'.format(str(i).rjust('0', 4)[:4], base_name, ext)
if name not in used_names: if name not in used_names:
break break

View File

@ -211,7 +211,7 @@ class RBMLizer:
text += self.dump_text(item, stylizer, page, tag_stack) text += self.dump_text(item, stylizer, page, tag_stack)
close_tag_list = [] close_tag_list = []
for i in range(0, tag_count): for i in range(tag_count):
close_tag_list.insert(0, tag_stack.pop()) close_tag_list.insert(0, tag_stack.pop())
text += self.close_tags(close_tag_list) text += self.close_tags(close_tag_list)
@ -223,7 +223,7 @@ class RBMLizer:
def close_tags(self, tags): def close_tags(self, tags):
text = [''] text = ['']
for i in range(0, len(tags)): for i in range(len(tags)):
tag = tags.pop() tag = tags.pop()
text.append('</%s>' % tag) text.append('</%s>' % tag)

View File

@ -100,7 +100,7 @@ class RBWriter:
size = len(text) size = len(text)
pages = [] pages = []
for i in range(0, (len(text) + TEXT_RECORD_SIZE-1) // TEXT_RECORD_SIZE): for i in range((len(text) + TEXT_RECORD_SIZE-1) // TEXT_RECORD_SIZE):
zobj = zlib.compressobj(9, zlib.DEFLATED, 13, 8, 0) zobj = zlib.compressobj(9, zlib.DEFLATED, 13, 8, 0)
pages.append(zobj.compress(text[i * TEXT_RECORD_SIZE : (i * TEXT_RECORD_SIZE) + TEXT_RECORD_SIZE]) + zobj.flush()) pages.append(zobj.compress(text[i * TEXT_RECORD_SIZE : (i * TEXT_RECORD_SIZE) + TEXT_RECORD_SIZE]) + zobj.flush())

View File

@ -278,7 +278,7 @@ class RTFMLizer:
for item in elem: for item in elem:
text += self.dump_text(item, stylizer, tag_stack) text += self.dump_text(item, stylizer, tag_stack)
for i in range(0, tag_count): for i in range(tag_count):
end_tag = tag_stack.pop() end_tag = tag_stack.pop()
if end_tag != 'block': if end_tag != 'block':
if tag in BLOCK_TAGS: if tag in BLOCK_TAGS:

View File

@ -69,7 +69,7 @@ class AllGUIActions(InterfaceAction):
# 'toolbar-device' depending on whether a device is connected. # 'toolbar-device' depending on whether a device is connected.
location = 'toolbar' + ('-device' if self.gui.location_manager.has_device else '') location = 'toolbar' + ('-device' if self.gui.location_manager.has_device else '')
for model in (AllModel(location, self.gui), CurrentModel(location, self.gui)): for model in (AllModel(location, self.gui), CurrentModel(location, self.gui)):
for i in range(0, model.rowCount(None)): for i in range(model.rowCount(None)):
dex = model.index(i) dex = model.index(i)
name = model.names((dex,))[0] # this is the action name name = model.names((dex,))[0] # this is the action name
if name is not None and not name.startswith('---'): if name is not None and not name.startswith('---'):

View File

@ -37,7 +37,7 @@ class MarkWithTextDialog(QDialog):
history = textbox.all_items history = textbox.all_items
button_rows = min(4, len(history)-1) button_rows = min(4, len(history)-1)
for i in range(0, button_rows): for i in range(button_rows):
if i == 0: if i == 0:
layout.addWidget(QLabel(_('Recently used values:')), 0, 0, 1, 2) layout.addWidget(QLabel(_('Recently used values:')), 0, 0, 1, 2)
button = QPushButton() button = QPushButton()

View File

@ -139,7 +139,7 @@ class SearchAndReplaceWidget(Widget, Ui_Form):
def cell_rearrange(self, i): def cell_rearrange(self, i):
row = self.search_replace.currentRow() row = self.search_replace.currentRow()
for col in range(0, self.search_replace.columnCount()): for col in range(self.search_replace.columnCount()):
item1 = self.search_replace.item(row, col) item1 = self.search_replace.item(row, col)
item2 = self.search_replace.item(row+i, col) item2 = self.search_replace.item(row+i, col)
value = item1.text() value = item1.text()
@ -227,9 +227,9 @@ class SearchAndReplaceWidget(Widget, Ui_Form):
def get_definitions(self): def get_definitions(self):
ans = [] ans = []
for row in range(0, self.search_replace.rowCount()): for row in range(self.search_replace.rowCount()):
colItems = [] colItems = []
for col in range(0, self.search_replace.columnCount()): for col in range(self.search_replace.columnCount()):
colItems.append(str(self.search_replace.item(row, col).text())) colItems.append(str(self.search_replace.item(row, col).text()))
ans.append(colItems) ans.append(colItems)
return ans return ans

View File

@ -166,7 +166,7 @@ class TabbedDeviceConfig(QTabWidget):
try: try:
return super().__getattr__(attr_name) return super().__getattr__(attr_name)
except AttributeError as ae: except AttributeError as ae:
for i in range(0, self.count()): for i in range(self.count()):
atab = self.widget(i) atab = self.widget(i)
try: try:
return getattr(atab, attr_name) return getattr(atab, attr_name)
@ -346,7 +346,7 @@ class ExtraCustomization(DeviceConfigTab): # {{{
ec = [] ec = []
if self.extra_customization_message: if self.extra_customization_message:
if isinstance(self.extra_customization_message, list): if isinstance(self.extra_customization_message, list):
for i in range(0, len(self.extra_customization_message)): for i in range(len(self.extra_customization_message)):
if self.opt_extra_customization[i] is None: if self.opt_extra_customization[i] is None:
ec.append(None) ec.append(None)
continue continue

View File

@ -421,14 +421,14 @@ class CheckLibraryDialog(QDialog):
self.log.blockSignals(True) self.log.blockSignals(True)
if col: if col:
node.setCheckState(col, to_what) node.setCheckState(col, to_what)
for i in range(0, node.childCount()): for i in range(node.childCount()):
node.child(i).setCheckState(2, to_what) node.child(i).setCheckState(2, to_what)
self.log.blockSignals(False) self.log.blockSignals(False)
def is_child_delete_checked(node): def is_child_delete_checked(node):
checked = False checked = False
all_checked = True all_checked = True
for i in range(0, node.childCount()): for i in range(node.childCount()):
c = node.child(i).checkState(2) c = node.child(i).checkState(2)
checked = checked or c == Qt.CheckState.Checked checked = checked or c == Qt.CheckState.Checked
all_checked = all_checked and c == Qt.CheckState.Checked all_checked = all_checked and c == Qt.CheckState.Checked
@ -522,7 +522,7 @@ class CheckLibraryDialog(QDialog):
def fix_missing_formats(self): def fix_missing_formats(self):
tl = self.top_level_items['missing_formats'] tl = self.top_level_items['missing_formats']
child_count = tl.childCount() child_count = tl.childCount()
for i in range(0, child_count): for i in range(child_count):
item = tl.child(i) item = tl.child(i)
id = int(item.data(0, Qt.ItemDataRole.UserRole)) id = int(item.data(0, Qt.ItemDataRole.UserRole))
all = self.db.formats(id, index_is_id=True, verify_formats=False) all = self.db.formats(id, index_is_id=True, verify_formats=False)
@ -535,7 +535,7 @@ class CheckLibraryDialog(QDialog):
def fix_missing_covers(self): def fix_missing_covers(self):
tl = self.top_level_items['missing_covers'] tl = self.top_level_items['missing_covers']
child_count = tl.childCount() child_count = tl.childCount()
for i in range(0, child_count): for i in range(child_count):
item = tl.child(i) item = tl.child(i)
id = int(item.data(0, Qt.ItemDataRole.UserRole)) id = int(item.data(0, Qt.ItemDataRole.UserRole))
self.db.set_has_cover(id, False) self.db.set_has_cover(id, False)
@ -543,7 +543,7 @@ class CheckLibraryDialog(QDialog):
def fix_extra_covers(self): def fix_extra_covers(self):
tl = self.top_level_items['extra_covers'] tl = self.top_level_items['extra_covers']
child_count = tl.childCount() child_count = tl.childCount()
for i in range(0, child_count): for i in range(child_count):
item = tl.child(i) item = tl.child(i)
id = int(item.data(0, Qt.ItemDataRole.UserRole)) id = int(item.data(0, Qt.ItemDataRole.UserRole))
self.db.set_has_cover(id, True) self.db.set_has_cover(id, True)

View File

@ -346,7 +346,7 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
select_item = None select_item = None
if id_to_select: if id_to_select:
use_as = tweaks['categories_use_field_for_author_name'] == 'author_sort' use_as = tweaks['categories_use_field_for_author_name'] == 'author_sort'
for row in range(0, len(auts_to_show)): for row in range(len(auts_to_show)):
if is_first_letter: if is_first_letter:
item_txt = str(self.table.item(row, AUTHOR_SORT_COLUMN).text() if use_as item_txt = str(self.table.item(row, AUTHOR_SORT_COLUMN).text() if use_as
else self.table.item(row, AUTHOR_COLUMN).text()) else self.table.item(row, AUTHOR_COLUMN).text())
@ -382,7 +382,7 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
def save_state(self): def save_state(self):
self.table_column_widths = [] self.table_column_widths = []
for c in range(0, self.table.columnCount()): for c in range(self.table.columnCount()):
self.table_column_widths.append(self.table.columnWidth(c)) self.table_column_widths.append(self.table.columnWidth(c))
gprefs['general_category_editor_row_height'] = self.table.verticalHeader().sectionSize(0) gprefs['general_category_editor_row_height'] = self.table.verticalHeader().sectionSize(0)
gprefs['manage_authors_table_widths'] = self.table_column_widths gprefs['manage_authors_table_widths'] = self.table_column_widths
@ -390,7 +390,7 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
def table_column_resized(self, col, old, new): def table_column_resized(self, col, old, new):
self.table_column_widths = [] self.table_column_widths = []
for c in range(0, self.table.columnCount()): for c in range(self.table.columnCount()):
self.table_column_widths.append(self.table.columnWidth(c)) self.table_column_widths.append(self.table.columnWidth(c))
def resizeEvent(self, *args): def resizeEvent(self, *args):
@ -404,7 +404,7 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
# widths will be remembered # widths will be remembered
w = self.table.width() - 25 - self.table.verticalHeader().width() w = self.table.width() - 25 - self.table.verticalHeader().width()
w //= self.table.columnCount() w //= self.table.columnCount()
for c in range(0, self.table.columnCount()): for c in range(self.table.columnCount()):
self.table.setColumnWidth(c, w) self.table.setColumnWidth(c, w)
self.save_state() self.save_state()
@ -543,7 +543,7 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
st = icu_lower(str(self.find_box.currentText())) st = icu_lower(str(self.find_box.currentText()))
if not st: if not st:
return return
for _ in range(0, self.table.rowCount()*2): for _ in range(self.table.rowCount()*2):
self.start_find_pos = (self.start_find_pos + 1) % (self.table.rowCount()*2) self.start_find_pos = (self.start_find_pos + 1) % (self.table.rowCount()*2)
r = (self.start_find_pos//2) % self.table.rowCount() r = (self.start_find_pos//2) % self.table.rowCount()
c = self.start_find_pos % 2 c = self.start_find_pos % 2
@ -600,7 +600,7 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
def do_recalc_author_sort(self): def do_recalc_author_sort(self):
with self.no_cell_changed(): with self.no_cell_changed():
for row in range(0,self.table.rowCount()): for row in range(self.table.rowCount()):
item_aut = self.table.item(row, AUTHOR_COLUMN) item_aut = self.table.item(row, AUTHOR_COLUMN)
id_ = int(item_aut.data(Qt.ItemDataRole.UserRole)) id_ = int(item_aut.data(Qt.ItemDataRole.UserRole))
aut = str(item_aut.text()).strip() aut = str(item_aut.text()).strip()
@ -620,7 +620,7 @@ class EditAuthorsDialog(QDialog, Ui_EditAuthorsDialog):
def do_auth_sort_to_author(self): def do_auth_sort_to_author(self):
with self.no_cell_changed(): with self.no_cell_changed():
for row in range(0,self.table.rowCount()): for row in range(self.table.rowCount()):
aus = str(self.table.item(row, AUTHOR_SORT_COLUMN).text()).strip() aus = str(self.table.item(row, AUTHOR_SORT_COLUMN).text()).strip()
item_aut = self.table.item(row, AUTHOR_COLUMN) item_aut = self.table.item(row, AUTHOR_COLUMN)
id_ = int(item_aut.data(Qt.ItemDataRole.UserRole)) id_ = int(item_aut.data(Qt.ItemDataRole.UserRole))

View File

@ -238,7 +238,7 @@ class EnumValuesEdit(QDialog):
values = [] values = []
colors = [] colors = []
id_map = {} id_map = {}
for i in range(0, self.table.rowCount()): for i in range(self.table.rowCount()):
it = self.table.item(i, self.VALUE_COLUMN) it = self.table.item(i, self.VALUE_COLUMN)
v = str(it.text()) v = str(it.text())
if not v: if not v:

View File

@ -169,7 +169,7 @@ class MatchBooks(QDialog, Ui_MatchBooks):
# widths will be remembered # widths will be remembered
w = self.books_table.width() - 25 - self.books_table.verticalHeader().width() w = self.books_table.width() - 25 - self.books_table.verticalHeader().width()
w //= self.books_table.columnCount() w //= self.books_table.columnCount()
for c in range(0, self.books_table.columnCount()): for c in range(self.books_table.columnCount()):
self.books_table.setColumnWidth(c, w) self.books_table.setColumnWidth(c, w)
self.save_state() self.save_state()
@ -184,7 +184,7 @@ class MatchBooks(QDialog, Ui_MatchBooks):
def save_state(self): def save_state(self):
self.books_table_column_widths = [] self.books_table_column_widths = []
for c in range(0, self.books_table.columnCount()): for c in range(self.books_table.columnCount()):
self.books_table_column_widths.append(self.books_table.columnWidth(c)) self.books_table_column_widths.append(self.books_table.columnWidth(c))
gprefs['match_books_dialog_books_table_widths'] = self.books_table_column_widths gprefs['match_books_dialog_books_table_widths'] = self.books_table_column_widths
self.save_geometry(gprefs, 'match_books_dialog_geometry') self.save_geometry(gprefs, 'match_books_dialog_geometry')

View File

@ -990,7 +990,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog):
self.s_r_src_ident_label.setVisible(True) self.s_r_src_ident_label.setVisible(True)
self.s_r_src_ident.setVisible(True) self.s_r_src_ident.setVisible(True)
for i in range(0, self.s_r_number_of_books): for i in range(self.s_r_number_of_books):
w = getattr(self, 'book_%d_text'%(i+1)) w = getattr(self, 'book_%d_text'%(i+1))
mi = self.db.get_metadata(self.ids[i], index_is_id=True) mi = self.db.get_metadata(self.ids[i], index_is_id=True)
src = self.s_r_sf_itemdata(idx) src = self.s_r_sf_itemdata(idx)
@ -1060,7 +1060,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog):
tt = error_message(self.s_r_error) tt = error_message(self.s_r_error)
self.test_result.setText(tt) self.test_result.setText(tt)
update_status_actions(self.test_result, self.s_r_error is None, tt) update_status_actions(self.test_result, self.s_r_error is None, tt)
for i in range(0,self.s_r_number_of_books): for i in range(self.s_r_number_of_books):
getattr(self, 'book_%d_result'%(i+1)).setText('') getattr(self, 'book_%d_result'%(i+1)).setText('')
def s_r_func(self, match): def s_r_func(self, match):
@ -1184,7 +1184,7 @@ class MetadataBulkDialog(QDialog, Ui_MetadataBulkDialog):
self.s_r_set_colors() self.s_r_set_colors()
return return
for i in range(0,self.s_r_number_of_books): for i in range(self.s_r_number_of_books):
mi = self.db.get_metadata(self.ids[i], index_is_id=True) mi = self.db.get_metadata(self.ids[i], index_is_id=True)
wr = getattr(self, 'book_%d_result'%(i+1)) wr = getattr(self, 'book_%d_result'%(i+1))
try: try:

View File

@ -728,7 +728,7 @@ class Quickview(QDialog, Ui_Quickview):
# widths will be remembered # widths will be remembered
w = self.books_table.width() - 25 - self.books_table.verticalHeader().width() w = self.books_table.width() - 25 - self.books_table.verticalHeader().width()
w //= self.books_table.columnCount() w //= self.books_table.columnCount()
for c in range(0, self.books_table.columnCount()): for c in range(self.books_table.columnCount()):
self.books_table.setColumnWidth(c, w) self.books_table.setColumnWidth(c, w)
self.save_state() self.save_state()
@ -852,7 +852,7 @@ class Quickview(QDialog, Ui_Quickview):
if self.is_closed: if self.is_closed:
return return
self.books_table_column_widths = [] self.books_table_column_widths = []
for c in range(0, self.books_table.columnCount()): for c in range(self.books_table.columnCount()):
self.books_table_column_widths.append(self.books_table.columnWidth(c)) self.books_table_column_widths.append(self.books_table.columnWidth(c))
gprefs['quickview_dialog_books_table_widths'] = self.books_table_column_widths gprefs['quickview_dialog_books_table_widths'] = self.books_table_column_widths
if not self.is_pane: if not self.is_pane:

View File

@ -409,7 +409,7 @@ class SearchDialog(QDialog):
template, sep, query = re.split(r'#@#:([tdnb]):', self.current_search_text, flags=re.IGNORECASE) template, sep, query = re.split(r'#@#:([tdnb]):', self.current_search_text, flags=re.IGNORECASE)
self.template_value_box.setText(query) self.template_value_box.setText(query)
cb = self.template_test_type_box cb = self.template_test_type_box
for idx in range(0, cb.count()): for idx in range(cb.count()):
if sep == str(cb.itemData(idx)): if sep == str(cb.itemData(idx)):
cb.setCurrentIndex(idx) cb.setCurrentIndex(idx)
break break

View File

@ -605,7 +605,7 @@ class TagListEditor(QDialog, Ui_TagListEditor):
find_text = str(self.search_box.currentText()) find_text = str(self.search_box.currentText())
if not find_text: if not find_text:
return return
for _ in range(0, self.table.rowCount()): for _ in range(self.table.rowCount()):
r = self.search_item_row = (self.search_item_row + 1) % self.table.rowCount() r = self.search_item_row = (self.search_item_row + 1) % self.table.rowCount()
if self.string_contains(find_text, self.table.item(r, VALUE_COLUMN).text()): if self.string_contains(find_text, self.table.item(r, VALUE_COLUMN).text()):
self.table.setCurrentItem(self.table.item(r, VALUE_COLUMN)) self.table.setCurrentItem(self.table.item(r, VALUE_COLUMN))
@ -849,7 +849,7 @@ class TagListEditor(QDialog, Ui_TagListEditor):
def table_column_resized(self, *args): def table_column_resized(self, *args):
self.table_column_widths = [] self.table_column_widths = []
for c in range(0, self.table.columnCount()): for c in range(self.table.columnCount()):
self.table_column_widths.append(self.table.columnWidth(c)) self.table_column_widths.append(self.table.columnWidth(c))
def resizeEvent(self, *args): def resizeEvent(self, *args):
@ -863,7 +863,7 @@ class TagListEditor(QDialog, Ui_TagListEditor):
# widths will be remembered # widths will be remembered
w = self.table.width() - 25 - self.table.verticalHeader().width() w = self.table.width() - 25 - self.table.verticalHeader().width()
w //= self.table.columnCount() w //= self.table.columnCount()
for c in range(0, self.table.columnCount()): for c in range(self.table.columnCount()):
self.table.setColumnWidth(c, w) self.table.setColumnWidth(c, w)
def start_editing(self, on_row): def start_editing(self, on_row):

View File

@ -770,7 +770,7 @@ class TemplateDialog(QDialog, Ui_TemplateDialog):
tv.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows) tv.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
tv.setRowCount(len(mi)) tv.setRowCount(len(mi))
# Use our own widget to get rid of elision. setTextElideMode() doesn't work # Use our own widget to get rid of elision. setTextElideMode() doesn't work
for r in range(0, len(mi)): for r in range(len(mi)):
w = QLineEdit(tv) w = QLineEdit(tv)
w.setReadOnly(True) w.setReadOnly(True)
w.setText(mi[r].get('title', _('No title provided'))) w.setText(mi[r].get('title', _('No title provided')))
@ -1145,7 +1145,7 @@ def evaluate(book, context):
def table_column_resized(self, col, old, new): def table_column_resized(self, col, old, new):
self.table_column_widths = [] self.table_column_widths = []
for c in range(0, self.template_value.columnCount()): for c in range(self.template_value.columnCount()):
self.table_column_widths.append(self.template_value.columnWidth(c)) self.table_column_widths.append(self.template_value.columnWidth(c))
def save_geometry(self): def save_geometry(self):
@ -1289,7 +1289,7 @@ class BreakReporterBase(QDialog):
def table_column_resized(self, col, old, new): def table_column_resized(self, col, old, new):
self.table_column_widths = [] self.table_column_widths = []
for c in range(0, self.table.columnCount()): for c in range(self.table.columnCount()):
self.table_column_widths.append(self.table.columnWidth(c)) self.table_column_widths.append(self.table.columnWidth(c))
def get_field_keys(self): def get_field_keys(self):

View File

@ -732,8 +732,7 @@ class JobsDialog(QDialog, Ui_JobsDialog):
self.proxy_model.beginResetModel(), self.proxy_model.endResetModel() self.proxy_model.beginResetModel(), self.proxy_model.endResetModel()
def hide_all(self, *args): def hide_all(self, *args):
self.model.hide_jobs(list(range(0, self.model.hide_jobs(list(range(self.model.rowCount(QModelIndex()))))
self.model.rowCount(QModelIndex()))))
self.proxy_model.beginResetModel(), self.proxy_model.endResetModel() self.proxy_model.beginResetModel(), self.proxy_model.endResetModel()
def show_hidden(self, *args): def show_hidden(self, *args):

View File

@ -1366,7 +1366,7 @@ class OnDeviceSearch(SearchQueryParser): # {{{
self.model = model self.model = model
def universal_set(self): def universal_set(self):
return set(range(0, len(self.model.db))) return set(range(len(self.model.db)))
def get_matches(self, location, query): def get_matches(self, location, query):
location = location.lower().strip() location = location.lower().strip()
@ -1533,7 +1533,7 @@ class DeviceBooksModel(BooksModel): # {{{
self.count_changed() self.count_changed()
def paths_deleted(self, paths): def paths_deleted(self, paths):
self.map = list(range(0, len(self.db))) self.map = list(range(len(self.db)))
self.resort(False) self.resort(False)
self.research(True) self.research(True)
self.count_changed() self.count_changed()
@ -1669,7 +1669,7 @@ class DeviceBooksModel(BooksModel): # {{{
def set_database(self, db): def set_database(self, db):
self.custom_columns = {} self.custom_columns = {}
self.db = db self.db = db
self.map = list(range(0, len(db))) self.map = list(range(len(db)))
self.research(reset=False) self.research(reset=False)
self.resort() self.resort()
self.count_changed() self.count_changed()

View File

@ -87,7 +87,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
self.opt_columns.setColumnCount(6) self.opt_columns.setColumnCount(6)
# Set up the columns in logical index order # Set up the columns in logical index order
for p in range(0, len(self.column_headings)): for p in range(len(self.column_headings)):
self.opt_columns.setHorizontalHeaderItem(p, QTableWidgetItem(self.column_headings[p])) self.opt_columns.setHorizontalHeaderItem(p, QTableWidgetItem(self.column_headings[p]))
# Now reorder the columns into the desired visual order. Note: ignore # Now reorder the columns into the desired visual order. Note: ignore
@ -125,7 +125,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
def header_moved(self, log_index, old_v_index, new_v_index): def header_moved(self, log_index, old_v_index, new_v_index):
self.column_positions = [] self.column_positions = []
for vi in range(0, self.opt_columns.columnCount()): for vi in range(self.opt_columns.columnCount()):
self.column_positions.append(self.opt_columns.horizontalHeader().logicalIndex(vi)) self.column_positions.append(self.opt_columns.horizontalHeader().logicalIndex(vi))
self.save_geometry() self.save_geometry()
@ -158,7 +158,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
def save_geometry(self): def save_geometry(self):
# Save both the column widths and the column order # Save both the column widths and the column order
widths = [] widths = []
for i in range(0, self.opt_columns.columnCount()): for i in range(self.opt_columns.columnCount()):
widths.append(self.opt_columns.columnWidth(i)) widths.append(self.opt_columns.columnWidth(i))
gprefs.set('custcol-prefs-table-geometry', widths) gprefs.set('custcol-prefs-table-geometry', widths)
gprefs.set('custcol-prefs-column_order', self.column_positions) gprefs.set('custcol-prefs-column_order', self.column_positions)
@ -168,7 +168,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
geom = gprefs.get('custcol-prefs-table-geometry', None) geom = gprefs.get('custcol-prefs-table-geometry', None)
if geom is not None and len(geom) == self.opt_columns.columnCount(): if geom is not None and len(geom) == self.opt_columns.columnCount():
with suppress(Exception): with suppress(Exception):
for i in range(0, self.opt_columns.columnCount()): for i in range(self.opt_columns.columnCount()):
self.opt_columns.setColumnWidth(i, geom[i]) self.opt_columns.setColumnWidth(i, geom[i])
return return
self.opt_columns.resizeColumnsToContents() self.opt_columns.resizeColumnsToContents()
@ -292,11 +292,11 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
def up_column(self): def up_column(self):
count = self.get_move_count() count = self.get_move_count()
for _ in range(0, count): for _ in range(count):
row = self.opt_columns.currentRow() row = self.opt_columns.currentRow()
if row > 0: if row > 0:
self.opt_columns.setSortingEnabled(False) self.opt_columns.setSortingEnabled(False)
for i in range(0, self.opt_columns.columnCount()): for i in range(self.opt_columns.columnCount()):
lower = self.opt_columns.takeItem(row-1, i) lower = self.opt_columns.takeItem(row-1, i)
upper = self.opt_columns.takeItem(row, i) upper = self.opt_columns.takeItem(row, i)
self.opt_columns.setItem(row, i, lower) self.opt_columns.setItem(row, i, lower)
@ -309,11 +309,11 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
def down_column(self): def down_column(self):
count = self.get_move_count() count = self.get_move_count()
for _ in range(0, count): for _ in range(count):
row = self.opt_columns.currentRow() row = self.opt_columns.currentRow()
if row < self.opt_columns.rowCount()-1: if row < self.opt_columns.rowCount()-1:
self.opt_columns.setSortingEnabled(False) self.opt_columns.setSortingEnabled(False)
for i in range(0, self.opt_columns.columnCount()): for i in range(self.opt_columns.columnCount()):
lower = self.opt_columns.takeItem(row, i) lower = self.opt_columns.takeItem(row, i)
upper = self.opt_columns.takeItem(row+1, i) upper = self.opt_columns.takeItem(row+1, i)
self.opt_columns.setItem(row+1, i, lower) self.opt_columns.setItem(row+1, i, lower)
@ -365,7 +365,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
o.setRowCount(row + 1) o.setRowCount(row + 1)
self.setup_row(row, self.cc_column_key, row) self.setup_row(row, self.cc_column_key, row)
# We need to find the new item after sorting # We need to find the new item after sorting
for i in range(0, o.rowCount()): for i in range(o.rowCount()):
if self.column_order_val(i) == row: if self.column_order_val(i) == row:
o.setCurrentCell(i, 1) o.setCurrentCell(i, 1)
o.scrollTo(o.currentIndex()) o.scrollTo(o.currentIndex())

View File

@ -90,7 +90,7 @@ class ConfigWidget(ConfigWidgetBase):
def commit(self): def commit(self):
devs = {} devs = {}
for i in range(0, self.devices.count()): for i in range(self.devices.count()):
e = self.devices.item(i) e = self.devices.item(i)
dev, uid = e.data(Qt.ItemDataRole.UserRole) dev, uid = e.data(Qt.ItemDataRole.UserRole)
if dev not in devs: if dev not in devs:

View File

@ -126,7 +126,7 @@ class TbHierarchyTab(ConfigTabWidget, Ui_Form):
# Walk the items in the list box building the (node -> node) graph of # Walk the items in the list box building the (node -> node) graph of
# the option order # the option order
node = 0 node = 0
for i in range(0, 4): for i in range(4):
v = self.tb_search_order.item(i).data(Qt.ItemDataRole.UserRole) v = self.tb_search_order.item(i).data(Qt.ItemDataRole.UserRole)
# JSON dumps converts integer keys to strings, so do it explicitly # JSON dumps converts integer keys to strings, so do it explicitly
t[str(node)] = v t[str(node)] = v

View File

@ -115,7 +115,7 @@ class TbIconRulesTab(ConfigTabWidget, Ui_Form):
self.rules_table.customContextMenuRequested.connect(self.show_context_menu) self.rules_table.customContextMenuRequested.connect(self.show_context_menu)
self.rules_table.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection) self.rules_table.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection)
for i in range(0, HEADER_SECTION_COUNT): for i in range(HEADER_SECTION_COUNT):
item = self.rules_table.horizontalHeaderItem(i) item = self.rules_table.horizontalHeaderItem(i)
if i == DELETED_COLUMN: if i == DELETED_COLUMN:
item.setIcon(QIcon.cached_icon('trash.png')) item.setIcon(QIcon.cached_icon('trash.png'))
@ -221,7 +221,7 @@ class TbIconRulesTab(ConfigTabWidget, Ui_Form):
def table_column_resized(self, col, old, new): def table_column_resized(self, col, old, new):
self.table_column_widths = [] self.table_column_widths = []
for c in range(0, self.rules_table.columnCount()): for c in range(self.rules_table.columnCount()):
self.table_column_widths.append(self.rules_table.columnWidth(c)) self.table_column_widths.append(self.rules_table.columnWidth(c))
gprefs['tag_browser_rules_dialog_table_widths'] = self.table_column_widths gprefs['tag_browser_rules_dialog_table_widths'] = self.table_column_widths
@ -236,7 +236,7 @@ class TbIconRulesTab(ConfigTabWidget, Ui_Form):
# widths will be remembered. # widths will be remembered.
w = self.tb_icon_rules_groupbox.width() - 25 - self.rules_table.verticalHeader().width() w = self.tb_icon_rules_groupbox.width() - 25 - self.rules_table.verticalHeader().width()
w //= self.rules_table.columnCount() w //= self.rules_table.columnCount()
for c in range(0, self.rules_table.columnCount()): for c in range(self.rules_table.columnCount()):
self.rules_table.setColumnWidth(c, w) self.rules_table.setColumnWidth(c, w)
self.table_column_widths.append(self.rules_table.columnWidth(c)) self.table_column_widths.append(self.rules_table.columnWidth(c))
gprefs['tag_browser_rules_dialog_table_widths'] = self.table_column_widths gprefs['tag_browser_rules_dialog_table_widths'] = self.table_column_widths
@ -258,7 +258,7 @@ class TbIconRulesTab(ConfigTabWidget, Ui_Form):
def commit(self): def commit(self):
rr = ConfigWidgetBase.commit(self) rr = ConfigWidgetBase.commit(self)
v = copy.deepcopy(gprefs['tags_browser_value_icons']) v = copy.deepcopy(gprefs['tags_browser_value_icons'])
for r in range(0, self.rules_table.rowCount()): for r in range(self.rules_table.rowCount()):
cat_item = self.rules_table.item(r, CATEGORY_COLUMN) cat_item = self.rules_table.item(r, CATEGORY_COLUMN)
if cat_item.is_deleted: if cat_item.is_deleted:
val = self.rules_table.item(r, VALUE_COLUMN).real_value val = self.rules_table.item(r, VALUE_COLUMN).real_value

View File

@ -87,7 +87,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
self.source_widgets = [] self.source_widgets = []
self.dest_widgets = [] self.dest_widgets = []
for i in range(0, len(self.dest_fields)-1): for i in range(len(self.dest_fields)-1):
w = TemplateLineEditor(self) w = TemplateLineEditor(self)
self.source_widgets.append(w) self.source_widgets.append(w)
self.fields_layout.addWidget(w, 5+i, 0, 1, 1) self.fields_layout.addWidget(w, 5+i, 0, 1, 1)
@ -290,7 +290,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
def ok_clicked(self): def ok_clicked(self):
pb = [] pb = []
comments_in_dests = False comments_in_dests = False
for i in range(0, len(self.source_widgets)): for i in range(len(self.source_widgets)):
s = str(self.source_widgets[i].text()) s = str(self.source_widgets[i].text())
if s: if s:
d = self.dest_widgets[i].currentIndex() d = self.dest_widgets[i].currentIndex()

View File

@ -797,7 +797,7 @@ class TagsModel(QAbstractItemModel): # {{{
cur_idx = 0 cur_idx = 0
for interval in intervals: for interval in intervals:
first_chr, last_chr, length = interval first_chr, last_chr, length = interval
for i in range(0, length): for i in range(length):
if first_chr == last_chr: if first_chr == last_chr:
cl_list[cur_idx] = first_chr cl_list[cur_idx] = first_chr
else: else:

View File

@ -97,7 +97,7 @@ class TagBrowserMixin: # {{{
if idx is not None and idx.isValid(): if idx is not None and idx.isValid():
col = idx.column() col = idx.column()
model = self.library_view.model() model = self.library_view.model()
if col in range(0, len(model.column_map)): if col in range(len(model.column_map)):
current_cat = model.column_map[col] current_cat = model.column_map[col]
if current_cat in ('authors', 'series', 'publisher', 'tags') or current_cat in cust_cats: if current_cat in ('authors', 'series', 'publisher', 'tags') or current_cat in cust_cats:
cdn = cat_display_name(current_cat) or current_cat cdn = cat_display_name(current_cat) or current_cat

View File

@ -441,7 +441,7 @@ class Highlights(QTreeWidget):
else: else:
if cr < 0: if cr < 0:
cr = -1 cr = -1
indices = chain(range(cr + 1, count), range(0, cr + 1)) indices = chain(range(cr + 1, count), range(cr + 1))
for i in indices: for i in indices:
h = items[i].data(0, highlight_role) h = items[i].data(0, highlight_role)
if pat.search(h['highlighted_text']) is not None or pat.search(h.get('notes') or '') is not None: if pat.search(h['highlighted_text']) is not None or pat.search(h.get('notes') or '') is not None:

View File

@ -389,7 +389,7 @@ arguments.[/] Can take any number of arguments. In most cases you can use the
def evaluate(self, formatter, kwargs, mi, locals, *args): def evaluate(self, formatter, kwargs, mi, locals, *args):
i = 0 i = 0
res = '' res = ''
for i in range(0, len(args)): for i in range(len(args)):
res += args[i] res += args[i]
return res return res
@ -1054,7 +1054,7 @@ program: re_group(field('series'), "(\S* )(.*)", "{$:uppercase()}", "{$}")'}
def repl(mo): def repl(mo):
res = '' res = ''
if mo and mo.lastindex: if mo and mo.lastindex:
for dex in range(0, mo.lastindex): for dex in range(mo.lastindex):
gv = mo.group(dex+1) gv = mo.group(dex+1)
if gv is None: if gv is None:
continue continue
@ -2114,7 +2114,7 @@ uses ``re_group(item, search_re, template ...)`` when doing the replacements.
def repl(mo): def repl(mo):
newval = '' newval = ''
if mo and mo.lastindex: if mo and mo.lastindex:
for dex in range(0, mo.lastindex): for dex in range(mo.lastindex):
gv = mo.group(dex+1) gv = mo.group(dex+1)
if gv is None: if gv is None:
continue continue

View File

@ -924,7 +924,7 @@ class ZipFile:
def delete(self, name): def delete(self, name):
'''Delete the file from the archive. If it appears multiple '''Delete the file from the archive. If it appears multiple
times only the first instance will be deleted.''' times only the first instance will be deleted.'''
for i in range(0, len(self.filelist)): for i in range(len(self.filelist)):
if self.filelist[i].filename == name: if self.filelist[i].filename == name:
if self.debug: if self.debug:
print('Removing', name) print('Removing', name)

View File

@ -75,15 +75,7 @@ def serialize_recipe(urn, recipe_class):
if rso: if rso:
options = f' options={quoteattr(json.dumps(rso))}' options = f' options={quoteattr(json.dumps(rso))}'
return (' <recipe id={id} title={title} author={author} language={language}' return (' <recipe id={id} title={title} author={author} language={language}'
' needs_subscription={needs_subscription} description={description}{options}/>').format(**{ ' needs_subscription={needs_subscription} description={description}{options}/>').format(id=quoteattr(str(urn)), title=attr('title', _('Unknown')), author=attr('__author__', default_author), language=attr('language', 'und', normalize_language), needs_subscription=quoteattr(ns), description=attr('description', ''), options=options)
'id' : quoteattr(str(urn)),
'title' : attr('title', _('Unknown')),
'author' : attr('__author__', default_author),
'language' : attr('language', 'und', normalize_language),
'needs_subscription' : quoteattr(ns),
'description' : attr('description', ''),
'options' : options,
})
def serialize_collection(mapping_of_recipe_classes): def serialize_collection(mapping_of_recipe_classes):