Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pep8 strict formating #2605

Merged
merged 65 commits into from
Jan 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
a1d9a8f
Revert "cherry pick: ruff-strict-pep8.toml"
un-pogaz Jan 24, 2025
a741f8a
Dump ruff-strict-pep8.toml to Python 3.10
un-pogaz Jan 24, 2025
c10d407
convert tab indent to space (manual)
un-pogaz Jan 24, 2025
a73c487
remove unscoped noqa (extra-edit)
un-pogaz Jan 24, 2025
7e1edf1
add scoped noqa 'line too long' (auto-fix)
un-pogaz Jan 24, 2025
05c9729
add scoped noqa 'line too long' (extra-edit)
un-pogaz Jan 24, 2025
d08949b
add scoped noqa (auto-fix)
un-pogaz Jan 24, 2025
2357c1f
additional noqa work (extra-edit)
un-pogaz Jan 24, 2025
3777102
uniform string quote (auto-fix)
un-pogaz Jan 24, 2025
b5aca6f
uniform string quote (extra-edit)
un-pogaz Jan 24, 2025
5572105
upgrade code to Python 3 (auto-fix)
un-pogaz Jan 24, 2025
e0022f2
upgrade code to Python 3 (extra-edit)
un-pogaz Jan 24, 2025
12cb8b2
upgrade hidden print to Python 3 (extra-edit)
un-pogaz Jan 24, 2025
534293e
decode unicode-escape (extra-edit)
un-pogaz Jan 24, 2025
0560b42
convert some legacy percent format (auto-fix)
un-pogaz Jan 24, 2025
047ebcf
convert some legacy percent format (manual)
un-pogaz Jan 24, 2025
02854d8
convert some legacy percent format (extra-edit)
un-pogaz Jan 24, 2025
1999400
use f-string instead of format call (extra-edit)
un-pogaz Jan 24, 2025
4d7c180
checks misuse of sys.version_info (manual)
un-pogaz Jan 24, 2025
a833a13
check relative import (manual)
un-pogaz Jan 24, 2025
6c54a65
write better list/set/dict comprehensions (auto-fix)
un-pogaz Jan 24, 2025
6cda6a2
write better list/set/dict comprehensions (extra-edit)
un-pogaz Jan 24, 2025
cc172a2
unnecessary map (auto-fix)
un-pogaz Jan 24, 2025
9d46c53
unnecessary map (extra-edit)
un-pogaz Jan 24, 2025
bd59bf6
unnecessary collection call and some dict with keyword arguments (aut…
un-pogaz Jan 24, 2025
5d7c9a4
unnecessary collection call and some dict with keyword arguments (ext…
un-pogaz Jan 24, 2025
8ba35b9
fix trailing comma (manual)
un-pogaz Jan 24, 2025
437c6bf
various trailing comma (extra-edit)
un-pogaz Jan 24, 2025
88bae18
various misc recomendation (extra-edit)
un-pogaz Jan 24, 2025
d8aecf0
unsorted dunder all/slots (auto-fix)
un-pogaz Jan 24, 2025
c9b55c9
unsorted dunder all/slots (extra-edit)
un-pogaz Jan 24, 2025
93aa2ff
unnecessary key check (auto-fix)
un-pogaz Jan 24, 2025
76c091c
parenthesize chained operators (auto-fix)
un-pogaz Jan 24, 2025
537ea5e
parenthesize chained operators (extra-edit)
un-pogaz Jan 24, 2025
5edc9b8
explicit f-string conversion (auto-fix)
un-pogaz Jan 24, 2025
dcc86ee
explicit f-string conversion (extra-edit)
un-pogaz Jan 24, 2025
dd35da5
useless if-else (manual)
un-pogaz Jan 24, 2025
4aa2c3a
enable preview mode
un-pogaz Jan 24, 2025
7f6a11a
useless dict operation (auto-fix)
un-pogaz Jan 24, 2025
bd59682
unnecessary regex (auto-fix)
un-pogaz Jan 24, 2025
567a018
unnecessary regex (manual)
un-pogaz Jan 24, 2025
ac69125
always use raw-string for regex (auto-fix)
un-pogaz Jan 24, 2025
3720de1
always use raw-string for regex (manual)
un-pogaz Jan 24, 2025
07500e1
always use raw-string for regex (extra-edit)
un-pogaz Jan 24, 2025
5f24dfb
needless else (auto-fix)
un-pogaz Jan 24, 2025
5540126
uniform region (extra-edit)
un-pogaz Jan 24, 2025
8d28380
add/remove blank-line (extra-edit)
un-pogaz Jan 24, 2025
8032201
code indentation (manual)
un-pogaz Jan 24, 2025
0b23eaf
code indentation (extra-edit)
un-pogaz Jan 24, 2025
19b9d97
comment formating (auto-fix)
un-pogaz Jan 24, 2025
dba73b9
comment formating (manual)
un-pogaz Jan 24, 2025
0ce6645
comment formating (extra-edit)
un-pogaz Jan 24, 2025
b2c90ff
convert docstrings comments (extra-edit)
un-pogaz Jan 24, 2025
e006114
more misc recomendation (auto-fix)
un-pogaz Jan 24, 2025
ddfdc80
more misc recomendation (manual)
un-pogaz Jan 24, 2025
8dfbcaa
more misc recomendation (extra-edit)
un-pogaz Jan 24, 2025
fb0a290
remove duplicate class field definition (manual)
un-pogaz Jan 24, 2025
41cee6f
various whitespace (auto-fix)
un-pogaz Jan 24, 2025
ed29307
various whitespace (extra-edit)
un-pogaz Jan 24, 2025
59cd382
useless tuple (extra-edit)
un-pogaz Jan 24, 2025
0ee26c5
unnecessary return None (auto-fix)
un-pogaz Jan 24, 2025
ce83e97
unnecessary return (extra-edit)
un-pogaz Jan 24, 2025
ac4fbfc
implicit string concatenation (manual)
un-pogaz Jan 24, 2025
8810c94
implicit string concatenation (extra-edit)
un-pogaz Jan 24, 2025
f20aa37
more string concatenation (extra-edit)
un-pogaz Jan 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 2 additions & 3 deletions icons/icns/make_iconsets.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env python
# vim:fileencoding=utf-8


__license__ = 'GPL v3'
Expand Down Expand Up @@ -27,7 +26,7 @@
os.chdir(iconset)
try:
for sz in (16, 32, 128, 256, 512, 1024):
iname = 'icon_{0}x{0}.png'.format(sz)
iname = f'icon_{sz}x{sz}.png'
iname2x = 'icon_{0}x{0}@2x.png'.format(sz // 2)
if src.endswith('.svg'):
subprocess.check_call(['rsvg-convert', src, '-w', str(sz), '-h', str(sz), '-o', iname])
Expand All @@ -36,7 +35,7 @@
if sz == 512:
shutil.copy2(src, iname)
else:
subprocess.check_call(['convert', src, '-resize', '{0}x{0}'.format(sz), iname])
subprocess.check_call(['convert', src, '-resize', f'{sz}x{sz}', iname])
if sz > 16:
shutil.copy2(iname, iname2x)
if sz > 512:
Expand Down
3 changes: 1 addition & 2 deletions icons/make_ico_files.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env python
# vim:fileencoding=utf-8


__license__ = 'GPL v3'
Expand All @@ -24,7 +23,7 @@
try:
names = []
for sz in (16, 24, 32, 48, 64, 256):
iname = os.path.join('ico_temp', '{0}x{0}.png'.format(sz))
iname = os.path.join('ico_temp', f'{sz}x{sz}.png')
subprocess.check_call(['rsvg-convert', src, '-w', str(sz), '-h', str(sz), '-o', iname])
subprocess.check_call(['optipng', '-o7', '-strip', 'all', iname])
if sz >= 128:
Expand Down
1 change: 0 additions & 1 deletion imgsrc/generate.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env python
# vim:fileencoding=utf-8
# License: GPLv3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>

import argparse
Expand Down
1 change: 0 additions & 1 deletion imgsrc/render-logo.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env python
# vim:fileencoding=utf-8
# License: GPLv3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>


Expand Down
7 changes: 3 additions & 4 deletions imgsrc/srv/generate.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env python
# vim:fileencoding=utf-8
# License: GPLv3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>


Expand Down Expand Up @@ -27,7 +26,7 @@ def clone_node(node, parent):
def merge():
base = os.path.dirname(os.path.abspath(__file__))
ans = etree.fromstring(
'<svg xmlns="%s" xmlns:xlink="%s"/>' % (SVG_NS, XLINK_NS),
f'<svg xmlns="{SVG_NS}" xmlns:xlink="{XLINK_NS}"/>',
parser=etree.XMLParser(
recover=True, no_network=True, resolve_entities=False
)
Expand All @@ -43,14 +42,14 @@ def merge():
recover=True, no_network=True, resolve_entities=False
)
)
symbol = ans.makeelement('{%s}symbol' % SVG_NS)
symbol = ans.makeelement('{%s}symbol' % SVG_NS) # noqa: UP031
symbol.set('viewBox', svg.get('viewBox'))
symbol.set('id', 'icon-' + f.rpartition('.')[0])
for child in svg.iterchildren('*'):
clone_node(child, symbol)
ans.append(symbol)
ans = etree.tostring(ans, encoding='unicode', pretty_print=True, with_tail=False)
ans = re.sub('<svg[^>]+>', '<svg style="display:none">', ans, count=1)
ans = re.sub(r'<svg[^>]+>', '<svg style="display:none">', ans, count=1)
return ans


Expand Down
1 change: 0 additions & 1 deletion manual/build.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env python
# vim:fileencoding=utf-8


__license__ = 'GPL v3'
Expand Down
30 changes: 14 additions & 16 deletions manual/conf.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# -*- coding: utf-8 -*-
#
# calibre documentation build configuration file, created by
# sphinx-quickstart.py on Sun Mar 23 01:23:55 2008.
#
Expand Down Expand Up @@ -47,11 +45,11 @@
source_suffix = {'.rst': 'restructuredtext'}

# The master toctree document.
master_doc = 'index' if tags.has('online') else 'simple_index' # noqa
master_doc = 'index' if tags.has('online') else 'simple_index' # noqa: F821
# kill the warning about index/simple_index not being in a toctree
exclude_patterns = ['simple_index.rst'] if master_doc == 'index' else ['index.rst']
exclude_patterns.append('cli-options-header.rst')
if tags.has('gettext'): # noqa
if tags.has('gettext'): # noqa: F821
# Do not exclude anything as the strings must be translated. This will
# generate a warning about the documents not being in a toctree, just ignore
# it.
Expand All @@ -64,7 +62,7 @@
def generated_langs():
try:
return os.listdir(os.path.join(base, 'generated'))
except EnvironmentError as e:
except OSError as e:
if e.errno != errno.ENOENT:
raise
return ()
Expand Down Expand Up @@ -99,13 +97,13 @@ def generated_langs():
unused_docs = ['global', 'cli/global']

locale_dirs = ['locale/']
title = '%s User Manual' % __appname__
title = f'{__appname__} User Manual'
needs_localization = language not in {'en', 'eng'}
if needs_localization:
import gettext
try:
t = gettext.translation('simple_index', locale_dirs[0], [language])
except IOError:
except OSError:
pass
else:
title = t.gettext(title)
Expand Down Expand Up @@ -176,7 +174,7 @@ def sort_languages(x):
lc, name = x
if lc == language:
return ''
return sort_key(type(u'')(name))
return sort_key(str(name))


website = 'https://calibre-ebook.com'
Expand All @@ -193,13 +191,13 @@ def sort_languages(x):
}
del sort_languages, get_language

epub_author = u'Kovid Goyal'
epub_publisher = u'Kovid Goyal'
epub_copyright = u'© {} Kovid Goyal'.format(date.today().year)
epub_description = u'Comprehensive documentation for calibre'
epub_identifier = u'https://manual.calibre-ebook.com'
epub_scheme = u'url'
epub_uid = u'S54a88f8e9d42455e9c6db000e989225f'
epub_author = 'Kovid Goyal'
epub_publisher = 'Kovid Goyal'
epub_copyright = f'© {date.today().year} Kovid Goyal'
epub_description = 'Comprehensive documentation for calibre'
epub_identifier = 'https://manual.calibre-ebook.com'
epub_scheme = 'url'
epub_uid = 'S54a88f8e9d42455e9c6db000e989225f'
epub_tocdepth = 4
epub_tocdup = True
epub_cover = ('epub_cover.jpg', 'epub_cover_template.html')
Expand Down Expand Up @@ -255,5 +253,5 @@ def sort_languages(x):
latex_show_urls = 'footnote'
latex_elements = {
'papersize':'letterpaper',
'preamble': r'\renewcommand{\pageautorefname}{%s}' % _('page'),
'preamble': r'\renewcommand{\pageautorefname}{%s}' % _('page'), # noqa: UP031
}
22 changes: 11 additions & 11 deletions manual/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def formatter_funcs():

ans = {'doc': {}, 'sum': {}}
with TemporaryDirectory() as tdir:
db = LibraryDatabase(tdir) # needed to load formatter_funcs
db = LibraryDatabase(tdir) # needed to load formatter_funcs
ffml = FFMLProcessor()
all_funcs = formatter_functions().get_builtins()
for func_name, func in all_funcs.items():
Expand Down Expand Up @@ -195,13 +195,13 @@ def generate_calibredb_help(preamble, language):
lines = []
for cmd in COMMANDS:
parser = option_parser_for(cmd)()
lines += ['.. _calibredb-%s-%s:' % (language, cmd), '']
lines += [f'.. _calibredb-{language}-{cmd}:', '']
lines += [cmd, '~'*20, '']
usage = parser.usage.strip()
usage = [i for i in usage.replace('%prog', 'calibredb').splitlines()]
usage = usage.replace('%prog', 'calibredb').splitlines()
cmdline = ' '+usage[0]
usage = usage[1:]
usage = [re.sub(r'(%s)([^a-zA-Z0-9])'%cmd, r':command:`\1`\2', i) for i in usage]
usage = [re.sub(rf'({cmd})([^a-zA-Z0-9])', r':command:`\1`\2', i) for i in usage]
lines += ['.. code-block:: none', '', cmdline, '']
lines += usage
groups = [(None, None, parser.option_list)]
Expand Down Expand Up @@ -240,14 +240,14 @@ def generate_ebook_convert_help(preamble, app):
parser, plumber = create_option_parser(['ebook-convert',
'dummyi.'+sorted(pl.file_types)[0], 'dummyo.epub', '-h'], default_log)
groups = [(pl.name+ ' Options', '', g.option_list) for g in
parser.option_groups if g.title == "INPUT OPTIONS"]
parser.option_groups if g.title == 'INPUT OPTIONS']
prog = 'ebook-convert-'+(pl.name.lower().replace(' ', '-'))
raw += '\n\n' + '\n'.join(render_options(prog, groups, False, True))
for pl in sorted(output_format_plugins(), key=lambda x: x.name):
parser, plumber = create_option_parser(['ebook-convert', 'd.epub',
'dummyi.'+pl.file_type, '-h'], default_log)
groups = [(pl.name+ ' Options', '', g.option_list) for g in
parser.option_groups if g.title == "OUTPUT OPTIONS"]
parser.option_groups if g.title == 'OUTPUT OPTIONS']
prog = 'ebook-convert-'+(pl.name.lower().replace(' ', '-'))
raw += '\n\n' + '\n'.join(render_options(prog, groups, False, True))

