Remove preview labeling for uv 0.3.0 (#6166)

- Removes "experimental" labels from command documentation
- Removes preview warnings
- Removes `PreviewMode` from most structs and methods — we could keep it
around but I figure we can propagate it again easily where needed in the
future
- Enables preview behavior by default everywhere, e.g., `uv venv` will
download Python versions
This commit is contained in:
Zanie Blue 2024-08-20 11:12:08 -05:00
parent 33480d61eb
commit 04e3e7ce65
72 changed files with 380 additions and 1288 deletions

1
Cargo.lock generated
View file

@ -5027,7 +5027,6 @@ dependencies = [
"url", "url",
"uv-cache", "uv-cache",
"uv-client", "uv-client",
"uv-configuration",
"uv-extract", "uv-extract",
"uv-fs", "uv-fs",
"uv-state", "uv-state",

View file

@ -91,8 +91,7 @@ mod resolver {
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::RegistryClient; use uv_client::RegistryClient;
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, ConfigSettings, IndexStrategy, PreviewMode, SetupPyStrategy, BuildOptions, Concurrency, ConfigSettings, IndexStrategy, SetupPyStrategy, SourceStrategy,
SourceStrategy,
}; };
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
use uv_distribution::DistributionDatabase; use uv_distribution::DistributionDatabase;
@ -188,7 +187,6 @@ mod resolver {
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
PreviewMode::Disabled,
); );
let markers = if universal { let markers = if universal {
@ -208,12 +206,7 @@ mod resolver {
&hashes, &hashes,
&build_context, &build_context,
installed_packages, installed_packages,
DistributionDatabase::new( DistributionDatabase::new(client, &build_context, concurrency.downloads),
client,
&build_context,
concurrency.downloads,
PreviewMode::Disabled,
),
)?; )?;
Ok(resolver.resolve().await?) Ok(resolver.resolve().await?)

View file

@ -247,14 +247,14 @@ pub enum Commands {
#[command(flatten)] #[command(flatten)]
Project(Box<ProjectCommand>), Project(Box<ProjectCommand>),
/// Run and install commands provided by Python packages (experimental). /// Run and install commands provided by Python packages.
#[command( #[command(
after_help = "Use `uv help tool` for more details.", after_help = "Use `uv help tool` for more details.",
after_long_help = "" after_long_help = ""
)] )]
Tool(ToolNamespace), Tool(ToolNamespace),
/// Manage Python versions and installations (experimental) /// Manage Python versions and installations
/// ///
/// Generally, uv first searches for Python in a virtual environment, either /// Generally, uv first searches for Python in a virtual environment, either
/// active or in a `.venv` directory in the current working directory or /// active or in a `.venv` directory in the current working directory or
@ -265,8 +265,7 @@ pub enum Commands {
/// On Windows, the `py` launcher is also invoked to find Python /// On Windows, the `py` launcher is also invoked to find Python
/// executables. /// executables.
/// ///
/// When preview is enabled, i.e., via `--preview` or by using a preview /// By default, uv will download Python if a version cannot be found. This
/// command, uv will download Python if a version cannot be found. This
/// behavior can be disabled with the `--python-downloads` option. /// behavior can be disabled with the `--python-downloads` option.
/// ///
/// The `--python` option allows requesting a different interpreter. /// The `--python` option allows requesting a different interpreter.
@ -515,7 +514,7 @@ pub enum PipCommand {
#[derive(Subcommand)] #[derive(Subcommand)]
pub enum ProjectCommand { pub enum ProjectCommand {
/// Run a command or script (experimental). /// Run a command or script.
/// ///
/// Ensures that the command runs in a Python environment. /// Ensures that the command runs in a Python environment.
/// ///
@ -542,7 +541,7 @@ pub enum ProjectCommand {
after_long_help = "" after_long_help = ""
)] )]
Run(RunArgs), Run(RunArgs),
/// Create a new project (experimental). /// Create a new project.
/// ///
/// Follows the `pyproject.toml` specification. /// Follows the `pyproject.toml` specification.
/// ///
@ -557,7 +556,7 @@ pub enum ProjectCommand {
/// virtual environment (`.venv`) and lockfile (`uv.lock`) are lazily /// virtual environment (`.venv`) and lockfile (`uv.lock`) are lazily
/// created during the first sync. /// created during the first sync.
Init(InitArgs), Init(InitArgs),
/// Add dependencies to the project (experimental). /// Add dependencies to the project.
/// ///
/// Dependencies are added to the project's `pyproject.toml` file. /// Dependencies are added to the project's `pyproject.toml` file.
/// ///
@ -584,7 +583,7 @@ pub enum ProjectCommand {
after_long_help = "" after_long_help = ""
)] )]
Add(AddArgs), Add(AddArgs),
/// Remove dependencies from the project (experimental). /// Remove dependencies from the project.
/// ///
/// Dependencies are removed from the project's `pyproject.toml` file. /// Dependencies are removed from the project's `pyproject.toml` file.
/// ///
@ -608,7 +607,7 @@ pub enum ProjectCommand {
after_long_help = "" after_long_help = ""
)] )]
Remove(RemoveArgs), Remove(RemoveArgs),
/// Update the project's environment (experimental). /// Update the project's environment.
/// ///
/// Syncing ensures that all project dependencies are installed and /// Syncing ensures that all project dependencies are installed and
/// up-to-date with the lockfile. Syncing also removes packages that are not /// up-to-date with the lockfile. Syncing also removes packages that are not
@ -630,7 +629,7 @@ pub enum ProjectCommand {
after_long_help = "" after_long_help = ""
)] )]
Sync(SyncArgs), Sync(SyncArgs),
/// Update the project's lockfile (experimental). /// Update the project's lockfile.
/// ///
/// If the project lockfile (`uv.lock`) does not exist, it will be created. /// If the project lockfile (`uv.lock`) does not exist, it will be created.
/// If a lockfile is present, its contents will be used as preferences for /// If a lockfile is present, its contents will be used as preferences for
@ -643,7 +642,7 @@ pub enum ProjectCommand {
after_long_help = "" after_long_help = ""
)] )]
Lock(LockArgs), Lock(LockArgs),
/// Display the project's dependency tree (experimental). /// Display the project's dependency tree.
Tree(TreeArgs), Tree(TreeArgs),
} }

View file

@ -11,8 +11,8 @@ use uv_build::{SourceBuild, SourceBuildContext};
use uv_cache::{Cache, CacheArgs}; use uv_cache::{Cache, CacheArgs};
use uv_client::RegistryClientBuilder; use uv_client::RegistryClientBuilder;
use uv_configuration::{ use uv_configuration::{
BuildKind, BuildOptions, Concurrency, ConfigSettings, IndexStrategy, PreviewMode, BuildKind, BuildOptions, Concurrency, ConfigSettings, IndexStrategy, SetupPyStrategy,
SetupPyStrategy, SourceStrategy, SourceStrategy,
}; };
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
use uv_git::GitResolver; use uv_git::GitResolver;
@ -96,7 +96,6 @@ pub(crate) async fn build(args: BuildArgs) -> Result<PathBuf> {
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
PreviewMode::Enabled,
); );
let builder = SourceBuild::setup( let builder = SourceBuild::setup(

View file

@ -16,11 +16,11 @@ use pypi_types::Requirement;
use uv_build::{SourceBuild, SourceBuildContext}; use uv_build::{SourceBuild, SourceBuildContext};
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::RegistryClient; use uv_client::RegistryClient;
use uv_configuration::Concurrency;
use uv_configuration::{ use uv_configuration::{
BuildKind, BuildOptions, ConfigSettings, Constraints, IndexStrategy, Reinstall, BuildKind, BuildOptions, ConfigSettings, Constraints, IndexStrategy, Reinstall,
SetupPyStrategy, SourceStrategy, SetupPyStrategy, SourceStrategy,
}; };
use uv_configuration::{Concurrency, PreviewMode};
use uv_distribution::DistributionDatabase; use uv_distribution::DistributionDatabase;
use uv_git::GitResolver; use uv_git::GitResolver;
use uv_installer::{Installer, Plan, Planner, Preparer, SitePackages}; use uv_installer::{Installer, Plan, Planner, Preparer, SitePackages};
@ -54,7 +54,6 @@ pub struct BuildDispatch<'a> {
build_extra_env_vars: FxHashMap<OsString, OsString>, build_extra_env_vars: FxHashMap<OsString, OsString>,
sources: SourceStrategy, sources: SourceStrategy,
concurrency: Concurrency, concurrency: Concurrency,
preview_mode: PreviewMode,
} }
impl<'a> BuildDispatch<'a> { impl<'a> BuildDispatch<'a> {
@ -77,7 +76,6 @@ impl<'a> BuildDispatch<'a> {
exclude_newer: Option<ExcludeNewer>, exclude_newer: Option<ExcludeNewer>,
sources: SourceStrategy, sources: SourceStrategy,
concurrency: Concurrency, concurrency: Concurrency,
preview_mode: PreviewMode,
) -> Self { ) -> Self {
Self { Self {
client, client,
@ -100,7 +98,6 @@ impl<'a> BuildDispatch<'a> {
build_extra_env_vars: FxHashMap::default(), build_extra_env_vars: FxHashMap::default(),
sources, sources,
concurrency, concurrency,
preview_mode,
} }
} }
@ -162,12 +159,7 @@ impl<'a> BuildContext for BuildDispatch<'a> {
&HashStrategy::None, &HashStrategy::None,
self, self,
EmptyInstalledPackages, EmptyInstalledPackages,
DistributionDatabase::new( DistributionDatabase::new(self.client, self, self.concurrency.downloads),
self.client,
self,
self.concurrency.downloads,
self.preview_mode,
),
)?; )?;
let graph = resolver.resolve().await.with_context(|| { let graph = resolver.resolve().await.with_context(|| {
format!( format!(
@ -250,12 +242,7 @@ impl<'a> BuildContext for BuildDispatch<'a> {
tags, tags,
&HashStrategy::None, &HashStrategy::None,
self.build_options, self.build_options,
DistributionDatabase::new( DistributionDatabase::new(self.client, self, self.concurrency.downloads),
self.client,
self,
self.concurrency.downloads,
self.preview_mode,
),
); );
debug!( debug!(

View file

@ -25,7 +25,6 @@ use uv_cache::{ArchiveId, ArchiveTimestamp, CacheBucket, CacheEntry, Timestamp,
use uv_client::{ use uv_client::{
CacheControl, CachedClientError, Connectivity, DataWithCachePolicy, RegistryClient, CacheControl, CachedClientError, Connectivity, DataWithCachePolicy, RegistryClient,
}; };
use uv_configuration::PreviewMode;
use uv_extract::hash::Hasher; use uv_extract::hash::Hasher;
use uv_fs::write_atomic; use uv_fs::write_atomic;
use uv_types::BuildContext; use uv_types::BuildContext;
@ -61,11 +60,10 @@ impl<'a, Context: BuildContext> DistributionDatabase<'a, Context> {
client: &'a RegistryClient, client: &'a RegistryClient,
build_context: &'a Context, build_context: &'a Context,
concurrent_downloads: usize, concurrent_downloads: usize,
preview_mode: PreviewMode,
) -> Self { ) -> Self {
Self { Self {
build_context, build_context,
builder: SourceDistributionBuilder::new(build_context, preview_mode), builder: SourceDistributionBuilder::new(build_context),
locks: Rc::new(Locks::default()), locks: Rc::new(Locks::default()),
client: ManagedClient::new(client, concurrent_downloads), client: ManagedClient::new(client, concurrent_downloads),
reporter: None, reporter: None,

View file

@ -9,7 +9,6 @@ use pep508_rs::{VerbatimUrl, VersionOrUrl};
use pypi_types::{ParsedUrlError, Requirement, RequirementSource, VerbatimParsedUrl}; use pypi_types::{ParsedUrlError, Requirement, RequirementSource, VerbatimParsedUrl};
use thiserror::Error; use thiserror::Error;
use url::Url; use url::Url;
use uv_configuration::PreviewMode;
use uv_fs::{relative_to, Simplified}; use uv_fs::{relative_to, Simplified};
use uv_git::GitReference; use uv_git::GitReference;
use uv_normalize::PackageName; use uv_normalize::PackageName;
@ -36,7 +35,6 @@ impl LoweredRequirement {
project_dir: &Path, project_dir: &Path,
project_sources: &BTreeMap<PackageName, Source>, project_sources: &BTreeMap<PackageName, Source>,
workspace: &Workspace, workspace: &Workspace,
preview: PreviewMode,
) -> Result<Self, LoweringError> { ) -> Result<Self, LoweringError> {
let (source, origin) = if let Some(source) = project_sources.get(&requirement.name) { let (source, origin) = if let Some(source) = project_sources.get(&requirement.name) {
(Some(source), Origin::Project) (Some(source), Origin::Project)
@ -80,10 +78,6 @@ impl LoweredRequirement {
return Ok(Self(Requirement::from(requirement))); return Ok(Self(Requirement::from(requirement)));
}; };
if preview.is_disabled() {
warn_user_once!("`uv.sources` is experimental and may change without warning");
}
let source = match source { let source = match source {
Source::Git { Source::Git {
git, git,
@ -180,7 +174,6 @@ impl LoweredRequirement {
requirement: pep508_rs::Requirement<VerbatimParsedUrl>, requirement: pep508_rs::Requirement<VerbatimParsedUrl>,
dir: &Path, dir: &Path,
sources: &BTreeMap<PackageName, Source>, sources: &BTreeMap<PackageName, Source>,
preview: PreviewMode,
) -> Result<Self, LoweringError> { ) -> Result<Self, LoweringError> {
let source = sources.get(&requirement.name).cloned(); let source = sources.get(&requirement.name).cloned();
@ -188,10 +181,6 @@ impl LoweredRequirement {
return Ok(Self(Requirement::from(requirement))); return Ok(Self(Requirement::from(requirement)));
}; };
if preview.is_disabled() {
warn_user_once!("`uv.sources` is experimental and may change without warning");
}
let source = match source { let source = match source {
Source::Git { Source::Git {
git, git,

View file

@ -5,7 +5,7 @@ use thiserror::Error;
use pep440_rs::{Version, VersionSpecifiers}; use pep440_rs::{Version, VersionSpecifiers};
use pypi_types::{HashDigest, Metadata23}; use pypi_types::{HashDigest, Metadata23};
use uv_configuration::{PreviewMode, SourceStrategy}; use uv_configuration::SourceStrategy;
use uv_normalize::{ExtraName, GroupName, PackageName}; use uv_normalize::{ExtraName, GroupName, PackageName};
use uv_workspace::WorkspaceError; use uv_workspace::WorkspaceError;
@ -61,7 +61,6 @@ impl Metadata {
install_path: &Path, install_path: &Path,
lock_path: &Path, lock_path: &Path,
sources: SourceStrategy, sources: SourceStrategy,
preview_mode: PreviewMode,
) -> Result<Self, MetadataError> { ) -> Result<Self, MetadataError> {
// Lower the requirements. // Lower the requirements.
let RequiresDist { let RequiresDist {
@ -78,7 +77,6 @@ impl Metadata {
install_path, install_path,
lock_path, lock_path,
sources, sources,
preview_mode,
) )
.await?; .await?;

View file

@ -1,7 +1,7 @@
use std::collections::BTreeMap; use std::collections::BTreeMap;
use std::path::Path; use std::path::Path;
use uv_configuration::{PreviewMode, SourceStrategy}; use uv_configuration::SourceStrategy;
use uv_normalize::{ExtraName, GroupName, PackageName, DEV_DEPENDENCIES}; use uv_normalize::{ExtraName, GroupName, PackageName, DEV_DEPENDENCIES};
use uv_workspace::{DiscoveryOptions, ProjectWorkspace}; use uv_workspace::{DiscoveryOptions, ProjectWorkspace};
@ -39,7 +39,6 @@ impl RequiresDist {
install_path: &Path, install_path: &Path,
lock_path: &Path, lock_path: &Path,
sources: SourceStrategy, sources: SourceStrategy,
preview_mode: PreviewMode,
) -> Result<Self, MetadataError> { ) -> Result<Self, MetadataError> {
match sources { match sources {
SourceStrategy::Enabled => { SourceStrategy::Enabled => {
@ -55,7 +54,7 @@ impl RequiresDist {
return Ok(Self::from_metadata23(metadata)); return Ok(Self::from_metadata23(metadata));
}; };
Self::from_project_workspace(metadata, &project_workspace, preview_mode) Self::from_project_workspace(metadata, &project_workspace)
} }
SourceStrategy::Disabled => Ok(Self::from_metadata23(metadata)), SourceStrategy::Disabled => Ok(Self::from_metadata23(metadata)),
} }
@ -64,7 +63,6 @@ impl RequiresDist {
fn from_project_workspace( fn from_project_workspace(
metadata: pypi_types::RequiresDist, metadata: pypi_types::RequiresDist,
project_workspace: &ProjectWorkspace, project_workspace: &ProjectWorkspace,
preview_mode: PreviewMode,
) -> Result<Self, MetadataError> { ) -> Result<Self, MetadataError> {
// Collect any `tool.uv.sources` and `tool.uv.dev_dependencies` from `pyproject.toml`. // Collect any `tool.uv.sources` and `tool.uv.dev_dependencies` from `pyproject.toml`.
let empty = BTreeMap::default(); let empty = BTreeMap::default();
@ -96,7 +94,6 @@ impl RequiresDist {
project_workspace.project_root(), project_workspace.project_root(),
sources, sources,
project_workspace.workspace(), project_workspace.workspace(),
preview_mode,
) )
.map(LoweredRequirement::into_inner) .map(LoweredRequirement::into_inner)
.map_err(|err| MetadataError::LoweringError(requirement_name.clone(), err)) .map_err(|err| MetadataError::LoweringError(requirement_name.clone(), err))
@ -120,7 +117,6 @@ impl RequiresDist {
project_workspace.project_root(), project_workspace.project_root(),
sources, sources,
project_workspace.workspace(), project_workspace.workspace(),
preview_mode,
) )
.map(LoweredRequirement::into_inner) .map(LoweredRequirement::into_inner)
.map_err(|err| MetadataError::LoweringError(requirement_name.clone(), err)) .map_err(|err| MetadataError::LoweringError(requirement_name.clone(), err))
@ -155,7 +151,6 @@ mod test {
use indoc::indoc; use indoc::indoc;
use insta::assert_snapshot; use insta::assert_snapshot;
use uv_configuration::PreviewMode;
use uv_workspace::pyproject::PyProjectToml; use uv_workspace::pyproject::PyProjectToml;
use uv_workspace::{DiscoveryOptions, ProjectWorkspace}; use uv_workspace::{DiscoveryOptions, ProjectWorkspace};
@ -182,7 +177,6 @@ mod test {
Ok(RequiresDist::from_project_workspace( Ok(RequiresDist::from_project_workspace(
requires_dist, requires_dist,
&project_workspace, &project_workspace,
PreviewMode::Enabled,
)?) )?)
} }

View file

@ -27,7 +27,7 @@ use uv_cache::{
use uv_client::{ use uv_client::{
CacheControl, CachedClientError, Connectivity, DataWithCachePolicy, RegistryClient, CacheControl, CachedClientError, Connectivity, DataWithCachePolicy, RegistryClient,
}; };
use uv_configuration::{BuildKind, PreviewMode}; use uv_configuration::BuildKind;
use uv_extract::hash::Hasher; use uv_extract::hash::Hasher;
use uv_fs::{rename_with_retry, write_atomic, LockedFile}; use uv_fs::{rename_with_retry, write_atomic, LockedFile};
use uv_types::{BuildContext, SourceBuildTrait}; use uv_types::{BuildContext, SourceBuildTrait};
@ -46,7 +46,6 @@ mod revision;
/// Fetch and build a source distribution from a remote source, or from a local cache. /// Fetch and build a source distribution from a remote source, or from a local cache.
pub(crate) struct SourceDistributionBuilder<'a, T: BuildContext> { pub(crate) struct SourceDistributionBuilder<'a, T: BuildContext> {
build_context: &'a T, build_context: &'a T,
preview_mode: PreviewMode,
reporter: Option<Arc<dyn Reporter>>, reporter: Option<Arc<dyn Reporter>>,
} }
@ -61,10 +60,9 @@ pub(crate) const METADATA: &str = "metadata.msgpack";
impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> { impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
/// Initialize a [`SourceDistributionBuilder`] from a [`BuildContext`]. /// Initialize a [`SourceDistributionBuilder`] from a [`BuildContext`].
pub(crate) fn new(build_context: &'a T, preview_mode: PreviewMode) -> Self { pub(crate) fn new(build_context: &'a T) -> Self {
Self { Self {
build_context, build_context,
preview_mode,
reporter: None, reporter: None,
} }
} }
@ -429,7 +427,6 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
project_root, project_root,
project_root, project_root,
self.build_context.sources(), self.build_context.sources(),
self.preview_mode,
) )
.await?; .await?;
Ok(requires_dist) Ok(requires_dist)
@ -997,7 +994,6 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
resource.install_path.as_ref(), resource.install_path.as_ref(),
resource.lock_path.as_ref(), resource.lock_path.as_ref(),
self.build_context.sources(), self.build_context.sources(),
self.preview_mode,
) )
.await?, .await?,
)); ));
@ -1023,7 +1019,6 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
resource.install_path.as_ref(), resource.install_path.as_ref(),
resource.lock_path.as_ref(), resource.lock_path.as_ref(),
self.build_context.sources(), self.build_context.sources(),
self.preview_mode,
) )
.await?, .await?,
)); ));
@ -1056,7 +1051,6 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
resource.install_path.as_ref(), resource.install_path.as_ref(),
resource.lock_path.as_ref(), resource.lock_path.as_ref(),
self.build_context.sources(), self.build_context.sources(),
self.preview_mode,
) )
.await?, .await?,
)) ))
@ -1234,14 +1228,8 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
debug!("Using cached metadata for: {source}"); debug!("Using cached metadata for: {source}");
return Ok(ArchiveMetadata::from( return Ok(ArchiveMetadata::from(
Metadata::from_workspace( Metadata::from_workspace(metadata, &path, &path, self.build_context.sources())
metadata, .await?,
&path,
&path,
self.build_context.sources(),
self.preview_mode,
)
.await?,
)); ));
} }
} }
@ -1267,14 +1255,8 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
}; };
return Ok(ArchiveMetadata::from( return Ok(ArchiveMetadata::from(
Metadata::from_workspace( Metadata::from_workspace(metadata, &path, &path, self.build_context.sources())
metadata, .await?,
&path,
&path,
self.build_context.sources(),
self.preview_mode,
)
.await?,
)); ));
} }
@ -1305,7 +1287,6 @@ impl<'a, T: BuildContext> SourceDistributionBuilder<'a, T> {
fetch.path(), fetch.path(),
fetch.path(), fetch.path(),
self.build_context.sources(), self.build_context.sources(),
self.preview_mode,
) )
.await?, .await?,
)) ))

