Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
eth-ape==0.8.48
pytest==8.3.4
pytest==9.0.3

Check failure on line 2 in requirements.txt

View check run for this annotation

Claude / Claude Code Review

pytest 9.0.3 conflicts with eth-ape==0.8.48 dependency constraint

pytest==9.0.3 is incompatible with eth-ape==0.8.48, which declares a hard dependency constraint of pytest<9.0,>=8.0. Running pip install -r requirements.txt with these two pinned versions will fail with a ResolutionImpossible error — the requirements.txt as changed is uninstallable.
Comment on lines 1 to +2
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 pytest==9.0.3 is incompatible with eth-ape==0.8.48, which declares a hard dependency constraint of pytest<9.0,>=8.0. Running pip install -r requirements.txt with these two pinned versions will fail with a ResolutionImpossible error — the requirements.txt as changed is uninstallable.

Extended reasoning...

What the bug is and how it manifests

eth-ape==0.8.48 ships with a hard upper-bound on pytest, declaring pytest<9.0,>=8.0 in its requires_dist metadata on PyPI. This PR bumps pytest from 8.3.4 to 9.0.3. Because 9.0.3 satisfies >=9.0, it directly violates the strict <9.0 ceiling set by eth-ape. pip's dependency resolver treats this as a conflict and cannot produce a valid environment.

The specific code path that triggers it

When a user (or CI) runs pip install -r requirements.txt, pip collects both eth-ape==0.8.48 and pytest==9.0.3 as direct requirements, then resolves their transitive dependencies. eth-ape's metadata adds the constraint pytest<9.0 to the resolution set. pytest==9.0.3 does not satisfy <9.0, so pip raises a ResolutionImpossible error and the install fails entirely — no packages are installed.

Why existing code doesn't prevent it

Dependabot only inspects the direct version bump it is proposing (pytest 8.3.4 → 9.0.3) and checks for known compatibility scores for that one package. It does not automatically cross-check the transitive dependency constraints declared by other pinned packages in the same requirements file. There is no pip-compile lock file or pre-install CI step that would catch this before the PR is merged.

What the impact would be

Any developer, CI runner, or deployment pipeline that clones the repo at this commit and runs pip install -r requirements.txt will get a hard failure. The repository will be left in a broken state where its declared test/dev environment cannot be installed at all.

How to fix it

Two options: (1) Keep pytest pinned below 9.0 (e.g., pytest==8.3.4 or pytest>=8.0,<9.0) until eth-ape publishes a release that lifts the upper-bound; or (2) upgrade eth-ape to a version whose requires_dist permits pytest>=9.0 and update that pin in requirements.txt at the same time as this pytest bump.

Step-by-step proof

  1. requirements.txt after this PR: eth-ape==0.8.48 and pytest==9.0.3.
  2. Fetch eth-ape 0.8.48 metadata from PyPI: https://pypi.org/pypi/eth-ape/0.8.48/json → requires_dist includes pytest<9.0,>=8.0.
  3. pip attempts to resolve: direct requirement pytest==9.0.3 must satisfy <9.0 from eth-ape. 9.0.3 < 9.0 is false.
  4. pip emits: ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/stable/topics/dependency-resolution/.
  5. No packages are installed; the environment is broken.

Loading