diff --git a/crates/uv-pypi-types/src/simple_json.rs b/crates/uv-pypi-types/src/simple_json.rs index 5ad54dd42..6c0e8a2a0 100644 --- a/crates/uv-pypi-types/src/simple_json.rs +++ b/crates/uv-pypi-types/src/simple_json.rs @@ -1,3 +1,4 @@ +use std::borrow::Cow; use std::str::FromStr; use jiff::Timestamp; @@ -86,9 +87,11 @@ impl<'de> Deserialize<'de> for File { "filename" => filename = Some(access.next_value()?), "hashes" => hashes = Some(access.next_value()?), "requires-python" => { - requires_python = access.next_value::>()?.map(|s| { - LenientVersionSpecifiers::from_str(s).map(VersionSpecifiers::from) - }); + requires_python = + access.next_value::>>()?.map(|s| { + LenientVersionSpecifiers::from_str(s.as_ref()) + .map(VersionSpecifiers::from) + }); } "size" => size = Some(access.next_value()?), "upload-time" => upload_time = Some(access.next_value()?), diff --git a/crates/uv/tests/it/pip_compile.rs b/crates/uv/tests/it/pip_compile.rs index 20797f791..d1587f48b 100644 --- a/crates/uv/tests/it/pip_compile.rs +++ b/crates/uv/tests/it/pip_compile.rs @@ -16129,3 +16129,44 @@ fn respect_non_local_preference() -> Result<()> { Ok(()) } + +/// See: +#[test] +fn compile_quotes() -> Result<()> { + let context = TestContext::new("3.12"); + let requirements_in = context.temp_dir.child("requirements.in"); + requirements_in.write_str("tbump")?; + + uv_snapshot!(context.filters(), windows_filters=false, context.pip_compile() + .arg("requirements.in") + .arg("--universal"), @r" + success: true + exit_code: 0 + ----- stdout ----- + # This file was autogenerated by uv via the following command: + # uv pip compile --cache-dir [CACHE_DIR] requirements.in --universal + cli-ui==0.17.2 + # via tbump + colorama==0.4.6 + # via cli-ui + contextlib2==21.6.0 + # via schema + docopt==0.6.2 + # via tbump + schema==0.7.5 + # via tbump + tabulate==0.8.10 + # via cli-ui + tbump==6.11.0 + # via -r requirements.in + tomlkit==0.11.8 + # via tbump + unidecode==1.3.8 + # via cli-ui + + ----- stderr ----- + Resolved 9 packages in [TIME] + "); + + Ok(()) +}