Skip to content

Commit 4dc3ce8

Browse files
committed
feat: add allow prerelease flag
1 parent 9f6519f commit 4dc3ce8

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

src/build_options.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ use crate::project_layout::ProjectResolver;
66
use crate::pyproject_toml::ToolMaturin;
77
use crate::python_interpreter::{InterpreterConfig, InterpreterKind, MINIMUM_PYTHON_MINOR};
88
use crate::{BuildContext, PythonInterpreter, Target};
9-
use anyhow::{bail, format_err, Context, Result};
9+
use anyhow::{bail, format_err, Context, Ok, Result};
1010
use cargo_metadata::{Metadata, Node};
1111
use cargo_options::heading;
1212
use pep440_rs::VersionSpecifiers;
1313
use serde::{Deserialize, Serialize};
1414
use std::collections::{HashMap, HashSet};
1515
use std::env;
16-
use std::ops::{Deref, DerefMut};
16+
use std::ops::{ControlFlow, Deref, DerefMut};
1717
use std::path::PathBuf;
1818
use tracing::debug;
1919

@@ -175,6 +175,9 @@ pub struct BuildOptions {
175175
#[arg(short = 'f', long, conflicts_with = "interpreter")]
176176
pub find_interpreter: bool,
177177

178+
#[arg(long)]
179+
pub allow_prereleases: bool,
180+
178181
/// Which kind of bindings to use.
179182
#[arg(short, long, value_parser = ["pyo3", "pyo3-ffi", "rust-cpython", "cffi", "uniffi", "bin"])]
180183
pub bindings: Option<String>,
@@ -560,6 +563,16 @@ impl BuildOptions {
560563
let generate_import_lib = is_generating_import_lib(&cargo_metadata)?;
561564
let interpreter = if self.find_interpreter {
562565
// Auto-detect interpreters
566+
let requires_python = metadata23.requires_python.as_ref();
567+
if requires_python.is_some() {
568+
let versions = requires_python.unwrap();
569+
let has_pre_release = versions.iter().any(|v| v.any_prerelease());
570+
if has_pre_release && !self.allow_prereleases {
571+
print!("⚠️ Warning: python version is pre release, need pass flag --allow-prereleases");
572+
ControlFlow::Break(());
573+
}
574+
}
575+
563576
self.find_interpreters(
564577
&bridge,
565578
&[],

src/develop.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ pub fn develop(develop_options: DevelopOptions, venv_dir: &Path) -> Result<()> {
260260
platform_tag: vec![PlatformTag::Linux],
261261
interpreter: vec![python.clone()],
262262
find_interpreter: false,
263+
allow_prereleases: true,
263264
bindings,
264265
out: Some(wheel_dir.path().to_path_buf()),
265266
skip_auditwheel: false,

0 commit comments

Comments
 (0)