Skip to content

New resolver: Resolver quits when a given set of dependencies is uninstallable #9246

@di

Description

@di

What did you want to do?

Install an unresolvable set of dependencies and get a ResolutionImpossible error.

python3 -m pip install flask==1.1.1 diamond-dependency==1.0.0 --upgrade --upgrade-strategy only-if-needed --no-warn-script-location --no-warn-conflicts --force-reinstall --no-compile --user

Output

$ python3 -m pip install flask==1.1.1 diamond-dependency==1.0.0 --upgrade --upgrade-strategy only-if-needed --no-warn-script-location --no-warn-conflicts --force-reinstall --no-compile --user
Collecting diamond-dependency==1.0.0
  Downloading diamond_dependency-1.0.0-py3-none-any.whl (1.1 kB)
Collecting flask==1.1.1
  Downloading Flask-1.1.1-py2.py3-none-any.whl (94 kB)
     |████████████████████████████████| 94 kB 1.7 MB/s
Collecting click>=5.1
  Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
     |████████████████████████████████| 82 kB 849 kB/s
Collecting itsdangerous>=0.24
  Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting Jinja2>=2.10.1
  Downloading Jinja2-2.11.2-py2.py3-none-any.whl (125 kB)
     |████████████████████████████████| 125 kB 8.8 MB/s
Collecting MarkupSafe>=0.23
  Downloading MarkupSafe-1.1.1.tar.gz (19 kB)
Collecting sub-dependency-a
  Downloading sub_dependency_a-1.0.0-py3-none-any.whl (1.1 kB)
Collecting sub-dependency-b
  Downloading sub_dependency_b-1.0.0-py3-none-any.whl (1.1 kB)
INFO: pip is looking at multiple versions of sub-dependency-a to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of markupsafe to determine which version is compatible with other requirements. This could take a while.
Collecting MarkupSafe>=0.23
  Downloading MarkupSafe-1.1.0.tar.gz (18 kB)
  Downloading MarkupSafe-1.0.tar.gz (14 kB)
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-1qalpscj/markupsafe_4ed9795d2ce54eb69fc8b87f9e9e4c69/setup.py'"'"'; __file__='"'"'/tmp/pip-install-1qalpscj/markupsafe_4ed9795d2ce54eb69fc8b87f9e9e4c69/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-l25ks531
         cwd: /tmp/pip-install-1qalpscj/markupsafe_4ed9795d2ce54eb69fc8b87f9e9e4c69/
    Complete output (5 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-1qalpscj/markupsafe_4ed9795d2ce54eb69fc8b87f9e9e4c69/setup.py", line 6, in <module>
        from setuptools import setup, Extension, Feature
    ImportError: cannot import name 'Feature' from 'setuptools' (/usr/local/lib/python3.9/site-packages/setuptools/__init__.py)
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

It seems like the given combination of setuptools and markupsafe causes an exception to be raised at install-time for markupsafe. Unfortunately this also causes the resolver to exit as well.

What I expected to happen

I expected the resolver to catch/ignore this error in order to ignore uninstallable combinations of dependencies and continue attempting to solve the dependency set.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions