# e2e-runner image dependencies. # # Pin reasoning: # - `opencv-python>=4.12.0` honors D-CROSS-CVE-1 (the runner image does NOT # depend on gtsam — the numpy<2 ABI block that forces the SUT pin does not # apply here; see _docs/_process_leftovers/2026-05-11_d_cross_cve_1_opencv_pin_deferred.md). # - Versions match the SUT pyproject where feasible (numpy 1.x line, pyproj 3.6+, pydantic 2.x). # - pytest 8.x is the stable line. We do NOT depend on pytest-csv: an earlier # design considered extending its column hooks, but our custom # `runner.reporting.csv_reporter` plugin owns the `--csv` / `--csv-columns` # CLI surface end-to-end and pytest-csv 3.x conflicts on the flag name and # is also incompatible with pytest 9.x (uses the removed `hookwrapper` # marker). Keep it out of the image. pytest>=8.0,<9.0 pytest-timeout>=2.2,<3.0 pytest-xdist>=3.5,<4.0 pytest-forked>=1.6,<2.0 # MAVLink ground side — used for both AP signing-handshake assertions and the # passive listener that consumes mavproxy-listener's forwarded UDP stream. pymavlink>=2.4 # Geodesic + frame replay + numerical assertion stack. opencv-python>=4.12.0 numpy>=1.26,<2.0 scipy>=1.11,<2.0 geopy>=2.4,<3.0 pyproj>=3.6,<4.0 # HTTP client for talking to mock-suite-sat-service. httpx>=0.28,<1.0 pyyaml>=6.0 pydantic>=2.5,<3.0 # Structured logging in the runner side (mirrors the SUT logger choice). structlog>=24.1 # FDR archive reader uses orjson for the line-delimited JSON record format. orjson>=3.9,<4.0