Skip to content

Consider creating "exclusion list" to fall-back to the old resolver automatically #9231

@potiuk

Description

@potiuk

What did you want to do?

I would love that PIP maintainers consider quickly adding an exclusion list to the released PIP version, to fall-back to old resolver for some of the projects for which it is known that the new resolver causes problems, or when particular features are used that the new resolver is not ready for yet.

Such a list could be rather small. From the comment here It seems that for vast majority of the project have no problems with the new resolver, but there are some - for example Apache Airflow, but likely quite a few other projects in the category of platforms/tools that have problems with the installation during the new resolver that seem to be difficult to solve quickly. Some of the issues are described in those: #9187, #9223, #9215, #9214, #9203, #9186 . Using any of the problematic projects as a direct installation target or (if possible and straightforward) would automatically trigger the legacy mode for PIP (which could be overwritten for testing fixes with another flag). This could be accompanied by a warning message that explains why the new resolver is used and that there is an on-going effort to fix it.

Also, there are some features that are broken in the new resolver: #9229, #9219, #9217, #9216, #9190, #9188 , #9182, #9180. and using any of the features (maybe impossible for all those, but maybe straightforward for some, like using proxy) could automatically trigger legacy resolver, again including a warning message stating that that problem will get fixed in the upcoming version but for now, PIP is falling back to the old resolver).

Additional information

The current state of resolver for some projects is seriously problematic (in short - new resolver does not work for them), but there seems to be a rather small list of such projects and features that are broken, and it could be rather easy to keep such a list updated. It could for example be kept remotely at the PIP GitHub site as part of the PIP repository, and it could be (for a time being) remotely refreshed by PIP from time to time to be able to keep adding new projects to the list, if/when new problems are reported. PIP - by its nature requires the network to function, so refreshing such a list from a well-known, PIP-maintainer controlled location should be possible and could be attempted (with quick falling back to the latest cached version of the list) every time a pip install/update etc. command is run.

There was a proposal raised by my in this comment to withdraw the new resolver until the problem is solved, but after the comment here it is rather clear that despite the severity of the problems, they seem to be isolated to a rather small group of projects and features. And there is a big value in as many projects trying the new PIP resolver by default as possible. On the other hand, some of the projects are suffering because their users are unaware of the PIP problems, and no matter how hard those projects try (for example here apache/airflow#12838) their users will get a perception, that those projects are broken, rather than PIP.

Having such an exclusion list might be the best of both worlds. On one hand, it might give the projects so needed stability of installation, on the other hand, this might give the PIP team a necessary testing ground for the new resolver - taking into account that it works in the majority of cases and there are only a handful of exceptions.

It would also give the PIP team the necessary breathing space to fix all such issues properly and without having maintainers of such projects expressing their frustration and feelings - this would give an easy to maintain workaround for anyone whose problems are severe enough that makes it impossible to workaround in a different way.

Another good side of that - having such list of "problematic" problems, could give the PIP team to build relationships with those "heavy users" of PIP that could be helpful in testing any future features of PIP. This would be a great opportunity to turn the "problem" into an "opportunity" of building better cooperation between some open-souirce projects.

Please kindly consider my proposal.

Also - if you would consider that, I am happy to help with the implementation. I do not know PIP internals. but maybe it ain't so difficult. Happy to spend quite some time on it if you want to work on more important stuff.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions