testsAndMisc/meta/requirements.txt
Krzysztof kuhy Rudnicki 0cea82cab5 feat: the nftables drift check now runs itself at boot
`verify` gated on the two invariants whose breach cut every bridged
container off the internet on 2026-08-29 and again after the 2026-08-30
reboot -- but nothing invoked it, so it reported drift only when a human
thought to ask, and the outage it exists for is exactly the one nobody
thinks to ask about.

nftables-drift.service now runs it after nftables.service, docker.service
and network-online.target at every boot, plus a daily Persistent timer. A
breach is a failed unit in `systemctl --failed`, not a log line: a
self-check that detects a failure has to gate, not warn.

Proven in ~/utils/vmbox across two real reboots -- drifted /etc leaves the
unit failed with the diff and the missing docker0 accept in its journal,
matching /etc leaves it active with no false positive -- then installed and
run green on the host. Not yet observed across a host reboot.

Also bumps the gatelock pin to v0.7.3, which is what turned main's
dependency-freshness job red; CI_GREEN_SKIP is set because this commit is
that fix.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015d48t4qsQLBJnDwDeo2Nom
2026-08-30 15:49:12 +02:00

91 lines
2.4 KiB
Plaintext

# ==============================================================================
# testsAndMisc — combined runtime + development dependencies
# Install with: pip install -r meta/requirements.txt
# Sorted alphabetically (enforced by pre-commit `requirements-txt-fixer`).
# ==============================================================================
add-trailing-comma==4.0.0
aiohttp==3.14.3
anthropic==1.2.0
autoflake==2.4.0
autopep8==2.3.2
bandit==1.9.4
beautifulsoup4==4.15.0
berserk==0.14.0
black==26.5.1
bottle==0.13.4
codespell==2.4.3
coverage==7.16.0
darglint==1.8.1
dead==2.1.0
defusedxml==0.7.1
docformatter==1.7.8
fixit==2.2.1
flake8==7.3.0
flake8-annotations==3.2.0
flake8-bandit==4.1.1
flake8-bugbear==25.11.29
flake8-comprehensions==3.17.0
flake8-docstrings==1.7.0
flake8-eradicate==1.5.0
flake8-pie==0.16.0
flake8-print==5.0.0
flake8-pyi==26.5.0
flake8-pytest-style==2.2.0
flake8-return==1.2.0
flake8-simplify==0.30.0
gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.7.3#subdirectory=gatelock
genanki==0.13.1
geopandas==1.1.4
howlongtobeatpy==1.0.23
hypothesis==6.167.0
importlib-metadata==9.0.1
interrogate==1.7.0
# isort is deliberately not pinned: nothing here imports it (ruff's isort
# rules replaced it) and pylint constrains it (`isort!=5.13,<10,>=5` as of
# 4.0.8), so pinning it independently risks an unsolvable environment for a
# package no code here imports. pylint brings a compatible one.
lxml==6.1.2
markdownify==1.2.3
matplotlib==3.11.1
mccabe==0.7.0
mypy==2.3.1
numpy==2.5.2
opencv-python==5.0.0.93
pillow==12.3.0
pip-audit==2.10.1
pipdeptree==4.2.2
pre-commit==4.6.2
prospector==1.19.1
pycodestyle==2.14.0
pydocstyle==6.3.0
pyflakes==3.4.0
pygame==2.6.1
pylint==4.0.8
pyright==1.1.411
pytest==9.1.1
pytest-cov==7.1.0
pytest-randomly==4.1.0
pytest-sugar==1.1.1
pytest-timeout==2.4.0
pytest-xdist==3.8.0
python-chess==1.999
python-kasa==0.10.2
pyupgrade==3.21.2
radon==6.0.1
reorder-python-imports==3.17.0
requests==2.34.2
rich==15.0.0
ruff==0.16.5
# safety is deliberately not pinned: its only reference in this repo is a
# commented-out pre-commit hook, and safety 3.8.1 declares `typer<0.26`,
# which would hold the typer this repo actually imports below latest.
selenium==4.48.0
typer==0.27.2
types-python-dateutil==2.9.0.20260807
types-PyYAML==6.0.12.20260815
types-requests==2.33.0.20260712
types-setuptools==84.0.0.20260812
typing_extensions==4.16.0 # Self annotation on py310 target (session_autopsy store lock)
websockets==17.1