diff --git a/crates/puffin-resolver/src/pubgrub/dependencies.rs b/crates/puffin-resolver/src/pubgrub/dependencies.rs index 25b2e7f32..2538021df 100644 --- a/crates/puffin-resolver/src/pubgrub/dependencies.rs +++ b/crates/puffin-resolver/src/pubgrub/dependencies.rs @@ -12,7 +12,7 @@ use crate::pubgrub::{PubGrubPackage, PubGrubVersion}; use crate::ResolveError; #[derive(Debug)] -pub struct PubGrubDependencies(FxHashMap>); +pub struct PubGrubDependencies(Vec<(PubGrubPackage, Range)>); impl PubGrubDependencies { /// Generate a set of `PubGrub` dependencies from a set of requirements. @@ -23,7 +23,7 @@ impl PubGrubDependencies { source: Option<&'a PackageName>, env: &'a MarkerEnvironment, ) -> Result { - let mut dependencies = FxHashMap::>::default(); + let mut dependencies = Vec::new(); // Iterate over all declared requirements. for requirement in requirements { @@ -56,20 +56,22 @@ impl PubGrubDependencies { ) { let (package, version) = result?; - if let Some(entry) = dependencies.get_key_value(&package) { - // Merge the versions. - let version = merge_versions(entry.1, &version); + dependencies.push((package.clone(), version.clone())); - // Merge the package. - if let Some(package) = merge_package(entry.0, &package)? { - dependencies.remove(&package); - dependencies.insert(package, version); - } else { - dependencies.insert(package, version); - } - } else { - dependencies.insert(package.clone(), version.clone()); - } + // if let Some(entry) = dependencies.get_key_value(&package) { + // // Merge the versions. + // let version = merge_versions(entry.1, &version); + + // // Merge the package. + // if let Some(package) = merge_package(entry.0, &package)? { + // dependencies.remove(&package); + // dependencies.insert(package, version); + // } else { + // dependencies.insert(package, version); + // } + // } else { + // dependencies.insert(package.clone(), version.clone()); + // } } } @@ -104,40 +106,38 @@ impl PubGrubDependencies { ) { let (package, version) = result?; - if let Some(entry) = dependencies.get_key_value(&package) { - // Merge the versions. - let version = merge_versions(entry.1, &version); + dependencies.push((package.clone(), version.clone())); - // Merge the package. - if let Some(package) = merge_package(entry.0, &package)? { - dependencies.insert(package, version); - } else { - dependencies.insert(package, version); - } - } + // if let Some(entry) = dependencies.get_key_value(&package) { + // // Merge the versions. + // let version = merge_versions(entry.1, &version); + + // // Merge the package. + // if let Some(package) = merge_package(entry.0, &package)? { + // dependencies.insert(package, version); + // } else { + // dependencies.insert(package, version); + // } + // } } } Ok(Self(dependencies)) } - /// Insert a [`PubGrubPackage`] and [`PubGrubVersion`] range into the set of dependencies. - pub(crate) fn insert( - &mut self, - package: PubGrubPackage, - version: Range, - ) -> Option> { - self.0.insert(package, version) + // Insert a [`PubGrubPackage`] and [`PubGrubVersion`] range into the set of dependencies. + pub(crate) fn insert(&mut self, package: PubGrubPackage, version: Range) { + self.0.push((package, version)) } /// Iterate over the dependencies. - pub(crate) fn iter(&self) -> impl Iterator)> { + pub(crate) fn iter(&self) -> impl Iterator)> { self.0.iter() } } /// Convert a [`PubGrubDependencies`] to a [`DependencyConstraints`]. -impl From for FxHashMap> { +impl From for Vec<(PubGrubPackage, Range)> { fn from(dependencies: PubGrubDependencies) -> Self { dependencies.0 } diff --git a/crates/puffin-resolver/src/resolver.rs b/crates/puffin-resolver/src/resolver.rs index 89fbb6026..90fe5e172 100644 --- a/crates/puffin-resolver/src/resolver.rs +++ b/crates/puffin-resolver/src/resolver.rs @@ -981,5 +981,5 @@ enum Dependencies { /// Package dependencies are unavailable. Unknown, /// Container for all available package versions. - Known(FxHashMap>), + Known(Vec<(PubGrubPackage, Range)>), }