diff --git a/crates/uv-toolchain/src/discovery.rs b/crates/uv-toolchain/src/discovery.rs index 8e81dea70..ca9813184 100644 --- a/crates/uv-toolchain/src/discovery.rs +++ b/crates/uv-toolchain/src/discovery.rs @@ -57,16 +57,20 @@ pub enum ToolchainRequest { #[cfg_attr(feature = "clap", derive(clap::ValueEnum))] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] pub enum ToolchainPreference { - /// Only use managed toolchains, never use system toolchains. + /// Only use managed toolchains; never use system toolchains. OnlyManaged, /// Prefer installed toolchains, only download managed toolchains if no system toolchain is found. + /// + /// Installed managed toolchains are still preferred over system toolchains. #[default] Installed, - /// Prefer managed toolchains over system toolchains, even if one needs to be downloaded. - PreferManaged, - /// Prefer system toolchains, only use managed toolchains if no system toolchain is found. - PreferSystem, - /// Only use system toolchains, never use managed toolchains. + /// Prefer managed toolchains over system toolchains, even if fetching is required. + Managed, + /// Prefer system toolchains over managed toolchains. + /// + /// If a system toolchain cannot be found, a managed toolchain can be used. + System, + /// Only use system toolchains; never use managed toolchains. OnlySystem, } @@ -313,12 +317,12 @@ fn python_executables_from_installed<'a>( match preference { ToolchainPreference::OnlyManaged => Box::new(from_managed_toolchains), - ToolchainPreference::PreferManaged | ToolchainPreference::Installed => Box::new( + ToolchainPreference::Managed | ToolchainPreference::Installed => Box::new( from_managed_toolchains .chain(from_search_path) .chain(from_py_launcher), ), - ToolchainPreference::PreferSystem => Box::new( + ToolchainPreference::System => Box::new( from_search_path .chain(from_py_launcher) .chain(from_managed_toolchains), @@ -1153,7 +1157,7 @@ impl ToolchainPreference { match self { ToolchainPreference::OnlyManaged => matches!(source, ToolchainSource::Managed), - Self::PreferManaged | Self::PreferSystem | Self::Installed => matches!( + Self::Managed | Self::System | Self::Installed => matches!( source, ToolchainSource::Managed | ToolchainSource::SearchPath @@ -1181,10 +1185,7 @@ impl ToolchainPreference { } pub(crate) fn allows_managed(self) -> bool { - matches!( - self, - Self::PreferManaged | Self::OnlyManaged | Self::Installed - ) + matches!(self, Self::Managed | Self::OnlyManaged | Self::Installed) } } @@ -1491,7 +1492,7 @@ impl fmt::Display for ToolchainPreference { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { let s = match self { Self::OnlyManaged => "managed toolchains", - Self::PreferManaged | Self::Installed | Self::PreferSystem => { + Self::Managed | Self::Installed | Self::System => { if cfg!(windows) { "managed toolchains, system path, or `py` launcher" } else { diff --git a/crates/uv-toolchain/src/toolchain.rs b/crates/uv-toolchain/src/toolchain.rs index 8ee277793..411d6e194 100644 --- a/crates/uv-toolchain/src/toolchain.rs +++ b/crates/uv-toolchain/src/toolchain.rs @@ -88,9 +88,7 @@ impl Toolchain { let request = request.unwrap_or_default(); // Perform a fetch aggressively if managed toolchains are preferred - if matches!(preference, ToolchainPreference::PreferManaged) - && toolchain_fetch.is_automatic() - { + if matches!(preference, ToolchainPreference::Managed) && toolchain_fetch.is_automatic() { if let Some(request) = PythonDownloadRequest::try_from_request(&request) { return Self::fetch(request, client_builder, cache).await; } diff --git a/crates/uv/tests/common/mod.rs b/crates/uv/tests/common/mod.rs index c6c44b9e5..89f0ab41d 100644 --- a/crates/uv/tests/common/mod.rs +++ b/crates/uv/tests/common/mod.rs @@ -711,7 +711,7 @@ pub fn python_toolchains_for_versions( if let Ok(toolchain) = Toolchain::find( &ToolchainRequest::parse(python_version), EnvironmentPreference::OnlySystem, - ToolchainPreference::PreferManaged, + ToolchainPreference::Managed, &cache, ) { toolchain.into_interpreter().sys_executable().to_owned() diff --git a/uv.schema.json b/uv.schema.json index 655395124..ad48f2f0a 100644 --- a/uv.schema.json +++ b/uv.schema.json @@ -1218,35 +1218,35 @@ "ToolchainPreference": { "oneOf": [ { - "description": "Only use managed toolchains, never use system toolchains.", + "description": "Only use managed toolchains; never use system toolchains.", "type": "string", "enum": [ "only-managed" ] }, { - "description": "Prefer installed toolchains, only download managed toolchains if no system toolchain is found.", + "description": "Prefer installed toolchains, only download managed toolchains if no system toolchain is found.\n\nInstalled managed toolchains are still preferred over system toolchains.", "type": "string", "enum": [ "installed" ] }, { - "description": "Prefer managed toolchains over system toolchains, even if one needs to be downloaded.", + "description": "Prefer managed toolchains over system toolchains, even if fetching is required.", "type": "string", "enum": [ - "prefer-managed" + "managed" ] }, { - "description": "Prefer system toolchains, only use managed toolchains if no system toolchain is found.", + "description": "Prefer system toolchains over managed toolchains.\n\nIf a system toolchain cannot be found, a managed toolchain can be used.", "type": "string", "enum": [ - "prefer-system" + "system" ] }, { - "description": "Only use system toolchains, never use managed toolchains.", + "description": "Only use system toolchains; never use managed toolchains.", "type": "string", "enum": [ "only-system"