View file

@ -22,7 +22,6 @@ platform-tags = { workspace = true }
pypi-types = { workspace = true } pypi-types = { workspace = true }
uv-cache = { workspace = true } uv-cache = { workspace = true }
uv-client = { workspace = true } uv-client = { workspace = true }
uv-configuration = { workspace = true }
uv-extract = { workspace = true } uv-extract = { workspace = true }
uv-fs = { workspace = true } uv-fs = { workspace = true }
uv-state = { workspace = true } uv-state = { workspace = true }

View file

@ -12,7 +12,6 @@ use which::{which, which_all};
use pep440_rs::{Version, VersionSpecifiers}; use pep440_rs::{Version, VersionSpecifiers};
use uv_cache::Cache; use uv_cache::Cache;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_warnings::warn_user_once; use uv_warnings::warn_user_once;
@ -1294,15 +1293,12 @@ impl PythonPreference {
} }
} }
/// Return a default [`PythonPreference`] based on the environment and preview mode. /// Return the default [`PythonPreference`], respecting the `UV_TEST_PYTHON_PATH` variable.
pub fn default_from(preview: PreviewMode) -> Self { pub fn default_from_env() -> Self {
if env::var_os("UV_TEST_PYTHON_PATH").is_some() { if env::var_os("UV_TEST_PYTHON_PATH").is_some() {
debug!("Only considering system interpreters due to `UV_TEST_PYTHON_PATH`");
Self::OnlySystem Self::OnlySystem
} else if preview.is_enabled() {
Self::default()
} else { } else {
Self::OnlySystem Self::default()
} }
} }

View file

@ -7,7 +7,6 @@ use tracing::debug;
use distribution_types::{Diagnostic, InstalledDist}; use distribution_types::{Diagnostic, InstalledDist};
use uv_cache::Cache; use uv_cache::Cache;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_installer::{SitePackages, SitePackagesDiagnostic}; use uv_installer::{SitePackages, SitePackagesDiagnostic};
use uv_python::{EnvironmentPreference, PythonEnvironment, PythonRequest}; use uv_python::{EnvironmentPreference, PythonEnvironment, PythonRequest};
@ -19,7 +18,6 @@ use crate::printer::Printer;
pub(crate) fn pip_check( pub(crate) fn pip_check(
python: Option<&str>, python: Option<&str>,
system: bool, system: bool,
_preview: PreviewMode,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {

View file

@ -16,7 +16,7 @@ use uv_cache::Cache;
use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, ConfigSettings, ExtrasSpecification, IndexStrategy, NoBinary, BuildOptions, Concurrency, ConfigSettings, ExtrasSpecification, IndexStrategy, NoBinary,
NoBuild, PreviewMode, Reinstall, SetupPyStrategy, SourceStrategy, Upgrade, NoBuild, Reinstall, SetupPyStrategy, SourceStrategy, Upgrade,
}; };
use uv_configuration::{KeyringProviderType, TargetTriple}; use uv_configuration::{KeyringProviderType, TargetTriple};
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
@ -92,7 +92,6 @@ pub(crate) async fn pip_compile(
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
quiet: bool, quiet: bool,
preview: PreviewMode,
cache: Cache, cache: Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
@ -331,7 +330,6 @@ pub(crate) async fn pip_compile(
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
preview,
); );
let options = OptionsBuilder::new() let options = OptionsBuilder::new()
@ -368,7 +366,6 @@ pub(crate) async fn pip_compile(
options, options,
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
printer, printer,
preview,
) )
.await .await
{ {

View file

@ -7,7 +7,6 @@ use tracing::debug;
use distribution_types::{Diagnostic, InstalledDist, Name}; use distribution_types::{Diagnostic, InstalledDist, Name};
use uv_cache::Cache; use uv_cache::Cache;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_installer::SitePackages; use uv_installer::SitePackages;
use uv_python::{EnvironmentPreference, PythonEnvironment, PythonRequest}; use uv_python::{EnvironmentPreference, PythonEnvironment, PythonRequest};
@ -21,7 +20,6 @@ pub(crate) fn pip_freeze(
strict: bool, strict: bool,
python: Option<&str>, python: Option<&str>,
system: bool, system: bool,
_preview: PreviewMode,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {

View file

@ -14,7 +14,7 @@ use uv_cache::Cache;
use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, ConfigSettings, ExtrasSpecification, HashCheckingMode, BuildOptions, Concurrency, ConfigSettings, ExtrasSpecification, HashCheckingMode,
IndexStrategy, PreviewMode, Reinstall, SetupPyStrategy, SourceStrategy, Upgrade, IndexStrategy, Reinstall, SetupPyStrategy, SourceStrategy, Upgrade,
}; };
use uv_configuration::{KeyringProviderType, TargetTriple}; use uv_configuration::{KeyringProviderType, TargetTriple};
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
@ -75,7 +75,6 @@ pub(crate) async fn pip_install(
prefix: Option<Prefix>, prefix: Option<Prefix>,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
preview: PreviewMode,
cache: Cache, cache: Cache,
dry_run: bool, dry_run: bool,
printer: Printer, printer: Printer,
@ -321,7 +320,6 @@ pub(crate) async fn pip_install(
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
preview,
); );
let options = OptionsBuilder::new() let options = OptionsBuilder::new()
@ -358,7 +356,6 @@ pub(crate) async fn pip_install(
options, options,
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
printer, printer,
preview,
) )
.await .await
{ {
@ -392,7 +389,6 @@ pub(crate) async fn pip_install(
Box::new(DefaultInstallLogger), Box::new(DefaultInstallLogger),
dry_run, dry_run,
printer, printer,
preview,
) )
.await?; .await?;

View file

@ -11,7 +11,6 @@ use unicode_width::UnicodeWidthStr;
use distribution_types::{Diagnostic, InstalledDist, Name}; use distribution_types::{Diagnostic, InstalledDist, Name};
use uv_cache::Cache; use uv_cache::Cache;
use uv_cli::ListFormat; use uv_cli::ListFormat;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_installer::SitePackages; use uv_installer::SitePackages;
use uv_normalize::PackageName; use uv_normalize::PackageName;
@ -30,7 +29,6 @@ pub(crate) fn pip_list(
strict: bool, strict: bool,
python: Option<&str>, python: Option<&str>,
system: bool, system: bool,
_preview: PreviewMode,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {

View file

@ -21,8 +21,7 @@ use pypi_types::Requirement;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{BaseClientBuilder, RegistryClient}; use uv_client::{BaseClientBuilder, RegistryClient};
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, Constraints, ExtrasSpecification, Overrides, PreviewMode, Reinstall, BuildOptions, Concurrency, Constraints, ExtrasSpecification, Overrides, Reinstall, Upgrade,
Upgrade,
}; };
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
use uv_distribution::DistributionDatabase; use uv_distribution::DistributionDatabase;
@ -111,7 +110,6 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
options: Options, options: Options,
logger: Box<dyn ResolveLogger>, logger: Box<dyn ResolveLogger>,
printer: Printer, printer: Printer,
preview: PreviewMode,
) -> Result<ResolutionGraph, Error> { ) -> Result<ResolutionGraph, Error> {
let start = std::time::Instant::now(); let start = std::time::Instant::now();
@ -122,7 +120,7 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
requirements, requirements,
hasher, hasher,
index, index,
DistributionDatabase::new(client, build_dispatch, concurrency.downloads, preview), DistributionDatabase::new(client, build_dispatch, concurrency.downloads),
) )
.with_reporter(ResolverReporter::from(printer)) .with_reporter(ResolverReporter::from(printer))
.resolve() .resolve()
@ -135,7 +133,7 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
extras, extras,
hasher, hasher,
index, index,
DistributionDatabase::new(client, build_dispatch, concurrency.downloads, preview), DistributionDatabase::new(client, build_dispatch, concurrency.downloads),
) )
.with_reporter(ResolverReporter::from(printer)) .with_reporter(ResolverReporter::from(printer))
.resolve() .resolve()
@ -188,7 +186,7 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
overrides, overrides,
hasher, hasher,
index, index,
DistributionDatabase::new(client, build_dispatch, concurrency.downloads, preview), DistributionDatabase::new(client, build_dispatch, concurrency.downloads),
) )
.with_reporter(ResolverReporter::from(printer)) .with_reporter(ResolverReporter::from(printer))
.resolve() .resolve()
@ -213,7 +211,7 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
&dev, &dev,
hasher, hasher,
index, index,
DistributionDatabase::new(client, build_dispatch, concurrency.downloads, preview), DistributionDatabase::new(client, build_dispatch, concurrency.downloads),
) )
.with_reporter(ResolverReporter::from(printer)) .with_reporter(ResolverReporter::from(printer))
.resolve(&markers) .resolve(&markers)
@ -259,7 +257,7 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
hasher, hasher,
build_dispatch, build_dispatch,
installed_packages, installed_packages,
DistributionDatabase::new(client, build_dispatch, concurrency.downloads, preview), DistributionDatabase::new(client, build_dispatch, concurrency.downloads),
)? )?
.with_reporter(reporter); .with_reporter(reporter);
@ -361,7 +359,6 @@ pub(crate) async fn install(
logger: Box<dyn InstallLogger>, logger: Box<dyn InstallLogger>,
dry_run: bool, dry_run: bool,
printer: Printer, printer: Printer,
preview: PreviewMode,
) -> Result<Changelog, Error> { ) -> Result<Changelog, Error> {
let start = std::time::Instant::now(); let start = std::time::Instant::now();
@ -429,7 +426,7 @@ pub(crate) async fn install(
tags, tags,
hasher, hasher,
build_options, build_options,
DistributionDatabase::new(client, build_dispatch, concurrency.downloads, preview), DistributionDatabase::new(client, build_dispatch, concurrency.downloads),
) )
.with_reporter(PrepareReporter::from(printer).with_length(remote.len() as u64)); .with_reporter(PrepareReporter::from(printer).with_length(remote.len() as u64));

View file

