mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 21:35:00 +00:00
Add a --prerelease
flag to the CLI (#217)
This commit is contained in:
parent
7e7e9f8a0c
commit
bae3c89ab1
5 changed files with 18 additions and 13 deletions
|
@ -32,6 +32,7 @@ pub(crate) async fn pip_compile(
|
||||||
constraints: &[RequirementsSource],
|
constraints: &[RequirementsSource],
|
||||||
output_file: Option<&Path>,
|
output_file: Option<&Path>,
|
||||||
resolution_mode: ResolutionMode,
|
resolution_mode: ResolutionMode,
|
||||||
|
prerelease_mode: PreReleaseMode,
|
||||||
upgrade_mode: UpgradeMode,
|
upgrade_mode: UpgradeMode,
|
||||||
index_urls: Option<IndexUrls>,
|
index_urls: Option<IndexUrls>,
|
||||||
cache: Option<&Path>,
|
cache: Option<&Path>,
|
||||||
|
@ -61,7 +62,7 @@ pub(crate) async fn pip_compile(
|
||||||
constraints,
|
constraints,
|
||||||
preferences,
|
preferences,
|
||||||
resolution_mode,
|
resolution_mode,
|
||||||
PreReleaseMode::default(),
|
prerelease_mode,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Detect the current Python interpreter.
|
// Detect the current Python interpreter.
|
||||||
|
|
|
@ -4,7 +4,7 @@ use std::process::ExitCode;
|
||||||
use clap::{Args, Parser, Subcommand};
|
use clap::{Args, Parser, Subcommand};
|
||||||
use colored::Colorize;
|
use colored::Colorize;
|
||||||
use directories::ProjectDirs;
|
use directories::ProjectDirs;
|
||||||
use puffin_resolver::ResolutionMode;
|
use puffin_resolver::{PreReleaseMode, ResolutionMode};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
use crate::commands::ExitStatus;
|
use crate::commands::ExitStatus;
|
||||||
|
@ -74,6 +74,9 @@ struct PipCompileArgs {
|
||||||
#[clap(long, value_enum)]
|
#[clap(long, value_enum)]
|
||||||
resolution: Option<ResolutionMode>,
|
resolution: Option<ResolutionMode>,
|
||||||
|
|
||||||
|
#[clap(long, value_enum)]
|
||||||
|
prerelease: Option<PreReleaseMode>,
|
||||||
|
|
||||||
/// Write the compiled requirements to the given `requirements.txt` file.
|
/// Write the compiled requirements to the given `requirements.txt` file.
|
||||||
#[clap(short, long)]
|
#[clap(short, long)]
|
||||||
output_file: Option<PathBuf>,
|
output_file: Option<PathBuf>,
|
||||||
|
@ -200,6 +203,7 @@ async fn main() -> ExitCode {
|
||||||
&constraints,
|
&constraints,
|
||||||
args.output_file.as_deref(),
|
args.output_file.as_deref(),
|
||||||
args.resolution.unwrap_or_default(),
|
args.resolution.unwrap_or_default(),
|
||||||
|
args.prerelease.unwrap_or_default(),
|
||||||
args.upgrade.into(),
|
args.upgrade.into(),
|
||||||
index_urls,
|
index_urls,
|
||||||
cache_dir,
|
cache_dir,
|
||||||
|
|
|
@ -99,8 +99,8 @@ impl CandidateSelector {
|
||||||
|
|
||||||
// Determine the appropriate prerelease strategy for the current package.
|
// Determine the appropriate prerelease strategy for the current package.
|
||||||
let allow_prerelease = match &self.prerelease_strategy {
|
let allow_prerelease = match &self.prerelease_strategy {
|
||||||
PreReleaseStrategy::DisallowAll => AllowPreRelease::No,
|
PreReleaseStrategy::Disallow => AllowPreRelease::No,
|
||||||
PreReleaseStrategy::AllowAll => AllowPreRelease::Yes,
|
PreReleaseStrategy::Allow => AllowPreRelease::Yes,
|
||||||
PreReleaseStrategy::IfNecessary => AllowPreRelease::IfNecessary,
|
PreReleaseStrategy::IfNecessary => AllowPreRelease::IfNecessary,
|
||||||
PreReleaseStrategy::Explicit(packages) => {
|
PreReleaseStrategy::Explicit(packages) => {
|
||||||
if packages.contains(package_name) {
|
if packages.contains(package_name) {
|
||||||
|
|
|
@ -7,10 +7,10 @@ use puffin_package::package_name::PackageName;
|
||||||
#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
|
#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
|
||||||
pub enum PreReleaseMode {
|
pub enum PreReleaseMode {
|
||||||
/// Disallow all pre-release versions.
|
/// Disallow all pre-release versions.
|
||||||
DisallowAll,
|
Disallow,
|
||||||
|
|
||||||
/// Allow all pre-release versions.
|
/// Allow all pre-release versions.
|
||||||
AllowAll,
|
Allow,
|
||||||
|
|
||||||
/// Allow pre-release versions if all versions of a package are pre-release.
|
/// Allow pre-release versions if all versions of a package are pre-release.
|
||||||
IfNecessary,
|
IfNecessary,
|
||||||
|
@ -30,10 +30,10 @@ pub enum PreReleaseMode {
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub(crate) enum PreReleaseStrategy {
|
pub(crate) enum PreReleaseStrategy {
|
||||||
/// Disallow all pre-release versions.
|
/// Disallow all pre-release versions.
|
||||||
DisallowAll,
|
Disallow,
|
||||||
|
|
||||||
/// Allow all pre-release versions.
|
/// Allow all pre-release versions.
|
||||||
AllowAll,
|
Allow,
|
||||||
|
|
||||||
/// Allow pre-release versions if all versions of a package are pre-release.
|
/// Allow pre-release versions if all versions of a package are pre-release.
|
||||||
IfNecessary,
|
IfNecessary,
|
||||||
|
@ -50,8 +50,8 @@ pub(crate) enum PreReleaseStrategy {
|
||||||
impl PreReleaseStrategy {
|
impl PreReleaseStrategy {
|
||||||
pub(crate) fn from_mode(mode: PreReleaseMode, direct_dependencies: &[Requirement]) -> Self {
|
pub(crate) fn from_mode(mode: PreReleaseMode, direct_dependencies: &[Requirement]) -> Self {
|
||||||
match mode {
|
match mode {
|
||||||
PreReleaseMode::DisallowAll => Self::DisallowAll,
|
PreReleaseMode::Disallow => Self::Disallow,
|
||||||
PreReleaseMode::AllowAll => Self::AllowAll,
|
PreReleaseMode::Allow => Self::Allow,
|
||||||
PreReleaseMode::IfNecessary => Self::IfNecessary,
|
PreReleaseMode::IfNecessary => Self::IfNecessary,
|
||||||
PreReleaseMode::Explicit => Self::Explicit(
|
PreReleaseMode::Explicit => Self::Explicit(
|
||||||
direct_dependencies
|
direct_dependencies
|
||||||
|
|
|
@ -295,7 +295,7 @@ async fn black_disallow_prerelease() -> Result<()> {
|
||||||
vec![],
|
vec![],
|
||||||
vec![],
|
vec![],
|
||||||
ResolutionMode::default(),
|
ResolutionMode::default(),
|
||||||
PreReleaseMode::DisallowAll,
|
PreReleaseMode::Disallow,
|
||||||
);
|
);
|
||||||
|
|
||||||
let resolver = Resolver::new(manifest, &MARKERS_311, &TAGS_311, &client, &DummyContext);
|
let resolver = Resolver::new(manifest, &MARKERS_311, &TAGS_311, &client, &DummyContext);
|
||||||
|
@ -339,7 +339,7 @@ async fn pylint_disallow_prerelease() -> Result<()> {
|
||||||
vec![],
|
vec![],
|
||||||
vec![],
|
vec![],
|
||||||
ResolutionMode::default(),
|
ResolutionMode::default(),
|
||||||
PreReleaseMode::DisallowAll,
|
PreReleaseMode::Disallow,
|
||||||
);
|
);
|
||||||
|
|
||||||
let resolver = Resolver::new(manifest, &MARKERS_311, &TAGS_311, &client, &DummyContext);
|
let resolver = Resolver::new(manifest, &MARKERS_311, &TAGS_311, &client, &DummyContext);
|
||||||
|
@ -361,7 +361,7 @@ async fn pylint_allow_prerelease() -> Result<()> {
|
||||||
vec![],
|
vec![],
|
||||||
vec![],
|
vec![],
|
||||||
ResolutionMode::default(),
|
ResolutionMode::default(),
|
||||||
PreReleaseMode::AllowAll,
|
PreReleaseMode::Allow,
|
||||||
);
|
);
|
||||||
|
|
||||||
let resolver = Resolver::new(manifest, &MARKERS_311, &TAGS_311, &client, &DummyContext);
|
let resolver = Resolver::new(manifest, &MARKERS_311, &TAGS_311, &client, &DummyContext);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue