Fix formatting

This commit is contained in:
Alessandro De Maria 2025-07-05 23:10:13 +00:00
parent a7fbe5ae3b
commit 91cb09afc4
5 changed files with 33 additions and 25 deletions

View file

@ -16,16 +16,16 @@ use uv_pep508::MarkerTree;
use uv_pypi_types::ConflictItem; use uv_pypi_types::ConflictItem;
use crate::graph_ops::{Reachable, marker_reachability}; use crate::graph_ops::{Reachable, marker_reachability};
pub use crate::lock::export::pex_lock::PexLock;
pub(crate) use crate::lock::export::pylock_toml::PylockTomlPackage; pub(crate) use crate::lock::export::pylock_toml::PylockTomlPackage;
pub use crate::lock::export::pylock_toml::{PylockToml, PylockTomlErrorKind}; pub use crate::lock::export::pylock_toml::{PylockToml, PylockTomlErrorKind};
pub use crate::lock::export::requirements_txt::RequirementsTxtExport; pub use crate::lock::export::requirements_txt::RequirementsTxtExport;
pub use crate::lock::export::pex_lock::PexLock;
use crate::universal_marker::resolve_conflicts; use crate::universal_marker::resolve_conflicts;
use crate::{Installable, Package}; use crate::{Installable, Package};
mod pex_lock;
mod pylock_toml; mod pylock_toml;
mod requirements_txt; mod requirements_txt;
mod pex_lock;
/// A flat requirement, with its associated marker. /// A flat requirement, with its associated marker.
#[derive(Debug, Clone, PartialEq, Eq)] #[derive(Debug, Clone, PartialEq, Eq)]

View file

@ -88,10 +88,10 @@ pub struct PexArtifact {
impl PexLock { impl PexLock {
/// Default PEX version for generated lock files. /// Default PEX version for generated lock files.
const DEFAULT_PEX_VERSION: &'static str = "2.44.0"; const DEFAULT_PEX_VERSION: &'static str = "2.44.0";
/// Default hash algorithm when none is specified. /// Default hash algorithm when none is specified.
const DEFAULT_HASH_ALGORITHM: &'static str = "sha256"; const DEFAULT_HASH_ALGORITHM: &'static str = "sha256";
/// Universal platform tag components: [interpreter, abi, platform]. /// Universal platform tag components: [interpreter, abi, platform].
const UNIVERSAL_PLATFORM_TAG: [&'static str; 3] = ["py", "none", "any"]; const UNIVERSAL_PLATFORM_TAG: [&'static str; 3] = ["py", "none", "any"];
@ -102,7 +102,10 @@ impl PexLock {
let hash_value = hash_str[colon_pos + 1..].to_string(); let hash_value = hash_str[colon_pos + 1..].to_string();
(algorithm, hash_value) (algorithm, hash_value)
} else { } else {
(Self::DEFAULT_HASH_ALGORITHM.to_string(), hash_str.to_string()) (
Self::DEFAULT_HASH_ALGORITHM.to_string(),
hash_str.to_string(),
)
} }
} }
@ -110,11 +113,13 @@ impl PexLock {
pub fn from_lock(lock: &Lock) -> Result<Self, LockError> { pub fn from_lock(lock: &Lock) -> Result<Self, LockError> {
let mut requirements = Vec::new(); let mut requirements = Vec::new();
let mut locked_requirements = Vec::new(); let mut locked_requirements = Vec::new();
// Collect root requirements // Collect root requirements
if let Some(root) = lock.root() { if let Some(root) = lock.root() {
for dep in &root.dependencies { for dep in &root.dependencies {
if let Some(version) = lock.packages().iter() if let Some(version) = lock
.packages()
.iter()
.find(|pkg| pkg.id.name == dep.package_id.name) .find(|pkg| pkg.id.name == dep.package_id.name)
.and_then(|pkg| pkg.id.version.as_ref()) .and_then(|pkg| pkg.id.version.as_ref())
{ {
@ -125,10 +130,9 @@ impl PexLock {
// Process all packages for locked requirements // Process all packages for locked requirements
for package in lock.packages() { for package in lock.packages() {
// Create locked requirement // Create locked requirement
let mut artifacts = Vec::new(); let mut artifacts = Vec::new();
// Add wheels // Add wheels
for wheel in &package.wheels { for wheel in &package.wheels {
let wheel_url = match &wheel.url { let wheel_url = match &wheel.url {
@ -136,13 +140,13 @@ impl PexLock {
WheelWireSource::Path { path } => format!("file://{}", path.to_string_lossy()), WheelWireSource::Path { path } => format!("file://{}", path.to_string_lossy()),
WheelWireSource::Filename { filename } => filename.to_string(), WheelWireSource::Filename { filename } => filename.to_string(),
}; };
let (algorithm, hash) = if let Some(h) = wheel.hash.as_ref() { let (algorithm, hash) = if let Some(h) = wheel.hash.as_ref() {
Self::parse_hash(&h.to_string()) Self::parse_hash(&h.to_string())
} else { } else {
continue; continue;
}; };
artifacts.push(PexArtifact { artifacts.push(PexArtifact {
url: wheel_url, url: wheel_url,
filename: wheel.filename.to_string(), filename: wheel.filename.to_string(),
@ -151,7 +155,7 @@ impl PexLock {
is_wheel: true, is_wheel: true,
}); });
} }
// Add source distributions // Add source distributions
if let Some(sdist) = &package.sdist { if let Some(sdist) = &package.sdist {
let Some(sdist_url) = sdist.url().map(|u| u.to_string()) else { let Some(sdist_url) = sdist.url().map(|u| u.to_string()) else {
@ -160,13 +164,13 @@ impl PexLock {
let Some(sdist_filename) = sdist.filename().map(|f| f.to_string()) else { let Some(sdist_filename) = sdist.filename().map(|f| f.to_string()) else {
continue; continue;
}; };
let (algorithm, hash) = if let Some(h) = sdist.hash() { let (algorithm, hash) = if let Some(h) = sdist.hash() {
Self::parse_hash(&h.to_string()) Self::parse_hash(&h.to_string())
} else { } else {
continue; continue;
}; };
artifacts.push(PexArtifact { artifacts.push(PexArtifact {
url: sdist_url, url: sdist_url,
filename: sdist_filename, filename: sdist_filename,
@ -175,7 +179,7 @@ impl PexLock {
is_wheel: false, is_wheel: false,
}); });
} }
if let Some(version) = &package.id.version { if let Some(version) = &package.id.version {
locked_requirements.push(PexLockedRequirement { locked_requirements.push(PexLockedRequirement {
project_name: package.id.name.to_string(), project_name: package.id.name.to_string(),
@ -185,12 +189,15 @@ impl PexLock {
}); });
} }
} }
let locked_resolves = vec![PexLockedResolve { let locked_resolves = vec![PexLockedResolve {
platform_tag: Self::UNIVERSAL_PLATFORM_TAG.iter().map(|s| s.to_string()).collect(), platform_tag: Self::UNIVERSAL_PLATFORM_TAG
.iter()
.map(|s| s.to_string())
.collect(),
locked_requirements, locked_requirements,
}]; }];
Ok(PexLock { Ok(PexLock {
pex_version: Self::DEFAULT_PEX_VERSION.to_string(), pex_version: Self::DEFAULT_PEX_VERSION.to_string(),
allow_builds: true, allow_builds: true,
@ -208,7 +215,7 @@ impl PexLock {
locked_resolves, locked_resolves,
}) })
} }
/// Serialize the PEX lock to JSON. /// Serialize the PEX lock to JSON.
pub fn to_json(&self) -> Result<String, serde_json::Error> { pub fn to_json(&self) -> Result<String, serde_json::Error> {
serde_json::to_string_pretty(self) serde_json::to_string_pretty(self)
@ -227,7 +234,7 @@ impl fmt::Display for PexLock {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
#[test] #[test]
fn test_pex_lock_serialization() { fn test_pex_lock_serialization() {
let pex_lock = PexLock { let pex_lock = PexLock {
@ -246,9 +253,9 @@ mod tests {
constraints: vec![], constraints: vec![],
locked_resolves: vec![], locked_resolves: vec![],
}; };
let json = pex_lock.to_json().unwrap(); let json = pex_lock.to_json().unwrap();
assert!(json.contains("\"pex_version\": \"2.44.0\"")); assert!(json.contains("\"pex_version\": \"2.44.0\""));
assert!(json.contains("\"allow_builds\": true")); assert!(json.contains("\"allow_builds\": true"));
} }
} }

View file

@ -697,7 +697,9 @@ pub(crate) async fn pip_compile(
write!(writer, "{}", export.to_toml()?)?; write!(writer, "{}", export.to_toml()?)?;
} }
ExportFormat::PexLock => { ExportFormat::PexLock => {
return Err(anyhow::anyhow!("PEX lock format is not supported in pip compile")); return Err(anyhow::anyhow!(
"PEX lock format is not supported in pip compile"
));
} }
} }

View file

@ -14,7 +14,7 @@ use uv_configuration::{
use uv_normalize::{DefaultExtras, DefaultGroups, PackageName}; use uv_normalize::{DefaultExtras, DefaultGroups, PackageName};
use uv_python::{PythonDownloads, PythonPreference, PythonRequest}; use uv_python::{PythonDownloads, PythonPreference, PythonRequest};
use uv_requirements::is_pylock_toml; use uv_requirements::is_pylock_toml;
use uv_resolver::{PexLock, PylockToml, RequirementsTxtExport, Installable}; use uv_resolver::{Installable, PexLock, PylockToml, RequirementsTxtExport};
use uv_scripts::{Pep723ItemRef, Pep723Script}; use uv_scripts::{Pep723ItemRef, Pep723Script};
use uv_settings::PythonInstallMirrors; use uv_settings::PythonInstallMirrors;
use uv_workspace::{DiscoveryOptions, MemberDiscovery, VirtualProject, Workspace, WorkspaceCache}; use uv_workspace::{DiscoveryOptions, MemberDiscovery, VirtualProject, Workspace, WorkspaceCache};

View file

@ -4433,4 +4433,3 @@ fn pep_751_https_credentials() -> Result<()> {
Ok(()) Ok(())
} }