# =============================================================================
# Hugging Face Embeddings Starter – Python dependencies
# =============================================================================
# Version pins are "pinned-ish" (major.minor) to allow patch-level updates
# while preventing breaking changes.
#
# Extra deps by use-case (install only what you need):
#   Fast ANN search  : faiss-cpu>=1.8  (or faiss-gpu for CUDA)
#   Multilingual tokenizer extras: sentencepiece>=0.1.99
#   Visualisation    : umap-learn>=0.5, matplotlib>=3.8
#   Async HTTP tests : httpx>=0.27  (already listed under API)
# =============================================================================

# ---------------------------------------------------------------------------
# Core – always required
# ---------------------------------------------------------------------------
transformers>=4.40,<5.0
sentence-transformers>=2.7,<4.0   # high-level encoder; wraps transformers
torch>=2.2,<3.0                   # CPU build is fine; GPU users: install CUDA extras
huggingface-hub>=0.22,<1.0
tokenizers>=0.19,<1.0
PyYAML>=6.0,<7.0
python-dotenv>=1.0,<2.0
numpy>=1.26,<3.0                  # ndarray operations on embedding matrices
scikit-learn>=1.4,<2.0            # cosine similarity, pairwise distances, KMeans
accelerate>=0.29,<2.0             # optional but recommended for multi-device

# ---------------------------------------------------------------------------
# API service
# ---------------------------------------------------------------------------
fastapi>=0.111,<1.0
uvicorn[standard]>=0.29,<1.0
pydantic>=2.7,<3.0
httpx>=0.27,<1.0                  # FastAPI TestClient dependency

# ---------------------------------------------------------------------------
# UI
# ---------------------------------------------------------------------------
gradio>=4.30,<5.0

# ---------------------------------------------------------------------------
# Testing
# ---------------------------------------------------------------------------
pytest>=8.0,<9.0
pytest-asyncio>=0.23,<1.0

# ---------------------------------------------------------------------------
# Optional – uncomment as needed
# ---------------------------------------------------------------------------
# faiss-cpu>=1.8                  # approximate nearest-neighbour search (large corpora)
# sentencepiece>=0.1.99           # required by multilingual / T5-based models
# umap-learn>=0.5                 # dimensionality reduction for visualisation
# matplotlib>=3.8                 # plotting embedding clusters
# Pillow>=10.0                    # vision models
