diff --git a/Cargo.lock b/Cargo.lock index b0d2e4e9f..32b791843 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6248,6 +6248,7 @@ dependencies = [ "url", "uv-configuration", "uv-distribution-types", + "uv-normalize", "uv-pep440", "uv-pep508", "uv-pypi-types", @@ -6352,6 +6353,7 @@ dependencies = [ "uv-fs", "uv-install-wheel", "uv-installer", + "uv-normalize", "uv-pep440", "uv-pep508", "uv-pypi-types", @@ -6411,7 +6413,6 @@ dependencies = [ "uv-normalize", "uv-once-map", "uv-pep440", - "uv-pep508", "uv-pypi-types", "uv-python", "uv-redacted", diff --git a/crates/uv-build-frontend/src/error.rs b/crates/uv-build-frontend/src/error.rs index 580690600..299ce3e00 100644 --- a/crates/uv-build-frontend/src/error.rs +++ b/crates/uv-build-frontend/src/error.rs @@ -13,8 +13,8 @@ use tracing::error; use uv_configuration::BuildOutput; use uv_distribution_types::IsBuildBackendError; use uv_fs::Simplified; +use uv_normalize::PackageName; use uv_pep440::Version; -use uv_pep508::PackageName; use uv_types::AnyErrorBuild; /// e.g. `pygraphviz/graphviz_wrap.c:3020:10: fatal error: graphviz/cgraph.h: No such file or directory` @@ -468,8 +468,8 @@ mod test { use std::process::ExitStatus; use std::str::FromStr; use uv_configuration::BuildOutput; + use uv_normalize::PackageName; use uv_pep440::Version; - use uv_pep508::PackageName; #[test] fn missing_header() { diff --git a/crates/uv-build-frontend/src/lib.rs b/crates/uv-build-frontend/src/lib.rs index 430de4f65..1535b3f6c 100644 --- a/crates/uv-build-frontend/src/lib.rs +++ b/crates/uv-build-frontend/src/lib.rs @@ -39,8 +39,8 @@ use uv_distribution_types::{ }; use uv_fs::LockedFile; use uv_fs::{PythonExt, Simplified}; +use uv_normalize::PackageName; use uv_pep440::Version; -use uv_pep508::PackageName; use uv_pypi_types::VerbatimParsedUrl; use uv_python::{Interpreter, PythonEnvironment}; use uv_static::EnvVars; diff --git a/crates/uv-cli/src/version.rs b/crates/uv-cli/src/version.rs index 296f9f54c..8ec96e4df 100644 --- a/crates/uv-cli/src/version.rs +++ b/crates/uv-cli/src/version.rs @@ -3,7 +3,9 @@ use std::fmt; use serde::Serialize; -use uv_pep508::{PackageName, uv_pep440::Version}; + +use uv_normalize::PackageName; +use uv_pep508::uv_pep440::Version; /// Information about the git repository where uv was built from. #[derive(Serialize)] diff --git a/crates/uv-configuration/src/build_options.rs b/crates/uv-configuration/src/build_options.rs index 8b493cbf0..ba40a520f 100644 --- a/crates/uv-configuration/src/build_options.rs +++ b/crates/uv-configuration/src/build_options.rs @@ -1,6 +1,6 @@ use std::fmt::{Display, Formatter}; -use uv_pep508::PackageName; +use uv_normalize::PackageName; use crate::{PackageNameSpecifier, PackageNameSpecifiers}; diff --git a/crates/uv-configuration/src/install_options.rs b/crates/uv-configuration/src/install_options.rs index a42250bf9..7b69562e9 100644 --- a/crates/uv-configuration/src/install_options.rs +++ b/crates/uv-configuration/src/install_options.rs @@ -2,7 +2,7 @@ use std::collections::BTreeSet; use tracing::debug; -use uv_pep508::PackageName; +use uv_normalize::PackageName; #[derive(Debug, Clone, Default)] pub struct InstallOptions { diff --git a/crates/uv-configuration/src/name_specifiers.rs b/crates/uv-configuration/src/name_specifiers.rs index 3efeee1f2..fca7aa5ef 100644 --- a/crates/uv-configuration/src/name_specifiers.rs +++ b/crates/uv-configuration/src/name_specifiers.rs @@ -2,7 +2,7 @@ use std::borrow::Cow; use std::str::FromStr; -use uv_pep508::PackageName; +use uv_normalize::PackageName; /// A specifier used for (e.g.) pip's `--no-binary` flag. /// diff --git a/crates/uv-configuration/src/package_options.rs b/crates/uv-configuration/src/package_options.rs index 4cc2218f5..139e4f666 100644 --- a/crates/uv-configuration/src/package_options.rs +++ b/crates/uv-configuration/src/package_options.rs @@ -6,7 +6,7 @@ use rustc_hash::FxHashMap; use uv_cache::Refresh; use uv_cache_info::Timestamp; use uv_distribution_types::Requirement; -use uv_pep508::PackageName; +use uv_normalize::PackageName; /// Whether to reinstall packages. #[derive(Debug, Default, Clone, serde::Serialize, serde::Deserialize)] diff --git a/crates/uv-distribution-types/src/resolved.rs b/crates/uv-distribution-types/src/resolved.rs index 3c758b254..456d4dfe3 100644 --- a/crates/uv-distribution-types/src/resolved.rs +++ b/crates/uv-distribution-types/src/resolved.rs @@ -2,8 +2,8 @@ use std::fmt::{Display, Formatter}; use std::path::Path; use std::sync::Arc; +use uv_normalize::PackageName; use uv_pep440::Version; -use uv_pep508::PackageName; use uv_pypi_types::Yanked; use crate::{ diff --git a/crates/uv-distribution/src/reporter.rs b/crates/uv-distribution/src/reporter.rs index befc21a18..daa48439d 100644 --- a/crates/uv-distribution/src/reporter.rs +++ b/crates/uv-distribution/src/reporter.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use uv_distribution_types::BuildableSource; -use uv_pep508::PackageName; +use uv_normalize::PackageName; use uv_redacted::DisplaySafeUrl; pub trait Reporter: Send + Sync { diff --git a/crates/uv-installer/src/preparer.rs b/crates/uv-installer/src/preparer.rs index 7181fa454..112d179a0 100644 --- a/crates/uv-installer/src/preparer.rs +++ b/crates/uv-installer/src/preparer.rs @@ -11,7 +11,7 @@ use uv_distribution_types::{ BuildableSource, CachedDist, DerivationChain, Dist, DistErrorKind, Hashed, Identifier, Name, RemoteSource, Resolution, }; -use uv_pep508::PackageName; +use uv_normalize::PackageName; use uv_platform_tags::Tags; use uv_redacted::DisplaySafeUrl; use uv_types::{BuildContext, HashStrategy, InFlight}; diff --git a/crates/uv-pep508/src/lib.rs b/crates/uv-pep508/src/lib.rs index b7a890a64..85da84938 100644 --- a/crates/uv-pep508/src/lib.rs +++ b/crates/uv-pep508/src/lib.rs @@ -26,28 +26,29 @@ use std::str::FromStr; use serde::{Deserialize, Deserializer, Serialize, Serializer, de}; use thiserror::Error; use url::Url; -use uv_cache_key::{CacheKey, CacheKeyHasher}; -use cursor::Cursor; -pub use marker::{ +use uv_cache_key::{CacheKey, CacheKeyHasher}; +use uv_normalize::{ExtraName, PackageName}; + +use crate::cursor::Cursor; +pub use crate::marker::{ CanonicalMarkerValueExtra, CanonicalMarkerValueString, CanonicalMarkerValueVersion, ContainsMarkerTree, ExtraMarkerTree, ExtraOperator, InMarkerTree, MarkerEnvironment, MarkerEnvironmentBuilder, MarkerExpression, MarkerOperator, MarkerTree, MarkerTreeContents, MarkerTreeKind, MarkerValue, MarkerValueExtra, MarkerValueList, MarkerValueString, MarkerValueVersion, MarkerWarningKind, StringMarkerTree, StringVersion, VersionMarkerTree, }; -pub use origin::RequirementOrigin; +pub use crate::origin::RequirementOrigin; #[cfg(feature = "non-pep508-extensions")] -pub use unnamed::{UnnamedRequirement, UnnamedRequirementUrl}; -pub use uv_normalize::{ExtraName, InvalidNameError, PackageName}; +pub use crate::unnamed::{UnnamedRequirement, UnnamedRequirementUrl}; +pub use crate::verbatim_url::{ + Scheme, VerbatimUrl, VerbatimUrlError, expand_env_vars, looks_like_git_repository, + split_scheme, strip_host, +}; /// Version and version specifiers used in requirements (reexport). // https://github.com/konstin/pep508_rs/issues/19 pub use uv_pep440; use uv_pep440::{VersionSpecifier, VersionSpecifiers}; -pub use verbatim_url::{ - Scheme, VerbatimUrl, VerbatimUrlError, expand_env_vars, looks_like_git_repository, - split_scheme, strip_host, -}; mod cursor; pub mod marker; diff --git a/crates/uv-resolver/src/exclusions.rs b/crates/uv-resolver/src/exclusions.rs index 5f4efb4f9..bcae90940 100644 --- a/crates/uv-resolver/src/exclusions.rs +++ b/crates/uv-resolver/src/exclusions.rs @@ -1,5 +1,5 @@ use uv_configuration::{Reinstall, Upgrade}; -use uv_pep508::PackageName; +use uv_normalize::PackageName; /// Tracks locally installed packages that should not be selected during resolution. #[derive(Debug, Default, Clone)] diff --git a/crates/uv-resolver/src/resolver/fork_map.rs b/crates/uv-resolver/src/resolver/fork_map.rs index 90ac51779..15f29856d 100644 --- a/crates/uv-resolver/src/resolver/fork_map.rs +++ b/crates/uv-resolver/src/resolver/fork_map.rs @@ -1,7 +1,8 @@ use rustc_hash::FxHashMap; use uv_distribution_types::Requirement; -use uv_pep508::{MarkerTree, PackageName}; +use uv_normalize::PackageName; +use uv_pep508::MarkerTree; use crate::ResolverEnvironment; diff --git a/crates/uv-scripts/Cargo.toml b/crates/uv-scripts/Cargo.toml index 4cff3f5bc..d226ae953 100644 --- a/crates/uv-scripts/Cargo.toml +++ b/crates/uv-scripts/Cargo.toml @@ -13,6 +13,7 @@ workspace = true [dependencies] uv-configuration = { workspace = true } uv-distribution-types = { workspace = true } +uv-normalize = { workspace = true } uv-pep440 = { workspace = true } uv-pep508 = { workspace = true } uv-pypi-types = { workspace = true } diff --git a/crates/uv-scripts/src/lib.rs b/crates/uv-scripts/src/lib.rs index 0fac60d08..5d88b85b8 100644 --- a/crates/uv-scripts/src/lib.rs +++ b/crates/uv-scripts/src/lib.rs @@ -10,8 +10,8 @@ use thiserror::Error; use url::Url; use uv_configuration::SourceStrategy; +use uv_normalize::PackageName; use uv_pep440::VersionSpecifiers; -use uv_pep508::PackageName; use uv_pypi_types::VerbatimParsedUrl; use uv_redacted::DisplaySafeUrl; use uv_settings::{GlobalOptions, ResolverInstallerSchema}; diff --git a/crates/uv-tool/Cargo.toml b/crates/uv-tool/Cargo.toml index f46941f74..433caa997 100644 --- a/crates/uv-tool/Cargo.toml +++ b/crates/uv-tool/Cargo.toml @@ -23,6 +23,7 @@ uv-distribution-types = { workspace = true } uv-fs = { workspace = true } uv-install-wheel = { workspace = true } uv-installer = { workspace = true } +uv-normalize = { workspace = true } uv-pep440 = { workspace = true } uv-pep508 = { workspace = true } uv-pypi-types = { workspace = true } diff --git a/crates/uv-tool/src/lib.rs b/crates/uv-tool/src/lib.rs index cf279302a..c2af9a5d2 100644 --- a/crates/uv-tool/src/lib.rs +++ b/crates/uv-tool/src/lib.rs @@ -1,31 +1,28 @@ -use core::fmt; -use fs_err as fs; - -use uv_configuration::Preview; -use uv_dirs::user_executable_directory; -use uv_pep440::Version; -use uv_pep508::{InvalidNameError, PackageName}; - use std::io::{self, Write}; use std::path::{Path, PathBuf}; use std::str::FromStr; +use fs_err as fs; use fs_err::File; use thiserror::Error; use tracing::{debug, warn}; -use uv_install_wheel::read_record_file; - -pub use receipt::ToolReceipt; -pub use tool::{Tool, ToolEntrypoint}; use uv_cache::Cache; +use uv_configuration::Preview; +use uv_dirs::user_executable_directory; use uv_fs::{LockedFile, Simplified}; +use uv_install_wheel::read_record_file; use uv_installer::SitePackages; +use uv_normalize::{InvalidNameError, PackageName}; +use uv_pep440::Version; use uv_python::{Interpreter, PythonEnvironment}; use uv_state::{StateBucket, StateStore}; use uv_static::EnvVars; use uv_virtualenv::remove_virtualenv; +pub use receipt::ToolReceipt; +pub use tool::{Tool, ToolEntrypoint}; + mod receipt; mod tool; @@ -352,8 +349,8 @@ impl InstalledTool { } } -impl fmt::Display for InstalledTool { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { +impl std::fmt::Display for InstalledTool { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!( f, "{}", diff --git a/crates/uv-types/Cargo.toml b/crates/uv-types/Cargo.toml index f29af4ca4..d5d9bc7e6 100644 --- a/crates/uv-types/Cargo.toml +++ b/crates/uv-types/Cargo.toml @@ -24,7 +24,6 @@ uv-git = { workspace = true } uv-normalize = { workspace = true } uv-once-map = { workspace = true } uv-pep440 = { workspace = true } -uv-pep508 = { workspace = true } uv-pypi-types = { workspace = true } uv-python = { workspace = true } uv-redacted = { workspace = true } diff --git a/crates/uv-types/src/builds.rs b/crates/uv-types/src/builds.rs index e8c622057..5e43b0fc1 100644 --- a/crates/uv-types/src/builds.rs +++ b/crates/uv-types/src/builds.rs @@ -4,7 +4,7 @@ use std::sync::Arc; use dashmap::DashMap; use uv_configuration::{BuildKind, SourceStrategy}; -use uv_pep508::PackageName; +use uv_normalize::PackageName; use uv_python::PythonEnvironment; /// Whether to enforce build isolation when building source distributions. diff --git a/crates/uv-types/src/traits.rs b/crates/uv-types/src/traits.rs index 2d49b3685..6054ba302 100644 --- a/crates/uv-types/src/traits.rs +++ b/crates/uv-types/src/traits.rs @@ -15,7 +15,7 @@ use uv_distribution_types::{ PackageConfigSettings, Requirement, Resolution, SourceDist, }; use uv_git::GitResolver; -use uv_pep508::PackageName; +use uv_normalize::PackageName; use uv_python::{Interpreter, PythonEnvironment}; use uv_workspace::WorkspaceCache; diff --git a/crates/uv-workspace/src/pyproject_mut.rs b/crates/uv-workspace/src/pyproject_mut.rs index e87824879..ba489818b 100644 --- a/crates/uv-workspace/src/pyproject_mut.rs +++ b/crates/uv-workspace/src/pyproject_mut.rs @@ -1,9 +1,10 @@ -use itertools::Itertools; -use serde::{Deserialize, Serialize}; use std::fmt::{Display, Formatter}; use std::path::Path; use std::str::FromStr; use std::{fmt, iter, mem}; + +use itertools::Itertools; +use serde::{Deserialize, Serialize}; use thiserror::Error; use toml_edit::{ Array, ArrayOfTables, DocumentMut, Formatted, Item, RawString, Table, TomlError, Value, @@ -12,9 +13,9 @@ use toml_edit::{ use uv_cache_key::CanonicalUrl; use uv_distribution_types::Index; use uv_fs::PortablePath; -use uv_normalize::GroupName; +use uv_normalize::{ExtraName, GroupName, PackageName}; use uv_pep440::{Version, VersionParseError, VersionSpecifier, VersionSpecifiers}; -use uv_pep508::{ExtraName, MarkerTree, PackageName, Requirement, VersionOrUrl}; +use uv_pep508::{MarkerTree, Requirement, VersionOrUrl}; use uv_redacted::DisplaySafeUrl; use crate::pyproject::{DependencyType, Source}; diff --git a/crates/uv/src/commands/project/add.rs b/crates/uv/src/commands/project/add.rs index dba510ea1..c8257bb18 100644 --- a/crates/uv/src/commands/project/add.rs +++ b/crates/uv/src/commands/project/add.rs @@ -30,8 +30,8 @@ use uv_distribution_types::{ use uv_fs::{LockedFile, Simplified}; use uv_git::GIT_STORE; use uv_git_types::GitReference; -use uv_normalize::{DEV_DEPENDENCIES, DefaultExtras, DefaultGroups, PackageName}; -use uv_pep508::{ExtraName, MarkerTree, UnnamedRequirement, VersionOrUrl}; +use uv_normalize::{DEV_DEPENDENCIES, DefaultExtras, DefaultGroups, ExtraName, PackageName}; +use uv_pep508::{MarkerTree, UnnamedRequirement, VersionOrUrl}; use uv_pypi_types::{ParsedUrl, VerbatimParsedUrl}; use uv_python::{Interpreter, PythonDownloads, PythonEnvironment, PythonPreference, PythonRequest}; use uv_redacted::DisplaySafeUrl; diff --git a/crates/uv/src/commands/project/init.rs b/crates/uv/src/commands/project/init.rs index ccf5d9118..1aaa11f3f 100644 --- a/crates/uv/src/commands/project/init.rs +++ b/crates/uv/src/commands/project/init.rs @@ -1,13 +1,13 @@ -use anyhow::{Context, Result, anyhow}; -use owo_colors::OwoColorize; use std::fmt::Write; use std::iter; use std::path::{Path, PathBuf}; use std::process::{Command, Stdio}; use std::str::FromStr; -use uv_distribution_types::RequiresPython; +use anyhow::{Context, Result, anyhow}; +use owo_colors::OwoColorize; use tracing::{debug, trace, warn}; + use uv_cache::Cache; use uv_cli::AuthorFrom; use uv_client::BaseClientBuilder; @@ -15,10 +15,11 @@ use uv_configuration::{ DependencyGroupsWithDefaults, Preview, ProjectBuildBackend, VersionControlError, VersionControlSystem, }; +use uv_distribution_types::RequiresPython; use uv_fs::{CWD, Simplified}; use uv_git::GIT; +use uv_normalize::PackageName; use uv_pep440::Version; -use uv_pep508::PackageName; use uv_python::{ EnvironmentPreference, PythonDownloads, PythonEnvironment, PythonInstallation, PythonPreference, PythonRequest, PythonVariant, PythonVersionFile, VersionFileDiscoveryOptions, diff --git a/crates/uv/src/commands/project/remove.rs b/crates/uv/src/commands/project/remove.rs index 649e6c887..0cf840983 100644 --- a/crates/uv/src/commands/project/remove.rs +++ b/crates/uv/src/commands/project/remove.rs @@ -13,8 +13,8 @@ use uv_configuration::{ Preview, }; use uv_fs::Simplified; +use uv_normalize::PackageName; use uv_normalize::{DEV_DEPENDENCIES, DefaultExtras, DefaultGroups}; -use uv_pep508::PackageName; use uv_python::{PythonDownloads, PythonPreference, PythonRequest}; use uv_scripts::{Pep723Metadata, Pep723Script}; use uv_settings::PythonInstallMirrors; diff --git a/crates/uv/src/commands/project/tree.rs b/crates/uv/src/commands/project/tree.rs index a46c8affd..ca0ce8660 100644 --- a/crates/uv/src/commands/project/tree.rs +++ b/crates/uv/src/commands/project/tree.rs @@ -10,7 +10,7 @@ use uv_client::RegistryClientBuilder; use uv_configuration::{Concurrency, DependencyGroups, Preview, TargetTriple}; use uv_distribution_types::IndexCapabilities; use uv_normalize::DefaultGroups; -use uv_pep508::PackageName; +use uv_normalize::PackageName; use uv_python::{PythonDownloads, PythonPreference, PythonRequest, PythonVersion}; use uv_resolver::{PackageMap, TreeDisplay}; use uv_scripts::Pep723Script; diff --git a/crates/uv/src/commands/project/version.rs b/crates/uv/src/commands/project/version.rs index 566573594..8e4454043 100644 --- a/crates/uv/src/commands/project/version.rs +++ b/crates/uv/src/commands/project/version.rs @@ -15,8 +15,8 @@ use uv_configuration::{ }; use uv_fs::Simplified; use uv_normalize::DefaultExtras; +use uv_normalize::PackageName; use uv_pep440::{BumpCommand, PrereleaseKind, Version}; -use uv_pep508::PackageName; use uv_python::{PythonDownloads, PythonPreference, PythonRequest}; use uv_settings::PythonInstallMirrors; use uv_workspace::pyproject_mut::Error; diff --git a/crates/uv/src/commands/tool/common.rs b/crates/uv/src/commands/tool/common.rs index 8a45a3153..245b0ee2c 100644 --- a/crates/uv/src/commands/tool/common.rs +++ b/crates/uv/src/commands/tool/common.rs @@ -17,8 +17,8 @@ use uv_fs::Simplified; #[cfg(unix)] use uv_fs::replace_symlink; use uv_installer::SitePackages; +use uv_normalize::PackageName; use uv_pep440::{Version, VersionSpecifier, VersionSpecifiers}; -use uv_pep508::PackageName; use uv_python::{ EnvironmentPreference, Interpreter, PythonDownloads, PythonEnvironment, PythonInstallation, PythonPreference, PythonRequest, PythonVariant, VersionRequest, diff --git a/crates/uv/src/settings.rs b/crates/uv/src/settings.rs index 12b027b65..ffcd62742 100644 --- a/crates/uv/src/settings.rs +++ b/crates/uv/src/settings.rs @@ -32,8 +32,8 @@ use uv_distribution_types::{ PackageConfigSettings, Requirement, }; use uv_install_wheel::LinkMode; -use uv_normalize::{PackageName, PipGroupName}; -use uv_pep508::{ExtraName, MarkerTree, RequirementOrigin}; +use uv_normalize::{ExtraName, PackageName, PipGroupName}; +use uv_pep508::{MarkerTree, RequirementOrigin}; use uv_pypi_types::SupportedEnvironments; use uv_python::{Prefix, PythonDownloads, PythonPreference, PythonVersion, Target}; use uv_redacted::DisplaySafeUrl;