[project]
name = "av-live-data-only-viz"
version = "0.1.0"
description = "Native Metal (pyobjc) visualizer for AV-Live data-only mode"
requires-python = ">=3.11"
dependencies = [
    "pyobjc-core>=10.3",
    "pyobjc-framework-Cocoa>=10.3",
    "pyobjc-framework-Metal>=10.3",
    "pyobjc-framework-MetalKit>=10.3",
    "pyobjc-framework-Quartz>=10.3",
    "pyobjc-framework-AVFoundation>=10.3",
    "python-osc>=1.8.3",
    "numpy>=1.26,<2",
    "scipy>=1.13",   # linear_sum_assignment pour tracker IoU (ByteTrack-like)
]

[project.optional-dependencies]
pose = [
    "coremltools>=9.0",
    "mediapipe>=0.10.35",
    "opencv-python>=4.10",
    "ultralytics>=8.3",
]
# DETRPose (transformer multi-personne, 2025). Le repo lui-meme n'est pas
# pip-installable — voir docstring data_only_viz/detrpose.py pour la
# procedure de clone manuel + telechargement du checkpoint.
# Les deps listees ici sont uniquement les libs Python tirables via pip.
detrpose = [
    "torch>=2.4",
    "torchvision>=0.19",
    "transformers>=4.40",
    "omegaconf>=2.3",
    "cloudpickle>=3.0",
    "pycocotools>=2.0",
    "xtcocotools>=1.14",
    "scipy>=1.13",
    "iopath>=0.1.10",
    "opencv-python>=4.10",
]
# Open3D for ICP fusion between iPhone LiDAR and Multi-HMR SMPL-X meshes.
# CPU-only is sufficient at 5-10 Hz LiDAR cadence.
lidar = [
    "open3d>=0.18,<0.20",
]
nlf = [
    "torch>=2.4",
    "torchvision>=0.19",
    "opencv-python>=4.10",
    "numpy>=1.26",
]
# Multi-HMR (Naver Labs, ECCV 2024). Pas pip-installable : on clone le repo
# dans ~/.cache/av-live-multihmr/multi-hmr et on injecte sys.path au runtime.
# SMPL-X NEUTRAL.npz requiert un compte academique sur smpl-x.is.tue.mpg.de.
multihmr = [
    "torch>=2.4",
    "torchvision>=0.19",
    "smplx>=0.1.28",
    "einops>=0.8",
    "iopath>=0.1.10",
    "huggingface-hub>=0.24",
    "opencv-python>=4.10",
    "numpy>=1.26,<2",
    "scipy>=1.13",
    "torchgeometry>=0.1.2",
    # Multi-HMR utils (utils/humans.py, utils/render.py)
    "roma>=1.5",
    "trimesh>=4.4",
    "pillow>=10.0",
    "tqdm>=4.65",
]
# SMPLer-X (S-Lab, ECCV 2024, NON-COMMERCIAL). Code source vendu
# via git submodule third_party/SMPLer-X (fork electron-rare).
# mmcv-lite suffit pour Config (le repo vendorise sa propre mmpose).
# Le detector mmdet est remplace par YOLO Ultralytics (extras pose).
iphone-usb = [
    "av>=12.0",
    "opencv-python>=4.10",
]
smplerx = [
    "torch>=2.4",
    "torchvision>=0.19",
    "smplx>=0.1.28",
    "mmcv-lite>=2.1",
    "ultralytics>=8.3",
    "opencv-python>=4.10",
    "numpy>=1.26,<2",
    "scipy>=1.13",
    "einops>=0.8",
    "pillow>=10.0",
    "tqdm>=4.65",
    "yacs>=0.1.8",
    "timm>=1.0",
]

[tool.uv]
package = false

[dependency-groups]
dev = [
    "pytest>=9.0.3",
]
