mirror of
https://github.com/astral-sh/uv.git
synced 2025-11-01 20:31:12 +00:00
Preserve parsed url in ResolvedDist -> Requirement (#3457)
Lose less information in the `ResolvedDist` -> `Requirement` conversion.
This commit is contained in:
parent
a24124571a
commit
b263fcff9c
7 changed files with 61 additions and 29 deletions
|
|
@ -6,7 +6,7 @@ use url::Url;
|
|||
|
||||
use pep440_rs::VersionSpecifiers;
|
||||
use pep508_rs::{MarkerEnvironment, MarkerTree, RequirementOrigin, VerbatimUrl, VersionOrUrl};
|
||||
use uv_git::GitReference;
|
||||
use uv_git::{GitReference, GitSha};
|
||||
use uv_normalize::{ExtraName, PackageName};
|
||||
|
||||
use crate::{ParsedUrl, ParsedUrlError};
|
||||
|
|
@ -102,6 +102,7 @@ impl Display for Requirement {
|
|||
url: _,
|
||||
repository,
|
||||
reference,
|
||||
precise: _,
|
||||
subdirectory,
|
||||
} => {
|
||||
write!(f, " @ git+{repository}")?;
|
||||
|
|
@ -158,6 +159,8 @@ pub enum RequirementSource {
|
|||
repository: Url,
|
||||
/// Optionally, the revision, tag, or branch to use.
|
||||
reference: GitReference,
|
||||
/// The precise commit to use, if known.
|
||||
precise: Option<GitSha>,
|
||||
/// The path to the source distribution if it is not in the repository root.
|
||||
subdirectory: Option<PathBuf>,
|
||||
/// The PEP 508 style url in the format
|
||||
|
|
@ -192,6 +195,7 @@ impl RequirementSource {
|
|||
url,
|
||||
repository: git.url.repository().clone(),
|
||||
reference: git.url.reference().clone(),
|
||||
precise: git.url.precise(),
|
||||
subdirectory: git.subdirectory,
|
||||
},
|
||||
ParsedUrl::Archive(archive) => RequirementSource::Url {
|
||||
|
|
|
|||
|
|
@ -2,9 +2,7 @@ use rustc_hash::FxHashMap;
|
|||
|
||||
use uv_normalize::PackageName;
|
||||
|
||||
use crate::{
|
||||
BuiltDist, Dist, Name, ParsedGitUrl, Requirement, RequirementSource, ResolvedDist, SourceDist,
|
||||
};
|
||||
use crate::{BuiltDist, Dist, Name, Requirement, RequirementSource, ResolvedDist, SourceDist};
|
||||
|
||||
/// A set of packages pinned at specific versions.
|
||||
#[derive(Debug, Default, Clone)]
|
||||
|
|
@ -88,7 +86,7 @@ impl From<&ResolvedDist> for Requirement {
|
|||
RequirementSource::Url {
|
||||
url: wheel.url.clone(),
|
||||
location,
|
||||
subdirectory: None,
|
||||
subdirectory: wheel.subdirectory.clone(),
|
||||
}
|
||||
}
|
||||
Dist::Built(BuiltDist::Path(wheel)) => RequirementSource::Path {
|
||||
|
|
@ -108,19 +106,16 @@ impl From<&ResolvedDist> for Requirement {
|
|||
RequirementSource::Url {
|
||||
url: sdist.url.clone(),
|
||||
location,
|
||||
subdirectory: None,
|
||||
}
|
||||
}
|
||||
Dist::Source(SourceDist::Git(sdist)) => {
|
||||
let git_url = ParsedGitUrl::try_from(sdist.url.to_url())
|
||||
.expect("urls must be valid at this point");
|
||||
RequirementSource::Git {
|
||||
url: sdist.url.clone(),
|
||||
repository: git_url.url.repository().clone(),
|
||||
reference: git_url.url.reference().clone(),
|
||||
subdirectory: git_url.subdirectory,
|
||||
subdirectory: sdist.subdirectory.clone(),
|
||||
}
|
||||
}
|
||||
Dist::Source(SourceDist::Git(sdist)) => RequirementSource::Git {
|
||||
url: sdist.url.clone(),
|
||||
repository: sdist.git.repository().clone(),
|
||||
reference: sdist.git.reference().clone(),
|
||||
precise: sdist.git.precise(),
|
||||
subdirectory: sdist.subdirectory.clone(),
|
||||
},
|
||||
Dist::Source(SourceDist::Path(sdist)) => RequirementSource::Path {
|
||||
path: sdist.path.clone(),
|
||||
url: sdist.url.clone(),
|
||||
|
|
@ -129,7 +124,7 @@ impl From<&ResolvedDist> for Requirement {
|
|||
Dist::Source(SourceDist::Directory(sdist)) => RequirementSource::Path {
|
||||
path: sdist.path.clone(),
|
||||
url: sdist.url.clone(),
|
||||
editable: None,
|
||||
editable: Some(sdist.editable),
|
||||
},
|
||||
},
|
||||
ResolvedDist::Installed(dist) => RequirementSource::Registry {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue