pip-tools icon indicating copy to clipboard operation
pip-tools copied to clipboard

Error message human unreadable when using --resolver=backtracking

Open mtesch-um opened this issue 1 year ago • 3 comments

What's the problem this feature will solve?

Using the new --resolver=backtracking causes completely unreadable error messages when resolution isnt possible.

Describe the solution you'd like

The old resolver's error messages were sufficient to explain to the user what was unresolvable, and legible for a human.

For an example, the new --resolver=backtracking (using pip-tools 6.12.3) gives:

Traceback (most recent call last):
  File "/Users/mtesch/src/ut_geotab/venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve
    result = self._result = resolver.resolve(
  File "/Users/mtesch/src/ut_geotab/venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 481, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/Users/mtesch/src/ut_geotab/venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 385, in resolve
    raise ResolutionImpossible(self.state.backtrack_causes)
pip._vendor.resolvelib.resolvers.ResolutionImpossible: [RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20'), parent=LinkCandidate('https://files.pythonhosted.org/packages/b8/bb/0a4ae331fb64b0ccc6a83161d9aa462b2c38758823ac0ae48954714d5293/cattrs-1.10.0-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:>=3.7,<4.0)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20'), parent=LinkCandidate('https://files.pythonhosted.org/packages/48/f9/4be3a1b2780ed0b916e61a95d0e2397600df770c66e95cf50a3548099c35/cattrs-1.9.0-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:>=3.7,<4.0)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20'), parent=LinkCandidate('https://files.pythonhosted.org/packages/85/f4/56570f79c6bf44d3032c60e29c3786a00857ca4b68ba635300e7f4e5fbbc/cattrs-1.8.0-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:>=3.7,<4.0)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20.1.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/fd/90/22ada6ed1e4db5c0e0dbb33688d22254201fa1218d2a5a5aacc553e2308e/cattrs-1.7.1-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:>=3.7,<4.0)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20.1.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/24/cf/661553ab79f8afa97a2248590b3530c5f9a95401ea7e99bbfa46a8da2f7f/cattrs-1.7.0-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:>=3.7,<4.0)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20.1.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/f1/3b/c4ef63b93f2b21e968c4ae5d9cf0bfa622f3663d66b4b0d9214feee49119/cattrs-1.5.0-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:~=3.7)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20.1.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/34/5e/0c0ce9c0adbcf102c77c4d5089f43b3ecf4ae1e3929468c7215f5b3089a2/cattrs-1.4.0-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:~=3.7)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20.1.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/12/a3/5ead84bc068fcc76f780f6d42da2ff39639442a5c283a2e1e00ab71d4570/cattrs-1.3.0-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:~=3.7)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20.1.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/0f/d0/c3c223a190aea4cc58589e69b4c287c7de6e741d7b3be432e47e3a0d2ecc/cattrs-1.2.0-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:~=3.7)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20.1.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/de/6c/7e372e2826df2dc798bf49c6ddfc60e3218456bef82df1a29b387bf607ba/cattrs-1.1.2-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:~=3.7)')), RequirementInformation(requirement=SpecifierRequirement('attrs~=19.3'), parent=LinkCandidate('https://files.pythonhosted.org/packages/36/07/368cf47f06564d7ffff603ade4c60039ecf3f5b368b75201f4ccb5512d78/apache_airflow-1.10.12-py2.py3-none-any.whl (from https://pypi.org/simple/apache-airflow/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=17.3.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/dd/22/9b3e55dd0c8c460a9381c97e9f33cd4d7bc6f322f8c3ae5c9737becda9a3/aiohttp-3.8.1-cp39-cp39-macosx_10_9_x86_64.whl (from https://pypi.org/simple/aiohttp/) (requires-python:>=3.6)')), RequirementInformation(requirement=SpecifierRequirement('attrs>=20.1.0'), parent=LinkCandidate('https://files.pythonhosted.org/packages/73/d3/6d09bc2e6b6169f2ff71645e28eeb51fb88be92a8b24dcd9f27e9cf7089a/cattrs-1.1.1-py3-none-any.whl (from https://pypi.org/simple/cattrs/) (requires-python:~=3.7)'))]

wherease the old resolver w/o --resolver=backtracking gives a readable explanation:

Using legacy resolver. Consider using backtracking resolver with `--resolver=backtracking`.
Could not find a version that matches attrs>=17.3.0,>=17.4.0,>=20,~=19.3 (from apache-airflow==1.10.12->-r requirements.in (line 1))
Tried: 15.0.0, 15.1.0, 15.1.0, 15.2.0, 15.2.0, 16.0.0, 16.0.0, 16.1.0, 16.1.0, 16.2.0, 16.2.0, 16.3.0, 16.3.0, 17.1.0, 17.1.0, 17.2.0, 17.2.0, 17.3.0, 17.3.0, 17.4.0, 17.4.0, 18.1.0, 18.1.0, 18.2.0, 18.2.0, 19.1.0, 19.1.0, 19.2.0, 19.2.0, 19.3.0, 19.3.0, 20.1.0, 20.1.0, 20.2.0, 20.2.0, 20.3.0, 20.3.0, 21.1.0, 21.1.0, 21.2.0, 21.2.0, 21.3.0, 21.3.0, 21.4.0, 21.4.0, 22.1.0, 22.1.0, 22.2.0, 22.2.0
Skipped pre-versions: 15.0.0a1
There are incompatible versions in the resolved dependencies:
  attrs>=20 (from cattrs==1.10.0->apache-airflow==1.10.12->-r requirements.in (line 1))
  attrs~=19.3 (from apache-airflow==1.10.12->-r requirements.in (line 1))
  attrs>=17.4.0 (from jsonschema==3.2.0->apache-airflow==1.10.12->-r requirements.in (line 1))
  attrs>=17.3.0 (from aiohttp==3.8.1->utilimarc-utils==2.24.0->-r requirements.in (line 13))

Alternative Solutions

dont use new resolver.

Additional context

mtesch-um avatar Mar 09 '23 14:03 mtesch-um