[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" [tool.ruff] # Allow lines to be as long as 100 characters line-length = 100 # Assume Python 3.8 target-version = "py38" [tool.ruff.lint] # Enable pycodestyle (E), Pyflakes (F), isort (I), and more select = ["E", "F", "I", "N", "W", "C90", "B", "UP"] # Ignore specific rules: # B008: Do not perform function call `Depends` in argument defaults # E501: Line too long # F401: Imported but unused ignore = ["B008", "E501", "F401"] # Allow autofix for all enabled rules (when `--fix`) is provided fixable = ["A", "B", "C", "D", "E", "F", "G", "I", "N", "Q", "S", "T", "W", "ANN", "ARG", "BLE", "COM", "DJ", "DTZ", "EM", "ERA", "EXE", "FBT", "ICN", "INP", "ISC", "NPY", "PD", "PGH", "PIE", "PL", "PT", "PTH", "PYI", "RET", "RSE", "RUF", "SIM", "SLF", "TCH", "TID", "TRY", "UP", "YTT"] unfixable = [] # Exclude a variety of commonly ignored directories exclude = [ ".git", ".ruff_cache", ".venv", "venv", "__pypackages__", "migrations/versions", "dist", "node_modules", ] # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" [tool.ruff.lint.mccabe] # Flag functions with a complexity higher than 15 max-complexity = 15 [tool.ruff.lint.isort] known-third-party = ["fastapi", "pydantic", "sqlalchemy", "alembic"] section-order = ["future", "standard-library", "third-party", "first-party", "local-folder"]