mirror of
				https://github.com/astral-sh/uv.git
				synced 2025-10-30 11:37:24 +00:00 
			
		
		
		
	Use a consolidated error for distribution failures (#1104)
## Summary Use a single error type in `puffin_distribution`, rather than two confusingly similar types between `DistributionDatabase` and the source distribution module. Also removes the `#[from]` for IO errors and replaces with explicit wrapping, which is verbose but removes a bunch of incorrect error messages.
This commit is contained in:
		
							parent
							
								
									8ef819e07e
								
							
						
					
					
						commit
						f36c167982
					
				
					 9 changed files with 238 additions and 221 deletions
				
			
		|  | @ -5,14 +5,12 @@ use std::fmt::Formatter; | |||
| use indexmap::IndexMap; | ||||
| use pubgrub::range::Range; | ||||
| use pubgrub::report::{DefaultStringReporter, DerivationTree, Reporter}; | ||||
| use thiserror::Error; | ||||
| use url::Url; | ||||
| 
 | ||||
| use distribution_types::{BuiltDist, PathBuiltDist, PathSourceDist, SourceDist}; | ||||
| use once_map::OnceMap; | ||||
| use pep440_rs::Version; | ||||
| use pep508_rs::Requirement; | ||||
| use puffin_distribution::DistributionDatabaseError; | ||||
| use puffin_normalize::PackageName; | ||||
| 
 | ||||
| use crate::candidate_selector::CandidateSelector; | ||||
|  | @ -20,7 +18,7 @@ use crate::pubgrub::{PubGrubPackage, PubGrubPython, PubGrubReportFormatter}; | |||
| use crate::python_requirement::PythonRequirement; | ||||
| use crate::version_map::VersionMap; | ||||
| 
 | ||||
| #[derive(Error, Debug)] | ||||
| #[derive(Debug, thiserror::Error)] | ||||
| pub enum ResolveError { | ||||
|     #[error("Failed to find a version of {0} that satisfies the requirement")] | ||||
|     NotFound(Requirement), | ||||
|  | @ -62,16 +60,16 @@ pub enum ResolveError { | |||
|     DistributionType(#[from] distribution_types::Error), | ||||
| 
 | ||||
|     #[error("Failed to download: {0}")] | ||||
|     Fetch(Box<BuiltDist>, #[source] DistributionDatabaseError), | ||||
|     Fetch(Box<BuiltDist>, #[source] puffin_distribution::Error), | ||||
| 
 | ||||
|     #[error("Failed to download and build: {0}")] | ||||
|     FetchAndBuild(Box<SourceDist>, #[source] DistributionDatabaseError), | ||||
|     FetchAndBuild(Box<SourceDist>, #[source] puffin_distribution::Error), | ||||
| 
 | ||||
|     #[error("Failed to read: {0}")] | ||||
|     Read(Box<PathBuiltDist>, #[source] DistributionDatabaseError), | ||||
|     Read(Box<PathBuiltDist>, #[source] puffin_distribution::Error), | ||||
| 
 | ||||
|     #[error("Failed to build: {0}")] | ||||
|     Build(Box<PathSourceDist>, #[source] DistributionDatabaseError), | ||||
|     Build(Box<PathSourceDist>, #[source] puffin_distribution::Error), | ||||
| 
 | ||||
|     #[error(transparent)] | ||||
|     NoSolution(#[from] NoSolutionError), | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Charlie Marsh
						Charlie Marsh