Describe the bug
HAS_PYPCAPFILE's gated tests stay dark on Python 3.12, 3.13 and 3.14 no matter which job installs the extra, because the dependency is marker-limited:
pyproject.toml:201 PyPCAPFile = [ "pypcapfile; python_version < '3.12'" ]
pyproject.toml:225 "pypcapfile; python_version < '3.12'", # inside `all`
The reason is recorded and legitimate (pyproject.toml:197): "pypcapfile 0.12.0's linklayer module imports imp, removed in Python 3.12". So .[...,PyPCAPFile] resolves to nothing on three of the five matrix legs, and the 15 gated methods report as skips there.
Expected behavior
Either the gated methods execute on every leg, or the fact that they cannot is visible to the dependency-gate guard rather than only to a reader of pyproject.toml.
Additional context
This is residual #738 scope. #738 is "seven more skipUnless gates have never executed on any CI path", and #774 closes the last of the seven by name — but HAS_PYPCAPFILE is only partially closed: engine-tests and pypcap-parity install the extra, so the methods run on 3.10 and 3.11 and are dark on 3.12-3.14. Filing separately so #774's Fixes #738. can close cleanly instead of burying this.
tests/_dependency_gates.py deliberately does not evaluate environment markers — its own docstring says so — so dependency_gate_gaps() reports no gap here and cannot. That is a defensible scope decision rather than a guard defect; the consequence is that this particular hole is invisible to the machinery built to find exactly this class of hole, which is what makes it worth its own issue.
Options, none chosen: pin a pypcapfile fork or a patched build that does not import imp; teach the guard to evaluate markers so the 3.12-3.14 darkness is reported as a gap and then explicitly excluded with this reason; or accept it and record it in DEPENDENCY_GATE_EXCLUSIONS as a marker-limited partial, which at least puts it where the next reader of the guard will find it. Surfaced by the cross-review of #774.
Describe the bug
HAS_PYPCAPFILE's gated tests stay dark on Python 3.12, 3.13 and 3.14 no matter which job installs the extra, because the dependency is marker-limited:The reason is recorded and legitimate (
pyproject.toml:197): "pypcapfile 0.12.0'slinklayermodule importsimp, removed in Python 3.12". So.[...,PyPCAPFile]resolves to nothing on three of the five matrix legs, and the 15 gated methods report as skips there.Expected behavior
Either the gated methods execute on every leg, or the fact that they cannot is visible to the dependency-gate guard rather than only to a reader of
pyproject.toml.Additional context
This is residual #738 scope. #738 is "seven more
skipUnlessgates have never executed on any CI path", and #774 closes the last of the seven by name — butHAS_PYPCAPFILEis only partially closed:engine-testsandpypcap-parityinstall the extra, so the methods run on 3.10 and 3.11 and are dark on 3.12-3.14. Filing separately so #774'sFixes #738.can close cleanly instead of burying this.tests/_dependency_gates.pydeliberately does not evaluate environment markers — its own docstring says so — sodependency_gate_gaps()reports no gap here and cannot. That is a defensible scope decision rather than a guard defect; the consequence is that this particular hole is invisible to the machinery built to find exactly this class of hole, which is what makes it worth its own issue.Options, none chosen: pin a
pypcapfilefork or a patched build that does not importimp; teach the guard to evaluate markers so the 3.12-3.14 darkness is reported as a gap and then explicitly excluded with this reason; or accept it and record it inDEPENDENCY_GATE_EXCLUSIONSas a marker-limited partial, which at least puts it where the next reader of the guard will find it. Surfaced by the cross-review of #774.