mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 13:25:00 +00:00
Ignore self requirements (#233)
gps3 0.33.3 depends on itself, which we can ignore. I've also added the home assistant requirements since it occurred when testing with this.
This commit is contained in:
parent
0be20a41a4
commit
d47dc64974
3 changed files with 3050 additions and 4 deletions
|
@ -1,6 +1,7 @@
|
|||
use anyhow::Result;
|
||||
use itertools::Itertools;
|
||||
use pubgrub::range::Range;
|
||||
use tracing::warn;
|
||||
|
||||
use pep508_rs::{MarkerEnvironment, Requirement};
|
||||
use puffin_package::dist_info_name::DistInfoName;
|
||||
|
@ -20,9 +21,20 @@ mod version;
|
|||
pub(crate) fn iter_requirements<'a>(
|
||||
requirements: impl Iterator<Item = &'a Requirement> + 'a,
|
||||
extra: Option<&'a DistInfoName>,
|
||||
source: Option<&'a PackageName>,
|
||||
env: &'a MarkerEnvironment,
|
||||
) -> impl Iterator<Item = (PubGrubPackage, Range<PubGrubVersion>)> + 'a {
|
||||
requirements
|
||||
.filter(move |requirement| {
|
||||
let normalized = PackageName::normalize(&requirement.name);
|
||||
if source.is_some_and(|source| source == &normalized) {
|
||||
// TODO: Warn only once here
|
||||
warn!("{} depends on itself", normalized);
|
||||
false
|
||||
} else {
|
||||
true
|
||||
}
|
||||
})
|
||||
.filter(move |requirement| {
|
||||
// TODO(charlie): We shouldn't need a vector here.
|
||||
let extra = if let Some(extra) = extra {
|
||||
|
|
|
@ -390,7 +390,7 @@ impl<'a, Context: BuildContext + Sync> Resolver<'a, Context> {
|
|||
|
||||
// Add the root requirements.
|
||||
for (package, version) in
|
||||
iter_requirements(self.requirements.iter(), None, self.markers)
|
||||
iter_requirements(self.requirements.iter(), None, None, self.markers)
|
||||
{
|
||||
// Emit a request to fetch the metadata for this package.
|
||||
if let PubGrubPackage::Package(package_name, None) = &package {
|
||||
|
@ -443,9 +443,12 @@ impl<'a, Context: BuildContext + Sync> Resolver<'a, Context> {
|
|||
let mut constraints =
|
||||
DependencyConstraints::<PubGrubPackage, Range<PubGrubVersion>>::default();
|
||||
|
||||
for (package, version) in
|
||||
iter_requirements(metadata.requires_dist.iter(), extra.as_ref(), self.markers)
|
||||
{
|
||||
for (package, version) in iter_requirements(
|
||||
metadata.requires_dist.iter(),
|
||||
extra.as_ref(),
|
||||
Some(package_name),
|
||||
self.markers,
|
||||
) {
|
||||
debug!("Adding transitive dependency: {package} {version}");
|
||||
|
||||
// Emit a request to fetch the metadata for this package.
|
||||
|
|
3031
scripts/benchmarks/requirements/home-assistant.in
Normal file
3031
scripts/benchmarks/requirements/home-assistant.in
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue