[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)

