Add convenience methods to Manifest to iterate over requirements (#2701)

## Summary

These are repeated a bunch. It's nice to DRY them up and ensure the
ordering is consistent.
This commit is contained in:
Charlie Marsh 2024-03-27 21:03:44 -04:00 committed by GitHub
parent b6ab919945
commit 4cc91cc6bb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 168 additions and 92 deletions

View file

@ -61,21 +61,7 @@ impl PreReleaseStrategy {
PreReleaseMode::IfNecessary => Self::IfNecessary,
PreReleaseMode::Explicit => Self::Explicit(
manifest
.requirements
.iter()
.chain(manifest.constraints.iter())
.chain(manifest.overrides.iter())
.filter(|requirement| requirement.evaluate_markers(markers, &[]))
.chain(manifest.lookaheads.iter().flat_map(|lookahead| {
lookahead.requirements().iter().filter(|requirement| {
requirement.evaluate_markers(markers, lookahead.extras())
})
}))
.chain(manifest.editables.iter().flat_map(|(editable, metadata)| {
metadata.requires_dist.iter().filter(|requirement| {
requirement.evaluate_markers(markers, &editable.extras)
})
}))
.requirements(markers)
.filter(|requirement| {
let Some(version_or_url) = &requirement.version_or_url else {
return false;
@ -95,21 +81,7 @@ impl PreReleaseStrategy {
),
PreReleaseMode::IfNecessaryOrExplicit => Self::IfNecessaryOrExplicit(
manifest
.requirements
.iter()
.chain(manifest.constraints.iter())
.chain(manifest.overrides.iter())
.filter(|requirement| requirement.evaluate_markers(markers, &[]))
.chain(manifest.lookaheads.iter().flat_map(|lookahead| {
lookahead.requirements().iter().filter(|requirement| {
requirement.evaluate_markers(markers, lookahead.extras())
})
}))
.chain(manifest.editables.iter().flat_map(|(editable, metadata)| {
metadata.requires_dist.iter().filter(|requirement| {
requirement.evaluate_markers(markers, &editable.extras)
})
}))
.requirements(markers)
.filter(|requirement| {
let Some(version_or_url) = &requirement.version_or_url else {
return false;