mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 10:58:28 +00:00
Split configuration options out of uv-types
(#2924)
Needed to prevent circular dependencies in my toolchain work (#2931). I think this is probably a reasonable change as we move towards persistent configuration too? Unfortunately `BuildIsolation` needs to be in `uv-types` to avoid circular dependencies still. We might be able to resolve that in the future.
This commit is contained in:
parent
90735660cb
commit
1512e07a2e
50 changed files with 155 additions and 89 deletions
30
Cargo.lock
generated
30
Cargo.lock
generated
|
@ -2952,9 +2952,9 @@ dependencies = [
|
|||
"unscanny",
|
||||
"url",
|
||||
"uv-client",
|
||||
"uv-configuration",
|
||||
"uv-fs",
|
||||
"uv-normalize",
|
||||
"uv-types",
|
||||
"uv-warnings",
|
||||
]
|
||||
|
||||
|
@ -4328,6 +4328,7 @@ dependencies = [
|
|||
"uv-auth",
|
||||
"uv-cache",
|
||||
"uv-client",
|
||||
"uv-configuration",
|
||||
"uv-dispatch",
|
||||
"uv-distribution",
|
||||
"uv-fs",
|
||||
|
@ -4384,6 +4385,7 @@ dependencies = [
|
|||
"tokio",
|
||||
"toml",
|
||||
"tracing",
|
||||
"uv-configuration",
|
||||
"uv-fs",
|
||||
"uv-interpreter",
|
||||
"uv-types",
|
||||
|
@ -4458,14 +4460,30 @@ dependencies = [
|
|||
"urlencoding",
|
||||
"uv-auth",
|
||||
"uv-cache",
|
||||
"uv-configuration",
|
||||
"uv-fs",
|
||||
"uv-normalize",
|
||||
"uv-types",
|
||||
"uv-version",
|
||||
"uv-warnings",
|
||||
"webpki-roots",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "uv-configuration"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"clap",
|
||||
"distribution-types",
|
||||
"itertools 0.12.1",
|
||||
"pep508_rs",
|
||||
"rustc-hash",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"uv-cache",
|
||||
"uv-normalize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "uv-dev"
|
||||
version = "0.0.1"
|
||||
|
@ -4500,6 +4518,7 @@ dependencies = [
|
|||
"uv-build",
|
||||
"uv-cache",
|
||||
"uv-client",
|
||||
"uv-configuration",
|
||||
"uv-dispatch",
|
||||
"uv-installer",
|
||||
"uv-interpreter",
|
||||
|
@ -4523,9 +4542,9 @@ dependencies = [
|
|||
"uv-build",
|
||||
"uv-cache",
|
||||
"uv-client",
|
||||
"uv-configuration",
|
||||
"uv-installer",
|
||||
"uv-interpreter",
|
||||
"uv-requirements",
|
||||
"uv-resolver",
|
||||
"uv-types",
|
||||
]
|
||||
|
@ -4560,6 +4579,7 @@ dependencies = [
|
|||
"url",
|
||||
"uv-cache",
|
||||
"uv-client",
|
||||
"uv-configuration",
|
||||
"uv-extract",
|
||||
"uv-fs",
|
||||
"uv-git",
|
||||
|
@ -4652,6 +4672,7 @@ dependencies = [
|
|||
"url",
|
||||
"uv-cache",
|
||||
"uv-client",
|
||||
"uv-configuration",
|
||||
"uv-distribution",
|
||||
"uv-extract",
|
||||
"uv-fs",
|
||||
|
@ -4725,6 +4746,7 @@ dependencies = [
|
|||
"tracing",
|
||||
"url",
|
||||
"uv-client",
|
||||
"uv-configuration",
|
||||
"uv-distribution",
|
||||
"uv-fs",
|
||||
"uv-normalize",
|
||||
|
@ -4771,6 +4793,7 @@ dependencies = [
|
|||
"url",
|
||||
"uv-cache",
|
||||
"uv-client",
|
||||
"uv-configuration",
|
||||
"uv-distribution",
|
||||
"uv-interpreter",
|
||||
"uv-normalize",
|
||||
|
@ -4792,6 +4815,7 @@ dependencies = [
|
|||
"serde",
|
||||
"serde_json",
|
||||
"uv-cache",
|
||||
"uv-configuration",
|
||||
"uv-interpreter",
|
||||
"uv-normalize",
|
||||
]
|
||||
|
|
|
@ -44,6 +44,7 @@ uv-normalize = { path = "crates/uv-normalize" }
|
|||
uv-requirements = { path = "crates/uv-requirements" }
|
||||
uv-resolver = { path = "crates/uv-resolver" }
|
||||
uv-types = { path = "crates/uv-types" }
|
||||
uv-configuration = { path = "crates/uv-configuration" }
|
||||
uv-trampoline = { path = "crates/uv-trampoline" }
|
||||
uv-version = { path = "crates/uv-version" }
|
||||
uv-virtualenv = { path = "crates/uv-virtualenv" }
|
||||
|
|
|
@ -17,7 +17,7 @@ pep508_rs = { workspace = true, features = ["rkyv", "serde", "non-pep508-extensi
|
|||
uv-client = { workspace = true }
|
||||
uv-fs = { workspace = true }
|
||||
uv-normalize = { workspace = true }
|
||||
uv-types = { workspace = true }
|
||||
uv-configuration = { workspace = true }
|
||||
uv-warnings = { workspace = true }
|
||||
|
||||
fs-err = { workspace = true }
|
||||
|
|
|
@ -52,9 +52,9 @@ use pep508_rs::{
|
|||
#[cfg(feature = "http")]
|
||||
use uv_client::BaseClient;
|
||||
use uv_client::BaseClientBuilder;
|
||||
use uv_configuration::{NoBinary, NoBuild, PackageNameSpecifier};
|
||||
use uv_fs::{normalize_url_path, Simplified};
|
||||
use uv_normalize::ExtraName;
|
||||
use uv_types::{NoBinary, NoBuild, PackageNameSpecifier};
|
||||
use uv_warnings::warn_user;
|
||||
|
||||
/// We emit one of those for each requirements.txt entry
|
||||
|
|
|
@ -20,6 +20,7 @@ pep508_rs = { workspace = true }
|
|||
uv-fs = { workspace = true }
|
||||
uv-interpreter = { workspace = true }
|
||||
uv-types = { workspace = true, features = ["serde"] }
|
||||
uv-configuration = { workspace = true, features = ["serde"] }
|
||||
uv-virtualenv = { workspace = true }
|
||||
|
||||
anyhow = { workspace = true }
|
||||
|
|
|
@ -28,11 +28,10 @@ use tracing::{debug, info_span, instrument, Instrument};
|
|||
use distribution_types::Resolution;
|
||||
use pep440_rs::Version;
|
||||
use pep508_rs::{PackageName, Requirement};
|
||||
use uv_configuration::{BuildKind, ConfigSettings, SetupPyStrategy};
|
||||
use uv_fs::{PythonExt, Simplified};
|
||||
use uv_interpreter::{Interpreter, PythonEnvironment};
|
||||
use uv_types::{
|
||||
BuildContext, BuildIsolation, BuildKind, ConfigSettings, SetupPyStrategy, SourceBuildTrait,
|
||||
};
|
||||
use uv_types::{BuildContext, BuildIsolation, SourceBuildTrait};
|
||||
|
||||
/// e.g. `pygraphviz/graphviz_wrap.c:3020:10: fatal error: graphviz/cgraph.h: No such file or directory`
|
||||
static MISSING_HEADER_RE: Lazy<Regex> = Lazy::new(|| {
|
||||
|
|
|
@ -15,7 +15,7 @@ uv-auth = { workspace = true }
|
|||
uv-cache = { workspace = true }
|
||||
uv-fs = { workspace = true, features = ["tokio"] }
|
||||
uv-normalize = { workspace = true }
|
||||
uv-types = { workspace = true }
|
||||
uv-configuration = { workspace = true }
|
||||
uv-version = { workspace = true }
|
||||
uv-warnings = { workspace = true }
|
||||
pypi-types = { workspace = true }
|
||||
|
|
|
@ -19,8 +19,8 @@ use pep508_rs::VerbatimUrl;
|
|||
use platform_tags::Tags;
|
||||
use pypi_types::Hashes;
|
||||
use uv_cache::{Cache, CacheBucket};
|
||||
use uv_configuration::{NoBinary, NoBuild};
|
||||
use uv_normalize::PackageName;
|
||||
use uv_types::{NoBinary, NoBuild};
|
||||
|
||||
use crate::cached_client::{CacheControl, CachedClientError};
|
||||
use crate::html::SimpleHtml;
|
||||
|
|
|
@ -22,8 +22,8 @@ use platform_tags::Platform;
|
|||
use pypi_types::{Metadata23, SimpleJson};
|
||||
use uv_auth::KeyringProvider;
|
||||
use uv_cache::{Cache, CacheBucket, WheelCache};
|
||||
use uv_configuration::IndexStrategy;
|
||||
use uv_normalize::PackageName;
|
||||
use uv_types::IndexStrategy;
|
||||
|
||||
use crate::base_client::{BaseClient, BaseClientBuilder};
|
||||
use crate::cached_client::CacheControl;
|
||||
|
|
30
crates/uv-configuration/Cargo.toml
Normal file
30
crates/uv-configuration/Cargo.toml
Normal file
|
@ -0,0 +1,30 @@
|
|||
[package]
|
||||
name = "uv-configuration"
|
||||
version = "0.0.1"
|
||||
edition = { workspace = true }
|
||||
rust-version = { workspace = true }
|
||||
homepage = { workspace = true }
|
||||
documentation = { workspace = true }
|
||||
repository = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
license = { workspace = true }
|
||||
|
||||
[lints]
|
||||
workspace = true
|
||||
|
||||
[dependencies]
|
||||
distribution-types = { workspace = true }
|
||||
pep508_rs = { workspace = true }
|
||||
uv-cache = { workspace = true }
|
||||
uv-normalize = { workspace = true }
|
||||
|
||||
anyhow = { workspace = true }
|
||||
clap = { workspace = true, features = ["derive"], optional = true }
|
||||
itertools = { workspace = true }
|
||||
rustc-hash = { workspace = true }
|
||||
serde = { workspace = true, optional = true }
|
||||
serde_json = { workspace = true, optional = true }
|
||||
|
||||
[features]
|
||||
default = []
|
||||
serde = ["dep:serde", "dep:serde_json"]
|
|
@ -1,24 +1,9 @@
|
|||
use std::fmt::{Display, Formatter};
|
||||
|
||||
use pep508_rs::PackageName;
|
||||
use uv_interpreter::PythonEnvironment;
|
||||
|
||||
use crate::{PackageNameSpecifier, PackageNameSpecifiers};
|
||||
|
||||
/// Whether to enforce build isolation when building source distributions.
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub enum BuildIsolation<'a> {
|
||||
Isolated,
|
||||
Shared(&'a PythonEnvironment),
|
||||
}
|
||||
|
||||
impl<'a> BuildIsolation<'a> {
|
||||
/// Returns `true` if build isolation is enforced.
|
||||
pub fn is_isolated(&self) -> bool {
|
||||
matches!(self, Self::Isolated)
|
||||
}
|
||||
}
|
||||
|
||||
/// The strategy to use when building source distributions that lack a `pyproject.toml`.
|
||||
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
|
||||
pub enum SetupPyStrategy {
|
13
crates/uv-configuration/src/lib.rs
Normal file
13
crates/uv-configuration/src/lib.rs
Normal file
|
@ -0,0 +1,13 @@
|
|||
pub use build_options::*;
|
||||
pub use config_settings::*;
|
||||
pub use constraints::*;
|
||||
pub use name_specifiers::*;
|
||||
pub use overrides::*;
|
||||
pub use package_options::*;
|
||||
|
||||
mod build_options;
|
||||
mod config_settings;
|
||||
mod constraints;
|
||||
mod name_specifiers;
|
||||
mod overrides;
|
||||
mod package_options;
|
|
@ -29,6 +29,7 @@ uv-interpreter = { workspace = true }
|
|||
uv-normalize = { workspace = true }
|
||||
uv-resolver = { workspace = true }
|
||||
uv-types = { workspace = true }
|
||||
uv-configuration = { workspace = true }
|
||||
|
||||
# Any dependencies that are exclusively used in `uv-dev` should be listed as non-workspace
|
||||
# dependencies, to ensure that we're forced to think twice before including them in other crates.
|
||||
|
|
|
@ -10,13 +10,11 @@ use rustc_hash::FxHashMap;
|
|||
use uv_build::{SourceBuild, SourceBuildContext};
|
||||
use uv_cache::{Cache, CacheArgs};
|
||||
use uv_client::{FlatIndex, RegistryClientBuilder};
|
||||
use uv_configuration::{BuildKind, ConfigSettings, NoBinary, NoBuild, SetupPyStrategy};
|
||||
use uv_dispatch::BuildDispatch;
|
||||
use uv_interpreter::PythonEnvironment;
|
||||
use uv_resolver::InMemoryIndex;
|
||||
use uv_types::NoBinary;
|
||||
use uv_types::{
|
||||
BuildContext, BuildIsolation, BuildKind, ConfigSettings, InFlight, NoBuild, SetupPyStrategy,
|
||||
};
|
||||
use uv_types::{BuildContext, BuildIsolation, InFlight};
|
||||
|
||||
#[derive(Parser)]
|
||||
pub(crate) struct BuildArgs {
|
||||
|
|
|
@ -13,11 +13,12 @@ use distribution_types::{FlatIndexLocation, IndexLocations, IndexUrl, Resolution
|
|||
use pep508_rs::Requirement;
|
||||
use uv_cache::{Cache, CacheArgs};
|
||||
use uv_client::{FlatIndex, FlatIndexClient, RegistryClientBuilder};
|
||||
use uv_configuration::{ConfigSettings, NoBinary, NoBuild, SetupPyStrategy};
|
||||
use uv_dispatch::BuildDispatch;
|
||||
use uv_installer::SitePackages;
|
||||
use uv_interpreter::PythonEnvironment;
|
||||
use uv_resolver::{InMemoryIndex, Manifest, Options, Resolver};
|
||||
use uv_types::{BuildIsolation, ConfigSettings, InFlight, NoBinary, NoBuild, SetupPyStrategy};
|
||||
use uv_types::{BuildIsolation, InFlight};
|
||||
|
||||
#[derive(ValueEnum, Default, Clone)]
|
||||
pub(crate) enum ResolveCliFormat {
|
||||
|
|
|
@ -15,12 +15,12 @@ use pep440_rs::{Version, VersionSpecifier, VersionSpecifiers};
|
|||
use pep508_rs::{Requirement, VersionOrUrl};
|
||||
use uv_cache::{Cache, CacheArgs};
|
||||
use uv_client::{FlatIndex, OwnedArchive, RegistryClient, RegistryClientBuilder};
|
||||
use uv_configuration::{ConfigSettings, NoBinary, NoBuild, SetupPyStrategy};
|
||||
use uv_dispatch::BuildDispatch;
|
||||
use uv_interpreter::PythonEnvironment;
|
||||
use uv_normalize::PackageName;
|
||||
use uv_resolver::InMemoryIndex;
|
||||
use uv_types::NoBinary;
|
||||
use uv_types::{BuildContext, BuildIsolation, ConfigSettings, InFlight, NoBuild, SetupPyStrategy};
|
||||
use uv_types::{BuildContext, BuildIsolation, InFlight};
|
||||
|
||||
#[derive(Parser)]
|
||||
pub(crate) struct ResolveManyArgs {
|
||||
|
|
|
@ -21,9 +21,9 @@ uv-cache = { workspace = true }
|
|||
uv-client = { workspace = true }
|
||||
uv-installer = { workspace = true }
|
||||
uv-interpreter = { workspace = true }
|
||||
uv-requirements = { workspace = true }
|
||||
uv-resolver = { workspace = true }
|
||||
uv-types = { workspace = true }
|
||||
uv-configuration = { workspace = true }
|
||||
|
||||
anyhow = { workspace = true }
|
||||
futures = { workspace = true }
|
||||
|
|
|
@ -17,13 +17,11 @@ use pep508_rs::Requirement;
|
|||
use uv_build::{SourceBuild, SourceBuildContext};
|
||||
use uv_cache::Cache;
|
||||
use uv_client::{FlatIndex, RegistryClient};
|
||||
use uv_configuration::{BuildKind, ConfigSettings, NoBinary, NoBuild, Reinstall, SetupPyStrategy};
|
||||
use uv_installer::{Downloader, Installer, Plan, Planner, SitePackages};
|
||||
use uv_interpreter::{Interpreter, PythonEnvironment};
|
||||
use uv_resolver::{InMemoryIndex, Manifest, Options, Resolver};
|
||||
use uv_types::{
|
||||
BuildContext, BuildIsolation, BuildKind, ConfigSettings, EmptyInstalledPackages, InFlight,
|
||||
NoBinary, NoBuild, Reinstall, SetupPyStrategy,
|
||||
};
|
||||
use uv_types::{BuildContext, BuildIsolation, EmptyInstalledPackages, InFlight};
|
||||
|
||||
/// The main implementation of [`BuildContext`], used by the CLI, see [`BuildContext`]
|
||||
/// documentation.
|
||||
|
|
|
@ -28,6 +28,7 @@ uv-fs = { workspace = true, features = ["tokio"] }
|
|||
uv-git = { workspace = true, features = ["vendored-openssl"] }
|
||||
uv-normalize = { workspace = true }
|
||||
uv-types = { workspace = true }
|
||||
uv-configuration = { workspace = true }
|
||||
|
||||
anyhow = { workspace = true }
|
||||
fs-err = { workspace = true }
|
||||
|
@ -46,4 +47,3 @@ tokio-util = { workspace = true, features = ["compat"] }
|
|||
tracing = { workspace = true }
|
||||
url = { workspace = true }
|
||||
zip = { workspace = true }
|
||||
|
||||
|
|
|
@ -17,8 +17,9 @@ use platform_tags::Tags;
|
|||
use pypi_types::Metadata23;
|
||||
use uv_cache::{ArchiveTimestamp, CacheBucket, CacheEntry, CachedByTimestamp, WheelCache};
|
||||
use uv_client::{CacheControl, CachedClientError, Connectivity, RegistryClient};
|
||||
use uv_configuration::{NoBinary, NoBuild};
|
||||
use uv_fs::write_atomic;
|
||||
use uv_types::{BuildContext, NoBinary, NoBuild};
|
||||
use uv_types::BuildContext;
|
||||
|
||||
use crate::locks::Locks;
|
||||
use crate::{Error, LocalWheel, Reporter, SourceDistributionBuilder};
|
||||
|
|
|
@ -28,8 +28,9 @@ use uv_cache::{
|
|||
use uv_client::{
|
||||
CacheControl, CachedClientError, Connectivity, DataWithCachePolicy, RegistryClient,
|
||||
};
|
||||
use uv_configuration::{BuildKind, NoBuild};
|
||||
use uv_fs::write_atomic;
|
||||
use uv_types::{BuildContext, BuildKind, NoBuild, SourceBuildTrait};
|
||||
use uv_types::{BuildContext, SourceBuildTrait};
|
||||
|
||||
use crate::error::Error;
|
||||
use crate::git::{fetch_git_archive, resolve_precise};
|
||||
|
|
|
@ -29,6 +29,7 @@ uv-interpreter = { workspace = true }
|
|||
uv-normalize = { workspace = true }
|
||||
uv-types = { workspace = true }
|
||||
uv-warnings = { workspace = true }
|
||||
uv-configuration = { workspace = true }
|
||||
|
||||
anyhow = { workspace = true }
|
||||
async-channel = { workspace = true }
|
||||
|
|
|
@ -13,10 +13,10 @@ use distribution_types::{
|
|||
use pep508_rs::{Requirement, VersionOrUrl};
|
||||
use platform_tags::Tags;
|
||||
use uv_cache::{ArchiveTarget, ArchiveTimestamp, Cache, CacheBucket, WheelCache};
|
||||
use uv_configuration::{NoBinary, Reinstall};
|
||||
use uv_distribution::{BuiltWheelIndex, RegistryWheelIndex};
|
||||
use uv_fs::Simplified;
|
||||
use uv_interpreter::PythonEnvironment;
|
||||
use uv_types::{NoBinary, Reinstall};
|
||||
|
||||
use crate::{ResolvedEditable, SitePackages};
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ uv-normalize = { workspace = true }
|
|||
uv-resolver = { workspace = true, features = ["clap"] }
|
||||
uv-types = { workspace = true }
|
||||
uv-warnings = { workspace = true }
|
||||
uv-configuration = { workspace = true }
|
||||
|
||||
anyhow = { workspace = true }
|
||||
configparser = { workspace = true }
|
||||
|
|
|
@ -10,9 +10,10 @@ use distribution_types::{Dist, DistributionMetadata, LocalEditable};
|
|||
use pep508_rs::{MarkerEnvironment, Requirement, VersionOrUrl};
|
||||
use pypi_types::Metadata23;
|
||||
use uv_client::RegistryClient;
|
||||
use uv_configuration::{Constraints, Overrides};
|
||||
use uv_distribution::{DistributionDatabase, Reporter};
|
||||
use uv_resolver::{InMemoryIndex, MetadataResponse};
|
||||
use uv_types::{BuildContext, Constraints, Overrides, RequestedRequirements};
|
||||
use uv_types::{BuildContext, RequestedRequirements};
|
||||
|
||||
/// A resolver for resolving lookahead requirements from direct URLs.
|
||||
///
|
||||
|
|
|
@ -9,9 +9,9 @@ use distribution_types::{FlatIndexLocation, IndexUrl};
|
|||
use pep508_rs::{Requirement, RequirementsTxtRequirement};
|
||||
use requirements_txt::{EditableRequirement, FindLink, RequirementsTxt};
|
||||
use uv_client::BaseClientBuilder;
|
||||
use uv_configuration::{NoBinary, NoBuild};
|
||||
use uv_fs::Simplified;
|
||||
use uv_normalize::{ExtraName, PackageName};
|
||||
use uv_types::{NoBinary, NoBuild};
|
||||
|
||||
use crate::pyproject::{Pep621Metadata, PyProjectToml};
|
||||
use crate::{ExtrasSpecification, RequirementsSource};
|
||||
|
|
|
@ -4,8 +4,8 @@ use anyhow::Result;
|
|||
|
||||
use requirements_txt::RequirementsTxt;
|
||||
use uv_client::{BaseClientBuilder, Connectivity};
|
||||
use uv_configuration::Upgrade;
|
||||
use uv_resolver::{Preference, PreferenceError};
|
||||
use uv_types::Upgrade;
|
||||
|
||||
/// Load the preferred requirements from an existing lockfile, applying the upgrade strategy.
|
||||
pub async fn read_lockfile(
|
||||
|
|
|
@ -30,6 +30,7 @@ uv-interpreter = { workspace = true }
|
|||
uv-normalize = { workspace = true }
|
||||
uv-types = { workspace = true }
|
||||
uv-warnings = { workspace = true }
|
||||
uv-configuration = { workspace = true }
|
||||
|
||||
anstream = { workspace = true }
|
||||
anyhow = { workspace = true }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use pep508_rs::PackageName;
|
||||
use rustc_hash::FxHashSet;
|
||||
use uv_types::{Reinstall, Upgrade};
|
||||
use uv_configuration::{Reinstall, Upgrade};
|
||||
|
||||
/// Tracks locally installed packages that should not be selected during resolution.
|
||||
#[derive(Debug, Default, Clone)]
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
use distribution_types::LocalEditable;
|
||||
use pep508_rs::{MarkerEnvironment, Requirement};
|
||||
use pypi_types::Metadata23;
|
||||
use uv_configuration::{Constraints, Overrides};
|
||||
use uv_normalize::PackageName;
|
||||
use uv_types::{Constraints, Overrides, RequestedRequirements};
|
||||
use uv_types::RequestedRequirements;
|
||||
|
||||
use crate::{preferences::Preference, Exclusions};
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@ use tracing::warn;
|
|||
use distribution_types::Verbatim;
|
||||
use pep440_rs::Version;
|
||||
use pep508_rs::{MarkerEnvironment, Requirement, VersionOrUrl};
|
||||
use uv_configuration::{Constraints, Overrides};
|
||||
use uv_normalize::{ExtraName, PackageName};
|
||||
use uv_types::{Constraints, Overrides};
|
||||
|
||||
use crate::pubgrub::specifier::PubGrubSpecifier;
|
||||
use crate::pubgrub::PubGrubPackage;
|
||||
|
|
|
@ -27,10 +27,11 @@ use platform_tags::Tags;
|
|||
use pypi_types::Metadata23;
|
||||
pub(crate) use urls::Urls;
|
||||
use uv_client::{FlatIndex, RegistryClient};
|
||||
use uv_configuration::{Constraints, Overrides};
|
||||
use uv_distribution::DistributionDatabase;
|
||||
use uv_interpreter::Interpreter;
|
||||
use uv_normalize::PackageName;
|
||||
use uv_types::{BuildContext, Constraints, InstalledPackagesProvider, Overrides};
|
||||
use uv_types::{BuildContext, InstalledPackagesProvider};
|
||||
|
||||
use crate::candidate_selector::{CandidateDist, CandidateSelector};
|
||||
use crate::editables::Editables;
|
||||
|
|
|
@ -7,9 +7,10 @@ use distribution_types::{Dist, IndexLocations};
|
|||
use platform_tags::Tags;
|
||||
use pypi_types::Metadata23;
|
||||
use uv_client::{FlatIndex, RegistryClient};
|
||||
use uv_configuration::{NoBinary, NoBuild};
|
||||
use uv_distribution::DistributionDatabase;
|
||||
use uv_normalize::PackageName;
|
||||
use uv_types::{BuildContext, NoBinary, NoBuild};
|
||||
use uv_types::BuildContext;
|
||||
|
||||
use crate::python_requirement::PythonRequirement;
|
||||
use crate::version_map::VersionMap;
|
||||
|
|
|
@ -15,8 +15,8 @@ use platform_tags::Tags;
|
|||
use pypi_types::{Hashes, Yanked};
|
||||
use rkyv::{de::deserializers::SharedDeserializeMap, Deserialize};
|
||||
use uv_client::{FlatDistributions, OwnedArchive, SimpleMetadata, VersionFiles};
|
||||
use uv_configuration::{NoBinary, NoBuild};
|
||||
use uv_normalize::PackageName;
|
||||
use uv_types::{NoBinary, NoBuild};
|
||||
use uv_warnings::warn_user_once;
|
||||
|
||||
use crate::{python_requirement::PythonRequirement, yanks::AllowedYanks};
|
||||
|
|
|
@ -15,15 +15,13 @@ use pep508_rs::{MarkerEnvironment, Requirement, StringVersion};
|
|||
use platform_tags::{Arch, Os, Platform, Tags};
|
||||
use uv_cache::Cache;
|
||||
use uv_client::{FlatIndex, RegistryClientBuilder};
|
||||
use uv_configuration::{BuildKind, Constraints, NoBinary, NoBuild, Overrides, SetupPyStrategy};
|
||||
use uv_interpreter::{find_default_python, Interpreter, PythonEnvironment};
|
||||
use uv_resolver::{
|
||||
DisplayResolutionGraph, Exclusions, InMemoryIndex, Manifest, Options, OptionsBuilder,
|
||||
PreReleaseMode, Preference, ResolutionGraph, ResolutionMode, Resolver,
|
||||
};
|
||||
use uv_types::{
|
||||
BuildContext, BuildIsolation, BuildKind, Constraints, EmptyInstalledPackages, NoBinary,
|
||||
NoBuild, Overrides, SetupPyStrategy, SourceBuildTrait,
|
||||
};
|
||||
use uv_types::{BuildContext, BuildIsolation, EmptyInstalledPackages, SourceBuildTrait};
|
||||
|
||||
// Exclude any packages uploaded after this date.
|
||||
static EXCLUDE_NEWER: Lazy<DateTime<Utc>> = Lazy::new(|| {
|
||||
|
|
|
@ -19,6 +19,7 @@ pep508_rs = { workspace = true }
|
|||
uv-cache = { workspace = true }
|
||||
uv-interpreter = { workspace = true }
|
||||
uv-normalize = { workspace = true }
|
||||
uv-configuration = { workspace = true }
|
||||
|
||||
anyhow = { workspace = true }
|
||||
clap = { workspace = true, features = ["derive"], optional = true }
|
||||
|
|
15
crates/uv-types/src/builds.rs
Normal file
15
crates/uv-types/src/builds.rs
Normal file
|
@ -0,0 +1,15 @@
|
|||
use uv_interpreter::PythonEnvironment;
|
||||
|
||||
/// Whether to enforce build isolation when building source distributions.
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
pub enum BuildIsolation<'a> {
|
||||
Isolated,
|
||||
Shared(&'a PythonEnvironment),
|
||||
}
|
||||
|
||||
impl<'a> BuildIsolation<'a> {
|
||||
/// Returns `true` if build isolation is enforced.
|
||||
pub fn is_isolated(&self) -> bool {
|
||||
matches!(self, Self::Isolated)
|
||||
}
|
||||
}
|
|
@ -1,20 +1,10 @@
|
|||
//! Fundamental types shared across `uv` crates.
|
||||
pub use build_options::*;
|
||||
pub use config_settings::*;
|
||||
pub use constraints::*;
|
||||
pub use builds::*;
|
||||
pub use downloads::*;
|
||||
pub use name_specifiers::*;
|
||||
pub use overrides::*;
|
||||
pub use package_options::*;
|
||||
pub use requirements::*;
|
||||
pub use traits::*;
|
||||
|
||||
mod build_options;
|
||||
mod config_settings;
|
||||
mod constraints;
|
||||
mod builds;
|
||||
mod downloads;
|
||||
mod name_specifiers;
|
||||
mod overrides;
|
||||
mod package_options;
|
||||
mod requirements;
|
||||
mod traits;
|
||||
|
|
|
@ -9,7 +9,8 @@ use pep508_rs::{PackageName, Requirement};
|
|||
use uv_cache::Cache;
|
||||
use uv_interpreter::{Interpreter, PythonEnvironment};
|
||||
|
||||
use crate::{BuildIsolation, BuildKind, NoBinary, NoBuild, SetupPyStrategy};
|
||||
use crate::BuildIsolation;
|
||||
use uv_configuration::{BuildKind, NoBinary, NoBuild, SetupPyStrategy};
|
||||
|
||||
/// Avoids cyclic crate dependencies between resolver, installer and builder.
|
||||
///
|
||||
|
|
|
@ -32,6 +32,7 @@ uv-normalize = { workspace = true }
|
|||
uv-requirements = { workspace = true }
|
||||
uv-resolver = { workspace = true, features = ["clap"] }
|
||||
uv-types = { workspace = true, features = ["clap"] }
|
||||
uv-configuration = { workspace = true, features = ["clap"] }
|
||||
uv-virtualenv = { workspace = true }
|
||||
uv-warnings = { workspace = true }
|
||||
|
||||
|
|
|
@ -22,6 +22,10 @@ use uv_cache::Cache;
|
|||
use uv_client::{
|
||||
BaseClientBuilder, Connectivity, FlatIndex, FlatIndexClient, RegistryClientBuilder,
|
||||
};
|
||||
use uv_configuration::{
|
||||
ConfigSettings, Constraints, IndexStrategy, NoBinary, NoBuild, Overrides, SetupPyStrategy,
|
||||
Upgrade,
|
||||
};
|
||||
use uv_dispatch::BuildDispatch;
|
||||
use uv_fs::Simplified;
|
||||
use uv_installer::Downloader;
|
||||
|
@ -35,10 +39,7 @@ use uv_resolver::{
|
|||
AnnotationStyle, DependencyMode, DisplayResolutionGraph, Exclusions, InMemoryIndex, Manifest,
|
||||
OptionsBuilder, PreReleaseMode, PythonRequirement, ResolutionMode, Resolver,
|
||||
};
|
||||
use uv_types::{
|
||||
BuildIsolation, ConfigSettings, Constraints, EmptyInstalledPackages, InFlight, IndexStrategy,
|
||||
NoBinary, NoBuild, Overrides, SetupPyStrategy, Upgrade,
|
||||
};
|
||||
use uv_types::{BuildIsolation, EmptyInstalledPackages, InFlight};
|
||||
use uv_warnings::warn_user;
|
||||
|
||||
use crate::commands::reporters::{DownloadReporter, ResolverReporter};
|
||||
|
|
|
@ -24,6 +24,10 @@ use uv_client::{
|
|||
BaseClientBuilder, Connectivity, FlatIndex, FlatIndexClient, RegistryClient,
|
||||
RegistryClientBuilder,
|
||||
};
|
||||
use uv_configuration::{
|
||||
ConfigSettings, Constraints, IndexStrategy, NoBinary, NoBuild, Overrides, Reinstall,
|
||||
SetupPyStrategy, Upgrade,
|
||||
};
|
||||
use uv_dispatch::BuildDispatch;
|
||||
use uv_fs::Simplified;
|
||||
use uv_installer::{BuiltEditable, Downloader, Plan, Planner, ResolvedEditable, SitePackages};
|
||||
|
@ -37,10 +41,7 @@ use uv_resolver::{
|
|||
DependencyMode, Exclusions, InMemoryIndex, Manifest, Options, OptionsBuilder, PreReleaseMode,
|
||||
Preference, ResolutionGraph, ResolutionMode, Resolver,
|
||||
};
|
||||
use uv_types::{
|
||||
BuildIsolation, ConfigSettings, Constraints, InFlight, IndexStrategy, NoBinary, NoBuild,
|
||||
Overrides, Reinstall, SetupPyStrategy, Upgrade,
|
||||
};
|
||||
use uv_types::{BuildIsolation, InFlight};
|
||||
use uv_warnings::warn_user;
|
||||
|
||||
use crate::commands::reporters::{DownloadReporter, InstallReporter, ResolverReporter};
|
||||
|
|
|
@ -19,6 +19,9 @@ use uv_client::{
|
|||
BaseClientBuilder, Connectivity, FlatIndex, FlatIndexClient, RegistryClient,
|
||||
RegistryClientBuilder,
|
||||
};
|
||||
use uv_configuration::{
|
||||
ConfigSettings, IndexStrategy, NoBinary, NoBuild, Reinstall, SetupPyStrategy,
|
||||
};
|
||||
use uv_dispatch::BuildDispatch;
|
||||
use uv_fs::Simplified;
|
||||
use uv_installer::{is_dynamic, Downloader, Plan, Planner, ResolvedEditable, SitePackages};
|
||||
|
@ -28,10 +31,7 @@ use uv_requirements::{
|
|||
SourceTreeResolver,
|
||||
};
|
||||
use uv_resolver::{DependencyMode, InMemoryIndex, Manifest, OptionsBuilder, Resolver};
|
||||
use uv_types::{
|
||||
BuildIsolation, ConfigSettings, EmptyInstalledPackages, InFlight, IndexStrategy, NoBinary,
|
||||
NoBuild, Reinstall, SetupPyStrategy,
|
||||
};
|
||||
use uv_types::{BuildIsolation, EmptyInstalledPackages, InFlight};
|
||||
use uv_warnings::warn_user;
|
||||
|
||||
use crate::commands::reporters::{DownloadReporter, InstallReporter, ResolverReporter};
|
||||
|
|
|
@ -16,14 +16,12 @@ use pep508_rs::Requirement;
|
|||
use uv_auth::{KeyringProvider, GLOBAL_AUTH_STORE};
|
||||
use uv_cache::Cache;
|
||||
use uv_client::{Connectivity, FlatIndex, FlatIndexClient, RegistryClientBuilder};
|
||||
use uv_configuration::{ConfigSettings, IndexStrategy, NoBinary, NoBuild, SetupPyStrategy};
|
||||
use uv_dispatch::BuildDispatch;
|
||||
use uv_fs::Simplified;
|
||||
use uv_interpreter::{find_default_python, find_requested_python, Error};
|
||||
use uv_resolver::{InMemoryIndex, OptionsBuilder};
|
||||
use uv_types::{
|
||||
BuildContext, BuildIsolation, ConfigSettings, InFlight, IndexStrategy, NoBinary, NoBuild,
|
||||
SetupPyStrategy,
|
||||
};
|
||||
use uv_types::{BuildContext, BuildIsolation, InFlight};
|
||||
|
||||
use crate::commands::ExitStatus;
|
||||
use crate::printer::Printer;
|
||||
|
|
|
@ -16,15 +16,15 @@ use distribution_types::{FlatIndexLocation, IndexLocations, IndexUrl};
|
|||
use uv_auth::KeyringProvider;
|
||||
use uv_cache::{Cache, CacheArgs, Refresh};
|
||||
use uv_client::Connectivity;
|
||||
use uv_configuration::{
|
||||
ConfigSettingEntry, ConfigSettings, NoBuild, PackageNameSpecifier, Reinstall, SetupPyStrategy,
|
||||
Upgrade,
|
||||
};
|
||||
use uv_configuration::{IndexStrategy, NoBinary};
|
||||
use uv_interpreter::PythonVersion;
|
||||
use uv_normalize::{ExtraName, PackageName};
|
||||
use uv_requirements::{ExtrasSpecification, RequirementsSource};
|
||||
use uv_resolver::{AnnotationStyle, DependencyMode, PreReleaseMode, ResolutionMode};
|
||||
use uv_types::{
|
||||
ConfigSettingEntry, ConfigSettings, NoBuild, PackageNameSpecifier, Reinstall, SetupPyStrategy,
|
||||
Upgrade,
|
||||
};
|
||||
use uv_types::{IndexStrategy, NoBinary};
|
||||
|
||||
use crate::commands::{extra_name_with_clap_error, ExitStatus, ListFormat, VersionFormat};
|
||||
use crate::compat::CompatArgs;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue