When generating requirements.txt for a package which has multiple pinned Python version dependencies, then these should be taken into account when generating requirements.txt.
For instance, the package botocore contains the following in setup.py (note the multiple entries for package urllib3):-
requires = [
'jmespath>=0.7.1,<2.0.0',
'python-dateutil>=2.1,<3.0.0',
# Prior to Python 3.10, Python doesn't require openssl 1.1.1
# but urllib3 2.0+ does. This means all botocore users will be
# broken by default on Amazon Linux 2 and AWS Lambda without this pin.
'urllib3>=1.25.4,<1.27 ; python_version < "3.10"',
'urllib3>=1.25.4,!=2.2.0,<3 ; python_version >= "3.10"',
]
Describe the solution you'd like
Generating requirements for the package botocore depends upon the version of Python that is currently running, and so the generated file may not be usable by other Python versions.
What's the problem this feature will solve?
When generating
requirements.txt
for a package which has multiple pinned Python version dependencies, then these should be taken into account when generatingrequirements.txt
.For instance, the package
botocore
contains the following insetup.py
(note the multiple entries for packageurllib3
):-Describe the solution you'd like
Generating requirements for the package
botocore
depends upon the version of Python that is currently running, and so the generated file may not be usable by other Python versions.Here is an example:-
The generated
requirements.txt
file will not be usable with Python >= 3.10.Similarly, the following will result in a
requirements.txt
file that is not usable with Python < 3.10:-My desired solution is for the resulting file to contain the following:-
Alternative Solutions
For now, I manually alter the generated file to add both package versions with the Python version pins.
Additional context
N/A