@ -8,7 +8,6 @@ use tracing::debug;
use distribution_types::{Diagnostic, Name}; use distribution_types::{Diagnostic, Name};
use uv_cache::Cache; use uv_cache::Cache;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_installer::SitePackages; use uv_installer::SitePackages;
use uv_normalize::PackageName; use uv_normalize::PackageName;
@ -23,7 +22,6 @@ pub(crate) fn pip_show(
strict: bool, strict: bool,
python: Option<&str>, python: Option<&str>,
system: bool, system: bool,
_preview: PreviewMode,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {

View file

@ -13,7 +13,7 @@ use uv_cache::Cache;
use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, ConfigSettings, ExtrasSpecification, HashCheckingMode, BuildOptions, Concurrency, ConfigSettings, ExtrasSpecification, HashCheckingMode,
IndexStrategy, PreviewMode, Reinstall, SetupPyStrategy, SourceStrategy, Upgrade, IndexStrategy, Reinstall, SetupPyStrategy, SourceStrategy, Upgrade,
}; };
use uv_configuration::{KeyringProviderType, TargetTriple}; use uv_configuration::{KeyringProviderType, TargetTriple};
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
@ -67,7 +67,6 @@ pub(crate) async fn pip_sync(
sources: SourceStrategy, sources: SourceStrategy,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
preview: PreviewMode,
cache: Cache, cache: Cache,
dry_run: bool, dry_run: bool,
printer: Printer, printer: Printer,
@ -267,7 +266,6 @@ pub(crate) async fn pip_sync(
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
preview,
); );
// Determine the set of installed packages. // Determine the set of installed packages.
@ -306,7 +304,6 @@ pub(crate) async fn pip_sync(
options, options,
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
printer, printer,
preview,
) )
.await .await
{ {
@ -340,7 +337,6 @@ pub(crate) async fn pip_sync(
Box::new(DefaultInstallLogger), Box::new(DefaultInstallLogger),
dry_run, dry_run,
printer, printer,
preview,
) )
.await?; .await?;

View file

@ -11,7 +11,7 @@ use pypi_types::Requirement;
use pypi_types::VerbatimParsedUrl; use pypi_types::VerbatimParsedUrl;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{BaseClientBuilder, Connectivity}; use uv_client::{BaseClientBuilder, Connectivity};
use uv_configuration::{KeyringProviderType, PreviewMode}; use uv_configuration::KeyringProviderType;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_python::EnvironmentPreference; use uv_python::EnvironmentPreference;
use uv_python::PythonRequest; use uv_python::PythonRequest;
@ -32,7 +32,6 @@ pub(crate) async fn pip_uninstall(
cache: Cache, cache: Cache,
connectivity: Connectivity, connectivity: Connectivity,
native_tls: bool, native_tls: bool,
_preview: PreviewMode,
keyring_provider: KeyringProviderType, keyring_provider: KeyringProviderType,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {

View file

@ -11,9 +11,7 @@ use tracing::debug;
use uv_auth::{store_credentials_from_url, Credentials}; use uv_auth::{store_credentials_from_url, Credentials};
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{Concurrency, ExtrasSpecification, SetupPyStrategy, SourceStrategy};
Concurrency, ExtrasSpecification, PreviewMode, SetupPyStrategy, SourceStrategy,
};
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
use uv_distribution::DistributionDatabase; use uv_distribution::DistributionDatabase;
use uv_fs::{Simplified, CWD}; use uv_fs::{Simplified, CWD};
@ -61,17 +59,13 @@ pub(crate) async fn add(
script: Option<PathBuf>, script: Option<PathBuf>,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv add` is experimental and may change without warning");
}
for source in &requirements { for source in &requirements {
match source { match source {
RequirementsSource::PyprojectToml(_) => { RequirementsSource::PyprojectToml(_) => {
@ -293,7 +287,6 @@ pub(crate) async fn add(
settings.exclude_newer, settings.exclude_newer,
sources, sources,
concurrency, concurrency,
preview,
); );
// Resolve any unnamed requirements. // Resolve any unnamed requirements.
@ -301,7 +294,7 @@ pub(crate) async fn add(
requirements, requirements,
&hasher, &hasher,
&state.index, &state.index,
DistributionDatabase::new(&client, &build_dispatch, concurrency.downloads, preview), DistributionDatabase::new(&client, &build_dispatch, concurrency.downloads),
) )
.with_reporter(ResolverReporter::from(printer)) .with_reporter(ResolverReporter::from(printer))
.resolve() .resolve()
@ -461,7 +454,6 @@ pub(crate) async fn add(
venv.interpreter(), venv.interpreter(),
settings.as_ref().into(), settings.as_ref().into(),
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -599,7 +591,6 @@ pub(crate) async fn add(
settings.as_ref().into(), settings.as_ref().into(),
&state, &state,
Box::new(DefaultInstallLogger), Box::new(DefaultInstallLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,

View file

@ -4,7 +4,7 @@ use cache_key::{cache_digest, hash_digest};
use distribution_types::Resolution; use distribution_types::Resolution;
use uv_cache::{Cache, CacheBucket}; use uv_cache::{Cache, CacheBucket};
use uv_client::Connectivity; use uv_client::Connectivity;
use uv_configuration::{Concurrency, PreviewMode}; use uv_configuration::Concurrency;
use uv_python::{Interpreter, PythonEnvironment}; use uv_python::{Interpreter, PythonEnvironment};
use uv_requirements::RequirementsSpecification; use uv_requirements::RequirementsSpecification;
@ -34,7 +34,6 @@ impl CachedEnvironment {
state: &SharedState, state: &SharedState,
resolve: Box<dyn ResolveLogger>, resolve: Box<dyn ResolveLogger>,
install: Box<dyn InstallLogger>, install: Box<dyn InstallLogger>,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
@ -64,7 +63,6 @@ impl CachedEnvironment {
settings.as_ref().into(), settings.as_ref().into(),
state, state,
resolve, resolve,
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -114,7 +112,6 @@ impl CachedEnvironment {
settings.as_ref().into(), settings.as_ref().into(),
state, state,
install, install,
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,

View file

@ -8,7 +8,6 @@ use pep440_rs::Version;
use pep508_rs::PackageName; use pep508_rs::PackageName;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{BaseClientBuilder, Connectivity}; use uv_client::{BaseClientBuilder, Connectivity};
use uv_configuration::PreviewMode;
use uv_fs::{absolutize_path, Simplified, CWD}; use uv_fs::{absolutize_path, Simplified, CWD};
use uv_python::{ use uv_python::{
EnvironmentPreference, PythonDownloads, PythonInstallation, PythonPreference, PythonRequest, EnvironmentPreference, PythonDownloads, PythonInstallation, PythonPreference, PythonRequest,
@ -33,7 +32,6 @@ pub(crate) async fn init(
no_readme: bool, no_readme: bool,
python: Option<String>, python: Option<String>,
no_workspace: bool, no_workspace: bool,
preview: PreviewMode,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
connectivity: Connectivity, connectivity: Connectivity,
@ -41,10 +39,6 @@ pub(crate) async fn init(
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv init` is experimental and may change without warning");
}
// Default to the current directory if a path was not provided. // Default to the current directory if a path was not provided.
let path = match explicit_path { let path = match explicit_path {
None => CWD.to_path_buf(), None => CWD.to_path_buf(),

View file

@ -14,9 +14,7 @@ use pypi_types::Requirement;
use uv_auth::store_credentials_from_url; use uv_auth::store_credentials_from_url;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_client::{Connectivity, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{Concurrency, ExtrasSpecification, Reinstall, SetupPyStrategy, Upgrade};
Concurrency, ExtrasSpecification, PreviewMode, Reinstall, SetupPyStrategy, Upgrade,
};
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
use uv_distribution::DistributionDatabase; use uv_distribution::DistributionDatabase;
use uv_fs::CWD; use uv_fs::CWD;
@ -30,7 +28,7 @@ use uv_resolver::{
ResolverMarkers, SatisfiesResult, ResolverMarkers, SatisfiesResult,
}; };
use uv_types::{BuildContext, BuildIsolation, EmptyInstalledPackages, HashStrategy}; use uv_types::{BuildContext, BuildIsolation, EmptyInstalledPackages, HashStrategy};
use uv_warnings::{warn_user, warn_user_once}; use uv_warnings::warn_user;
use uv_workspace::{DiscoveryOptions, SupportedEnvironments, Workspace}; use uv_workspace::{DiscoveryOptions, SupportedEnvironments, Workspace};
use crate::commands::pip::loggers::{DefaultResolveLogger, ResolveLogger, SummaryResolveLogger}; use crate::commands::pip::loggers::{DefaultResolveLogger, ResolveLogger, SummaryResolveLogger};
@ -71,7 +69,7 @@ pub(crate) async fn lock(
frozen: bool, frozen: bool,
python: Option<String>, python: Option<String>,
settings: ResolverSettings, settings: ResolverSettings,
preview: PreviewMode,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
connectivity: Connectivity, connectivity: Connectivity,
@ -80,10 +78,6 @@ pub(crate) async fn lock(
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> anyhow::Result<ExitStatus> { ) -> anyhow::Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv lock` is experimental and may change without warning");
}
// Find the project requirements. // Find the project requirements.
let workspace = Workspace::discover(&CWD, &DiscoveryOptions::default()).await?; let workspace = Workspace::discover(&CWD, &DiscoveryOptions::default()).await?;
@ -109,7 +103,6 @@ pub(crate) async fn lock(
&interpreter, &interpreter,
settings.as_ref(), settings.as_ref(),
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -143,7 +136,7 @@ pub(super) async fn do_safe_lock(
interpreter: &Interpreter, interpreter: &Interpreter,
settings: ResolverSettingsRef<'_>, settings: ResolverSettingsRef<'_>,
logger: Box<dyn ResolveLogger>, logger: Box<dyn ResolveLogger>,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
@ -181,7 +174,6 @@ pub(super) async fn do_safe_lock(
settings, settings,
&state, &state,
logger, logger,
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -208,7 +200,6 @@ pub(super) async fn do_safe_lock(
settings, settings,
&state, &state,
logger, logger,
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -234,7 +225,7 @@ async fn do_lock(
settings: ResolverSettingsRef<'_>, settings: ResolverSettingsRef<'_>,
state: &SharedState, state: &SharedState,
logger: Box<dyn ResolveLogger>, logger: Box<dyn ResolveLogger>,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
@ -421,18 +412,16 @@ async fn do_lock(
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
preview,
); );
let database = let database = DistributionDatabase::new(&client, &build_dispatch, concurrency.downloads);
DistributionDatabase::new(&client, &build_dispatch, concurrency.downloads, preview);
// Annoyingly, we have to resolve any unnamed overrides upfront. // Annoyingly, we have to resolve any unnamed overrides upfront.
let overrides = NamedRequirementsResolver::new( let overrides = NamedRequirementsResolver::new(
overrides, overrides,
&hasher, &hasher,
&state.index, &state.index,
DistributionDatabase::new(&client, &build_dispatch, concurrency.downloads, preview), DistributionDatabase::new(&client, &build_dispatch, concurrency.downloads),
) )
.with_reporter(ResolverReporter::from(printer)) .with_reporter(ResolverReporter::from(printer))
.resolve() .resolve()
@ -545,7 +534,6 @@ async fn do_lock(
options, options,
Box::new(SummaryResolveLogger), Box::new(SummaryResolveLogger),
printer, printer,
preview,
) )
.await?; .await?;

View file

@ -11,9 +11,7 @@ use pypi_types::Requirement;
use uv_auth::store_credentials_from_url; use uv_auth::store_credentials_from_url;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{Concurrency, ExtrasSpecification, Reinstall, SetupPyStrategy, Upgrade};
Concurrency, ExtrasSpecification, PreviewMode, Reinstall, SetupPyStrategy, Upgrade,
};
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
use uv_distribution::DistributionDatabase; use uv_distribution::DistributionDatabase;
use uv_fs::Simplified; use uv_fs::Simplified;
@ -397,7 +395,6 @@ pub(crate) async fn resolve_names(
interpreter: &Interpreter, interpreter: &Interpreter,
settings: &ResolverInstallerSettings, settings: &ResolverInstallerSettings,
state: &SharedState, state: &SharedState,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
@ -478,7 +475,6 @@ pub(crate) async fn resolve_names(
*exclude_newer, *exclude_newer,
*sources, *sources,
concurrency, concurrency,
preview,
); );
// Initialize the resolver. // Initialize the resolver.
@ -486,7 +482,7 @@ pub(crate) async fn resolve_names(
requirements, requirements,
&hasher, &hasher,
&state.index, &state.index,
DistributionDatabase::new(&client, &build_dispatch, concurrency.downloads, preview), DistributionDatabase::new(&client, &build_dispatch, concurrency.downloads),
) )
.with_reporter(ResolverReporter::from(printer)); .with_reporter(ResolverReporter::from(printer));
@ -500,7 +496,6 @@ pub(crate) async fn resolve_environment<'a>(
settings: ResolverSettingsRef<'_>, settings: ResolverSettingsRef<'_>,
state: &SharedState, state: &SharedState,
logger: Box<dyn ResolveLogger>, logger: Box<dyn ResolveLogger>,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
@ -616,7 +611,6 @@ pub(crate) async fn resolve_environment<'a>(
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
preview,
); );
// Resolve the requirements. // Resolve the requirements.
@ -645,7 +639,6 @@ pub(crate) async fn resolve_environment<'a>(
options, options,
logger, logger,
printer, printer,
preview,
) )
.await?) .await?)
} }
@ -657,7 +650,6 @@ pub(crate) async fn sync_environment(
settings: InstallerSettingsRef<'_>, settings: InstallerSettingsRef<'_>,
state: &SharedState, state: &SharedState,
logger: Box<dyn InstallLogger>, logger: Box<dyn InstallLogger>,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
@ -742,7 +734,6 @@ pub(crate) async fn sync_environment(
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
preview,
); );
// Sync the environment. // Sync the environment.
@ -766,7 +757,6 @@ pub(crate) async fn sync_environment(
logger, logger,
dry_run, dry_run,
printer, printer,
preview,
) )
.await?; .await?;
@ -800,7 +790,6 @@ pub(crate) async fn update_environment(
state: &SharedState, state: &SharedState,
resolve: Box<dyn ResolveLogger>, resolve: Box<dyn ResolveLogger>,
install: Box<dyn InstallLogger>, install: Box<dyn InstallLogger>,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
@ -939,7 +928,6 @@ pub(crate) async fn update_environment(
*exclude_newer, *exclude_newer,
*sources, *sources,
concurrency, concurrency,
preview,
); );
// Resolve the requirements. // Resolve the requirements.
@ -968,7 +956,6 @@ pub(crate) async fn update_environment(
options, options,
resolve, resolve,
printer, printer,
preview,
) )
.await .await
{ {
@ -997,7 +984,6 @@ pub(crate) async fn update_environment(
install, install,
dry_run, dry_run,
printer, printer,
preview,
) )
.await?; .await?;

View file

@ -6,7 +6,7 @@ use owo_colors::OwoColorize;
use pep508_rs::PackageName; use pep508_rs::PackageName;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::Connectivity; use uv_client::Connectivity;
use uv_configuration::{Concurrency, ExtrasSpecification, PreviewMode}; use uv_configuration::{Concurrency, ExtrasSpecification};
use uv_fs::{Simplified, CWD}; use uv_fs::{Simplified, CWD};
use uv_python::{PythonDownloads, PythonPreference, PythonRequest}; use uv_python::{PythonDownloads, PythonPreference, PythonRequest};
use uv_scripts::Pep723Script; use uv_scripts::Pep723Script;
@ -35,17 +35,13 @@ pub(crate) async fn remove(
script: Option<Pep723Script>, script: Option<Pep723Script>,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv remove` is experimental and may change without warning");
}
let target = if let Some(script) = script { let target = if let Some(script) = script {
// If we found a PEP 723 script and the user provided a project-only setting, warn. // If we found a PEP 723 script and the user provided a project-only setting, warn.
if package.is_some() { if package.is_some() {
@ -178,7 +174,6 @@ pub(crate) async fn remove(
venv.interpreter(), venv.interpreter(),
settings.as_ref().into(), settings.as_ref().into(),
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -210,7 +205,6 @@ pub(crate) async fn remove(
settings.as_ref().into(), settings.as_ref().into(),
&state, &state,
Box::new(DefaultInstallLogger), Box::new(DefaultInstallLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,

View file

@ -14,7 +14,7 @@ use tracing::debug;
use uv_cache::Cache; use uv_cache::Cache;
use uv_cli::ExternalCommand; use uv_cli::ExternalCommand;
use uv_client::{BaseClientBuilder, Connectivity}; use uv_client::{BaseClientBuilder, Connectivity};
use uv_configuration::{Concurrency, ExtrasSpecification, PreviewMode}; use uv_configuration::{Concurrency, ExtrasSpecification};
use uv_distribution::LoweredRequirement; use uv_distribution::LoweredRequirement;
use uv_fs::{PythonExt, Simplified, CWD}; use uv_fs::{PythonExt, Simplified, CWD};
use uv_installer::{SatisfiesResult, SitePackages}; use uv_installer::{SatisfiesResult, SitePackages};
@ -56,7 +56,7 @@ pub(crate) async fn run(
dev: bool, dev: bool,
python: Option<String>, python: Option<String>,
settings: ResolverInstallerSettings, settings: ResolverInstallerSettings,
preview: PreviewMode,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
connectivity: Connectivity, connectivity: Connectivity,
@ -65,10 +65,6 @@ pub(crate) async fn run(
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> anyhow::Result<ExitStatus> { ) -> anyhow::Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv run` is experimental and may change without warning");
}
// These cases seem quite complex because (in theory) they should change the "current package". // These cases seem quite complex because (in theory) they should change the "current package".
// Let's ban them entirely for now. // Let's ban them entirely for now.
for source in &requirements { for source in &requirements {
@ -158,7 +154,6 @@ pub(crate) async fn run(
requirement, requirement,
script_dir, script_dir,
script_sources, script_sources,
preview,
) )
.map(LoweredRequirement::into_inner) .map(LoweredRequirement::into_inner)
}) })
@ -179,7 +174,6 @@ pub(crate) async fn run(
} else { } else {
Box::new(SummaryInstallLogger) Box::new(SummaryInstallLogger)
}, },
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -347,7 +341,6 @@ pub(crate) async fn run(
) )
.await?; .await?;
// Note we force preview on during `uv run` for now since the entire interface is in preview.
PythonInstallation::find_or_download( PythonInstallation::find_or_download(
python_request, python_request,
EnvironmentPreference::Any, EnvironmentPreference::Any,
@ -398,7 +391,6 @@ pub(crate) async fn run(
} else { } else {
Box::new(SummaryResolveLogger) Box::new(SummaryResolveLogger)
}, },
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -432,7 +424,6 @@ pub(crate) async fn run(
} else { } else {
Box::new(SummaryInstallLogger) Box::new(SummaryInstallLogger)
}, },
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -545,7 +536,6 @@ pub(crate) async fn run(
} else { } else {
Box::new(SummaryInstallLogger) Box::new(SummaryInstallLogger)
}, },
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,

View file

@ -4,9 +4,7 @@ use pep508_rs::MarkerTree;
use uv_auth::store_credentials_from_url; use uv_auth::store_credentials_from_url;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_client::{Connectivity, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{Concurrency, ExtrasSpecification, HashCheckingMode, SetupPyStrategy};
Concurrency, ExtrasSpecification, HashCheckingMode, PreviewMode, SetupPyStrategy,
};
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
use uv_fs::CWD; use uv_fs::CWD;
use uv_installer::SitePackages; use uv_installer::SitePackages;
@ -14,7 +12,6 @@ use uv_normalize::{PackageName, DEV_DEPENDENCIES};
use uv_python::{PythonDownloads, PythonEnvironment, PythonPreference, PythonRequest}; use uv_python::{PythonDownloads, PythonEnvironment, PythonPreference, PythonRequest};
use uv_resolver::{FlatIndex, Lock}; use uv_resolver::{FlatIndex, Lock};
use uv_types::{BuildIsolation, HashStrategy}; use uv_types::{BuildIsolation, HashStrategy};
use uv_warnings::warn_user_once;
use uv_workspace::{DiscoveryOptions, VirtualProject, Workspace}; use uv_workspace::{DiscoveryOptions, VirtualProject, Workspace};
use crate::commands::pip::loggers::{DefaultInstallLogger, DefaultResolveLogger, InstallLogger}; use crate::commands::pip::loggers::{DefaultInstallLogger, DefaultResolveLogger, InstallLogger};
@ -38,17 +35,13 @@ pub(crate) async fn sync(
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
settings: ResolverInstallerSettings, settings: ResolverInstallerSettings,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv sync` is experimental and may change without warning");
}
// Identify the project. // Identify the project.
let project = if let Some(package) = package { let project = if let Some(package) = package {
VirtualProject::Project( VirtualProject::Project(
@ -81,7 +74,6 @@ pub(crate) async fn sync(
venv.interpreter(), venv.interpreter(),
settings.as_ref().into(), settings.as_ref().into(),
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -115,7 +107,6 @@ pub(crate) async fn sync(
settings.as_ref().into(), settings.as_ref().into(),
&state, &state,
Box::new(DefaultInstallLogger), Box::new(DefaultInstallLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -138,7 +129,7 @@ pub(super) async fn do_sync(
settings: InstallerSettingsRef<'_>, settings: InstallerSettingsRef<'_>,
state: &SharedState, state: &SharedState,
logger: Box<dyn InstallLogger>, logger: Box<dyn InstallLogger>,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
@ -257,7 +248,6 @@ pub(super) async fn do_sync(
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
preview,
); );
let site_packages = SitePackages::from_environment(venv)?; let site_packages = SitePackages::from_environment(venv)?;
@ -283,7 +273,6 @@ pub(super) async fn do_sync(
logger, logger,
dry_run, dry_run,
printer, printer,
preview,
) )
.await?; .await?;

View file

@ -6,11 +6,10 @@ use anyhow::Result;
use pep508_rs::PackageName; use pep508_rs::PackageName;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::Connectivity; use uv_client::Connectivity;
use uv_configuration::{Concurrency, PreviewMode, TargetTriple}; use uv_configuration::{Concurrency, TargetTriple};
use uv_fs::CWD; use uv_fs::CWD;
use uv_python::{PythonDownloads, PythonPreference, PythonRequest, PythonVersion}; use uv_python::{PythonDownloads, PythonPreference, PythonRequest, PythonVersion};
use uv_resolver::TreeDisplay; use uv_resolver::TreeDisplay;
use uv_warnings::warn_user_once;
use uv_workspace::{DiscoveryOptions, Workspace}; use uv_workspace::{DiscoveryOptions, Workspace};
use crate::commands::pip::loggers::DefaultResolveLogger; use crate::commands::pip::loggers::DefaultResolveLogger;
@ -36,17 +35,13 @@ pub(crate) async fn tree(
settings: ResolverSettings, settings: ResolverSettings,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
preview: PreviewMode,
connectivity: Connectivity, connectivity: Connectivity,
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv tree` is experimental and may change without warning");
}
// Find the project requirements. // Find the project requirements.
let workspace = Workspace::discover(&CWD, &DiscoveryOptions::default()).await?; let workspace = Workspace::discover(&CWD, &DiscoveryOptions::default()).await?;
@ -72,7 +67,6 @@ pub(crate) async fn tree(
&interpreter, &interpreter,
settings.as_ref(), settings.as_ref(),
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,

View file

@ -2,16 +2,11 @@ use anstream::println;
use anyhow::Context; use anyhow::Context;
use owo_colors::OwoColorize; use owo_colors::OwoColorize;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_python::managed::ManagedPythonInstallations; use uv_python::managed::ManagedPythonInstallations;
use uv_warnings::warn_user_once;
/// Show the toolchain directory. /// Show the toolchain directory.
pub(crate) fn dir(preview: PreviewMode) -> anyhow::Result<()> { pub(crate) fn dir() -> anyhow::Result<()> {
if preview.is_disabled() {
warn_user_once!("`uv python dir` is experimental and may change without warning");
}
let installed_toolchains = ManagedPythonInstallations::from_settings() let installed_toolchains = ManagedPythonInstallations::from_settings()
.context("Failed to initialize toolchain settings")?; .context("Failed to initialize toolchain settings")?;
println!( println!(

View file

@ -2,10 +2,8 @@ use anstream::println;
use anyhow::Result; use anyhow::Result;
use uv_cache::Cache; use uv_cache::Cache;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_python::{EnvironmentPreference, PythonInstallation, PythonPreference, PythonRequest}; use uv_python::{EnvironmentPreference, PythonInstallation, PythonPreference, PythonRequest};
use uv_warnings::warn_user_once;
use crate::commands::ExitStatus; use crate::commands::ExitStatus;
@ -13,13 +11,8 @@ use crate::commands::ExitStatus;
pub(crate) async fn find( pub(crate) async fn find(
request: Option<String>, request: Option<String>,
python_preference: PythonPreference, python_preference: PythonPreference,
preview: PreviewMode,
cache: &Cache, cache: &Cache,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv python find` is experimental and may change without warning");
}
let request = match request { let request = match request {
Some(request) => PythonRequest::parse(&request), Some(request) => PythonRequest::parse(&request),
None => PythonRequest::Any, None => PythonRequest::Any,

View file

@ -11,7 +11,6 @@ use owo_colors::OwoColorize;
use tracing::debug; use tracing::debug;
use uv_client::Connectivity; use uv_client::Connectivity;
use uv_configuration::PreviewMode;
use uv_fs::CWD; use uv_fs::CWD;
use uv_python::downloads::{DownloadResult, ManagedPythonDownload, PythonDownloadRequest}; use uv_python::downloads::{DownloadResult, ManagedPythonDownload, PythonDownloadRequest};
use uv_python::managed::{ManagedPythonInstallation, ManagedPythonInstallations}; use uv_python::managed::{ManagedPythonInstallation, ManagedPythonInstallations};
@ -19,7 +18,6 @@ use uv_python::{
requests_from_version_file, PythonDownloads, PythonRequest, PYTHON_VERSIONS_FILENAME, requests_from_version_file, PythonDownloads, PythonRequest, PYTHON_VERSIONS_FILENAME,
PYTHON_VERSION_FILENAME, PYTHON_VERSION_FILENAME,
}; };
use uv_warnings::warn_user_once;
use crate::commands::python::{ChangeEvent, ChangeEventKind}; use crate::commands::python::{ChangeEvent, ChangeEventKind};
use crate::commands::reporters::PythonDownloadReporter; use crate::commands::reporters::PythonDownloadReporter;
@ -33,14 +31,9 @@ pub(crate) async fn install(
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
native_tls: bool, native_tls: bool,
connectivity: Connectivity, connectivity: Connectivity,
preview: PreviewMode,
no_config: bool, no_config: bool,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv python install` is experimental and may change without warning");
}
let start = std::time::Instant::now(); let start = std::time::Instant::now();
let installations = ManagedPythonInstallations::from_settings()?.init()?; let installations = ManagedPythonInstallations::from_settings()?.init()?;

View file

@ -5,14 +5,12 @@ use anyhow::Result;
use owo_colors::OwoColorize; use owo_colors::OwoColorize;
use uv_cache::Cache; use uv_cache::Cache;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_python::downloads::PythonDownloadRequest; use uv_python::downloads::PythonDownloadRequest;
use uv_python::{ use uv_python::{
find_python_installations, DiscoveryError, EnvironmentPreference, PythonDownloads, find_python_installations, DiscoveryError, EnvironmentPreference, PythonDownloads,
PythonInstallation, PythonNotFound, PythonPreference, PythonRequest, PythonSource, PythonInstallation, PythonNotFound, PythonPreference, PythonRequest, PythonSource,
}; };
use uv_warnings::warn_user_once;
use crate::commands::ExitStatus; use crate::commands::ExitStatus;
use crate::printer::Printer; use crate::printer::Printer;
@ -33,14 +31,9 @@ pub(crate) async fn list(
all_platforms: bool, all_platforms: bool,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
preview: PreviewMode,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv python list` is experimental and may change without warning");
}
let mut output = BTreeSet::new(); let mut output = BTreeSet::new();
if python_preference != PythonPreference::OnlySystem { if python_preference != PythonPreference::OnlySystem {
let download_request = match kinds { let download_request = match kinds {

View file

@ -6,7 +6,6 @@ use owo_colors::OwoColorize;
use tracing::debug; use tracing::debug;
use uv_cache::Cache; use uv_cache::Cache;
use uv_configuration::PreviewMode;
use uv_fs::{Simplified, CWD}; use uv_fs::{Simplified, CWD};
use uv_python::{ use uv_python::{
request_from_version_file, requests_from_version_file, write_version_file, request_from_version_file, requests_from_version_file, write_version_file,
@ -24,15 +23,10 @@ pub(crate) async fn pin(
request: Option<String>, request: Option<String>,
resolved: bool, resolved: bool,
python_preference: PythonPreference, python_preference: PythonPreference,
preview: PreviewMode,
no_workspace: bool, no_workspace: bool,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv python pin` is experimental and may change without warning");
}
let virtual_project = if no_workspace { let virtual_project = if no_workspace {
None None
} else { } else {

View file

@ -7,11 +7,9 @@ use futures::StreamExt;
use itertools::Itertools; use itertools::Itertools;
use owo_colors::OwoColorize; use owo_colors::OwoColorize;
use uv_configuration::PreviewMode;
use uv_python::downloads::PythonDownloadRequest; use uv_python::downloads::PythonDownloadRequest;
use uv_python::managed::ManagedPythonInstallations; use uv_python::managed::ManagedPythonInstallations;
use uv_python::PythonRequest; use uv_python::PythonRequest;
use uv_warnings::warn_user_once;
use crate::commands::python::{ChangeEvent, ChangeEventKind}; use crate::commands::python::{ChangeEvent, ChangeEventKind};
use crate::commands::{elapsed, ExitStatus}; use crate::commands::{elapsed, ExitStatus};
@ -21,13 +19,9 @@ use crate::printer::Printer;
pub(crate) async fn uninstall( pub(crate) async fn uninstall(
targets: Vec<String>, targets: Vec<String>,
all: bool, all: bool,
preview: PreviewMode,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv python uninstall` is experimental and may change without warning");
}
let start = std::time::Instant::now(); let start = std::time::Instant::now();
let installations = ManagedPythonInstallations::from_settings()?.init()?; let installations = ManagedPythonInstallations::from_settings()?.init()?;

View file

@ -5,14 +5,9 @@ use owo_colors::OwoColorize;
use uv_configuration::PreviewMode; use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_tool::{find_executable_directory, InstalledTools}; use uv_tool::{find_executable_directory, InstalledTools};
use uv_warnings::warn_user_once;
/// Show the tool directory. /// Show the tool directory.
pub(crate) fn dir(bin: bool, preview: PreviewMode) -> anyhow::Result<()> { pub(crate) fn dir(bin: bool, _preview: PreviewMode) -> anyhow::Result<()> {
if preview.is_disabled() {
warn_user_once!("`uv tool dir` is experimental and may change without warning");
}
if bin { if bin {
let executable_directory = find_executable_directory()?; let executable_directory = find_executable_directory()?;
println!("{}", executable_directory.simplified_display().cyan()); println!("{}", executable_directory.simplified_display().cyan());

View file

@ -8,7 +8,7 @@ use tracing::debug;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::{BaseClientBuilder, Connectivity}; use uv_client::{BaseClientBuilder, Connectivity};
use uv_configuration::{Concurrency, PreviewMode}; use uv_configuration::Concurrency;
use uv_normalize::PackageName; use uv_normalize::PackageName;
use uv_python::{ use uv_python::{
EnvironmentPreference, PythonDownloads, PythonInstallation, PythonPreference, PythonRequest, EnvironmentPreference, PythonDownloads, PythonInstallation, PythonPreference, PythonRequest,
@ -16,7 +16,7 @@ use uv_python::{
use uv_requirements::{RequirementsSource, RequirementsSpecification}; use uv_requirements::{RequirementsSource, RequirementsSpecification};
use uv_settings::{ResolverInstallerOptions, ToolOptions}; use uv_settings::{ResolverInstallerOptions, ToolOptions};
use uv_tool::InstalledTools; use uv_tool::InstalledTools;
use uv_warnings::{warn_user, warn_user_once}; use uv_warnings::warn_user;
use crate::commands::pip::loggers::{DefaultInstallLogger, DefaultResolveLogger}; use crate::commands::pip::loggers::{DefaultInstallLogger, DefaultResolveLogger};
@ -39,7 +39,6 @@ pub(crate) async fn install(
force: bool, force: bool,
options: ResolverInstallerOptions, options: ResolverInstallerOptions,
settings: ResolverInstallerSettings, settings: ResolverInstallerSettings,
preview: PreviewMode,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
connectivity: Connectivity, connectivity: Connectivity,
@ -48,10 +47,6 @@ pub(crate) async fn install(
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv tool install` is experimental and may change without warning");
}
let client_builder = BaseClientBuilder::new() let client_builder = BaseClientBuilder::new()
.connectivity(connectivity) .connectivity(connectivity)
.native_tls(native_tls); .native_tls(native_tls);
@ -104,7 +99,6 @@ pub(crate) async fn install(
&interpreter, &interpreter,
&settings, &settings,
&state, &state,
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -142,7 +136,6 @@ pub(crate) async fn install(
&interpreter, &interpreter,
&settings, &settings,
&state, &state,
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -167,7 +160,6 @@ pub(crate) async fn install(
&interpreter, &interpreter,
&settings, &settings,
&state, &state,
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -284,7 +276,6 @@ pub(crate) async fn install(
&state, &state,
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
Box::new(DefaultInstallLogger), Box::new(DefaultInstallLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -310,7 +301,6 @@ pub(crate) async fn install(
settings.as_ref().into(), settings.as_ref().into(),
&state, &state,
Box::new(DefaultResolveLogger), Box::new(DefaultResolveLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -334,7 +324,6 @@ pub(crate) async fn install(
settings.as_ref().into(), settings.as_ref().into(),
&state, &state,
Box::new(DefaultInstallLogger), Box::new(DefaultInstallLogger),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,

View file

@ -4,25 +4,15 @@ use anyhow::Result;
use owo_colors::OwoColorize; use owo_colors::OwoColorize;
use uv_cache::Cache; use uv_cache::Cache;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_tool::InstalledTools; use uv_tool::InstalledTools;
use uv_warnings::{warn_user, warn_user_once}; use uv_warnings::warn_user;
use crate::commands::ExitStatus; use crate::commands::ExitStatus;
use crate::printer::Printer; use crate::printer::Printer;
/// List installed tools. /// List installed tools.
pub(crate) async fn list( pub(crate) async fn list(show_paths: bool, cache: &Cache, printer: Printer) -> Result<ExitStatus> {
show_paths: bool,
preview: PreviewMode,
cache: &Cache,
printer: Printer,
) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv tool list` is experimental and may change without warning");
}
let installed_tools = InstalledTools::from_settings()?; let installed_tools = InstalledTools::from_settings()?;
let _lock = match installed_tools.acquire_lock() { let _lock = match installed_tools.acquire_lock() {
Ok(lock) => lock, Ok(lock) => lock,

View file

@ -18,7 +18,7 @@ use pypi_types::{Requirement, RequirementSource};
use uv_cache::{Cache, Refresh, Timestamp}; use uv_cache::{Cache, Refresh, Timestamp};
use uv_cli::ExternalCommand; use uv_cli::ExternalCommand;
use uv_client::{BaseClientBuilder, Connectivity}; use uv_client::{BaseClientBuilder, Connectivity};
use uv_configuration::{Concurrency, PreviewMode}; use uv_configuration::Concurrency;
use uv_installer::{SatisfiesResult, SitePackages}; use uv_installer::{SatisfiesResult, SitePackages};
use uv_normalize::PackageName; use uv_normalize::PackageName;
use uv_python::{ use uv_python::{
@ -27,7 +27,7 @@ use uv_python::{
}; };
use uv_requirements::{RequirementsSource, RequirementsSpecification}; use uv_requirements::{RequirementsSource, RequirementsSpecification};
use uv_tool::{entrypoint_paths, InstalledTools}; use uv_tool::{entrypoint_paths, InstalledTools};
use uv_warnings::{warn_user, warn_user_once}; use uv_warnings::warn_user;
use crate::commands::pip::loggers::{ use crate::commands::pip::loggers::{
DefaultInstallLogger, DefaultResolveLogger, SummaryInstallLogger, SummaryResolveLogger, DefaultInstallLogger, DefaultResolveLogger, SummaryInstallLogger, SummaryResolveLogger,
@ -70,7 +70,6 @@ pub(crate) async fn run(
settings: ResolverInstallerSettings, settings: ResolverInstallerSettings,
invocation_source: ToolRunCommand, invocation_source: ToolRunCommand,
isolated: bool, isolated: bool,
preview: PreviewMode,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
connectivity: Connectivity, connectivity: Connectivity,
@ -79,13 +78,9 @@ pub(crate) async fn run(
cache: Cache, cache: Cache,
printer: Printer, printer: Printer,
) -> anyhow::Result<ExitStatus> { ) -> anyhow::Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`{invocation_source}` is experimental and may change without warning");
}
// treat empty command as `uv tool list` // treat empty command as `uv tool list`
let Some(command) = command else { let Some(command) = command else {
return tool_list(false, PreviewMode::Enabled, &cache, printer).await; return tool_list(false, &cache, printer).await;
}; };
let (target, args) = command.split(); let (target, args) = command.split();
@ -110,7 +105,6 @@ pub(crate) async fn run(
python.as_deref(), python.as_deref(),
&settings, &settings,
isolated, isolated,
preview,
python_preference, python_preference,
python_downloads, python_downloads,
connectivity, connectivity,
@ -380,7 +374,6 @@ async fn get_or_create_environment(
python: Option<&str>, python: Option<&str>,
settings: &ResolverInstallerSettings, settings: &ResolverInstallerSettings,
isolated: bool, isolated: bool,
preview: PreviewMode,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
connectivity: Connectivity, connectivity: Connectivity,
@ -456,7 +449,6 @@ async fn get_or_create_environment(
&interpreter, &interpreter,
settings, settings,
&state, &state,
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -486,7 +478,6 @@ async fn get_or_create_environment(
&interpreter, &interpreter,
settings, settings,
&state, &state,
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,
@ -559,7 +550,6 @@ async fn get_or_create_environment(
} else { } else {
Box::new(SummaryInstallLogger) Box::new(SummaryInstallLogger)
}, },
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,

View file

@ -5,25 +5,15 @@ use itertools::Itertools;
use owo_colors::OwoColorize; use owo_colors::OwoColorize;
use tracing::debug; use tracing::debug;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_normalize::PackageName; use uv_normalize::PackageName;
use uv_tool::{InstalledTools, Tool, ToolEntrypoint}; use uv_tool::{InstalledTools, Tool, ToolEntrypoint};
use uv_warnings::warn_user_once;
use crate::commands::ExitStatus; use crate::commands::ExitStatus;
use crate::printer::Printer; use crate::printer::Printer;
/// Uninstall a tool. /// Uninstall a tool.
pub(crate) async fn uninstall( pub(crate) async fn uninstall(name: Option<PackageName>, printer: Printer) -> Result<ExitStatus> {
name: Option<PackageName>,
preview: PreviewMode,
printer: Printer,
) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv tool uninstall` is experimental and may change without warning");
}
let installed_tools = InstalledTools::from_settings()?.init()?; let installed_tools = InstalledTools::from_settings()?.init()?;
let _lock = match installed_tools.acquire_lock() { let _lock = match installed_tools.acquire_lock() {
Ok(lock) => lock, Ok(lock) => lock,

View file

@ -7,21 +7,15 @@ use owo_colors::OwoColorize;
use tokio::io::AsyncWriteExt; use tokio::io::AsyncWriteExt;
use tracing::debug; use tracing::debug;
use uv_configuration::PreviewMode;
use uv_fs::Simplified; use uv_fs::Simplified;
use uv_shell::Shell; use uv_shell::Shell;
use uv_tool::find_executable_directory; use uv_tool::find_executable_directory;
use uv_warnings::warn_user_once;
use crate::commands::ExitStatus; use crate::commands::ExitStatus;
use crate::printer::Printer; use crate::printer::Printer;
/// Ensure that the executable directory is in PATH. /// Ensure that the executable directory is in PATH.
pub(crate) async fn update_shell(preview: PreviewMode, printer: Printer) -> Result<ExitStatus> { pub(crate) async fn update_shell(printer: Printer) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv tool update-shell` is experimental and may change without warning");
}
let executable_directory = find_executable_directory()?; let executable_directory = find_executable_directory()?;
debug!( debug!(
"Ensuring that the executable directory is in PATH: {}", "Ensuring that the executable directory is in PATH: {}",

View file

@ -6,12 +6,11 @@ use tracing::debug;
use uv_cache::Cache; use uv_cache::Cache;
use uv_client::Connectivity; use uv_client::Connectivity;
use uv_configuration::{Concurrency, PreviewMode}; use uv_configuration::Concurrency;
use uv_normalize::PackageName; use uv_normalize::PackageName;
use uv_requirements::RequirementsSpecification; use uv_requirements::RequirementsSpecification;
use uv_settings::{Combine, ResolverInstallerOptions, ToolOptions}; use uv_settings::{Combine, ResolverInstallerOptions, ToolOptions};
use uv_tool::InstalledTools; use uv_tool::InstalledTools;
use uv_warnings::warn_user_once;
use crate::commands::pip::loggers::{SummaryResolveLogger, UpgradeInstallLogger}; use crate::commands::pip::loggers::{SummaryResolveLogger, UpgradeInstallLogger};
use crate::commands::project::{update_environment, EnvironmentUpdate}; use crate::commands::project::{update_environment, EnvironmentUpdate};
@ -29,13 +28,9 @@ pub(crate) async fn upgrade(
concurrency: Concurrency, concurrency: Concurrency,
native_tls: bool, native_tls: bool,
cache: &Cache, cache: &Cache,
preview: PreviewMode,
printer: Printer, printer: Printer,
) -> Result<ExitStatus> { ) -> Result<ExitStatus> {
if preview.is_disabled() {
warn_user_once!("`uv tool upgrade` is experimental and may change without warning");
}
// Initialize any shared state. // Initialize any shared state.
let state = SharedState::default(); let state = SharedState::default();
@ -136,7 +131,6 @@ pub(crate) async fn upgrade(
&state, &state,
Box::new(SummaryResolveLogger), Box::new(SummaryResolveLogger),
Box::new(UpgradeInstallLogger::new(name.clone())), Box::new(UpgradeInstallLogger::new(name.clone())),
preview,
connectivity, connectivity,
concurrency, concurrency,
native_tls, native_tls,

View file

@ -17,7 +17,7 @@ use uv_cache::Cache;
use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_client::{BaseClientBuilder, Connectivity, FlatIndexClient, RegistryClientBuilder};
use uv_configuration::{ use uv_configuration::{
BuildOptions, Concurrency, ConfigSettings, IndexStrategy, KeyringProviderType, NoBinary, BuildOptions, Concurrency, ConfigSettings, IndexStrategy, KeyringProviderType, NoBinary,
NoBuild, PreviewMode, SetupPyStrategy, SourceStrategy, NoBuild, SetupPyStrategy, SourceStrategy,
}; };
use uv_dispatch::BuildDispatch; use uv_dispatch::BuildDispatch;
use uv_fs::{Simplified, CWD}; use uv_fs::{Simplified, CWD};
@ -56,7 +56,6 @@ pub(crate) async fn venv(
allow_existing: bool, allow_existing: bool,
exclude_newer: Option<ExcludeNewer>, exclude_newer: Option<ExcludeNewer>,
native_tls: bool, native_tls: bool,
preview: PreviewMode,
cache: &Cache, cache: &Cache,
printer: Printer, printer: Printer,
relocatable: bool, relocatable: bool,
@ -72,7 +71,6 @@ pub(crate) async fn venv(
system_site_packages, system_site_packages,
connectivity, connectivity,
seed, seed,
preview,
python_preference, python_preference,
python_downloads, python_downloads,
allow_existing, allow_existing,
@ -124,7 +122,6 @@ async fn venv_impl(
system_site_packages: bool, system_site_packages: bool,
connectivity: Connectivity, connectivity: Connectivity,
seed: bool, seed: bool,
preview: PreviewMode,
python_preference: PythonPreference, python_preference: PythonPreference,
python_downloads: PythonDownloads, python_downloads: PythonDownloads,
allow_existing: bool, allow_existing: bool,
@ -134,10 +131,6 @@ async fn venv_impl(
printer: Printer, printer: Printer,
relocatable: bool, relocatable: bool,
) -> miette::Result<ExitStatus> { ) -> miette::Result<ExitStatus> {
if preview.is_disabled() && relocatable {
warn_user_once!("`--relocatable` is experimental and may change without warning");
}
let client_builder = BaseClientBuilder::default() let client_builder = BaseClientBuilder::default()
.connectivity(connectivity) .connectivity(connectivity)
.native_tls(native_tls); .native_tls(native_tls);
@ -148,7 +141,7 @@ async fn venv_impl(
let mut interpreter_request = python_request.map(PythonRequest::parse); let mut interpreter_request = python_request.map(PythonRequest::parse);
// (2) Request from `.python-version` // (2) Request from `.python-version`
if preview.is_enabled() && interpreter_request.is_none() { if interpreter_request.is_none() {
interpreter_request = interpreter_request =
request_from_version_file(&std::env::current_dir().into_diagnostic()?) request_from_version_file(&std::env::current_dir().into_diagnostic()?)
.await .await
@ -156,7 +149,7 @@ async fn venv_impl(
} }
// (3) `Requires-Python` in `pyproject.toml` // (3) `Requires-Python` in `pyproject.toml`
if preview.is_enabled() && interpreter_request.is_none() { if interpreter_request.is_none() {
let project = match VirtualProject::discover(&CWD, &DiscoveryOptions::default()).await { let project = match VirtualProject::discover(&CWD, &DiscoveryOptions::default()).await {
Ok(project) => Some(project), Ok(project) => Some(project),
Err(WorkspaceError::MissingProject(_)) => None, Err(WorkspaceError::MissingProject(_)) => None,
@ -305,7 +298,6 @@ async fn venv_impl(
exclude_newer, exclude_newer,
sources, sources,
concurrency, concurrency,
preview,
); );
// Resolve the seed packages. // Resolve the seed packages.

View file

@ -159,7 +159,7 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
.combine(filesystem); .combine(filesystem);
// Resolve the global settings. // Resolve the global settings.
let globals = GlobalSettings::resolve(&cli.command, &cli.global_args, filesystem.as_ref()); let globals = GlobalSettings::resolve(&cli.global_args, filesystem.as_ref());
// Resolve the cache settings. // Resolve the cache settings.
let cache_settings = CacheSettings::resolve(*cli.cache_args, filesystem.as_ref()); let cache_settings = CacheSettings::resolve(*cli.cache_args, filesystem.as_ref());
@ -326,7 +326,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.settings.concurrency, args.settings.concurrency,
globals.native_tls, globals.native_tls,
globals.quiet, globals.quiet,
globals.preview,
cache, cache,
printer, printer,
) )
@ -399,7 +398,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.settings.sources, args.settings.sources,
args.settings.concurrency, args.settings.concurrency,
globals.native_tls, globals.native_tls,
globals.preview,
cache, cache,
args.dry_run, args.dry_run,
printer, printer,
@ -492,7 +490,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.settings.prefix, args.settings.prefix,
args.settings.concurrency, args.settings.concurrency,
globals.native_tls, globals.native_tls,
globals.preview,
cache, cache,
args.dry_run, args.dry_run,
printer, printer,
@ -529,7 +526,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
cache, cache,
globals.connectivity, globals.connectivity,
globals.native_tls, globals.native_tls,
globals.preview,
args.settings.keyring_provider, args.settings.keyring_provider,
printer, printer,
) )
@ -550,7 +546,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.settings.strict, args.settings.strict,
args.settings.python.as_deref(), args.settings.python.as_deref(),
args.settings.system, args.settings.system,
globals.preview,
&cache, &cache,
printer, printer,
) )
@ -574,7 +569,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.settings.strict, args.settings.strict,
args.settings.python.as_deref(), args.settings.python.as_deref(),
args.settings.system, args.settings.system,
globals.preview,
&cache, &cache,
printer, printer,
) )
@ -594,7 +588,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.settings.strict, args.settings.strict,
args.settings.python.as_deref(), args.settings.python.as_deref(),
args.settings.system, args.settings.system,
globals.preview,
&cache, &cache,
printer, printer,
) )
@ -635,7 +628,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
commands::pip_check( commands::pip_check(
args.settings.python.as_deref(), args.settings.python.as_deref(),
args.settings.system, args.settings.system,
globals.preview,
&cache, &cache,
printer, printer,
) )
@ -702,7 +694,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.allow_existing, args.allow_existing,
args.settings.exclude_newer, args.settings.exclude_newer,
globals.native_tls, globals.native_tls,
globals.preview,
&cache, &cache,
printer, printer,
args.relocatable, args.relocatable,
@ -768,7 +759,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.settings, args.settings,
invocation_source, invocation_source,
args.isolated, args.isolated,
globals.preview,
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
globals.connectivity, globals.connectivity,
@ -813,7 +803,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.force, args.force,
args.options, args.options,
args.settings, args.settings,
globals.preview,
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
globals.connectivity, globals.connectivity,
@ -834,7 +823,7 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
// Initialize the cache. // Initialize the cache.
let cache = cache.init()?; let cache = cache.init()?;
commands::tool_list(args.show_paths, globals.preview, &cache, printer).await commands::tool_list(args.show_paths, &cache, printer).await
} }
Commands::Tool(ToolNamespace { Commands::Tool(ToolNamespace {
command: ToolCommand::Upgrade(args), command: ToolCommand::Upgrade(args),
@ -854,7 +843,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
Concurrency::default(), Concurrency::default(),
globals.native_tls, globals.native_tls,
&cache, &cache,
globals.preview,
printer, printer,
) )
.await .await
@ -866,12 +854,12 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
let args = settings::ToolUninstallSettings::resolve(args, filesystem); let args = settings::ToolUninstallSettings::resolve(args, filesystem);
show_settings!(args); show_settings!(args);
commands::tool_uninstall(args.name, globals.preview, printer).await commands::tool_uninstall(args.name, printer).await
} }
Commands::Tool(ToolNamespace { Commands::Tool(ToolNamespace {
command: ToolCommand::UpdateShell, command: ToolCommand::UpdateShell,
}) => { }) => {
commands::tool_update_shell(globals.preview, printer).await?; commands::tool_update_shell(printer).await?;
Ok(ExitStatus::Success) Ok(ExitStatus::Success)
} }
Commands::Tool(ToolNamespace { Commands::Tool(ToolNamespace {
@ -900,7 +888,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.all_platforms, args.all_platforms,
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
globals.preview,
&cache, &cache,
printer, printer,
) )
@ -919,7 +906,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
globals.python_downloads, globals.python_downloads,
globals.native_tls, globals.native_tls,
globals.connectivity, globals.connectivity,
globals.preview,
cli.no_config, cli.no_config,
printer, printer,
) )
@ -932,7 +918,7 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
let args = settings::PythonUninstallSettings::resolve(args, filesystem); let args = settings::PythonUninstallSettings::resolve(args, filesystem);
show_settings!(args); show_settings!(args);
commands::python_uninstall(args.targets, args.all, globals.preview, printer).await commands::python_uninstall(args.targets, args.all, printer).await
} }
Commands::Python(PythonNamespace { Commands::Python(PythonNamespace {
command: PythonCommand::Find(args), command: PythonCommand::Find(args),
@ -943,13 +929,7 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
// Initialize the cache. // Initialize the cache.
let cache = cache.init()?; let cache = cache.init()?;
commands::python_find( commands::python_find(args.request, globals.python_preference, &cache).await
args.request,
globals.python_preference,
globals.preview,
&cache,
)
.await
} }
Commands::Python(PythonNamespace { Commands::Python(PythonNamespace {
command: PythonCommand::Pin(args), command: PythonCommand::Pin(args),
@ -964,7 +944,6 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
args.request, args.request,
args.resolved, args.resolved,
globals.python_preference, globals.python_preference,
globals.preview,
args.no_workspace, args.no_workspace,
&cache, &cache,
printer, printer,
@ -974,7 +953,7 @@ async fn run(cli: Cli) -> Result<ExitStatus> {
Commands::Python(PythonNamespace { Commands::Python(PythonNamespace {
command: PythonCommand::Dir, command: PythonCommand::Dir,
}) => { }) => {
commands::python_dir(globals.preview)?; commands::python_dir()?;
Ok(ExitStatus::Success) Ok(ExitStatus::Success)
} }
} }
@ -1020,7 +999,6 @@ async fn run_project(
args.no_readme, args.no_readme,
args.python, args.python,
args.no_workspace, args.no_workspace,
globals.preview,
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
globals.connectivity, globals.connectivity,
@ -1067,7 +1045,6 @@ async fn run_project(
args.dev, args.dev,
args.python, args.python,
args.settings, args.settings,
globals.preview,
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
globals.connectivity, globals.connectivity,
@ -1101,7 +1078,6 @@ async fn run_project(
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
args.settings, args.settings,
globals.preview,
globals.connectivity, globals.connectivity,
Concurrency::default(), Concurrency::default(),
globals.native_tls, globals.native_tls,
@ -1123,7 +1099,6 @@ async fn run_project(
args.frozen, args.frozen,
args.python, args.python,
args.settings, args.settings,
globals.preview,
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
globals.connectivity, globals.connectivity,
@ -1185,7 +1160,6 @@ async fn run_project(
args.script, args.script,
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
globals.preview,
globals.connectivity, globals.connectivity,
Concurrency::default(), Concurrency::default(),
globals.native_tls, globals.native_tls,
@ -1218,7 +1192,6 @@ async fn run_project(
script, script,
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
globals.preview,
globals.connectivity, globals.connectivity,
Concurrency::default(), Concurrency::default(),
globals.native_tls, globals.native_tls,
@ -1250,7 +1223,6 @@ async fn run_project(
args.resolver, args.resolver,
globals.python_preference, globals.python_preference,
globals.python_downloads, globals.python_downloads,
globals.preview,
globals.connectivity, globals.connectivity,
Concurrency::default(), Concurrency::default(),
globals.native_tls, globals.native_tls,

View file

@ -14,8 +14,8 @@ use uv_cli::{
ToolUpgradeArgs, ToolUpgradeArgs,
}; };
use uv_cli::{ use uv_cli::{
AddArgs, ColorChoice, Commands, ExternalCommand, GlobalArgs, InitArgs, ListFormat, LockArgs, AddArgs, ColorChoice, ExternalCommand, GlobalArgs, InitArgs, ListFormat, LockArgs, Maybe,
Maybe, PipCheckArgs, PipCompileArgs, PipFreezeArgs, PipInstallArgs, PipListArgs, PipShowArgs, PipCheckArgs, PipCompileArgs, PipFreezeArgs, PipInstallArgs, PipListArgs, PipShowArgs,
PipSyncArgs, PipTreeArgs, PipUninstallArgs, PythonFindArgs, PythonInstallArgs, PythonListArgs, PipSyncArgs, PipTreeArgs, PipUninstallArgs, PythonFindArgs, PythonInstallArgs, PythonListArgs,
PythonPinArgs, PythonUninstallArgs, RemoveArgs, RunArgs, SyncArgs, ToolDirArgs, PythonPinArgs, PythonUninstallArgs, RemoveArgs, RunArgs, SyncArgs, ToolDirArgs,
ToolInstallArgs, ToolListArgs, ToolRunArgs, ToolUninstallArgs, TreeArgs, VenvArgs, ToolInstallArgs, ToolListArgs, ToolRunArgs, ToolUninstallArgs, TreeArgs, VenvArgs,
@ -56,30 +56,13 @@ pub(crate) struct GlobalSettings {
impl GlobalSettings { impl GlobalSettings {
/// Resolve the [`GlobalSettings`] from the CLI and filesystem configuration. /// Resolve the [`GlobalSettings`] from the CLI and filesystem configuration.
pub(crate) fn resolve( pub(crate) fn resolve(args: &GlobalArgs, workspace: Option<&FilesystemOptions>) -> Self {
command: &Commands,
args: &GlobalArgs,
workspace: Option<&FilesystemOptions>,
) -> Self {
let preview = PreviewMode::from( let preview = PreviewMode::from(
flag(args.preview, args.no_preview) flag(args.preview, args.no_preview)
.combine(workspace.and_then(|workspace| workspace.globals.preview)) .combine(workspace.and_then(|workspace| workspace.globals.preview))
.unwrap_or(false), .unwrap_or(false),
); );
// Always use preview mode python preferences during preview commands
// TODO(zanieb): There should be a cleaner way to do this, we should probably resolve
// force preview to true for these commands but it would break our experimental warning
// right now
let default_python_preference = if matches!(
command,
Commands::Project(_) | Commands::Python(_) | Commands::Tool(_)
) {
PythonPreference::default_from(PreviewMode::Enabled)
} else {
PythonPreference::default_from(preview)
};
Self { Self {
quiet: args.quiet, quiet: args.quiet,
verbose: args.verbose, verbose: args.verbose,
@ -116,7 +99,7 @@ impl GlobalSettings {
python_preference: args python_preference: args
.python_preference .python_preference
.combine(workspace.and_then(|workspace| workspace.globals.python_preference)) .combine(workspace.and_then(|workspace| workspace.globals.python_preference))
.unwrap_or(default_python_preference), .unwrap_or_else(PythonPreference::default_from_env),
python_downloads: flag(args.allow_python_downloads, args.no_python_downloads) python_downloads: flag(args.allow_python_downloads, args.no_python_downloads)
.map(PythonDownloads::from) .map(PythonDownloads::from)
.combine(workspace.and_then(|workspace| workspace.globals.python_downloads)) .combine(workspace.and_then(|workspace| workspace.globals.python_downloads))

View file

@ -91,7 +91,6 @@ fn prune_cached_env() {
pytest 8.0.0 pytest 8.0.0
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]

View file

@ -31,7 +31,6 @@ fn add_registry() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -125,7 +124,6 @@ fn add_registry() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
"###); "###);
@ -153,7 +151,6 @@ fn add_git() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"###); "###);
@ -163,7 +160,6 @@ fn add_git() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==3.7.0 + anyio==3.7.0
@ -292,7 +288,6 @@ fn add_git() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 5 packages in [TIME] Audited 5 packages in [TIME]
"###); "###);
@ -389,7 +384,6 @@ fn add_git_private_source() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 2 packages in [TIME] Audited 2 packages in [TIME]
"###); "###);
@ -488,7 +482,6 @@ fn add_git_private_raw() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 2 packages in [TIME] Audited 2 packages in [TIME]
"###); "###);
@ -515,7 +508,6 @@ fn add_git_error() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
"###); "###);
@ -525,7 +517,6 @@ fn add_git_error() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
+ project==0.1.0 (from file://[TEMP_DIR]/) + project==0.1.0 (from file://[TEMP_DIR]/)
@ -575,7 +566,6 @@ fn add_git_raw() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"###); "###);
@ -585,7 +575,6 @@ fn add_git_raw() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==3.7.0 + anyio==3.7.0
@ -702,7 +691,6 @@ fn add_git_raw() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 5 packages in [TIME] Audited 5 packages in [TIME]
"###); "###);
@ -730,7 +718,6 @@ fn add_git_implicit() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"###); "###);
@ -740,7 +727,6 @@ fn add_git_implicit() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==3.7.0 + anyio==3.7.0
@ -889,7 +875,6 @@ fn add_unnamed() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 2 packages in [TIME] Audited 2 packages in [TIME]
"###); "###);
@ -916,7 +901,6 @@ fn add_remove_dev() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -1017,7 +1001,6 @@ fn add_remove_dev() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
"###); "###);
@ -1028,7 +1011,6 @@ fn add_remove_dev() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv remove` is experimental and may change without warning
warning: `anyio` is a development dependency; try calling `uv remove --dev` warning: `anyio` is a development dependency; try calling `uv remove --dev`
error: The dependency `anyio` could not be found in `dependencies` error: The dependency `anyio` could not be found in `dependencies`
"###); "###);
@ -1040,7 +1022,6 @@ fn add_remove_dev() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv remove` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 4 packages in [TIME] Uninstalled 4 packages in [TIME]
@ -1098,7 +1079,6 @@ fn add_remove_dev() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 1 package in [TIME] Audited 1 package in [TIME]
"###); "###);
@ -1125,7 +1105,6 @@ fn add_remove_optional() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -1225,7 +1204,6 @@ fn add_remove_optional() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Uninstalled 3 packages in [TIME] Uninstalled 3 packages in [TIME]
- anyio==3.7.0 - anyio==3.7.0
- idna==3.6 - idna==3.6
@ -1239,7 +1217,6 @@ fn add_remove_optional() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv remove` is experimental and may change without warning
warning: `anyio` is an optional dependency; try calling `uv remove --optional io` warning: `anyio` is an optional dependency; try calling `uv remove --optional io`
error: The dependency `anyio` could not be found in `dependencies` error: The dependency `anyio` could not be found in `dependencies`
"###); "###);
@ -1251,7 +1228,6 @@ fn add_remove_optional() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv remove` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
@ -1306,7 +1282,6 @@ fn add_remove_optional() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 1 package in [TIME] Audited 1 package in [TIME]
"###); "###);
@ -1449,7 +1424,6 @@ fn add_remove_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 2 packages in [TIME] Audited 2 packages in [TIME]
"###); "###);
@ -1460,7 +1434,6 @@ fn add_remove_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv remove` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 2 packages in [TIME] Uninstalled 2 packages in [TIME]
@ -1526,7 +1499,6 @@ fn add_remove_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 1 package in [TIME] Audited 1 package in [TIME]
"###); "###);
@ -1649,7 +1621,6 @@ fn add_workspace_editable() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 2 packages in [TIME] Audited 2 packages in [TIME]
"###); "###);
@ -1679,7 +1650,6 @@ fn update() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
"###); "###);
@ -1689,7 +1659,6 @@ fn update() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
+ certifi==2024.2.2 + certifi==2024.2.2
@ -1707,7 +1676,6 @@ fn update() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
@ -1740,7 +1708,6 @@ fn update() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
Prepared 3 packages in [TIME] Prepared 3 packages in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
@ -1777,8 +1744,6 @@ fn update() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
warning: `uv.sources` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Uninstalled 2 packages in [TIME] Uninstalled 2 packages in [TIME]
@ -1935,7 +1900,6 @@ fn update() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 8 packages in [TIME] Audited 8 packages in [TIME]
"###); "###);
@ -1963,7 +1927,6 @@ fn add_update_marker() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
"###); "###);
@ -1973,7 +1936,6 @@ fn add_update_marker() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
+ certifi==2024.2.2 + certifi==2024.2.2
@ -1991,7 +1953,6 @@ fn add_update_marker() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
@ -2026,7 +1987,6 @@ fn add_update_marker() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 10 packages in [TIME] Resolved 10 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
@ -2061,7 +2021,6 @@ fn add_update_marker() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
Prepared 3 packages in [TIME] Prepared 3 packages in [TIME]
Uninstalled 3 packages in [TIME] Uninstalled 3 packages in [TIME]
@ -2101,7 +2060,6 @@ fn add_update_marker() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
@ -2139,7 +2097,6 @@ fn add_update_marker() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv remove` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 6 packages in [TIME] Uninstalled 6 packages in [TIME]
@ -2195,8 +2152,6 @@ fn update_source_replace_url() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
warning: `uv.sources` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -2254,7 +2209,6 @@ fn add_no_clean() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"###); "###);
@ -2264,7 +2218,6 @@ fn add_no_clean() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==3.7.0 + anyio==3.7.0
@ -2288,7 +2241,6 @@ fn add_no_clean() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
@ -2358,7 +2310,6 @@ fn add_no_clean() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 2 packages in [TIME] Audited 2 packages in [TIME]
"###); "###);
@ -2369,7 +2320,6 @@ fn add_no_clean() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Uninstalled 3 packages in [TIME] Uninstalled 3 packages in [TIME]
- anyio==3.7.0 - anyio==3.7.0
- idna==3.6 - idna==3.6
@ -2399,7 +2349,6 @@ fn remove_registry() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"###); "###);
@ -2409,7 +2358,6 @@ fn remove_registry() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==3.7.0 + anyio==3.7.0
@ -2424,7 +2372,6 @@ fn remove_registry() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv remove` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 4 packages in [TIME] Uninstalled 4 packages in [TIME]
@ -2479,7 +2426,6 @@ fn remove_registry() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Audited 1 package in [TIME] Audited 1 package in [TIME]
"###); "###);
@ -2508,7 +2454,6 @@ fn add_preserves_indentation_in_pyproject_toml() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
Prepared 8 packages in [TIME] Prepared 8 packages in [TIME]
Installed 8 packages in [TIME] Installed 8 packages in [TIME]
@ -2564,7 +2509,6 @@ fn add_puts_default_indentation_in_pyproject_toml_if_not_observed() -> Result<()
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
Prepared 8 packages in [TIME] Prepared 8 packages in [TIME]
Installed 8 packages in [TIME] Installed 8 packages in [TIME]
@ -2621,7 +2565,6 @@ fn add_frozen() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
"###); "###);
let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?; let pyproject_toml = fs_err::read_to_string(context.temp_dir.join("pyproject.toml"))?;
@ -2669,7 +2612,6 @@ fn add_no_sync() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"###); "###);
@ -2786,7 +2728,6 @@ fn add_error() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
× No solution found when resolving dependencies: × No solution found when resolving dependencies:
Because there are no versions of xyz and your project depends on xyz, we can conclude that your project's requirements are unsatisfiable. Because there are no versions of xyz and your project depends on xyz, we can conclude that your project's requirements are unsatisfiable.
help: If this is intentional, run `uv add --frozen` to skip the lock and sync steps. help: If this is intentional, run `uv add --frozen` to skip the lock and sync steps.
@ -2798,7 +2739,6 @@ fn add_error() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
"###); "###);
let lock = context.temp_dir.join("uv.lock"); let lock = context.temp_dir.join("uv.lock");
@ -2828,7 +2768,6 @@ fn add_lower_bound() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -2881,7 +2820,6 @@ fn add_lower_bound_existing() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -2933,7 +2871,6 @@ fn add_lower_bound_raw() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -2985,7 +2922,6 @@ fn add_lower_bound_dev() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -3040,7 +2976,6 @@ fn add_lower_bound_optional() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -3155,7 +3090,6 @@ fn add_lower_bound_local() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
@ -3236,7 +3170,6 @@ fn add_virtual() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
error: Found a virtual workspace root, but virtual projects do not support production dependencies (instead, use: `uv add --dev`) error: Found a virtual workspace root, but virtual projects do not support production dependencies (instead, use: `uv add --dev`)
"###); "###);
@ -3248,7 +3181,6 @@ fn add_virtual() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
error: Found a virtual workspace root, but virtual projects do not support optional dependencies (instead, use: `uv add --dev`) error: Found a virtual workspace root, but virtual projects do not support optional dependencies (instead, use: `uv add --dev`)
"###); "###);
@ -3259,7 +3191,6 @@ fn add_virtual() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
@ -3332,7 +3263,6 @@ fn add_repeat() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -3367,7 +3297,6 @@ fn add_repeat() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
"###); "###);
@ -3418,7 +3347,6 @@ fn add_requirements_file() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -3463,7 +3391,6 @@ fn add_requirements_file() -> Result<()> {
----- stderr ----- ----- stderr -----
warning: `--raw-sources` is a no-op for `requirements.txt` files, which are always treated as raw sources warning: `--raw-sources` is a no-op for `requirements.txt` files, which are always treated as raw sources
warning: `uv add` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Audited [N] packages in [TIME] Audited [N] packages in [TIME]
"###); "###);
@ -3475,7 +3402,6 @@ fn add_requirements_file() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
error: Adding requirements from a `setup.py` is not supported in `uv add` error: Adding requirements from a `setup.py` is not supported in `uv add`
"###); "###);
@ -3526,7 +3452,6 @@ fn add_script() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Updated `script.py` Updated `script.py`
"###); "###);
@ -3579,7 +3504,6 @@ fn add_script_without_metadata_table() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Updated `script.py` Updated `script.py`
"###); "###);
@ -3631,7 +3555,6 @@ fn add_script_without_metadata_table_with_shebang() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Updated `script.py` Updated `script.py`
"###); "###);
@ -3684,7 +3607,6 @@ fn add_script_without_metadata_table_with_docstring() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv add` is experimental and may change without warning
Updated `script.py` Updated `script.py`
"###); "###);
@ -3745,7 +3667,6 @@ fn remove_script() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv remove` is experimental and may change without warning
Updated `script.py` Updated `script.py`
"###); "###);
@ -3804,7 +3725,6 @@ fn remove_last_dep_script() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv remove` is experimental and may change without warning
Updated `script.py` Updated `script.py`
"###); "###);

View file

@ -16,15 +16,15 @@ fn help() {
Usage: uv [OPTIONS] <COMMAND> Usage: uv [OPTIONS] <COMMAND>
Commands: Commands:
run Run a command or script (experimental) run Run a command or script
init Create a new project (experimental) init Create a new project
add Add dependencies to the project (experimental) add Add dependencies to the project
remove Remove dependencies from the project (experimental) remove Remove dependencies from the project
sync Update the project's environment (experimental) sync Update the project's environment
lock Update the project's lockfile (experimental) lock Update the project's lockfile
tree Display the project's dependency tree (experimental) tree Display the project's dependency tree
tool Run and install commands provided by Python packages (experimental) tool Run and install commands provided by Python packages
python Manage Python versions and installations (experimental) python Manage Python versions and installations
pip Manage Python packages with a pip-compatible interface pip Manage Python packages with a pip-compatible interface
venv Create a virtual environment venv Create a virtual environment
cache Manage uv's cache cache Manage uv's cache
@ -79,15 +79,15 @@ fn help_flag() {
Usage: uv [OPTIONS] <COMMAND> Usage: uv [OPTIONS] <COMMAND>
Commands: Commands:
run Run a command or script (experimental) run Run a command or script
init Create a new project (experimental) init Create a new project
add Add dependencies to the project (experimental) add Add dependencies to the project
remove Remove dependencies from the project (experimental) remove Remove dependencies from the project
sync Update the project's environment (experimental) sync Update the project's environment
lock Update the project's lockfile (experimental) lock Update the project's lockfile
tree Display the project's dependency tree (experimental) tree Display the project's dependency tree
tool Run and install commands provided by Python packages (experimental) tool Run and install commands provided by Python packages
python Manage Python versions and installations (experimental) python Manage Python versions and installations
pip Manage Python packages with a pip-compatible interface pip Manage Python packages with a pip-compatible interface
venv Create a virtual environment venv Create a virtual environment
cache Manage uv's cache cache Manage uv's cache
@ -140,15 +140,15 @@ fn help_short_flag() {
Usage: uv [OPTIONS] <COMMAND> Usage: uv [OPTIONS] <COMMAND>
Commands: Commands:
run Run a command or script (experimental) run Run a command or script
init Create a new project (experimental) init Create a new project
add Add dependencies to the project (experimental) add Add dependencies to the project
remove Remove dependencies from the project (experimental) remove Remove dependencies from the project
sync Update the project's environment (experimental) sync Update the project's environment
lock Update the project's lockfile (experimental) lock Update the project's lockfile
tree Display the project's dependency tree (experimental) tree Display the project's dependency tree
tool Run and install commands provided by Python packages (experimental) tool Run and install commands provided by Python packages
python Manage Python versions and installations (experimental) python Manage Python versions and installations
pip Manage Python packages with a pip-compatible interface pip Manage Python packages with a pip-compatible interface
venv Create a virtual environment venv Create a virtual environment
cache Manage uv's cache cache Manage uv's cache
@ -197,7 +197,7 @@ fn help_subcommand() {
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
Manage Python versions and installations (experimental) Manage Python versions and installations
Generally, uv first searches for Python in a virtual environment, either Generally, uv first searches for Python in a virtual environment, either
active or in a `.venv` directory in the current working directory or active or in a `.venv` directory in the current working directory or
@ -208,8 +208,7 @@ fn help_subcommand() {
On Windows, the `py` launcher is also invoked to find Python On Windows, the `py` launcher is also invoked to find Python
executables. executables.
When preview is enabled, i.e., via `--preview` or by using a preview By default, uv will download Python if a version cannot be found. This
command, uv will download Python if a version cannot be found. This
behavior can be disabled with the `--python-downloads` option. behavior can be disabled with the `--python-downloads` option.
The `--python` option allows requesting a different interpreter. The `--python` option allows requesting a different interpreter.
@ -513,7 +512,7 @@ fn help_flag_subcommand() {
success: true success: true
exit_code: 0 exit_code: 0
----- stdout ----- ----- stdout -----
Manage Python versions and installations (experimental) Manage Python versions and installations
Usage: uv python [OPTIONS] <COMMAND> Usage: uv python [OPTIONS] <COMMAND>
@ -693,15 +692,15 @@ fn help_with_global_option() {
Usage: uv [OPTIONS] <COMMAND> Usage: uv [OPTIONS] <COMMAND>
Commands: Commands:
run Run a command or script (experimental) run Run a command or script
init Create a new project (experimental) init Create a new project
add Add dependencies to the project (experimental) add Add dependencies to the project
remove Remove dependencies from the project (experimental) remove Remove dependencies from the project
sync Update the project's environment (experimental) sync Update the project's environment
lock Update the project's lockfile (experimental) lock Update the project's lockfile
tree Display the project's dependency tree (experimental) tree Display the project's dependency tree
tool Run and install commands provided by Python packages (experimental) tool Run and install commands provided by Python packages
python Manage Python versions and installations (experimental) python Manage Python versions and installations
pip Manage Python packages with a pip-compatible interface pip Manage Python packages with a pip-compatible interface
venv Create a virtual environment venv Create a virtual environment
cache Manage uv's cache cache Manage uv's cache
@ -792,15 +791,15 @@ fn help_with_no_pager() {
Usage: uv [OPTIONS] <COMMAND> Usage: uv [OPTIONS] <COMMAND>
Commands: Commands:
run Run a command or script (experimental) run Run a command or script
init Create a new project (experimental) init Create a new project
add Add dependencies to the project (experimental) add Add dependencies to the project
remove Remove dependencies from the project (experimental) remove Remove dependencies from the project
sync Update the project's environment (experimental) sync Update the project's environment
lock Update the project's lockfile (experimental) lock Update the project's lockfile
tree Display the project's dependency tree (experimental) tree Display the project's dependency tree
tool Run and install commands provided by Python packages (experimental) tool Run and install commands provided by Python packages
python Manage Python versions and installations (experimental) python Manage Python versions and installations
pip Manage Python packages with a pip-compatible interface pip Manage Python packages with a pip-compatible interface
venv Create a virtual environment venv Create a virtual environment
cache Manage uv's cache cache Manage uv's cache

View file

@ -19,7 +19,6 @@ fn init() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -65,7 +64,6 @@ fn init() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Using Python 3.12.[X] interpreter at: [PYTHON-3.12] Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
"###); "###);
@ -86,7 +84,6 @@ fn init_cache() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -103,7 +100,6 @@ fn init_no_readme() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -145,7 +141,6 @@ fn init_current_dir() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Initialized project `foo` Initialized project `foo`
"###); "###);
@ -191,7 +186,6 @@ fn init_current_dir() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Using Python 3.12.[X] interpreter at: [PYTHON-3.12] Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
"###); "###);
@ -212,7 +206,6 @@ fn init_dot_args() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -258,7 +251,6 @@ fn init_dot_args() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Using Python 3.12.[X] interpreter at: [PYTHON-3.12] Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
"###); "###);
@ -290,7 +282,6 @@ fn init_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `foo` as member of workspace `[TEMP_DIR]/` Adding `foo` as member of workspace `[TEMP_DIR]/`
Initialized project `foo` Initialized project `foo`
"###); "###);
@ -356,7 +347,6 @@ fn init_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"###); "###);
@ -386,7 +376,6 @@ fn init_workspace_relative_sub_package() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `foo` as member of workspace `[TEMP_DIR]/` Adding `foo` as member of workspace `[TEMP_DIR]/`
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -452,7 +441,6 @@ fn init_workspace_relative_sub_package() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"###); "###);
@ -483,7 +471,6 @@ fn init_workspace_outside() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `foo` as member of workspace `[TEMP_DIR]/` Adding `foo` as member of workspace `[TEMP_DIR]/`
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -549,7 +536,6 @@ fn init_workspace_outside() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"###); "###);
@ -567,7 +553,6 @@ fn init_invalid_names() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Initialized project `foo-bar` at `[TEMP_DIR]/foo-bar` Initialized project `foo-bar` at `[TEMP_DIR]/foo-bar`
"###); "###);
@ -602,7 +587,6 @@ fn init_invalid_names() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
error: Not a valid package or extra name: "bar baz". Names must start and end with a letter or digit and may only contain -, _, ., and alphanumeric characters. error: Not a valid package or extra name: "bar baz". Names must start and end with a letter or digit and may only contain -, _, ., and alphanumeric characters.
"###); "###);
@ -633,7 +617,6 @@ fn init_isolated() -> Result<()> {
----- stderr ----- ----- stderr -----
warning: The `--isolated` flag is deprecated and has no effect. Instead, use `--no-config` to prevent uv from discovering configuration files or `--no-workspace` to prevent uv from adding the initialized project to the containing workspace. warning: The `--isolated` flag is deprecated and has no effect. Instead, use `--no-config` to prevent uv from discovering configuration files or `--no-workspace` to prevent uv from adding the initialized project to the containing workspace.
warning: `uv init` is experimental and may change without warning
Adding `foo` as member of workspace `[TEMP_DIR]/` Adding `foo` as member of workspace `[TEMP_DIR]/`
Initialized project `foo` Initialized project `foo`
"###); "###);
@ -682,7 +665,6 @@ fn init_no_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Initialized project `foo` Initialized project `foo`
"###); "###);
@ -715,7 +697,6 @@ fn init_no_workspace_warning() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
warning: `--no-workspace` was provided, but no workspace was found warning: `--no-workspace` was provided, but no workspace was found
Initialized project `project` Initialized project `project`
"###); "###);
@ -767,7 +748,6 @@ fn init_project_inside_project() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `foo` as member of workspace `[TEMP_DIR]/` Adding `foo` as member of workspace `[TEMP_DIR]/`
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -779,7 +759,6 @@ fn init_project_inside_project() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `bar` as member of workspace `[TEMP_DIR]/` Adding `bar` as member of workspace `[TEMP_DIR]/`
Initialized project `bar` at `[TEMP_DIR]/foo/bar` Initialized project `bar` at `[TEMP_DIR]/foo/bar`
"###); "###);
@ -850,7 +829,6 @@ fn init_explicit_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `foo` as member of workspace `[TEMP_DIR]/` Adding `foo` as member of workspace `[TEMP_DIR]/`
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -891,7 +869,6 @@ fn init_virtual_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Initialized workspace `foo` Initialized workspace `foo`
"###); "###);
@ -913,7 +890,6 @@ fn init_virtual_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `bar` as member of workspace `[TEMP_DIR]/foo` Adding `bar` as member of workspace `[TEMP_DIR]/foo`
Initialized project `bar` at `[TEMP_DIR]/foo/bar` Initialized project `bar` at `[TEMP_DIR]/foo/bar`
"###); "###);
@ -952,7 +928,6 @@ fn init_nested_virtual_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
warning: Nested workspaces are not supported, but outer workspace (`[TEMP_DIR]/`) includes `[TEMP_DIR]/foo` warning: Nested workspaces are not supported, but outer workspace (`[TEMP_DIR]/`) includes `[TEMP_DIR]/foo`
Initialized workspace `foo` at `[TEMP_DIR]/foo` Initialized workspace `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -1009,7 +984,6 @@ fn init_matches_members() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Project `foo` is already a member of workspace `[TEMP_DIR]/` Project `foo` is already a member of workspace `[TEMP_DIR]/`
Initialized project `foo` at `[TEMP_DIR]/packages/foo` Initialized project `foo` at `[TEMP_DIR]/packages/foo`
"###); "###);
@ -1052,7 +1026,6 @@ fn init_matches_exclude() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Project `foo` is excluded by workspace `[TEMP_DIR]/` Project `foo` is excluded by workspace `[TEMP_DIR]/`
Initialized project `foo` at `[TEMP_DIR]/packages/foo` Initialized project `foo` at `[TEMP_DIR]/packages/foo`
"###); "###);
@ -1098,7 +1071,6 @@ fn init_requires_python_workspace() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `foo` as member of workspace `[TEMP_DIR]/` Adding `foo` as member of workspace `[TEMP_DIR]/`
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -1152,7 +1124,6 @@ fn init_requires_python_version() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `foo` as member of workspace `[TEMP_DIR]/` Adding `foo` as member of workspace `[TEMP_DIR]/`
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -1207,7 +1178,6 @@ fn init_requires_python_specifiers() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Adding `foo` as member of workspace `[TEMP_DIR]/` Adding `foo` as member of workspace `[TEMP_DIR]/`
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -1255,7 +1225,6 @@ fn init_unmanaged() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
Initialized project `foo` at `[TEMP_DIR]/foo` Initialized project `foo` at `[TEMP_DIR]/foo`
"###); "###);
@ -1284,7 +1253,6 @@ fn init_hidden() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv init` is experimental and may change without warning
error: Not a valid package or extra name: ".foo". Names must start and end with a letter or digit and may only contain -, _, ., and alphanumeric characters. error: Not a valid package or extra name: ".foo". Names must start and end with a letter or digit and may only contain -, _, ., and alphanumeric characters.
"###); "###);
} }

File diff suppressed because it is too large Load diff

View file

@ -73,7 +73,6 @@ fn fork_allows_non_conflicting_non_overlapping_dependencies() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
"### "###
); );
@ -191,7 +190,6 @@ fn fork_allows_non_conflicting_repeated_dependencies() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
"### "###
); );
@ -291,7 +289,6 @@ fn fork_basic() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 3 packages in [TIME] Resolved 3 packages in [TIME]
"### "###
); );
@ -426,7 +423,6 @@ fn conflict_in_fork() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
× No solution found when resolving dependencies for split (sys_platform == 'darwin'): × No solution found when resolving dependencies for split (sys_platform == 'darwin'):
Because only package-b==1.0.0 is available and package-b==1.0.0 depends on package-d==1, we can conclude that all versions of package-b depend on package-d==1. Because only package-b==1.0.0 is available and package-b==1.0.0 depends on package-d==1, we can conclude that all versions of package-b depend on package-d==1.
And because package-c==1.0.0 depends on package-d==2 and only package-c==1.0.0 is available, we can conclude that all versions of package-b and all versions of package-c are incompatible. And because package-c==1.0.0 depends on package-d==2 and only package-c==1.0.0 is available, we can conclude that all versions of package-b and all versions of package-c are incompatible.
@ -495,7 +491,6 @@ fn fork_conflict_unsatisfiable() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
× No solution found when resolving dependencies: × No solution found when resolving dependencies:
Because your project depends on package-a>=2 and package-a<2, we can conclude that your project's requirements are unsatisfiable. Because your project depends on package-a>=2 and package-a<2, we can conclude that your project's requirements are unsatisfiable.
"### "###
@ -579,7 +574,6 @@ fn fork_filter_sibling_dependencies() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 7 packages in [TIME] Resolved 7 packages in [TIME]
"### "###
); );
@ -758,7 +752,6 @@ fn fork_upgrade() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 3 packages in [TIME] Resolved 3 packages in [TIME]
"### "###
); );
@ -879,7 +872,6 @@ fn fork_incomplete_markers() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -1033,7 +1025,6 @@ fn fork_marker_accrue() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"### "###
); );
@ -1167,7 +1158,6 @@ fn fork_marker_disjoint() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
× No solution found when resolving dependencies for split (sys_platform == 'linux'): × No solution found when resolving dependencies for split (sys_platform == 'linux'):
Because your project depends on package-a{sys_platform == 'linux'}>=2 and package-a{sys_platform == 'linux'}<2, we can conclude that your project's requirements are unsatisfiable. Because your project depends on package-a{sys_platform == 'linux'}>=2 and package-a{sys_platform == 'linux'}<2, we can conclude that your project's requirements are unsatisfiable.
"### "###
@ -1238,7 +1228,6 @@ fn fork_marker_inherit_combined_allowed() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
"### "###
); );
@ -1419,7 +1408,6 @@ fn fork_marker_inherit_combined_disallowed() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -1589,7 +1577,6 @@ fn fork_marker_inherit_combined() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -1752,7 +1739,6 @@ fn fork_marker_inherit_isolated() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"### "###
); );
@ -1901,7 +1887,6 @@ fn fork_marker_inherit_transitive() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -2058,7 +2043,6 @@ fn fork_marker_inherit() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 3 packages in [TIME] Resolved 3 packages in [TIME]
"### "###
); );
@ -2197,7 +2181,6 @@ fn fork_marker_limited_inherit() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -2353,7 +2336,6 @@ fn fork_marker_selection() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"### "###
); );
@ -2509,7 +2491,6 @@ fn fork_marker_track() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -2662,7 +2643,6 @@ fn fork_non_fork_marker_transitive() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"### "###
); );
@ -2797,7 +2777,6 @@ fn fork_non_local_fork_marker_direct() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
× No solution found when resolving dependencies: × No solution found when resolving dependencies:
Because package-b{sys_platform == 'darwin'}==1.0.0 depends on package-c>=2.0.0 and package-a{sys_platform == 'linux'}==1.0.0 depends on package-c<2.0.0, we can conclude that package-a{sys_platform == 'linux'}==1.0.0 and package-b{sys_platform == 'darwin'}==1.0.0 are incompatible. Because package-b{sys_platform == 'darwin'}==1.0.0 depends on package-c>=2.0.0 and package-a{sys_platform == 'linux'}==1.0.0 depends on package-c<2.0.0, we can conclude that package-a{sys_platform == 'linux'}==1.0.0 and package-b{sys_platform == 'darwin'}==1.0.0 are incompatible.
And because your project depends on package-a{sys_platform == 'linux'}==1.0.0 and package-b{sys_platform == 'darwin'}==1.0.0, we can conclude that your project's requirements are unsatisfiable. And because your project depends on package-a{sys_platform == 'linux'}==1.0.0 and package-b{sys_platform == 'darwin'}==1.0.0, we can conclude that your project's requirements are unsatisfiable.
@ -2870,7 +2849,6 @@ fn fork_non_local_fork_marker_transitive() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
× No solution found when resolving dependencies: × No solution found when resolving dependencies:
Because package-b==1.0.0 depends on package-c{sys_platform == 'darwin'}>=2.0.0 and only package-c{sys_platform == 'darwin'}<=2.0.0 is available, we can conclude that package-b==1.0.0 depends on package-c{sys_platform == 'darwin'}==2.0.0. Because package-b==1.0.0 depends on package-c{sys_platform == 'darwin'}>=2.0.0 and only package-c{sys_platform == 'darwin'}<=2.0.0 is available, we can conclude that package-b==1.0.0 depends on package-c{sys_platform == 'darwin'}==2.0.0.
And because only the following versions of package-c{sys_platform == 'linux'} are available: And because only the following versions of package-c{sys_platform == 'linux'} are available:
@ -2964,7 +2942,6 @@ fn fork_overlapping_markers_basic() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
"### "###
); );
@ -3132,7 +3109,6 @@ fn preferences_dependent_forking_bistable() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
"### "###
); );
@ -3369,7 +3345,6 @@ fn preferences_dependent_forking_conflicting() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
"### "###
); );
@ -3512,7 +3487,6 @@ fn preferences_dependent_forking_tristable() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 11 packages in [TIME] Resolved 11 packages in [TIME]
"### "###
); );
@ -3796,7 +3770,6 @@ fn preferences_dependent_forking() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -3971,7 +3944,6 @@ fn fork_remaining_universe_partitioning() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -4124,7 +4096,6 @@ fn fork_requires_python_full_prerelease() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
"### "###
); );
@ -4209,7 +4180,6 @@ fn fork_requires_python_full() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
"### "###
); );
@ -4298,7 +4268,6 @@ fn fork_requires_python_patch_overlap() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
"### "###
); );
@ -4392,7 +4361,6 @@ fn fork_requires_python() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
"### "###
); );

View file

@ -5655,7 +5655,6 @@ fn tool_uv_sources_is_in_preview() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv.sources` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]

View file

@ -17,6 +17,5 @@ fn python_dir() {
[TEMP_DIR]/python [TEMP_DIR]/python
----- stderr ----- ----- stderr -----
warning: `uv python dir` is experimental and may change without warning
"###); "###);
} }

View file

@ -173,7 +173,6 @@ fn run_args() -> Result<()> {
Python 3.12.[X] Python 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
@ -188,7 +187,6 @@ fn run_args() -> Result<()> {
Python 3.12.[X] Python 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Audited 1 package in [TIME] Audited 1 package in [TIME]
"###); "###);
@ -453,7 +451,6 @@ fn run_managed_false() -> Result<()> {
Python 3.12.[X] Python 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
"###); "###);
Ok(()) Ok(())
@ -486,7 +483,6 @@ fn run_with() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -507,7 +503,6 @@ fn run_with() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
"###); "###);
@ -519,7 +514,6 @@ fn run_with() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
@ -535,7 +529,6 @@ fn run_with() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
× No solution found when resolving `--with` dependencies: × No solution found when resolving `--with` dependencies:
@ -567,7 +560,6 @@ fn run_locked() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
error: Unable to find lockfile at `uv.lock`. To create a lockfile, run `uv lock` or `uv sync`. error: Unable to find lockfile at `uv.lock`. To create a lockfile, run `uv lock` or `uv sync`.
"###); "###);
@ -594,7 +586,6 @@ fn run_locked() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
error: The lockfile at `uv.lock` needs to be updated, but `--locked` was provided. To update the lockfile, run `uv lock`. error: The lockfile at `uv.lock` needs to be updated, but `--locked` was provided. To update the lockfile, run `uv lock`.
"###); "###);
@ -615,7 +606,6 @@ fn run_locked() -> Result<()> {
Python 3.12.[X] Python 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
@ -648,7 +638,6 @@ fn run_frozen() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
error: Unable to find lockfile at `uv.lock`. To create a lockfile, run `uv lock` or `uv sync`. error: Unable to find lockfile at `uv.lock`. To create a lockfile, run `uv lock` or `uv sync`.
"###); "###);
@ -673,7 +662,6 @@ fn run_frozen() -> Result<()> {
Python 3.12.[X] Python 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==3.7.0 + anyio==3.7.0
@ -716,7 +704,6 @@ fn run_empty_requirements_txt() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -734,7 +721,6 @@ fn run_empty_requirements_txt() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
warning: Requirements file requirements.txt does not contain any dependencies warning: Requirements file requirements.txt does not contain any dependencies
@ -773,7 +759,6 @@ fn run_requirements_txt() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -796,7 +781,6 @@ fn run_requirements_txt() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
"###); "###);
@ -810,7 +794,6 @@ fn run_requirements_txt() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
@ -833,7 +816,6 @@ fn run_requirements_txt() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Audited 4 packages in [TIME] Audited 4 packages in [TIME]
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
@ -855,7 +837,6 @@ fn run_requirements_txt() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
error: Reading requirements from stdin is not supported in `uv run` error: Reading requirements from stdin is not supported in `uv run`
"###); "###);
@ -897,7 +878,6 @@ fn run_requirements_txt_arguments() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
@ -953,7 +933,6 @@ fn run_editable() -> Result<()> {
Hello, world! Hello, world!
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
@ -1052,7 +1031,6 @@ fn run_without_output() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
"###); "###);
@ -1064,7 +1042,6 @@ fn run_without_output() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
"###); "###);
Ok(()) Ok(())
@ -1110,7 +1087,6 @@ fn run_isolated_python_version() -> Result<()> {
(3, 8) (3, 8)
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Using Python 3.8.[X] interpreter at: [PYTHON-3.8] Using Python 3.8.[X] interpreter at: [PYTHON-3.8]
Creating virtualenv at: .venv Creating virtualenv at: .venv
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
@ -1131,7 +1107,6 @@ fn run_isolated_python_version() -> Result<()> {
(3, 8) (3, 8)
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 5 packages in [TIME] Prepared 5 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -1156,7 +1131,6 @@ fn run_isolated_python_version() -> Result<()> {
(3, 12) (3, 12)
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 3 packages in [TIME] Prepared 3 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -1205,7 +1179,6 @@ fn run_no_project() -> Result<()> {
[VENV]/[BIN]/python [VENV]/[BIN]/python
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -1224,7 +1197,6 @@ fn run_no_project() -> Result<()> {
[VENV]/[BIN]/python [VENV]/[BIN]/python
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
"###); "###);
// `run --no-project --isolated` should run in an entirely isolated environment. // `run --no-project --isolated` should run in an entirely isolated environment.
@ -1235,7 +1207,6 @@ fn run_no_project() -> Result<()> {
[CACHE_DIR]/builds-v0/[TMP]/python [CACHE_DIR]/builds-v0/[TMP]/python
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
"###); "###);
// `run --no-project` should not (but it should still run in the same environment, as it would // `run --no-project` should not (but it should still run in the same environment, as it would
@ -1247,7 +1218,6 @@ fn run_no_project() -> Result<()> {
[VENV]/[BIN]/python [VENV]/[BIN]/python
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
"###); "###);
// `run --no-project --locked` should fail. // `run --no-project --locked` should fail.
@ -1258,7 +1228,6 @@ fn run_no_project() -> Result<()> {
[VENV]/[BIN]/python [VENV]/[BIN]/python
----- stderr ----- ----- stderr -----
warning: `uv run` is experimental and may change without warning
warning: `--locked` has no effect when used alongside `--no-project` warning: `--locked` has no effect when used alongside `--no-project`
"###); "###);

View file

@ -7,5 +7,4 @@ exit_code: 0
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 39 packages in [TIME] Resolved 39 packages in [TIME]

View file

@ -7,5 +7,4 @@ exit_code: 0
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 31 packages in [TIME] Resolved 31 packages in [TIME]

View file

@ -7,5 +7,4 @@ exit_code: 0
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 97 packages in [TIME] Resolved 97 packages in [TIME]

View file

@ -7,5 +7,4 @@ exit_code: 0
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 49 packages in [TIME] Resolved 49 packages in [TIME]

View file

@ -7,5 +7,4 @@ exit_code: 0
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 298 packages in [TIME] Resolved 298 packages in [TIME]

View file

@ -7,5 +7,4 @@ exit_code: 0
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 323 packages in [TIME] Resolved 323 packages in [TIME]

View file

@ -31,7 +31,6 @@ fn sync() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
@ -66,7 +65,6 @@ fn locked() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
error: Unable to find lockfile at `uv.lock`. To create a lockfile, run `uv lock` or `uv sync`. error: Unable to find lockfile at `uv.lock`. To create a lockfile, run `uv lock` or `uv sync`.
"###); "###);
@ -93,7 +91,6 @@ fn locked() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
error: The lockfile at `uv.lock` needs to be updated, but `--locked` was provided. To update the lockfile, run `uv lock`. error: The lockfile at `uv.lock` needs to be updated, but `--locked` was provided. To update the lockfile, run `uv lock`.
"###); "###);
@ -128,7 +125,6 @@ fn frozen() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
error: Unable to find lockfile at `uv.lock`. To create a lockfile, run `uv lock` or `uv sync`. error: Unable to find lockfile at `uv.lock`. To create a lockfile, run `uv lock` or `uv sync`.
"###); "###);
@ -152,7 +148,6 @@ fn frozen() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
+ anyio==3.7.0 + anyio==3.7.0
@ -183,7 +178,6 @@ fn empty() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Resolved 0 packages in [TIME] Resolved 0 packages in [TIME]
Audited 0 packages in [TIME] Audited 0 packages in [TIME]
"###); "###);
@ -197,7 +191,6 @@ fn empty() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Resolved 0 packages in [TIME] Resolved 0 packages in [TIME]
Audited 0 packages in [TIME] Audited 0 packages in [TIME]
"###); "###);
@ -259,8 +252,6 @@ fn package() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
warning: `uv.sources` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
@ -331,10 +322,8 @@ fn mixed_requires_python() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Using Python 3.12.[X] interpreter at: [PYTHON-3.12] Using Python 3.12.[X] interpreter at: [PYTHON-3.12]
Creating virtualenv at: .venv Creating virtualenv at: .venv
warning: `uv.sources` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
Prepared 5 packages in [TIME] Prepared 5 packages in [TIME]
Installed 5 packages in [TIME] Installed 5 packages in [TIME]
@ -352,7 +341,6 @@ fn mixed_requires_python() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Using Python 3.8.[X] interpreter at: [PYTHON-3.8] Using Python 3.8.[X] interpreter at: [PYTHON-3.8]
error: The requested Python interpreter (3.8.[X]) is incompatible with the project Python requirement: `>=3.12`. However, a workspace member (`bird-feeder`) supports Python >=3.8. To install the workspace member on its own, navigate to `packages/bird-feeder`, then run `uv venv --python 3.8.[X]` followed by `uv pip install -e .`. error: The requested Python interpreter (3.8.[X]) is incompatible with the project Python requirement: `>=3.12`. However, a workspace member (`bird-feeder`) supports Python >=3.8. To install the workspace member on its own, navigate to `packages/bird-feeder`, then run `uv venv --python 3.8.[X]` followed by `uv pip install -e .`.
"###); "###);
@ -409,7 +397,6 @@ fn virtual_workspace_dev_dependencies() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
@ -424,7 +411,6 @@ fn virtual_workspace_dev_dependencies() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
Prepared 3 packages in [TIME] Prepared 3 packages in [TIME]
Installed 3 packages in [TIME] Installed 3 packages in [TIME]
@ -461,7 +447,6 @@ fn sync_build_isolation() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
error: Failed to download and build: `iniconfig @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz` error: Failed to download and build: `iniconfig @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz`
Caused by: Build backend failed to determine metadata through `prepare_metadata_for_build_wheel` with exit status: 1 Caused by: Build backend failed to determine metadata through `prepare_metadata_for_build_wheel` with exit status: 1
--- stdout: --- stdout:
@ -502,7 +487,6 @@ fn sync_build_isolation() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
@ -568,7 +552,6 @@ fn sync_reset_state() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Resolved 3 packages in [TIME] Resolved 3 packages in [TIME]
Prepared 3 packages in [TIME] Prepared 3 packages in [TIME]
Installed 3 packages in [TIME] Installed 3 packages in [TIME]
@ -614,7 +597,6 @@ fn sync_build_isolation_package() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
error: Failed to download and build: `iniconfig @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz` error: Failed to download and build: `iniconfig @ https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz`
Caused by: Build backend failed to determine metadata through `prepare_metadata_for_build_wheel` with exit status: 1 Caused by: Build backend failed to determine metadata through `prepare_metadata_for_build_wheel` with exit status: 1
--- stdout: --- stdout:
@ -654,7 +636,6 @@ fn sync_build_isolation_package() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 2 packages in [TIME] Prepared 2 packages in [TIME]
Uninstalled 9 packages in [TIME] Uninstalled 9 packages in [TIME]
@ -718,8 +699,6 @@ fn sync_relative_wheel() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
warning: `uv.sources` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 2 packages in [TIME] Installed 2 packages in [TIME]
@ -772,8 +751,6 @@ fn sync_relative_wheel() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv sync` is experimental and may change without warning
warning: `uv.sources` is experimental and may change without warning
Resolved 2 packages in [TIME] Resolved 2 packages in [TIME]
Audited 2 packages in [TIME] Audited 2 packages in [TIME]
"###); "###);

View file

@ -21,7 +21,6 @@ fn tool_dir() {
[TEMP_DIR]/tools [TEMP_DIR]/tools
----- stderr ----- ----- stderr -----
warning: `uv tool dir` is experimental and may change without warning
"###); "###);
} }
@ -40,6 +39,5 @@ fn tool_dir_bin() {
[TEMP_DIR]/bin [TEMP_DIR]/bin
----- stderr ----- ----- stderr -----
warning: `uv tool dir` is experimental and may change without warning
"###); "###);
} }

View file

@ -35,7 +35,6 @@ fn tool_install() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -114,7 +113,6 @@ fn tool_install() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -199,7 +197,6 @@ fn tool_install_suggest_other_packages_with_executable() {
Did you mean `uv tool install fastapi-cli`? Did you mean `uv tool install fastapi-cli`?
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 35 packages in [TIME] Resolved 35 packages in [TIME]
Prepared 35 packages in [TIME] Prepared 35 packages in [TIME]
Installed 35 packages in [TIME] Installed 35 packages in [TIME]
@ -258,7 +255,6 @@ fn tool_install_version() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -346,7 +342,6 @@ fn tool_install_editable() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
@ -418,7 +413,6 @@ fn tool_install_editable() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Installed 1 executable: black Installed 1 executable: black
"###); "###);
@ -451,7 +445,6 @@ fn tool_install_editable() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Uninstalled 1 package in [TIME] Uninstalled 1 package in [TIME]
@ -502,7 +495,6 @@ fn tool_install_remove_on_empty() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -570,7 +562,6 @@ fn tool_install_remove_on_empty() -> Result<()> {
No executables are provided by `black` No executables are provided by `black`
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Uninstalled 6 packages in [TIME] Uninstalled 6 packages in [TIME]
@ -595,7 +586,6 @@ fn tool_install_remove_on_empty() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
+ black==24.3.0 + black==24.3.0
@ -648,7 +638,6 @@ fn tool_install_editable_from() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
@ -730,7 +719,6 @@ fn tool_install_from() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -756,7 +744,6 @@ fn tool_install_from() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
error: Package name (`flask`) provided with `--from` does not match install request (`black`) error: Package name (`flask`) provided with `--from` does not match install request (`black`)
"###); "###);
@ -773,7 +760,6 @@ fn tool_install_from() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
error: Package requirement (`black==24.3.0`) provided with `--from` conflicts with install request (`black==24.2.0`) error: Package requirement (`black==24.3.0`) provided with `--from` conflicts with install request (`black==24.2.0`)
"###); "###);
} }
@ -798,7 +784,6 @@ fn tool_install_already_installed() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -866,7 +851,6 @@ fn tool_install_already_installed() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
`black` is already installed `black` is already installed
"###); "###);
@ -905,7 +889,6 @@ fn tool_install_already_installed() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Uninstalled [N] packages in [TIME] Uninstalled [N] packages in [TIME]
@ -933,7 +916,6 @@ fn tool_install_already_installed() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Uninstalled [N] packages in [TIME] Uninstalled [N] packages in [TIME]
@ -956,7 +938,6 @@ fn tool_install_already_installed() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Uninstalled [N] packages in [TIME] Uninstalled [N] packages in [TIME]
@ -989,7 +970,6 @@ fn tool_install_entry_point_exists() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -1029,7 +1009,6 @@ fn tool_install_entry_point_exists() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -1071,7 +1050,6 @@ fn tool_install_entry_point_exists() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
+ black==24.3.0 + black==24.3.0
@ -1095,7 +1073,6 @@ fn tool_install_entry_point_exists() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
+ black==24.3.0 + black==24.3.0
@ -1121,7 +1098,6 @@ fn tool_install_entry_point_exists() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Installed 2 executables: black, blackd Installed 2 executables: black, blackd
"###); "###);
@ -1138,7 +1114,6 @@ fn tool_install_entry_point_exists() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
`black` is already installed `black` is already installed
"###); "###);
@ -1156,7 +1131,6 @@ fn tool_install_entry_point_exists() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Uninstalled [N] packages in [TIME] Uninstalled [N] packages in [TIME]
@ -1263,7 +1237,6 @@ fn tool_install_home() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -1301,7 +1274,6 @@ fn tool_install_xdg_data_home() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -1338,7 +1310,6 @@ fn tool_install_xdg_bin_home() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -1374,7 +1345,6 @@ fn tool_install_tool_bin_dir() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -1410,7 +1380,6 @@ fn tool_install_no_entrypoints() {
No executables are provided by `iniconfig` No executables are provided by `iniconfig`
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 1 package in [TIME] Resolved 1 package in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 1 package in [TIME] Installed 1 package in [TIME]
@ -1436,7 +1405,6 @@ fn tool_install_unnamed_package() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -1526,7 +1494,6 @@ fn tool_install_unnamed_conflict() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
error: Package name (`iniconfig`) provided with `--from` does not match install request (`black`) error: Package name (`iniconfig`) provided with `--from` does not match install request (`black`)
"###); "###);
} }
@ -1551,7 +1518,6 @@ fn tool_install_unnamed_from() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -1640,7 +1606,6 @@ fn tool_install_unnamed_with() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 7 packages in [TIME] Resolved 7 packages in [TIME]
Prepared 7 packages in [TIME] Prepared 7 packages in [TIME]
Installed 7 packages in [TIME] Installed 7 packages in [TIME]
@ -1738,7 +1703,6 @@ fn tool_install_requirements_txt() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -1788,7 +1752,6 @@ fn tool_install_requirements_txt() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Uninstalled [N] packages in [TIME] Uninstalled [N] packages in [TIME]
@ -1848,7 +1811,6 @@ fn tool_install_requirements_txt_arguments() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
warning: Ignoring `--index-url` from requirements file: `https://test.pypi.org/simple`. Instead, use the `--index-url` command-line argument, or set `index-url` in a `uv.toml` or `pyproject.toml` file. warning: Ignoring `--index-url` from requirements file: `https://test.pypi.org/simple`. Instead, use the `--index-url` command-line argument, or set `index-url` in a `uv.toml` or `pyproject.toml` file.
Resolved 7 packages in [TIME] Resolved 7 packages in [TIME]
Prepared 7 packages in [TIME] Prepared 7 packages in [TIME]
@ -1906,7 +1868,6 @@ fn tool_install_requirements_txt_arguments() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Installed 2 executables: black, blackd Installed 2 executables: black, blackd
"###); "###);
@ -1934,7 +1895,6 @@ fn tool_install_requirements_txt_arguments() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
Prepared 8 packages in [TIME] Prepared 8 packages in [TIME]
Installed 8 packages in [TIME] Installed 8 packages in [TIME]
@ -1970,7 +1930,6 @@ fn tool_install_upgrade() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -2012,7 +1971,6 @@ fn tool_install_upgrade() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Installed 2 executables: black, blackd Installed 2 executables: black, blackd
"###); "###);
@ -2046,7 +2004,6 @@ fn tool_install_upgrade() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -2087,7 +2044,6 @@ fn tool_install_upgrade() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Uninstalled [N] packages in [TIME] Uninstalled [N] packages in [TIME]
@ -2138,7 +2094,6 @@ fn tool_install_python_request() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -2164,7 +2119,6 @@ fn tool_install_python_request() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
`black` is already installed `black` is already installed
"###); "###);
@ -2181,7 +2135,6 @@ fn tool_install_python_request() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Existing environment for `black` does not satisfy the requested Python interpreter Existing environment for `black` does not satisfy the requested Python interpreter
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
@ -2216,7 +2169,6 @@ fn tool_install_preserve_environment() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -2242,7 +2194,6 @@ fn tool_install_preserve_environment() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
error: Because black==24.1.1 depends on packaging>=22.0 and you require black==24.1.1, we can conclude that you require packaging>=22.0. error: Because black==24.1.1 depends on packaging>=22.0 and you require black==24.1.1, we can conclude that you require packaging>=22.0.
And because you require packaging==0.0.1, we can conclude that your requirements are unsatisfiable. And because you require packaging==0.0.1, we can conclude that your requirements are unsatisfiable.
"###); "###);
@ -2258,7 +2209,6 @@ fn tool_install_preserve_environment() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
`black==24.1.1` is already installed `black==24.1.1` is already installed
"###); "###);
} }
@ -2284,7 +2234,6 @@ fn tool_install_warn_path() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -2319,7 +2268,6 @@ fn tool_install_bad_receipt() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -2354,7 +2302,6 @@ fn tool_install_bad_receipt() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
warning: Removed existing `black` with invalid receipt warning: Removed existing `black` with invalid receipt
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -2391,7 +2338,6 @@ fn tool_install_malformed_dist_info() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -2465,7 +2411,6 @@ fn tool_install_settings() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -2535,7 +2480,6 @@ fn tool_install_settings() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
`flask>=3` is already installed `flask>=3` is already installed
"###); "###);
@ -2571,7 +2515,6 @@ fn tool_install_settings() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Uninstalled [N] packages in [TIME] Uninstalled [N] packages in [TIME]

View file

@ -35,7 +35,6 @@ fn tool_list() {
- blackd - blackd
----- stderr ----- ----- stderr -----
warning: `uv tool list` is experimental and may change without warning
"###); "###);
} }
@ -65,7 +64,6 @@ fn tool_list_paths() {
- blackd ([TEMP_DIR]/bin/blackd) - blackd ([TEMP_DIR]/bin/blackd)
----- stderr ----- ----- stderr -----
warning: `uv tool list` is experimental and may change without warning
"###); "###);
} }
@ -83,7 +81,6 @@ fn tool_list_empty() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool list` is experimental and may change without warning
No tools installed No tools installed
"###); "###);
} }
@ -113,7 +110,6 @@ fn tool_list_missing_receipt() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool list` is experimental and may change without warning
warning: Ignoring malformed tool `black` (run `uv tool uninstall black` to remove) warning: Ignoring malformed tool `black` (run `uv tool uninstall black` to remove)
"###); "###);
} }
@ -163,7 +159,6 @@ fn tool_list_bad_environment() -> Result<()> {
- ruff - ruff
----- stderr ----- ----- stderr -----
warning: `uv tool list` is experimental and may change without warning
Python interpreter not found at `[TEMP_DIR]/tools/black/[BIN]/python` Python interpreter not found at `[TEMP_DIR]/tools/black/[BIN]/python`
"### "###
); );
@ -228,7 +223,6 @@ fn tool_list_deprecated() -> Result<()> {
- blackd - blackd
----- stderr ----- ----- stderr -----
warning: `uv tool list` is experimental and may change without warning
"###); "###);
// Replace with an invalid receipt. // Replace with an invalid receipt.
@ -253,7 +247,6 @@ fn tool_list_deprecated() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool list` is experimental and may change without warning
warning: Ignoring malformed tool `black` (run `uv tool uninstall black` to remove) warning: Ignoring malformed tool `black` (run `uv tool uninstall black` to remove)
"###); "###);

View file

@ -39,7 +39,6 @@ fn tool_run_args() {
pytest 8.1.1 pytest 8.1.1
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -62,7 +61,6 @@ fn tool_run_args() {
pytest 8.1.1 pytest 8.1.1
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
"###); "###);
} }
@ -84,7 +82,6 @@ fn tool_run_at_version() {
pytest 8.0.0 pytest 8.0.0
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -105,7 +102,6 @@ fn tool_run_at_version() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
error: Not a valid package or extra name: "pytest@". Names must start and end with a letter or digit and may only contain -, _, ., and alphanumeric characters. error: Not a valid package or extra name: "pytest@". Names must start and end with a letter or digit and may only contain -, _, ., and alphanumeric characters.
"###); "###);
@ -120,7 +116,6 @@ fn tool_run_at_version() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
error: Not a valid package or extra name: "pytest@invalid". Names must start and end with a letter or digit and may only contain -, _, ., and alphanumeric characters. error: Not a valid package or extra name: "pytest@invalid". Names must start and end with a letter or digit and may only contain -, _, ., and alphanumeric characters.
"###); "###);
@ -151,7 +146,6 @@ fn tool_run_at_version() {
- pytest - pytest
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 1 package in [TIME] Prepared 1 package in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -182,7 +176,6 @@ fn tool_run_from_version() {
pytest 8.0.0 pytest 8.0.0
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -214,7 +207,6 @@ fn tool_run_suggest_valid_commands() {
- blackd - blackd
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Prepared 6 packages in [TIME] Prepared 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
@ -237,7 +229,6 @@ fn tool_run_suggest_valid_commands() {
The executable `fastapi-cli` was not found. The executable `fastapi-cli` was not found.
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved 3 packages in [TIME] Resolved 3 packages in [TIME]
Prepared 3 packages in [TIME] Prepared 3 packages in [TIME]
Installed 3 packages in [TIME] Installed 3 packages in [TIME]
@ -271,7 +262,6 @@ fn tool_run_warn_executable_not_in_from() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved 35 packages in [TIME] Resolved 35 packages in [TIME]
Prepared 35 packages in [TIME] Prepared 35 packages in [TIME]
Installed 35 packages in [TIME] Installed 35 packages in [TIME]
@ -341,7 +331,6 @@ fn tool_run_from_install() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
"###); "###);
// Verify that `--isolated` uses an isolated environment. // Verify that `--isolated` uses an isolated environment.
@ -358,7 +347,6 @@ fn tool_run_from_install() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -383,7 +371,6 @@ fn tool_run_from_install() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -412,7 +399,6 @@ fn tool_run_from_install() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -440,7 +426,6 @@ fn tool_run_from_install() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -474,7 +459,6 @@ fn tool_run_cache() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -501,7 +485,6 @@ fn tool_run_cache() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
"###); "###);
@ -521,7 +504,6 @@ fn tool_run_cache() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -550,7 +532,6 @@ fn tool_run_cache() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -577,7 +558,6 @@ fn tool_run_cache() {
Python (CPython) 3.11.[X] Python (CPython) 3.11.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -604,7 +584,6 @@ fn tool_run_cache() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
"###); "###);
@ -625,7 +604,6 @@ fn tool_run_cache() {
Python (CPython) 3.12.[X] Python (CPython) 3.12.[X]
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -660,7 +638,6 @@ fn tool_run_url() {
Werkzeug 3.0.1 Werkzeug 3.0.1
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -701,7 +678,6 @@ fn tool_run_requirements_txt() {
Werkzeug 3.0.1 Werkzeug 3.0.1
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -748,7 +724,6 @@ fn tool_run_requirements_txt_arguments() {
Werkzeug 3.0.1 Werkzeug 3.0.1
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
warning: Ignoring `--index-url` from requirements file: `https://test.pypi.org/simple`. Instead, use the `--index-url` command-line argument, or set `index-url` in a `uv.toml` or `pyproject.toml` file. warning: Ignoring `--index-url` from requirements file: `https://test.pypi.org/simple`. Instead, use the `--index-url` command-line argument, or set `index-url` in a `uv.toml` or `pyproject.toml` file.
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
@ -780,7 +755,6 @@ fn tool_run_list_installed() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
No tools installed No tools installed
"###); "###);
@ -805,7 +779,6 @@ fn tool_run_list_installed() {
- blackd - blackd
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
"###); "###);
} }
@ -830,7 +803,6 @@ fn tool_run_without_output() {
pytest 8.1.1 pytest 8.1.1
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
"###); "###);
@ -848,7 +820,6 @@ fn tool_run_without_output() {
pytest 8.1.1 pytest 8.1.1
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
"###); "###);
} }
@ -868,7 +839,6 @@ fn warn_no_executables_found() {
The executable `requests` was not found. The executable `requests` was not found.
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
Prepared 5 packages in [TIME] Prepared 5 packages in [TIME]
Installed 5 packages in [TIME] Installed 5 packages in [TIME]
@ -901,7 +871,6 @@ fn tool_run_upgrade_warn() {
----- stderr ----- ----- stderr -----
warning: Tools cannot be upgraded via `uv tool run`; use `uv tool upgrade --all` to upgrade all installed tools, or `uv tool run package@latest` to run the latest version of a tool warning: Tools cannot be upgraded via `uv tool run`; use `uv tool upgrade --all` to upgrade all installed tools, or `uv tool run package@latest` to run the latest version of a tool
warning: `uv tool run` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -928,7 +897,6 @@ fn tool_run_resolution_error() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
× No solution found when resolving tool dependencies: × No solution found when resolving tool dependencies:
Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable. Because there are no versions of add and you require add, we can conclude that your requirements are unsatisfiable.
"###); "###);
@ -961,7 +929,6 @@ fn tool_run_latest() {
pytest 7.0.0 pytest 7.0.0
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
"###); "###);
// Run `pytest@latest`, which should use the latest version. // Run `pytest@latest`, which should use the latest version.
@ -976,7 +943,6 @@ fn tool_run_latest() {
pytest 8.1.1 pytest 8.1.1
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
Prepared 4 packages in [TIME] Prepared 4 packages in [TIME]
Installed 4 packages in [TIME] Installed 4 packages in [TIME]
@ -998,6 +964,5 @@ fn tool_run_latest() {
pytest 7.0.0 pytest 7.0.0
----- stderr ----- ----- stderr -----
warning: `uv tool run` is experimental and may change without warning
"###); "###);
} }

View file

@ -30,7 +30,6 @@ fn tool_uninstall() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool uninstall` is experimental and may change without warning
Uninstalled 2 executables: black, blackd Uninstalled 2 executables: black, blackd
"###); "###);
@ -43,7 +42,6 @@ fn tool_uninstall() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool list` is experimental and may change without warning
No tools installed No tools installed
"###); "###);
@ -58,7 +56,6 @@ fn tool_uninstall() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
Installed 6 packages in [TIME] Installed 6 packages in [TIME]
+ black==24.2.0 + black==24.2.0
@ -85,7 +82,6 @@ fn tool_uninstall_not_installed() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool uninstall` is experimental and may change without warning
error: `black` is not installed error: `black` is not installed
"###); "###);
} }
@ -115,7 +111,6 @@ fn tool_uninstall_missing_receipt() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool uninstall` is experimental and may change without warning
Removed dangling environment for `black` Removed dangling environment for `black`
"###); "###);
} }
@ -145,7 +140,6 @@ fn tool_uninstall_all_missing_receipt() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool uninstall` is experimental and may change without warning
Removed dangling environment for `black` Removed dangling environment for `black`
"###); "###);
} }

View file

@ -27,7 +27,6 @@ fn test_tool_upgrade_name() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -49,7 +48,6 @@ fn test_tool_upgrade_name() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
Updated babel v2.6.0 -> v2.14.0 Updated babel v2.6.0 -> v2.14.0
- babel==2.6.0 - babel==2.6.0
+ babel==2.14.0 + babel==2.14.0
@ -79,7 +77,6 @@ fn test_tool_upgrade_all() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -100,7 +97,6 @@ fn test_tool_upgrade_all() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -122,7 +118,6 @@ fn test_tool_upgrade_all() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
Updated babel v2.6.0 -> v2.14.0 Updated babel v2.6.0 -> v2.14.0
- babel==2.6.0 - babel==2.6.0
+ babel==2.14.0 + babel==2.14.0
@ -154,7 +149,6 @@ fn test_tool_upgrade_non_existing_package() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
`black` is not installed; run `uv tool install black` to install `black` is not installed; run `uv tool install black` to install
"###); "###);
@ -169,7 +163,6 @@ fn test_tool_upgrade_non_existing_package() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
Nothing to upgrade Nothing to upgrade
"###); "###);
} }
@ -194,7 +187,6 @@ fn test_tool_upgrade_settings() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -218,7 +210,6 @@ fn test_tool_upgrade_settings() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
Nothing to upgrade Nothing to upgrade
"###); "###);
@ -234,7 +225,6 @@ fn test_tool_upgrade_settings() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
Updated black v23.1.0 -> v24.3.0 Updated black v23.1.0 -> v24.3.0
- black==23.1.0 - black==23.1.0
+ black==24.3.0 + black==24.3.0
@ -263,7 +253,6 @@ fn test_tool_upgrade_respect_constraints() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -285,7 +274,6 @@ fn test_tool_upgrade_respect_constraints() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
Updated babel v2.6.0 -> v2.9.1 Updated babel v2.6.0 -> v2.9.1
- babel==2.6.0 - babel==2.6.0
+ babel==2.9.1 + babel==2.9.1
@ -316,7 +304,6 @@ fn test_tool_upgrade_constraint() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -340,7 +327,6 @@ fn test_tool_upgrade_constraint() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
Updated babel v2.6.0 -> v2.13.1 Updated babel v2.6.0 -> v2.13.1
- babel==2.6.0 - babel==2.6.0
+ babel==2.13.1 + babel==2.13.1
@ -362,7 +348,6 @@ fn test_tool_upgrade_constraint() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
Updated babel v2.13.1 -> v2.14.0 Updated babel v2.13.1 -> v2.14.0
- babel==2.13.1 - babel==2.13.1
+ babel==2.14.0 + babel==2.14.0
@ -385,7 +370,6 @@ fn test_tool_upgrade_constraint() {
----- stderr ----- ----- stderr -----
warning: `--upgrade` is enabled by default on `uv tool upgrade` warning: `--upgrade` is enabled by default on `uv tool upgrade`
warning: `uv tool upgrade` is experimental and may change without warning
Nothing to upgrade Nothing to upgrade
"###); "###);
} }
@ -413,7 +397,6 @@ fn test_tool_upgrade_with() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool install` is experimental and may change without warning
Resolved [N] packages in [TIME] Resolved [N] packages in [TIME]
Prepared [N] packages in [TIME] Prepared [N] packages in [TIME]
Installed [N] packages in [TIME] Installed [N] packages in [TIME]
@ -435,7 +418,6 @@ fn test_tool_upgrade_with() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv tool upgrade` is experimental and may change without warning
Modified babel environment Modified babel environment
- pytz==2018.5 - pytz==2018.5
+ pytz==2024.1 + pytz==2024.1

View file

@ -39,7 +39,6 @@ fn nested_dependencies() -> Result<()> {
threadpoolctl v3.4.0 threadpoolctl v3.4.0
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
"### "###
); );
@ -85,7 +84,6 @@ fn invert() -> Result<()> {
(*) Package tree already displayed (*) Package tree already displayed
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
"### "###
); );
@ -108,7 +106,6 @@ fn invert() -> Result<()> {
project v0.1.0 project v0.1.0
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
"### "###
); );
@ -142,7 +139,6 @@ fn frozen() -> Result<()> {
sniffio v1.3.1 sniffio v1.3.1
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 4 packages in [TIME] Resolved 4 packages in [TIME]
"### "###
); );
@ -175,7 +171,6 @@ fn frozen() -> Result<()> {
sniffio v1.3.1 sniffio v1.3.1
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
"### "###
); );
@ -215,7 +210,6 @@ fn platform_dependencies() -> Result<()> {
platformdirs v4.2.0 platformdirs v4.2.0
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
"###); "###);
@ -234,7 +228,6 @@ fn platform_dependencies() -> Result<()> {
platformdirs v4.2.0 platformdirs v4.2.0
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
"###); "###);
@ -254,7 +247,6 @@ fn platform_dependencies() -> Result<()> {
platformdirs v4.2.0 platformdirs v4.2.0
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
"### "###
); );
@ -300,7 +292,6 @@ fn repeated_dependencies() -> Result<()> {
sniffio v1.3.1 sniffio v1.3.1
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 6 packages in [TIME] Resolved 6 packages in [TIME]
"### "###
); );
@ -375,7 +366,6 @@ fn repeated_version() -> Result<()> {
sniffio v1.3.1 sniffio v1.3.1
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 7 packages in [TIME] Resolved 7 packages in [TIME]
"### "###
); );
@ -417,7 +407,6 @@ fn dev_dependencies() -> Result<()> {
sniffio v1.3.1 sniffio v1.3.1
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -461,7 +450,6 @@ fn dev_dependencies_inverted() -> Result<()> {
(*) Package tree already displayed (*) Package tree already displayed
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 5 packages in [TIME] Resolved 5 packages in [TIME]
"### "###
); );
@ -513,7 +501,6 @@ fn optional_dependencies() -> Result<()> {
sniffio v1.3.1 sniffio v1.3.1
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 14 packages in [TIME] Resolved 14 packages in [TIME]
"### "###
); );
@ -573,7 +560,6 @@ fn optional_dependencies_inverted() -> Result<()> {
(*) Package tree already displayed (*) Package tree already displayed
----- stderr ----- ----- stderr -----
warning: `uv tree` is experimental and may change without warning
Resolved 14 packages in [TIME] Resolved 14 packages in [TIME]
"### "###
); );

View file

@ -502,7 +502,7 @@ fn create_venv_unknown_python_minor() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
× No interpreter found for Python 3.100 in system path or `py` launcher × No interpreter found for Python 3.100 in managed installations, system path, or `py` launcher
"### "###
); );
} else { } else {
@ -512,7 +512,7 @@ fn create_venv_unknown_python_minor() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
× No interpreter found for Python 3.100 in system path × No interpreter found for Python 3.100 in managed installations or system path
"### "###
); );
} }
@ -540,7 +540,7 @@ fn create_venv_unknown_python_patch() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
× No interpreter found for Python 3.12.100 in system path or `py` launcher × No interpreter found for Python 3.12.100 in managed installations, system path, or `py` launcher
"### "###
); );
} else { } else {
@ -550,7 +550,7 @@ fn create_venv_unknown_python_patch() {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
× No interpreter found for Python 3.12.100 in system path × No interpreter found for Python 3.12.100 in managed installations or system path
"### "###
); );
} }

View file

@ -19,7 +19,6 @@ fn packse_add_remove_one_package() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 49 packages in [TIME] Resolved 49 packages in [TIME]
"###); "###);
@ -221,7 +220,6 @@ fn packse_add_remove_existing_package_noop() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 49 packages in [TIME] Resolved 49 packages in [TIME]
"###); "###);
@ -255,7 +253,6 @@ fn packse_promote_transitive_to_direct_then_remove() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 49 packages in [TIME] Resolved 49 packages in [TIME]
"###); "###);
@ -407,7 +404,6 @@ fn jax_instability() -> Result<()> {
----- stdout ----- ----- stdout -----
----- stderr ----- ----- stderr -----
warning: `uv lock` is experimental and may change without warning
Resolved 8 packages in [TIME] Resolved 8 packages in [TIME]
"###); "###);

View file

@ -12,23 +12,23 @@ uv [OPTIONS] <COMMAND>
<h3 class="cli-reference">Commands</h3> <h3 class="cli-reference">Commands</h3>
<dl class="cli-reference"><dt><a href="#uv-run"><code>uv run</code></a></dt><dd><p>Run a command or script (experimental)</p> <dl class="cli-reference"><dt><a href="#uv-run"><code>uv run</code></a></dt><dd><p>Run a command or script</p>
</dd> </dd>
<dt><a href="#uv-init"><code>uv init</code></a></dt><dd><p>Create a new project (experimental)</p> <dt><a href="#uv-init"><code>uv init</code></a></dt><dd><p>Create a new project</p>
</dd> </dd>
<dt><a href="#uv-add"><code>uv add</code></a></dt><dd><p>Add dependencies to the project (experimental)</p> <dt><a href="#uv-add"><code>uv add</code></a></dt><dd><p>Add dependencies to the project</p>
</dd> </dd>
<dt><a href="#uv-remove"><code>uv remove</code></a></dt><dd><p>Remove dependencies from the project (experimental)</p> <dt><a href="#uv-remove"><code>uv remove</code></a></dt><dd><p>Remove dependencies from the project</p>
</dd> </dd>
<dt><a href="#uv-sync"><code>uv sync</code></a></dt><dd><p>Update the project&#8217;s environment (experimental)</p> <dt><a href="#uv-sync"><code>uv sync</code></a></dt><dd><p>Update the project&#8217;s environment</p>
</dd> </dd>
<dt><a href="#uv-lock"><code>uv lock</code></a></dt><dd><p>Update the project&#8217;s lockfile (experimental)</p> <dt><a href="#uv-lock"><code>uv lock</code></a></dt><dd><p>Update the project&#8217;s lockfile</p>
</dd> </dd>
<dt><a href="#uv-tree"><code>uv tree</code></a></dt><dd><p>Display the project&#8217;s dependency tree (experimental)</p> <dt><a href="#uv-tree"><code>uv tree</code></a></dt><dd><p>Display the project&#8217;s dependency tree</p>
</dd> </dd>
<dt><a href="#uv-tool"><code>uv tool</code></a></dt><dd><p>Run and install commands provided by Python packages (experimental)</p> <dt><a href="#uv-tool"><code>uv tool</code></a></dt><dd><p>Run and install commands provided by Python packages</p>
</dd> </dd>
<dt><a href="#uv-python"><code>uv python</code></a></dt><dd><p>Manage Python versions and installations (experimental)</p> <dt><a href="#uv-python"><code>uv python</code></a></dt><dd><p>Manage Python versions and installations</p>
</dd> </dd>
<dt><a href="#uv-pip"><code>uv pip</code></a></dt><dd><p>Manage Python packages with a pip-compatible interface</p> <dt><a href="#uv-pip"><code>uv pip</code></a></dt><dd><p>Manage Python packages with a pip-compatible interface</p>
</dd> </dd>
@ -44,7 +44,7 @@ uv [OPTIONS] <COMMAND>
## uv run ## uv run
Run a command or script (experimental). Run a command or script.
Ensures that the command runs in a Python environment. Ensures that the command runs in a Python environment.
@ -332,7 +332,7 @@ uv run [OPTIONS] <COMMAND>
## uv init ## uv init
Create a new project (experimental). Create a new project.
Follows the `pyproject.toml` specification. Follows the `pyproject.toml` specification.
@ -451,7 +451,7 @@ uv init [OPTIONS] [PATH]
## uv add ## uv add
Add dependencies to the project (experimental). Add dependencies to the project.
Dependencies are added to the project's `pyproject.toml` file. Dependencies are added to the project's `pyproject.toml` file.
@ -737,7 +737,7 @@ uv add [OPTIONS] <PACKAGES|--requirements <REQUIREMENTS>>
## uv remove ## uv remove
Remove dependencies from the project (experimental). Remove dependencies from the project.
Dependencies are removed from the project's `pyproject.toml` file. Dependencies are removed from the project's `pyproject.toml` file.
@ -997,7 +997,7 @@ uv remove [OPTIONS] <PACKAGES>...
## uv sync ## uv sync
Update the project's environment (experimental). Update the project's environment.
Syncing ensures that all project dependencies are installed and up-to-date with the lockfile. Syncing also removes packages that are not declared as dependencies of the project. Syncing ensures that all project dependencies are installed and up-to-date with the lockfile. Syncing also removes packages that are not declared as dependencies of the project.
@ -1261,7 +1261,7 @@ uv sync [OPTIONS]
## uv lock ## uv lock
Update the project's lockfile (experimental). Update the project's lockfile.
If the project lockfile (`uv.lock`) does not exist, it will be created. If a lockfile is present, its contents will be used as preferences for the resolution. If the project lockfile (`uv.lock`) does not exist, it will be created. If a lockfile is present, its contents will be used as preferences for the resolution.
@ -1489,7 +1489,7 @@ uv lock [OPTIONS]
## uv tree ## uv tree
Display the project's dependency tree (experimental) Display the project's dependency tree
<h3 class="cli-reference">Usage</h3> <h3 class="cli-reference">Usage</h3>
@ -1775,7 +1775,7 @@ uv tree [OPTIONS]
## uv tool ## uv tool
Run and install commands provided by Python packages (experimental) Run and install commands provided by Python packages
<h3 class="cli-reference">Usage</h3> <h3 class="cli-reference">Usage</h3>
@ -2860,7 +2860,7 @@ uv tool dir [OPTIONS]
## uv python ## uv python
Manage Python versions and installations (experimental) Manage Python versions and installations
Generally, uv first searches for Python in a virtual environment, either Generally, uv first searches for Python in a virtual environment, either
active or in a `.venv` directory in the current working directory or active or in a `.venv` directory in the current working directory or
@ -2871,8 +2871,7 @@ searching for Python executables in the `PATH` environment variable.
On Windows, the `py` launcher is also invoked to find Python On Windows, the `py` launcher is also invoked to find Python
executables. executables.
When preview is enabled, i.e., via `--preview` or by using a preview By default, uv will download Python if a version cannot be found. This
command, uv will download Python if a version cannot be found. This
behavior can be disabled with the `--python-downloads` option. behavior can be disabled with the `--python-downloads` option.
The `--python` option allows requesting a different interpreter. The `--python` option allows requesting a different interpreter.