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

[tool.setuptools]
py-modules = []

[project]
name = "backend"
version = "0.9.81"
requires-python = ">=3.10"
dependencies = [
    "apscheduler==3.10.3",
    "beautifulsoup4>=4.9.0",
    "cachetools==5.5.2",
    "cryptography>=41.0.0",
    "defusedxml>=0.7.1",
    "fastapi==0.115.12",
    "feedparser==6.0.10",
    "httpx==0.28.1",
    "playwright==1.59.0",
    "playwright-stealth==1.0.6",
    "pydantic==2.13.3",
    "pydantic-settings==2.8.1",
    "pystac-client==0.8.6",
    "python-dotenv==1.2.2",
    "requests==2.31.0",
    "PySocks==1.7.1",
    "reverse-geocoder==1.5.1",
    "sgp4==2.25",
    "meshtastic>=2.5.0",
    "orjson>=3.10.0",
    "paho-mqtt>=1.6.0,<2.0.0",
    "PyNaCl>=1.5.0",
    "slowapi==0.1.9",
    "vaderSentiment>=3.3.0",
    "uvicorn==0.34.0",
    "yfinance==1.3.0",
]

[dependency-groups]
dev = ["pytest>=8.3.4", "pytest-asyncio==0.25.0", "ruff>=0.9.0", "black>=24.0.0"]

[tool.ruff.lint]
# The current backend carries historical style debt in large legacy modules.
# Keep CI focused on actionable correctness checks for the v0.9.81 release.
ignore = ["E401", "E402", "E701", "E731", "E741", "F401", "F402", "F541", "F811", "F841"]

[tool.black]
# Avoid a release-time whole-backend formatting rewrite. Re-enable by narrowing
# this once the legacy tree is formatted in a dedicated cleanup PR.
force-exclude = ".*"
