# Tooling config only — StackPilot's backend is not packaged, it runs from # source in the image (see backend/Dockerfile). Runtime deps stay in # requirements.txt; test/lint deps in requirements-dev.txt. [tool.pytest.ini_options] testpaths = ["tests"] # Import test modules without needing tests/ to be a package, and make the # backend root importable so `from services import ...` works the same way it # does at runtime. pythonpath = ["."] addopts = "-q --strict-markers" filterwarnings = [ # passlib 1.7.4 reads bcrypt.__about__, which bcrypt 4.x removed. Cosmetic, # and tracked as F8 (migrate off passlib). "ignore:.*error reading bcrypt version.*:UserWarning", ] [tool.ruff] target-version = "py312" line-length = 100 exclude = ["templates"] [tool.ruff.lint] # Deliberately a floor, not a style bar: these are the rules that catch real # defects (undefined names, unused imports, shadowed builtins, mutable # defaults, swallowed exception context) without demanding a reformat of the # existing 12k lines. Import sorting ("I") is left out on purpose — it is # style, and turning it on would rewrite the import block of nine files that # have nothing else wrong with them. Tighten over time rather than landing a # big-bang cleanup. select = ["F", "E9", "B"] ignore = [ "B008", # Depends()/Query() in defaults is how FastAPI is written. ] [tool.ruff.lint.per-file-ignores] # Routers re-export request models for the agent proxy to reuse. "routers/agents.py" = ["F401"]