Expand All @@ -257,7 +257,7 @@ def generate_ebook_convert_help(preamble, app):
def update_cli_doc(name, raw, language):
if isinstance(raw, bytes):
raw = raw.decode('utf-8')
path = 'generated/%s/%s.rst' % (language, name)
path = f'generated/{language}/{name}.rst'
old_raw = open(path, encoding='utf-8').read() if os.path.exists(path) else ''
if not os.path.exists(path) or old_raw != raw:
import difflib
Expand Down Expand Up @@ -352,7 +352,7 @@ def cli_docs(language):
usage = [mark_options(i) for i in parser.usage.replace('%prog', cmd).splitlines()]
cmdline = usage[0]
usage = usage[1:]
usage = [i.replace(cmd, ':command:`%s`'%cmd) for i in usage]
usage = [i.replace(cmd, f':command:`{cmd}`') for i in usage]
usage = '\n'.join(usage)
preamble = CLI_PREAMBLE.format(cmd=cmd, cmdref=cmd + '-' + language, cmdline=cmdline, usage=usage)
if cmd == 'ebook-convert':
Expand Down Expand Up @@ -382,7 +382,7 @@ def template_docs(language):

def localized_path(app, langcode, pagename):
href = app.builder.get_target_uri(pagename)
href = re.sub(r'generated/[a-z]+/', 'generated/%s/' % langcode, href)
href = re.sub(r'generated/[a-z]+/', f'generated/{langcode}/', href)
prefix = '/'
if langcode != 'en':
prefix += langcode + '/'
Expand All @@ -397,15 +397,15 @@ def add_html_context(app, pagename, templatename, context, *args):

def guilabel_role(typ, rawtext, text, *args, **kwargs):
from sphinx.roles import GUILabel
text = text.replace(u'->', u'\N{THIN SPACE}\N{RIGHTWARDS ARROW}\N{THIN SPACE}')
text = text.replace('->', '\N{THIN SPACE}\N{RIGHTWARDS ARROW}\N{THIN SPACE}')
return GUILabel()(typ, rawtext, text, *args, **kwargs)


def setup_man_pages(app):
documented_cmds = get_cli_docs()[0]
man_pages = []
for cmd, option_parser in documented_cmds:
path = 'generated/%s/%s' % (app.config.language, cmd)
path = f'generated/{app.config.language}/{cmd}'
man_pages.append((
path, cmd, cmd, 'Kovid Goyal', 1
))
Expand Down
6 changes: 3 additions & 3 deletions manual/epub.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ def workaround_ade_quirks(self, container, name):
imgname = container.href_to_name(img.get('src'), name)
fmt, width, height = identify(container.raw_data(imgname))
if width == -1:
raise ValueError('Failed to read size of: %s' % imgname)
img.set('style', 'width: %dpx; height: %dpx' % (width, height))
raise ValueError(f'Failed to read size of: {imgname}')
img.set('style', f'width: {width}px; height: {height}px')

def fix_opf(self, container):
spine_names = {n for n, l in container.spine_names}
Expand All @@ -75,7 +75,7 @@ def fix_opf(self, container):

# Ensure that the cover-image property is set
cover_id = rmap['_static/' + self.config.epub_cover[0]]
for item in container.opf_xpath('//opf:item[@id="{}"]'.format(cover_id)):
for item in container.opf_xpath(f'//opf:item[@id="{cover_id}"]'):
item.set('properties', 'cover-image')
for item in container.opf_xpath('//opf:item[@href="epub-cover.xhtml"]'):
item.set('properties', 'svg calibre:title-page')
Expand Down
2 changes: 1 addition & 1 deletion manual/plugin_examples/editor_demo/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class DemoTool(Tool):
def create_action(self, for_toolbar=True):
# Create an action, this will be added to the plugins toolbar and
# the plugins menu
ac = QAction(get_icons('images/icon.png'), 'Magnify fonts', self.gui) # noqa
ac = QAction(get_icons('images/icon.png'), 'Magnify fonts', self.gui) # noqa: F821
if not for_toolbar:
# Register a keyboard shortcut for this toolbar action. We only
# register it for the action created for the menu, not the toolbar,
Expand Down
10 changes: 5 additions & 5 deletions manual/plugin_examples/helloworld/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@

