[tool.ruff] target-version = "py312" line-length = 100 [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "N", # pep8-naming "UP", # pyupgrade "B", # flake8-bugbear "SIM", # flake8-simplify "TCH", # flake8-type-checking "RUF", # ruff-specific ] ignore = [ "E501", # line too long (handled by formatter) "B008", # do not perform function calls in argument defaults (FastAPI Depends) "N815", # camelCase in Pydantic models (intentional — matches frontend API contract) "TC003", # datetime import used at runtime by Pydantic ] [tool.ruff.lint.isort] known-first-party = ["api", "domain", "persistence", "services"] [tool.ruff.format] quote-style = "double" indent-style = "space"