Use consistent order for extra groups in lockfile (#4275)

## Summary

Closes #4274.
This commit is contained in:
Charlie Marsh 2024-06-12 08:46:16 -07:00 committed by GitHub
parent aef74dac2c
commit 16b4a886a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -10,7 +10,6 @@ use std::str::FromStr;
use anyhow::Result; use anyhow::Result;
use either::Either; use either::Either;
use indexmap::IndexMap;
use petgraph::visit::EdgeRef; use petgraph::visit::EdgeRef;
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use serde::{Deserialize, Deserializer}; use serde::{Deserialize, Deserializer};
@ -59,7 +58,7 @@ pub struct Lock {
impl Lock { impl Lock {
/// Initialize a [`Lock`] from a [`ResolutionGraph`]. /// Initialize a [`Lock`] from a [`ResolutionGraph`].
pub fn from_resolution_graph(graph: &ResolutionGraph) -> Result<Self, LockError> { pub fn from_resolution_graph(graph: &ResolutionGraph) -> Result<Self, LockError> {
let mut locked_dists = IndexMap::with_capacity(graph.petgraph.node_count()); let mut locked_dists = BTreeMap::new();
// Lock all base packages. // Lock all base packages.
for node_index in graph.petgraph.node_indices() { for node_index in graph.petgraph.node_indices() {
@ -531,10 +530,10 @@ pub struct Distribution {
wheels: Vec<Wheel>, wheels: Vec<Wheel>,
#[serde(default, skip_serializing_if = "Vec::is_empty")] #[serde(default, skip_serializing_if = "Vec::is_empty")]
dependencies: Vec<Dependency>, dependencies: Vec<Dependency>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")] #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
optional_dependencies: IndexMap<ExtraName, Vec<Dependency>>, optional_dependencies: BTreeMap<ExtraName, Vec<Dependency>>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")] #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
dev_dependencies: IndexMap<GroupName, Vec<Dependency>>, dev_dependencies: BTreeMap<GroupName, Vec<Dependency>>,
} }
impl Distribution { impl Distribution {
@ -547,8 +546,8 @@ impl Distribution {
sdist, sdist,
wheels, wheels,
dependencies: vec![], dependencies: vec![],
optional_dependencies: IndexMap::default(), optional_dependencies: BTreeMap::default(),
dev_dependencies: IndexMap::default(), dev_dependencies: BTreeMap::default(),
}) })
} }