class HelloWorld(FileTypePlugin):

name = 'Hello World Plugin' # Name of the plugin
name = 'Hello World Plugin' # Name of the plugin
description = 'Set the publisher to Hello World for all new conversions'
supported_platforms = ['windows', 'osx', 'linux'] # Platforms this plugin will run on
author = 'Acme Inc.' # The author of this plugin
supported_platforms = ['windows', 'osx', 'linux'] # Platforms this plugin will run on
author = 'Acme Inc.' # The author of this plugin
version = (1, 0, 0) # The version number of this plugin
file_types = {'epub', 'mobi'} # The file types that this plugin will be applied to
on_postprocess = True # Run this plugin after conversion is complete
file_types = {'epub', 'mobi'} # The file types that this plugin will be applied to
on_postprocess = True # Run this plugin after conversion is complete
minimum_calibre_version = (0, 7, 53)

def run(self, path_to_ebook):
Expand Down
2 changes: 0 additions & 2 deletions manual/plugin_examples/interface_demo/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,5 +76,3 @@ def save_settings(self, config_widget):
ac = self.actual_plugin_
if ac is not None:
ac.apply_settings()


2 changes: 1 addition & 1 deletion manual/plugin_examples/interface_demo/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def __init__(self, gui, icon, do_user_config):
self.l.addWidget(self.view_button)

