mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 10:58:28 +00:00

Whew this is a lot. The user-facing changes are: - `uv toolchain` to `uv python` e.g. `uv python find`, `uv python install`, ... - `UV_TOOLCHAIN_DIR` to` UV_PYTHON_INSTALL_DIR` - `<UV_STATE_DIR>/toolchains` to `<UV_STATE_DIR>/python` (with [automatic migration](https://github.com/astral-sh/uv/pull/4735/files#r1663029330)) - User-facing messages no longer refer to toolchains, instead using "Python", "Python versions" or "Python installations" The internal changes are: - `uv-toolchain` crate to `uv-python` - `Toolchain` no longer referenced in type names - Dropped unused `SystemPython` type (previously replaced) - Clarified the type names for "managed Python installations" - (more little things)
43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
use std::path::{Path, PathBuf};
|
|
|
|
use pypi_types::Scheme;
|
|
|
|
/// A `--target` directory into which packages can be installed, separate from a virtual environment
|
|
/// or system Python interpreter.
|
|
#[derive(Debug, Clone)]
|
|
pub struct Target(PathBuf);
|
|
|
|
impl Target {
|
|
/// Return the [`Scheme`] for the `--target` directory.
|
|
pub fn scheme(&self) -> Scheme {
|
|
Scheme {
|
|
purelib: self.0.clone(),
|
|
platlib: self.0.clone(),
|
|
scripts: self.0.join("bin"),
|
|
data: self.0.clone(),
|
|
include: self.0.join("include"),
|
|
}
|
|
}
|
|
|
|
/// Return an iterator over the `site-packages` directories inside the environment.
|
|
pub fn site_packages(&self) -> impl Iterator<Item = &Path> {
|
|
std::iter::once(self.0.as_path())
|
|
}
|
|
|
|
/// Initialize the `--target` directory.
|
|
pub fn init(&self) -> std::io::Result<()> {
|
|
fs_err::create_dir_all(&self.0)?;
|
|
Ok(())
|
|
}
|
|
|
|
/// Return the path to the `--target` directory.
|
|
pub fn root(&self) -> &Path {
|
|
&self.0
|
|
}
|
|
}
|
|
|
|
impl From<PathBuf> for Target {
|
|
fn from(path: PathBuf) -> Self {
|
|
Self(path)
|
|
}
|
|
}
|