Add file-to-CLI overrides for build isolation configuration (#15437)

## Summary

Like #15395, but `--no-build-isolation`.
This commit is contained in:
Charlie Marsh 2025-08-21 23:54:39 +01:00 committed by GitHub
parent d1e0c26678
commit 91d66e0bd8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 660 additions and 305 deletions

View File

@ -1,7 +1,7 @@
use anstream::eprintln; use anstream::eprintln;
use uv_cache::Refresh; use uv_cache::Refresh;
use uv_configuration::{Reinstall, Upgrade}; use uv_configuration::{BuildIsolation, Reinstall, Upgrade};
use uv_distribution_types::{ConfigSettings, PackageConfigSettings, Requirement}; use uv_distribution_types::{ConfigSettings, PackageConfigSettings, Requirement};
use uv_resolver::{ExcludeNewer, ExcludeNewerPackage, PrereleaseMode}; use uv_resolver::{ExcludeNewer, ExcludeNewerPackage, PrereleaseMode};
use uv_settings::{Combine, PipOptions, ResolverInstallerOptions, ResolverOptions}; use uv_settings::{Combine, PipOptions, ResolverInstallerOptions, ResolverOptions};
@ -355,8 +355,10 @@ pub fn resolver_options(
.into_iter() .into_iter()
.collect::<PackageConfigSettings>() .collect::<PackageConfigSettings>()
}), }),
no_build_isolation: flag(no_build_isolation, build_isolation, "build-isolation"), build_isolation: BuildIsolation::from_args(
no_build_isolation_package: Some(no_build_isolation_package), flag(no_build_isolation, build_isolation, "build-isolation"),
no_build_isolation_package,
),
extra_build_dependencies: None, extra_build_dependencies: None,
extra_build_variables: None, extra_build_variables: None,
exclude_newer: ExcludeNewer::from_args( exclude_newer: ExcludeNewer::from_args(
@ -470,12 +472,10 @@ pub fn resolver_installer_options(
.into_iter() .into_iter()
.collect::<PackageConfigSettings>() .collect::<PackageConfigSettings>()
}), }),
no_build_isolation: flag(no_build_isolation, build_isolation, "build-isolation"), build_isolation: BuildIsolation::from_args(
no_build_isolation_package: if no_build_isolation_package.is_empty() { flag(no_build_isolation, build_isolation, "build-isolation"),
None no_build_isolation_package,
} else { ),
Some(no_build_isolation_package)
},
extra_build_dependencies: None, extra_build_dependencies: None,
extra_build_variables: None, extra_build_variables: None,
exclude_newer, exclude_newer,

View File

@ -248,3 +248,55 @@ impl From<Upgrade> for Refresh {
} }
} }
} }
/// Whether to isolate builds.
#[derive(Debug, Default, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "kebab-case", deny_unknown_fields)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub enum BuildIsolation {
/// Isolate all builds.
#[default]
Isolate,
/// Do not isolate any builds.
Shared,
/// Do not isolate builds for the specified packages.
SharedPackage(Vec<PackageName>),
}
impl BuildIsolation {
/// Determine the build isolation strategy from the command-line arguments.
pub fn from_args(
no_build_isolation: Option<bool>,
no_build_isolation_package: Vec<PackageName>,
) -> Option<Self> {
match no_build_isolation {
Some(true) => Some(Self::Shared),
Some(false) => Some(Self::Isolate),
None if no_build_isolation_package.is_empty() => None,
None => Some(Self::SharedPackage(no_build_isolation_package)),
}
}
/// Combine a set of [`BuildIsolation`] values.
#[must_use]
pub fn combine(self, other: Self) -> Self {
match self {
// Setting `--build-isolation` or `--no-build-isolation` should clear previous `--no-build-isolation-package` selections.
Self::Isolate | Self::Shared => self,
Self::SharedPackage(self_packages) => match other {
// If `--no-build-isolation` was enabled previously, `--no-build-isolation-package` is subsumed by sharing all builds.
Self::Shared => other,
// If `--build-isolation` was enabled previously, then `--no-build-isolation-package` enables specific packages to be shared.
Self::Isolate => Self::SharedPackage(self_packages),
// If `--no-build-isolation-package` was included twice, combine the packages.
Self::SharedPackage(other_packages) => {
let mut combined = self_packages;
combined.extend(other_packages);
Self::SharedPackage(combined)
}
},
}
}
}

View File

