Skip to content

HAS_PYPCAPFILE stays dark on 3.12-3.14 regardless of install line: pypcapfile is marker-limited #776

Description

@JarryShaw

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugtestPull requests that add or correct tests (test: subject prefix)

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions