[tool.ruff] # Enable all rules by default lint.select = ["E", "F", "B", "I", "N", "UP", "ANN", "S", "BLE", "C4", "DTZ", "FA", "ISC", "ICN", "G", "INP", "PIE", "T20", "PYI", "PT", "Q", "RSE", "RET", "SLF", "SLOT", "SIM", "TID", "TCH", "ARG", "PTH", "TD", "FIX", "ERA", "PD", "PGH", "PL", "TRY", "FLY", "NPY", "AIR", "PERF", "FURB", "LOG", "RUF"] # Exclude some directories exclude = [ ".git", ".venv", "venv", "__pycache__", "alembic", "migrations", ] # Ignore specific rules lint.ignore = [ "ANN101", # Missing type annotation for self "ANN102", # Missing type annotation for cls "E501", # Line too long "PT", # Pytest-related rules, ignore if not using pytest "INP001", # Implicit namespace package "FA", # Flake8 annotations "TD", # Todo related "FIX", # Fixme related ] # Line length line-length = 100 # Target Python version target-version = "py39" # Organize imports lint.isort.required-imports = ["from __future__ import annotations"] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] # Ignore unused imports in __init__.py files [tool.ruff.lint.mccabe] max-complexity = 10 [tool.ruff.format] quote-style = "double" indent-style = "space" line-ending = "auto"