# Backend runtime dependencies for the api Docker image.
#
# This file exists so the Docker dep-install layer does NOT depend on the
# version-bearing pyproject.toml. A version bump alone used to invalidate the
# ~555 MB site-packages layer (COPY pyproject.toml -> pip install ".[backend]"),
# forcing every `financebench upgrade` to re-pull the full deps layer even when
# no dependency changed. Installing from this version-free manifest keeps that
# layer's digest stable across version-only releases.
#
# MUST stay in sync with [project].dependencies + [project.optional-dependencies].backend
# in pyproject.toml. torch/torchvision are intentionally omitted here — they are
# installed first from the CPU-only index in the Dockerfile so sentence-transformers
# does not pull the multi-GB CUDA wheels.

# CLI client base deps
typer>=0.12,<1.0
rich>=13.0,<15.0
prompt_toolkit>=3.0,<4.0
httpx>=0.28,<1.0
httpx-sse>=0.4,<1.0
python-dotenv>=1.0,<2.0

# Orchestration
langgraph>=0.6,<1.0
langchain>=0.3,<1.0
langchain-core>=0.3,<1.0
langchain-openai>=0.3,<1.0
langchain-groq>=0.2,<1.0
langchain-anthropic>=0.3,<1.0

# FastAPI server
fastapi>=0.115,<1.0
uvicorn[standard]>=0.34,<1.0
sse-starlette>=2.0,<3.0
python-multipart>=0.0.18

# Vector DB
qdrant-client>=1.13,<1.15
fastembed>=0.4,<1.0

# Reranker
sentence-transformers>=3.0,<5.0
peft>=0.13,<2.0

# Document parsing
pypdf>=5.0,<7.0

# Embedding providers
openai>=1.60,<3.0
voyageai>=0.3,<1.0

# Auth
PyJWT>=2.9,<3.0
python-jose[cryptography]>=3.3,<4.0

# Guardrails
presidio-analyzer>=2.2,<3.0
presidio-anonymizer>=2.2,<3.0
llm-guard>=0.3,<1.0

# LangGraph persistence
langgraph-checkpoint-postgres>=2.0,<3.0
psycopg[binary]>=3.2,<4.0

# Config
pydantic>=2.9,<3.0
pydantic-settings>=2.6,<3.0

# Observability
langsmith>=0.4,<1.0

# Result cache
redis>=5.0,<6.0

# Migrations
alembic>=1.13,<2.0

# HF snapshot consumer (financebench seed --from-hf)
pyarrow>=15.0,<25.0
huggingface_hub>=0.26,<1.0
