@@ -21,7 +21,7 @@ use tokio_stream::wrappers::ReceiverStream;
2121use tracing:: { debug, info, instrument, trace, warn, Level } ;
2222
2323use uv_configuration:: { Constraints , Overrides } ;
24- use uv_distribution:: { ArchiveMetadata , DistributionDatabase } ;
24+ use uv_distribution:: DistributionDatabase ;
2525use uv_distribution_types:: {
2626 BuiltDist , CompatibleDist , DerivationChain , Dist , DistErrorKind , DistributionMetadata ,
2727 IncompatibleDist , IncompatibleSource , IncompatibleWheel , IndexCapabilities , IndexLocations ,
@@ -33,9 +33,7 @@ use uv_normalize::{ExtraName, GroupName, PackageName};
3333use uv_pep440:: { release_specifiers_to_ranges, Version , VersionSpecifiers , MIN_VERSION } ;
3434use uv_pep508:: MarkerTree ;
3535use uv_platform_tags:: Tags ;
36- use uv_pypi_types:: {
37- ConflictItem , ConflictItemRef , Conflicts , Requirement , ResolutionMetadata , VerbatimParsedUrl ,
38- } ;
36+ use uv_pypi_types:: { ConflictItem , ConflictItemRef , Conflicts , Requirement , VerbatimParsedUrl } ;
3937use uv_types:: { BuildContext , HashStrategy , InstalledPackagesProvider } ;
4038use uv_warnings:: warn_user_once;
4139
@@ -1097,11 +1095,11 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
10971095 . insert ( name. clone ( ) , reason. into ( ) ) ;
10981096 return Ok ( None ) ;
10991097 }
1098+ // TODO(charlie): Add derivation chain for URL dependencies. In practice, this isn't
1099+ // critical since we fetch URL dependencies _prior_ to invoking the resolver.
11001100 MetadataResponse :: Error ( dist, err) => {
1101- // TODO(charlie): Add derivation chain for URL dependencies. In practice, this isn't
1102- // critical since we fetch URL dependencies _prior_ to invoking the resolver.
11031101 return Err ( ResolveError :: Dist (
1104- DistErrorKind :: from_dist_and_err ( dist, & * * err) ,
1102+ DistErrorKind :: from_requested_dist ( dist, & * * err) ,
11051103 dist. clone ( ) ,
11061104 DerivationChain :: default ( ) ,
11071105 err. clone ( ) ,
@@ -1642,7 +1640,7 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
16421640 let chain = DerivationChainBuilder :: from_state ( id, version, pubgrub)
16431641 . unwrap_or_default ( ) ;
16441642 return Err ( ResolveError :: Dist (
1645- DistErrorKind :: from_dist_and_err ( dist, & * * err) ,
1643+ DistErrorKind :: from_requested_dist ( dist, & * * err) ,
16461644 dist. clone ( ) ,
16471645 chain,
16481646 err. clone ( ) ,
@@ -2068,12 +2066,9 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
20682066 }
20692067 Some ( Response :: Installed { dist, metadata } ) => {
20702068 trace ! ( "Received installed distribution metadata for: {dist}" ) ;
2071- self . index . distributions ( ) . done (
2072- dist. version_id ( ) ,
2073- Arc :: new ( MetadataResponse :: Found ( ArchiveMetadata :: from_metadata23 (
2074- metadata,
2075- ) ) ) ,
2076- ) ;
2069+ self . index
2070+ . distributions ( )
2071+ . done ( dist. version_id ( ) , Arc :: new ( metadata) ) ;
20772072 }
20782073 Some ( Response :: Dist { dist, metadata } ) => {
20792074 let dist_kind = match dist {
@@ -2134,10 +2129,8 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
21342129 }
21352130
21362131 Request :: Installed ( dist) => {
2137- // TODO(charlie): This should be return a `MetadataResponse`.
2138- let metadata = dist
2139- . metadata ( )
2140- . map_err ( |err| ResolveError :: ReadInstalled ( Box :: new ( dist. clone ( ) ) , err) ) ?;
2132+ let metadata = provider. get_installed_metadata ( & dist) . boxed_local ( ) . await ?;
2133+
21412134 Ok ( Some ( Response :: Installed { dist, metadata } ) )
21422135 }
21432136
@@ -2251,9 +2244,9 @@ impl<InstalledPackages: InstalledPackagesProvider> ResolverState<InstalledPackag
22512244 Response :: Dist { dist, metadata }
22522245 }
22532246 ResolvedDist :: Installed { dist } => {
2254- let metadata = dist . metadata ( ) . map_err ( |err| {
2255- ResolveError :: ReadInstalled ( Box :: new ( dist. clone ( ) ) , err )
2256- } ) ? ;
2247+ let metadata =
2248+ provider . get_installed_metadata ( & dist) . boxed_local ( ) . await ? ;
2249+
22572250 Response :: Installed { dist, metadata }
22582251 }
22592252 } ;
@@ -3079,7 +3072,7 @@ enum Response {
30793072 /// The returned metadata for an already-installed distribution.
30803073 Installed {
30813074 dist : InstalledDist ,
3082- metadata : ResolutionMetadata ,
3075+ metadata : MetadataResponse ,
30833076 } ,
30843077}
30853078
0 commit comments