Bump pytest from 8.3.4 to 9.0.3#61
Conversation
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.3.4 to 9.0.3. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](pytest-dev/pytest@8.3.4...9.0.3) --- updated-dependencies: - dependency-name: pytest dependency-version: 9.0.3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
| eth-ape==0.8.48 | ||
| pytest==8.3.4 | ||
| pytest==9.0.3 |
There was a problem hiding this comment.
🔴 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
- requirements.txt after this PR:
eth-ape==0.8.48andpytest==9.0.3. - Fetch eth-ape 0.8.48 metadata from PyPI:
https://pypi.org/pypi/eth-ape/0.8.48/json→ requires_dist includespytest<9.0,>=8.0. - pip attempts to resolve: direct requirement
pytest==9.0.3must satisfy<9.0from eth-ape. 9.0.3 < 9.0 is false. - pip emits:
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/stable/topics/dependency-resolution/. - No packages are installed; the environment is broken.
Bumps pytest from 8.3.4 to 9.0.3.
Release notes
Sourced from pytest's releases.
... (truncated)
Commits
a7d58d7Prepare release version 9.0.3089d981Merge pull request #14366 from bluetech/revert-14193-backport8127eafRevert "Fix: assertrepr_compare respects dict insertion order (#14050) (#14193)"99a7e60Merge pull request #14363 from pytest-dev/patchback/backports/9.0.x/95d8423bd...ddee02aMerge pull request #14343 from bluetech/cve-2025-71176-simple74eac69doc: Update training info (#14298) (#14301)f92dee7Merge pull request #14267 from pytest-dev/patchback/backports/9.0.x/d6fa26c62...7ee58acMerge pull request #12378 from Pierre-Sassoulas/fix-implicit-str-concat-and-d...37da870Merge pull request #14259 from mitre88/patch-4 (#14268)c34bfa3Add explanation for string context diffs (#14257) (#14266)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.