Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a command line option to select the resolver implementation #7603

Closed
pfmoore opened this issue Jan 15, 2020 · 3 comments · Fixed by #7845
Closed

Add a command line option to select the resolver implementation #7603

pfmoore opened this issue Jan 15, 2020 · 3 comments · Fixed by #7845
Labels
auto-locked Outdated issues that have been locked by automation C: dependency resolution About choosing which dependencies to install type: feature request Request for a new feature

Comments

@pfmoore
Copy link
Member

pfmoore commented Jan 15, 2020

What's the problem this feature will solve?
When the new resolver is implemented, we will need to have a way to allow users to test it. One option is to add a new option to pip to allow selection of which resolver to use.

Describe the solution you'd like
Add a pip option --resolver=[legacy|new]. Name of the option and the values can be discussed. Choosing "legacy" will select the current resolver, choosing "new" will select the new resolver.

Notes:

  • The default should initially be "legacy", so that the new resolver is opt-in. After a suitable period of testing, the default should change to "new".
  • The option should be temporary, being removed along with the legacy resolver code once the new resolver is considered "final".
  • Adding the option in advance of the new resolver code has been discussed - it's not yet clear what benefit this would have, but it is certainly possible.

Alternative Solutions
A boolean option like --enable-new-resolver could be used instead. The transition process might be more complex with such an option.

The new resolver could be made available simply as a separate feature branch of pip. This would make it significantly harder for users to try the new code, though.

Additional context
See Zulip for some additional discussion.

@triage-new-issues triage-new-issues bot added the S: needs triage Issues/PRs that need to be triaged label Jan 15, 2020
@pfmoore pfmoore mentioned this issue Jan 15, 2020
@uranusjr
Copy link
Member

uranusjr commented Jan 15, 2020

A few things to figure out:

  • What commands should this be added to? install is the obvious one. wheel? What else?
  • When should this be added? (In other words, when should we consider the new resolver user-testable quality?)
  • Should there be only one, or multiple new resolvers? I know most of us want only one, but I kind of still think there should be a chance to compare base implementations in a wider scale. At least a direct comparison between ResolveLib/Zazo and Mixology would be a good thing IMO.

@pradyunsg
Copy link
Member

re commands: install, download and wheel, because they create a resolver instance + care about dependencies.

(I'll respond to the rest later)

@pradyunsg pradyunsg added C: dependency resolution About choosing which dependencies to install type: feature request Request for a new feature labels Mar 7, 2020
@triage-new-issues triage-new-issues bot removed the S: needs triage Issues/PRs that need to be triaged label Mar 7, 2020
@pradyunsg
Copy link
Member

One other idea is to add a more general flag (ALA #5727) which could be useful for other things like transitioning how our --no-* flags look in configuration files, for consistency.

That way, we have a longer lasting "setup", which enables some discoverability and allows us to build upon the communication / user-expectation-setting work we do as part of this rollout in the future.

@lock lock bot added the auto-locked Outdated issues that have been locked by automation label Apr 15, 2020
@lock lock bot locked as resolved and limited conversation to collaborators Apr 15, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
auto-locked Outdated issues that have been locked by automation C: dependency resolution About choosing which dependencies to install type: feature request Request for a new feature
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants