Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions crates/uv-distribution/src/metadata/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ pub struct Metadata {
pub requires_dist: Vec<uv_pypi_types::Requirement>,
pub requires_python: Option<VersionSpecifiers>,
pub provides_extras: Vec<ExtraName>,
pub dev_dependencies: BTreeMap<GroupName, Vec<uv_pypi_types::Requirement>>,
pub dependency_groups: BTreeMap<GroupName, Vec<uv_pypi_types::Requirement>>,
}

impl Metadata {
Expand All @@ -83,7 +83,7 @@ impl Metadata {
.collect(),
requires_python: metadata.requires_python,
provides_extras: metadata.provides_extras,
dev_dependencies: BTreeMap::default(),
dependency_groups: BTreeMap::default(),
}
}

Expand All @@ -101,7 +101,7 @@ impl Metadata {
name,
requires_dist,
provides_extras,
dev_dependencies,
dependency_groups,
} = RequiresDist::from_project_maybe_workspace(
uv_pypi_types::RequiresDist {
name: metadata.name,
Expand All @@ -122,7 +122,7 @@ impl Metadata {
requires_dist,
requires_python: metadata.requires_python,
provides_extras,
dev_dependencies,
dependency_groups,
})
}
}
Expand Down
10 changes: 5 additions & 5 deletions crates/uv-distribution/src/metadata/requires_dist.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ pub struct RequiresDist {
pub name: PackageName,
pub requires_dist: Vec<uv_pypi_types::Requirement>,
pub provides_extras: Vec<ExtraName>,
pub dev_dependencies: BTreeMap<GroupName, Vec<uv_pypi_types::Requirement>>,
pub dependency_groups: BTreeMap<GroupName, Vec<uv_pypi_types::Requirement>>,
}

impl RequiresDist {
Expand All @@ -34,7 +34,7 @@ impl RequiresDist {
.map(uv_pypi_types::Requirement::from)
.collect(),
provides_extras: metadata.provides_extras,
dev_dependencies: BTreeMap::default(),
dependency_groups: BTreeMap::default(),
}
}

Expand Down Expand Up @@ -101,7 +101,7 @@ impl RequiresDist {
SourceStrategy::Disabled => &empty,
};

