mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
200 lines
4.9 KiB
TOML
200 lines
4.9 KiB
TOML
[project]
|
||
requires-python = ">=3.10"
|
||
|
||
[tool.ruff]
|
||
line-length = 160
|
||
builtins = ['_', 'I', 'P']
|
||
include = ['*.py', '*.recipe']
|
||
exclude = [
|
||
"*_ui.py",
|
||
"bypy/*",
|
||
"setup/polib.py",
|
||
"setup/linux-installer.py",
|
||
"src/css_selectors/*",
|
||
"src/polyglot/*",
|
||
"src/templite/*",
|
||
"src/tinycss/*",
|
||
]
|
||
preview = true
|
||
|
||
[tool.ruff.format]
|
||
quote-style = 'single'
|
||
|
||
[tool.ruff.lint]
|
||
explicit-preview-rules = true
|
||
ignore = [
|
||
'E402', 'E722', 'E741',
|
||
'UP012', 'UP030', 'UP038', 'C413', 'C420', 'PIE790', 'ISC003',
|
||
'RUF001', 'RUF002', 'RUF003', 'RUF005', 'RUF012', 'RUF013', 'RUF015', 'RUF031', 'RUF100',
|
||
'RUF059', # unused unpacked variable
|
||
]
|
||
select = [
|
||
'E', 'F', 'I', 'W', 'INT',
|
||
'Q', 'UP', 'YTT', 'TID', 'C4', 'COM818', 'PIE', 'RET501', 'ISC',
|
||
'RUF', # note: RUF can flag many unsolicited errors
|
||
# preview rules
|
||
'RUF051', 'RUF056', # useless dict operation
|
||
'RUF055', # unnecessary regex
|
||
'RUF039', # always use raw-string for regex
|
||
'RUF047', # needless else
|
||
'E302', 'E303', 'E304', 'E305', 'W391', # blank-line standard
|
||
'E111', 'E112', 'E113', 'E117', # code indentation
|
||
'E114', 'E115', 'E116', 'E261', 'E262', 'E265', # comment formatting
|
||
'E201', 'E202', 'E211', 'E251', 'E275', # various whitespace
|
||
]
|
||
unfixable = ['PIE794', 'ISC001']
|
||
|
||
[tool.ruff.lint.per-file-ignores]
|
||
"recipes/*" = ['UP']
|
||
"setup/changelog.py" = ['ISC001']
|
||
"src/calibre/ebooks/unihandecode/*codepoints.py" = ['E501']
|
||
"src/calibre/ebooks/metadata/sources/*" = ['UP']
|
||
"src/calibre/gui2/store/stores/*" = ['UP']
|
||
"src/qt/*.py" = ['I', 'E302']
|
||
"src/qt/*.pyi" = ['I']
|
||
|
||
[tool.ruff.lint.isort]
|
||
detect-same-package = true
|
||
extra-standard-library = ["aes", "elementmaker", "encodings"]
|
||
known-first-party = ["calibre_extensions", "calibre_plugins", "polyglot"]
|
||
known-third-party = ["odf", "qt", "templite", "tinycss", "css_selectors"]
|
||
relative-imports-order = "closest-to-furthest"
|
||
split-on-trailing-comma = false
|
||
section-order = ['__python__', "future", "standard-library", "third-party", "first-party", "local-folder"]
|
||
|
||
[tool.ruff.lint.isort.sections]
|
||
'__python__' = ['__python__']
|
||
|
||
[tool.ruff.lint.flake8-comprehensions]
|
||
allow-dict-calls-with-keyword-arguments = true
|
||
|
||
[tool.ruff.lint.flake8-quotes]
|
||
avoid-escape = true
|
||
docstring-quotes = 'single'
|
||
inline-quotes = 'single'
|
||
multiline-quotes = 'single'
|
||
|
||
[tool.codespell]
|
||
count = false
|
||
summary = false
|
||
quiet-level = 3
|
||
regex = '''\b[\w\-'’]+\b'''
|
||
ignore-regex = '''\b[\w\-'’]*&(amp;)?[\w\-'’]*\b'''
|
||
builtin = [
|
||
'clear',
|
||
'rare',
|
||
'informal',
|
||
'code',
|
||
]
|
||
exclude-file = "codespell.exclude"
|
||
ignore-words-list = [
|
||
"alo",
|
||
"ans",
|
||
"clen",
|
||
"eto",
|
||
"fo",
|
||
"nam",
|
||
"nd",
|
||
"som",
|
||
"te",
|
||
"atLeast",
|
||
"Implementor",
|
||
"implementor",
|
||
"Implementors",
|
||
"implementors",
|
||
"missings",
|
||
"re-use",
|
||
"re-used",
|
||
"re-using",
|
||
"splited",
|
||
"succeded",
|
||
# code
|
||
"ro",
|
||
"ws",
|
||
"deque",
|
||
"assertIn",
|
||
"atEnd",
|
||
"errorString",
|
||
"FocusIn",
|
||
"iff",
|
||
"lets",
|
||
"lite",
|
||
"UINT",
|
||
"uInt",
|
||
"uint",
|
||
"KeyPair",
|
||
"Keypair",
|
||
"keypair",
|
||
"seeked",
|
||
"stdio",
|
||
"thead",
|
||
]
|
||
uri-ignore-words-list = '*'
|
||
skip = [
|
||
"*.svg",
|
||
"*.rcc",
|
||
"*_ui.py",
|
||
"./src/calibre/ebooks/rtf2xml/char_set.py",
|
||
"./src/calibre/ebooks/unihandecode/*",
|
||
"./src/calibre/ebooks/html_entities.h",
|
||
"./src/calibre/ebooks/html_entities.py",
|
||
"./src/calibre/utils/icu_test.py",
|
||
"./src/calibre/utils/search_query_parser_test.py",
|
||
"./Changelog.old.txt",
|
||
"./COPYRIGHT",
|
||
"./LICENSE",
|
||
"./LICENSE.rtf",
|
||
"./session.vim",
|
||
"./build/*",
|
||
"./docs/*",
|
||
"./nbproject/*",
|
||
"./recipes/*",
|
||
"./translations/*",
|
||
"./tags/*",
|
||
"./manual/generated/*",
|
||
"./manual/locale/*",
|
||
"./resources/dictionaries/*",
|
||
"./resources/localization/*",
|
||
"./resources/hyphenation/*",
|
||
"./resources/mathjax/*",
|
||
"./resources/builtin_recipes.xml",
|
||
"./resources/changelog.json",
|
||
"./resources/editor.js",
|
||
"./resources/editor-functions.json",
|
||
"./resources/mime.types",
|
||
"./resources/piper-voices.json",
|
||
"./resources/stylelint-bundle.min.js",
|
||
"./resources/user-manual-translation-stats.json",
|
||
"./resources/template-functions.json",
|
||
"./resources/viewer.js",
|
||
"./resources/viewer.html",
|
||
"./resources/content-server/index-generated.html",
|
||
"./setup/installer/*",
|
||
"./setup/pyqt_enums/*",
|
||
"./setup/lc_data.py",
|
||
"./setup/linux-installer.py",
|
||
"./src/css_selectors/*",
|
||
"./src/polyglot/*",
|
||
"./src/templite/*",
|
||
"./src/tinycss/*",
|
||
"./src/unicode_names/*",
|
||
]
|
||
|
||
[tool.flynt]
|
||
line-length = 400 # over value to catch every case
|
||
transform-format = false # don't transform already existing format call
|
||
exclude = [
|
||
"bypy/",
|
||
"setup/polib.py",
|
||
"setup/linux-installer.py",
|
||
"src/calibre/ebooks/metadata/sources/",
|
||
"src/calibre/gui2/store/stores/",
|
||
"src/css_selectors/",
|
||
"src/polyglot/",
|
||
"src/templite/",
|
||
"src/tinycss/",
|
||
]
|
||
|
||
[tool.pylsp-mypy]
|
||
enabled = false
|