Split preview mode into separate feature flags (#14823)
I think this would give us better hygiene than a global flag. It makes it easier for users to opt-in to overlapping features, such as Python upgrades and Python bin installations and to disable warnings for preview mode without opting in to a bunch of other features. In general, I want to reduce the burden for putting something under preview. The `--preview` and `--no-preview` flags are retained as global overrides. A new `--preview-features` option is added which accepts comma separated features or can be passed multiple times, e.g., `--preview-features add-bounds,pylock`. There's a `UV_PREVIEW_FEATURES` environment variable for that option (I'm not sure if we should overload `UV_PREVIEW`, but could be convinced).
This commit is contained in:
@@ -11,8 +11,8 @@ use clap::{Args, Parser, Subcommand};
|
||||
use uv_cache::CacheArgs;
|
||||
use uv_configuration::{
|
||||
ConfigSettingEntry, ConfigSettingPackageEntry, ExportFormat, IndexStrategy,
|
||||
KeyringProviderType, PackageNameSpecifier, ProjectBuildBackend, TargetTriple, TrustedHost,
|
||||
TrustedPublishing, VersionControlSystem,
|
||||
KeyringProviderType, PackageNameSpecifier, PreviewFeatures, ProjectBuildBackend, TargetTriple,
|
||||
TrustedHost, TrustedPublishing, VersionControlSystem,
|
||||
};
|
||||
use uv_distribution_types::{Index, IndexUrl, Origin, PipExtraIndex, PipFindLinks, PipIndex};
|
||||
use uv_normalize::{ExtraName, GroupName, PackageName, PipGroupName};
|
||||
@@ -273,7 +273,7 @@ pub struct GlobalArgs {
|
||||
)]
|
||||
pub allow_insecure_host: Option<Vec<Maybe<TrustedHost>>>,
|
||||
|
||||
/// Whether to enable experimental, preview features.
|
||||
/// Whether to enable all experimental preview features.
|
||||
///
|
||||
/// Preview features may change without warning.
|
||||
#[arg(global = true, long, hide = true, env = EnvVars::UV_PREVIEW, value_parser = clap::builder::BoolishValueParser::new(), overrides_with("no_preview"))]
|
||||
@@ -282,6 +282,25 @@ pub struct GlobalArgs {
|
||||
#[arg(global = true, long, overrides_with("preview"), hide = true)]
|
||||
pub no_preview: bool,
|
||||
|
||||
/// Enable experimental preview features.
|
||||
///
|
||||
/// Preview features may change without warning.
|
||||
///
|
||||
/// Use comma-separated values or pass multiple times to enable multiple features.
|
||||
///
|
||||
/// The following features are available: `python-install-default`, `python-upgrade`,
|
||||
/// `json-output`, `pylock`, `add-bounds`.
|
||||
#[arg(
|
||||
global = true,
|
||||
long = "preview-features",
|
||||
env = EnvVars::UV_PREVIEW_FEATURES,
|
||||
value_delimiter = ',',
|
||||
hide = true,
|
||||
alias = "preview-feature",
|
||||
value_enum,
|
||||
)]
|
||||
pub preview_features: Vec<PreviewFeatures>,
|
||||
|
||||
/// Avoid discovering a `pyproject.toml` or `uv.toml` file.
|
||||
///
|
||||
/// Normally, configuration files are discovered in the current directory,
|
||||
|
||||
Reference in New Issue
Block a user