mirror of https://github.com/astral-sh/uv
DEMO: Changing Python constraints changes deriviation tree ordering
This commit is contained in:
parent
459c2abc81
commit
6e38f50eea
|
|
@ -652,22 +652,6 @@ impl<'a, Provider: ResolverProvider> Resolver<'a, Provider> {
|
||||||
self.visit_package(package, priorities, request_sink)?;
|
self.visit_package(package, priorities, request_sink)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If a package has a `requires_python` field, add a constraint on the target
|
|
||||||
// Python version.
|
|
||||||
if let Some(requires_python) = metadata.requires_python.as_ref() {
|
|
||||||
let version = requires_python
|
|
||||||
.iter()
|
|
||||||
.map(PubGrubSpecifier::try_from)
|
|
||||||
.fold_ok(Range::full(), |range, specifier| {
|
|
||||||
range.intersection(&specifier.into())
|
|
||||||
})?;
|
|
||||||
constraints.insert(
|
|
||||||
PubGrubPackage::Python(PubGrubPython::Installed),
|
|
||||||
version.clone(),
|
|
||||||
);
|
|
||||||
constraints.insert(PubGrubPackage::Python(PubGrubPython::Target), version);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If a package has an extra, insert a constraint on the base package.
|
// If a package has an extra, insert a constraint on the base package.
|
||||||
if extra.is_some() {
|
if extra.is_some() {
|
||||||
constraints.insert(
|
constraints.insert(
|
||||||
|
|
|
||||||
|
|
@ -690,14 +690,14 @@ fn dependency_excludes_non_contiguous_range_of_compatible_versions() -> Result<(
|
||||||
crow>2.0.0
|
crow>2.0.0
|
||||||
and crow==1.0.0 depends on albatross<2.0.0, we can conclude that crow<2.0.0 depends on albatross<2.0.0. (1)
|
and crow==1.0.0 depends on albatross<2.0.0, we can conclude that crow<2.0.0 depends on albatross<2.0.0. (1)
|
||||||
|
|
||||||
Because albatross==1.0.0 depends on bluebird==1.0.0 and there are no versions of albatross that satisfy any of:
|
Because there are no versions of albatross that satisfy any of:
|
||||||
albatross<1.0.0
|
albatross<1.0.0
|
||||||
albatross>1.0.0,<2.0.0
|
albatross>1.0.0,<2.0.0
|
||||||
we can conclude that albatross<2.0.0 depends on bluebird==1.0.0.
|
and albatross==1.0.0 depends on bluebird==1.0.0, we can conclude that albatross<2.0.0 depends on bluebird==1.0.0.
|
||||||
And because we know from (1) that crow<2.0.0 depends on albatross<2.0.0, we can conclude that crow<2.0.0 depends on bluebird==1.0.0.
|
And because we know from (1) that crow<2.0.0 depends on albatross<2.0.0, we can conclude that crow<2.0.0 depends on bluebird==1.0.0.
|
||||||
And because crow==2.0.0 depends on albatross>=3.0.0 we can conclude that all versions of crow, bluebird!=1.0.0, albatross<3.0.0 are incompatible. (2)
|
And because crow==2.0.0 depends on albatross>=3.0.0 we can conclude that all versions of crow, bluebird!=1.0.0, albatross<3.0.0 are incompatible. (2)
|
||||||
|
|
||||||
Because albatross==3.0.0 depends on bluebird==3.0.0 and only albatross<=3.0.0 is available, we can conclude that albatross>=3.0.0 depends on bluebird==3.0.0.
|
Because only albatross<=3.0.0 is available and albatross==3.0.0 depends on bluebird==3.0.0, we can conclude that albatross>=3.0.0 depends on bluebird==3.0.0.
|
||||||
And because we know from (2) that all versions of crow, bluebird!=1.0.0, albatross<3.0.0 are incompatible, we can conclude that all versions of crow depend on one of:
|
And because we know from (2) that all versions of crow, bluebird!=1.0.0, albatross<3.0.0 are incompatible, we can conclude that all versions of crow depend on one of:
|
||||||
bluebird<=1.0.0
|
bluebird<=1.0.0
|
||||||
bluebird>=3.0.0
|
bluebird>=3.0.0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue