From 16aac834eee8bc31a11a1f7f91b4427f6e47cc0a Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 31 Oct 2023 10:10:23 -0700 Subject: [PATCH] Move PyPI-oriented types out of `puffin-client` crate (#255) Just an internal change to avoid a dependency on `puffin-client` for those crates that need access to PyPI-metadata types. --- crates/puffin-client/src/client.rs | 3 +-- crates/puffin-client/src/error.rs | 4 ++-- crates/puffin-client/src/lib.rs | 2 -- crates/puffin-installer/src/distribution.rs | 2 +- crates/puffin-package/src/lib.rs | 2 +- crates/puffin-package/src/{ => pypi_types}/metadata.rs | 2 +- crates/puffin-package/src/pypi_types/mod.rs | 5 +++++ .../src/pypi_types/simple_json.rs} | 0 crates/puffin-resolver/src/distribution.rs | 3 ++- crates/puffin-resolver/src/resolution.rs | 2 +- crates/puffin-resolver/src/resolver.rs | 4 ++-- crates/puffin-resolver/src/source_distribution.rs | 4 ++-- crates/puffin-resolver/src/wheel_finder.rs | 4 ++-- 13 files changed, 20 insertions(+), 17 deletions(-) rename crates/puffin-package/src/{ => pypi_types}/metadata.rs (99%) create mode 100644 crates/puffin-package/src/pypi_types/mod.rs rename crates/{puffin-client/src/types.rs => puffin-package/src/pypi_types/simple_json.rs} (100%) diff --git a/crates/puffin-client/src/client.rs b/crates/puffin-client/src/client.rs index 04a3d1443..9c220dd5d 100644 --- a/crates/puffin-client/src/client.rs +++ b/crates/puffin-client/src/client.rs @@ -11,11 +11,10 @@ use reqwest_retry::RetryTransientMiddleware; use tracing::trace; use url::Url; -use puffin_package::metadata::Metadata21; use puffin_package::package_name::PackageName; +use puffin_package::pypi_types::{File, Metadata21, SimpleJson}; use crate::error::Error; -use crate::types::{File, SimpleJson}; /// A builder for an [`RegistryClient`]. #[derive(Debug, Clone)] diff --git a/crates/puffin-client/src/error.rs b/crates/puffin-client/src/error.rs index 65f2946ed..84e438c15 100644 --- a/crates/puffin-client/src/error.rs +++ b/crates/puffin-client/src/error.rs @@ -1,7 +1,7 @@ use thiserror::Error; use url::Url; -use puffin_package::metadata; +use puffin_package::pypi_types; #[derive(Debug, Error)] pub enum Error { @@ -18,7 +18,7 @@ pub enum Error { /// The metadata file could not be parsed. #[error(transparent)] - MetadataParseError(#[from] metadata::Error), + MetadataParseError(#[from] pypi_types::Error), /// The metadata file was not found in the registry. #[error("File `{0}` was not found in the registry.")] diff --git a/crates/puffin-client/src/lib.rs b/crates/puffin-client/src/lib.rs index 6bb03ae13..3262b0e3e 100644 --- a/crates/puffin-client/src/lib.rs +++ b/crates/puffin-client/src/lib.rs @@ -1,7 +1,5 @@ pub use client::{RegistryClient, RegistryClientBuilder}; pub use error::Error; -pub use types::{File, SimpleJson}; mod client; mod error; -mod types; diff --git a/crates/puffin-installer/src/distribution.rs b/crates/puffin-installer/src/distribution.rs index 05fe43da5..5c8d54f0f 100644 --- a/crates/puffin-installer/src/distribution.rs +++ b/crates/puffin-installer/src/distribution.rs @@ -5,9 +5,9 @@ use anyhow::{anyhow, Result}; use distribution_filename::WheelFilename; use pep440_rs::Version; -use puffin_client::File; use puffin_package::dist_info_name::DistInfoName; use puffin_package::package_name::PackageName; +use puffin_package::pypi_types::File; /// A built distribution (wheel), which either exists remotely or locally. #[derive(Debug, Clone)] diff --git a/crates/puffin-package/src/lib.rs b/crates/puffin-package/src/lib.rs index 7f57fe8ce..58fef082e 100644 --- a/crates/puffin-package/src/lib.rs +++ b/crates/puffin-package/src/lib.rs @@ -1,5 +1,5 @@ pub mod dist_info_name; pub mod extra_name; -pub mod metadata; pub mod package_name; +pub mod pypi_types; pub mod requirements_txt; diff --git a/crates/puffin-package/src/metadata.rs b/crates/puffin-package/src/pypi_types/metadata.rs similarity index 99% rename from crates/puffin-package/src/metadata.rs rename to crates/puffin-package/src/pypi_types/metadata.rs index 62b10652b..f697f4e44 100644 --- a/crates/puffin-package/src/metadata.rs +++ b/crates/puffin-package/src/pypi_types/metadata.rs @@ -302,7 +302,7 @@ mod tests { use pep508_rs::Requirement; - use crate::metadata::LenientRequirement; + use super::LenientRequirement; #[test] fn missing_comma() { diff --git a/crates/puffin-package/src/pypi_types/mod.rs b/crates/puffin-package/src/pypi_types/mod.rs new file mode 100644 index 000000000..7eebebae1 --- /dev/null +++ b/crates/puffin-package/src/pypi_types/mod.rs @@ -0,0 +1,5 @@ +pub use metadata::{Error, Metadata21}; +pub use simple_json::{File, SimpleJson}; + +mod metadata; +mod simple_json; diff --git a/crates/puffin-client/src/types.rs b/crates/puffin-package/src/pypi_types/simple_json.rs similarity index 100% rename from crates/puffin-client/src/types.rs rename to crates/puffin-package/src/pypi_types/simple_json.rs diff --git a/crates/puffin-resolver/src/distribution.rs b/crates/puffin-resolver/src/distribution.rs index d037ff37c..ccad6e18a 100644 --- a/crates/puffin-resolver/src/distribution.rs +++ b/crates/puffin-resolver/src/distribution.rs @@ -1,6 +1,7 @@ -use puffin_client::File; use std::ops::Deref; +use puffin_package::pypi_types::File; + /// A distribution can either be a wheel or a source distribution. #[derive(Debug, Clone)] pub(crate) struct WheelFile(File); diff --git a/crates/puffin-resolver/src/resolution.rs b/crates/puffin-resolver/src/resolution.rs index e591e4063..2420fc304 100644 --- a/crates/puffin-resolver/src/resolution.rs +++ b/crates/puffin-resolver/src/resolution.rs @@ -9,8 +9,8 @@ use pubgrub::type_aliases::SelectedDependencies; use pep440_rs::{Version, VersionSpecifier, VersionSpecifiers}; use pep508_rs::{Requirement, VersionOrUrl}; -use puffin_client::File; use puffin_package::package_name::PackageName; +use puffin_package::pypi_types::File; use crate::pubgrub::{PubGrubPackage, PubGrubPriority, PubGrubVersion}; diff --git a/crates/puffin-resolver/src/resolver.rs b/crates/puffin-resolver/src/resolver.rs index fae32b847..3df2ad6a2 100644 --- a/crates/puffin-resolver/src/resolver.rs +++ b/crates/puffin-resolver/src/resolver.rs @@ -20,10 +20,10 @@ use waitmap::WaitMap; use distribution_filename::{SourceDistributionFilename, WheelFilename}; use pep508_rs::{MarkerEnvironment, Requirement}; use platform_tags::Tags; -use puffin_client::{File, RegistryClient, SimpleJson}; +use puffin_client::RegistryClient; use puffin_package::dist_info_name::DistInfoName; -use puffin_package::metadata::Metadata21; use puffin_package::package_name::PackageName; +use puffin_package::pypi_types::{File, Metadata21, SimpleJson}; use puffin_traits::BuildContext; use crate::candidate_selector::CandidateSelector; diff --git a/crates/puffin-resolver/src/source_distribution.rs b/crates/puffin-resolver/src/source_distribution.rs index 56fcd4f56..dd6cc9782 100644 --- a/crates/puffin-resolver/src/source_distribution.rs +++ b/crates/puffin-resolver/src/source_distribution.rs @@ -13,9 +13,9 @@ use zip::ZipArchive; use distribution_filename::WheelFilename; use pep440_rs::Version; use platform_tags::Tags; -use puffin_client::{File, RegistryClient}; -use puffin_package::metadata::Metadata21; +use puffin_client::RegistryClient; use puffin_package::package_name::PackageName; +use puffin_package::pypi_types::{File, Metadata21}; use puffin_traits::BuildContext; const BUILT_WHEELS_CACHE: &str = "built-wheels-v0"; diff --git a/crates/puffin-resolver/src/wheel_finder.rs b/crates/puffin-resolver/src/wheel_finder.rs index e06ee0092..4f20da435 100644 --- a/crates/puffin-resolver/src/wheel_finder.rs +++ b/crates/puffin-resolver/src/wheel_finder.rs @@ -14,9 +14,9 @@ use tracing::debug; use distribution_filename::WheelFilename; use pep508_rs::Requirement; use platform_tags::Tags; -use puffin_client::{File, RegistryClient, SimpleJson}; -use puffin_package::metadata::Metadata21; +use puffin_client::RegistryClient; use puffin_package::package_name::PackageName; +use puffin_package::pypi_types::{File, Metadata21, SimpleJson}; use crate::error::ResolveError; use crate::resolution::{PinnedPackage, Resolution};