Setting pytest version before 8.0.0 causes the min versions CI check to fail.
pytest before 8.0.0 consumes pkg_resources from the setuptools package. This was moved in setuptools version 71.
Some options:
- stick with pytest 8.0.0. If a customer wants < 8.0 they can pair with us or pay us to figure it out.
- add
setuptools < 71 to requirements.prod.required.txt. This would block users from using newer setuptools.
- add
setuptools >= 70 to requirements.prod.required.txt. This would require users of older pytest to figure out that they need to pin their setuptools to an older version.
- In
pin_requirements_to_minimum_acceptable_version.py append requirements.prod.required.txt with setuptools==70. This would require users of older pytest to figure out that they need to pin their setuptools to an older version.
- Add a runtime check to give a helpful message when setuptools is an incompatible version
Notes
It's good that we have a CI that tests against both the newest and oldest versions of each of our dependencies. Most libraries don't have that, so version incompatibilities are not uncommon in the Python ecosystem. We're already doing better than most. But it's important to note that we don't test against all the intermediate versions so there are lots of combinations that may not (probably don't) work.
Setting pytest version before 8.0.0 causes the min versions CI check to fail.
pytest before 8.0.0 consumes
pkg_resourcesfrom thesetuptoolspackage. This was moved in setuptools version 71.Some options:
setuptools < 71torequirements.prod.required.txt. This would block users from using newer setuptools.setuptools >= 70torequirements.prod.required.txt. This would require users of older pytest to figure out that they need to pin theirsetuptoolsto an older version.pin_requirements_to_minimum_acceptable_version.pyappendrequirements.prod.required.txtwithsetuptools==70. This would require users of older pytest to figure out that they need to pin theirsetuptoolsto an older version.Notes
It's good that we have a CI that tests against both the newest and oldest versions of each of our dependencies. Most libraries don't have that, so version incompatibilities are not uncommon in the Python ecosystem. We're already doing better than most. But it's important to note that we don't test against all the intermediate versions so there are lots of combinations that may not (probably don't) work.