diff --git a/crates/uv-python/src/discovery.rs b/crates/uv-python/src/discovery.rs index ce09933cf..a77ae6c94 100644 --- a/crates/uv-python/src/discovery.rs +++ b/crates/uv-python/src/discovery.rs @@ -2177,7 +2177,7 @@ impl VersionRequest { (version.major(), version.minor(), version.patch()) == (*major, *minor, Some(*patch)) } - Self::Range(specifiers, _) => specifiers.contains(&version.version), + Self::Range(specifiers, _) => specifiers.contains(&version.version.only_release()), Self::MajorMinorPrerelease(major, minor, prerelease, _) => { (version.major(), version.minor(), version.pre()) == (*major, *minor, Some(*prerelease)) diff --git a/crates/uv/tests/it/python_install.rs b/crates/uv/tests/it/python_install.rs index 9129ce163..6919af0ab 100644 --- a/crates/uv/tests/it/python_install.rs +++ b/crates/uv/tests/it/python_install.rs @@ -1246,6 +1246,16 @@ fn python_install_314() { ----- stderr ----- "); + // This also applies to `>=` requests, even though pre-releases aren't technically in the range + uv_snapshot!(context.filters(), context.python_find().arg(">=3.14"), @r" + success: true + exit_code: 0 + ----- stdout ----- + [TEMP_DIR]/managed/cpython-3.14.0a6-[PLATFORM]/[INSTALL-BIN]/python + + ----- stderr ----- + "); + uv_snapshot!(context.filters(), context.python_find().arg("3"), @r" success: true exit_code: 0