You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was looking at this issue here ( pypa/pip#12305 (comment)) and realized that "causes" in the resolution step includes a lot of things which don't actually cause backtracking to occur.
The problem with having a large causes section is it creates expoential choice when backtracking, and it makes for a worse error message if printing out the causes at the end.
I think there are potentially some agressive strategies that one could implement to narrow causes, but at the very least it would make sense to go through each of the causes and see if it actually conflicts with any of the other causes.
For example in the linked example the requirement numpy from soxr=0.3.6 obviously does not conflict with any of the other causes, so resolvelib/Pip should not be trying to backtracking on it.
I write this issue in case anyone disagrees, wants to discuss a strategy, or wants to implement it themselves, I'm pretty busy next few weeks, but I can take a look at implementing it later this year.
The text was updated successfully, but these errors were encountered:
After working on this for a little bit I realized it needs to be changes from "Cause Narrowing" to "Prefer Conflicts", it's largely the same idea, the provider understands what causes conflict with each other and resolvelib doesn't and the causes that conflict should be preffered.
Once I have an actual PR ready I will make an issue/PR explaining how it works.
I was looking at this issue here ( pypa/pip#12305 (comment)) and realized that "causes" in the resolution step includes a lot of things which don't actually cause backtracking to occur.
The problem with having a large causes section is it creates expoential choice when backtracking, and it makes for a worse error message if printing out the causes at the end.
I think there are potentially some agressive strategies that one could implement to narrow causes, but at the very least it would make sense to go through each of the causes and see if it actually conflicts with any of the other causes.
For example in the linked example the requirement numpy from soxr=0.3.6 obviously does not conflict with any of the other causes, so resolvelib/Pip should not be trying to backtracking on it.
I write this issue in case anyone disagrees, wants to discuss a strategy, or wants to implement it themselves, I'm pretty busy next few weeks, but I can take a look at implementing it later this year.
The text was updated successfully, but these errors were encountered: