mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 21:35: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 anyhow::Result;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use pubgrub::range::Range;
|
use pubgrub::range::Range;
|
||||||
|
use tracing::warn;
|
||||||
|
|
||||||
use pep508_rs::{MarkerEnvironment, Requirement};
|
use pep508_rs::{MarkerEnvironment, Requirement};
|
||||||
use puffin_package::dist_info_name::DistInfoName;
|
use puffin_package::dist_info_name::DistInfoName;
|
||||||
|
@ -20,9 +21,20 @@ mod version;
|
||||||
pub(crate) fn iter_requirements<'a>(
|
pub(crate) fn iter_requirements<'a>(
|
||||||
requirements: impl Iterator<Item = &'a Requirement> + 'a,
|
requirements: impl Iterator<Item = &'a Requirement> + 'a,
|
||||||
extra: Option<&'a DistInfoName>,
|
extra: Option<&'a DistInfoName>,
|
||||||
|
source: Option<&'a PackageName>,
|
||||||
env: &'a MarkerEnvironment,
|
env: &'a MarkerEnvironment,
|
||||||
) -> impl Iterator<Item = (PubGrubPackage, Range<PubGrubVersion>)> + 'a {
|
) -> impl Iterator<Item = (PubGrubPackage, Range<PubGrubVersion>)> + 'a {
|
||||||
requirements
|
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| {
|
.filter(move |requirement| {
|
||||||
// TODO(charlie): We shouldn't need a vector here.
|
// TODO(charlie): We shouldn't need a vector here.
|
||||||
let extra = if let Some(extra) = extra {
|
let extra = if let Some(extra) = extra {
|
||||||
|
|
|
@ -390,7 +390,7 @@ impl<'a, Context: BuildContext + Sync> Resolver<'a, Context> {
|
||||||
|
|
||||||
// Add the root requirements.
|
// Add the root requirements.
|
||||||
for (package, version) in
|
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.
|
// Emit a request to fetch the metadata for this package.
|
||||||
if let PubGrubPackage::Package(package_name, None) = &package {
|
if let PubGrubPackage::Package(package_name, None) = &package {
|
||||||
|
@ -443,9 +443,12 @@ impl<'a, Context: BuildContext + Sync> Resolver<'a, Context> {
|
||||||
let mut constraints =
|
let mut constraints =
|
||||||
DependencyConstraints::<PubGrubPackage, Range<PubGrubVersion>>::default();
|
DependencyConstraints::<PubGrubPackage, Range<PubGrubVersion>>::default();
|
||||||
|
|
||||||
for (package, version) in
|
for (package, version) in iter_requirements(
|
||||||
iter_requirements(metadata.requires_dist.iter(), extra.as_ref(), self.markers)
|
metadata.requires_dist.iter(),
|
||||||
{
|
extra.as_ref(),
|
||||||
|
Some(package_name),
|
||||||
|
self.markers,
|
||||||
|
) {
|
||||||
debug!("Adding transitive dependency: {package} {version}");
|
debug!("Adding transitive dependency: {package} {version}");
|
||||||
|
|
||||||
// Emit a request to fetch the metadata for this package.
|
// 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