@@ -26082,8 +26082,6 @@ fn lock_pytorch_local_preference() -> Result<()> {
26082
26082
{ name = "torch", version = "2.6.0+cpu", source = { registry = "https://astral-sh.github.io/pytorch-mirror/whl/cpu" }, marker = "sys_platform != 'darwin'" },
26083
26083
]
26084
26084
wheels = [
26085
- { url = "https://files.pythonhosted.org/packages/52/5b/76ca113a853b19c7b1da761f8a72cb6429b3bd0bf932537d8df4657f47c3/torchvision-0.21.0-1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ffa2a16499508fe6798323e455f312c7c55f2a88901c9a7c0fb1efa86cf7e327", size = 2329878 },
26086
- { url = "https://files.pythonhosted.org/packages/4e/fe/5e193353706dab96fe73ae100d5a633ff635ce310e0d92f3bc2958d075b1/torchvision-0.21.0-1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:7e9e9afa150e40cd2a8f0701c43cb82a8d724f512896455c0918b987f94b84a4", size = 2280711 },
26087
26085
{ url = "https://files.pythonhosted.org/packages/6e/1b/28f527b22d5e8800184d0bc847f801ae92c7573a8c15979d92b7091c0751/torchvision-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:97a5814a93c793aaf0179cfc7f916024f4b63218929aee977b645633d074a49f", size = 1784140 },
26088
26086
{ url = "https://files.pythonhosted.org/packages/36/63/0722e153fd27d64d5b0af45b5c8cb0e80b35a68cf0130303bc9a8bb095c7/torchvision-0.21.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:b578bcad8a4083b40d34f689b19ca9f7c63e511758d806510ea03c29ac568f7b", size = 7238673 },
26089
26087
{ url = "https://files.pythonhosted.org/packages/bb/ea/03541ed901cdc30b934f897060d09bbf7a98466a08ad1680320f9ce0cbe0/torchvision-0.21.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:5083a5b1fec2351bf5ea9900a741d54086db75baec4b1d21e39451e00977f1b1", size = 14701186 },
@@ -26455,3 +26453,93 @@ fn lock_invalid_fork_markers() -> Result<()> {
26455
26453
26456
26454
Ok(())
26457
26455
}
26456
+
26457
+ #[test]
26458
+ fn lock_omit_wheels_exclude_newer() -> Result<()> {
26459
+ let context = TestContext::new("3.12").with_exclude_newer("2024-08-01T00:00:00Z");
26460
+
26461
+ let pyproject_toml = context.temp_dir.child("pyproject.toml");
26462
+ pyproject_toml.write_str(
26463
+ r#"
26464
+ [project]
26465
+ name = "project"
26466
+ version = "0.1.0"
26467
+ requires-python = ">=3.12"
26468
+ dependencies = ["pillow-avif-plugin"]
26469
+ "#,
26470
+ )?;
26471
+
26472
+ uv_snapshot!(context.filters(), context.lock(), @r"
26473
+ success: true
26474
+ exit_code: 0
26475
+ ----- stdout -----
26476
+
26477
+ ----- stderr -----
26478
+ Resolved 2 packages in [TIME]
26479
+ ");
26480
+
26481
+ let lock = context.read("uv.lock");
26482
+
26483
+ insta::with_settings!({
26484
+ filters => context.filters(),
26485
+ }, {
26486
+ assert_snapshot!(
26487
+ lock, @r#"
26488
+ version = 1
26489
+ revision = 1
26490
+ requires-python = ">=3.12"
26491
+
26492
+ [options]
26493
+ exclude-newer = "2024-08-01T00:00:00Z"
26494
+
26495
+ [[package]]
26496
+ name = "pillow-avif-plugin"
26497
+ version = "1.4.6"
26498
+ source = { registry = "https://pypi.org/simple" }
26499
+ sdist = { url = "https://files.pythonhosted.org/packages/2d/eb/9c097e058c9d5bb7cd39b32730397d645856a81360b4e49cafe16ec1f358/pillow-avif-plugin-1.4.6.tar.gz", hash = "sha256:855cf50d03f6fc16e1fd5e364b3cea0b79f4bf90d39ff2123969735d851e08ba", size = 19632 }
26500
+ wheels = [
26501
+ { url = "https://files.pythonhosted.org/packages/b2/f7/460c854c3f4a9802aabd0a25b4814a7e5902c776a6501498a4078bf2a0d3/pillow_avif_plugin-1.4.6-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e2087daa49881421a5e703fcff80aa2cbcb5a455cf73114ed5f0ea2a697794c8", size = 7980980 },
26502
+ { url = "https://files.pythonhosted.org/packages/f5/11/2f0fa7d135f91a8e34d9040b18a899d185776a642f5773ca33d45b0996ba/pillow_avif_plugin-1.4.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5bacc0802516f054f98d9f218ada17b2e8a756e35cb71e7401bb8422848fe796", size = 5743257 },
26503
+ { url = "https://files.pythonhosted.org/packages/24/b6/5a2fda66a192c0a372bcd7968c5914ccc6dcd48cd57b2f6cccba4587e209/pillow_avif_plugin-1.4.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e74e53951228c3e6ff5141121bd2876e8aecdb27d5f12d01cc519258e0073d8b", size = 6431301 },
26504
+ { url = "https://files.pythonhosted.org/packages/ac/1d/2d6f816e15e56b053758fbd6d625fbd79b5cf22e775fce9967b83ede8c31/pillow_avif_plugin-1.4.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37e1314500cec3457210f4c8a7583afe35751f076efa8122faa0f205403d645", size = 7984138 },
26505
+ { url = "https://files.pythonhosted.org/packages/86/36/32e9576c512fb53096ee050a112a12c6054c4e9c6ce2ec9e7e6f4d9d5d11/pillow_avif_plugin-1.4.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:d643db246d6c07994fbb98b5fa6c6ae8f9b19b4ed24566bc06942b7dad10ad47", size = 8123272 },
26506
+ { url = "https://files.pythonhosted.org/packages/f0/5f/0bb9ec1910a5ece813ac6324b1d0f148cf71a0e5297ab8fcfce1e48a4ebe/pillow_avif_plugin-1.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:f262547edeec00ad287c8845ac6c9d7d822ef4b00d1832175c4c8fd692e34eba", size = 10564587 },
26507
+ ]
26508
+
26509
+ [[package]]
26510
+ name = "project"
26511
+ version = "0.1.0"
26512
+ source = { virtual = "." }
26513
+ dependencies = [
26514
+ { name = "pillow-avif-plugin" },
26515
+ ]
26516
+
26517
+ [package.metadata]
26518
+ requires-dist = [{ name = "pillow-avif-plugin" }]
26519
+ "#
26520
+ );
26521
+ });
26522
+
26523
+ // Re-run with `--locked`.
26524
+ uv_snapshot!(context.filters(), context.lock().arg("--locked"), @r"
26525
+ success: true
26526
+ exit_code: 0
26527
+ ----- stdout -----
26528
+
26529
+ ----- stderr -----
26530
+ Resolved 2 packages in [TIME]
26531
+ ");
26532
+
26533
+ // Re-run with `--offline`. We shouldn't need a network connection to validate an
26534
+ // already-correct lockfile with immutable metadata.
26535
+ uv_snapshot!(context.filters(), context.lock().arg("--locked").arg("--offline").arg("--no-cache"), @r"
26536
+ success: true
26537
+ exit_code: 0
26538
+ ----- stdout -----
26539
+
26540
+ ----- stderr -----
26541
+ Resolved 2 packages in [TIME]
26542
+ ");
26543
+
26544
+ Ok(())
26545
+ }
0 commit comments