Wheels with tags in manylinux_x_y format cannot be resolved
Hi,
I’m encountering an issue where the python-inspector tool does not resolve the wheel for a packages correctly if the wheel tag is in the format manylinux_x_y
Environment
Python Inspector Version: 0.12.0
Python Version: 3.11
Operating System: Linux, Ubuntu 22.04
Steps to Reproduce
Create a requirement.txt file with following content:
solace-pubsubplus==1.9.0 ; python_version >= "3.11" and python_version < "4.0"
Run the Python Inspector tool:
python-inspector -p 3.11 -o linux --json inspector_output.json --requirement requirement.txt
Observe the output.
Expected Behavior
The dependency can be resolved.
Actual Behavior
The tool throws an exception:
resolvelib.resolvers.exceptions.ResolutionImpossible: [RequirementInformation(requirement=<Requirement('solace-pubsubplus==1.9.0; python_version >= "3.11" and python_version < "4.0"')>, parent=None)]
Additional Information
Many thanks
Christoph
This issue arose while using ORT, which depends on python-inspector. It seems like the problem originates from python-inspector itself when analyzing requirements.txt.
Spec
https://github.com/pypa/manylinux
Strangely following commands seems to work.
Succeeds even when I use a python 3.11 interpreter:
python-inspector -p 3.10 -o linux --json inspector_output.json --requirement requirement.txt
Succeeds, too. The optional parameter forces a different approach.
python-inspector -p 3.11 -o linux --json inspector_output.json --requirement requirement.txt --use-pypi-json-api
Here I don't like the hint from the command line parameter:
Use PyPI JSON API to fetch dependency data. Faster but not always correct.
Thank you
Christoph
@chbaeumer Thanks for the report. We need to add support for the newest tags in https://github.com/aboutcode-org/python-inspector/blob/main/src/python_inspector/utils_pypi_supported_tags.py
I do have the same issue when using ort analyse on my poetry-project:
java.io.IOException: Running 'python-inspector --python-version 311 --operating-system linux --json-pdt /tmp/ort-PythonInspector13710381662136651418/python-inspector6283273422756952523.json --analyze-setup-py-insecurely --requirement /tmp/ort-Poetry12499612839497264533/requirements.txt14705584514466321039.tmp --verbose' in '/tmp/ort-Poetry12499612839497264533' failed with exit code 1: Traceback (most recent call last): File "/opt/python/versions/3.11.10/lib/python3.11/site-packages/resolvelib/resolvers/resolution.py", line 388, in resolve self._add_to_criteria(self.state.criteria, r, parent=None) File "/opt/python/versions/3.11.10/lib/python3.11/site-packages/resolvelib/resolvers/resolution.py", line 142, in _add_to_criteria raise RequirementsConflicted(criterion) resolvelib.resolvers.exceptions.RequirementsConflicted: Requirements conflict: <Requirement('onnxruntime==1.21.1; python_version >= "3.10" and python_version < "3.13"')>
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "/opt/python/versions/3.11.10/lib/python3.11/site-packages/python_inspector/resolve_cli.py", line 253, in resolve_dependencies resolution_result: Dict = resolver_api( ^^^^^^^^^^^^^ File "/opt/python/versions/3.11.10/lib/python3.11/site-packages/python_inspector/api.py", line 279, in resolve_dependencies resolution, purls = resolve( ^^^^^^^^ File "/opt/python/versions/3.11.10/lib/python3.11/site-packages/python_inspector/api.py", line 341, in resolve resolved_dependencies, packages = get_resolved_dependencies( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/python/versions/3.11.10/lib/python3.11/site-packages/python_inspector/api.py", line 379, in get_resolved_dependencies resolver_results = resolver.resolve(requirements=requirements, max_rounds=max_rounds) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/python/versions/3.11.10/lib/python3.11/site-packages/resolvelib/resolvers/resolution.py", line 515, in resolve state = resolution.resolve(requirements, max_rounds=max_rounds) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/python/versions/3.11.10/lib/python3.11/site-packages/resolvelib/resolvers/resolution.py", line 390, in resolve raise ResolutionImpossible(e.criterion.information) from e resolvelib.resolvers.exceptions.ResolutionImpossible: [RequirementInformation(requirement=<Requirement('onnxruntime==1.21.1; python_version >= "3.10" and python_version < "3.13"')>, parent=None)]