[project] requires-python = ">=3.8" [tool.ruff] line-length = 160 target-version = 'py38' 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/*", ] [tool.ruff.format] quote-style = 'single' [tool.ruff.lint] ignore = ['E402', 'E722', 'E741'] select = ['E', 'F', 'I', 'W', 'INT'] [tool.ruff.lint.per-file-ignores] "src/calibre/ebooks/unihandecode/*codepoints.py" = ['E501', 'W191'] "src/qt/*.py" = ['I'] "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.pylsp-mypy] enabled = false