[tool.black] line-length = 80 target-version = ['py310'] include = '\\.pyi?$' exclude = ''' /( .git | .hg | .mypy_cache | .tox | .venv | build | dist )/ ''' [tool.pytest.ini_options] pythonpath = ["."] testpaths = ["tests"] addopts = "-ra --strict-config --strict-markers --cov=. --cov-report=term-missing --cov-report=xml --cov-fail-under=80" markers = [ "asyncio: marks tests as async (using pytest-asyncio)", ] [tool.coverage.run] branch = true source = ["."] omit = [ "tests/*", "scripts/*", "main.py", "routes/reports.py", "services/reporting.py", ] [tool.coverage.report] skip_empty = true show_missing = true [tool.bandit] exclude_dirs = ["scripts"] skips = ["B101", "B601"] # B101: assert_used, B601: shell_injection (may be false positives)