Conversation
pytest 9.0.0 removed the deprecated 'path' parameter from pytest_collect_file (and related hooks). pytest-black's hookimpl still declares it, so pytest refuses to register the plugin and exits before collecting any tests on whatever pytest 9.x CI installs.
lionick
marked this pull request as ready for review
September 18, 2026 06:15
Python 3.12+ venvs no longer bundle setuptools by default. The editable install (pip install -e .) of this setup.py-based project needs setuptools present in the target environment directly - it's not satisfied by pyproject.toml's build-system.requires alone, which only provisions an isolated build environment, not the one -e . installs into.
python setup.py install invokes easy_install, which in modern setuptools no longer actually fetches install_requires - idpyoidc itself gets installed but cryptojwt, filelock, etc. never do, breaking every test module that imports cryptojwt. pip install -r requirements-dev.txt -e . resolves and installs both the dev requirements and the package's own install_requires together in one pip call.
Added in 4bd3f32 (Dec 2022) for a requests/urllib3 incompatibility that predates requests' proper urllib3 2.x support. Current requests (2.32.5) declares Requires-Dist: urllib3<3,>=1.21.1, so nothing in the dependency graph needs the old ceiling anymore.
Member
|
We don't seem to use |
pytest-black only runs format checks when --black is passed to pytest; neither tox.ini's addopts nor the CI workflow's pytest invocation ever do, so it has never actually checked a single file. It's also the exact plugin whose broken pytest_collect_file hookimpl required the pytest<9 pin in the first place (3940636) - dropping the dead dependency removes the incompatibility instead of working around it, so the pin comes off too. Verified: full suite still passes with pytest resolving freely to 9.1.1.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed:
Drop the unused pytest-black dependency — it only checks formatting when --black is passed to pytest, which never happens here, so it's never actually run a single check.
Bump the cryptojwt minimum to 1.11.0
Drop Python 3.8 and 3.9 from the CI test matrix
Add Python 3.12, 3.13 and 3.14 to the CI test matrix (now 3.10, 3.11, 3.12, 3.13, 3.14).
Add setuptools to requirements-dev.txt — Python 3.12+ venvs no longer bundle it by default, and the editable install (pip install -e .) needs it present in the target environment directly.
Stop using python setup.py install in CI — it invokes easy_install, which in modern setuptools no longer actually fetches install_requires; idpyoidc itself would install but cryptojwt, filelock, etc. silently wouldn't, breaking every test module that imports cryptojwt. Replaced with pip install -r requirements-dev.txt -e ., which resolves and installs the dev requirements and the package's own install_requires together in one pip call.
Drop the urllib3<1.27 pin — added in Dec 2022 for a requests/urllib3 incompatibility that predates requests' proper urllib3 2.x support. Current requests (2.32.5) declares Requires-Dist: urllib3<3,>=1.21.1, so nothing in the dependency graph needs the old ceiling anymore.