From b6bb2ac548b8a31007d9b103d9e004e78db135dc Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Thu, 9 May 2024 09:40:51 -0400 Subject: [PATCH] Remove `Optional` from `with_origin` API (#3482) --- crates/pep508-rs/src/lib.rs | 7 +++++-- crates/pep508-rs/src/unnamed.rs | 7 +++++-- crates/requirements-txt/src/lib.rs | 6 +++++- crates/requirements-txt/src/requirement.rs | 2 +- crates/uv-requirements/src/pyproject.rs | 8 ++++---- crates/uv-requirements/src/source_tree.rs | 2 +- 6 files changed, 21 insertions(+), 11 deletions(-) diff --git a/crates/pep508-rs/src/lib.rs b/crates/pep508-rs/src/lib.rs index 1d35540d7..094f3804b 100644 --- a/crates/pep508-rs/src/lib.rs +++ b/crates/pep508-rs/src/lib.rs @@ -157,8 +157,11 @@ pub struct Requirement { impl Requirement { /// Set the source file containing the requirement. #[must_use] - pub fn with_origin(self, origin: Option) -> Self { - Self { origin, ..self } + pub fn with_origin(self, origin: RequirementOrigin) -> Self { + Self { + origin: Some(origin), + ..self + } } } diff --git a/crates/pep508-rs/src/unnamed.rs b/crates/pep508-rs/src/unnamed.rs index e723699ec..553919dff 100644 --- a/crates/pep508-rs/src/unnamed.rs +++ b/crates/pep508-rs/src/unnamed.rs @@ -55,8 +55,11 @@ impl UnnamedRequirement { /// Set the source file containing the requirement. #[must_use] - pub fn with_origin(self, origin: Option) -> Self { - Self { origin, ..self } + pub fn with_origin(self, origin: RequirementOrigin) -> Self { + Self { + origin: Some(origin), + ..self + } } } diff --git a/crates/requirements-txt/src/lib.rs b/crates/requirements-txt/src/lib.rs index c28b2a189..e99e41c3a 100644 --- a/crates/requirements-txt/src/lib.rs +++ b/crates/requirements-txt/src/lib.rs @@ -826,7 +826,11 @@ fn parse_requirement_and_hashes( let requirement = RequirementsTxtRequirement::parse(requirement, working_dir) .map(|requirement| { - requirement.with_origin(source.map(Path::to_path_buf).map(RequirementOrigin::File)) + if let Some(source) = source { + requirement.with_origin(RequirementOrigin::File(source.to_path_buf())) + } else { + requirement + } }) .map_err(|err| match err { RequirementsTxtRequirementError::ParsedUrl(err) => { diff --git a/crates/requirements-txt/src/requirement.rs b/crates/requirements-txt/src/requirement.rs index 9b8420b20..a149a9a9b 100644 --- a/crates/requirements-txt/src/requirement.rs +++ b/crates/requirements-txt/src/requirement.rs @@ -21,7 +21,7 @@ pub enum RequirementsTxtRequirement { impl RequirementsTxtRequirement { /// Set the source file containing the requirement. #[must_use] - pub fn with_origin(self, origin: Option) -> Self { + pub fn with_origin(self, origin: RequirementOrigin) -> Self { match self { Self::Named(requirement) => Self::Named(requirement.with_origin(origin)), Self::Unnamed(requirement) => Self::Unnamed(requirement.with_origin(origin)), diff --git a/crates/uv-requirements/src/pyproject.rs b/crates/uv-requirements/src/pyproject.rs index 2691aacff..a9d74f0d4 100644 --- a/crates/uv-requirements/src/pyproject.rs +++ b/crates/uv-requirements/src/pyproject.rs @@ -333,9 +333,9 @@ pub(crate) fn lower_requirements( let dependencies = dependencies .iter() .map(|dependency| { - let requirement = pep508_rs::Requirement::from_str(dependency)?.with_origin(Some( + let requirement = pep508_rs::Requirement::from_str(dependency)?.with_origin( RequirementOrigin::Project(pyproject_path.to_path_buf(), project_name.clone()), - )); + ); let name = requirement.name.clone(); lower_requirement( requirement, @@ -356,10 +356,10 @@ pub(crate) fn lower_requirements( .iter() .map(|dependency| { let requirement = pep508_rs::Requirement::from_str(dependency)?.with_origin( - Some(RequirementOrigin::Project( + RequirementOrigin::Project( pyproject_path.to_path_buf(), project_name.clone(), - )), + ), ); let name = requirement.name.clone(); lower_requirement( diff --git a/crates/uv-requirements/src/source_tree.rs b/crates/uv-requirements/src/source_tree.rs index 38a353b30..054cd1c75 100644 --- a/crates/uv-requirements/src/source_tree.rs +++ b/crates/uv-requirements/src/source_tree.rs @@ -154,7 +154,7 @@ impl<'a, Context: BuildContext> SourceTreeResolver<'a, Context> { ExtrasSpecification::None => Ok(metadata .requires_dist .into_iter() - .map(|requirement| requirement.with_origin(Some(origin.clone()))) + .map(|requirement| requirement.with_origin(origin.clone())) .collect()), ExtrasSpecification::All => Ok(metadata .requires_dist