mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 19:08:04 +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),
|
||||
|
|
|
@ -8,7 +8,7 @@ use url::Url;
|
|||
use distribution_types::Dist;
|
||||
use platform_tags::Tags;
|
||||
use puffin_client::{FlatIndex, RegistryClient};
|
||||
use puffin_distribution::{DistributionDatabase, DistributionDatabaseError};
|
||||
use puffin_distribution::DistributionDatabase;
|
||||
use puffin_normalize::PackageName;
|
||||
use puffin_traits::{BuildContext, NoBinary};
|
||||
use pypi_types::Metadata21;
|
||||
|
@ -18,7 +18,7 @@ use crate::version_map::VersionMap;
|
|||
use crate::yanks::AllowedYanks;
|
||||
|
||||
type VersionMapResponse = Result<VersionMap, puffin_client::Error>;
|
||||
type WheelMetadataResponse = Result<(Metadata21, Option<Url>), DistributionDatabaseError>;
|
||||
type WheelMetadataResponse = Result<(Metadata21, Option<Url>), puffin_distribution::Error>;
|
||||
|
||||
pub trait ResolverProvider: Send + Sync {
|
||||
/// Get the version map for a package.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue