mirror of https://github.com/astral-sh/uv
Use `Cow` for source call (#3377)
This commit is contained in:
parent
37635fda56
commit
6d73db2b1e
|
|
@ -1,3 +1,4 @@
|
||||||
|
use std::borrow::Cow;
|
||||||
use std::fmt::{Display, Formatter};
|
use std::fmt::{Display, Formatter};
|
||||||
|
|
||||||
use pep508_rs::{MarkerEnvironment, UnnamedRequirement};
|
use pep508_rs::{MarkerEnvironment, UnnamedRequirement};
|
||||||
|
|
@ -58,16 +59,16 @@ impl UnresolvedRequirement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Return the version specifier or URL for the requirement.
|
/// Return the version specifier or URL for the requirement.
|
||||||
pub fn source(&self) -> Result<RequirementSource, ParsedUrlError> {
|
pub fn source(&self) -> Result<Cow<'_, RequirementSource>, ParsedUrlError> {
|
||||||
// TODO(konsti): This is a bad place to raise errors, we should have parsed the url earlier.
|
// TODO(konsti): This is a bad place to raise errors, we should have parsed the url earlier.
|
||||||
match self {
|
match self {
|
||||||
Self::Named(requirement) => Ok(requirement.source.clone()),
|
Self::Named(requirement) => Ok(Cow::Borrowed(&requirement.source)),
|
||||||
Self::Unnamed(requirement) => {
|
Self::Unnamed(requirement) => {
|
||||||
let parsed_url = ParsedUrl::try_from(requirement.url.to_url())?;
|
let parsed_url = ParsedUrl::try_from(requirement.url.to_url())?;
|
||||||
Ok(RequirementSource::from_parsed_url(
|
Ok(Cow::Owned(RequirementSource::from_parsed_url(
|
||||||
parsed_url,
|
parsed_url,
|
||||||
requirement.url.clone(),
|
requirement.url.clone(),
|
||||||
))
|
)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -365,7 +365,7 @@ impl<'a> SitePackages<'a> {
|
||||||
[distribution] => {
|
[distribution] => {
|
||||||
match RequirementSatisfaction::check(
|
match RequirementSatisfaction::check(
|
||||||
distribution,
|
distribution,
|
||||||
&entry.requirement.source()?,
|
entry.requirement.source()?.as_ref(),
|
||||||
)? {
|
)? {
|
||||||
RequirementSatisfaction::Mismatch | RequirementSatisfaction::OutOfDate => {
|
RequirementSatisfaction::Mismatch | RequirementSatisfaction::OutOfDate => {
|
||||||
return Ok(SatisfiesResult::Unsatisfied(entry.requirement.to_string()))
|
return Ok(SatisfiesResult::Unsatisfied(entry.requirement.to_string()))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue