mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-28 15:43:47 +00:00
uv-resolver: add error checking for conflicting distributions
This PR adds some additional sanity checking on resolution graphs to ensure we can never install different versions of the same package into the same environment. I used code similar to this to provoke bugs in the resolver before the release, but it never made it into `main`. Here, we add the error checking to the creation of `ResolutionGraph`, since this is where it's most convenient to access the "full" markers of each distribution. We only report an error when `debug_assertions` are enabled to avoid rendering `uv` *completely* unusuable if a bug were to occur in a production binary. For example, maybe a conflict is detected in a marker environment that isn't actually used. While not ideal, `uv` is still usable for any other marker environment. Closes #5598
This commit is contained in:
parent
77c2496f47
commit
83f1abdf57
5 changed files with 121 additions and 39 deletions
|
@ -13,7 +13,9 @@ pub use prerelease::PrereleaseMode;
|
|||
pub use pubgrub::{PubGrubSpecifier, PubGrubSpecifierError};
|
||||
pub use python_requirement::PythonRequirement;
|
||||
pub use requires_python::{RequiresPython, RequiresPythonError, RequiresPythonRange};
|
||||
pub use resolution::{AnnotationStyle, DisplayResolutionGraph, ResolutionGraph};
|
||||
pub use resolution::{
|
||||
AnnotationStyle, ConflictingDistributionError, DisplayResolutionGraph, ResolutionGraph,
|
||||
};
|
||||
pub use resolution_mode::ResolutionMode;
|
||||
pub use resolver::{
|
||||
BuildId, DefaultResolverProvider, InMemoryIndex, MetadataResponse, PackageVersionsResult,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue