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

[project]
name = "cmvr-edge-ai"
version = "0.1.0"
description = "Configuration-driven AI pipeline runtime for CMVR robot edge devices"
readme = "README.md"
requires-python = ">=3.10,<3.13"
dependencies = [
  "pydantic>=2.8,<3",
  "PyYAML>=6,<7",
]

[project.optional-dependencies]
grpc = [
  "grpcio>=1.76,<2",
  "protobuf>=6.31.1,<7",
]
http = [
  "httpx>=0.27,<1",
]
video = [
  "av>=12,<17",
]
image = [
  "Pillow>=10,<13",
]
yolo = [
  "numpy>=1.24,<3",
  "ultralytics==8.4.31",
]
yolo-cpu = [
  "numpy>=1.24,<3",
  "torch==2.7.0",
  "torchvision==0.22.0",
  "ultralytics==8.4.31",
]

[dependency-groups]
test = [
  "pytest>=7.4,<9",
  "pytest-asyncio>=0.23,<1",
]
codegen = [
  "grpcio-tools>=1.76,<2",
]
dev = [
  { include-group = "test" },
  { include-group = "codegen" },
]

[project.scripts]
cmvr-edge-ai = "cmvr_edge_ai.cli:main"

[tool.setuptools]
package-dir = {"" = "src"}

[tool.setuptools.packages.find]
where = ["src"]

[tool.uv]
required-version = ">=0.11.16"
default-groups = []
conflicts = [
  [
    { extra = "yolo" },
    { extra = "yolo-cpu" },
  ],
]
required-environments = [
  "sys_platform == 'linux' and platform_machine == 'x86_64' and python_version == '3.10'",
]

[tool.uv.sources]
torch = [
  { index = "pytorch-cpu", extra = "yolo-cpu", marker = "sys_platform == 'linux' and platform_machine == 'x86_64'" },
]
torchvision = [
  { index = "pytorch-cpu", extra = "yolo-cpu", marker = "sys_platform == 'linux' and platform_machine == 'x86_64'" },
]

[[tool.uv.index]]
name = "pytorch-cpu"
url = "https://download.pytorch.org/whl/cpu"
explicit = true

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