flask==3.1.3 # Backup encryption (data_backup.py): with fail-closed hardening this is a # runtime dependency, not optional — a backup with BACKUP_KEY set refuses to run # without it. Pinned exact (== installed). cryptography==50.0.2 # Pinned exact: run.sh auto-installs this file with no --require-hashes, so an # unpinned name would pull "latest" on a fresh box (artifact-substitution risk). # pytrends upstream (GeneralMills/pytrends) was archived 2025-04-17 — migrate to # trendspy eventually; lazy-imported (barometer only), not on the web hot path. pytrends==4.9.2