mirror of
				https://github.com/astral-sh/uv.git
				synced 2025-11-03 21:23:54 +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