-
Notifications
You must be signed in to change notification settings - Fork 863
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
Show full dependency chain when uv pip compile
encounters an error running setup.py
#8962
Comments
Yeah I think something like this makes sense. |
One problem here is that if this happens during installation (rather than resolution), we may have already discarded the resolution itself (which would explain why it's included). |
Actually, at the point we need it do we do still have it. |
I'm working on this, I think it will be a great feature, but it's non-trivial. |
## Summary Shows similar diagnostics for failures that happen at install time, rather than resolve time. This will ultimately feed into #8962 since we'll now have consolidated handling for these kinds of failures.
## Summary In #9078, resolution fails because we fail to build `jsmin`. However... if you look at what's actually happening, `jsmin` fails to build during _prefetching_. And we never actually attempt to access its metadata later on. This PR modifies the metadata result handling such that we don't raise these errors until the resolver actually asks for the metadata, so #9078 now succeeds. I actually had to make this change anyway in pursuing #8962, so I've decided to carve it out here. Closes #9078.
## Summary I need this for the derivation chain work (#8962), but it just seems generally useful. You can't always get a version from a `Dist` (it could be URL-based!), but when we create a `ResolvedDist`, we _do_ know the version (and not just the URL). This PR preserves it.
Feature idea: multi-dimensional |
## Summary This PR should not contain any user-visible changes, but the goal is to refactor the `Resolution` type to retain a dependency graph. We want to be able to explain _why_ a given package was excluded on error (see: #8962), which in turn requires that at install time, we can go back and figure out the dependency chain. At present, `Resolution` is just a map from package name to distribution; this PR remodels it as a graph in which each node is a package, and the edges contain markers plus extras or dependency groups.
Thanks!
…On Thu, Nov 14, 2024 at 3:48 PM Charlie Marsh ***@***.***> wrote:
Closed #8962 <#8962> as completed
via fe477c3
<fe477c3>
.
—
Reply to this email directly, view it on GitHub
<#8962 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAAGBDABG2BQ6H4J47YIBD2AUEDDAVCNFSM6AAAAABROR6YZGVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJVGMYDIMRUGQ3TMMI>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
--
All that is necessary for evil to succeed is for good people to do nothing.
|
@alex -- Do you know how to reproduce this failure? I'd be interested to test the behavior on it. |
|
Ok I think there's some bug that's preventing it from showing up there in that more complex scenario, so won't be in this release -- sorry! |
Fixed!
|
When using
--resolution=lowest
(orlowest-direct
), it's sadly not uncommon to hit errors runningsetup.py
from very old versions of things.Unfortunately,
uv pip compile
does not include the full chain of how a dependency was depended on, which can make it difficult to debug. For example:Here, neither
wsgiref
noratomicwrites
is depended on directly, so I'm not sure which package I need to attach a minimal bound to.The text was updated successfully, but these errors were encountered: