[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"

[project]
name = "teleo-pipeline"
version = "2.0.0"
description = "Teleo Pipeline v2 — async daemon for claim extraction, validation, evaluation, and merge"
requires-python = ">=3.11"
dependencies = [
    "aiohttp>=3.9,<4",
    "PyYAML>=6,<7",
]

[project.optional-dependencies]
dev = [
    "pytest>=8",
    "pytest-asyncio>=0.23",
    "ruff>=0.3",
]

[tool.setuptools]
packages = ["lib"]

[tool.ruff]
target-version = "py311"
line-length = 120

[tool.ruff.lint]
select = [
    "E",     # pycodestyle errors
    "F",     # pyflakes (undefined names, unused imports)
    "W",     # pycodestyle warnings
    "I",     # isort
    "UP",    # pyupgrade
    "B",     # flake8-bugbear
    "SIM",   # flake8-simplify
    "RUF",   # ruff-specific rules
]
ignore = [
    "E501",    # line length (handled by formatter)
    "B008",    # function call in default argument (common in aiohttp)
    "RUF013",  # implicit Optional — existing code uses = None pattern throughout
    "UP017",   # datetime.UTC alias — keep timezone.utc for consistency with existing code
    "UP041",   # PEP 604 union syntax — existing code mixes styles, fix in Phase 3
    "SIM105",  # contextlib.suppress — try/except/pass is clearer in migration code
    "SIM117",  # merge with blocks — readability judgment call, not a bug
]

[tool.ruff.format]
quote-style = "double"

[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
python_files = "test_*.py"
python_functions = "test_*"

[tool.ruff.lint.isort]
known-first-party = ["lib"]