self.update_metadata_button = QPushButton(
'Update metadata in a book\'s files', self)
"Update metadata in a book's files", self)
self.update_metadata_button.clicked.connect(self.update_metadata)
self.l.addWidget(self.update_metadata_button)

Expand Down
6 changes: 3 additions & 3 deletions manual/sidebar_toc.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ class checkbox(nodes.Element):
def visit_checkbox(self, node):
cid = node['ids'][0]
node['classes'] = []
self.body.append('<input id="{0}" type="checkbox" />'
'<label for="{0}">&nbsp;</label>'.format(cid))
self.body.append(f'<input id="{cid}" type="checkbox" />'
f'<label for="{cid}">&nbsp;</label>')


def modify_li(li):
Expand All @@ -66,7 +66,7 @@ def modify_li(li):
li['classes'].append('leaf-node')
else:
c = checkbox()
c['ids'] = ['collapse-checkbox-{}'.format(next(id_counter))]
c['ids'] = [f'collapse-checkbox-{next(id_counter)}']
li.insert(0, c)


Expand Down
3 changes: 2 additions & 1 deletion manual/template_ref_generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def generate_template_language_help(language, log):
a = output.append

with TemporaryDirectory() as tdir:
db = LibraryDatabase(tdir) # needed to load formatter_funcs
db = LibraryDatabase(tdir) # needed to load formatter_funcs
ffml = FFMLProcessor()
all_funcs = formatter_functions().get_builtins()
categories = defaultdict(dict)
Expand Down Expand Up @@ -89,5 +89,6 @@ def generate_template_language_help(language, log):
a(POSTAMBLE)
return ''.join(output)


if __name__ == '__main__':
generate_template_language_help()
5 changes: 3 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@ quote-style = 'single'

[tool.ruff.lint]
ignore = ['E402', 'E722', 'E741']
select = ['E', 'F', 'I', 'W', 'INT']
select = ['E', 'F', 'I', 'W', 'INT', 'PIE794']
unfixable = ['PIE794']

[tool.ruff.lint.per-file-ignores]
"src/calibre/ebooks/unihandecode/*codepoints.py" = ['E501', 'W191']
"src/calibre/ebooks/unihandecode/*codepoints.py" = ['E501']
"src/qt/*.py" = ['I']
"src/qt/*.pyi" = ['I']

Expand Down
Loading
Loading