# ── Web framework ──────────────────────────────────────────
fastapi==0.115.5
uvicorn[standard]==0.32.1
python-multipart==0.0.17
pydantic==2.10.3
pydantic-settings==2.6.1

# ── Database ───────────────────────────────────────────────
sqlalchemy==2.0.36
alembic==1.14.0
psycopg2-binary==2.9.10

# ── Task queue ─────────────────────────────────────────────
celery==5.4.0
redis==5.2.1

# ── Object storage ─────────────────────────────────────────
boto3==1.35.80

# ── Data processing ────────────────────────────────────────
pandas==2.2.3
numpy==2.1.3
scikit-learn==1.5.2
scipy==1.14.1
reportlab==4.2.5
pyarrow==18.1.0
openpyxl==3.1.5

# ── Utilities ──────────────────────────────────────────────
python-dotenv==1.0.1
httpx==0.28.1

# ── Testing ────────────────────────────────────────────────
pytest==8.3.4
pytest-asyncio==0.24.0
psutil==6.1.0

# ── LLM providers (optional — install only the one you use) ─
# The app imports these lazily, so an unused one being absent is fine.
groq==0.13.1
openai==1.59.6
# anthropic==0.42.0   # uncomment if you use LLM_PROVIDER=anthropic

# ── Notebook bridge (Jupyter event-loop shim) ──────────────
nest-asyncio==1.6.0
