-
Notifications
You must be signed in to change notification settings - Fork 3k
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
Vendor resolvelib 1.1.0 #13001
base: main
Are you sure you want to change the base?
Vendor resolvelib 1.1.0 #13001
Conversation
167e384
to
d7e6ee3
Compare
So I checked how resolution performed using https://github.com/notatallshaw/Pip-Resolution-Scenarios-and-Benchmarks, and I have good news and bad news. Firstly, as expected, due to correctness fixes #12768 and #12317 resolve instead of showing Some unexpected good news is this resolves #12305. Some slightly bad news is this turns #12990 from a Build Failure to a ResolutionTooDeep, but this can be fixed if #13017 lands. Some worse news is that the requirements in astral-sh/uv#1398 go from resolving (after some time), to |
d7e6ee3
to
88ceab2
Compare
a87fca9
to
d309e2c
Compare
Ready for review / merge once 24.3 is closed. |
It turns out I accidentally broke depth by changing some resolvelib behavior: pdm-project/pdm#3235 (comment) I am going to investigate further on this to see if it's causing the performance regression I see in astral-sh/uv#1398, if so I'm going to make a PR on resolvelib, or if removing depth doesn't make any difference on performance then it might be worth dropping as a preference like PDM has. |
Okay, I've tried fixing depths and removing depths and I ran the scenarios in https://github.com/notatallshaw/Pip-Resolution-Scenarios-and-Benchmarks to see what is the difference (the left hand side is fixing, the right hand side is removing):
There are some interesting takeaways:
My conclusions from this are:
|
d309e2c
to
3a157bb
Compare
This is ready for review now. I have removed depth as a preference, which unfortunately means removing the only unit tests that were unit testing the PipProvider (though it is tested greatly as part of functional tests), but I will add additional unit tests to |
I'm marking this back to draft while we discuss performance issues with resolvelib 1.1, see discussion here: sarugaku/resolvelib#180 At some point we might have to decide whether to vendor this version of resolvelib, which includes an important correctness fix, and some performance improvements, but some big performance regressions, or decide to wait for a resolvelib 1.2 which might be able to regain some of the performance back in very deep backtracking situations (e.g. boto3 / urllib3). I would very much like input from other maintainers on that, both here and over on the resolvelib performance issue. |
Fixes #12768
Fixes #12317
Fixes #12305
Fixes #12497
Fixes #12754 (comment)
Draft PR of resolvelib beta to see if it passes tests. Will mark as ready to review and ask for review/merge when final is ready.