let dev_dependencies = {
let dependency_groups = {
// First, collect `tool.uv.dev_dependencies`
let dev_dependencies = project_workspace
.current_project()
Expand Down Expand Up @@ -218,7 +218,7 @@ impl RequiresDist {
Ok(Self {
name: metadata.name,
requires_dist,
dev_dependencies,
dependency_groups,
provides_extras: metadata.provides_extras,
})
}
Expand All @@ -230,7 +230,7 @@ impl From<Metadata> for RequiresDist {
name: metadata.name,
requires_dist: metadata.requires_dist,
provides_extras: metadata.provides_extras,
dev_dependencies: metadata.dev_dependencies,
dependency_groups: metadata.dependency_groups,
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-requirements/src/lookahead.rs
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ impl<'a, Context: BuildContext> LookaheadResolver<'a, Context> {
.into_iter()
.chain(
metadata
.dev_dependencies
.dependency_groups
.into_iter()
.filter_map(|(group, dependencies)| {
if self.dev.contains(&group) {
Expand Down
84 changes: 42 additions & 42 deletions crates/uv-resolver/src/lock/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ impl Lock {
continue;
};
let marker = edge.weight().clone();
package.add_dev_dependency(
package.add_group_dependency(
&requires_python,
group.clone(),
dependency_dist,
Expand Down Expand Up @@ -344,7 +344,7 @@ impl Lock {
}

// Perform the same validation for dev dependencies.
for (group, dependencies) in &mut package.dev_dependencies {
for (group, dependencies) in &mut package.dependency_groups {
dependencies.sort();
for windows in dependencies.windows(2) {
let (dep1, dep2) = (&windows[0], &windows[1]);
Expand Down Expand Up @@ -390,7 +390,7 @@ impl Lock {
.dependencies
.iter_mut()
.chain(dist.optional_dependencies.values_mut().flatten())
.chain(dist.dev_dependencies.values_mut().flatten())
.chain(dist.dependency_groups.values_mut().flatten())
{
dep.extra.retain(|extra| {
extras_by_id
Expand Down Expand Up @@ -428,7 +428,7 @@ impl Lock {
}

// Perform the same validation for dev dependencies.
for dependencies in dist.dev_dependencies.values() {
for dependencies in dist.dependency_groups.values() {
for dep in dependencies {
if !by_id.contains_key(&dep.package_id) {
return Err(LockErrorKind::UnrecognizedDependency {
Expand Down Expand Up @@ -615,7 +615,7 @@ impl Lock {

// Add any dev dependencies.
for group in dev.iter() {
for dep in root.dev_dependencies.get(group).into_iter().flatten() {
for dep in root.dependency_groups.get(group).into_iter().flatten() {
if dep.complexified_marker.evaluate(marker_env, &[]) {
let dep_dist = self.find_by_id(&dep.package_id);
if seen.insert((&dep.package_id, None)) {
Expand Down Expand Up @@ -1229,10 +1229,10 @@ impl Lock {
}
}

// Validate the `dev-dependencies` metadata.
// Validate the `dependency-groups` metadata.
{
let expected: BTreeMap<GroupName, BTreeSet<Requirement>> = metadata
.dev_dependencies
.dependency_groups
.into_iter()
.map(|(group, requirements)| {
Ok::<_, LockError>((
Expand All @@ -1246,7 +1246,7 @@ impl Lock {
.collect::<Result<_, _>>()?;
let actual: BTreeMap<GroupName, BTreeSet<Requirement>> = package
.metadata
.requires_dev
.dependency_groups
.iter()
.map(|(group, requirements)| {
Ok::<_, LockError>((
Expand All @@ -1261,7 +1261,7 @@ impl Lock {
.collect::<Result<_, _>>()?;

if expected != actual {
return Ok(SatisfiesResult::MismatchedDevDependencies(
return Ok(SatisfiesResult::MismatchedDependencyGroups(
&package.id.name,
&package.id.version,
expected,
Expand Down Expand Up @@ -1289,7 +1289,7 @@ impl Lock {
}
}

for dependencies in package.dev_dependencies.values() {
for dependencies in package.dependency_groups.values() {
for dep in dependencies {
if seen.insert(&dep.package_id) {
let dep_dist = self.find_by_id(&dep.package_id);
Expand Down Expand Up @@ -1353,8 +1353,8 @@ pub enum SatisfiesResult<'lock> {
BTreeSet<Requirement>,
BTreeSet<Requirement>,
),
/// A package in the lockfile contains different `dev-dependencies` metadata than expected.
MismatchedDevDependencies(
/// A package in the lockfile contains different `dependency-group` metadata than expected.
MismatchedDependencyGroups(
&'lock PackageName,
&'lock Version,
BTreeMap<GroupName, BTreeSet<Requirement>>,
Expand Down Expand Up @@ -1524,8 +1524,8 @@ pub struct Package {
dependencies: Vec<Dependency>,
/// The resolved optional dependencies of the package.
optional_dependencies: BTreeMap<ExtraName, Vec<Dependency>>,
/// The resolved development dependencies of the package.
dev_dependencies: BTreeMap<GroupName, Vec<Dependency>>,
/// The resolved PEP 735 dependency groups of the package.
dependency_groups: BTreeMap<GroupName, Vec<Dependency>>,
/// The exact requirements from the package metadata.
metadata: PackageMetadata,
}
Expand Down Expand Up @@ -1553,14 +1553,14 @@ impl Package {
.collect::<Result<_, _>>()
.map_err(LockErrorKind::RequirementRelativePath)?
};
let requires_dev = if id.source.is_immutable() {
let dependency_groups = if id.source.is_immutable() {
BTreeMap::default()
} else {
annotated_dist
.metadata
.as_ref()
.expect("metadata is present")
.dev_dependencies
.dependency_groups
.iter()
.map(|(group, requirements)| {
let requirements = requirements
Expand All @@ -1580,10 +1580,10 @@ impl Package {
fork_markers,
dependencies: vec![],
optional_dependencies: BTreeMap::default(),
dev_dependencies: BTreeMap::default(),
dependency_groups: BTreeMap::default(),
metadata: PackageMetadata {
requires_dist,
requires_dev,
dependency_groups,
},
})
}
Expand Down Expand Up @@ -1659,18 +1659,18 @@ impl Package {
Ok(())
}

/// Add the [`AnnotatedDist`] as a development dependency of the [`Package`].
fn add_dev_dependency(
/// Add the [`AnnotatedDist`] to a dependency group of the [`Package`].
fn add_group_dependency(
&mut self,
requires_python: &RequiresPython,
dev: GroupName,
group: GroupName,
annotated_dist: &AnnotatedDist,
marker: MarkerTree,
root: &Path,
) -> Result<(), LockError> {
let dep = Dependency::from_annotated_dist(requires_python, annotated_dist, marker, root)?;
let dev_deps = self.dev_dependencies.entry(dev).or_default();
for existing_dep in &mut *dev_deps {
let deps = self.dependency_groups.entry(group).or_default();
for existing_dep in &mut *deps {
if existing_dep.package_id == dep.package_id
// See note in add_dependency for why we use
// simplified markers here.
Expand All @@ -1681,7 +1681,7 @@ impl Package {
}
}

dev_deps.push(dep);
deps.push(dep);
Ok(())
}

Expand Down Expand Up @@ -2031,19 +2031,19 @@ impl Package {
}
}

if !self.dev_dependencies.is_empty() {
let mut dev_dependencies = Table::new();
for (extra, deps) in &self.dev_dependencies {
if !self.dependency_groups.is_empty() {
let mut dependency_groups = Table::new();
for (extra, deps) in &self.dependency_groups {
let deps = each_element_on_its_line_array(deps.iter().map(|dep| {
dep.to_toml(requires_python, dist_count_by_name)
.into_inline_table()
}));
if !deps.is_empty() {
dev_dependencies.insert(extra.as_ref(), value(deps));
dependency_groups.insert(extra.as_ref(), value(deps));
}
}
if !dev_dependencies.is_empty() {
table.insert("dev-dependencies", Item::Table(dev_dependencies));
if !dependency_groups.is_empty() {
table.insert("dependency-groups", Item::Table(dependency_groups));
}
}

Expand Down Expand Up @@ -2086,9 +2086,9 @@ impl Package {
metadata_table.insert("requires-dist", value(requires_dist));
}

if !self.metadata.requires_dev.is_empty() {
let mut requires_dev = Table::new();
for (extra, deps) in &self.metadata.requires_dev {
if !self.metadata.dependency_groups.is_empty() {
let mut dependency_groups = Table::new();
for (extra, deps) in &self.metadata.dependency_groups {
let deps = deps
.iter()
.map(|requirement| {
Expand All @@ -2104,11 +2104,11 @@ impl Package {
deps => each_element_on_its_line_array(deps.iter()),
};
if !deps.is_empty() {
requires_dev.insert(extra.as_ref(), value(deps));
dependency_groups.insert(extra.as_ref(), value(deps));
}
}
if !requires_dev.is_empty() {
metadata_table.insert("requires-dev", Item::Table(requires_dev));
if !dependency_groups.is_empty() {
metadata_table.insert("dependency-groups", Item::Table(dependency_groups));
}
}

Expand Down Expand Up @@ -2218,17 +2218,17 @@ struct PackageWire {
dependencies: Vec<DependencyWire>,
#[serde(default)]
optional_dependencies: BTreeMap<ExtraName, Vec<DependencyWire>>,
#[serde(default)]
dev_dependencies: BTreeMap<GroupName, Vec<DependencyWire>>,
#[serde(default, alias = "dev-dependencies")]
dependency_groups: BTreeMap<GroupName, Vec<DependencyWire>>,
}

#[derive(Clone, Default, Debug, Eq, PartialEq, serde::Deserialize)]
#[serde(rename_all = "kebab-case")]
struct PackageMetadata {
#[serde(default)]
requires_dist: BTreeSet<Requirement>,
#[serde(default)]
requires_dev: BTreeMap<GroupName, BTreeSet<Requirement>>,
#[serde(default, alias = "requires-dev")]
dependency_groups: BTreeMap<GroupName, BTreeSet<Requirement>>,
}

impl PackageWire {
Expand Down Expand Up @@ -2258,8 +2258,8 @@ impl PackageWire {
.into_iter()
.map(|(extra, deps)| Ok((extra, unwire_deps(deps)?)))
.collect::<Result<_, LockError>>()?,
dev_dependencies: self
.dev_dependencies
dependency_groups: self
.dependency_groups
.into_iter()
.map(|(group, deps)| Ok((group, unwire_deps(deps)?)))
.collect::<Result<_, LockError>>()?,
Expand Down
2 changes: 1 addition & 1 deletion crates/uv-resolver/src/lock/requirements_txt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ impl<'lock> RequirementsTxtExport<'lock> {

// Add any dev dependencies.
for group in dev.iter() {
for dep in root.dev_dependencies.get(group).into_iter().flatten() {
for dep in root.dependency_groups.get(group).into_iter().flatten() {
let dep_dist = lock.find_by_id(&dep.package_id);

// Add the dependency to the graph.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
source: crates/uv-resolver/src/lock/mod.rs
source: crates/uv-resolver/src/lock/tests.rs
expression: result
---
Ok(
Expand Down Expand Up @@ -78,10 +78,10 @@ Ok(
fork_markers: [],
dependencies: [],
optional_dependencies: {},
dev_dependencies: {},
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
requires_dev: {},
dependency_groups: {},
},
},
],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
source: crates/uv-resolver/src/lock/mod.rs
source: crates/uv-resolver/src/lock/tests.rs
expression: result
---
Ok(
Expand Down Expand Up @@ -85,10 +85,10 @@ Ok(
fork_markers: [],
dependencies: [],
optional_dependencies: {},
dev_dependencies: {},
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
requires_dev: {},
dependency_groups: {},
},
},
],
Expand Down
Loading
Loading