# Pinned to exact versions. These are what production runs and what the test
# suite is green against — with `>=` the image you get depends on the day you
# build it, which is how a rebuild once swapped in a gunicorn that could not
# boot the gevent worker at all.
#
# Nothing here updates on its own any more, so bump deliberately: change a
# version, let CI run, then deploy.
Django==6.1
pylast==7.1.0
requests==2.34.2
python-dotenv==1.2.3
whitenoise==6.12.0
feedparser==6.0.14
gevent==26.8.0
# gunicorn 26.2.0 imports packaging.version in ggevent.py while declaring no
# dependencies of its own, so packaging has to be requested explicitly.
gunicorn==26.2.0
packaging==26.3
piper-tts==1.7.0
# ffmpeg (a static binary in the wheel) finds the pauses for skipping silence in the browser.
imageio-ffmpeg==0.6.0
# The feed reader takes the article out of a news page (main text without menus, ads, comments).
trafilatura==2.3.0
# Subscriber logins of the feed reader are kept encrypted (feeds/logins.py).
cryptography==50.0.1
