fastapi>=0.143,<0.144
uvicorn[standard]>=0.54,<0.55
sqlalchemy[asyncio]>=2.1.5,<2.2
aiosqlite>=0.22,<0.23
alembic>=1.20,<1.21
pydantic-settings>=2.16,<2.17
httpx>=0.28,<0.29
python-dotenv>=1.2.4,<1.3
# python-multipart < 0.0.18 hat CVE-2024-53981 (DoS), 0.0.20 zusaetzlich CVE-2026-24486 + 40347
python-multipart>=0.0.32,<0.1
watchdog>=6,<7
# Pillow < 12.2.0 hat CVE-2026-40192 (FITS-Decompression-Bomb DoS)
Pillow>=13,<14
pdf2image>=1.17,<2
pytesseract>=0.3.13,<0.4
pdfplumber>=0.11.10,<0.13
# Aufteilen von Stapel-Scans (verlustfreies Seiten-Kopieren, 50-dpi-Raster);
# vorher nur transitive Abhaengigkeit von pdfplumber
pypdfium2>=5.14,<6
reportlab>=5.0.1,<5.1
# Client-Version MUSS zum Server-Image chromadb/chroma in docker-compose.yml passen (1.5.x)
chromadb-client>=1.5.9,<1.6
cryptography>=50,<51
croniter>=6.2.4,<7

# Rate-Limiting (Defense-in-Depth, ergaenzt das Auth-spezifische Limit) -
# globales Limit als App-Dependency in app/core/rate_limit.py
limits>=5.8,<6
# Zeitzonen-Datenbank fuer zoneinfo (Windows bringt keine IANA-Daten mit; TIMEZONE-Setting)
tzdata>=2025.2
