wrolpi/requirements.txt
Roland 40587ebe98
build: require pytest-timeout, so a hung test fails instead of hanging CI
pytest.ini has carried `timeout = 30` and `timeout_method = signal` with a comment
asking that it not be removed, but pytest-timeout was never declared in
requirements.txt.  CI installs only that file, so the options were unknown there,
pytest warned and carried on, and the timeout has never once applied in CI.  A
hung test ran until CircleCI killed the job, which reports no test name at all --
and when the hang took an xdist worker with it, the rest of that worker's tests
came back as a wall of EOFError, burying the actual cause.

It goes in requirements.txt rather than a dev-only file because this project has
no testing-only dependencies: a WROLPi is expected to run, test, and develop on
the device, so the four Dockerfiles that install this file get it too.

Verified: the unknown-option warnings are gone, a deliberately hung test now fails
with "Timeout (>30.0s) from pytest-timeout" naming the test, and the full suite
passes with the timeout in force -- 1709 passed under -nauto, so no legitimate
test is near the limit locally.

Worth watching: this is a behaviour change for CI, which has never enforced it.
CircleCI runs on 4 vCPU with -nauto, so a test that takes ten seconds here could
take longer there.  If timeouts appear in CI the number is the thing to raise, not
the plugin to drop.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 18:05:08 -06:00

41 lines
992 B
Text

Pillow==12.3.0
PyYAML==6.0.3
SQLAlchemy[asyncio]==1.3.22
aiohttp==3.14.3
alembic==1.10.4
beautifulsoup4==4.14.3
cachetools==5.5.0
cryptography==50.0.0
ebooklib==0.20
feedparser==6.0.12
jc==1.25.6
libzim==3.10.0
mock==5.2.0
psutil==7.2.2
pydantic>=2.0.0
PyMuPDF>=1.27.2.3
pytest-asyncio==1.4.0
# pytest.ini sets `timeout = 30` and asks that it not be removed, but this was never declared
# here -- so on any machine without it, and in CI, which installs only this file, the option was
# unknown and the timeout never applied. A hung test then runs until the CI job itself is
# killed, with no indication of which test hung.
pytest-timeout==2.4.0
pytest-xdist==3.8.0
pytest==9.0.3
py7zr>=1.1.3
python-docx==1.2.0
python-dotenv==1.2.2
python-magic~=0.4.27
pytz==2026.2
rarfile>=4.2
sanic-ext==25.12.0
sanic-testing==24.6.0
sanic==25.12.1
secretstorage==3.5.0
selenium==4.44.0
srt==3.5.3
tqdm==4.67.3
vininfo[cli]==1.11.0
webvtt-py==0.5.1
yt-dlp[default,curl-cffi]>=2026.03.17
yt-dlp-ejs>=0.8.0