-
Notifications
You must be signed in to change notification settings - Fork 60
Description
Describe the bug
Several of Chepy's dependencies are pinned to exact versions that are significantly out of date. This causes dependency conflicts when installing Chepy alongside other packages, and in some cases exposes users to known security vulnerabilities (notably PyJWT==1.7.1, released December 2018, which predates several CVEs in the 1.x line).
| Package | Pinned Version | Released | PyPI URL |
|---|---|---|---|
emoji |
2.0.0 | Jul 16, 2022 | https://pypi.org/project/emoji/2.0.0/ |
fire |
0.7.1 | Aug 16, 2025 | https://pypi.org/project/fire/0.7.1/ |
jmespath |
1.0.1 | Jun 17, 2022 | https://pypi.org/project/jmespath/1.0.1/ |
lz4 |
4.3.2 | Dec 30, 2022 | https://pypi.org/project/lz4/4.3.2/ |
msgpack |
1.0.4 | Jun 3, 2022 | https://pypi.org/project/msgpack/1.0.4/ |
parsel |
1.9.1 | Apr 8, 2024 | https://pypi.org/project/parsel/1.9.1/ |
passlib |
1.7.4 | Oct 8, 2020 | https://pypi.org/project/passlib/1.7.4/ |
PGPy |
0.6.0 | Nov 24, 2022 | https://pypi.org/project/PGPy/0.6.0/ |
pretty-errors |
1.2.25 | Nov 24, 2021 | https://pypi.org/project/pretty-errors/1.2.25/ |
PyJWT |
1.7.1 | Dec 7, 2018 | https://pypi.org/project/PyJWT/1.7.1/ |
pyOpenSSL |
23.2.0 | May 31, 2023 | https://pypi.org/project/pyOpenSSL/23.2.0/ |
Expected behavior
Dependencies should use minimum version specifiers (e.g. pyjwt>=2.0.0) or at minimum a compatible release range (e.g. pyjwt~=2.8) rather than exact pins (==), unless there is a specific known incompatibility with newer versions. This allows pip to resolve a compatible set of packages without conflicts and keeps users on maintained, patched versions of dependencies.
Additional context
PyJWT==1.7.1 is of particular concern - the 1.x branch is unmaintained and has known vulnerabilities. The 2.x line has been stable since 2021. It would be worth either bumping to pyjwt>=2.0.0 or auditing whether the 1.x API surface is still required.
More broadly, using exact pins in install_requires (as opposed to a lockfile like requirements.txt) is generally considered an anti-pattern for libraries, as it makes Chepy difficult to use as a dependency in larger projects.