[build-system]
requires = ["hatchling>=1.27,<2"]
build-backend = "hatchling.build"

[project]
name = "nodedc-mission-core"
version = "0.1.0"
description = "NODEDC MISSION CORE monorepo for mission control, spatial observation, and device plugins"
readme = "README.md"
requires-python = ">=3.12,<3.13"
license = { text = "Proprietary" }
authors = [{ name = "NODE.DC" }]
dependencies = [
  "bleak==3.0.2",
  "fastapi>=0.116,<1",
  "foxglove-sdk==0.25.3",
  "lz4>=4.4,<5",
  "missioncore-plugin-sdk",
  "paho-mqtt>=2.1,<3",
  "pillow>=12,<13",
  "pyyaml>=6.0,<7",
  "rerun-sdk==0.34.1",
  "rich>=13.9,<15",
  "typer>=0.15,<1",
  "uvicorn[standard]>=0.35,<1",
]

[tool.uv.sources]
missioncore-plugin-sdk = { path = "packages/plugin-sdk", editable = true }

[project.scripts]
k1link = "k1link.device_plugins.xgrids_k1.cli:app"
missioncore-sim = "k1link.simulation.cli:app"

[dependency-groups]
dev = [
  "mypy>=1.15,<2",
  "pytest>=8.3,<9",
  "ruff>=0.11,<1",
  "types-pyyaml>=6.0",
]

[tool.hatch.build.targets.wheel]
packages = ["src/k1link"]

[tool.pytest.ini_options]
addopts = "-q"
testpaths = ["tests"]

[tool.ruff]
line-length = 100
target-version = "py312"

[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM"]

[tool.mypy]
python_version = "3.12"
strict = true
packages = ["k1link"]

[[tool.mypy.overrides]]
module = ["lz4", "lz4.*"]
ignore_missing_imports = true
