# Final dependency lock of the archived CLIs (US07-01).
#
# These are the versions present in the environment the archive was taken from —
# what the frozen sources were last verified against by the characterization
# suite. Restoring a donor for forensics means pinning these, not "latest".
#
# Python 3.14.6

openai==3.0.0          # photo_analyzer: OpenAI-compatible vision client
numpy==2.4.6           # photo_analyzer, nsfwtag: pixel work
Pillow==12.3.0         # photo_analyzer, nsfwtag: decode/resize
rich==15.0.0           # photo_analyzer: console output
scipy==1.18.0          # photo_analyzer: perceptual-hash DCT
PyYAML==6.0.3          # tooling that reads the donor ledger

# NSFW inference (nsfwtag/scoring.py, nsfwtag/bench.py) was never installed in the
# archiving environment; the model stack is recorded here from the sources so a
# forensic run can reproduce it, not from a resolved lock:
#   torch, transformers, timm  — AdamCodd/vit-base-nsfw-detector (see nsfwtag/README.md)
# exiftool is an external binary, not a Python package.
