Add PythonEnvironment::find API (#4423)

Restores the `PythonEnvironment::find` API which was removed a while
back in favor of `Toolchain::find`. As mentioned in #4416, I'm
attempting to separate the case where you want an active environment
from the case where you want an installed toolchain in order to create
environments.

I wanted to drop `EnvironmentPreference` from `Toolchain::find` and just
have us consistently consider (or not consider) virtual environments
when discovering toolchains for creating environments. Unfortunately
this caused a few things to break so I reverted that change and will
explore it separately. Because I was exploring that change, there are
some minor changes to the `Toolchain` API here.
This commit is contained in:
Zanie Blue 2024-06-20 13:54:17 -04:00 committed by GitHub
parent baa86f2edf
commit e783a79955
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 285 additions and 295 deletions

View file

@ -3,7 +3,7 @@ use std::path::PathBuf;
use clap::Parser;
use tracing::info;
use uv_cache::{Cache, CacheArgs};
use uv_toolchain::{EnvironmentPreference, Toolchain, ToolchainPreference};
use uv_toolchain::{EnvironmentPreference, PythonEnvironment, ToolchainRequest};
#[derive(Parser)]
pub(crate) struct CompileArgs {
@ -20,10 +20,9 @@ pub(crate) async fn compile(args: CompileArgs) -> anyhow::Result<()> {
let interpreter = if let Some(python) = args.python {
python
} else {
let interpreter = Toolchain::find(
None,
let interpreter = PythonEnvironment::find(
&ToolchainRequest::default(),
EnvironmentPreference::OnlyVirtual,
ToolchainPreference::default(),
&cache,
)?
.into_interpreter();