diff --git a/crates/puffin-cli/src/commands/pip_compile.rs b/crates/puffin-cli/src/commands/pip_compile.rs index 0ff00e4b0..328bc021a 100644 --- a/crates/puffin-cli/src/commands/pip_compile.rs +++ b/crates/puffin-cli/src/commands/pip_compile.rs @@ -32,6 +32,7 @@ pub(crate) async fn pip_compile( constraints: &[RequirementsSource], output_file: Option<&Path>, resolution_mode: ResolutionMode, + prerelease_mode: PreReleaseMode, upgrade_mode: UpgradeMode, index_urls: Option, cache: Option<&Path>, @@ -61,7 +62,7 @@ pub(crate) async fn pip_compile( constraints, preferences, resolution_mode, - PreReleaseMode::default(), + prerelease_mode, ); // Detect the current Python interpreter. diff --git a/crates/puffin-cli/src/main.rs b/crates/puffin-cli/src/main.rs index ab7641fd3..71bb6fed7 100644 --- a/crates/puffin-cli/src/main.rs +++ b/crates/puffin-cli/src/main.rs @@ -4,7 +4,7 @@ use std::process::ExitCode; use clap::{Args, Parser, Subcommand}; use colored::Colorize; use directories::ProjectDirs; -use puffin_resolver::ResolutionMode; +use puffin_resolver::{PreReleaseMode, ResolutionMode}; use url::Url; use crate::commands::ExitStatus; @@ -74,6 +74,9 @@ struct PipCompileArgs { #[clap(long, value_enum)] resolution: Option, + #[clap(long, value_enum)] + prerelease: Option, + /// Write the compiled requirements to the given `requirements.txt` file. #[clap(short, long)] output_file: Option, @@ -200,6 +203,7 @@ async fn main() -> ExitCode { &constraints, args.output_file.as_deref(), args.resolution.unwrap_or_default(), + args.prerelease.unwrap_or_default(), args.upgrade.into(), index_urls, cache_dir, diff --git a/crates/puffin-resolver/src/candidate_selector.rs b/crates/puffin-resolver/src/candidate_selector.rs index 8f29f5731..30df2e8dc 100644 --- a/crates/puffin-resolver/src/candidate_selector.rs +++ b/crates/puffin-resolver/src/candidate_selector.rs @@ -99,8 +99,8 @@ impl CandidateSelector { // Determine the appropriate prerelease strategy for the current package. let allow_prerelease = match &self.prerelease_strategy { - PreReleaseStrategy::DisallowAll => AllowPreRelease::No, - PreReleaseStrategy::AllowAll => AllowPreRelease::Yes, + PreReleaseStrategy::Disallow => AllowPreRelease::No, + PreReleaseStrategy::Allow => AllowPreRelease::Yes, PreReleaseStrategy::IfNecessary => AllowPreRelease::IfNecessary, PreReleaseStrategy::Explicit(packages) => { if packages.contains(package_name) { diff --git a/crates/puffin-resolver/src/prerelease_mode.rs b/crates/puffin-resolver/src/prerelease_mode.rs index 9cb84ae02..1217ef333 100644 --- a/crates/puffin-resolver/src/prerelease_mode.rs +++ b/crates/puffin-resolver/src/prerelease_mode.rs @@ -7,10 +7,10 @@ use puffin_package::package_name::PackageName; #[cfg_attr(feature = "clap", derive(clap::ValueEnum))] pub enum PreReleaseMode { /// Disallow all pre-release versions. - DisallowAll, + Disallow, /// Allow all pre-release versions. - AllowAll, + Allow, /// Allow pre-release versions if all versions of a package are pre-release. IfNecessary, @@ -30,10 +30,10 @@ pub enum PreReleaseMode { #[derive(Debug)] pub(crate) enum PreReleaseStrategy { /// Disallow all pre-release versions. - DisallowAll, + Disallow, /// Allow all pre-release versions. - AllowAll, + Allow, /// Allow pre-release versions if all versions of a package are pre-release. IfNecessary, @@ -50,8 +50,8 @@ pub(crate) enum PreReleaseStrategy { impl PreReleaseStrategy { pub(crate) fn from_mode(mode: PreReleaseMode, direct_dependencies: &[Requirement]) -> Self { match mode { - PreReleaseMode::DisallowAll => Self::DisallowAll, - PreReleaseMode::AllowAll => Self::AllowAll, + PreReleaseMode::Disallow => Self::Disallow, + PreReleaseMode::Allow => Self::Allow, PreReleaseMode::IfNecessary => Self::IfNecessary, PreReleaseMode::Explicit => Self::Explicit( direct_dependencies diff --git a/crates/puffin-resolver/tests/resolver.rs b/crates/puffin-resolver/tests/resolver.rs index 9e202ca83..4c86638a7 100644 --- a/crates/puffin-resolver/tests/resolver.rs +++ b/crates/puffin-resolver/tests/resolver.rs @@ -295,7 +295,7 @@ async fn black_disallow_prerelease() -> Result<()> { vec![], vec![], ResolutionMode::default(), - PreReleaseMode::DisallowAll, + PreReleaseMode::Disallow, ); let resolver = Resolver::new(manifest, &MARKERS_311, &TAGS_311, &client, &DummyContext); @@ -339,7 +339,7 @@ async fn pylint_disallow_prerelease() -> Result<()> { vec![], vec![], ResolutionMode::default(), - PreReleaseMode::DisallowAll, + PreReleaseMode::Disallow, ); let resolver = Resolver::new(manifest, &MARKERS_311, &TAGS_311, &client, &DummyContext); @@ -361,7 +361,7 @@ async fn pylint_allow_prerelease() -> Result<()> { vec![], vec![], ResolutionMode::default(), - PreReleaseMode::AllowAll, + PreReleaseMode::Allow, ); let resolver = Resolver::new(manifest, &MARKERS_311, &TAGS_311, &client, &DummyContext);