Repository navigation
Add explicit ordering to diagnostic hints - #21577
Merged
zanieb merged 7 commits intoSep 11, 2026
Merged
Conversation
zanieb
force-pushed
the
zb/hint-priority-precursor-20260910
branch
2 times, most recently
from
September 10, 2026 13:20
c82a286 to
a70281c
Compare
zanieb
commented
Sep 10, 2026
zanieb
commented
Sep 10, 2026
zanieb
commented
Sep 10, 2026
zanieb
commented
Sep 10, 2026
zanieb
commented
Sep 10, 2026
zanieb
commented
Sep 10, 2026
zanieb
force-pushed
the
zb/hint-priority-precursor-20260910
branch
from
September 10, 2026 15:05
7a856a9 to
34c8b2d
Compare
zanieb
marked this pull request as ready for review
September 10, 2026 15:06
zanieb
force-pushed
the
zb/hint-priority-precursor-20260910
branch
from
September 10, 2026 21:51
34c8b2d to
0d76651
Compare
zanieb
force-pushed
the
zb/hint-priority-precursor-20260910
branch
from
September 11, 2026 18:12
0d76651 to
a352590
Compare
zanieb
added a commit
that referenced
this pull request
Sep 11, 2026
Rename `uv_errors::Hint` to `Hinted`. The trait describes an error's ability to provide a collection of contextual hints, while `Hint` is a clearer name for an individual hint value. Update the implementations, trait bounds, and callers without changing diagnostic output or error classification. Prior work: - #18090 introduced the hint-producing trait and `Hints` collection. - #20155 made hints explicit in error-chain rendering. This prepares the concrete `Hint` type in #21577.
zanieb
added a commit
that referenced
this pull request
Sep 11, 2026
Route the remaining package-operation errors through `UvError` and the standard error-chain renderer, then remove uv's direct `miette` dependency and global hook. Diagnostics use the same source-chain formatting and hint collection as other commands, with cause-specific hints before general command advice. No-solution headings omit trailing punctuation, retain their command context, and are not repeated inside build-dependency errors. Final errors remain visible with `-q` and are suppressed with `-qq`. Classify operation failures by their underlying cause instead of by which renderer handles them. Each error type owns its classification, and type-erased build errors forward it. Expected package, resolution, build, integrity, and lock-validation failures use code 1, while recognized transport, cache, filesystem, and internal failures use code 2. This deliberately changes some previously inconsistent statuses without attempting to normalize every standalone command or opaque archive-error path. Command-line argument errors remain code 2. Third-party dependencies may still use `miette` internally. Prior work: - #14546 removed `miette` from `uv venv`. - #17535 added first-party line wrapping. - #18090 established the `Hint` and `Hints` APIs. - #20155 made hints explicit in error-chain rendering. - #20156 preserved indentation in multiline causes. - #20159 migrated `uv build` errors to standard rendering. - #20160 migrated tool requirement errors to standard rendering. - #20188 introduced the explicit `UvError` model. - #20163 routed final errors through `Printer` for `-q` and `-qq`. - #20217 enabled cause-chain rendering for user errors. - #21563 added verification of index-provided metadata hashes. - #21279 reused URL-provided hashes during resolution. - #21584 renamed the hint-producing trait to `Hinted`. - #21577 added explicit hint ordering. Follow-up work: - #21566 collects hints for batched `uv tool upgrade` failures and fixes their quiet-mode output. - #21568 routes Python upgrade request errors and version-file hints through `UvError`. - #21587 separates operation-specific diagnostic context from exit-status classification. - #21599 renders error and warning causes with compact tree connectors.
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hint ordering currently depends on error-chain traversal and manually appending caller-provided advice. Add
HintOrdering::{First, Any, Last}to individualHintvalues andHintscollections so error types can specify where their guidance belongs. Borrowed iteration visits the three groups without sorting or allocating; owned iteration sorts the existing vector. Both retain insertion order within each group. Error and warning renderers borrow the collection. Unannotated hints useAny, and merging duplicate messages retains the earliest ordering. The operation reporter's caller-provided hints and tool script usage advice useLast.Prior work:
HintandHintsAPIs.Hinted.This provides the ordering primitive for #17110 without requiring the command-layer collector to special-case error types.