@ -4,8 +4,8 @@ use std::{collections::BTreeMap, num::NonZeroUsize};
use url::Url; use url::Url;
use uv_configuration::{ use uv_configuration::{
ExportFormat, IndexStrategy, KeyringProviderType, Reinstall, RequiredVersion, TargetTriple, BuildIsolation, ExportFormat, IndexStrategy, KeyringProviderType, Reinstall, RequiredVersion,
TrustedPublishing, Upgrade, TargetTriple, TrustedPublishing, Upgrade,
}; };
use uv_distribution_types::{ use uv_distribution_types::{
ConfigSettings, ExtraBuildVariables, Index, IndexUrl, PackageConfigSettings, PipExtraIndex, ConfigSettings, ExtraBuildVariables, Index, IndexUrl, PackageConfigSettings, PipExtraIndex,
@ -199,6 +199,15 @@ impl Combine for Option<Reinstall> {
} }
} }
impl Combine for Option<BuildIsolation> {
fn combine(self, other: Self) -> Self {
match (self, other) {
(Some(a), Some(b)) => Some(a.combine(b)),
(a, b) => a.or(b),
}
}
}
impl Combine for serde::de::IgnoredAny { impl Combine for serde::de::IgnoredAny {
fn combine(self, _other: Self) -> Self { fn combine(self, _other: Self) -> Self {
self self

View File

@ -4,8 +4,8 @@ use serde::{Deserialize, Serialize};
use uv_cache_info::CacheKey; use uv_cache_info::CacheKey;
use uv_configuration::{ use uv_configuration::{
IndexStrategy, KeyringProviderType, PackageNameSpecifier, Reinstall, RequiredVersion, BuildIsolation, IndexStrategy, KeyringProviderType, PackageNameSpecifier, Reinstall,
TargetTriple, TrustedHost, TrustedPublishing, Upgrade, RequiredVersion, TargetTriple, TrustedHost, TrustedPublishing, Upgrade,
}; };
use uv_distribution_types::{ use uv_distribution_types::{
ConfigSettings, ExtraBuildVariables, Index, IndexUrl, IndexUrlError, PackageConfigSettings, ConfigSettings, ExtraBuildVariables, Index, IndexUrl, IndexUrlError, PackageConfigSettings,
@ -341,13 +341,12 @@ pub struct InstallerOptions {
pub exclude_newer: Option<ExcludeNewerTimestamp>, pub exclude_newer: Option<ExcludeNewerTimestamp>,
pub link_mode: Option<LinkMode>, pub link_mode: Option<LinkMode>,
pub compile_bytecode: Option<bool>, pub compile_bytecode: Option<bool>,
pub reinstall: Option<bool>, pub reinstall: Option<Reinstall>,
pub reinstall_package: Option<Vec<PackageName>>, pub build_isolation: Option<BuildIsolation>,
pub no_build: Option<bool>, pub no_build: Option<bool>,
pub no_build_package: Option<Vec<PackageName>>, pub no_build_package: Option<Vec<PackageName>>,
pub no_binary: Option<bool>, pub no_binary: Option<bool>,
pub no_binary_package: Option<Vec<PackageName>>, pub no_binary_package: Option<Vec<PackageName>>,
pub no_build_isolation: Option<bool>,
pub no_sources: Option<bool>, pub no_sources: Option<bool>,
} }
@ -370,12 +369,11 @@ pub struct ResolverOptions {
pub exclude_newer: ExcludeNewer, pub exclude_newer: ExcludeNewer,
pub link_mode: Option<LinkMode>, pub link_mode: Option<LinkMode>,
pub upgrade: Option<Upgrade>, pub upgrade: Option<Upgrade>,
pub build_isolation: Option<BuildIsolation>,
pub no_build: Option<bool>, pub no_build: Option<bool>,
pub no_build_package: Option<Vec<PackageName>>, pub no_build_package: Option<Vec<PackageName>>,
pub no_binary: Option<bool>, pub no_binary: Option<bool>,
pub no_binary_package: Option<Vec<PackageName>>, pub no_binary_package: Option<Vec<PackageName>>,
pub no_build_isolation: Option<bool>,
pub no_build_isolation_package: Option<Vec<PackageName>>,
pub extra_build_dependencies: Option<ExtraBuildDependencies>, pub extra_build_dependencies: Option<ExtraBuildDependencies>,
pub extra_build_variables: Option<ExtraBuildVariables>, pub extra_build_variables: Option<ExtraBuildVariables>,
pub no_sources: Option<bool>, pub no_sources: Option<bool>,
@ -398,8 +396,7 @@ pub struct ResolverInstallerOptions {
pub dependency_metadata: Option<Vec<StaticMetadata>>, pub dependency_metadata: Option<Vec<StaticMetadata>>,
pub config_settings: Option<ConfigSettings>, pub config_settings: Option<ConfigSettings>,
pub config_settings_package: Option<PackageConfigSettings>, pub config_settings_package: Option<PackageConfigSettings>,
pub no_build_isolation: Option<bool>, pub build_isolation: Option<BuildIsolation>,
pub no_build_isolation_package: Option<Vec<PackageName>>,
pub extra_build_dependencies: Option<ExtraBuildDependencies>, pub extra_build_dependencies: Option<ExtraBuildDependencies>,
pub extra_build_variables: Option<ExtraBuildVariables>, pub extra_build_variables: Option<ExtraBuildVariables>,
pub exclude_newer: Option<ExcludeNewerTimestamp>, pub exclude_newer: Option<ExcludeNewerTimestamp>,
@ -463,8 +460,10 @@ impl From<ResolverInstallerSchema> for ResolverInstallerOptions {
dependency_metadata, dependency_metadata,
config_settings, config_settings,
config_settings_package, config_settings_package,
no_build_isolation, build_isolation: BuildIsolation::from_args(
no_build_isolation_package, no_build_isolation,
no_build_isolation_package.into_iter().flatten().collect(),
),
extra_build_dependencies, extra_build_dependencies,
extra_build_variables, extra_build_variables,
exclude_newer, exclude_newer,
@ -1897,8 +1896,10 @@ impl From<ResolverInstallerSchema> for ResolverOptions {
no_build_package: value.no_build_package, no_build_package: value.no_build_package,
no_binary: value.no_binary, no_binary: value.no_binary,
no_binary_package: value.no_binary_package, no_binary_package: value.no_binary_package,
no_build_isolation: value.no_build_isolation, build_isolation: BuildIsolation::from_args(
no_build_isolation_package: value.no_build_isolation_package, value.no_build_isolation,
value.no_build_isolation_package.unwrap_or_default(),
),
extra_build_dependencies: value.extra_build_dependencies, extra_build_dependencies: value.extra_build_dependencies,
extra_build_variables: value.extra_build_variables, extra_build_variables: value.extra_build_variables,
no_sources: value.no_sources, no_sources: value.no_sources,
@ -1929,13 +1930,18 @@ impl From<ResolverInstallerSchema> for InstallerOptions {
.global, .global,
link_mode: value.link_mode, link_mode: value.link_mode,
compile_bytecode: value.compile_bytecode, compile_bytecode: value.compile_bytecode,
reinstall: value.reinstall, reinstall: Reinstall::from_args(
reinstall_package: value.reinstall_package, value.reinstall,
value.reinstall_package.unwrap_or_default(),
),
build_isolation: BuildIsolation::from_args(
value.no_build_isolation,
value.no_build_isolation_package.unwrap_or_default(),
),
no_build: value.no_build, no_build: value.no_build,
no_build_package: value.no_build_package, no_build_package: value.no_build_package,
no_binary: value.no_binary, no_binary: value.no_binary,
no_binary_package: value.no_binary_package, no_binary_package: value.no_binary_package,
no_build_isolation: value.no_build_isolation,
no_sources: value.no_sources, no_sources: value.no_sources,
} }
} }
@ -1964,8 +1970,7 @@ pub struct ToolOptions {
pub dependency_metadata: Option<Vec<StaticMetadata>>, pub dependency_metadata: Option<Vec<StaticMetadata>>,
pub config_settings: Option<ConfigSettings>, pub config_settings: Option<ConfigSettings>,
pub config_settings_package: Option<PackageConfigSettings>, pub config_settings_package: Option<PackageConfigSettings>,
pub no_build_isolation: Option<bool>, pub build_isolation: Option<BuildIsolation>,
pub no_build_isolation_package: Option<Vec<PackageName>>,
pub extra_build_dependencies: Option<ExtraBuildDependencies>, pub extra_build_dependencies: Option<ExtraBuildDependencies>,
pub extra_build_variables: Option<ExtraBuildVariables>, pub extra_build_variables: Option<ExtraBuildVariables>,
pub exclude_newer: Option<ExcludeNewerTimestamp>, pub exclude_newer: Option<ExcludeNewerTimestamp>,
@ -1995,8 +2000,7 @@ impl From<ResolverInstallerOptions> for ToolOptions {
dependency_metadata: value.dependency_metadata, dependency_metadata: value.dependency_metadata,
config_settings: value.config_settings, config_settings: value.config_settings,
config_settings_package: value.config_settings_package, config_settings_package: value.config_settings_package,
no_build_isolation: value.no_build_isolation, build_isolation: value.build_isolation,
no_build_isolation_package: value.no_build_isolation_package,
extra_build_dependencies: value.extra_build_dependencies, extra_build_dependencies: value.extra_build_dependencies,
extra_build_variables: value.extra_build_variables, extra_build_variables: value.extra_build_variables,
exclude_newer: value.exclude_newer, exclude_newer: value.exclude_newer,
@ -2028,8 +2032,7 @@ impl From<ToolOptions> for ResolverInstallerOptions {
dependency_metadata: value.dependency_metadata, dependency_metadata: value.dependency_metadata,
config_settings: value.config_settings, config_settings: value.config_settings,
config_settings_package: value.config_settings_package, config_settings_package: value.config_settings_package,
no_build_isolation: value.no_build_isolation, build_isolation: value.build_isolation,
no_build_isolation_package: value.no_build_isolation_package,
extra_build_dependencies: value.extra_build_dependencies, extra_build_dependencies: value.extra_build_dependencies,
extra_build_variables: value.extra_build_variables, extra_build_variables: value.extra_build_variables,
exclude_newer: value.exclude_newer, exclude_newer: value.exclude_newer,

View File

@ -14,8 +14,9 @@ use uv_build_backend::check_direct_build;
use uv_cache::{Cache, CacheBucket}; use uv_cache::{Cache, CacheBucket};
use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{
BuildKind, BuildOptions, BuildOutput, Concurrency, Constraints, DependencyGroupsWithDefaults, BuildIsolation, BuildKind, BuildOptions, BuildOutput, Concurrency, Constraints,
HashCheckingMode, IndexStrategy, KeyringProviderType, Preview, SourceStrategy, DependencyGroupsWithDefaults, HashCheckingMode, IndexStrategy, KeyringProviderType, Preview,
SourceStrategy,
}; };
use uv_dispatch::{BuildDispatch, SharedState}; use uv_dispatch::{BuildDispatch, SharedState};
use uv_distribution::LoweredExtraBuildDependencies; use uv_distribution::LoweredExtraBuildDependencies;
@ -38,7 +39,7 @@ use uv_python::{
use uv_requirements::RequirementsSource; use uv_requirements::RequirementsSource;
use uv_resolver::{ExcludeNewer, FlatIndex}; use uv_resolver::{ExcludeNewer, FlatIndex};
use uv_settings::PythonInstallMirrors; use uv_settings::PythonInstallMirrors;
use uv_types::{AnyErrorBuild, BuildContext, BuildIsolation, BuildStack, HashStrategy}; use uv_types::{AnyErrorBuild, BuildContext, BuildStack, HashStrategy};
use uv_workspace::pyproject::ExtraBuildDependencies; use uv_workspace::pyproject::ExtraBuildDependencies;
use uv_workspace::{DiscoveryOptions, Workspace, WorkspaceCache, WorkspaceError}; use uv_workspace::{DiscoveryOptions, Workspace, WorkspaceCache, WorkspaceError};
@ -200,8 +201,7 @@ async fn build_impl(
dependency_metadata, dependency_metadata,
config_setting, config_setting,
config_settings_package, config_settings_package,
no_build_isolation, build_isolation,
no_build_isolation_package,
extra_build_dependencies, extra_build_dependencies,
extra_build_variables, extra_build_variables,
exclude_newer, exclude_newer,
@ -348,8 +348,7 @@ async fn build_impl(
build_logs, build_logs,
force_pep517, force_pep517,
build_constraints, build_constraints,
*no_build_isolation, build_isolation,
no_build_isolation_package,
extra_build_dependencies, extra_build_dependencies,
extra_build_variables, extra_build_variables,
*index_strategy, *index_strategy,
@ -450,8 +449,7 @@ async fn build_package(
build_logs: bool, build_logs: bool,
force_pep517: bool, force_pep517: bool,
build_constraints: &[RequirementsSource], build_constraints: &[RequirementsSource],
no_build_isolation: bool, build_isolation: &BuildIsolation,
no_build_isolation_package: &[PackageName],
extra_build_dependencies: &ExtraBuildDependencies, extra_build_dependencies: &ExtraBuildDependencies,
extra_build_variables: &ExtraBuildVariables, extra_build_variables: &ExtraBuildVariables,
index_strategy: IndexStrategy, index_strategy: IndexStrategy,
@ -566,14 +564,16 @@ async fn build_package(
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let environment; let environment;
let build_isolation = if no_build_isolation { let types_build_isolation = match build_isolation {
environment = PythonEnvironment::from_interpreter(interpreter.clone()); BuildIsolation::Isolate => uv_types::BuildIsolation::Isolated,
BuildIsolation::Shared(&environment) BuildIsolation::Shared => {
} else if no_build_isolation_package.is_empty() { environment = PythonEnvironment::from_interpreter(interpreter.clone());
BuildIsolation::Isolated uv_types::BuildIsolation::Shared(&environment)
} else { }
environment = PythonEnvironment::from_interpreter(interpreter.clone()); BuildIsolation::SharedPackage(packages) => {
BuildIsolation::SharedPackage(&environment, no_build_isolation_package) environment = PythonEnvironment::from_interpreter(interpreter.clone());
uv_types::BuildIsolation::SharedPackage(&environment, packages)
}
}; };
// Resolve the flat indexes from `--find-links`. // Resolve the flat indexes from `--find-links`.
@ -606,7 +606,7 @@ async fn build_package(
index_strategy, index_strategy,
config_setting, config_setting,
config_settings_package, config_settings_package,
build_isolation, types_build_isolation,
&extra_build_requires, &extra_build_requires,
extra_build_variables, extra_build_variables,
link_mode, link_mode,

View File

@ -13,8 +13,8 @@ use tracing::debug;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, Constraints, ExportFormat, ExtrasSpecification, IndexStrategy, BuildIsolation, BuildOptions, Concurrency, Constraints, ExportFormat, ExtrasSpecification,
NoBinary, NoBuild, Preview, PreviewFeatures, Reinstall, SourceStrategy, Upgrade, IndexStrategy, NoBinary, NoBuild, Preview, PreviewFeatures, Reinstall, SourceStrategy, Upgrade,
}; };
use uv_configuration::{KeyringProviderType, TargetTriple}; use uv_configuration::{KeyringProviderType, TargetTriple};
use uv_dispatch::{BuildDispatch, SharedState}; use uv_dispatch::{BuildDispatch, SharedState};
@ -45,7 +45,7 @@ use uv_resolver::{
}; };
use uv_static::EnvVars; use uv_static::EnvVars;
use uv_torch::{TorchMode, TorchStrategy}; use uv_torch::{TorchMode, TorchStrategy};
use uv_types::{BuildIsolation, EmptyInstalledPackages, HashStrategy}; use uv_types::{EmptyInstalledPackages, HashStrategy};
use uv_warnings::{warn_user, warn_user_once}; use uv_warnings::{warn_user, warn_user_once};
use uv_workspace::WorkspaceCache; use uv_workspace::WorkspaceCache;
use uv_workspace::pyproject::ExtraBuildDependencies; use uv_workspace::pyproject::ExtraBuildDependencies;
@ -96,8 +96,7 @@ pub(crate) async fn pip_compile(
network_settings: &NetworkSettings, network_settings: &NetworkSettings,
config_settings: ConfigSettings, config_settings: ConfigSettings,
config_settings_package: PackageConfigSettings, config_settings_package: PackageConfigSettings,
no_build_isolation: bool, build_isolation: BuildIsolation,
no_build_isolation_package: Vec<PackageName>,
extra_build_dependencies: &ExtraBuildDependencies, extra_build_dependencies: &ExtraBuildDependencies,
extra_build_variables: &ExtraBuildVariables, extra_build_variables: &ExtraBuildVariables,
build_options: BuildOptions, build_options: BuildOptions,
@ -466,14 +465,16 @@ pub(crate) async fn pip_compile(
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let environment; let environment;
let build_isolation = if no_build_isolation { let types_build_isolation = match build_isolation {
environment = PythonEnvironment::from_interpreter(interpreter.clone()); BuildIsolation::Isolate => uv_types::BuildIsolation::Isolated,
BuildIsolation::Shared(&environment) BuildIsolation::Shared => {
} else if no_build_isolation_package.is_empty() { environment = PythonEnvironment::from_interpreter(interpreter.clone());
BuildIsolation::Isolated uv_types::BuildIsolation::Shared(&environment)
} else { }
environment = PythonEnvironment::from_interpreter(interpreter.clone()); BuildIsolation::SharedPackage(ref packages) => {
BuildIsolation::SharedPackage(&environment, &no_build_isolation_package) environment = PythonEnvironment::from_interpreter(interpreter.clone());
uv_types::BuildIsolation::SharedPackage(&environment, packages)
}
}; };
// Don't enforce hashes in `pip compile`. // Don't enforce hashes in `pip compile`.
@ -502,7 +503,7 @@ pub(crate) async fn pip_compile(
index_strategy, index_strategy,
&config_settings, &config_settings,
&config_settings_package, &config_settings_package,
build_isolation, types_build_isolation,
&extra_build_requires, &extra_build_requires,
extra_build_variables, extra_build_variables,
link_mode, link_mode,

View File

@ -9,8 +9,8 @@ use tracing::{Level, debug, enabled, warn};
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, Constraints, DryRun, ExtrasSpecification, HashCheckingMode, BuildIsolation, BuildOptions, Concurrency, Constraints, DryRun, ExtrasSpecification,
IndexStrategy, Preview, PreviewFeatures, Reinstall, SourceStrategy, Upgrade, HashCheckingMode, IndexStrategy, Preview, PreviewFeatures, Reinstall, SourceStrategy, Upgrade,
}; };
use uv_configuration::{KeyringProviderType, TargetTriple}; use uv_configuration::{KeyringProviderType, TargetTriple};
use uv_dispatch::{BuildDispatch, SharedState}; use uv_dispatch::{BuildDispatch, SharedState};
@ -24,7 +24,6 @@ use uv_fs::Simplified;
use uv_install_wheel::LinkMode; use uv_install_wheel::LinkMode;
use uv_installer::{SatisfiesResult, SitePackages}; use uv_installer::{SatisfiesResult, SitePackages};
use uv_normalize::{DefaultExtras, DefaultGroups}; use uv_normalize::{DefaultExtras, DefaultGroups};
use uv_pep508::PackageName;
use uv_pypi_types::Conflicts; use uv_pypi_types::Conflicts;
use uv_python::{ use uv_python::{
EnvironmentPreference, Prefix, PythonEnvironment, PythonInstallation, PythonPreference, EnvironmentPreference, Prefix, PythonEnvironment, PythonInstallation, PythonPreference,
@ -36,7 +35,7 @@ use uv_resolver::{
PythonRequirement, ResolutionMode, ResolverEnvironment, PythonRequirement, ResolutionMode, ResolverEnvironment,
}; };
use uv_torch::{TorchMode, TorchStrategy}; use uv_torch::{TorchMode, TorchStrategy};
use uv_types::{BuildIsolation, HashStrategy}; use uv_types::HashStrategy;
use uv_warnings::{warn_user, warn_user_once}; use uv_warnings::{warn_user, warn_user_once};
use uv_workspace::WorkspaceCache; use uv_workspace::WorkspaceCache;
use uv_workspace::pyproject::ExtraBuildDependencies; use uv_workspace::pyproject::ExtraBuildDependencies;
@ -78,8 +77,7 @@ pub(crate) async fn pip_install(
installer_metadata: bool, installer_metadata: bool,
config_settings: &ConfigSettings, config_settings: &ConfigSettings,
config_settings_package: &PackageConfigSettings, config_settings_package: &PackageConfigSettings,
no_build_isolation: bool, build_isolation: BuildIsolation,
no_build_isolation_package: Vec<PackageName>,
extra_build_dependencies: &ExtraBuildDependencies, extra_build_dependencies: &ExtraBuildDependencies,
extra_build_variables: &ExtraBuildVariables, extra_build_variables: &ExtraBuildVariables,
build_options: BuildOptions, build_options: BuildOptions,
@ -409,12 +407,12 @@ pub(crate) async fn pip_install(
}; };
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let build_isolation = if no_build_isolation { let types_build_isolation = match build_isolation {
BuildIsolation::Shared(&environment) BuildIsolation::Isolate => uv_types::BuildIsolation::Isolated,
} else if no_build_isolation_package.is_empty() { BuildIsolation::Shared => uv_types::BuildIsolation::Shared(&environment),
BuildIsolation::Isolated BuildIsolation::SharedPackage(ref packages) => {
} else { uv_types::BuildIsolation::SharedPackage(&environment, packages)
BuildIsolation::SharedPackage(&environment, &no_build_isolation_package) }
}; };
// Enforce (but never require) the build constraints, if `--require-hashes` or `--verify-hashes` // Enforce (but never require) the build constraints, if `--require-hashes` or `--verify-hashes`
@ -453,7 +451,7 @@ pub(crate) async fn pip_install(
index_strategy, index_strategy,
config_settings, config_settings,
config_settings_package, config_settings_package,
build_isolation, types_build_isolation,
&extra_build_requires, &extra_build_requires,
extra_build_variables, extra_build_variables,
link_mode, link_mode,
@ -586,7 +584,7 @@ pub(crate) async fn pip_install(
index_strategy, index_strategy,
config_settings, config_settings,
config_settings_package, config_settings_package,
build_isolation, types_build_isolation,
&extra_build_requires, &extra_build_requires,
extra_build_variables, extra_build_variables,
link_mode, link_mode,

View File

@ -8,8 +8,8 @@ use tracing::{debug, warn};
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, Constraints, DryRun, ExtrasSpecification, HashCheckingMode, BuildIsolation, BuildOptions, Concurrency, Constraints, DryRun, ExtrasSpecification,
IndexStrategy, Preview, PreviewFeatures, Reinstall, SourceStrategy, Upgrade, HashCheckingMode, IndexStrategy, Preview, PreviewFeatures, Reinstall, SourceStrategy, Upgrade,
}; };
use uv_configuration::{KeyringProviderType, TargetTriple}; use uv_configuration::{KeyringProviderType, TargetTriple};
use uv_dispatch::{BuildDispatch, SharedState}; use uv_dispatch::{BuildDispatch, SharedState};
@ -22,7 +22,6 @@ use uv_fs::Simplified;
use uv_install_wheel::LinkMode; use uv_install_wheel::LinkMode;
use uv_installer::SitePackages; use uv_installer::SitePackages;
use uv_normalize::{DefaultExtras, DefaultGroups}; use uv_normalize::{DefaultExtras, DefaultGroups};
use uv_pep508::PackageName;
use uv_pypi_types::Conflicts; use uv_pypi_types::Conflicts;
use uv_python::{ use uv_python::{
EnvironmentPreference, Prefix, PythonEnvironment, PythonInstallation, PythonPreference, EnvironmentPreference, Prefix, PythonEnvironment, PythonInstallation, PythonPreference,
@ -34,7 +33,7 @@ use uv_resolver::{
PythonRequirement, ResolutionMode, ResolverEnvironment, PythonRequirement, ResolutionMode, ResolverEnvironment,
}; };
use uv_torch::{TorchMode, TorchStrategy}; use uv_torch::{TorchMode, TorchStrategy};
use uv_types::{BuildIsolation, HashStrategy}; use uv_types::HashStrategy;
use uv_warnings::{warn_user, warn_user_once}; use uv_warnings::{warn_user, warn_user_once};
use uv_workspace::WorkspaceCache; use uv_workspace::WorkspaceCache;
use uv_workspace::pyproject::ExtraBuildDependencies; use uv_workspace::pyproject::ExtraBuildDependencies;
@ -69,8 +68,7 @@ pub(crate) async fn pip_sync(
installer_metadata: bool, installer_metadata: bool,
config_settings: &ConfigSettings, config_settings: &ConfigSettings,
config_settings_package: &PackageConfigSettings, config_settings_package: &PackageConfigSettings,
no_build_isolation: bool, build_isolation: BuildIsolation,
no_build_isolation_package: Vec<PackageName>,
extra_build_dependencies: &ExtraBuildDependencies, extra_build_dependencies: &ExtraBuildDependencies,
extra_build_variables: &ExtraBuildVariables, extra_build_variables: &ExtraBuildVariables,
build_options: BuildOptions, build_options: BuildOptions,
@ -332,12 +330,12 @@ pub(crate) async fn pip_sync(
}; };
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let build_isolation = if no_build_isolation { let types_build_isolation = match build_isolation {
BuildIsolation::Shared(&environment) BuildIsolation::Isolate => uv_types::BuildIsolation::Isolated,
} else if no_build_isolation_package.is_empty() { BuildIsolation::Shared => uv_types::BuildIsolation::Shared(&environment),
BuildIsolation::Isolated BuildIsolation::SharedPackage(ref packages) => {
} else { uv_types::BuildIsolation::SharedPackage(&environment, packages)
BuildIsolation::SharedPackage(&environment, &no_build_isolation_package) }
}; };
// Enforce (but never require) the build constraints, if `--require-hashes` or `--verify-hashes` // Enforce (but never require) the build constraints, if `--require-hashes` or `--verify-hashes`
@ -381,7 +379,7 @@ pub(crate) async fn pip_sync(
index_strategy, index_strategy,
config_settings, config_settings,
config_settings_package, config_settings_package,
build_isolation, types_build_isolation,
&extra_build_requires, &extra_build_requires,
extra_build_variables, extra_build_variables,
link_mode, link_mode,
@ -516,7 +514,7 @@ pub(crate) async fn pip_sync(
index_strategy, index_strategy,
config_settings, config_settings,
config_settings_package, config_settings_package,
build_isolation, types_build_isolation,
&extra_build_requires, &extra_build_requires,
extra_build_variables, extra_build_variables,
link_mode, link_mode,

View File

@ -409,17 +409,16 @@ pub(crate) async fn add(
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let environment; let environment;
let build_isolation = if settings.resolver.no_build_isolation { let build_isolation = match &settings.resolver.build_isolation {
environment = PythonEnvironment::from_interpreter(target.interpreter().clone()); uv_configuration::BuildIsolation::Isolate => BuildIsolation::Isolated,
BuildIsolation::Shared(&environment) uv_configuration::BuildIsolation::Shared => {
} else if settings.resolver.no_build_isolation_package.is_empty() { environment = PythonEnvironment::from_interpreter(target.interpreter().clone());
BuildIsolation::Isolated BuildIsolation::Shared(&environment)
} else { }
environment = PythonEnvironment::from_interpreter(target.interpreter().clone()); uv_configuration::BuildIsolation::SharedPackage(packages) => {
BuildIsolation::SharedPackage( environment = PythonEnvironment::from_interpreter(target.interpreter().clone());
&environment, BuildIsolation::SharedPackage(&environment, packages)
&settings.resolver.no_build_isolation_package, }
)
}; };
// Resolve the flat indexes from `--find-links`. // Resolve the flat indexes from `--find-links`.

View File

@ -433,8 +433,7 @@ async fn do_lock(
dependency_metadata, dependency_metadata,
config_setting, config_setting,
config_settings_package, config_settings_package,
no_build_isolation, build_isolation,
no_build_isolation_package,
extra_build_dependencies, extra_build_dependencies,
extra_build_variables, extra_build_variables,
exclude_newer, exclude_newer,
@ -651,14 +650,16 @@ async fn do_lock(
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let environment; let environment;
let build_isolation = if *no_build_isolation { let build_isolation = match build_isolation {
environment = PythonEnvironment::from_interpreter(interpreter.clone()); uv_configuration::BuildIsolation::Isolate => BuildIsolation::Isolated,
BuildIsolation::Shared(&environment) uv_configuration::BuildIsolation::Shared => {
} else if no_build_isolation_package.is_empty() { environment = PythonEnvironment::from_interpreter(interpreter.clone());
BuildIsolation::Isolated BuildIsolation::Shared(&environment)
} else { }
environment = PythonEnvironment::from_interpreter(interpreter.clone()); uv_configuration::BuildIsolation::SharedPackage(packages) => {
BuildIsolation::SharedPackage(&environment, no_build_isolation_package) environment = PythonEnvironment::from_interpreter(interpreter.clone());
BuildIsolation::SharedPackage(&environment, packages)
}
}; };
let options = OptionsBuilder::new() let options = OptionsBuilder::new()

View File

@ -1707,8 +1707,7 @@ pub(crate) async fn resolve_names(
index_strategy, index_strategy,
keyring_provider, keyring_provider,
link_mode, link_mode,
no_build_isolation, build_isolation,
no_build_isolation_package,
extra_build_dependencies, extra_build_dependencies,
extra_build_variables, extra_build_variables,
prerelease: _, prerelease: _,
@ -1741,14 +1740,16 @@ pub(crate) async fn resolve_names(
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let environment; let environment;
let build_isolation = if *no_build_isolation { let build_isolation = match build_isolation {
environment = PythonEnvironment::from_interpreter(interpreter.clone()); uv_configuration::BuildIsolation::Isolate => BuildIsolation::Isolated,
BuildIsolation::Shared(&environment) uv_configuration::BuildIsolation::Shared => {
} else if no_build_isolation_package.is_empty() { environment = PythonEnvironment::from_interpreter(interpreter.clone());
BuildIsolation::Isolated BuildIsolation::Shared(&environment)
} else { }
environment = PythonEnvironment::from_interpreter(interpreter.clone()); uv_configuration::BuildIsolation::SharedPackage(packages) => {
BuildIsolation::SharedPackage(&environment, no_build_isolation_package) environment = PythonEnvironment::from_interpreter(interpreter.clone());
BuildIsolation::SharedPackage(&environment, packages)
}
}; };
// TODO(charlie): These are all default values. We should consider whether we want to make them // TODO(charlie): These are all default values. We should consider whether we want to make them
@ -1869,8 +1870,7 @@ pub(crate) async fn resolve_environment(
dependency_metadata, dependency_metadata,
config_setting, config_setting,
config_settings_package, config_settings_package,
no_build_isolation, build_isolation,
no_build_isolation_package,
extra_build_dependencies, extra_build_dependencies,
extra_build_variables, extra_build_variables,
exclude_newer, exclude_newer,
@ -1915,14 +1915,16 @@ pub(crate) async fn resolve_environment(
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let environment; let environment;
let build_isolation = if *no_build_isolation { let build_isolation = match build_isolation {
environment = PythonEnvironment::from_interpreter(interpreter.clone()); uv_configuration::BuildIsolation::Isolate => BuildIsolation::Isolated,
BuildIsolation::Shared(&environment) uv_configuration::BuildIsolation::Shared => {
} else if no_build_isolation_package.is_empty() { environment = PythonEnvironment::from_interpreter(interpreter.clone());
BuildIsolation::Isolated BuildIsolation::Shared(&environment)
} else { }
environment = PythonEnvironment::from_interpreter(interpreter.clone()); uv_configuration::BuildIsolation::SharedPackage(packages) => {
BuildIsolation::SharedPackage(&environment, no_build_isolation_package) environment = PythonEnvironment::from_interpreter(interpreter.clone());
BuildIsolation::SharedPackage(&environment, packages)
}
}; };
let options = OptionsBuilder::new() let options = OptionsBuilder::new()
@ -2061,8 +2063,7 @@ pub(crate) async fn sync_environment(
dependency_metadata, dependency_metadata,
config_setting, config_setting,
config_settings_package, config_settings_package,
no_build_isolation, build_isolation,
no_build_isolation_package,
extra_build_dependencies, extra_build_dependencies,
extra_build_variables, extra_build_variables,
exclude_newer, exclude_newer,
@ -2098,12 +2099,12 @@ pub(crate) async fn sync_environment(
.build(); .build();
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let build_isolation = if no_build_isolation { let build_isolation = match build_isolation {
BuildIsolation::Shared(&venv) uv_configuration::BuildIsolation::Isolate => BuildIsolation::Isolated,
} else if no_build_isolation_package.is_empty() { uv_configuration::BuildIsolation::Shared => BuildIsolation::Shared(&venv),
BuildIsolation::Isolated uv_configuration::BuildIsolation::SharedPackage(packages) => {
} else { BuildIsolation::SharedPackage(&venv, packages)
BuildIsolation::SharedPackage(&venv, no_build_isolation_package) }
}; };
// TODO(charlie): These are all default values. We should consider whether we want to make them // TODO(charlie): These are all default values. We should consider whether we want to make them
@ -2146,7 +2147,7 @@ pub(crate) async fn sync_environment(
link_mode, link_mode,
build_options, build_options,
&build_hasher, &build_hasher,
exclude_newer, exclude_newer.clone(),
sources, sources,
workspace_cache, workspace_cache,
concurrency, concurrency,
@ -2235,8 +2236,7 @@ pub(crate) async fn update_environment(
index_strategy, index_strategy,
keyring_provider, keyring_provider,
link_mode, link_mode,
no_build_isolation, build_isolation,
no_build_isolation_package,
extra_build_dependencies: _, extra_build_dependencies: _,
extra_build_variables, extra_build_variables,
prerelease, prerelease,
@ -2325,12 +2325,12 @@ pub(crate) async fn update_environment(
.build(); .build();
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let build_isolation = if *no_build_isolation { let build_isolation = match build_isolation {
BuildIsolation::Shared(&venv) uv_configuration::BuildIsolation::Isolate => BuildIsolation::Isolated,
} else if no_build_isolation_package.is_empty() { uv_configuration::BuildIsolation::Shared => BuildIsolation::Shared(&venv),
BuildIsolation::Isolated uv_configuration::BuildIsolation::SharedPackage(packages) => {
} else { BuildIsolation::SharedPackage(&venv, packages)
BuildIsolation::SharedPackage(&venv, no_build_isolation_package) }
}; };
let options = OptionsBuilder::new() let options = OptionsBuilder::new()

View File

@ -583,8 +583,7 @@ pub(super) async fn do_sync(
dependency_metadata, dependency_metadata,
config_setting, config_setting,
config_settings_package, config_settings_package,
no_build_isolation, build_isolation,
no_build_isolation_package,
extra_build_dependencies, extra_build_dependencies,
extra_build_variables, extra_build_variables,
exclude_newer, exclude_newer,
@ -629,8 +628,7 @@ pub(super) async fn do_sync(
index_strategy, index_strategy,
keyring_provider, keyring_provider,
link_mode, link_mode,
no_build_isolation, build_isolation: build_isolation.clone(),
no_build_isolation_package: no_build_isolation_package.to_vec(),
extra_build_dependencies: extra_build_dependencies.clone(), extra_build_dependencies: extra_build_dependencies.clone(),
extra_build_variables: extra_build_variables.clone(), extra_build_variables: extra_build_variables.clone(),
prerelease: PrereleaseMode::default(), prerelease: PrereleaseMode::default(),
@ -733,12 +731,12 @@ pub(super) async fn do_sync(
.build(); .build();
// Determine whether to enable build isolation. // Determine whether to enable build isolation.
let build_isolation = if no_build_isolation { let build_isolation = match build_isolation {
BuildIsolation::Shared(venv) uv_configuration::BuildIsolation::Isolate => BuildIsolation::Isolated,
} else if no_build_isolation_package.is_empty() { uv_configuration::BuildIsolation::Shared => BuildIsolation::Shared(venv),
BuildIsolation::Isolated uv_configuration::BuildIsolation::SharedPackage(packages) => {
} else { BuildIsolation::SharedPackage(venv, packages)
BuildIsolation::SharedPackage(venv, no_build_isolation_package) }
}; };
// Read the build constraints from the lockfile. // Read the build constraints from the lockfile.

View File

@ -201,8 +201,7 @@ pub(crate) async fn tree(
dependency_metadata: _, dependency_metadata: _,
config_setting: _, config_setting: _,
config_settings_package: _, config_settings_package: _,
no_build_isolation: _, build_isolation: _,
no_build_isolation_package: _,
extra_build_dependencies: _, extra_build_dependencies: _,
extra_build_variables: _, extra_build_variables: _,
exclude_newer: _, exclude_newer: _,

View File

@ -514,8 +514,7 @@ async fn run(mut cli: Cli) -> Result<ExitStatus> {
&globals.network_settings, &globals.network_settings,
args.settings.config_setting, args.settings.config_setting,
args.settings.config_settings_package, args.settings.config_settings_package,
args.settings.no_build_isolation, args.settings.build_isolation.clone(),
args.settings.no_build_isolation_package,
&args.settings.extra_build_dependencies, &args.settings.extra_build_dependencies,
&args.settings.extra_build_variables, &args.settings.extra_build_variables,
args.settings.build_options, args.settings.build_options,
@ -593,8 +592,7 @@ async fn run(mut cli: Cli) -> Result<ExitStatus> {
globals.installer_metadata, globals.installer_metadata,
&args.settings.config_setting, &args.settings.config_setting,
&args.settings.config_settings_package, &args.settings.config_settings_package,
args.settings.no_build_isolation, args.settings.build_isolation.clone(),
args.settings.no_build_isolation_package,
&args.settings.extra_build_dependencies, &args.settings.extra_build_dependencies,
&args.settings.extra_build_variables, &args.settings.extra_build_variables,
args.settings.build_options, args.settings.build_options,
@ -737,8 +735,7 @@ async fn run(mut cli: Cli) -> Result<ExitStatus> {
globals.installer_metadata, globals.installer_metadata,
&args.settings.config_setting, &args.settings.config_setting,
&args.settings.config_settings_package, &args.settings.config_settings_package,
args.settings.no_build_isolation, args.settings.build_isolation.clone(),
args.settings.no_build_isolation_package,
&args.settings.extra_build_dependencies, &args.settings.extra_build_dependencies,
&args.settings.extra_build_variables, &args.settings.extra_build_variables,
args.settings.build_options, args.settings.build_options,

View File

@ -21,10 +21,11 @@ use uv_cli::{
}; };
use uv_client::Connectivity; use uv_client::Connectivity;
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, DependencyGroups, DryRun, EditableMode, ExportFormat, BuildIsolation, BuildOptions, Concurrency, DependencyGroups, DryRun, EditableMode,
ExtrasSpecification, HashCheckingMode, IndexStrategy, InstallOptions, KeyringProviderType, ExportFormat, ExtrasSpecification, HashCheckingMode, IndexStrategy, InstallOptions,
NoBinary, NoBuild, Preview, ProjectBuildBackend, Reinstall, RequiredVersion, SourceStrategy, KeyringProviderType, NoBinary, NoBuild, Preview, ProjectBuildBackend, Reinstall,
TargetTriple, TrustedHost, TrustedPublishing, Upgrade, VersionControlSystem, RequiredVersion, SourceStrategy, TargetTriple, TrustedHost, TrustedPublishing, Upgrade,
VersionControlSystem,
}; };
use uv_distribution_types::{ use uv_distribution_types::{
ConfigSettings, DependencyMetadata, ExtraBuildVariables, Index, IndexLocations, IndexUrl, ConfigSettings, DependencyMetadata, ExtraBuildVariables, Index, IndexLocations, IndexUrl,
@ -2761,11 +2762,10 @@ pub(crate) struct InstallerSettingsRef<'a> {
pub(crate) dependency_metadata: &'a DependencyMetadata, pub(crate) dependency_metadata: &'a DependencyMetadata,
pub(crate) config_setting: &'a ConfigSettings, pub(crate) config_setting: &'a ConfigSettings,
pub(crate) config_settings_package: &'a PackageConfigSettings, pub(crate) config_settings_package: &'a PackageConfigSettings,
pub(crate) no_build_isolation: bool, pub(crate) build_isolation: &'a BuildIsolation,
pub(crate) no_build_isolation_package: &'a [PackageName],
pub(crate) extra_build_dependencies: &'a ExtraBuildDependencies, pub(crate) extra_build_dependencies: &'a ExtraBuildDependencies,
pub(crate) extra_build_variables: &'a ExtraBuildVariables, pub(crate) extra_build_variables: &'a ExtraBuildVariables,
pub(crate) exclude_newer: ExcludeNewer, pub(crate) exclude_newer: &'a ExcludeNewer,
pub(crate) link_mode: LinkMode, pub(crate) link_mode: LinkMode,
pub(crate) compile_bytecode: bool, pub(crate) compile_bytecode: bool,
pub(crate) reinstall: &'a Reinstall, pub(crate) reinstall: &'a Reinstall,
@ -2789,8 +2789,7 @@ pub(crate) struct ResolverSettings {
pub(crate) index_strategy: IndexStrategy, pub(crate) index_strategy: IndexStrategy,
pub(crate) keyring_provider: KeyringProviderType, pub(crate) keyring_provider: KeyringProviderType,
pub(crate) link_mode: LinkMode, pub(crate) link_mode: LinkMode,
pub(crate) no_build_isolation: bool, pub(crate) build_isolation: BuildIsolation,
pub(crate) no_build_isolation_package: Vec<PackageName>,
pub(crate) extra_build_dependencies: ExtraBuildDependencies, pub(crate) extra_build_dependencies: ExtraBuildDependencies,
pub(crate) extra_build_variables: ExtraBuildVariables, pub(crate) extra_build_variables: ExtraBuildVariables,
pub(crate) prerelease: PrereleaseMode, pub(crate) prerelease: PrereleaseMode,
@ -2845,8 +2844,7 @@ impl From<ResolverOptions> for ResolverSettings {
keyring_provider: value.keyring_provider.unwrap_or_default(), keyring_provider: value.keyring_provider.unwrap_or_default(),
config_setting: value.config_settings.unwrap_or_default(), config_setting: value.config_settings.unwrap_or_default(),
config_settings_package: value.config_settings_package.unwrap_or_default(), config_settings_package: value.config_settings_package.unwrap_or_default(),
no_build_isolation: value.no_build_isolation.unwrap_or_default(), build_isolation: value.build_isolation.unwrap_or_default(),
no_build_isolation_package: value.no_build_isolation_package.unwrap_or_default(),
extra_build_dependencies: value.extra_build_dependencies.unwrap_or_default(), extra_build_dependencies: value.extra_build_dependencies.unwrap_or_default(),
extra_build_variables: value.extra_build_variables.unwrap_or_default(), extra_build_variables: value.extra_build_variables.unwrap_or_default(),
exclude_newer: value.exclude_newer, exclude_newer: value.exclude_newer,
@ -2936,8 +2934,7 @@ impl From<ResolverInstallerOptions> for ResolverInstallerSettings {
index_strategy: value.index_strategy.unwrap_or_default(), index_strategy: value.index_strategy.unwrap_or_default(),
keyring_provider: value.keyring_provider.unwrap_or_default(), keyring_provider: value.keyring_provider.unwrap_or_default(),
link_mode: value.link_mode.unwrap_or_default(), link_mode: value.link_mode.unwrap_or_default(),
no_build_isolation: value.no_build_isolation.unwrap_or_default(), build_isolation: value.build_isolation.unwrap_or_default(),
no_build_isolation_package: value.no_build_isolation_package.unwrap_or_default(),
extra_build_dependencies: value.extra_build_dependencies.unwrap_or_default(), extra_build_dependencies: value.extra_build_dependencies.unwrap_or_default(),
extra_build_variables: value.extra_build_variables.unwrap_or_default(), extra_build_variables: value.extra_build_variables.unwrap_or_default(),
prerelease: value.prerelease.unwrap_or_default(), prerelease: value.prerelease.unwrap_or_default(),
@ -2969,8 +2966,7 @@ pub(crate) struct PipSettings {
pub(crate) index_strategy: IndexStrategy, pub(crate) index_strategy: IndexStrategy,
pub(crate) keyring_provider: KeyringProviderType, pub(crate) keyring_provider: KeyringProviderType,
pub(crate) torch_backend: Option<TorchMode>, pub(crate) torch_backend: Option<TorchMode>,
pub(crate) no_build_isolation: bool, pub(crate) build_isolation: BuildIsolation,
pub(crate) no_build_isolation_package: Vec<PackageName>,
pub(crate) extra_build_dependencies: ExtraBuildDependencies, pub(crate) extra_build_dependencies: ExtraBuildDependencies,
pub(crate) extra_build_variables: ExtraBuildVariables, pub(crate) extra_build_variables: ExtraBuildVariables,
pub(crate) build_options: BuildOptions, pub(crate) build_options: BuildOptions,
@ -3237,14 +3233,15 @@ impl PipSettings {
.allow_empty_requirements .allow_empty_requirements
.combine(allow_empty_requirements) .combine(allow_empty_requirements)
.unwrap_or_default(), .unwrap_or_default(),
no_build_isolation: args build_isolation: BuildIsolation::from_args(
.no_build_isolation args.no_build_isolation,
.combine(no_build_isolation) args.no_build_isolation_package.unwrap_or_default(),
.unwrap_or_default(), )
no_build_isolation_package: args .combine(BuildIsolation::from_args(
.no_build_isolation_package no_build_isolation,
.combine(no_build_isolation_package) no_build_isolation_package.unwrap_or_default(),
.unwrap_or_default(), ))
.unwrap_or_default(),
extra_build_dependencies: args extra_build_dependencies: args
.extra_build_dependencies .extra_build_dependencies
.combine(extra_build_dependencies) .combine(extra_build_dependencies)
@ -3369,11 +3366,10 @@ impl<'a> From<&'a ResolverInstallerSettings> for InstallerSettingsRef<'a> {
dependency_metadata: &settings.resolver.dependency_metadata, dependency_metadata: &settings.resolver.dependency_metadata,
config_setting: &settings.resolver.config_setting, config_setting: &settings.resolver.config_setting,
config_settings_package: &settings.resolver.config_settings_package, config_settings_package: &settings.resolver.config_settings_package,
no_build_isolation: settings.resolver.no_build_isolation, build_isolation: &settings.resolver.build_isolation,
no_build_isolation_package: &settings.resolver.no_build_isolation_package,
extra_build_dependencies: &settings.resolver.extra_build_dependencies, extra_build_dependencies: &settings.resolver.extra_build_dependencies,
extra_build_variables: &settings.resolver.extra_build_variables, extra_build_variables: &settings.resolver.extra_build_variables,
exclude_newer: settings.resolver.exclude_newer.clone(), exclude_newer: &settings.resolver.exclude_newer,
link_mode: settings.resolver.link_mode, link_mode: settings.resolver.link_mode,
compile_bytecode: settings.compile_bytecode, compile_bytecode: settings.compile_bytecode,
reinstall: &settings.reinstall, reinstall: &settings.reinstall,

View File

@ -184,8 +184,7 @@ fn resolve_uv_toml() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -384,8 +383,7 @@ fn resolve_uv_toml() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -585,8 +583,7 @@ fn resolve_uv_toml() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -818,8 +815,7 @@ fn resolve_pyproject_toml() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -986,8 +982,7 @@ fn resolve_pyproject_toml() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -1198,8 +1193,7 @@ fn resolve_pyproject_toml() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -1458,8 +1452,7 @@ fn resolve_index_url() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -1728,8 +1721,7 @@ fn resolve_index_url() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -1953,8 +1945,7 @@ fn resolve_find_links() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -2143,8 +2134,7 @@ fn resolve_top_level() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -2393,8 +2383,7 @@ fn resolve_top_level() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -2626,8 +2615,7 @@ fn resolve_top_level() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -2815,8 +2803,7 @@ fn resolve_user_configuration() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -2988,8 +2975,7 @@ fn resolve_user_configuration() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -3161,8 +3147,7 @@ fn resolve_user_configuration() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -3336,8 +3321,7 @@ fn resolve_user_configuration() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -3504,8 +3488,7 @@ fn resolve_tool() -> anyhow::Result<()> {
dependency_metadata: None, dependency_metadata: None,
config_settings: None, config_settings: None,
config_settings_package: None, config_settings_package: None,
no_build_isolation: None, build_isolation: None,
no_build_isolation_package: None,
extra_build_dependencies: None, extra_build_dependencies: None,
extra_build_variables: None, extra_build_variables: None,
exclude_newer: None, exclude_newer: None,
@ -3552,8 +3535,7 @@ fn resolve_tool() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -3716,8 +3698,7 @@ fn resolve_poetry_toml() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -3957,8 +3938,7 @@ fn resolve_both() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -4202,8 +4182,7 @@ fn resolve_both_special_fields() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -4526,8 +4505,7 @@ fn resolve_config_file() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -4792,8 +4770,7 @@ fn resolve_skip_empty() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -4968,8 +4945,7 @@ fn resolve_skip_empty() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -5163,8 +5139,7 @@ fn allow_insecure_host() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -5419,8 +5394,7 @@ fn index_priority() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -5654,8 +5628,7 @@ fn index_priority() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -5895,8 +5868,7 @@ fn index_priority() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -6131,8 +6103,7 @@ fn index_priority() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -6374,8 +6345,7 @@ fn index_priority() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -6610,8 +6580,7 @@ fn index_priority() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -6790,8 +6759,7 @@ fn verify_hashes() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -6956,8 +6924,7 @@ fn verify_hashes() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -7120,8 +7087,7 @@ fn verify_hashes() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -7286,8 +7252,7 @@ fn verify_hashes() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -7450,8 +7415,7 @@ fn verify_hashes() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -7615,8 +7579,7 @@ fn verify_hashes() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -7789,8 +7752,7 @@ fn preview_features() {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -7902,8 +7864,7 @@ fn preview_features() {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -8015,8 +7976,7 @@ fn preview_features() {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -8128,8 +8088,7 @@ fn preview_features() {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -8241,8 +8200,7 @@ fn preview_features() {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -8356,8 +8314,7 @@ fn preview_features() {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -8496,8 +8453,7 @@ fn upgrade_pip_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -8670,8 +8626,7 @@ fn upgrade_pip_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -8867,8 +8822,7 @@ fn upgrade_pip_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -9039,8 +8993,7 @@ fn upgrade_pip_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -9205,8 +9158,7 @@ fn upgrade_pip_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -9372,8 +9324,7 @@ fn upgrade_pip_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
torch_backend: None, torch_backend: None,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -9591,8 +9542,7 @@ fn upgrade_project_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -9709,8 +9659,7 @@ fn upgrade_project_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -9850,8 +9799,7 @@ fn upgrade_project_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -9966,8 +9914,7 @@ fn upgrade_project_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -10072,8 +10019,7 @@ fn upgrade_project_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -10179,8 +10125,7 @@ fn upgrade_project_cli_config_interaction() -> anyhow::Result<()> {
index_strategy: FirstIndex, index_strategy: FirstIndex,
keyring_provider: Disabled, keyring_provider: Disabled,
link_mode: Clone, link_mode: Clone,
no_build_isolation: false, build_isolation: Isolate,
no_build_isolation_package: [],
extra_build_dependencies: ExtraBuildDependencies( extra_build_dependencies: ExtraBuildDependencies(
{}, {},
), ),
@ -10243,3 +10188,362 @@ fn upgrade_project_cli_config_interaction() -> anyhow::Result<()> {
Ok(()) Ok(())
} }
/// Test that setting `build-isolation = true` in pyproject.toml followed by
/// `--no-build-isolation-package numpy` on the CLI disables build isolation for `numpy`.
#[test]
#[cfg_attr(
windows,
ignore = "Configuration tests are not yet supported on Windows"
)]
fn build_isolation_override() -> anyhow::Result<()> {
let context = TestContext::new("3.12");
// Write a `uv.toml` file to disable build isolation.
let uv_toml = context.temp_dir.child("uv.toml");
uv_toml.write_str(indoc::indoc! {r"
no-build-isolation = true
"})?;
let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("numpy")?;
uv_snapshot!(context.filters(), add_shared_args(context.pip_compile(), context.temp_dir.path())
.arg("--show-settings")
.arg("requirements.in")
.arg("--no-build-isolation-package").arg("numpy"), @r#"
success: true
exit_code: 0
----- stdout -----
GlobalSettings {
required_version: None,
quiet: 0,
verbose: 0,
color: Auto,
network_settings: NetworkSettings {
connectivity: Online,
native_tls: false,
allow_insecure_host: [],
},
concurrency: Concurrency {
downloads: 50,
builds: 16,
installs: 8,
},
show_settings: true,
preview: Preview {
flags: PreviewFeatures(
0x0,
),
},
python_preference: Managed,
python_downloads: Automatic,
no_progress: false,
installer_metadata: true,
}
CacheSettings {
no_cache: false,
cache_dir: Some(
"[CACHE_DIR]/",
),
}
PipCompileSettings {
format: None,
src_file: [
"requirements.in",
],
constraints: [],
overrides: [],
build_constraints: [],
constraints_from_workspace: [],
overrides_from_workspace: [],
build_constraints_from_workspace: [],
environments: SupportedEnvironments(
[],
),
refresh: None(
Timestamp(
SystemTime {
tv_sec: [TIME],
tv_nsec: [TIME],
},
),
),
settings: PipSettings {
index_locations: IndexLocations {
indexes: [],
flat_index: [],
no_index: false,
},
python: None,
install_mirrors: PythonInstallMirrors {
python_install_mirror: None,
pypy_install_mirror: None,
python_downloads_json_url: None,
},
system: false,
extras: ExtrasSpecification(
ExtrasSpecificationInner {
include: Some(
[],
),
exclude: [],
only_extras: false,
history: ExtrasSpecificationHistory {
extra: [],
only_extra: [],
no_extra: [],
all_extras: false,
no_default_extras: false,
defaults: List(
[],
),
},
},
),
groups: [],
break_system_packages: false,
target: None,
prefix: None,
index_strategy: FirstIndex,
keyring_provider: Disabled,
torch_backend: None,
build_isolation: Shared,
extra_build_dependencies: ExtraBuildDependencies(
{},
),
extra_build_variables: ExtraBuildVariables(
{},
),
build_options: BuildOptions {
no_binary: None,
no_build: None,
},
allow_empty_requirements: false,
strict: false,
dependency_mode: Transitive,
resolution: Highest,
prerelease: IfNecessaryOrExplicit,
fork_strategy: RequiresPython,
dependency_metadata: DependencyMetadata(
{},
),
output_file: None,
no_strip_extras: false,
no_strip_markers: false,
no_annotate: false,
no_header: false,
custom_compile_command: None,
generate_hashes: false,
config_setting: ConfigSettings(
{},
),
config_settings_package: PackageConfigSettings(
{},
),
python_version: None,
python_platform: None,
universal: false,
exclude_newer: ExcludeNewer {
global: None,
package: ExcludeNewerPackage(
{},
),
},
no_emit_package: [],
emit_index_url: false,
emit_find_links: false,
emit_build_options: false,
emit_marker_expression: false,
emit_index_annotation: false,
annotation_style: Split,
link_mode: Clone,
compile_bytecode: false,
sources: Enabled,
hash_checking: Some(
Verify,
),
upgrade: None,
reinstall: None,
},
}
----- stderr -----
"#);
// Now enable build isolation for all packages except `numpy`.
uv_toml.write_str(indoc::indoc! {r"
no-build-isolation = false
"})?;
uv_snapshot!(context.filters(), add_shared_args(context.pip_compile(), context.temp_dir.path())
.arg("--show-settings")
.arg("requirements.in")
.arg("--no-build-isolation-package").arg("numpy"), @r#"
success: true
exit_code: 0
----- stdout -----
GlobalSettings {
required_version: None,
quiet: 0,
verbose: 0,
color: Auto,
network_settings: NetworkSettings {
connectivity: Online,
native_tls: false,
allow_insecure_host: [],
},
concurrency: Concurrency {
downloads: 50,
builds: 16,
installs: 8,
},
show_settings: true,
preview: Preview {
flags: PreviewFeatures(
0x0,
),
},
python_preference: Managed,
python_downloads: Automatic,
no_progress: false,
installer_metadata: true,
}
CacheSettings {
no_cache: false,
cache_dir: Some(
"[CACHE_DIR]/",
),
}
PipCompileSettings {
format: None,
src_file: [
"requirements.in",
],
constraints: [],
overrides: [],
build_constraints: [],
constraints_from_workspace: [],
overrides_from_workspace: [],
build_constraints_from_workspace: [],
environments: SupportedEnvironments(
[],
),
refresh: None(
Timestamp(
SystemTime {
tv_sec: [TIME],
tv_nsec: [TIME],
},
),
),
settings: PipSettings {
index_locations: IndexLocations {
indexes: [],
flat_index: [],
no_index: false,
},
python: None,
install_mirrors: PythonInstallMirrors {
python_install_mirror: None,
pypy_install_mirror: None,
python_downloads_json_url: None,
},
system: false,
extras: ExtrasSpecification(
ExtrasSpecificationInner {
include: Some(
[],
),
exclude: [],
only_extras: false,
history: ExtrasSpecificationHistory {
extra: [],
only_extra: [],
no_extra: [],
all_extras: false,
no_default_extras: false,
defaults: List(
[],
),
},
},
),
groups: [],
break_system_packages: false,
target: None,
prefix: None,
index_strategy: FirstIndex,
keyring_provider: Disabled,
torch_backend: None,
build_isolation: SharedPackage(
[
PackageName(
"numpy",
),
],
),
extra_build_dependencies: ExtraBuildDependencies(
{},
),
extra_build_variables: ExtraBuildVariables(
{},
),
build_options: BuildOptions {
no_binary: None,
no_build: None,
},
allow_empty_requirements: false,
strict: false,
dependency_mode: Transitive,
resolution: Highest,
prerelease: IfNecessaryOrExplicit,
fork_strategy: RequiresPython,
dependency_metadata: DependencyMetadata(
{},
),
output_file: None,
no_strip_extras: false,
no_strip_markers: false,
no_annotate: false,
no_header: false,
custom_compile_command: None,
generate_hashes: false,
config_setting: ConfigSettings(
{},
),
config_settings_package: PackageConfigSettings(
{},
),
python_version: None,
python_platform: None,
universal: false,
exclude_newer: ExcludeNewer {
global: None,
package: ExcludeNewerPackage(
{},
),
},
no_emit_package: [],
emit_index_url: false,
emit_find_links: false,
emit_build_options: false,
emit_marker_expression: false,
emit_index_annotation: false,
annotation_style: Split,
link_mode: Clone,
compile_bytecode: false,
sources: Enabled,
hash_checking: Some(
Verify,
),
upgrade: None,
reinstall: None,
},
}
----- stderr -----
"#);
Ok(())
}