-r requirements.txt

# ML stack — versions current as of 2026-05-14 with Python 3.14 wheel coverage.

# torch + torchvision are NOT listed here: they are installed CPU-only from
# the PyTorch CPU index in Dockerfile.ml. The default PyPI torch wheel bundles
# the NVIDIA CUDA runtime (a ~5.6GB image layer); this pipeline is CPU-only,
# so Dockerfile.ml uses the +cpu wheels from
# https://download.pytorch.org/whl/cpu instead.
#
# IMPORTANT: torchvision 0.27 declares requires_python "!=3.14.1,>=3.10" —
# Python 3.14.1 specifically is excluded due to a known incompatibility.
# The python-ci runner pulls python:3.14-bookworm (latest patch); if that
# resolves to 3.14.1 the install will fail. Pin a specific Python patch in
# the runner image (CI-Runner/CI-python/Dockerfile) if this becomes a
# blocker. 3.14.0 and 3.14.2+ are fine.

transformers>=5.8,<6.0
onnxruntime>=1.26,<2.0
huggingface-hub>=1.14,<2.0
opencv-python-headless>=4.13,<5.0

# scikit-learn powers the tag-eval (#1130) head-vs-centroid comparison: logistic
# regression + cross-validated precision/recall/AP. Battle-tested metrics matter
# because that eval's whole purpose is producing trustworthy numbers. numpy is
# left to resolve transitively (torch/transformers/sklearn all pull it) to avoid
# pinning against their constraints.
scikit-learn>=1.7,<2.0
