Skip to content

Commit

Permalink
Replace --python-preference installed with managed
Browse files Browse the repository at this point in the history
Collapses the previous default into "managed" and makes the "managed" behavior match "installed". People should use "only-managed" if they want that behavior, it seems overly complicated otherwise.
  • Loading branch information
zanieb committed Jul 30, 2024
1 parent 67b3bfa commit 8315b03
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 26 deletions.
17 changes: 8 additions & 9 deletions crates/uv-python/src/discovery.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,11 @@ pub enum PythonRequest {
pub enum PythonPreference {
/// Only use managed Python installations; never use system Python installations.
OnlyManaged,
/// Prefer installed Python installations, only download managed Python installations if no system Python installation is found.
///
/// Installed managed Python installations are still preferred over system Python installations.
#[default]
Installed,
/// Prefer managed Python installations over system Python installations, even if fetching is required.
/// Prefer managed Python installations over system Python installations.
///
/// System Python versions are still preferred over downloading managed Python installations.
/// Use `only-managed` to always fetch a managed Python version.
Managed,
/// Prefer system Python installations over managed Python installations.
///
Expand Down Expand Up @@ -305,7 +304,7 @@ fn python_executables_from_installed<'a>(

match preference {
PythonPreference::OnlyManaged => Box::new(from_managed_installations),
PythonPreference::Managed | PythonPreference::Installed => Box::new(
PythonPreference::Managed => Box::new(
from_managed_installations
.chain(from_search_path)
.chain(from_py_launcher),
Expand Down Expand Up @@ -1272,7 +1271,7 @@ impl PythonPreference {

match self {
PythonPreference::OnlyManaged => matches!(source, PythonSource::Managed),
Self::Managed | Self::System | Self::Installed => matches!(
Self::Managed | Self::System => matches!(
source,
PythonSource::Managed | PythonSource::SearchPath | PythonSource::PyLauncher
),
Expand All @@ -1295,7 +1294,7 @@ impl PythonPreference {
}

pub(crate) fn allows_managed(self) -> bool {
matches!(self, Self::Managed | Self::OnlyManaged | Self::Installed)
matches!(self, Self::Managed | Self::OnlyManaged)
}
}

Expand Down Expand Up @@ -1603,7 +1602,7 @@ impl PythonPreference {
fn sources(self) -> &'static [&'static str] {
match self {
Self::OnlyManaged => &["managed installations"],
Self::Managed | Self::Installed | Self::System => {
Self::Managed | Self::System => {
if cfg!(windows) {
&["managed installations", "system path", "`py` launcher"]
} else {
Expand Down
7 changes: 0 additions & 7 deletions crates/uv-python/src/installation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,6 @@ impl PythonInstallation {
) -> Result<Self, Error> {
let request = request.unwrap_or_default();

// Perform a fetch aggressively if managed Python is preferred
if matches!(preference, PythonPreference::Managed) && python_fetch.is_automatic() {
if let Some(request) = PythonDownloadRequest::from_request(&request) {
return Self::fetch(request.fill(), client_builder, cache, reporter).await;
}
}

// Search for the installation
match Self::find(&request, environments, preference, cache) {
Ok(venv) => Ok(venv),
Expand Down
3 changes: 1 addition & 2 deletions docs/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -648,8 +648,7 @@ those that are downloaded and installed by uv.
**Possible values**:

- `"only-managed"`: Only use managed Python installations; never use system Python installations
- `"installed"`: Prefer installed Python installations, only download managed Python installations if no system Python installation is found
- `"managed"`: Prefer managed Python installations over system Python installations, even if fetching is required
- `"managed"`: Prefer managed Python installations over system Python installations
- `"system"`: Prefer system Python installations over managed Python installations
- `"only-system"`: Only use system Python installations; never use managed Python installations

Expand Down
9 changes: 1 addition & 8 deletions uv.schema.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 8315b03

Please sign in to comment.