# 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
