# ── Core Hugging Face stack ───────────────────────────────────────────────────
transformers>=4.40.0
datasets>=2.19.0
tokenizers>=0.19.0
accelerate>=0.29.0          # required by Trainer for multi-GPU / mixed-precision
evaluate>=0.4.1             # metric wrappers (seqeval, etc.)
seqeval>=1.2.2              # sequence-labelling evaluation (NER F1 per class)
huggingface-hub>=0.22.0     # model / dataset download utilities

# ── Numerics & data ───────────────────────────────────────────────────────────
numpy>=1.26.0
pandas>=2.1.0
scikit-learn>=1.4.0         # label encoding, classification_report

# ── Configuration ─────────────────────────────────────────────────────────────
pyyaml>=6.0.1
python-dotenv>=1.0.0

# ── API ───────────────────────────────────────────────────────────────────────
fastapi>=0.110.0
uvicorn[standard]>=0.29.0
pydantic>=2.6.0

# ── UI ────────────────────────────────────────────────────────────────────────
gradio>=4.28.0

# ── Visualisation ─────────────────────────────────────────────────────────────
matplotlib>=3.8.0

# ── CLI ───────────────────────────────────────────────────────────────────────
click>=8.1.7

# ── Testing ───────────────────────────────────────────────────────────────────
pytest>=8.1.0
httpx>=0.27.0               # async test client for FastAPI

# ── Optional extras (uncomment as needed) ─────────────────────────────────────
# sentencepiece>=0.2.0      # required by XLM-RoBERTa, mBERT, T5 tokenisers
# protobuf>=4.25.0          # needed by some sentencepiece backends
# torch>=2.1.0              # Trainer uses PyTorch by default; install separately:
#   pip install torch --index-url https://download.pytorch.org/whl/cpu
