# Web quart>=0.20,<0.21 hypercorn>=0.18,<0.19 # DB sqlalchemy[asyncio]>=2.0,<2.1 asyncpg>=0.31,<0.32 psycopg[binary]>=3.3,<3.4 alembic>=1.18,<1.19 pgvector>=0.4,<0.5 # Task queue celery>=5.6,<5.7 redis>=7.4,<8.0 # Crypto for credential storage (lands in FC-3, but pinned now for stability) cryptography>=48,<49 # Image handling (lands in FC-2) pillow>=12,<13 imagehash>=4.3,<4.4 # Gallery-dl wrapper (lands in FC-3) gallery-dl>=1.32,<1.33 # Video extractor backend for gallery-dl. Without it, every video post # attachment fails with `[downloader.ytdl][error] Cannot import yt-dlp` # → `[download][error] Failed to download NN_video.mp4`. Operator-flagged # 2026-05-31 after Patreon video posts produced empty downloads. yt-dlp>=2025.1 # Utilities python-dotenv>=1.2,<2.0 structlog>=25.5,<26.0 # HTML sanitization for scraped post descriptions (FC-2d provenance) nh3>=0.2,<0.3 # Archive extraction (FC-2d-iii filesystem-import aid) rarfile>=4.2,<5 py7zr>=1,<2 # Google Drive fetcher for off-platform file-host links (external downloads, # #830). Handles Drive's confirm-token + virus-scan interstitial. mega.nz uses # the `megatools` binary instead (Debian apt pkg in the runtime image, not pip). gdown>=5,<6