fastapi==0.136.*
# Pin EXPLICITE : fastapi n'exige que starlette>=0.46.0 — sans ce pin, un
# environnement existant peut garder une starlette vulnérable.
# >= 0.49.1 : corrige CVE-2025-54121 et CVE-2025-62727.
starlette>=0.49.1,<1.0
uvicorn[standard]==0.32.*
httpx==0.27.*
pydantic-settings==2.6.*
# Requis par FastAPI pour les uploads multipart (UploadFile) — import de PDF.
python-multipart==0.0.*

pydantic

# Comptage de tokens pour la jauge de contexte (UI chat drawer).
# L'encodage cl100k_base (GPT-4/3.5) donne une approximation correcte pour
# la plupart des modeles Llama/Gemma/Mistral (~5-10% d'ecart) — suffisant
# pour une jauge visuelle.
tiktoken==0.8.*

# Import de PDF de regles (-> GameSystem). Extraction de la couche texte
# (born-digital) avec repli OCR par page pour les scans.
#   - pymupdf  : extraction texte + rasterisation des pages (pas besoin de poppler)
#   - pytesseract + Pillow : OCR Tesseract sur les pages sans couche texte
#     (le binaire tesseract-ocr est installe dans le Dockerfile, langues fra+eng)
pymupdf==1.24.*
pytesseract==0.3.*
# 12.2+ : corrige 6 CVE de parsing d'images (surface critique : pages de PDF
# uploadés par l'utilisateur rasterisées puis passées à l'OCR).
Pillow==12.2.*
