# Ruff config for all Python in the repo (backend/, agent/, and vision/). # Subdirectories inherit this file; venv/ dirs are excluded by default. target-version = "py314" line-length = 100 [lint] select = [ "E", # pycodestyle errors "F", # Pyflakes: undefined names, unused imports/variables "I", # isort: import ordering "UP", # pyupgrade: outdated syntax for the target Python version "B", # flake8-bugbear: likely-bug patterns "SIM", # flake8-simplify: needlessly complex constructs "D1", # pydocstyle: public modules, classes, and functions need a docstring ] # Magic methods (__repr__, __eq__, …) are self-describing. ignore = ["D105"] [lint.flake8-bugbear] # FastAPI's DI idiom is a function call in a default argument; don't flag it (B008). extend-immutable-calls = ["fastapi.Depends", "fastapi.Security", "fastapi.Query"] [lint.per-file-ignores] # All must configure the environment before importing app.* — imports can't be at the top. "backend/tests/conftest.py" = ["E402"] "backend/migrations/env.py" = ["E402"] "vision/tests/conftest.py" = ["E402"] # Tests are named for what they check, and migrations for what they change. "**/tests/**" = ["D1"] "backend/migrations/**" = ["D1"]