From d5a2a5fed3e502a2834d0a8e49a180a8f148523f Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 20 Feb 2024 15:27:30 -0500 Subject: [PATCH] Add support for `>dev` specifier (#1776) ## Summary Not a fan of this one but we don't have a clear policy on it yet so feels weird to discriminate. Closes https://github.com/astral-sh/uv/issues/1686. --- crates/pypi-types/src/lenient_requirement.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/crates/pypi-types/src/lenient_requirement.rs b/crates/pypi-types/src/lenient_requirement.rs index 616e6a905ed0..e999ab05f1c2 100644 --- a/crates/pypi-types/src/lenient_requirement.rs +++ b/crates/pypi-types/src/lenient_requirement.rs @@ -21,6 +21,8 @@ static MISSING_DOT: Lazy = Lazy::new(|| Regex::new(r"(\d\.\d)+\*").unwrap static TRAILING_COMMA: Lazy = Lazy::new(|| Regex::new(r",\s*$").unwrap()); /// Ex) `>= '2.7'`, `>=3.6'` static STRAY_QUOTES: Lazy = Lazy::new(|| Regex::new(r#"['"]([*\d])|([*\d])['"]"#).unwrap()); +/// Ex) `>dev` +static GREATER_THAN_DEV: Lazy = Lazy::new(|| Regex::new(r">dev").unwrap()); /// Regex to match the invalid specifier, replacement to fix it and message about was wrong and /// fixed @@ -45,6 +47,8 @@ static FIXUPS: &[(&Lazy, &str, &str)] = &[ (&TRAILING_COMMA, r"${1}", "removing trailing comma"), // Given `>= '2.7'`, rewrite to `>= 2.7` (&STRAY_QUOTES, r"$1$2", "removing stray quotes"), + // Given `>dev`, rewrite to `>0.0.0dev` + (&GREATER_THAN_DEV, r">0.0.0dev", "assuming 0.0.0dev"), ]; fn parse_with_fixups>(input: &str, type_name: &str) -> Result { @@ -322,4 +326,12 @@ mod tests { let expected: Requirement = Requirement::from_str("botocore>=1.3.0,<1.4.0").unwrap(); assert_eq!(actual, expected); } + + /// + #[test] + fn greater_than_dev() { + let actual: VersionSpecifiers = LenientVersionSpecifiers::from_str(">dev").unwrap().into(); + let expected: VersionSpecifiers = VersionSpecifiers::from_str(">0.0.0dev").unwrap(); + assert_eq!(actual, expected); + } }