Skip to content

Relaxing / Ignoring constraints during dependency resolution #8076

Open
@stonebig

Description

@stonebig

What's the problem this feature will solve?
Puting together some packages that have by default incompatible constraints.

Indeed:

  • constraints are often meant by the package maintainer as:
    . "accepting complains on this known/focus set of package",
    . you're on your own support if you deviate, but not necessarly bad.
  • packages rarely focus on the same versions of complementary packages.
    ==> The new resolver may create more problems than solutions, when trying to build an environment with a large set of package.

Describe the solution you'd like
Be able to ignore voluntary some constraints

Wish:

  • we can put some "relax" rule to over-rule too strict packages (for our need), because we know what we want:
    pip install Spyder --relax relaxrules.r , with relax file below meaning:
    . if you want PyQt5, it must be 5.14.x
    . if you want Jedi, it must be >=0.16
PyQt5~=5.14
Jedi>=0.16

Alternative Solutions
Today:

  • I have to manually recompile from source "too strict" packages, to workaround this,
  • or I would have to build one virtualenv per package,
  • or I would only be able to use a specific Python distribution, with much older packages and Python version.

Additional context
Maintaining WinPython

** Current pip check **

  • datasette 0.39 has requirement Jinja2~=2.10.3, but you have jinja2 2.11.2.
  • astroid 2.3.3 has requirement wrapt==1.11.*, but you have wrapt 1.12.1.

** Current workaround **

  • Spyder manually recompiled to accept :
    . PyQt5-5.14.2 (as pip doesn't have a "long term support" of PyQt5-5.12, so the fresher version is safer)

other wishes:

  • a basic GUI on Pip (tkinter or web) would still be nice, to have a better view of all the coming version conflicts.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions