backend/pyproject.toml
Rama main · réplica de lectura del repositorio original.
[project]
name = "maestro-backend"
version = "0.1.0"
description = "Maestro Platform — AI agent orchestration backend (FastAPI)"
requires-python = ">=3.11"
license = "LicenseRef-SustainableUse-1.0"
authors = [{ name = "Yiğit Erdoğan", email = "yigiterdogan023@gmail.com" }]
[tool.ruff]
line-length = 88
target-version = "py311"
extend-exclude = ["alembic/versions"]
[tool.ruff.lint]
# E/W: pycodestyle, F: pyflakes, I: isort, UP: pyupgrade, B: bugbear
select = ["E", "W", "F", "I", "UP", "B"]
[tool.ruff.lint.isort]
known-first-party = ["app"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
pythonpath = ["."]
markers = [
"integration: needs a real MongoDB/Qdrant server (docker-compose). Deselected by default.",
]
# Fail on an unregistered marker (a typo'd @pytest.mark silently no-ops
# otherwise) or an unknown config key. Cheap correctness guardrails that keep
# the suite honest.
#
# `-m 'not integration'` keeps the default run infrastructure-free: a bare
# `pytest` (and CI's `pytest --cov=app`) must never try to reach a real server,
# or a developer without docker-compose up sees failures unrelated to their
# change. A command-line `-m` overrides this one, so `pytest -m integration`
# selects exactly the opposite set.
addopts = "--strict-markers --strict-config -m 'not integration'"
[tool.coverage.run]
source = ["app"]
branch = true
# Exclude generated/entrypoint code that carries no test-worthy logic.
omit = ["app/main.py", "alembic/*"]
[tool.coverage.report]
# Reporting only — CI prints coverage but does NOT gate on a threshold, so a
# legitimate change is never blocked by a coverage dip (no spurious failures).
show_missing = true
exclude_lines = [
"pragma: no cover",
"if TYPE_CHECKING:",
"raise NotImplementedError",
"\\.\\.\\.",
]