-
Notifications
You must be signed in to change notification settings - Fork 23
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
rip backtracks too far back (performance issue) #174
Comments
I don't have a good understand on the interaction between resolvo and rip, but I would strongly suggest if there are multiple packages to check to somehow guide resolvo to try packages which have a valid wheel for the current Python before trying to build sdists, it will result in better performance in a lot of situations. |
We have the option to first try all wheels before resorting to sdists for a specific package but now that I think about this it would be nice if we could also instruct resolvo to first backtrack further and only if that fails to also include sdists. 🤔 |
It's something I've suggested for Pip (pypa/pip#12035), and I now have an idea in my head how one would implement it for Pip. But I have other resolution improvements I am working on first over there, so I can't give you any real world data on how much iut helps.. Other than sdists are slow, even when they're not causing build problems. |
But its hard not to use them :) |
Well it's not that you avoid using them altogether. It's just that often when backtracking to older versions of a project and the next older version requires building an sdist instead of wheel it's likely that means the Python version you're on is too new for that old of a package on that project. It hence makes sense to try backtracking on different projects, at least until you've exhausted all other equally likely backtracking opportunities. At least that's my hypothesis. |
I think this can be done if we allow |
I have a hunch that this problem might be caused by a bug in resolvo. I think this line should be a |
That is indeed a bug! It means not all clauses for a solvable are added! |
Might be a bug, but had some discussion with @aochagavia offline, and changing it does not change the backtracking behavior. Makes sense because it only gets in the |
I think that this idea.
With this implementation still seems the way to go, I wonder what ripple effect such a change but I think we can only know by trying. |
Yeah, this is a very opinionated optimization I'm suggesting, and the specific details on the implementation are likely to make a big difference on resolving certain requirements. I do think though the PyPI packing ecosystem does require opinionated optimizations to get "good" resolution behavior. |
Environment: Linux Python 3.11
Command:
cargo r -- apache-airflow[all]==2.8.1
Error:
Expected Behavior: The issue isn't the error itself, this package is too old to install for my environment.
Rather there is some performance characteristic that feels wrong with rips resoluition here. It should not be backtracking so far on
apache-beam
, and I had a previous case where it was going this withsnowflake-connector-python
. Pip does not need to backtrack so far back and is able to solve this requirement.This might be very trickly to fix, such complicated resolution graphs are not easy to pick apart and understand why something happened.
Edit: I've updated the error with the latest output I get on main.
The text was updated successfully, but these errors were encountered: