From 5dae9ac5f26d14cddf433d016d5470d913d42013 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid <7303830+kabouzeid@users.noreply.github.com> Date: Mon, 9 Jun 2025 02:21:07 +0200 Subject: [PATCH 001/221] Update referenced CUDA version in `pytorch.md` (#13899) ## Summary torch 2.7 by default targets CUDA 12.6 --- docs/guides/integration/pytorch.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/integration/pytorch.md b/docs/guides/integration/pytorch.md index ca3d3e653..79b6f31e1 100644 --- a/docs/guides/integration/pytorch.md +++ b/docs/guides/integration/pytorch.md @@ -37,7 +37,7 @@ To start, consider the following (default) configuration, which would be generat `uv init --python 3.12` followed by `uv add torch torchvision`. In this case, PyTorch would be installed from PyPI, which hosts CPU-only wheels for Windows and -macOS, and GPU-accelerated wheels on Linux (targeting CUDA 12.4): +macOS, and GPU-accelerated wheels on Linux (targeting CUDA 12.6): ```toml [project] From ea45acaf4fc504e36f4827875e0261a9aa3f93b7 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Mon, 9 Jun 2025 11:48:59 -0500 Subject: [PATCH 002/221] Fix extra newline in changelog (#13918) --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f18b3e898..5e911d9b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,6 @@ - Don't hint at versions removed by `excluded-newer` ([#13884](https://github.com/astral-sh/uv/pull/13884)) - Add hint to use `tool.uv.environments` on resolution error ([#13455](https://github.com/astral-sh/uv/pull/13455)) - Add hint to use `tool.uv.required-environments` on resolution error ([#13575](https://github.com/astral-sh/uv/pull/13575)) - - Improve `python pin` error messages ([#13862](https://github.com/astral-sh/uv/pull/13862)) ### Bug fixes From 619a0eafa1fe58ccffd1433818d6960b9860b380 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Mon, 9 Jun 2025 11:57:27 -0500 Subject: [PATCH 003/221] Fix use of deprecated `black_box` function (#13926) --- crates/uv-bench/benches/uv.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/uv-bench/benches/uv.rs b/crates/uv-bench/benches/uv.rs index 36838b6de..95106a52b 100644 --- a/crates/uv-bench/benches/uv.rs +++ b/crates/uv-bench/benches/uv.rs @@ -1,6 +1,6 @@ use std::str::FromStr; -use uv_bench::criterion::black_box; +use std::hint::black_box; use uv_bench::criterion::{Criterion, criterion_group, criterion_main, measurement::WallTime}; use uv_cache::Cache; use uv_client::RegistryClientBuilder; From 2a66349e96ca25d15a6875a54f929c32b7d5757f Mon Sep 17 00:00:00 2001 From: John Mumm Date: Mon, 9 Jun 2025 13:28:39 -0400 Subject: [PATCH 004/221] Check if relative URL is valid directory before treating as index (#13917) As per #13874, passing a relative URL like `test` to `--index` for `uv add` causes unexpected behavior if the directory does not exist. The non-existent index is effectively ignored and uv falls back to PyPI. If a package is found there, the spurious index is then written to `pyproject.toml`. This doesn't happen for `--default-index` since resolution will fail without fallback to PyPI. This PR adds a validation step for indexes provided on the command line. If a directory does not exist, uv will fail with an error. Closes #13874 --- crates/uv-pep508/src/verbatim_url.rs | 6 +- crates/uv/src/commands/project/add.rs | 17 ++++- crates/uv/tests/it/edit.rs | 95 +++++++++++++++++++++++++++ 3 files changed, 112 insertions(+), 6 deletions(-) diff --git a/crates/uv-pep508/src/verbatim_url.rs b/crates/uv-pep508/src/verbatim_url.rs index a7633bdcb..988bebc5e 100644 --- a/crates/uv-pep508/src/verbatim_url.rs +++ b/crates/uv-pep508/src/verbatim_url.rs @@ -106,10 +106,8 @@ impl VerbatimUrl { let (path, fragment) = split_fragment(&path); // Convert to a URL. - let mut url = DisplaySafeUrl::from( - Url::from_file_path(path.clone()) - .unwrap_or_else(|()| panic!("path is absolute: {}", path.display())), - ); + let mut url = DisplaySafeUrl::from_file_path(path.clone()) + .unwrap_or_else(|()| panic!("path is absolute: {}", path.display())); // Set the fragment, if it exists. if let Some(fragment) = fragment { diff --git a/crates/uv/src/commands/project/add.rs b/crates/uv/src/commands/project/add.rs index 2c64d9dbb..a4091504d 100644 --- a/crates/uv/src/commands/project/add.rs +++ b/crates/uv/src/commands/project/add.rs @@ -23,8 +23,8 @@ use uv_configuration::{ use uv_dispatch::BuildDispatch; use uv_distribution::DistributionDatabase; use uv_distribution_types::{ - Index, IndexName, IndexUrls, NameRequirementSpecification, Requirement, RequirementSource, - UnresolvedRequirement, VersionId, + Index, IndexName, IndexUrl, IndexUrls, NameRequirementSpecification, Requirement, + RequirementSource, UnresolvedRequirement, VersionId, }; use uv_fs::{LockedFile, Simplified}; use uv_git::GIT_STORE; @@ -473,6 +473,19 @@ pub(crate) async fn add( &mut toml, )?; + // Validate any indexes that were provided on the command-line to ensure + // they point to existing directories when using path URLs. + for index in &indexes { + if let IndexUrl::Path(url) = &index.url { + let path = url + .to_file_path() + .map_err(|()| anyhow::anyhow!("Invalid file path in index URL: {url}"))?; + if !path.is_dir() { + bail!("Directory not found for index: {url}"); + } + } + } + // Add any indexes that were provided on the command-line, in priority order. if !raw { let urls = IndexUrls::from_indexes(indexes); diff --git a/crates/uv/tests/it/edit.rs b/crates/uv/tests/it/edit.rs index db47b27ef..5ba64fca2 100644 --- a/crates/uv/tests/it/edit.rs +++ b/crates/uv/tests/it/edit.rs @@ -9303,6 +9303,101 @@ fn add_index_without_trailing_slash() -> Result<()> { Ok(()) } +/// Add an index with an existing relative path. +#[test] +fn add_index_with_existing_relative_path_index() -> Result<()> { + let context = TestContext::new("3.12"); + + let pyproject_toml = context.temp_dir.child("pyproject.toml"); + pyproject_toml.write_str(indoc! {r#" + [project] + name = "project" + version = "0.1.0" + requires-python = ">=3.12" + dependencies = [] + "#})?; + + // Create test-index/ subdirectory and copy our "offline" tqdm wheel there + let packages = context.temp_dir.child("test-index"); + packages.create_dir_all()?; + + let wheel_src = context + .workspace_root + .join("scripts/links/ok-1.0.0-py3-none-any.whl"); + let wheel_dst = packages.child("ok-1.0.0-py3-none-any.whl"); + fs_err::copy(&wheel_src, &wheel_dst)?; + + uv_snapshot!(context.filters(), context.add().arg("iniconfig").arg("--index").arg("test-index"), @r" + success: true + exit_code: 0 + ----- stdout ----- + + ----- stderr ----- + Resolved 2 packages in [TIME] + Prepared 1 package in [TIME] + Installed 1 package in [TIME] + + iniconfig==2.0.0 + "); + + Ok(()) +} + +/// Add an index with a non-existent relative path. +#[test] +fn add_index_with_non_existent_relative_path() -> Result<()> { + let context = TestContext::new("3.12"); + + let pyproject_toml = context.temp_dir.child("pyproject.toml"); + pyproject_toml.write_str(indoc! {r#" + [project] + name = "project" + version = "0.1.0" + requires-python = ">=3.12" + dependencies = [] + "#})?; + + uv_snapshot!(context.filters(), context.add().arg("iniconfig").arg("--index").arg("test-index"), @r" + success: false + exit_code: 2 + ----- stdout ----- + + ----- stderr ----- + error: Directory not found for index: file://[TEMP_DIR]/test-index + "); + + Ok(()) +} + +/// Add an index with a non-existent relative path with the same name as a defined index. +#[test] +fn add_index_with_non_existent_relative_path_with_same_name_as_index() -> Result<()> { + let context = TestContext::new("3.12"); + + let pyproject_toml = context.temp_dir.child("pyproject.toml"); + pyproject_toml.write_str(indoc! {r#" + [project] + name = "project" + version = "0.1.0" + requires-python = ">=3.12" + dependencies = [] + + [[tool.uv.index]] + name = "test-index" + url = "https://pypi-proxy.fly.dev/simple" + "#})?; + + uv_snapshot!(context.filters(), context.add().arg("iniconfig").arg("--index").arg("test-index"), @r" + success: false + exit_code: 2 + ----- stdout ----- + + ----- stderr ----- + error: Directory not found for index: file://[TEMP_DIR]/test-index + "); + + Ok(()) +} + /// Add a PyPI requirement. #[test] fn add_group_comment() -> Result<()> { From 00b517dbd148386af80e1756f1f11a0a91d5f7f5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 14:28:09 -0400 Subject: [PATCH 005/221] Update Rust crate anstream to v0.6.19 (#13908) --- Cargo.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1a35fda33..a23c320e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,9 +40,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -738,7 +738,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -1115,7 +1115,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -1941,7 +1941,7 @@ checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" dependencies = [ "hermit-abi 0.4.0", "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -2001,7 +2001,7 @@ dependencies = [ "portable-atomic", "portable-atomic-util", "serde", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -2885,7 +2885,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -3334,7 +3334,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -3347,7 +3347,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.9.2", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -3928,7 +3928,7 @@ dependencies = [ "getrandom 0.3.1", "once_cell", "rustix 1.0.7", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -6282,7 +6282,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] From 64dacab913625deaf008e0c2a57f05611d00e3b7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 14:28:16 -0400 Subject: [PATCH 006/221] Update pre-commit dependencies (#13907) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7f5de7389..982d8f296 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,7 @@ repos: - id: validate-pyproject - repo: https://github.com/crate-ci/typos - rev: v1.32.0 + rev: v1.33.1 hooks: - id: typos @@ -42,7 +42,7 @@ repos: types_or: [yaml, json5] - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.12 + rev: v0.11.13 hooks: - id: ruff-format - id: ruff From 1f2bba9b3dc5ea0c04169df1aef55e3a2c61c80d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 14:28:26 -0400 Subject: [PATCH 007/221] Update Rust crate flate2 to v1.1.2 (#13909) --- Cargo.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a23c320e5..23608511d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1185,9 +1185,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "libz-rs-sys", @@ -2118,9 +2118,9 @@ dependencies = [ [[package]] name = "libz-rs-sys" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" +checksum = "172a788537a2221661b480fee8dc5f96c580eb34fa88764d3205dc356c7e4221" dependencies = [ "zlib-rs", ] @@ -6931,9 +6931,9 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" +checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" [[package]] name = "zopfli" From 2940122e69b4f866ee40b51182c04891b67b29e5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 14:28:39 -0400 Subject: [PATCH 008/221] Update Rust crate hashbrown to v0.15.4 (#13911) --- Cargo.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 23608511d..fa5db02f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1523,9 +1523,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.3" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "allocator-api2", "equivalent", @@ -1877,7 +1877,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "serde", ] @@ -2619,7 +2619,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a98c6720655620a521dcc722d0ad66cd8afd5d86e34a89ef691c50b7b24de06" dependencies = [ "fixedbitset", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "indexmap", "serde", ] @@ -3229,7 +3229,7 @@ checksum = "1e147371c75553e1e2fcdb483944a8540b8438c31426279553b9a8182a9b7b65" dependencies = [ "bytecheck", "bytes", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "indexmap", "munge", "ptr_meta", @@ -5561,7 +5561,7 @@ name = "uv-pypi-types" version = "0.0.1" dependencies = [ "anyhow", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "indexmap", "insta", "itertools 0.14.0", @@ -5734,7 +5734,7 @@ dependencies = [ "dashmap", "either", "futures", - "hashbrown 0.15.3", + "hashbrown 0.15.4", "indexmap", "insta", "itertools 0.14.0", From dd46985e2771d83b17bab905961f82578e3c735a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 14:28:51 -0400 Subject: [PATCH 009/221] Update Rust crate petgraph to v0.8.2 (#13913) --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fa5db02f3..fbfc41414 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2614,9 +2614,9 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a98c6720655620a521dcc722d0ad66cd8afd5d86e34a89ef691c50b7b24de06" +checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" dependencies = [ "fixedbitset", "hashbrown 0.15.4", From e67dff85ccb95e56b8c99713983475ee663fb226 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 14:29:12 -0400 Subject: [PATCH 010/221] Update Rust crate fs-err to v3.1.1 (#13910) --- Cargo.lock | 66 +++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fbfc41414..ecb69cc3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1262,9 +1262,9 @@ dependencies = [ [[package]] name = "fs-err" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f89bda4c2a21204059a977ed3bfe746677dfd137b83c339e702b0ac91d482aa" +checksum = "88d7be93788013f265201256d58f04936a8079ad5dc898743aa20525f503b683" dependencies = [ "autocfg", "tokio", @@ -4633,7 +4633,7 @@ dependencies = [ "etcetera", "filetime", "flate2", - "fs-err 3.1.0", + "fs-err 3.1.1", "futures", "http", "ignore", @@ -4794,7 +4794,7 @@ version = "0.1.0" dependencies = [ "csv", "flate2", - "fs-err 3.1.0", + "fs-err 3.1.1", "globset", "indoc", "insta", @@ -4830,7 +4830,7 @@ name = "uv-build-frontend" version = "0.0.1" dependencies = [ "anstream", - "fs-err 3.1.0", + "fs-err 3.1.1", "indoc", "insta", "itertools 0.14.0", @@ -4864,7 +4864,7 @@ name = "uv-cache" version = "0.0.1" dependencies = [ "clap", - "fs-err 3.1.0", + "fs-err 3.1.1", "nanoid", "rmp-serde", "rustc-hash", @@ -4888,7 +4888,7 @@ dependencies = [ name = "uv-cache-info" version = "0.0.1" dependencies = [ - "fs-err 3.1.0", + "fs-err 3.1.1", "globwalk", "schemars", "serde", @@ -4918,7 +4918,7 @@ dependencies = [ "anyhow", "clap", "clap_complete_command", - "fs-err 3.1.0", + "fs-err 3.1.1", "insta", "serde", "url", @@ -4949,7 +4949,7 @@ dependencies = [ "async_http_range_reader", "async_zip", "bytecheck", - "fs-err 3.1.0", + "fs-err 3.1.1", "futures", "html-escape", "http", @@ -5003,7 +5003,7 @@ dependencies = [ "anyhow", "clap", "either", - "fs-err 3.1.0", + "fs-err 3.1.1", "rayon", "rustc-hash", "same-file", @@ -5041,7 +5041,7 @@ dependencies = [ "anstream", "anyhow", "clap", - "fs-err 3.1.0", + "fs-err 3.1.1", "itertools 0.14.0", "markdown", "owo-colors", @@ -5085,7 +5085,7 @@ version = "0.0.1" dependencies = [ "assert_fs", "etcetera", - "fs-err 3.1.0", + "fs-err 3.1.1", "indoc", "tracing", "uv-static", @@ -5128,7 +5128,7 @@ version = "0.0.1" dependencies = [ "anyhow", "either", - "fs-err 3.1.0", + "fs-err 3.1.1", "futures", "indoc", "insta", @@ -5194,7 +5194,7 @@ version = "0.0.1" dependencies = [ "arcstr", "bitflags 2.9.1", - "fs-err 3.1.0", + "fs-err 3.1.1", "http", "itertools 0.14.0", "jiff", @@ -5234,7 +5234,7 @@ dependencies = [ "async-compression", "async_zip", "blake2", - "fs-err 3.1.0", + "fs-err 3.1.1", "futures", "md-5", "rayon", @@ -5260,7 +5260,7 @@ dependencies = [ "dunce", "either", "encoding_rs_io", - "fs-err 3.1.0", + "fs-err 3.1.1", "fs2", "junction", "path-slash", @@ -5283,7 +5283,7 @@ dependencies = [ "anyhow", "cargo-util", "dashmap", - "fs-err 3.1.0", + "fs-err 3.1.1", "reqwest", "reqwest-middleware", "thiserror 2.0.12", @@ -5316,7 +5316,7 @@ name = "uv-globfilter" version = "0.1.0" dependencies = [ "anstream", - "fs-err 3.1.0", + "fs-err 3.1.1", "globset", "insta", "owo-colors", @@ -5338,7 +5338,7 @@ dependencies = [ "configparser", "csv", "data-encoding", - "fs-err 3.1.0", + "fs-err 3.1.1", "indoc", "mailparse", "pathdiff", @@ -5372,7 +5372,7 @@ version = "0.0.1" dependencies = [ "anyhow", "async-channel", - "fs-err 3.1.0", + "fs-err 3.1.1", "futures", "rayon", "rustc-hash", @@ -5419,7 +5419,7 @@ name = "uv-metadata" version = "0.1.0" dependencies = [ "async_zip", - "fs-err 3.1.0", + "fs-err 3.1.1", "futures", "thiserror 2.0.12", "tokio", @@ -5525,7 +5525,7 @@ dependencies = [ "astral-tokio-tar", "async-compression", "base64 0.22.1", - "fs-err 3.1.0", + "fs-err 3.1.1", "futures", "glob", "insta", @@ -5595,7 +5595,7 @@ dependencies = [ "assert_fs", "clap", "configparser", - "fs-err 3.1.0", + "fs-err 3.1.1", "futures", "goblin", "indoc", @@ -5665,7 +5665,7 @@ dependencies = [ "anyhow", "configparser", "console", - "fs-err 3.1.0", + "fs-err 3.1.1", "futures", "rustc-hash", "serde", @@ -5699,7 +5699,7 @@ version = "0.0.1" dependencies = [ "anyhow", "assert_fs", - "fs-err 3.1.0", + "fs-err 3.1.1", "indoc", "insta", "itertools 0.14.0", @@ -5787,7 +5787,7 @@ dependencies = [ name = "uv-scripts" version = "0.0.1" dependencies = [ - "fs-err 3.1.0", + "fs-err 3.1.1", "indoc", "memchr", "serde", @@ -5807,7 +5807,7 @@ name = "uv-settings" version = "0.0.1" dependencies = [ "clap", - "fs-err 3.1.0", + "fs-err 3.1.1", "schemars", "serde", "textwrap", @@ -5864,7 +5864,7 @@ dependencies = [ name = "uv-state" version = "0.0.1" dependencies = [ - "fs-err 3.1.0", + "fs-err 3.1.1", "tempfile", "uv-dirs", ] @@ -5880,7 +5880,7 @@ dependencies = [ name = "uv-tool" version = "0.0.1" dependencies = [ - "fs-err 3.1.0", + "fs-err 3.1.1", "pathdiff", "self-replace", "serde", @@ -5910,7 +5910,7 @@ version = "0.1.0" dependencies = [ "clap", "either", - "fs-err 3.1.0", + "fs-err 3.1.1", "schemars", "serde", "thiserror 2.0.12", @@ -5930,7 +5930,7 @@ dependencies = [ "anyhow", "assert_cmd", "assert_fs", - "fs-err 3.1.0", + "fs-err 3.1.1", "thiserror 2.0.12", "uv-fs", "which", @@ -5967,7 +5967,7 @@ version = "0.7.12" name = "uv-virtualenv" version = "0.0.4" dependencies = [ - "fs-err 3.1.0", + "fs-err 3.1.1", "itertools 0.14.0", "pathdiff", "self-replace", @@ -5996,7 +5996,7 @@ dependencies = [ "anyhow", "assert_fs", "clap", - "fs-err 3.1.0", + "fs-err 3.1.1", "glob", "insta", "itertools 0.14.0", From f5382c010b24471a6dd6e1ed2fed7c521cf6b87f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 18:06:31 -0500 Subject: [PATCH 011/221] Update acj/freebsd-firecracker-action action to v0.4.2 (#13906) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [acj/freebsd-firecracker-action](https://redirect.github.com/acj/freebsd-firecracker-action) | action | patch | `v0.4.1` -> `v0.4.2` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes
acj/freebsd-firecracker-action (acj/freebsd-firecracker-action) ### [`v0.4.2`](https://redirect.github.com/acj/freebsd-firecracker-action/releases/tag/v0.4.2) [Compare Source](https://redirect.github.com/acj/freebsd-firecracker-action/compare/v0.4.1...v0.4.2) [Firecracker 1.12.0](https://redirect.github.com/firecracker-microvm/firecracker/releases/tag/v1.12.0) [FreeBSD 14.3-RELEASE](https://www.freebsd.org/releases/14.3R/relnotes/)
--- ### Configuration πŸ“… **Schedule**: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. β™» **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. πŸ”• **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/astral-sh/uv). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7e3caec55..e29d8743c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -712,7 +712,7 @@ jobs: cross build --target x86_64-unknown-freebsd - name: Test in Firecracker VM - uses: acj/freebsd-firecracker-action@5b4c9938e8b5ff1041c58e21515909a0e1500d59 # v0.4.1 + uses: acj/freebsd-firecracker-action@d548632daa4f81a142a054c9829408e659350eb0 # v0.4.2 with: verbose: false checkout: false From dc455bfc26a1487a02815a645810e07c86522891 Mon Sep 17 00:00:00 2001 From: Jack O'Connor Date: Mon, 9 Jun 2025 14:44:43 -0700 Subject: [PATCH 012/221] add UV_NO_GITHUB_FAST_PATH --- crates/uv-git/src/resolver.rs | 5 +++++ crates/uv-static/src/env_vars.rs | 3 +++ docs/reference/environment.md | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/crates/uv-git/src/resolver.rs b/crates/uv-git/src/resolver.rs index 9335aed4d..fd90ff587 100644 --- a/crates/uv-git/src/resolver.rs +++ b/crates/uv-git/src/resolver.rs @@ -12,6 +12,7 @@ use tracing::debug; use uv_cache_key::{RepositoryUrl, cache_digest}; use uv_fs::LockedFile; use uv_git_types::{GitHubRepository, GitOid, GitReference, GitUrl}; +use uv_static::EnvVars; use uv_version::version; use crate::{Fetch, GitSource, Reporter}; @@ -54,6 +55,10 @@ impl GitResolver { url: &GitUrl, client: ClientWithMiddleware, ) -> Result, GitResolverError> { + if std::env::var_os(EnvVars::UV_NO_GITHUB_FAST_PATH).is_some() { + return Ok(None); + } + let reference = RepositoryReference::from(url); // If the URL is already precise, return it. diff --git a/crates/uv-static/src/env_vars.rs b/crates/uv-static/src/env_vars.rs index 58191fe64..aff56df45 100644 --- a/crates/uv-static/src/env_vars.rs +++ b/crates/uv-static/src/env_vars.rs @@ -727,4 +727,7 @@ impl EnvVars { /// Equivalent to the `--project` command-line argument. pub const UV_PROJECT: &'static str = "UV_PROJECT"; + + /// Disable GitHub-specific requests that allow uv to skip `git fetch` in some circumstances. + pub const UV_NO_GITHUB_FAST_PATH: &'static str = "UV_NO_GITHUB_FAST_PATH"; } diff --git a/docs/reference/environment.md b/docs/reference/environment.md index f86f52bca..61889ddb3 100644 --- a/docs/reference/environment.md +++ b/docs/reference/environment.md @@ -235,6 +235,10 @@ non-editable Ignore `.env` files when executing `uv run` commands. +### `UV_NO_GITHUB_FAST_PATH` + +Disable GitHub-specific requests that allow uv to skip `git fetch` in some circumstances. + ### `UV_NO_INSTALLER_METADATA` Skip writing `uv` installer metadata files (e.g., `INSTALLER`, `REQUESTED`, and `direct_url.json`) to site-packages `.dist-info` directories. From 9ff07c113f7e1e4176538ce574457133e2a6cd3a Mon Sep 17 00:00:00 2001 From: Jack O'Connor Date: Thu, 5 Jun 2025 17:57:39 -0700 Subject: [PATCH 013/221] add a snapshot test for `uv pip install` with an exact Git commit --- crates/uv/tests/it/pip_install.rs | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/crates/uv/tests/it/pip_install.rs b/crates/uv/tests/it/pip_install.rs index 872db659f..2ef8851fe 100644 --- a/crates/uv/tests/it/pip_install.rs +++ b/crates/uv/tests/it/pip_install.rs @@ -2111,6 +2111,55 @@ fn install_git_public_https_missing_commit() { "###); } +#[test] +#[cfg(feature = "git")] +fn install_git_public_https_exact_commit() { + let context = TestContext::new(DEFAULT_PYTHON_VERSION); + + // `uv pip install` a Git dependency with an exact commit. + uv_snapshot!(context.filters(), context.pip_install() + // Normally Updating/Updated notifications are suppressed in tests (because their order can + // be nondeterministic), but here that's exactly what we want to test for. + .env_remove(EnvVars::UV_TEST_NO_CLI_PROGRESS) + // Whether fetching happens during resolution or later depends on whether the GitHub fast + // path is taken, which isn't reliable. Disable it, so that we get a stable order of events + // here. + .env(EnvVars::UV_NO_GITHUB_FAST_PATH, "true") + .arg("uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@b270df1a2fb5d012294e9aaf05e7e0bab1e6a389") + , @r" + success: true + exit_code: 0 + ----- stdout ----- + + ----- stderr ----- + Updating https://github.com/astral-test/uv-public-pypackage (b270df1a2fb5d012294e9aaf05e7e0bab1e6a389) + Updated https://github.com/astral-test/uv-public-pypackage (b270df1a2fb5d012294e9aaf05e7e0bab1e6a389) + Resolved 1 package in [TIME] + Building uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@b270df1a2fb5d012294e9aaf05e7e0bab1e6a389 + Built uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@b270df1a2fb5d012294e9aaf05e7e0bab1e6a389 + Prepared 1 package in [TIME] + Installed 1 package in [TIME] + + uv-public-pypackage==0.1.0 (from git+https://github.com/astral-test/uv-public-pypackage@b270df1a2fb5d012294e9aaf05e7e0bab1e6a389) + "); + + // Run the exact same command again, with that commit now in cache. + uv_snapshot!(context.filters(), context.pip_install() + .env_remove(EnvVars::UV_TEST_NO_CLI_PROGRESS) + .env(EnvVars::UV_NO_GITHUB_FAST_PATH, "true") + .arg("uv-public-pypackage @ git+https://github.com/astral-test/uv-public-pypackage@b270df1a2fb5d012294e9aaf05e7e0bab1e6a389") + , @r" + success: true + exit_code: 0 + ----- stdout ----- + + ----- stderr ----- + Updating https://github.com/astral-test/uv-public-pypackage (b270df1a2fb5d012294e9aaf05e7e0bab1e6a389) + Updated https://github.com/astral-test/uv-public-pypackage (b270df1a2fb5d012294e9aaf05e7e0bab1e6a389) + Resolved 1 package in [TIME] + Audited 1 package in [TIME] + "); +} + /// Install a package from a private GitHub repository using a PAT #[test] #[cfg(all(not(windows), feature = "git"))] From 619132bd8ad3f160c86d2628a5595c4b11b7cfa2 Mon Sep 17 00:00:00 2001 From: Jack O'Connor Date: Fri, 6 Jun 2025 14:28:33 -0700 Subject: [PATCH 014/221] make GitOid strict about parsing exactly 40 hex characters --- crates/uv-git-types/src/oid.rs | 44 ++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 15 deletions(-) diff --git a/crates/uv-git-types/src/oid.rs b/crates/uv-git-types/src/oid.rs index 2ccd376b7..9319f5e34 100644 --- a/crates/uv-git-types/src/oid.rs +++ b/crates/uv-git-types/src/oid.rs @@ -5,31 +5,36 @@ use thiserror::Error; /// Unique identity of any Git object (commit, tree, blob, tag). /// -/// Note this type does not validate whether the input is a valid hash. +/// This type's `FromStr` implementation validates that it's exactly 40 hex characters, i.e. a +/// full-length git commit. +/// +/// If Git's SHA-256 support becomes more widespread in the future (in particular if GitHub ever +/// adds support), we might need to make this an enum. #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct GitOid { - len: usize, bytes: [u8; 40], } impl GitOid { /// Return the string representation of an object ID. pub fn as_str(&self) -> &str { - str::from_utf8(&self.bytes[..self.len]).unwrap() + str::from_utf8(&self.bytes).unwrap() } /// Return a truncated representation, i.e., the first 16 characters of the SHA. pub fn as_short_str(&self) -> &str { - self.as_str().get(..16).unwrap_or(self.as_str()) + &self.as_str()[..16] } } #[derive(Debug, Error, PartialEq)] pub enum OidParseError { - #[error("Object ID can be at most 40 hex characters")] - TooLong, #[error("Object ID cannot be parsed from empty string")] Empty, + #[error("Object ID must be exactly 40 hex characters")] + WrongLength, + #[error("Object ID must be valid hex characters")] + NotHex, } impl FromStr for GitOid { @@ -40,17 +45,17 @@ impl FromStr for GitOid { return Err(OidParseError::Empty); } - if s.len() > 40 { - return Err(OidParseError::TooLong); + if s.len() != 40 { + return Err(OidParseError::WrongLength); } - let mut out = [0; 40]; - out[..s.len()].copy_from_slice(s.as_bytes()); + if !s.chars().all(|ch| ch.is_ascii_hexdigit()) { + return Err(OidParseError::NotHex); + } - Ok(GitOid { - len: s.len(), - bytes: out, - }) + let mut bytes = [0; 40]; + bytes.copy_from_slice(s.as_bytes()); + Ok(GitOid { bytes }) } } @@ -101,11 +106,20 @@ mod tests { #[test] fn git_oid() { GitOid::from_str("4a23745badf5bf5ef7928f1e346e9986bd696d82").unwrap(); + GitOid::from_str("4A23745BADF5BF5EF7928F1E346E9986BD696D82").unwrap(); assert_eq!(GitOid::from_str(""), Err(OidParseError::Empty)); assert_eq!( GitOid::from_str(&str::repeat("a", 41)), - Err(OidParseError::TooLong) + Err(OidParseError::WrongLength) + ); + assert_eq!( + GitOid::from_str(&str::repeat("a", 39)), + Err(OidParseError::WrongLength) + ); + assert_eq!( + GitOid::from_str(&str::repeat("x", 40)), + Err(OidParseError::NotHex) ); } } From 9129d2a9a3071e6025eadf1d768496e9023a707d Mon Sep 17 00:00:00 2001 From: Jack O'Connor Date: Fri, 30 May 2025 18:55:44 -0700 Subject: [PATCH 015/221] avoid fetching an exact, cached commit, even if it isn't locked Fixes #13513 and #12746. --- crates/uv-git/src/source.rs | 89 +++++++++++++++++++------------ crates/uv/tests/it/pip_install.rs | 2 - 2 files changed, 54 insertions(+), 37 deletions(-) diff --git a/crates/uv-git/src/source.rs b/crates/uv-git/src/source.rs index 2031c49e5..cb6d0a24f 100644 --- a/crates/uv-git/src/source.rs +++ b/crates/uv-git/src/source.rs @@ -11,11 +11,11 @@ use reqwest_middleware::ClientWithMiddleware; use tracing::{debug, instrument}; use uv_cache_key::{RepositoryUrl, cache_digest}; -use uv_git_types::GitUrl; +use uv_git_types::{GitOid, GitReference, GitUrl}; use uv_redacted::DisplaySafeUrl; use crate::GIT_STORE; -use crate::git::GitRemote; +use crate::git::{GitDatabase, GitRemote}; /// A remote Git source that can be checked out locally. pub struct GitSource { @@ -86,40 +86,59 @@ impl GitSource { Cow::Borrowed(self.git.repository()) }; - let remote = GitRemote::new(&remote); - let (db, actual_rev, task) = match (self.git.precise(), remote.db_at(&db_path).ok()) { - // If we have a locked revision, and we have a preexisting database - // which has that revision, then no update needs to happen. - (Some(rev), Some(db)) if db.contains(rev) => { - debug!("Using existing Git source `{}`", self.git.repository()); - (db, rev, None) + // Fetch the commit, if we don't already have it. Wrapping this section in a closure makes + // it easier to short-circuit this in the cases where we do have the commit. + let (db, actual_rev, maybe_task) = || -> Result<(GitDatabase, GitOid, Option)> { + let git_remote = GitRemote::new(&remote); + let maybe_db = git_remote.db_at(&db_path).ok(); + + // If we have a locked revision, and we have a pre-existing database which has that + // revision, then no update needs to happen. + if let (Some(rev), Some(db)) = (self.git.precise(), &maybe_db) { + if db.contains(rev) { + debug!("Using existing Git source `{}`", self.git.repository()); + return Ok((maybe_db.unwrap(), rev, None)); + } } - // ... otherwise we use this state to update the git database. Note - // that we still check for being offline here, for example in the - // situation that we have a locked revision but the database - // doesn't have it. - (locked_rev, db) => { - debug!("Updating Git source `{}`", self.git.repository()); - - // Report the checkout operation to the reporter. - let task = self.reporter.as_ref().map(|reporter| { - reporter.on_checkout_start(remote.url(), self.git.reference().as_rev()) - }); - - let (db, actual_rev) = remote.checkout( - &db_path, - db, - self.git.reference(), - locked_rev, - &self.client, - self.disable_ssl, - self.offline, - )?; - - (db, actual_rev, task) + // If the revision isn't locked, but it looks like it might be an exact commit hash, + // and we do have a pre-existing database, then check whether it is, in fact, a commit + // hash. If so, treat it like it's locked. + if let Some(db) = &maybe_db { + if let GitReference::BranchOrTagOrCommit(maybe_commit) = self.git.reference() { + if let Ok(oid) = maybe_commit.parse::() { + if db.contains(oid) { + // This reference is an exact commit. Treat it like it's + // locked. + debug!("Using existing Git source `{}`", self.git.repository()); + return Ok((maybe_db.unwrap(), oid, None)); + } + } + } } - }; + + // ... otherwise, we use this state to update the Git database. Note that we still check + // for being offline here, for example in the situation that we have a locked revision + // but the database doesn't have it. + debug!("Updating Git source `{}`", self.git.repository()); + + // Report the checkout operation to the reporter. + let task = self.reporter.as_ref().map(|reporter| { + reporter.on_checkout_start(git_remote.url(), self.git.reference().as_rev()) + }); + + let (db, actual_rev) = git_remote.checkout( + &db_path, + maybe_db, + self.git.reference(), + self.git.precise(), + &self.client, + self.disable_ssl, + self.offline, + )?; + + Ok((db, actual_rev, task)) + }()?; // Don’t use the full hash, in order to contribute less to reaching the // path length limit on Windows. @@ -137,9 +156,9 @@ impl GitSource { db.copy_to(actual_rev, &checkout_path)?; // Report the checkout operation to the reporter. - if let Some(task) = task { + if let Some(task) = maybe_task { if let Some(reporter) = self.reporter.as_ref() { - reporter.on_checkout_complete(remote.url(), actual_rev.as_str(), task); + reporter.on_checkout_complete(remote.as_ref(), actual_rev.as_str(), task); } } diff --git a/crates/uv/tests/it/pip_install.rs b/crates/uv/tests/it/pip_install.rs index 2ef8851fe..fa823cce0 100644 --- a/crates/uv/tests/it/pip_install.rs +++ b/crates/uv/tests/it/pip_install.rs @@ -2153,8 +2153,6 @@ fn install_git_public_https_exact_commit() { ----- stdout ----- ----- stderr ----- - Updating https://github.com/astral-test/uv-public-pypackage (b270df1a2fb5d012294e9aaf05e7e0bab1e6a389) - Updated https://github.com/astral-test/uv-public-pypackage (b270df1a2fb5d012294e9aaf05e7e0bab1e6a389) Resolved 1 package in [TIME] Audited 1 package in [TIME] "); From c54f131500c9bd33daf96146af46cd400d3b006c Mon Sep 17 00:00:00 2001 From: konsti Date: Tue, 10 Jun 2025 12:00:04 +0200 Subject: [PATCH 016/221] Add basic network error tests (#13585) Add basic tests for error messages on retryable network errors. This test mod is intended to grow to ensure that we handle retryable errors correctly and that we show the appropriate error message if we failed after retrying. The starter tests show some common cases we've seen download errors in: simple and find links indexes, file downloads and Python installs. For `io::Error` fault injection to test the reqwest `Err` path besides the HTTP status code `Ok` path, see https://github.com/LukeMathWalker/wiremock-rs/issues/149. --- crates/uv/tests/it/main.rs | 4 +- crates/uv/tests/it/network.rs | 154 ++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 crates/uv/tests/it/network.rs diff --git a/crates/uv/tests/it/main.rs b/crates/uv/tests/it/main.rs index 5daa56a3a..7835fa461 100644 --- a/crates/uv/tests/it/main.rs +++ b/crates/uv/tests/it/main.rs @@ -39,7 +39,7 @@ mod lock_conflict; mod lock_scenarios; -mod version; +mod network; #[cfg(all(feature = "python", feature = "pypi"))] mod pip_check; @@ -120,6 +120,8 @@ mod tree; #[cfg(feature = "python")] mod venv; +mod version; + #[cfg(all(feature = "python", feature = "pypi"))] mod workflow; diff --git a/crates/uv/tests/it/network.rs b/crates/uv/tests/it/network.rs new file mode 100644 index 000000000..fba24afe1 --- /dev/null +++ b/crates/uv/tests/it/network.rs @@ -0,0 +1,154 @@ +use std::env; + +use assert_fs::fixture::{FileWriteStr, PathChild}; +use http::StatusCode; +use serde_json::json; +use wiremock::matchers::method; +use wiremock::{Mock, MockServer, ResponseTemplate}; + +use crate::common::{TestContext, uv_snapshot}; + +/// Check the simple index error message when the server returns HTTP status 500, a retryable error. +#[tokio::test] +async fn simple_http_500() { + let context = TestContext::new("3.12"); + + let server = MockServer::start().await; + Mock::given(method("GET")) + .respond_with(ResponseTemplate::new(StatusCode::INTERNAL_SERVER_ERROR)) + .mount(&server) + .await; + let mock_server_uri = server.uri(); + + let filters = vec![(mock_server_uri.as_str(), "[SERVER]")]; + uv_snapshot!(filters, context + .pip_install() + .arg("tqdm") + .arg("--index-url") + .arg(server.uri()), @r" + success: false + exit_code: 2 + ----- stdout ----- + + ----- stderr ----- + error: Failed to fetch: `[SERVER]/tqdm/` + Caused by: HTTP status server error (500 Internal Server Error) for url ([SERVER]/tqdm/) + "); +} + +/// Check the find links error message when the server returns HTTP status 500, a retryable error. +#[tokio::test] +async fn find_links_http_500() { + let context = TestContext::new("3.12"); + + let server = MockServer::start().await; + Mock::given(method("GET")) + .respond_with(ResponseTemplate::new(StatusCode::INTERNAL_SERVER_ERROR)) + .mount(&server) + .await; + let mock_server_uri = server.uri(); + + let filters = vec![(mock_server_uri.as_str(), "[SERVER]")]; + uv_snapshot!(filters, context + .pip_install() + .arg("tqdm") + .arg("--no-index") + .arg("--find-links") + .arg(server.uri()), @r" + success: false + exit_code: 2 + ----- stdout ----- + + ----- stderr ----- + error: Failed to read `--find-links` URL: [SERVER]/ + Caused by: Failed to fetch: `[SERVER]/` + Caused by: HTTP status server error (500 Internal Server Error) for url ([SERVER]/) + "); +} + +/// Check the direct package URL error message when the server returns HTTP status 500, a retryable +/// error. +#[tokio::test] +async fn direct_url_http_500() { + let context = TestContext::new("3.12"); + + let server = MockServer::start().await; + Mock::given(method("GET")) + .respond_with(ResponseTemplate::new(StatusCode::INTERNAL_SERVER_ERROR)) + .mount(&server) + .await; + let mock_server_uri = server.uri(); + + let tqdm_url = format!( + "{mock_server_uri}/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl" + ); + let filters = vec![(mock_server_uri.as_str(), "[SERVER]")]; + uv_snapshot!(filters, context + .pip_install() + .arg(format!("tqdm @ {tqdm_url}")), @r" + success: false + exit_code: 1 + ----- stdout ----- + + ----- stderr ----- + Γ— Failed to download `tqdm @ [SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl` + β”œβ”€β–Ά Failed to fetch: `[SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl` + ╰─▢ HTTP status server error (500 Internal Server Error) for url ([SERVER]/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl) + "); +} + +/// Check the Python install error message when the server returns HTTP status 500, a retryable +/// error. +#[tokio::test] +async fn python_install_http_500() { + let context = TestContext::new("3.12") + .with_filtered_python_keys() + .with_filtered_exe_suffix() + .with_managed_python_dirs(); + + let server = MockServer::start().await; + Mock::given(method("GET")) + .respond_with(ResponseTemplate::new(StatusCode::INTERNAL_SERVER_ERROR)) + .mount(&server) + .await; + let mock_server_uri = server.uri(); + + let python_downloads_json = context.temp_dir.child("python_downloads.json"); + let interpreter = json!({ + "cpython-3.10.0-darwin-aarch64-none": { + "arch": { + "family": "aarch64", + "variant": null + }, + "libc": "none", + "major": 3, + "minor": 10, + "name": "cpython", + "os": "darwin", + "patch": 0, + "prerelease": "", + "sha256": null, + "url": format!("{mock_server_uri}/astral-sh/python-build-standalone/releases/download/20211017/cpython-3.10.0-aarch64-apple-darwin-pgo%2Blto-20211017T1616.tar.zst"), + "variant": null + } + }); + python_downloads_json + .write_str(&serde_json::to_string(&interpreter).unwrap()) + .unwrap(); + + let filters = vec![(mock_server_uri.as_str(), "[SERVER]")]; + uv_snapshot!(filters, context + .python_install() + .arg("cpython-3.10.0-darwin-aarch64-none") + .arg("--python-downloads-json-url") + .arg(python_downloads_json.path()), @r" + success: false + exit_code: 1 + ----- stdout ----- + + ----- stderr ----- + error: Failed to install cpython-3.10.0-macos-aarch64-none + Caused by: Failed to download [SERVER]/astral-sh/python-build-standalone/releases/download/20211017/cpython-3.10.0-aarch64-apple-darwin-pgo%2Blto-20211017T1616.tar.zst + Caused by: HTTP status server error (500 Internal Server Error) for url ([SERVER]/astral-sh/python-build-standalone/releases/download/20211017/cpython-3.10.0-aarch64-apple-darwin-pgo%2Blto-20211017T1616.tar.zst) + "); +} From 28685633c01a0e989abe997e0378e8073d1fdad1 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 10 Jun 2025 07:46:49 -0400 Subject: [PATCH 017/221] Add an `llms.txt` to uv (#13929) ## Summary The generated file looks like: ``` # uv > uv is an extremely fast Python package and project manager, written in Rust. You can use uv to install Python dependencies, run scripts, manage virtual environments, build and publish packages, and even install Python itself. uv is capable of replacing `pip`, `pip-tools`, `pipx`, `poetry`, `pyenv`, `twine`, `virtualenv`, and more. uv includes both a pip-compatible CLI (prepend `uv` to a pip command, e.g., `uv pip install ruff`) and a first-class project interface (e.g., `uv add ruff`) complete with lockfiles and workspace support. ## Getting started - [Features](https://docs.astral.sh/uv/getting-started/features/index.md) - [First steps](https://docs.astral.sh/uv/getting-started/first-steps/index.md) - [Installation](https://docs.astral.sh/uv/getting-started/installation/index.md) ## Guides - [Installing Python](https://docs.astral.sh/uv/guides/install-python/index.md) - [Publishing packages](https://docs.astral.sh/uv/guides/package/index.md) - [Working on projects](https://docs.astral.sh/uv/guides/projects/index.md) - [Running scripts](https://docs.astral.sh/uv/guides/scripts/index.md) - [Using tools](https://docs.astral.sh/uv/guides/tools/index.md) ## Integrations - [Alternative indexes](https://docs.astral.sh/uv/guides/integration/alternative-indexes/index.md) - [AWS Lambda](https://docs.astral.sh/uv/guides/integration/aws-lambda/index.md) - [Dependency bots](https://docs.astral.sh/uv/guides/integration/dependency-bots/index.md) - [Docker](https://docs.astral.sh/uv/guides/integration/docker/index.md) - [FastAPI](https://docs.astral.sh/uv/guides/integration/fastapi/index.md) - [GitHub Actions](https://docs.astral.sh/uv/guides/integration/github/index.md) - [GitLab CI/CD](https://docs.astral.sh/uv/guides/integration/gitlab/index.md) - [Jupyter](https://docs.astral.sh/uv/guides/integration/jupyter/index.md) - [marimo](https://docs.astral.sh/uv/guides/integration/marimo/index.md) - [Pre-commit](https://docs.astral.sh/uv/guides/integration/pre-commit/index.md) - [PyTorch](https://docs.astral.sh/uv/guides/integration/pytorch/index.md) ## Projects - [Building distributions](https://docs.astral.sh/uv/concepts/projects/build/index.md) - [Configuring projects](https://docs.astral.sh/uv/concepts/projects/config/index.md) - [Managing dependencies](https://docs.astral.sh/uv/concepts/projects/dependencies/index.md) - [Creating projects](https://docs.astral.sh/uv/concepts/projects/init/index.md) - [Structure and files](https://docs.astral.sh/uv/concepts/projects/layout/index.md) - [Running commands](https://docs.astral.sh/uv/concepts/projects/run/index.md) - [Locking and syncing](https://docs.astral.sh/uv/concepts/projects/sync/index.md) - [Using workspaces](https://docs.astral.sh/uv/concepts/projects/workspaces/index.md) ## Features - [Authentication](https://docs.astral.sh/uv/concepts/authentication/index.md) - [Build backend](https://docs.astral.sh/uv/concepts/build-backend/index.md) - [Caching](https://docs.astral.sh/uv/concepts/cache/index.md) - [Configuration files](https://docs.astral.sh/uv/concepts/configuration-files/index.md) - [Package indexes](https://docs.astral.sh/uv/concepts/indexes/index.md) - [Python versions](https://docs.astral.sh/uv/concepts/python-versions/index.md) - [Resolution](https://docs.astral.sh/uv/concepts/resolution/index.md) - [Tools](https://docs.astral.sh/uv/concepts/tools/index.md) ## The pip interface - [Compatibility with pip](https://docs.astral.sh/uv/pip/compatibility/index.md) - [Locking environments](https://docs.astral.sh/uv/pip/compile/index.md) - [Declaring dependencies](https://docs.astral.sh/uv/pip/dependencies/index.md) - [Using environments](https://docs.astral.sh/uv/pip/environments/index.md) - [Inspecting environments](https://docs.astral.sh/uv/pip/inspection/index.md) - [Managing packages](https://docs.astral.sh/uv/pip/packages/index.md) ## Reference - [Commands](https://docs.astral.sh/uv/reference/cli/index.md) - [Environment variables](https://docs.astral.sh/uv/reference/environment/index.md) - [Installer](https://docs.astral.sh/uv/reference/installer/index.md) - [Settings](https://docs.astral.sh/uv/reference/settings/index.md) ``` Closes #13901. --- docs/requirements-insiders.txt | 19 ++++++++-- docs/requirements.in | 1 + docs/requirements.txt | 19 ++++++++-- mkdocs.template.yml | 63 ++++++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+), 4 deletions(-) diff --git a/docs/requirements-insiders.txt b/docs/requirements-insiders.txt index c221efd4b..afdf050c1 100644 --- a/docs/requirements-insiders.txt +++ b/docs/requirements-insiders.txt @@ -4,6 +4,10 @@ babel==2.15.0 # via # mkdocs-git-revision-date-localized-plugin # mkdocs-material +beautifulsoup4==4.13.4 + # via + # markdownify + # mkdocs-llmstxt black==23.10.0 # via -r docs/requirements.in certifi==2024.7.4 @@ -43,17 +47,20 @@ markdown-it-py==3.0.0 # mdformat # mdformat-gfm # mdit-py-plugins +markdownify==1.1.0 + # via mkdocs-llmstxt markupsafe==2.1.5 # via # jinja2 # mkdocs -mdformat==0.7.17 +mdformat==0.7.22 # via # -r docs/requirements.in # mdformat-admon # mdformat-gfm # mdformat-mkdocs # mdformat-tables + # mkdocs-llmstxt mdformat-admon==2.0.2 # via # -r docs/requirements.in @@ -82,6 +89,8 @@ mkdocs==1.5.0 # mkdocs-redirects mkdocs-git-revision-date-localized-plugin==1.3.0 # via -r docs/requirements.in +mkdocs-llmstxt==0.2.0 + # via -r docs/requirements.in mkdocs-material @ git+ssh://git@github.com/astral-sh/mkdocs-material-insiders.git@38c0b8187325c3bab386b666daf3518ac036f2f4 # via # -r docs/requirements-insiders.in @@ -128,9 +137,15 @@ regex==2022.10.31 requests==2.32.3 # via mkdocs-material six==1.16.0 - # via python-dateutil + # via + # markdownify + # python-dateutil smmap==5.0.2 # via gitdb +soupsieve==2.7 + # via beautifulsoup4 +typing-extensions==4.14.0 + # via beautifulsoup4 uc-micro-py==1.0.3 # via linkify-it-py urllib3==2.2.2 diff --git a/docs/requirements.in b/docs/requirements.in index 5f504e015..3cc0f6a25 100644 --- a/docs/requirements.in +++ b/docs/requirements.in @@ -7,3 +7,4 @@ mdformat-mkdocs>=2.0.4 mdformat-admon>=2.0.2 mkdocs-redirects>=1.2.2 mkdocs-git-revision-date-localized-plugin>=1.3.0 +mkdocs-llmstxt>=0.2.0 diff --git a/docs/requirements.txt b/docs/requirements.txt index 6392a30a5..41c93098a 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -4,6 +4,10 @@ babel==2.15.0 # via # mkdocs-git-revision-date-localized-plugin # mkdocs-material +beautifulsoup4==4.13.4 + # via + # markdownify + # mkdocs-llmstxt black==24.4.2 # via -r docs/requirements.in certifi==2024.7.4 @@ -43,17 +47,20 @@ markdown-it-py==3.0.0 # mdformat # mdformat-gfm # mdit-py-plugins +markdownify==1.1.0 + # via mkdocs-llmstxt markupsafe==2.1.5 # via # jinja2 # mkdocs -mdformat==0.7.17 +mdformat==0.7.22 # via # -r docs/requirements.in # mdformat-admon # mdformat-gfm # mdformat-mkdocs # mdformat-tables + # mkdocs-llmstxt mdformat-admon==2.0.6 # via # -r docs/requirements.in @@ -85,6 +92,8 @@ mkdocs-get-deps==0.2.0 # via mkdocs mkdocs-git-revision-date-localized-plugin==1.3.0 # via -r docs/requirements.in +mkdocs-llmstxt==0.2.0 + # via -r docs/requirements.in mkdocs-material==9.5.29 # via -r docs/requirements.in mkdocs-material-extensions==1.3.1 @@ -130,9 +139,15 @@ regex==2024.5.15 requests==2.32.3 # via mkdocs-material six==1.16.0 - # via python-dateutil + # via + # markdownify + # python-dateutil smmap==5.0.2 # via gitdb +soupsieve==2.7 + # via beautifulsoup4 +typing-extensions==4.14.0 + # via beautifulsoup4 uc-micro-py==1.0.3 # via linkify-it-py urllib3==2.2.2 diff --git a/mkdocs.template.yml b/mkdocs.template.yml index 9a4d3b1cb..0b2ee6623 100644 --- a/mkdocs.template.yml +++ b/mkdocs.template.yml @@ -40,6 +40,7 @@ repo_name: uv site_author: charliermarsh site_url: https://docs.astral.sh/uv/ site_dir: site/uv +site_description: uv is an extremely fast Python package and project manager, written in Rust. markdown_extensions: - admonition - pymdownx.details @@ -80,6 +81,68 @@ plugins: "configuration/files.md": "concepts/configuration-files.md" "configuration/indexes.md": "concepts/indexes.md" "configuration/environment.md": "reference/environment.md" + - llmstxt: + markdown_description: | + You can use uv to install Python dependencies, run scripts, manage virtual environments, + build and publish packages, and even install Python itself. uv is capable of replacing + `pip`, `pip-tools`, `pipx`, `poetry`, `pyenv`, `twine`, `virtualenv`, and more. + + uv includes both a pip-compatible CLI (prepend `uv` to a pip command, e.g., `uv pip install ruff`) + and a first-class project interface (e.g., `uv add ruff`) complete with lockfiles and + workspace support. + sections: + Getting started: + - getting-started/installation.md + - getting-started/first-steps.md + - getting-started/features.md + Guides: + - guides/install-python.md + - guides/scripts.md + - guides/tools.md + - guides/projects.md + - guides/package.md + Integrations: + - guides/integration/docker.md + - guides/integration/jupyter.md + - guides/integration/marimo.md + - guides/integration/github.md + - guides/integration/gitlab.md + - guides/integration/pre-commit.md + - guides/integration/pytorch.md + - guides/integration/fastapi.md + - guides/integration/alternative-indexes.md + - guides/integration/dependency-bots.md + - guides/integration/aws-lambda.md + Projects: + - concepts/projects/layout.md + - concepts/projects/init.md + - concepts/projects/dependencies.md + - concepts/projects/run.md + - concepts/projects/sync.md + - concepts/projects/config.md + - concepts/projects/build.md + - concepts/projects/workspaces.md + Features: + - concepts/tools.md + - concepts/python-versions.md + - concepts/configuration-files.md + - concepts/indexes.md + - concepts/resolution.md + - concepts/build-backend.md + - concepts/authentication.md + - concepts/cache.md + The pip interface: + - pip/environments.md + - pip/packages.md + - pip/inspection.md + - pip/dependencies.md + - pip/compile.md + - pip/compatibility.md + Reference: + - reference/cli.md + - reference/settings.md + - reference/environment.md + - reference/installer.md extra_css: - stylesheets/extra.css extra_javascript: From 1b82a3ac99df962a6a922e584b8cd0758cf08e9e Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Tue, 10 Jun 2025 09:52:23 -0500 Subject: [PATCH 018/221] Ignore Python discovery errors during `uv python pin` (#13944) See https://github.com/astral-sh/uv/issues/13935#issuecomment-2957300516 where we fail to write a pin file because we encounter an unusable interpreter. This is actually a special case where `MissingPython` is not raised because we want to show why we failed to find a usable interpreter, which is useful in commands where you _need_ an interpreter to use, but here we don't actually need it. Here, we just log the failure and move on. Related https://github.com/astral-sh/uv/pull/13936 --- crates/uv/src/commands/python/pin.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/uv/src/commands/python/pin.rs b/crates/uv/src/commands/python/pin.rs index 471f7461e..8ba2e698c 100644 --- a/crates/uv/src/commands/python/pin.rs +++ b/crates/uv/src/commands/python/pin.rs @@ -110,6 +110,12 @@ pub(crate) async fn pin( warn_user_once!("{err}"); None } + // If there was some other error, log it + Err(err) if !resolved => { + debug!("{err}"); + None + } + // If `resolved` was requested, we must find an interpreter β€” fail otherwise Err(err) => return Err(err.into()), }; From 210b5791880ea60700e0fb6513783efb10c3b086 Mon Sep 17 00:00:00 2001 From: Xeonacid Date: Tue, 10 Jun 2025 23:18:28 +0800 Subject: [PATCH 019/221] build-binaries for riscv64 (#12688) ## Summary Build riscv64 binary so it can get released in the GitHub Releases, which is used by many high-level apps. A copy-paste from linux-s390x, with only target and arch changed. maturin-action added riscv64 support in v1.48.0, this PR also bumps it to the latest version, v1.48.1. ## Test Plan Let CI test itself :P Already tested in [my fork](https://github.com/Xeonacid/uv/actions/runs/14289179697/job/40048172301) --- .github/workflows/build-binaries.yml | 97 ++++++++++++++++++++++++++++ Cargo.toml | 2 + 2 files changed, 99 insertions(+) diff --git a/.github/workflows/build-binaries.yml b/.github/workflows/build-binaries.yml index 6569554e0..5f42bdf9c 100644 --- a/.github/workflows/build-binaries.yml +++ b/.github/workflows/build-binaries.yml @@ -691,6 +691,103 @@ jobs: name: wheels_uv_build-${{ matrix.platform.target }} path: crates/uv-build/dist + # Like `linux-arm`. + linux-riscv64: + if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} + timeout-minutes: 30 + runs-on: depot-ubuntu-latest-4 + strategy: + matrix: + platform: + - target: riscv64gc-unknown-linux-gnu + arch: riscv64 + + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5 + with: + python-version: ${{ env.PYTHON_VERSION }} + - name: "Prep README.md" + run: python scripts/transform_readme.py --target pypi + + # uv + - name: "Build wheels" + uses: PyO3/maturin-action@44479ae1b6b1a57f561e03add8832e62c185eb17 # v1.48.1 + with: + target: ${{ matrix.platform.target }} + manylinux: auto + docker-options: ${{ matrix.platform.maturin_docker_options }} + args: --release --locked --out dist --features self-update + - uses: uraimo/run-on-arch-action@ac33288c3728ca72563c97b8b88dda5a65a84448 # v2 + name: "Test wheel" + with: + arch: ${{ matrix.platform.arch }} + distro: ubuntu20.04 + githubToken: ${{ github.token }} + install: | + apt-get update + apt-get install -y --no-install-recommends python3 python3-pip python-is-python3 + pip3 install -U pip + run: | + pip install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall + ${{ env.MODULE_NAME }} --help + # TODO(konsti): Enable this test on all platforms, currently `find_uv_bin` is failing to discover uv here. + # python -m ${{ env.MODULE_NAME }} --help + uvx --help + - name: "Upload wheels" + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: wheels_uv-${{ matrix.platform.target }} + path: dist + - name: "Archive binary" + shell: bash + run: | + TARGET=${{ matrix.platform.target }} + ARCHIVE_NAME=uv-$TARGET + ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz + + mkdir -p $ARCHIVE_NAME + cp target/$TARGET/release/uv $ARCHIVE_NAME/uv + cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx + tar czvf $ARCHIVE_FILE $ARCHIVE_NAME + shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 + - name: "Upload binary" + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: artifacts-${{ matrix.platform.target }} + path: | + *.tar.gz + *.sha256 + + # uv-build + - name: "Build wheels uv-build" + uses: PyO3/maturin-action@44479ae1b6b1a57f561e03add8832e62c185eb17 # v1.48.1 + with: + target: ${{ matrix.platform.target }} + manylinux: auto + docker-options: ${{ matrix.platform.maturin_docker_options }} + args: --profile minimal-size --locked --out crates/uv-build/dist -m crates/uv-build/Cargo.toml + - uses: uraimo/run-on-arch-action@ac33288c3728ca72563c97b8b88dda5a65a84448 # v2 + name: "Test wheel uv-build" + with: + arch: ${{ matrix.platform.arch }} + distro: ubuntu20.04 + githubToken: ${{ github.token }} + install: | + apt-get update + apt-get install -y --no-install-recommends python3 python3-pip python-is-python3 + pip3 install -U pip + run: | + pip install ${{ env.PACKAGE_NAME }}-build --no-index --find-links crates/uv-build/dist --force-reinstall + ${{ env.MODULE_NAME }}-build --help + # TODO(konsti): Enable this test on all platforms, currently `find_uv_bin` is failing to discover uv here. + # python -m ${{ env.MODULE_NAME }}-build --help + - name: "Upload wheels uv-build" + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: wheels_uv_build-${{ matrix.platform.target }} + path: crates/uv-build/dist + musllinux: if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} runs-on: ubuntu-latest diff --git a/Cargo.toml b/Cargo.toml index 368dc0442..3e192a3d5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -324,6 +324,7 @@ targets = [ "i686-unknown-linux-musl", "powerpc64-unknown-linux-gnu", "powerpc64le-unknown-linux-gnu", + "riscv64gc-unknown-linux-gnu", "s390x-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-pc-windows-msvc", @@ -361,6 +362,7 @@ global = "depot-ubuntu-latest-4" [workspace.metadata.dist.min-glibc-version] # Override glibc version for specific target triplets. aarch64-unknown-linux-gnu = "2.28" +riscv64gc-unknown-linux-gnu = "2.31" # Override all remaining glibc versions. "*" = "2.17" From f20a25f91fe5bfe6f5e80f6ccfc68cc799031ab6 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Tue, 10 Jun 2025 10:56:22 -0500 Subject: [PATCH 020/221] Download versions in `uv python pin` if not found (#13946) As another follow-up in the vein of https://github.com/astral-sh/uv/pull/13944, I noticed `uv python pin` doesn't download Python versions, which is a bit weird because we'll warn it's not found. --- crates/uv/src/commands/python/pin.rs | 34 +++++++++++++++++++++++----- crates/uv/src/lib.rs | 3 +++ crates/uv/src/settings.rs | 8 ++++++- crates/uv/tests/it/python_pin.rs | 26 +++++++++++++++++++++ 4 files changed, 64 insertions(+), 7 deletions(-) diff --git a/crates/uv/src/commands/python/pin.rs b/crates/uv/src/commands/python/pin.rs index 8ba2e698c..e0b241bcc 100644 --- a/crates/uv/src/commands/python/pin.rs +++ b/crates/uv/src/commands/python/pin.rs @@ -7,17 +7,22 @@ use owo_colors::OwoColorize; use tracing::debug; use uv_cache::Cache; +use uv_client::BaseClientBuilder; use uv_dirs::user_uv_config_dir; use uv_fs::Simplified; use uv_python::{ - EnvironmentPreference, PYTHON_VERSION_FILENAME, PythonInstallation, PythonPreference, - PythonRequest, PythonVersionFile, VersionFileDiscoveryOptions, + EnvironmentPreference, PYTHON_VERSION_FILENAME, PythonDownloads, PythonInstallation, + PythonPreference, PythonRequest, PythonVersionFile, VersionFileDiscoveryOptions, }; +use uv_settings::PythonInstallMirrors; use uv_warnings::warn_user_once; use uv_workspace::{DiscoveryOptions, VirtualProject, WorkspaceCache}; -use crate::commands::{ExitStatus, project::find_requires_python}; +use crate::commands::{ + ExitStatus, project::find_requires_python, reporters::PythonDownloadReporter, +}; use crate::printer::Printer; +use crate::settings::NetworkSettings; /// Pin to a specific Python version. #[allow(clippy::fn_params_excessive_bools)] @@ -26,9 +31,12 @@ pub(crate) async fn pin( request: Option, resolved: bool, python_preference: PythonPreference, + python_downloads: PythonDownloads, no_project: bool, global: bool, rm: bool, + install_mirrors: PythonInstallMirrors, + network_settings: NetworkSettings, cache: &Cache, printer: Printer, ) -> Result { @@ -98,12 +106,26 @@ pub(crate) async fn pin( bail!("Requests for arbitrary names (e.g., `{name}`) are not supported in version files"); } - let python = match PythonInstallation::find( - &request, + let client_builder = BaseClientBuilder::new() + .connectivity(network_settings.connectivity) + .native_tls(network_settings.native_tls) + .allow_insecure_host(network_settings.allow_insecure_host.clone()); + let reporter = PythonDownloadReporter::single(printer); + + let python = match PythonInstallation::find_or_download( + Some(&request), EnvironmentPreference::OnlySystem, python_preference, + python_downloads, + &client_builder, cache, - ) { + Some(&reporter), + install_mirrors.python_install_mirror.as_deref(), + install_mirrors.pypy_install_mirror.as_deref(), + install_mirrors.python_downloads_json_url.as_deref(), + ) + .await + { Ok(python) => Some(python), // If no matching Python version is found, don't fail unless `resolved` was requested Err(uv_python::Error::MissingPython(err)) if !resolved => { diff --git a/crates/uv/src/lib.rs b/crates/uv/src/lib.rs index 1d4aa932c..b7b1a7859 100644 --- a/crates/uv/src/lib.rs +++ b/crates/uv/src/lib.rs @@ -1464,9 +1464,12 @@ async fn run(mut cli: Cli) -> Result { args.request, args.resolved, globals.python_preference, + globals.python_downloads, args.no_project, args.global, args.rm, + args.install_mirrors, + globals.network_settings, &cache, printer, ) diff --git a/crates/uv/src/settings.rs b/crates/uv/src/settings.rs index 38d3d16fb..b5eb2f5d0 100644 --- a/crates/uv/src/settings.rs +++ b/crates/uv/src/settings.rs @@ -1057,12 +1057,13 @@ pub(crate) struct PythonPinSettings { pub(crate) no_project: bool, pub(crate) global: bool, pub(crate) rm: bool, + pub(crate) install_mirrors: PythonInstallMirrors, } impl PythonPinSettings { /// Resolve the [`PythonPinSettings`] from the CLI and workspace configuration. #[allow(clippy::needless_pass_by_value)] - pub(crate) fn resolve(args: PythonPinArgs, _filesystem: Option) -> Self { + pub(crate) fn resolve(args: PythonPinArgs, filesystem: Option) -> Self { let PythonPinArgs { request, no_resolved, @@ -1072,12 +1073,17 @@ impl PythonPinSettings { rm, } = args; + let install_mirrors = filesystem + .map(|fs| fs.install_mirrors.clone()) + .unwrap_or_default(); + Self { request, resolved: flag(resolved, no_resolved).unwrap_or(false), no_project, global, rm, + install_mirrors, } } } diff --git a/crates/uv/tests/it/python_pin.rs b/crates/uv/tests/it/python_pin.rs index cf220d6b1..4cbc98ab0 100644 --- a/crates/uv/tests/it/python_pin.rs +++ b/crates/uv/tests/it/python_pin.rs @@ -816,6 +816,32 @@ fn python_pin_with_comments() -> Result<()> { Ok(()) } +#[test] +#[cfg(feature = "python-managed")] +fn python_pin_install() { + let context: TestContext = TestContext::new_with_versions(&[]).with_filtered_python_sources(); + + // Should not install 3.12 when downloads are not automatic + uv_snapshot!(context.filters(), context.python_pin().arg("3.12"), @r" + success: true + exit_code: 0 + ----- stdout ----- + Pinned `.python-version` to `3.12` + + ----- stderr ----- + warning: No interpreter found for Python 3.12 in [PYTHON SOURCES] + "); + + uv_snapshot!(context.filters(), context.python_pin().arg("3.12").env("UV_PYTHON_DOWNLOADS", "auto"), @r" + success: true + exit_code: 0 + ----- stdout ----- + Pinned `.python-version` to `3.12` + + ----- stderr ----- + "); +} + #[test] fn python_pin_rm() { let context: TestContext = TestContext::new_with_versions(&["3.12"]); From 90a7208a73a2050fe06ff37db11bbc60a7919ef9 Mon Sep 17 00:00:00 2001 From: "Lan, Jian" Date: Wed, 11 Jun 2025 02:15:38 +0800 Subject: [PATCH 021/221] Fix and improve docs (#13620) ## Summary I follow the advices from the IDE spell checker and grammar checker, fix some typos, and improve the docs. --- docs/concepts/projects/config.md | 2 +- docs/concepts/projects/sync.md | 2 +- docs/concepts/projects/workspaces.md | 2 +- docs/concepts/python-versions.md | 12 ++++++------ docs/concepts/resolution.md | 2 +- docs/guides/integration/aws-lambda.md | 2 +- docs/guides/integration/docker.md | 2 +- docs/guides/package.md | 2 +- docs/guides/tools.md | 4 ++-- docs/pip/compatibility.md | 2 +- docs/pip/inspection.md | 4 ++-- docs/reference/installer.md | 7 ++++--- docs/reference/settings.md | 2 +- docs/reference/troubleshooting/build-failures.md | 2 +- .../troubleshooting/reproducible-examples.md | 6 +++--- 15 files changed, 27 insertions(+), 26 deletions(-) diff --git a/docs/concepts/projects/config.md b/docs/concepts/projects/config.md index de281bee3..f9d33ed90 100644 --- a/docs/concepts/projects/config.md +++ b/docs/concepts/projects/config.md @@ -124,7 +124,7 @@ with the default build system. Build systems are used to power the following features: - Including or excluding files from distributions -- Editable install behavior +- Editable installation behavior - Dynamic project metadata - Compilation of native code - Vendoring shared libraries diff --git a/docs/concepts/projects/sync.md b/docs/concepts/projects/sync.md index a15549bd9..92cb24be8 100644 --- a/docs/concepts/projects/sync.md +++ b/docs/concepts/projects/sync.md @@ -202,7 +202,7 @@ while building a Docker image. `uv sync` has several flags for this purpose. - `--no-install-workspace`: Do not install any workspace members, including the root project - `--no-install-package `: Do not install the given package(s) -When these options are used, all of the dependencies of the target are still installed. For example, +When these options are used, all the dependencies of the target are still installed. For example, `--no-install-project` will omit the _project_ but not any of its dependencies. If used improperly, these flags can result in a broken environment since a package can be missing diff --git a/docs/concepts/projects/workspaces.md b/docs/concepts/projects/workspaces.md index 99031653b..942cea8c2 100644 --- a/docs/concepts/projects/workspaces.md +++ b/docs/concepts/projects/workspaces.md @@ -50,7 +50,7 @@ the workspace context. Every workspace needs a root, which is _also_ a workspace member. In the above example, `albatross` is the workspace root, and the workspace members include all projects under the `packages` -directory, with the exception of `seeds`. +directory, except `seeds`. By default, `uv run` and `uv sync` operates on the workspace root. For example, in the above example, `uv run` and `uv run --package albatross` would be equivalent, while diff --git a/docs/concepts/python-versions.md b/docs/concepts/python-versions.md index 016d9e00d..0d409ff50 100644 --- a/docs/concepts/python-versions.md +++ b/docs/concepts/python-versions.md @@ -64,8 +64,8 @@ A global `.python-version` file can be created in the user configuration directo Discovery of `.python-version` files can be disabled with `--no-config`. -uv will not search for `.python-version` files beyond project or workspace boundaries (with the -exception of the user configuration directory). +uv will not search for `.python-version` files beyond project or workspace boundaries (except the +user configuration directory). ## Installing a Python version @@ -106,13 +106,13 @@ To install a specific implementation: $ uv python install pypy ``` -All of the [Python version request](#requesting-a-version) formats are supported except those that -are used for requesting local interpreters such as a file path. +All the [Python version request](#requesting-a-version) formats are supported except those that are +used for requesting local interpreters such as a file path. By default `uv python install` will verify that a managed Python version is installed or install the latest version. If a `.python-version` file is present, uv will install the Python version listed in the file. A project that requires multiple Python versions may define a `.python-versions` file. If -present, uv will install all of the Python versions listed in the file. +present, uv will install all the Python versions listed in the file. !!! important @@ -341,7 +341,7 @@ The implementations may be requested with either the long or short name: - PyPy: `pypy`, `pp` - GraalPy: `graalpy`, `gp` -Implementation name requests are not case sensitive. +Implementation name requests are not case-sensitive. See the [Python version request](#requesting-a-version) documentation for more details on the supported formats. diff --git a/docs/concepts/resolution.md b/docs/concepts/resolution.md index 3fad45adb..ec28d71a3 100644 --- a/docs/concepts/resolution.md +++ b/docs/concepts/resolution.md @@ -300,7 +300,7 @@ If dependency resolution fails due to a transitive pre-release, uv will prompt u Alternatively, the transitive dependency can be added as a [constraint](#dependency-constraints) or direct dependency (i.e. in `requirements.in` or `pyproject.toml`) with a pre-release version -specifier (e.g., `flask>=2.0.0rc1`) to opt-in to pre-release support for that specific dependency. +specifier (e.g., `flask>=2.0.0rc1`) to opt in to pre-release support for that specific dependency. Pre-releases are [notoriously difficult](https://pubgrub-rs-guide.netlify.app/limitations/prerelease_versions) to diff --git a/docs/guides/integration/aws-lambda.md b/docs/guides/integration/aws-lambda.md index 0f07e9ca2..2df48b1b9 100644 --- a/docs/guides/integration/aws-lambda.md +++ b/docs/guides/integration/aws-lambda.md @@ -256,7 +256,7 @@ For details, see the ### Workspace support If a project includes local dependencies (e.g., via -[Workspaces](../../concepts/projects/workspaces.md), those too must be included in the deployment +[Workspaces](../../concepts/projects/workspaces.md)), those too must be included in the deployment package. We'll start by extending the above example to include a dependency on a locally-developed library diff --git a/docs/guides/integration/docker.md b/docs/guides/integration/docker.md index ba004b3a0..c825d6d7a 100644 --- a/docs/guides/integration/docker.md +++ b/docs/guides/integration/docker.md @@ -530,7 +530,7 @@ REPO PREDICATE_TYPE WORKFLOW astral-sh/uv https://slsa.dev/provenance/v1 .github/workflows/build-docker.yml@refs/heads/main ``` -This tells you that the specific Docker image was built by the official uv Github release workflow +This tells you that the specific Docker image was built by the official uv GitHub release workflow and hasn't been tampered with since. GitHub attestations build on the [sigstore.dev infrastructure](https://www.sigstore.dev/). As such diff --git a/docs/guides/package.md b/docs/guides/package.md index a5437769a..0914d5750 100644 --- a/docs/guides/package.md +++ b/docs/guides/package.md @@ -93,7 +93,7 @@ explicit = true Even though `uv publish` retries failed uploads, it can happen that publishing fails in the middle, with some files uploaded and some files still missing. With PyPI, you can retry the exact same command, existing identical files will be ignored. With other registries, use -`--check-url ` with the index URL (not the publish URL) the packages belong to. When +`--check-url ` with the index URL (not the publishing URL) the packages belong to. When using `--index`, the index URL is used as check URL. uv will skip uploading files that are identical to files in the registry, and it will also handle raced parallel uploads. Note that existing files need to match exactly with those previously uploaded to the registry, this avoids accidentally diff --git a/docs/guides/tools.md b/docs/guides/tools.md index 627038daf..b281b89b2 100644 --- a/docs/guides/tools.md +++ b/docs/guides/tools.md @@ -239,7 +239,7 @@ $ uv tool upgrade --all ## Requesting Python versions -By default, uv will use your default Python interpreter (the first it finds) when when running, +By default, uv will use your default Python interpreter (the first it finds) when running, installing, or upgrading tools. You can specify the Python interpreter to use with the `--python` option. @@ -262,7 +262,7 @@ $ uv tool upgrade --python 3.10 ruff ``` For more details on requesting Python versions, see the -[Python version](../concepts/python-versions.md#requesting-a-version) concept page.. +[Python version](../concepts/python-versions.md#requesting-a-version) concept page. ## Legacy Windows Scripts diff --git a/docs/pip/compatibility.md b/docs/pip/compatibility.md index 30c14827d..5719c2fcc 100644 --- a/docs/pip/compatibility.md +++ b/docs/pip/compatibility.md @@ -400,7 +400,7 @@ the `subprocess` option is supported. Unlike `pip`, uv does not enable keyring authentication by default. -Unlike `pip`, uv does not wait until a request returns a HTTP 401 before searching for +Unlike `pip`, uv does not wait until a request returns an HTTP 401 before searching for authentication. uv attaches authentication to all requests for hosts with credentials available. ## `egg` support diff --git a/docs/pip/inspection.md b/docs/pip/inspection.md index de2bea15b..af34097e8 100644 --- a/docs/pip/inspection.md +++ b/docs/pip/inspection.md @@ -2,7 +2,7 @@ ## Listing installed packages -To list all of the packages in the environment: +To list all the packages in the environment: ```console $ uv pip list @@ -14,7 +14,7 @@ To list the packages in a JSON format: $ uv pip list --format json ``` -To list all of the packages in the environment in a `requirements.txt` format: +To list all the packages in the environment in a `requirements.txt` format: ```console $ uv pip freeze diff --git a/docs/reference/installer.md b/docs/reference/installer.md index 8db77ba5d..b6bb34df9 100644 --- a/docs/reference/installer.md +++ b/docs/reference/installer.md @@ -1,6 +1,6 @@ # The uv installer -## Changing the install path +## Changing the installation path By default, uv is installed to `~/.local/bin`. If `XDG_BIN_HOME` is set, it will be used instead. Similarly, if `XDG_DATA_HOME` is set, the target directory will be inferred as @@ -43,10 +43,11 @@ $ curl -LsSf https://astral.sh/uv/install.sh | env UV_UNMANAGED_INSTALL="/custom The use of `UV_UNMANAGED_INSTALL` will also disable self-updates (via `uv self update`). -## Passing options to the install script +## Passing options to the installation script Using environment variables is recommended because they are consistent across platforms. However, -options can be passed directly to the install script. For example, to see the available options: +options can be passed directly to the installation script. For example, to see the available +options: ```console $ curl -LsSf https://astral.sh/uv/install.sh | sh -s -- --help diff --git a/docs/reference/settings.md b/docs/reference/settings.md index b48396680..54fabe83b 100644 --- a/docs/reference/settings.md +++ b/docs/reference/settings.md @@ -3371,7 +3371,7 @@ must either be pinned to exact versions (e.g., `==1.0.0`), or be specified via d Hash-checking mode introduces a number of additional constraints: - Git dependencies are not supported. -- Editable installs are not supported. +- Editable installations are not supported. - Local dependencies are not supported, unless they point to a specific wheel (`.whl`) or source archive (`.zip`, `.tar.gz`), as opposed to a directory. diff --git a/docs/reference/troubleshooting/build-failures.md b/docs/reference/troubleshooting/build-failures.md index 6b93737f2..e83475606 100644 --- a/docs/reference/troubleshooting/build-failures.md +++ b/docs/reference/troubleshooting/build-failures.md @@ -105,7 +105,7 @@ wheel exists in the index, uv tries to build the source distribution. You can check which wheels exist for a PyPI project under β€œDownload Files”, e.g. https://pypi.org/project/numpy/2.1.1.md#files. Wheels with `...-py3-none-any.whl` filenames work everywhere, others have the operating system and platform in the filename. In the linked `numpy` -example, you can see that there are pre-built distributions for Python 3.10 to 3.13 on MacOS, Linux +example, you can see that there are pre-built distributions for Python 3.10 to 3.13 on macOS, Linux and Windows. ## Common build failures diff --git a/docs/reference/troubleshooting/reproducible-examples.md b/docs/reference/troubleshooting/reproducible-examples.md index 0f2044305..5403ce2d5 100644 --- a/docs/reference/troubleshooting/reproducible-examples.md +++ b/docs/reference/troubleshooting/reproducible-examples.md @@ -9,7 +9,7 @@ a maintainer much longer to identify the root cause of the problem. ## How to write a reproducible example -When writing a reproducible example, the goal is to provide all of the context necessary for someone +When writing a reproducible example, the goal is to provide all the context necessary for someone else to reproduce your example. This includes: - The platform you're using (e.g., the operating system and architecture) @@ -124,8 +124,8 @@ In addition to the script, include _verbose_ logs (i.e., with the `-v` flag) of complete error message. Whenever a script relies on external state, be sure to share that information. For example, if you -wrote the script on Windows and it uses a Python version that you installed with `choco` and runs on -PowerShell 6.2, please include that in the report. +wrote the script on Windows, and it uses a Python version that you installed with `choco` and runs +on PowerShell 6.2, please include that in the report. ### Git repository From 21986c3fc9791cac0ad81ee87613e4dcdc72fd95 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Tue, 10 Jun 2025 16:54:42 -0500 Subject: [PATCH 022/221] Bump timeout on Python download release fetch (#13955) Failing with a 504 at https://github.com/astral-sh/uv/actions/runs/15569590779 Successful at https://github.com/astral-sh/uv/actions/runs/15570896150/job/43846260252 --- crates/uv-python/fetch-download-metadata.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/uv-python/fetch-download-metadata.py b/crates/uv-python/fetch-download-metadata.py index f3976ee5f..0b5d9caec 100755 --- a/crates/uv-python/fetch-download-metadata.py +++ b/crates/uv-python/fetch-download-metadata.py @@ -729,7 +729,7 @@ async def find() -> None: } if token: headers["Authorization"] = "Bearer " + token - client = httpx.AsyncClient(follow_redirects=True, headers=headers, timeout=15) + client = httpx.AsyncClient(follow_redirects=True, headers=headers, timeout=60) finders = [ CPythonFinder(client), From 4c877b7dc6f30d86bda383ffc6e67cab0e3bdafb Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Tue, 10 Jun 2025 17:03:01 -0500 Subject: [PATCH 023/221] Fix generated file change (#13957) Regressed in https://github.com/astral-sh/uv/pull/13620 ref failure at https://github.com/astral-sh/uv/actions/runs/15570991822/job/43846587900?pr=13956 --- crates/uv-cli/src/lib.rs | 6 +++--- crates/uv-settings/src/settings.rs | 2 +- docs/reference/cli.md | 6 +++--- uv.schema.json | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index da4524aaa..63e87367c 100644 --- a/crates/uv-cli/src/lib.rs +++ b/crates/uv-cli/src/lib.rs @@ -1491,7 +1491,7 @@ pub struct PipSyncArgs { /// Hash-checking mode introduces a number of additional constraints: /// /// - Git dependencies are not supported. - /// - Editable installs are not supported. + /// - Editable installations are not supported. /// - Local dependencies are not supported, unless they point to a specific wheel (`.whl`) or /// source archive (`.zip`, `.tar.gz`), as opposed to a directory. #[arg( @@ -1801,7 +1801,7 @@ pub struct PipInstallArgs { /// Hash-checking mode introduces a number of additional constraints: /// /// - Git dependencies are not supported. - /// - Editable installs are not supported. + /// - Editable installations are not supported. /// - Local dependencies are not supported, unless they point to a specific wheel (`.whl`) or /// source archive (`.zip`, `.tar.gz`), as opposed to a directory. #[arg( @@ -2471,7 +2471,7 @@ pub struct BuildArgs { /// Hash-checking mode introduces a number of additional constraints: /// /// - Git dependencies are not supported. - /// - Editable installs are not supported. + /// - Editable installations are not supported. /// - Local dependencies are not supported, unless they point to a specific wheel (`.whl`) or /// source archive (`.zip`, `.tar.gz`), as opposed to a directory. #[arg( diff --git a/crates/uv-settings/src/settings.rs b/crates/uv-settings/src/settings.rs index 7c2406d0c..ff6d39995 100644 --- a/crates/uv-settings/src/settings.rs +++ b/crates/uv-settings/src/settings.rs @@ -1495,7 +1495,7 @@ pub struct PipOptions { /// Hash-checking mode introduces a number of additional constraints: /// /// - Git dependencies are not supported. - /// - Editable installs are not supported. + /// - Editable installations are not supported. /// - Local dependencies are not supported, unless they point to a specific wheel (`.whl`) or /// source archive (`.zip`, `.tar.gz`), as opposed to a directory. #[option( diff --git a/docs/reference/cli.md b/docs/reference/cli.md index d89d4498e..aef894368 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -3550,7 +3550,7 @@ be used with caution, as it can modify the system Python installation.

When --require-hashes is enabled, all requirements must include a hash or set of hashes, and all requirements must either be pinned to exact versions (e.g., ==1.0.0), or be specified via direct URL.

Hash-checking mode introduces a number of additional constraints:

    -
  • Git dependencies are not supported. - Editable installs are not supported. - Local dependencies are not supported, unless they point to a specific wheel (.whl) or source archive (.zip, .tar.gz), as opposed to a directory.
  • +
  • Git dependencies are not supported. - Editable installations are not supported. - Local dependencies are not supported, unless they point to a specific wheel (.whl) or source archive (.zip, .tar.gz), as opposed to a directory.

May also be set with the UV_REQUIRE_HASHES environment variable.

--strict

Validate the Python environment after completing the installation, to detect packages with missing dependencies or other issues

--system

Install packages into the system Python environment.

@@ -3814,7 +3814,7 @@ should be used with caution, as it can modify the system Python installation.

When --require-hashes is enabled, all requirements must include a hash or set of hashes, and all requirements must either be pinned to exact versions (e.g., ==1.0.0), or be specified via direct URL.

Hash-checking mode introduces a number of additional constraints:

    -
  • Git dependencies are not supported. - Editable installs are not supported. - Local dependencies are not supported, unless they point to a specific wheel (.whl) or source archive (.zip, .tar.gz), as opposed to a directory.
  • +
  • Git dependencies are not supported. - Editable installations are not supported. - Local dependencies are not supported, unless they point to a specific wheel (.whl) or source archive (.zip, .tar.gz), as opposed to a directory.

May also be set with the UV_REQUIRE_HASHES environment variable.

--requirements, --requirement, -r requirements

Install all packages listed in the given requirements.txt or pylock.toml files.

If a pyproject.toml, setup.py, or setup.cfg file is provided, uv will extract the requirements for the relevant project.

@@ -4676,7 +4676,7 @@ the platform.

When --require-hashes is enabled, all requirements must include a hash or set of hashes, and all requirements must either be pinned to exact versions (e.g., ==1.0.0), or be specified via direct URL.

Hash-checking mode introduces a number of additional constraints:

    -
  • Git dependencies are not supported. - Editable installs are not supported. - Local dependencies are not supported, unless they point to a specific wheel (.whl) or source archive (.zip, .tar.gz), as opposed to a directory.
  • +
  • Git dependencies are not supported. - Editable installations are not supported. - Local dependencies are not supported, unless they point to a specific wheel (.whl) or source archive (.zip, .tar.gz), as opposed to a directory.

May also be set with the UV_REQUIRE_HASHES environment variable.

--resolution resolution

The strategy to use when selecting between the different compatible versions for a given package requirement.

By default, uv will use the latest compatible version of each package (highest).

diff --git a/uv.schema.json b/uv.schema.json index 19a6bf4bd..d2ca69f20 100644 --- a/uv.schema.json +++ b/uv.schema.json @@ -1498,7 +1498,7 @@ } }, "require-hashes": { - "description": "Require a matching hash for each requirement.\n\nHash-checking mode is all or nothing. If enabled, _all_ requirements must be provided with a corresponding hash or set of hashes. Additionally, if enabled, _all_ requirements must either be pinned to exact versions (e.g., `==1.0.0`), or be specified via direct URL.\n\nHash-checking mode introduces a number of additional constraints:\n\n- Git dependencies are not supported. - Editable installs are not supported. - Local dependencies are not supported, unless they point to a specific wheel (`.whl`) or source archive (`.zip`, `.tar.gz`), as opposed to a directory.", + "description": "Require a matching hash for each requirement.\n\nHash-checking mode is all or nothing. If enabled, _all_ requirements must be provided with a corresponding hash or set of hashes. Additionally, if enabled, _all_ requirements must either be pinned to exact versions (e.g., `==1.0.0`), or be specified via direct URL.\n\nHash-checking mode introduces a number of additional constraints:\n\n- Git dependencies are not supported. - Editable installations are not supported. - Local dependencies are not supported, unless they point to a specific wheel (`.whl`) or source archive (`.zip`, `.tar.gz`), as opposed to a directory.", "type": [ "boolean", "null" From 357fc91c3c6b2f3881ce0db2dc346055a6ae5696 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Jun 2025 21:13:32 -0500 Subject: [PATCH 024/221] Sync latest Python releases (#13956) Automated update for Python releases. Co-authored-by: zanieb <2586601+zanieb@users.noreply.github.com> --- .../uv-dev/src/generate_sysconfig_mappings.rs | 4 +- crates/uv-python/download-metadata.json | 1512 +++++++++++++---- .../src/sysconfig/generated_mappings.rs | 2 +- crates/uv/tests/it/python_install.rs | 10 +- 4 files changed, 1164 insertions(+), 364 deletions(-) diff --git a/crates/uv-dev/src/generate_sysconfig_mappings.rs b/crates/uv-dev/src/generate_sysconfig_mappings.rs index a44b8ee86..275c8aa5e 100644 --- a/crates/uv-dev/src/generate_sysconfig_mappings.rs +++ b/crates/uv-dev/src/generate_sysconfig_mappings.rs @@ -11,7 +11,7 @@ use crate::ROOT_DIR; use crate::generate_all::Mode; /// Contains current supported targets -const TARGETS_YML_URL: &str = "https://raw.githubusercontent.com/astral-sh/python-build-standalone/refs/tags/20250604/cpython-unix/targets.yml"; +const TARGETS_YML_URL: &str = "https://raw.githubusercontent.com/astral-sh/python-build-standalone/refs/tags/20250610/cpython-unix/targets.yml"; #[derive(clap::Args)] pub(crate) struct Args { @@ -130,7 +130,7 @@ async fn generate() -> Result { output.push_str("//! DO NOT EDIT\n"); output.push_str("//!\n"); output.push_str("//! Generated with `cargo run dev generate-sysconfig-metadata`\n"); - output.push_str("//! Targets from \n"); + output.push_str("//! Targets from \n"); output.push_str("//!\n"); // Disable clippy/fmt diff --git a/crates/uv-python/download-metadata.json b/crates/uv-python/download-metadata.json index 345fe23fb..e38079e7c 100644 --- a/crates/uv-python/download-metadata.json +++ b/crates/uv-python/download-metadata.json @@ -1,4 +1,804 @@ { + "cpython-3.14.0b2-darwin-aarch64-none": { + "name": "cpython", + "arch": { + "family": "aarch64", + "variant": null + }, + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-aarch64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "a8c33866ec30f1be85a7a6e8c544d2a093163b78505a9a66c8a1ca153cffe3c4", + "variant": null + }, + "cpython-3.14.0b2-darwin-x86_64-none": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "d15e3d85ab6a313da3584eff6965629020c6e3f66e54f0b938363a9282d73404", + "variant": null + }, + "cpython-3.14.0b2-linux-aarch64-gnu": { + "name": "cpython", + "arch": { + "family": "aarch64", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "416c51fc07c44fd426f585c3fbffb0dc8231e4bb69817249d25cdcc9a5eab0c4", + "variant": null + }, + "cpython-3.14.0b2-linux-armv7-gnueabi": { + "name": "cpython", + "arch": { + "family": "armv7", + "variant": null + }, + "os": "linux", + "libc": "gnueabi", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", + "sha256": "3280a2368269494de4e3ef995a79440cb071294bc8c36db725da94175aaf5acd", + "variant": null + }, + "cpython-3.14.0b2-linux-armv7-gnueabihf": { + "name": "cpython", + "arch": { + "family": "armv7", + "variant": null + }, + "os": "linux", + "libc": "gnueabihf", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", + "sha256": "5ac10721018963027824b65eae594751a726bc587dc429f4e8e341101782c5e4", + "variant": null + }, + "cpython-3.14.0b2-linux-powerpc64le-gnu": { + "name": "cpython", + "arch": { + "family": "powerpc64le", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "988a72361f6fbc1158e7b4946d76f734ca41dbe5c8dda1bfd93fee526cf57aa5", + "variant": null + }, + "cpython-3.14.0b2-linux-riscv64-gnu": { + "name": "cpython", + "arch": { + "family": "riscv64", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "a4dacf32e4988be1a211aa0b50b3b03fb449f7ace4d79f7247526aa051d495fa", + "variant": null + }, + "cpython-3.14.0b2-linux-s390x-gnu": { + "name": "cpython", + "arch": { + "family": "s390x", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "5d2f125769c8d5ab8a6d54bdb61cc5a03fe0cb95e62a278bfa14d131d338282b", + "variant": null + }, + "cpython-3.14.0b2-linux-x86_64-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "6dfb3f4106f810daefc0476f90edf3a810c21ca03fdaf13bf795e65b52db14b0", + "variant": null + }, + "cpython-3.14.0b2-linux-x86_64-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "3643a3abf4b22c7c57057e6117f72825c43f12d733415c128e06d6d0b4464b4a", + "variant": null + }, + "cpython-3.14.0b2-linux-x86_64_v2-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v2" + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "fd1511644fc9213360c301846c7957a4dd514eb254b84642e8d09b6a4f02a833", + "variant": null + }, + "cpython-3.14.0b2-linux-x86_64_v2-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v2" + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "9f9aafa46a3c745cebca7180809542b823c30821da7edbb19b4cebb357544f52", + "variant": null + }, + "cpython-3.14.0b2-linux-x86_64_v3-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v3" + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "80e0e5fa4c0efb747680b2a23a694bbea3990d9ff0d9aa74ccbac1c7ad7106b8", + "variant": null + }, + "cpython-3.14.0b2-linux-x86_64_v3-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v3" + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "12b3ba1ea38c24fb7bde38af04cb2cf854b94f93e868a8ebb5b0282342cd6bc2", + "variant": null + }, + "cpython-3.14.0b2-linux-x86_64_v4-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v4" + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "b5be73f5a9cb7020add163a740708e0a0225e1d6aabdea15486de9572f03c891", + "variant": null + }, + "cpython-3.14.0b2-linux-x86_64_v4-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v4" + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "16ed53c7a2336a4f61ce7f239dd6b0a70009fb7f58ae881002290489f4eae041", + "variant": null + }, + "cpython-3.14.0b2-windows-i686-none": { + "name": "cpython", + "arch": { + "family": "i686", + "variant": null + }, + "os": "windows", + "libc": "none", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-i686-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "84ca22b84c5680a410420a80ac7b964c0132cc23756a6f1fff09e8643fd51e93", + "variant": null + }, + "cpython-3.14.0b2-windows-x86_64-none": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "windows", + "libc": "none", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "619ad112472f4366bfd8183d53cf0fabb7f3e7b3d87bded0291c874e1cebb50f", + "variant": null + }, + "cpython-3.14.0b2+freethreaded-darwin-aarch64-none": { + "name": "cpython", + "arch": { + "family": "aarch64", + "variant": null + }, + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-aarch64-apple-darwin-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "af0f34aa0dcd02bd3d960a1572a1ed8a17d55b373a22866f05041aaf16f8607d", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-darwin-x86_64-none": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "darwin", + "libc": "none", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-apple-darwin-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "dd27d519cf2a04917cb566366d6539477791d1b2f1fb42037d9179f469ff55a9", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-aarch64-gnu": { + "name": "cpython", + "arch": { + "family": "aarch64", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-aarch64-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", + "sha256": "e76c7ab98e1c0f86a6996d1ec775ba8497bf46aa8ffa8c7b0f2e761f37305329", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-armv7-gnueabi": { + "name": "cpython", + "arch": { + "family": "armv7", + "variant": null + }, + "os": "linux", + "libc": "gnueabi", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-armv7-unknown-linux-gnueabi-freethreaded%2Blto-full.tar.zst", + "sha256": "388cdd7955905ab2b5692a17d241f574807fab3b3816bedacf4e46dc66bae4ed", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-armv7-gnueabihf": { + "name": "cpython", + "arch": { + "family": "armv7", + "variant": null + }, + "os": "linux", + "libc": "gnueabihf", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-armv7-unknown-linux-gnueabihf-freethreaded%2Blto-full.tar.zst", + "sha256": "ef99dc727e810a2ae0629993e5c48c3b58bc13fded9c28ee896b83b71ea14daa", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-powerpc64le-gnu": { + "name": "cpython", + "arch": { + "family": "powerpc64le", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-ppc64le-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", + "sha256": "df2ae00827406e247f1aaaec76ffc7963b909c81075fc9940eee1ea9f753dd16", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-riscv64-gnu": { + "name": "cpython", + "arch": { + "family": "riscv64", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-riscv64-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", + "sha256": "09e347cb5f29e0eafd1eba73105ea9d853184b55fbaf4746cebec217430d6db5", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-s390x-gnu": { + "name": "cpython", + "arch": { + "family": "s390x", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-s390x-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", + "sha256": "f911605eee0eb7845a69acaf8bfb2e1811c76e9a5e3980d97fae93135df4b773", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-x86_64-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "abd60d3a302e9d9c32ec78581fb3a9903079c56ec7a949ce658a7950423f350a", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-x86_64-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", + "sha256": "583c07b86df5084a58a07c8c51b03e63e8547410cee974317f7328f9529cd3c7", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-x86_64_v2-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v2" + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v2-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "ef93e98a7136d402c44596c8a3709148e3de980bb8d3d7d233aef70afc25c099", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-x86_64_v2-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v2" + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v2-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", + "sha256": "c372f4c5074af46c1c07ab320ba33865934c2fd4b16c4c20b9828da1a6de230d", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-x86_64_v3-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v3" + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v3-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "ae09251a238cc9ad35b570df95e5e341e6caed5b7bb18fb4db35bb4bb4bc304c", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-x86_64_v3-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v3" + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v3-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", + "sha256": "e27177b32ba20f394f995f357ed7ff50fbf10e86bf9a0feced03bc7cff4d00c0", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-x86_64_v4-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v4" + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v4-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "230c20b62891cf3bd2bc129b644dcfab44ce6d6983d76a4344d25ee67a789d3e", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-linux-x86_64_v4-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v4" + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v4-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", + "sha256": "c32c33090f73a7eb7adbc9d7005e8638a9c91c1a454addaf1ebb470c074ed61c", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-windows-i686-none": { + "name": "cpython", + "arch": { + "family": "i686", + "variant": null + }, + "os": "windows", + "libc": "none", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-i686-pc-windows-msvc-freethreaded%2Bpgo-full.tar.zst", + "sha256": "0a6aa0bba4a2911b1bfcc845255b919e002029d8a65eda176285fdcc995a58f6", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+freethreaded-windows-x86_64-none": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "windows", + "libc": "none", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-pc-windows-msvc-freethreaded%2Bpgo-full.tar.zst", + "sha256": "da966a17e434094d8f10b719d93c782d82eaf5207f2843cbaa58c3d91a8f0e32", + "variant": "freethreaded" + }, + "cpython-3.14.0b2+debug-linux-aarch64-gnu": { + "name": "cpython", + "arch": { + "family": "aarch64", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-aarch64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "ac87b828aaec264e298a2a30c36dd712a69b88f7f961b82173ab94aee76c63df", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-armv7-gnueabi": { + "name": "cpython", + "arch": { + "family": "armv7", + "variant": null + }, + "os": "linux", + "libc": "gnueabi", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-armv7-unknown-linux-gnueabi-debug-full.tar.zst", + "sha256": "9fade8ee6350af9c8e26281b1b3b25291b4c8365308224c14f2c083a0c69000d", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-armv7-gnueabihf": { + "name": "cpython", + "arch": { + "family": "armv7", + "variant": null + }, + "os": "linux", + "libc": "gnueabihf", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", + "sha256": "99bb72405f181eda7d2fedce7c03de91fc963f940f379009cb5189ab98fae5f6", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-powerpc64le-gnu": { + "name": "cpython", + "arch": { + "family": "powerpc64le", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-ppc64le-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "1217bd75def08059fa38e5e0751b24e538831acc3a2acc527c4b25ba0fba5c1f", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-riscv64-gnu": { + "name": "cpython", + "arch": { + "family": "riscv64", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-riscv64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "f6ee5e186cd47f5eb8f6f57503cf67255f89e3f027dda2a029ccc74dec79ce9e", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-s390x-gnu": { + "name": "cpython", + "arch": { + "family": "s390x", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-s390x-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "9bcde85e8e71fe3a5d6daa40901e3f62afda224c4f5d26126911c13f4dcfd85c", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-x86_64-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "8a431c6ee8e6f40c0640010e4bd0c3c5d96250d0dbba71e160869edeb5bbd66e", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-x86_64-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": null + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64-unknown-linux-musl-debug-full.tar.zst", + "sha256": "06a3d89725c373f3d463658e75b01fe98f475ffee05d035c3518536820a400e8", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-x86_64_v2-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v2" + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "5e990ea07a3869671d60381c4f8c955207e8c8ae6b5e3df28a2455429b65e408", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-x86_64_v2-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v2" + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", + "sha256": "78ec83b100a6edb9b71a4b240be54b13b493df4ab450202bad6323638f77354b", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-x86_64_v3-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v3" + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "348c933483d18baf43daa7780b07c36a22f243c0705240069392a92dba1901c0", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-x86_64_v3-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v3" + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", + "sha256": "1c9eb2cd8603bef9187d66c6bce44a41915ca0315fa281db001f642e27d8ddcf", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-x86_64_v4-gnu": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v4" + }, + "os": "linux", + "libc": "gnu", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "f6353386844720105ec8253caf07af6ec5ad0b027c9a96cba1327031ca2cc412", + "variant": "debug" + }, + "cpython-3.14.0b2+debug-linux-x86_64_v4-musl": { + "name": "cpython", + "arch": { + "family": "x86_64", + "variant": "v4" + }, + "os": "linux", + "libc": "musl", + "major": 3, + "minor": 14, + "patch": 0, + "prerelease": "b2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.14.0b2%2B20250610-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", + "sha256": "fa318a9b9c56a9c19a1bb0c85b91e5b7f40ac8e530e29211321df71f7bd3d1ca", + "variant": "debug" + }, "cpython-3.14.0b1-darwin-aarch64-none": { "name": "cpython", "arch": { @@ -3931,8 +4731,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-aarch64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "15c7d478f3e167840ca1a6e0851c19edafc75786ff954bc7b405e9aaca05a6e9", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-aarch64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "59183bd70b0facb184fc5e7bd18488595d90ac5eb010ac1ee63eea7db4e230a1", "variant": null }, "cpython-3.13.4-darwin-x86_64-none": { @@ -3947,8 +4747,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "e998a79b99d329a3e868b56d69976c8de45a290d0580e6e3325d0422fe158e49", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "b219b93c37ffefe46495feff6d996048706832307de454efa60a09b392f887db", "variant": null }, "cpython-3.13.4-linux-aarch64-gnu": { @@ -3963,8 +4763,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "c1bf8b9a2df80831ebcd52bb5ee17b60306b95a5b1832278f3644758db2c48e6", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "fef6c8c96260eff9258aeb38bbfc90a9d662e683f8fe6946a941c954053bdb71", "variant": null }, "cpython-3.13.4-linux-armv7-gnueabi": { @@ -3979,8 +4779,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", - "sha256": "267e8ce32918a6faf5e7b534f1a6c292b64b451b645bbd9c2d5e9f1ff75722da", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", + "sha256": "8cd822d146401242df2c056f4cff5febc116b7f36ce22dc798c8f3d2a2fd222c", "variant": null }, "cpython-3.13.4-linux-armv7-gnueabihf": { @@ -3995,8 +4795,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", - "sha256": "943defb8d2754f5e18228966ac5a217773a58c437b683fc97a6f80f2264c509e", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", + "sha256": "1ad613b25e5a695eb820ddd430114d6b52c5f4591ad9ef94f909528b7bdcc68f", "variant": null }, "cpython-3.13.4-linux-powerpc64le-gnu": { @@ -4011,8 +4811,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "587709c1a3274678c76696e7cabb9f8b3835ef1de8e3ccf3659067982aea10ea", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "cb02c98ba48d7bd1d70176ed615e8aa026c913f4db6fda5077f42547b0e0bd75", "variant": null }, "cpython-3.13.4-linux-riscv64-gnu": { @@ -4027,8 +4827,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "61b001ea3b5625704aa4114c9f352d9859ff3f1e6100a441874031841f7d7c8b", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "608d17e3bd00af8d3a9c85b7d1938348181471575774ea2d8ee866733a36ca76", "variant": null }, "cpython-3.13.4-linux-s390x-gnu": { @@ -4043,8 +4843,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "fc31c9b40a576cf071c9f2b0e9a2ee47a65f1707218986fba5aac32bbc534de2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "97b632b31628123a65b89543091cf26c48b8f6785baca41f76dcae08e6821e63", "variant": null }, "cpython-3.13.4-linux-x86_64-gnu": { @@ -4059,8 +4859,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "0d5139af9c77c8ea3937b907d9694adb7442be0211df869bee0495004a3cb18d", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "ffd0b484e40e4fffdfcac265560e109456f802485f1f27e3cd314763b2b1587c", "variant": null }, "cpython-3.13.4-linux-x86_64-musl": { @@ -4075,8 +4875,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "00610ee98af5e600f1be1b636223375801e944461858d8b4a5015da6005cdeba", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "8d60e688b5dc3b5a2676fde68546316af10cbd31b0632867b385dbbd7353c3bf", "variant": null }, "cpython-3.13.4-linux-x86_64_v2-gnu": { @@ -4091,8 +4891,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "801743f9858f2f37a0eed966e54538280dffc1f2ad98b9f78e875bba371fffe2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "de338569a53d35b75503c52c4e74a91d246475eebb33681be665880bfd61ce3d", "variant": null }, "cpython-3.13.4-linux-x86_64_v2-musl": { @@ -4107,8 +4907,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "9e265c02b9b17483ace13f6214fdd45bf5a74e0dbd88ac0a75c1a83d30a4843e", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "26491581911355ac39fa8322f0a55e56a225be80a913786c3c30ad076445a083", "variant": null }, "cpython-3.13.4-linux-x86_64_v3-gnu": { @@ -4123,8 +4923,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "b9c2a51abffd8c61414a1078c85492b96dda78aa6a89b08533b2cdc7b7420eca", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "0a6eaa2778f6b2bedd6e3c3d763c2f379f0ea99f87ae2fbf01483ab9b2e17925", "variant": null }, "cpython-3.13.4-linux-x86_64_v3-musl": { @@ -4139,8 +4939,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "d75a9d288725440d03bc6a896efc18b7d51145ae5506a0119aae92088f523592", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "df24b661532df4d6c3c0de66a7f25d317d494a658f95d0aa1c6755dc4e536f49", "variant": null }, "cpython-3.13.4-linux-x86_64_v4-gnu": { @@ -4155,8 +4955,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "e4e5a56dbbd4407445ba68fcafb3344ce1ee73dd4cd1eb0d44af1f173742f902", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "7fb2e42a9922cee1533ceba19590a779970333f068b519bb94df33e8be7917ad", "variant": null }, "cpython-3.13.4-linux-x86_64_v4-musl": { @@ -4171,8 +4971,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "9e29e5bceb4ead44b25e234440629891967472cea89709df5d00d0832757e852", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "01b7b4ec668da9ea13f1b2583b357c7cd709ac124b45e29b76fd0a8e54c4984f", "variant": null }, "cpython-3.13.4-windows-i686-none": { @@ -4187,8 +4987,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-i686-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "d7438d8646c60cb25a986138ee2d6e515096ea570e651aed665e314b457c284e", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-i686-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "d5100077b9753db01714e2ff1e95c628df023bb2da35adc9b9116eb56e45f27f", "variant": null }, "cpython-3.13.4-windows-x86_64-none": { @@ -4203,8 +5003,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "24af2e541783037f81a247c9adabf0ab56d5766009bb94e4559d409cbcab9b56", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "1e6348c237d4665c5327683030594b4f93405ae19ad7dabfb1951d12bb266944", "variant": null }, "cpython-3.13.4+freethreaded-darwin-aarch64-none": { @@ -4219,8 +5019,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-aarch64-apple-darwin-freethreaded%2Bpgo%2Blto-full.tar.zst", - "sha256": "9a0a8de4b015f8fd355fda4fb5ae8ed708af5ae801b7565cfbf909d75da82cfd", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-aarch64-apple-darwin-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "278dccade56b4bbeecb9a613b77012cf5c1433a5e9b8ef99230d5e61f31d9e02", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-darwin-x86_64-none": { @@ -4235,8 +5035,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-apple-darwin-freethreaded%2Bpgo%2Blto-full.tar.zst", - "sha256": "db4198487680cfd9ad2fa1171771b949a22232ad34fd61b3604a25826995b9d8", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-apple-darwin-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "64ab7ac8c88002d9ba20a92f72945bfa350268e944a7922500af75d20330574d", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-aarch64-gnu": { @@ -4251,8 +5051,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-aarch64-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", - "sha256": "db29f03366bbc2db6ecfbb06cbb9b97546fe5b2907ee7b7a7d32462d52fc05a1", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-aarch64-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", + "sha256": "b1c1bd6ab9ef95b464d92a6a911cef1a8d9f0b0f6a192f694ef18ed15d882edf", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-armv7-gnueabi": { @@ -4267,8 +5067,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-armv7-unknown-linux-gnueabi-freethreaded%2Blto-full.tar.zst", - "sha256": "069d929fc9fadbada263d68bc891230d22c55126c66eb1092d81cce28fc4c325", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-armv7-unknown-linux-gnueabi-freethreaded%2Blto-full.tar.zst", + "sha256": "5eeaf5b2cd44b51647ae66b1b75fb078d39b890f9f73752ea3eec50b5901bbff", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-armv7-gnueabihf": { @@ -4283,8 +5083,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-armv7-unknown-linux-gnueabihf-freethreaded%2Blto-full.tar.zst", - "sha256": "13bff9e59896b433a3729c4c48c4e00e02876077f350bd149e4c2d1823565784", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-armv7-unknown-linux-gnueabihf-freethreaded%2Blto-full.tar.zst", + "sha256": "1bfcd7636c9a5d66b3fc72e4ecdddaac92a305a3239edc526bfbe4f83bdd16ca", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-powerpc64le-gnu": { @@ -4299,8 +5099,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-ppc64le-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", - "sha256": "a7f9fd66185ead073ad8f75d811d82492e9e920c59af73eb53ddcdea03a50be9", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-ppc64le-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", + "sha256": "ed66ae213a62b286b9b7338b816ccd2815f5248b7a28a185dc8159fe004149ae", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-riscv64-gnu": { @@ -4315,8 +5115,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-riscv64-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", - "sha256": "ceb9be68c4a7533661af21fd571fdd2bb98f97ea3fe3a367a28444c19ad8022b", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-riscv64-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", + "sha256": "913264545215236660e4178bc3e5b57a20a444a8deb5c11680c95afc960b4016", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-s390x-gnu": { @@ -4331,8 +5131,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-s390x-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", - "sha256": "0a2c2a8135c3bc6b99c986c68362e41957412a1b15158cacc764b94c40160908", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-s390x-unknown-linux-gnu-freethreaded%2Blto-full.tar.zst", + "sha256": "7556a38ab5e507c1ec22bc38f9859982bc956cab7f4de05a2faac114feb306db", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-x86_64-gnu": { @@ -4347,8 +5147,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", - "sha256": "7371e135046d22d1943259e01a93813f314de781661665a2a9ce7735740a1004", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "864df6e6819e8f8e855ce30f34410fdc5867d0616e904daeb9a40e5806e970d7", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-x86_64-musl": { @@ -4363,8 +5163,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", - "sha256": "49bea5e8ec13902adb25c47f4d5892df66099f715f3553f246e615b63f74a730", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", + "sha256": "1001cce26923d89fa72a52ad3bbda5cfaee7bff11291d921dec4151846ef0c3c", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-x86_64_v2-gnu": { @@ -4379,8 +5179,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v2-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", - "sha256": "8dadecc39553224923481b1242dcc7399b5682a4918708367c82c2c5daf22ac0", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v2-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "50f1fcf56521d5751272071b698594960616f7be3ccffee5c071aa0115d6791a", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-x86_64_v2-musl": { @@ -4395,8 +5195,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v2-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", - "sha256": "e7af1e644b032a26d0009ebc5ff0cd4c81b5f42b49fff8466cfec33aaf4541f6", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v2-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", + "sha256": "976dc818dcc468c760fbd6fb2553318a49eec6aad8dcc4c4b1a44b0be3359783", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-x86_64_v3-gnu": { @@ -4411,8 +5211,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v3-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", - "sha256": "44c05857659f014c2cb102d7fa6bbdf9694e5d452ec59ec73b178857d3c5a4fe", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v3-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "1525c19758e4b08ca03fc6650815107561e396c8905cfb3bbc9adccdbe5a5af5", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-x86_64_v3-musl": { @@ -4427,8 +5227,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v3-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", - "sha256": "b01c288164de9b90b051f4234211391292ba17b29fb37814306e5ad973c92285", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v3-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", + "sha256": "7965bd6354f2db624e904b9f58bb27883f2e6ad7ecb65612c328462fb65d6ce0", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-x86_64_v4-gnu": { @@ -4443,8 +5243,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v4-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", - "sha256": "8b4481389875b69c3b7666926a7fd92ba31d05e6ba16350dce48c48f19f12618", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v4-unknown-linux-gnu-freethreaded%2Bpgo%2Blto-full.tar.zst", + "sha256": "9244c970b5eba41b2ef20eb1f6ffb992d2cf9a2a2e0611d62c2ec5070047577b", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-linux-x86_64_v4-musl": { @@ -4459,8 +5259,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v4-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", - "sha256": "abc49f5df6d8f5d7661094f4db59a703eb561a618cba906eb78c5f420fdb4151", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v4-unknown-linux-musl-freethreaded%2Blto-full.tar.zst", + "sha256": "720ed989b925c5be3919dcb8738addcd1ce68444d5e081b041229d88ed743e19", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-windows-i686-none": { @@ -4475,8 +5275,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-i686-pc-windows-msvc-freethreaded%2Bpgo-full.tar.zst", - "sha256": "5b80318e2e4911f7f8dcfd2f0fe3bfa65c2810199ba9c57d281330c6a86c50f8", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-i686-pc-windows-msvc-freethreaded%2Bpgo-full.tar.zst", + "sha256": "595786a6613306b74118c56e29ab430ed0eb08d82c4103b7778e827c5e43f8cf", "variant": "freethreaded" }, "cpython-3.13.4+freethreaded-windows-x86_64-none": { @@ -4491,8 +5291,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-pc-windows-msvc-freethreaded%2Bpgo-full.tar.zst", - "sha256": "597b9eaa75914a21819ef8a7c8aec0fbe34a6e6e393a7c40c5d7f53633172d41", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-pc-windows-msvc-freethreaded%2Bpgo-full.tar.zst", + "sha256": "9457504547edb2e0156bf76b53c7e4941c7f61c0eff9fd5f4d816d3df51c58e3", "variant": "freethreaded" }, "cpython-3.13.4+debug-linux-aarch64-gnu": { @@ -4507,8 +5307,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-aarch64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "3c2701522cc05954999f3effb4e0aa6b18e2346c89692ff2b7a812196eb43088", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-aarch64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "979fae2f42587a9b91dc4628786798c61410e24c26209d3666dde94531137f1f", "variant": "debug" }, "cpython-3.13.4+debug-linux-armv7-gnueabi": { @@ -4523,8 +5323,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-armv7-unknown-linux-gnueabi-debug-full.tar.zst", - "sha256": "0a4ad399350ccc8faf2557db5b8ab58ed4c9a40a427603e74d9eb277b4d9f7ab", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-armv7-unknown-linux-gnueabi-debug-full.tar.zst", + "sha256": "e7ef86f07ce18805efdf9b21a7e7b9d9c06e44157991aaa72f71cdecb53183e4", "variant": "debug" }, "cpython-3.13.4+debug-linux-armv7-gnueabihf": { @@ -4539,8 +5339,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", - "sha256": "82d81489a9ffc48d64e4594c3fc191c41cb68113cc02bf8bc962abac970c7dc1", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", + "sha256": "e40b3fdfab879973e45363f159856a8c81570b16505f8862d17dc2d6749d4515", "variant": "debug" }, "cpython-3.13.4+debug-linux-powerpc64le-gnu": { @@ -4555,8 +5355,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-ppc64le-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "458c5c5ce1395602d06ea7c4c4e83e6fb7d10636076d42f8700f1de4ed442ad7", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-ppc64le-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "2c4b8c4a451466770fa81e23647109b8c0446a56f056db955fc0fe8e3bb9dfc0", "variant": "debug" }, "cpython-3.13.4+debug-linux-riscv64-gnu": { @@ -4571,8 +5371,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-riscv64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "df654d622c6d8dea5b52fc2162528c24c9d002aa31573d67497c8df10b052c83", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-riscv64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "e40baeae33d0cab3437d2c39c8dbef959b62c289a2c2a17426cf4e6a1f11629f", "variant": "debug" }, "cpython-3.13.4+debug-linux-s390x-gnu": { @@ -4587,8 +5387,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-s390x-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "f9d0fa69cb1ff2f7d6807e86c34244661d0997b75269e3d789a53252a8ce9722", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-s390x-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "e2a403cf6a923253a3b330c6ed827f12832bf087964aece3c71cee61cf4f4570", "variant": "debug" }, "cpython-3.13.4+debug-linux-x86_64-gnu": { @@ -4603,8 +5403,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "a249d97f487f7cd0ea6ac7be4c26ac9fdcb9ac40fea6870718dce78342481b39", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "d5c95731b75dd789b137ad30dd71904b89781735142fc31c9f72949c46a57ffe", "variant": "debug" }, "cpython-3.13.4+debug-linux-x86_64-musl": { @@ -4619,8 +5419,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64-unknown-linux-musl-debug-full.tar.zst", - "sha256": "21c622ff3ec6f59a325e22bc7a11543d44fe180852fc37f97188d0e4d7c1eaaf", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64-unknown-linux-musl-debug-full.tar.zst", + "sha256": "3d8f42bfe6033e16c60e06151d27dece67974560c392f13f0598d4641bb0470b", "variant": "debug" }, "cpython-3.13.4+debug-linux-x86_64_v2-gnu": { @@ -4635,8 +5435,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "4861ab2725c68b3c7112e774cd747580483310ffdeed757be1d9d0a5018d83a2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "84a6287669650bbd09cf4b86e01075f8ad38cda2c8580e0c8c568074f452feb5", "variant": "debug" }, "cpython-3.13.4+debug-linux-x86_64_v2-musl": { @@ -4651,8 +5451,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", - "sha256": "3c5935e84cabfeccca2383e4bf1729bb805a00bc72f16dc1b4c52d264e126ebb", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", + "sha256": "99b1306dad6d0be44d8fd0ba556473b385259030cf0c27349342f072f2822890", "variant": "debug" }, "cpython-3.13.4+debug-linux-x86_64_v3-gnu": { @@ -4667,8 +5467,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "f21207cc19f78f23ed9b5d7d0371df5a306427122978953ab6945aa79694dd24", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "44f62c784f32b456a5719ad11ed8ba8a97890f8e9dc9c9764f178c64ad30a6ba", "variant": "debug" }, "cpython-3.13.4+debug-linux-x86_64_v3-musl": { @@ -4683,8 +5483,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", - "sha256": "1cdc33eefa6b4efe1bfffae5f6c583813fe27c2f6600fbd6b966e68690da32c0", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", + "sha256": "a9a87fb2789b6dfbcd7d1a79c846d208f0c0a7969759ad84742786c24da78047", "variant": "debug" }, "cpython-3.13.4+debug-linux-x86_64_v4-gnu": { @@ -4699,8 +5499,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "67da23f1c517573013742828920cf982aad3c14e3fe3166022b9506d164eeb8d", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "377c8b6d6da681959abd464fac093564b55fe63231fe27b6327d18bbbe13f843", "variant": "debug" }, "cpython-3.13.4+debug-linux-x86_64_v4-musl": { @@ -4715,8 +5515,8 @@ "minor": 13, "patch": 4, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.13.4%2B20250604-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", - "sha256": "c39cc0375ea2bb44d79d4b4cf6fe7bd0d337712b930431aaf16d3b07d4288e3a", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.13.4%2B20250610-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", + "sha256": "f00a51117fabcfac19b9db628db64c8afe549d19c4a5b5c78bf9848f79536d15", "variant": "debug" }, "cpython-3.13.3-darwin-aarch64-none": { @@ -8139,8 +8939,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-aarch64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "f831e8feacdb0408b965133caa6178ad296eceb61ec8aafafe6bb4f387ff426f", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-aarch64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "15b3f6023ba426afc9dd4a0aad2449919804eac0f2b4531bf5965d1a3655c6f8", "variant": null }, "cpython-3.12.11-darwin-x86_64-none": { @@ -8155,8 +8955,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "7ed52279e20414555a8b36ed1c3aa60d73396a618a88a93123b52720d890db62", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "9f8c405ec638eac5637c0505467921413803a25904a29dc1b298d9cd3b885e27", "variant": null }, "cpython-3.12.11-linux-aarch64-gnu": { @@ -8171,8 +8971,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "674473a70be6b6bfc028fc1dfc3d08cad63c09409e1e7ad6927fa23d388a201a", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "37eb67261f2b2b3af7883b79142bbae9e7676194080b780a25ee06901dff8442", "variant": null }, "cpython-3.12.11-linux-armv7-gnueabi": { @@ -8187,8 +8987,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", - "sha256": "8a6e054cbdf4e0b05adbfca778db6aee8efc7ba64b055edfc77ca973a3611132", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", + "sha256": "5ee56cf8a53b9a5e9d0a72287fe5f2b045fec7843efa4d0acacedc11b718f485", "variant": null }, "cpython-3.12.11-linux-armv7-gnueabihf": { @@ -8203,8 +9003,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", - "sha256": "20f34f97b29adda58f875e8c08bf57ea8b4a4c844482d6f77c36917e2c505703", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", + "sha256": "ba20ec81abed272f9ecc46aadea1e4312a1eecd6dbc6c9d7d59fbb79a28c611a", "variant": null }, "cpython-3.12.11-linux-powerpc64le-gnu": { @@ -8219,8 +9019,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "22ad4c6b518ce9ca3090ea90ac0b356456136fd9c3f37558b315d1d8554d6bb6", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "8458057a81e87230f1694dbf846b4e8e79483d31d3cf6be6a243b3e3140a67dc", "variant": null }, "cpython-3.12.11-linux-riscv64-gnu": { @@ -8235,8 +9035,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "56ec06974667a36ae536bcd51caa42b7121e210734582753eb03002777841a47", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "d84af40dea87fed07ea6cce8f239d438dbf2af1fb6cd303ecb074d83017135ce", "variant": null }, "cpython-3.12.11-linux-s390x-gnu": { @@ -8251,8 +9051,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "8c8cf7fa680a01a1e75b0878cc8c5785d7c074c0750bd714bdc38feb60b538fb", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "dedd7ad301e08bf37973b60ec41be7c900d3d4020c33f3ce72a144fe6ef3a2dd", "variant": null }, "cpython-3.12.11-linux-x86_64-gnu": { @@ -8267,8 +9067,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "71bd7685d6ae26dfad23ddaa9712dc4713db608a273c2e50974ad0c3748de691", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "20e9721d8b453191ba5688108eb609bd7ef4451d3c4c080682bc3fa25f306a15", "variant": null }, "cpython-3.12.11-linux-x86_64-musl": { @@ -8283,8 +9083,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "530f33db3dbadcf9abb37fa92dee7f9419a8e4ca50a2606ac4afddeb5548f262", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "67dfa6abc781e3803f8c5d874fb42f6283bce34e6c719806b47d069244998baf", "variant": null }, "cpython-3.12.11-linux-x86_64_v2-gnu": { @@ -8299,8 +9099,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "96287411eec81af2ef5451ffcb3ba60f50438b8a27ccc6a4a881c9cb638c8e34", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "d15250881450fa40826fe472ad869eee60b9b4952bb495d1be545358993df325", "variant": null }, "cpython-3.12.11-linux-x86_64_v2-musl": { @@ -8315,8 +9115,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "32a14e868e3f399142e79a0918d2b7ab08644386ca92b3b0f869f10f8fa1f047", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "6fae931db14d90b782f1c94ee0ad3b6d805499b1fe103328290533dbc3cec6ca", "variant": null }, "cpython-3.12.11-linux-x86_64_v3-gnu": { @@ -8331,8 +9131,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "5a979167dc53a7dc0ff3c79b22315c62c372c5a126fed547927295e09de2c155", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "8537d23781cef99981fd305a69b493a46c8bc212ec039d23be4b1f5a5e7b95f6", "variant": null }, "cpython-3.12.11-linux-x86_64_v3-musl": { @@ -8347,8 +9147,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "d055778461a386c16015677ee87f14b0098ea581b81ef8c92a4d869b965485bb", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "c264e43686371d7b36d3b6cea757f871c773f01c00b6e0626f538053aaa37619", "variant": null }, "cpython-3.12.11-linux-x86_64_v4-gnu": { @@ -8363,8 +9163,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "72c5cd81fc0e87684b0e246c607277499d1a7f79070982af6fb73c9cc90fabfe", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "040ec55c589725bfab7839809311a15c545bc751d6378074ebf1aa7b239a8f75", "variant": null }, "cpython-3.12.11-linux-x86_64_v4-musl": { @@ -8379,8 +9179,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "09e15984cbe2baf3af28f8b5b8771f882208e79af992440cc5b4ec37b2f284fc", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "267746f007fdf4761f28ffc849985c5b86ee235759022e9da828ffbb24a968d6", "variant": null }, "cpython-3.12.11-windows-i686-none": { @@ -8395,8 +9195,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-i686-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "17ffab420b0206ba231dd69213d565b6665d5ce33678c386b26151b14c019172", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-i686-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "0081b2862a0dcd07b911d6fc2aec55fa93bf018e3ec64be4b35e013735b82d09", "variant": null }, "cpython-3.12.11-windows-x86_64-none": { @@ -8411,8 +9211,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "bf30bd98e67db0768b4c7b5b47a2b1a40fa9b3994dd245823d2125ba0a6ff139", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "7d969563a3f864588b0e4d188df9c7369a7e11f026fedb277cd1d9776a372355", "variant": null }, "cpython-3.12.11+debug-linux-aarch64-gnu": { @@ -8427,8 +9227,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-aarch64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "b07fe786e9d2981a4483260a46036d3c1f5dc0fe8ce8acd9145b7b9a6c9e2bbb", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-aarch64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "bc6760b9c938743ffa5795b6ac9f97da5fa2709827e6effaa66afd89b93b908a", "variant": "debug" }, "cpython-3.12.11+debug-linux-armv7-gnueabi": { @@ -8443,8 +9243,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-armv7-unknown-linux-gnueabi-debug-full.tar.zst", - "sha256": "666f1e260f855f91c3b015fe7face71de3b662c71ea6b1bb585fd3f6ce2353b7", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-armv7-unknown-linux-gnueabi-debug-full.tar.zst", + "sha256": "300ec7616c8a98c077502bda5b34e3da620fc764990b2f21f5a3f66174b7bbfa", "variant": "debug" }, "cpython-3.12.11+debug-linux-armv7-gnueabihf": { @@ -8459,8 +9259,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", - "sha256": "d8696f03ecce2c807d86ccee6ef2f805177bc26968a81e60818963ef031fef5b", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", + "sha256": "c8d3fbebf582659c1b5b3ed13f643354520950b497b1335b39cb6c6f5ed41652", "variant": "debug" }, "cpython-3.12.11+debug-linux-powerpc64le-gnu": { @@ -8475,8 +9275,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-ppc64le-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "e4acf1dc0e7a4bfc4fcaa43f967f6a3a60a3d67cddb47a0b2e659abc0e642ff3", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-ppc64le-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "59d00d439308c297fa29cb7c82d6d80da8bfb9174c8356565f11c329b3f820ef", "variant": "debug" }, "cpython-3.12.11+debug-linux-riscv64-gnu": { @@ -8491,8 +9291,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-riscv64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "0b1791dd8020700ee8d0eae88e6f80ff38d847ed6b2eaefcd3cddff961f9cbea", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-riscv64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "c72f3aeeb1ecf21f20b7bbf852a80f024f01508ca0cc693ca045a06238bb1e50", "variant": "debug" }, "cpython-3.12.11+debug-linux-s390x-gnu": { @@ -8507,8 +9307,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-s390x-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "6b6028d9e3c3c2aab90bdf9f2abbe82557d318fdefc2fb778443d5264cae1827", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-s390x-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "9dd357efc9199a40082347a25698fc4b3b986f1491201d56a701b9d23f5b4e89", "variant": "debug" }, "cpython-3.12.11+debug-linux-x86_64-gnu": { @@ -8523,8 +9323,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "6cbe784b1a36f64803f402571d2c62f090347c5881494dcc3d1239371087a407", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "cea96347b245f346f0fb6601e7228dcfca62de1fad872efb8f3c787df3d3cfbe", "variant": "debug" }, "cpython-3.12.11+debug-linux-x86_64-musl": { @@ -8539,8 +9339,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64-unknown-linux-musl-debug-full.tar.zst", - "sha256": "8ef7025bdb758870b585ae1bd6ac965c305f9a3b318abeb18cfb8bf0c961c379", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64-unknown-linux-musl-debug-full.tar.zst", + "sha256": "f99833038ec1e93dc10d120ae9805b48fb5a307de08850c38a3af1821ad5143e", "variant": "debug" }, "cpython-3.12.11+debug-linux-x86_64_v2-gnu": { @@ -8555,8 +9355,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "1343355cc1c63c7aec18ac0bec9b5f1679420f6c25760a10ba3b98a7b0ea5dc7", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "6cc0e886c5536a36b1715076f766e54462302ba7714103a72fdbf91663b38630", "variant": "debug" }, "cpython-3.12.11+debug-linux-x86_64_v2-musl": { @@ -8571,8 +9371,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", - "sha256": "d84921fe6a4741f8e3b4b7de2cd2614424590efd13f962126950df6b92b45206", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", + "sha256": "8e4315f364ad654103ecd52e18245ca4c54d30c77723dbdb2d0ec2fc9733a4dd", "variant": "debug" }, "cpython-3.12.11+debug-linux-x86_64_v3-gnu": { @@ -8587,8 +9387,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "23777945727900b33c8b170be712a25a1ba58e7cd26d80350389cbd4e88f3790", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "e614b109555319a0cca706ed0e9f56d7eb119b31031dca77a2c35adaaa496a4b", "variant": "debug" }, "cpython-3.12.11+debug-linux-x86_64_v3-musl": { @@ -8603,8 +9403,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", - "sha256": "08194562c32c20ecec9f6bf49ce2c381859ec34d15e29f90cfc0d19ec2ea56dc", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", + "sha256": "2c142d3834cb092c3bbd456f7ea0171dd538327cb400c0154192611ee5768ff9", "variant": "debug" }, "cpython-3.12.11+debug-linux-x86_64_v4-gnu": { @@ -8619,8 +9419,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "de0b34205aabc4290cb1f7a34fa333ae595240cc77204ebf282eef7ea92d2884", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "0c95b54e15bd5eccef928f0a9d413f7e8de56fc962eb86142720f4248fe3b379", "variant": "debug" }, "cpython-3.12.11+debug-linux-x86_64_v4-musl": { @@ -8635,8 +9435,8 @@ "minor": 12, "patch": 11, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.12.11%2B20250604-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", - "sha256": "84a0711643229dfeb7b2b2653e6b2a7f4fefbade95dc1a4d2fbabbbcb98a360a", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.12.11%2B20250610-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", + "sha256": "018fb37c17baac1f97c459adb6662381c3e306d028e645472c4e9c7aaef6781a", "variant": "debug" }, "cpython-3.12.10-darwin-aarch64-none": { @@ -12683,8 +13483,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-aarch64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "fce3646da8834e86fcd95fac3be69580cdd112fc44fd4c1bf0ac36a3cbc41458", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-aarch64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "ad32be73d2fdf44d0d990ce05826a161630db9117fb9f69f138c4a6c2de04b38", "variant": null }, "cpython-3.11.13-darwin-x86_64-none": { @@ -12699,8 +13499,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "3a533f872d2174f18b61be70830b7b8dc6089d139afcc9c1f3f4e2f537f1564e", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "a7a9fcaf7395093b2cd2babeadc31cb5fd7ee3841c83caa593cc2c06fa67f7cb", "variant": null }, "cpython-3.11.13-linux-aarch64-gnu": { @@ -12715,8 +13515,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "ea6c5736f5b9d17cd641227c1cf35fa7fdb8f4fe9159d24e187ffbb06a466687", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "cf29495316ccf8e99cf89677825fdd8e321f16b45dbf851669ae0d5972a7fed1", "variant": null }, "cpython-3.11.13-linux-armv7-gnueabi": { @@ -12731,8 +13531,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", - "sha256": "976c6a8af0191d4b22cd02542a6d688de0b15c6b43cfe7dee64709f30d4d4bbe", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", + "sha256": "b539237d556212cf7efb7e90ccfe53e86ea006eb0a71cfbb65aafa28f7f5d36c", "variant": null }, "cpython-3.11.13-linux-armv7-gnueabihf": { @@ -12747,8 +13547,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", - "sha256": "ec2459c24a2a7a67719a5a047926f58502bcfbc85ec8419d34a5cbc3293af2fa", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", + "sha256": "81d4717bda98e066198715748f8f766316342b89febeb7628626d145b632c757", "variant": null }, "cpython-3.11.13-linux-powerpc64le-gnu": { @@ -12763,8 +13563,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "9c1c449addd769132edce268d2bfb149a60e6f90799e79f613a813ea0ccd8e07", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "fd4c2f95f664863efa1e61c1dcf688c55c54074f568c3b1683044801d94a4955", "variant": null }, "cpython-3.11.13-linux-riscv64-gnu": { @@ -12779,8 +13579,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "87e8a7e86cced245eb78cfb38488e8d75750d62215db3747edd480cf1e70cddc", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "c07ef624bc0ce18553fe5b9196f182460d02a90ea1d26dbae9aab08301f4d985", "variant": null }, "cpython-3.11.13-linux-s390x-gnu": { @@ -12795,8 +13595,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "157c02a85c22a9ef2a046b25cbfb5273690d9ee1e054f3b723c5d7bd7ec90e7f", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "4452a6959cd5a0dc4aa4e1645a9891018d3d5e8852397a589e753f065ddc8ba2", "variant": null }, "cpython-3.11.13-linux-x86_64-gnu": { @@ -12811,8 +13611,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "ad27e3dbaa0d4688dc74bee1f69b5e2303988960c0ee356d431ae528de2e1f8f", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "4367a790f6bde7b3b464d15155ad81009d7054ec1d85a006bf3c7218c6d1ca3c", "variant": null }, "cpython-3.11.13-linux-x86_64-musl": { @@ -12827,8 +13627,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "d3be62d5e151365e3a8fa34b3bd8f572d8211d3952a9c7d4f668d819c6a70ad5", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "408bc76e6278589c61463d2cb34a67ac331b9e989dd8c37e3e7f4c736e8443fb", "variant": null }, "cpython-3.11.13-linux-x86_64_v2-gnu": { @@ -12843,8 +13643,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "0766b4c138e1e2074fe16e4268e276e7285e82c08c8fd0d5120ba8879cc28508", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "be84895f151731cdf5b2e221069f8f3388bff83ffd8d37a2892675099b26747c", "variant": null }, "cpython-3.11.13-linux-x86_64_v2-musl": { @@ -12859,8 +13659,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "f97e8f79f0587339332de7a479ad82a62f15b45a67320d7614f13edc7bed6717", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "d27659768c8e72589d9397ef48170d5ecc37debb2733646771d1cb4ff1f97602", "variant": null }, "cpython-3.11.13-linux-x86_64_v3-gnu": { @@ -12875,8 +13675,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "f7e55efcad83bb11d5d02dbebd9bbd65cd067f2fe1014ad94b4af26f45685ba2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "6642e0fde81a58b77a05f3ab122538d9d0b58f44fab63bf7737be637f52a2e20", "variant": null }, "cpython-3.11.13-linux-x86_64_v3-musl": { @@ -12891,8 +13691,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "0e98a32c550e6096076be2fc3586ed351bdfbdca21a12e5ea91f89354bd4b6fa", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "7e355e8573ccfd47da83a5a44e4810eb84e2218974033f4b9383081acaf130b1", "variant": null }, "cpython-3.11.13-linux-x86_64_v4-gnu": { @@ -12907,8 +13707,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "e6a9453c0a0edb0c47dc1337e38c0693e2c7aaaa2ee791618c7e36518cdb51f2", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "05895fdd12abb42bbaa69c10bb078d1273c35a017392bd580c549226f1362097", "variant": null }, "cpython-3.11.13-linux-x86_64_v4-musl": { @@ -12923,8 +13723,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "801106590f7e967d69652df0cccc9ac121de38e1a2c1b3e852025afc2652da9f", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "958968d49328cd9dfa2317a25062897b4b8f2f31dcdc869578a069fd753e6008", "variant": null }, "cpython-3.11.13-windows-i686-none": { @@ -12939,8 +13739,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-i686-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "46f69f5b9b2dd9a38f23e3f76e7b6ff342d7bef63695212895cbcbc8f2926004", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-i686-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "61257cfb333102cdef13facc8b8d5e021d7ad87b85ff43f8184601738faec15c", "variant": null }, "cpython-3.11.13-windows-x86_64-none": { @@ -12955,8 +13755,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "16b88d316b3baac72b882893e982fb8f39edf5317fdfdf7c96f68cb023ba4852", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "de5dd979fc8db8069eeac2037ccb3a9b46534fe951b58011851b4124e5c4e210", "variant": null }, "cpython-3.11.13+debug-linux-aarch64-gnu": { @@ -12971,8 +13771,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-aarch64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "6da8e87f12619df44b45cb87fe7a7c7d07df3bf9e73491bebc6eadfb936427bb", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-aarch64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "553b76bad7302d3b546f09ced9d43ff1ad9ecb2126c9036ffd3e0ddd32bfadb8", "variant": "debug" }, "cpython-3.11.13+debug-linux-armv7-gnueabi": { @@ -12987,8 +13787,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-armv7-unknown-linux-gnueabi-debug-full.tar.zst", - "sha256": "acc0ca10f4761815dd0bc44687f4351cacb8c7926831f862d1924488bfe91153", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-armv7-unknown-linux-gnueabi-debug-full.tar.zst", + "sha256": "04563bab06fb6e17f136a2cb976749460c31a0d10c0746ad18dee9b7f7c71e37", "variant": "debug" }, "cpython-3.11.13+debug-linux-armv7-gnueabihf": { @@ -13003,8 +13803,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", - "sha256": "9c5a72f6f0d0d7571c9984a8f4d1019bb73ace6bf09ec738af0157244036e69f", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", + "sha256": "5d5275f16cb666d39b77cb3516aeb75b84337c05c7e2604cfac2f3dc2244229e", "variant": "debug" }, "cpython-3.11.13+debug-linux-powerpc64le-gnu": { @@ -13019,8 +13819,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-ppc64le-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "ea0255b8947c6134ee665c848cd62255a383109a371436d67ba5cf670fa3f59c", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-ppc64le-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "78cc16b11243a3ff9bf1d8316640c7d8c7ed1a5fda7106204a0fe0cbfe7c21fc", "variant": "debug" }, "cpython-3.11.13+debug-linux-riscv64-gnu": { @@ -13035,8 +13835,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-riscv64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "9be52a460b84f191019b7942f2370fa0616c052b513c026d4de0bbb35a123deb", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-riscv64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "7114aff9c9654306da84fcdbf2f091391ec37e164f25c8fff427a0b8a4ee3eb8", "variant": "debug" }, "cpython-3.11.13+debug-linux-s390x-gnu": { @@ -13051,8 +13851,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-s390x-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "75c1cf70165750624688beb272a6dfa6a6778f9a81930b161fec27f4ee8e6b24", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-s390x-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "7fde4ac188e45b5462ac82282e6e0b5d2c7b1a5c2e45d409a4683c49bc05135e", "variant": "debug" }, "cpython-3.11.13+debug-linux-x86_64-gnu": { @@ -13067,8 +13867,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "2aa5804e64b06091b3a72405abde53517188c5f77e8d5e98a5e405e313284eb7", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "49594220ac1b60e170693572376d176904a8d9db2bcf75f513d934aa881c04e5", "variant": "debug" }, "cpython-3.11.13+debug-linux-x86_64-musl": { @@ -13083,8 +13883,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64-unknown-linux-musl-debug-full.tar.zst", - "sha256": "f18b22d6933d4334910736932bd1f232178841b2a467dd87d41c008f8e8cb99b", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64-unknown-linux-musl-debug-full.tar.zst", + "sha256": "afae0916c8266987e94ac3c0010a2970b659b6fb4ce9c762db30aaf5d125f780", "variant": "debug" }, "cpython-3.11.13+debug-linux-x86_64_v2-gnu": { @@ -13099,8 +13899,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "25126df2224ee12f449acfd706e0f393e4eaa3880d911d23afdb177d44786b53", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "f13aa93fbb814a4f206d79325c1304f5b2c8f0e97e1233e64c43a11685c15f73", "variant": "debug" }, "cpython-3.11.13+debug-linux-x86_64_v2-musl": { @@ -13115,8 +13915,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", - "sha256": "2e816d1b44580b77c0534777215b2fce32b06b3081a1cacd10400e1e630c65e8", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", + "sha256": "3bbf3ce8b347ca78c57181899f9b44c37bfa453afb1bdac167a5636dcfe3ef56", "variant": "debug" }, "cpython-3.11.13+debug-linux-x86_64_v3-gnu": { @@ -13131,8 +13931,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "e62fe17549793fc2a2ba32ef6d81ec39e17fd15a3e92eb7a7b9ce9369c447f77", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "96b8e97849c9f120480aaf9111c3226328db162fd385749fd628bd56245ef6b3", "variant": "debug" }, "cpython-3.11.13+debug-linux-x86_64_v3-musl": { @@ -13147,8 +13947,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", - "sha256": "0475503da3655ec9459a0bac836021d7c88b2c63ce23c88f5a4a56b432c227c1", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", + "sha256": "cd90f5f87b4b5a9f5abf6027f094a544e8ffc36a5052682ba7e03a268d3da7e8", "variant": "debug" }, "cpython-3.11.13+debug-linux-x86_64_v4-gnu": { @@ -13163,8 +13963,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "10a25150981aa6eb1a8e1421f93acccb9250a455d310d89ba8bcf7818d43a319", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "ff6c586db7153a71c09c9aa66b8f0cea1a32cec41f64df2b84ace2a054c10f15", "variant": "debug" }, "cpython-3.11.13+debug-linux-x86_64_v4-musl": { @@ -13179,8 +13979,8 @@ "minor": 11, "patch": 13, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.11.13%2B20250604-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", - "sha256": "06352d73517471e7a60a5bf7bb7d165564cd98c4d85dc84058b646da6a61b007", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.11.13%2B20250610-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", + "sha256": "635cda870c114c2a01f4efe2c9476c89d82615a5666636df3d3c3f74e12beccd", "variant": "debug" }, "cpython-3.11.12-darwin-aarch64-none": { @@ -16971,8 +17771,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-aarch64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "3d0250ac89b0990ec0715ebffd59108b6a8267efd122cea9e50e6155fa0c22b6", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-aarch64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "e90f9ead9f0195f2d4e774e0166eef67c6e8e44b8e4762eb9539099bb229f49b", "variant": null }, "cpython-3.10.18-darwin-x86_64-none": { @@ -16987,8 +17787,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "253e24f8a828711ec7fd753e451751fd0dda578ee9edfbf55c3bebeba3fb1ba7", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "0905eda558db07f1e79b03deee7d22416aa0cd06e9c307c0bfa6a9e95113da83", "variant": null }, "cpython-3.10.18-linux-aarch64-gnu": { @@ -17003,8 +17803,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "a7d5320d19ca8bea0938cdbb0cc5996ca6b2345e04a6c1ed82edd531bd528734", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "1e2cc082bc02698cc1587600242f96cafde4d57623376fa0bf2a2f8c373562dc", "variant": null }, "cpython-3.10.18-linux-armv7-gnueabi": { @@ -17019,8 +17819,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", - "sha256": "da98d3eed90fd57d17cde0ea7121c38bf4e54754084004ad5900c8ac98f69a73", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", + "sha256": "29b28a35041f581a7383781e2fd5bbf2d028738e354d9120c05ad806ba6fac3c", "variant": null }, "cpython-3.10.18-linux-armv7-gnueabihf": { @@ -17035,8 +17835,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", - "sha256": "ca25e59d3e230de1cbf2e3e3ce92d24d82c1860588133d2b1daeefc7b83adad0", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", + "sha256": "0889254007063506f82542fa945360fc240be168009be0ed5441d40487027f41", "variant": null }, "cpython-3.10.18-linux-powerpc64le-gnu": { @@ -17051,8 +17851,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "503a7e4b53d2b9367996cde1bfe65170691092d537d8f67e82ea31e674eb5265", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "a06363e1c4b85420ef1341a0ce7cf55b9f0c40b887dbec40c796284a749708e7", "variant": null }, "cpython-3.10.18-linux-riscv64-gnu": { @@ -17067,8 +17867,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "38ea6ee623c73422a3f5d099dccdb4d0c4a02dceb242ea6986fe80e30856bf0b", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "e13aba8c8e66f4a48283e0132fc4749310e076bb38fd3f040b47f2d2f812e406", "variant": null }, "cpython-3.10.18-linux-s390x-gnu": { @@ -17083,8 +17883,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "c2f3357dc39951a726d5d42b5fd451d4103072f18ecc2a32c8935c6efadbd52d", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "189f6230cb6c60cf572613cbbc5a253a2df13b350fc230066246013da0274dee", "variant": null }, "cpython-3.10.18-linux-x86_64-gnu": { @@ -17099,8 +17899,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "b8516e851fca78c57c8fa557007ad169771380d7e5ac72bf7e39b1b197783e19", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "4666a17185ad7f119b83c6dad45ca3ca22e5e63b00a34d52e3b5efba57a3063a", "variant": null }, "cpython-3.10.18-linux-x86_64-musl": { @@ -17115,8 +17915,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "a5ed25422ae8961fb10727391c48c55414382e82a66d6f8348c9b13f81b226d0", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "12fa7705b7c8b1cb9f33f81e21b2cf83062d45f5e220a694189ea20901612b44", "variant": null }, "cpython-3.10.18-linux-x86_64_v2-gnu": { @@ -17131,8 +17931,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "b5d3425f9343295cffa0954218640a7e6fa32d57d04dbd3896c79da0e8843467", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "b6e3c1b3ac662073e1e7187e73e6a6aa8825b2eeaf5f670a38dca2d8ac8f8415", "variant": null }, "cpython-3.10.18-linux-x86_64_v2-musl": { @@ -17147,8 +17947,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "b79940db2dd9da04cbf0a700ca409430f04f435c03044a37bb9a271bc6544606", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "634e6fab2e22d9a7a64fac6ce3b2a403ebb22fbabb9ac1a938c76dca7e84a0fe", "variant": null }, "cpython-3.10.18-linux-x86_64_v3-gnu": { @@ -17163,8 +17963,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "7ac40bdf626e3a7018d5580464e22bad97646b08da7a8b8b62d7b174aaf5c828", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "59b806c178b247dd90e036e8b93631ba8958c385f0ac6486770e030715d8020a", "variant": null }, "cpython-3.10.18-linux-x86_64_v3-musl": { @@ -17179,8 +17979,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "43d75b8dcc3a0d0e1cfff6e2be7044208e6f9e9141afe70aa550e2358d31a0b4", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "1cd4b2e14c442d2f7cdac550017adec3dad4eac5c6147e2e9a5e664ff37556e5", "variant": null }, "cpython-3.10.18-linux-x86_64_v4-gnu": { @@ -17195,8 +17995,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "a406ef21373cda258547cdbeb95a94e1de6d470c8b59750ad3b697db389e4bb9", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "8d64ef28b473bc6a73fbc85c7f1c70c5cd6b54c35796a7b1166b284def8486c9", "variant": null }, "cpython-3.10.18-linux-x86_64_v4-musl": { @@ -17211,8 +18011,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "9645bf9ac0212dc5d30616ecf0f8dd7c4a75193cf7e65f65e97f21226b388f13", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "7df05a0a40aa23ffb517d2d1d8797e7055c1f427dfd0a8844fb2599f31ef73c1", "variant": null }, "cpython-3.10.18-windows-i686-none": { @@ -17227,8 +18027,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-i686-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "ac5b16f698e307c478d78291cabe2c3797129c1e6831e31f39f08b756b68cbda", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-i686-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "ee8de30edf040f57e878ace6b78e684119bad9bd5ccad6306d32e35a2fe6773d", "variant": null }, "cpython-3.10.18-windows-x86_64-none": { @@ -17243,8 +18043,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "d60b7bb3ce070cd60ce61ddf7af745e73466827d80937de8be6ff60846353210", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "2b8dc3a32c0d5790cfc2f469c0b84beda85531e7c487d5969cbaecb7a9338e67", "variant": null }, "cpython-3.10.18+debug-linux-aarch64-gnu": { @@ -17259,8 +18059,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-aarch64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "7d613f98feccd2dbf40fefa35b3691097a22a3a408cfc81dcce13305ea7c3b64", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-aarch64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "43c6eb807c29d99068245a5f75289d4f7315ad6d95d0e74c093b027d5b91b45c", "variant": "debug" }, "cpython-3.10.18+debug-linux-armv7-gnueabi": { @@ -17275,8 +18075,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-armv7-unknown-linux-gnueabi-debug-full.tar.zst", - "sha256": "17542aa1b42fca63ed1afb1eb055bbf4903ce0ec07d1fc4aaa31f2f2e928d799", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-armv7-unknown-linux-gnueabi-debug-full.tar.zst", + "sha256": "2a9e42d99e0daee9842f2c636b88004baa5f7f9fef9f188e2110c6964a3c16e7", "variant": "debug" }, "cpython-3.10.18+debug-linux-armv7-gnueabihf": { @@ -17291,8 +18091,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", - "sha256": "9b62d4c3ac94dd445a7872775858b232e9b5901579f5ff63ca243afa989977a7", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", + "sha256": "276142d5c90f459ff2e5ee2389f2ef32f51db6c9fcd3e5e751056e46f2260e2d", "variant": "debug" }, "cpython-3.10.18+debug-linux-powerpc64le-gnu": { @@ -17307,8 +18107,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-ppc64le-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "7d18f668da354af30daf711b0ef8ad61580d884c22fa5a076683513ff841a997", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-ppc64le-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "061b884b0d24fee3235f9c66ff8dc4154fdbdd5b060927af25362889ef1b8bc6", "variant": "debug" }, "cpython-3.10.18+debug-linux-riscv64-gnu": { @@ -17323,8 +18123,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-riscv64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "503417e0a80868f6e63ba673d310ded7048620b3f9caa6b4db0d50e33e26ab43", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-riscv64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "a4257f9ca62d6b30bf55795839c702353e34ced442538b56546e6c1c4e2488e6", "variant": "debug" }, "cpython-3.10.18+debug-linux-s390x-gnu": { @@ -17339,8 +18139,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-s390x-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "c07852a8e4e51633e99063ff461f0eb4e8c7cfb7c1138cb00ca76c0bb7feeca5", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-s390x-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "31c26eae24a0f307105d7707929badc968ccb471c410d891f495889e74a8578d", "variant": "debug" }, "cpython-3.10.18+debug-linux-x86_64-gnu": { @@ -17355,8 +18155,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "f6a9adbd47e7471b03fc1e20f9a9ff8d5afee86660aa9243a79c1ef1f5cd69b0", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "7976fa66b88b22be13bf007cd049ddb45549cd34b00997b89aa561fe1724196f", "variant": "debug" }, "cpython-3.10.18+debug-linux-x86_64-musl": { @@ -17371,8 +18171,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64-unknown-linux-musl-debug-full.tar.zst", - "sha256": "a21fe7c08a1dfae156016de2f620daa5148ecd0a3e4849e4d313a81ff889d563", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64-unknown-linux-musl-debug-full.tar.zst", + "sha256": "0a4161de9117fd4508d239eb2551851e18d5a14eac36854188723822fb20ca47", "variant": "debug" }, "cpython-3.10.18+debug-linux-x86_64_v2-gnu": { @@ -17387,8 +18187,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "e0e04e750ba0b4ee4e49b1127a0ba2045ecaa5c7bd5d9356476193fe1657eb75", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "fe4aa4090f85a939fc1b53f0b6c549a050d1fc7153f20cb3bbfb9c82a244791e", "variant": "debug" }, "cpython-3.10.18+debug-linux-x86_64_v2-musl": { @@ -17403,8 +18203,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", - "sha256": "7746c97f0f1a71ab187cb201ef6b36fa08ee37c4bccca28d8cd9385d4a7cb451", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", + "sha256": "a2e9917b8606ff765ab0cc012a18bc605430a3a2b4134ba57585c89f69bda570", "variant": "debug" }, "cpython-3.10.18+debug-linux-x86_64_v3-gnu": { @@ -17419,8 +18219,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "a9770a9845b3c60cfacaf2a2149c14fcf9c8ce4123554653d71abe9265879def", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "0ad7506ed1f602163881fd8b886f4390e206f03dd88ee357f83d1ac6024dda29", "variant": "debug" }, "cpython-3.10.18+debug-linux-x86_64_v3-musl": { @@ -17435,8 +18235,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", - "sha256": "d63f9310747995538488cfa4772cc9d61d03d005c0c0f3795bc29936c4ca6935", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", + "sha256": "ac0a51e018cb7d8c44f276748f79fdb967ee38a0f5bd9e41dbc26ba45da495cd", "variant": "debug" }, "cpython-3.10.18+debug-linux-x86_64_v4-gnu": { @@ -17451,8 +18251,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "6b024935ec598b7a45acce6786f36ecafaa3be7dac3b6ffc47564771f79de512", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "247e2d716edc2c2d18327fe94747d15a1ad32a99e44988c71e373786853a2a23", "variant": "debug" }, "cpython-3.10.18+debug-linux-x86_64_v4-musl": { @@ -17467,8 +18267,8 @@ "minor": 10, "patch": 18, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.10.18%2B20250604-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", - "sha256": "521b6c6761f5be49f870dcaab2028abca8db41335bbc42f3e4bfd610001f17b4", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.10.18%2B20250610-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", + "sha256": "d6783237189a6de3073a4a56d0fabfaee5c280c09fce1f5296a9e3547c3965c7", "variant": "debug" }, "cpython-3.10.17-darwin-aarch64-none": { @@ -22411,8 +23211,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-aarch64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "66261d94390af4dc9a352874ae8b6212560558eec12d4ef990ad1f369b0b282c", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-aarch64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "f52a70d126ca83ea45f9a3284a33f7c11336a2a144406970fd982b2ed57a3fc4", "variant": null }, "cpython-3.9.23-darwin-x86_64-none": { @@ -22427,8 +23227,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64-apple-darwin-install_only_stripped.tar.gz", - "sha256": "c75e6f6acaf6e97586ec2dace9d1d1c1b08170a7edeeec4c018328bdf98fadec", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64-apple-darwin-install_only_stripped.tar.gz", + "sha256": "3b3d3c92c1af6cf652b7067eadffe29e43973d47c23e4f243e70a56d99bb951f", "variant": null }, "cpython-3.9.23-linux-aarch64-gnu": { @@ -22443,8 +23243,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "6aed3756ca15618d502ca6b6dd3618525ad07944d835b4cfce445340ead9993f", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "df6ec4f3f56b77cd670ad30179aa9fb061f144027113bd0892bfb6173c6422c4", "variant": null }, "cpython-3.9.23-linux-armv7-gnueabi": { @@ -22459,8 +23259,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", - "sha256": "c569507edd4e33c31b965adca6734e3418980389b37b5d4db6dcc3379164795c", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz", + "sha256": "7c1ed7618370b89e2bc37dcb1f6bf14488f63f681e3a5f8193a451593122b505", "variant": null }, "cpython-3.9.23-linux-armv7-gnueabihf": { @@ -22475,8 +23275,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", - "sha256": "0254ec392a40d4be22a8b8aae47ba5f95f7f3b20d91460b6dce28e979a20e125", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz", + "sha256": "f38ec0cda1fc7e470deaad2e2d5732a2784ca4156101f32864a04378785cf993", "variant": null }, "cpython-3.9.23-linux-powerpc64le-gnu": { @@ -22491,8 +23291,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "0c2aa9e2e43f14545a536f79cbd39965817387ac0d12facdc3802b193b4d5276", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-ppc64le-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "5534ef16f0a3c518ce41841739a742cdc89d04d21e60f9f34c6066b9fab35bf9", "variant": null }, "cpython-3.9.23-linux-riscv64-gnu": { @@ -22507,8 +23307,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "8b6c4a98aca5e7fc63e5fb85a190293a399c6c87f58d7d5cafc719adaa7957f1", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-riscv64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "9a12e10df64768a7a5989b3ff28b682d1241f00d73eb4f6680ff3927d99395f6", "variant": null }, "cpython-3.9.23-linux-s390x-gnu": { @@ -22523,8 +23323,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "ddf1ef3a037e0f655ac64611ddd94b5ffa12cdf5cc06c0503ae0d6a211dc9eb3", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-s390x-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "134227486d8ab8bb98f765d5c660a14bdea1bd5875eaf0d103fc5c8b6bc68f15", "variant": null }, "cpython-3.9.23-linux-x86_64-gnu": { @@ -22539,8 +23339,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "63ab1e04930c19a2534a88754dcb303f349d922b53d2609d403c4e3970dbb7a3", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "c868a50e6c98dc593fd536ddea34d43679470f489255d61353e5c8c0ec1c7db3", "variant": null }, "cpython-3.9.23-linux-x86_64-musl": { @@ -22555,8 +23355,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "1d84c486dcbbc24a051e7ad3d4ea473e471ff138c40b4cb419e6285146ded37b", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "68e0ef43131e6d2ef7059e8cba179a385c2dd254a10b5bd9b8b64efa138fb2ed", "variant": null }, "cpython-3.9.23-linux-x86_64_v2-gnu": { @@ -22571,8 +23371,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "24100b4ecb55f104e221fa0935e03d18ac3df1cf4fcd5bac20fab7f398264ec1", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v2-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "9fd317387b3549a0e552b6c8b096e0eb46912ceb63df2f6e80d60ce43b2aa917", "variant": null }, "cpython-3.9.23-linux-x86_64_v2-musl": { @@ -22587,8 +23387,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "3e08248e0b4da87dcaab1aecd8453a54cccd31cd7a4542e679da145da76feaec", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v2-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "233a9dcd9a0ed49eeea8c891ef2289ce8c122d3bce214fdae6f2d5ff81e48539", "variant": null }, "cpython-3.9.23-linux-x86_64_v3-gnu": { @@ -22603,8 +23403,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "0aeeaed7063962e42df4009601f08663dc3699672428f455e6360f84c969ef10", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v3-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "b9c3112be31c6b2535902f5e1255f9385f4e8e05345316ac19f2a11007df53e2", "variant": null }, "cpython-3.9.23-linux-x86_64_v3-musl": { @@ -22619,8 +23419,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "06d1177a276f9dd1471e95b9b3b01cd4fba8a1d1252a4fae1cf7917cead582c3", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v3-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "a0859a358ef1c6678dfa8681d1cb8b483ba970df11fe9df06c28f575b6b4b30f", "variant": null }, "cpython-3.9.23-linux-x86_64_v4-gnu": { @@ -22635,8 +23435,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", - "sha256": "3a7f40090da03982a29d9612b7bae6a2d0f979f5fc29c97e77e56a8670028d0b", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v4-unknown-linux-gnu-install_only_stripped.tar.gz", + "sha256": "937f1d800022b79c66dde564bcb5ff6f24996a41de5b617ece63b931360b6615", "variant": null }, "cpython-3.9.23-linux-x86_64_v4-musl": { @@ -22651,8 +23451,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", - "sha256": "8df79205510e424729fcb99a940a9e1e61a83571044bf63b1da8fce308890f6b", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v4-unknown-linux-musl-install_only_stripped.tar.gz", + "sha256": "6e03cd3595fe40da43b2e745f1edac939893e441dfe38bf87776f1672e5079cb", "variant": null }, "cpython-3.9.23-windows-i686-none": { @@ -22667,8 +23467,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-i686-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "23394d3825b3703017225897f5d05035e3fe502dbd5a77cd97e2c479129a1572", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-i686-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "31b14fe77965231c9a88b6a8b75452b461d78d9ff220740d218a3834ad35a76e", "variant": null }, "cpython-3.9.23-windows-x86_64-none": { @@ -22683,8 +23483,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", - "sha256": "e45a280c1680d6a6061d5246ae06489cf35848c98d5a048a7b505c6f89931bae", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64-pc-windows-msvc-install_only_stripped.tar.gz", + "sha256": "f9dc5a0a1838004e853c1c54cf22aa1a2f8d44a075ea1728cce33f91c187e83c", "variant": null }, "cpython-3.9.23+debug-linux-aarch64-gnu": { @@ -22699,8 +23499,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-aarch64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "46ddea12039a935112388ff1538066b614ae37613da3e2a0e7bc0ec0f3223605", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-aarch64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "9dbf14b38042a53a8ca19ae2dcaebaab0add1b3aa60d7513e684af390d1252df", "variant": "debug" }, "cpython-3.9.23+debug-linux-armv7-gnueabi": { @@ -22715,8 +23515,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-armv7-unknown-linux-gnueabi-debug-full.tar.zst", - "sha256": "c930d0ee01d54aa626d1cded6edb330ba420b2524d93d89e76c18372bdcde80f", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-armv7-unknown-linux-gnueabi-debug-full.tar.zst", + "sha256": "a31480290755a502d564819c97f29ef059ca76631c87a8eff50b57439201901a", "variant": "debug" }, "cpython-3.9.23+debug-linux-armv7-gnueabihf": { @@ -22731,8 +23531,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", - "sha256": "d0671ac71f7a8a0eeffe45201e49be283c33f01731fc18ee30de05632c989061", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-armv7-unknown-linux-gnueabihf-debug-full.tar.zst", + "sha256": "66978d1bad34bb6bf2fb459ef7eee386036353655f6c5499ed09485f261c7a51", "variant": "debug" }, "cpython-3.9.23+debug-linux-powerpc64le-gnu": { @@ -22747,8 +23547,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-ppc64le-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "c0ad3c512daaf7ab95031117a99efd65e050012f377018a4a6dcaddfd1b3cfca", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-ppc64le-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "9eb92db484099e9e63ef2addb24c97bbf481d0f5d4b1bc82854c56fa64880ff8", "variant": "debug" }, "cpython-3.9.23+debug-linux-riscv64-gnu": { @@ -22763,8 +23563,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-riscv64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "9e54ad5665366623b8e9519a534cd47e587d273a86f3f1ee3d93b6efc5bfc1c8", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-riscv64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "48a17dd3563c6b4ad08fbb13e8747b4dbe6626eb371a2102c1a21025eb85de71", "variant": "debug" }, "cpython-3.9.23+debug-linux-s390x-gnu": { @@ -22779,8 +23579,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-s390x-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "b4df18af220dc9a6e3e0153849cb20172d8f4d5b4d8f5310d5ee8c947f05b88b", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-s390x-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "e33df170febe0cba1eb441cb9feea2b3c4162f9038eac1f7bd90a12019cdeff4", "variant": "debug" }, "cpython-3.9.23+debug-linux-x86_64-gnu": { @@ -22795,8 +23595,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "2725914e28bf9eabcbdcd1649d5eb415f98e857372dab9f78080241a44387a75", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "ec38829b92a439b5bb7a8779ae70d567b242d2a260056253bda723affc607285", "variant": "debug" }, "cpython-3.9.23+debug-linux-x86_64-musl": { @@ -22811,8 +23611,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64-unknown-linux-musl-debug-full.tar.zst", - "sha256": "3b73369fc80a548bc3eb56a4106ab7689a2ac2e96e6415965df016ffe5ad358f", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64-unknown-linux-musl-debug-full.tar.zst", + "sha256": "739834ee9c93dd2babddb073f8c0baa477cccd9c80372438be99da31c1caa8ea", "variant": "debug" }, "cpython-3.9.23+debug-linux-x86_64_v2-gnu": { @@ -22827,8 +23627,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "a046e8c69345440d0b31b706e03a0092ae1b1d7e94638a8aa1dfe1df7e8544fe", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v2-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "72625c64ba82449ffa06b204c9690eb3adf68780d9f68066db66b7278222a7ca", "variant": "debug" }, "cpython-3.9.23+debug-linux-x86_64_v2-musl": { @@ -22843,8 +23643,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", - "sha256": "5c3dc4d786d78ae94cab3152b55bbe7b5c9514fa977cbd52ef26aba382b26231", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v2-unknown-linux-musl-debug-full.tar.zst", + "sha256": "d994f89d442329e1280e49f45c477cd0cba80d46bbaa9919c2efb8b4da203924", "variant": "debug" }, "cpython-3.9.23+debug-linux-x86_64_v3-gnu": { @@ -22859,8 +23659,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "3db582893571da8422dea4ddcd596542af9de69427506067e66ffbece5b8c13c", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v3-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "e938c18d3b02a665e8e620444e0c1a58f5fe408d5d22e287165d136c561d05e0", "variant": "debug" }, "cpython-3.9.23+debug-linux-x86_64_v3-musl": { @@ -22875,8 +23675,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", - "sha256": "d2e55a20da40192e6914cb52e73f94b3da03d24cd8b514c59173115021adfa91", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v3-unknown-linux-musl-debug-full.tar.zst", + "sha256": "5453499ed1fd788cd8945927b38606a79918a91138848dab90f0518ef1ee77da", "variant": "debug" }, "cpython-3.9.23+debug-linux-x86_64_v4-gnu": { @@ -22891,8 +23691,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", - "sha256": "6dbb8ba28c56d04c52d4f1de65095880d8ca4d2770c9c52855771f023cac3512", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v4-unknown-linux-gnu-debug-full.tar.zst", + "sha256": "0a1c5570c32c3653da0f6c90656d131e608de519f06b0e298ee9ac865b42b6f2", "variant": "debug" }, "cpython-3.9.23+debug-linux-x86_64_v4-musl": { @@ -22907,8 +23707,8 @@ "minor": 9, "patch": 23, "prerelease": "", - "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250604/cpython-3.9.23%2B20250604-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", - "sha256": "7058b7adb62727e770a149ddf12b37012ffd591e07fc28241a3a37c585c2134e", + "url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250610/cpython-3.9.23%2B20250610-x86_64_v4-unknown-linux-musl-debug-full.tar.zst", + "sha256": "1053827ab34963102cf2d998fddfcd923c2940ecfa5ed239b06e7b8831943a40", "variant": "debug" }, "cpython-3.9.22-darwin-aarch64-none": { diff --git a/crates/uv-python/src/sysconfig/generated_mappings.rs b/crates/uv-python/src/sysconfig/generated_mappings.rs index df127af07..5853aa689 100644 --- a/crates/uv-python/src/sysconfig/generated_mappings.rs +++ b/crates/uv-python/src/sysconfig/generated_mappings.rs @@ -1,7 +1,7 @@ //! DO NOT EDIT //! //! Generated with `cargo run dev generate-sysconfig-metadata` -//! Targets from +//! Targets from //! #![allow(clippy::all)] #![cfg_attr(any(), rustfmt::skip)] diff --git a/crates/uv/tests/it/python_install.rs b/crates/uv/tests/it/python_install.rs index a197601e6..1ecc7ed45 100644 --- a/crates/uv/tests/it/python_install.rs +++ b/crates/uv/tests/it/python_install.rs @@ -1256,8 +1256,8 @@ fn python_install_314() { ----- stdout ----- ----- stderr ----- - Installed Python 3.14.0b1 in [TIME] - + cpython-3.14.0b1-[PLATFORM] + Installed Python 3.14.0b2 in [TIME] + + cpython-3.14.0b2-[PLATFORM] "); // Install a specific pre-release @@ -1277,7 +1277,7 @@ fn python_install_314() { success: true exit_code: 0 ----- stdout ----- - [TEMP_DIR]/managed/cpython-3.14.0b1-[PLATFORM]/[INSTALL-BIN]/python + [TEMP_DIR]/managed/cpython-3.14.0b2-[PLATFORM]/[INSTALL-BIN]/python ----- stderr ----- "); @@ -1287,7 +1287,7 @@ fn python_install_314() { success: true exit_code: 0 ----- stdout ----- - [TEMP_DIR]/managed/cpython-3.14.0b1-[PLATFORM]/[INSTALL-BIN]/python + [TEMP_DIR]/managed/cpython-3.14.0b2-[PLATFORM]/[INSTALL-BIN]/python ----- stderr ----- "); @@ -1296,7 +1296,7 @@ fn python_install_314() { success: true exit_code: 0 ----- stdout ----- - [TEMP_DIR]/managed/cpython-3.14.0b1-[PLATFORM]/[INSTALL-BIN]/python + [TEMP_DIR]/managed/cpython-3.14.0b2-[PLATFORM]/[INSTALL-BIN]/python ----- stderr ----- "); From f5305653238378376cd33f1a00d6b9eb511bef36 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Wed, 11 Jun 2025 08:28:34 -0500 Subject: [PATCH 025/221] Use TTY detection to determine if SIGINT forwarding is enabled (#13925) Use TTY detection to determine when we should forward SIGINT instead of counting signals, which can lead to various problems where multiple SIGINTs are sent to a child after the first signal. Counting does not make sense in interactive situations that do not exit on interrupt, e.g., the Python REPL. Closes https://github.com/astral-sh/uv/issues/13919 Closes https://github.com/astral-sh/uv/issues/12108 --- crates/uv/src/commands/run.rs | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/crates/uv/src/commands/run.rs b/crates/uv/src/commands/run.rs index 8b4ceaf2d..6a8033fff 100644 --- a/crates/uv/src/commands/run.rs +++ b/crates/uv/src/commands/run.rs @@ -17,12 +17,11 @@ pub(crate) async fn run_to_completion(mut handle: Child) -> anyhow::Result`), the process group is not involved and a signal is not sent - // to the child by default. In this context, uv must forward the signal to the child. We work - // around this by forwarding SIGINT if it is received more than once. We could attempt to infer - // if the parent is a terminal using TTY detection(?), but there hasn't been sufficient - // motivation to explore alternatives yet. + // Note the above only applies in an interactive terminal. If a signal is sent directly to the + // uv parent process (e.g., `kill -2 `), the process group is not involved and a signal is + // not sent to the child by default. In this context, uv must forward the signal to the child. + // uv checks if stdin is a TTY as a heuristic to determine if uv is running in an interactive + // terminal. When not in an interactive terminal, uv will forward SIGINT to the child. // // Use of SIGTERM is also a bit complicated. If a terminal receives a SIGTERM, it just waits for // its children to exitΒ β€” multiple SIGTERMs do not have any effect and the signals are not @@ -38,6 +37,7 @@ pub(crate) async fn run_to_completion(mut handle: Child) -> anyhow::Result anyhow::Result anyhow::Result anyhow::Result Date: Wed, 11 Jun 2025 22:42:47 -0400 Subject: [PATCH 026/221] Add `zstd` and `deflate` to `Accept-Encoding` (#13982) ## Summary We already pull in these dependencies, so it costs us nothing. --- Cargo.toml | 2 +- crates/uv-client/src/registry_client.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 3e192a3d5..0f1d02b47 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -142,7 +142,7 @@ ref-cast = { version = "1.0.24" } reflink-copy = { version = "0.1.19" } regex = { version = "1.10.6" } regex-automata = { version = "0.4.8", default-features = false, features = ["dfa-build", "dfa-search", "perf", "std", "syntax"] } -reqwest = { version = "=0.12.15", default-features = false, features = ["json", "gzip", "stream", "rustls-tls", "rustls-tls-native-roots", "socks", "multipart", "http2", "blocking"] } +reqwest = { version = "=0.12.15", default-features = false, features = ["json", "gzip", "deflate", "zstd", "stream", "rustls-tls", "rustls-tls-native-roots", "socks", "multipart", "http2", "blocking"] } reqwest-middleware = { version = "0.4.0", features = ["multipart"] } reqwest-retry = { version = "0.7.0" } rkyv = { version = "0.8.8", features = ["bytecheck"] } diff --git a/crates/uv-client/src/registry_client.rs b/crates/uv-client/src/registry_client.rs index 9e8ea23b7..7dbdf7e49 100644 --- a/crates/uv-client/src/registry_client.rs +++ b/crates/uv-client/src/registry_client.rs @@ -558,7 +558,7 @@ impl RegistryClient { let simple_request = self .uncached_client(url) .get(Url::from(url.clone())) - .header("Accept-Encoding", "gzip") + .header("Accept-Encoding", "gzip, deflate, zstd") .header("Accept", MediaType::accepts()) .build() .map_err(|err| ErrorKind::from_reqwest(url.clone(), err))?; From b3d7f7977044c2d1d3f21617636a8840cc02688c Mon Sep 17 00:00:00 2001 From: konsti Date: Thu, 12 Jun 2025 04:47:40 +0200 Subject: [PATCH 027/221] Universal sync_required_environment_hint test (#13975) Use the packse case `no-sdist-no-wheels-with-matching-platform` for a platform independent `sync_required_environment_hint` test. Fixes #13890 --- crates/uv/tests/it/sync.rs | 54 +++++++++++++------------------------- 1 file changed, 18 insertions(+), 36 deletions(-) diff --git a/crates/uv/tests/it/sync.rs b/crates/uv/tests/it/sync.rs index c2026d51c..6503a279b 100644 --- a/crates/uv/tests/it/sync.rs +++ b/crates/uv/tests/it/sync.rs @@ -4,7 +4,7 @@ use assert_fs::{fixture::ChildPath, prelude::*}; use indoc::{formatdoc, indoc}; use insta::assert_snapshot; -use crate::common::{TestContext, download_to_disk, uv_snapshot, venv_bin_path}; +use crate::common::{TestContext, download_to_disk, packse_index_url, uv_snapshot, venv_bin_path}; use predicates::prelude::predicate; use tempfile::tempdir_in; use uv_fs::Simplified; @@ -9609,45 +9609,27 @@ fn direct_url_dependency_metadata() -> Result<()> { Ok(()) } -#[cfg(unix)] #[test] fn sync_required_environment_hint() -> Result<()> { let context = TestContext::new("3.13"); let pyproject_toml = context.temp_dir.child("pyproject.toml"); - pyproject_toml.write_str( - r#" + pyproject_toml.write_str(&formatdoc! {r#" [project] name = "example" version = "0.1.0" requires-python = ">=3.13.2" - dependencies = ["wheel_tag_test"] + dependencies = ["no-sdist-no-wheels-with-matching-platform-a"] + + [[tool.uv.index]] + name = "packse" + url = "{}" + default = true "#, - )?; + packse_index_url() + })?; - // Populate the `--find-links` entries. - fs_err::create_dir_all(context.temp_dir.join("links"))?; - - for entry in fs_err::read_dir(context.workspace_root.join("scripts/links"))? { - let entry = entry?; - let path = entry.path(); - if path - .file_name() - .and_then(|file_name| file_name.to_str()) - .is_some_and(|file_name| file_name.starts_with("wheel_tag_test-")) - { - let dest = context - .temp_dir - .join("links") - .join(path.file_name().unwrap()); - fs_err::copy(&path, &dest)?; - } - } - - uv_snapshot!(context.filters(), context.lock() - .arg("--no-index") - .arg("--find-links") - .arg(context.temp_dir.join("links")), @r" + uv_snapshot!(context.filters(), context.lock().env_remove("UV_EXCLUDE_NEWER"), @r" success: true exit_code: 0 ----- stdout ----- @@ -9657,21 +9639,21 @@ fn sync_required_environment_hint() -> Result<()> { "); let mut filters = context.filters(); - filters.push((r"(macOS|Linux) \(`.*`\)", "[PLATFORM] (`[TAG]`)")); + filters.push(( + r"You're on [^ ]+ \(`.*`\)", + "You're on [PLATFORM] (`[TAG]`)", + )); - uv_snapshot!(filters, context.sync() - .arg("--no-index") - .arg("--find-links") - .arg(context.temp_dir.join("links")), @r" + uv_snapshot!(filters, context.sync().env_remove("UV_EXCLUDE_NEWER"), @r" success: false exit_code: 2 ----- stdout ----- ----- stderr ----- Resolved 2 packages in [TIME] - error: Distribution `wheel-tag-test==0.1.0 @ registry+links` can't be installed because it doesn't have a source distribution or wheel for the current platform + error: Distribution `no-sdist-no-wheels-with-matching-platform-a==1.0.0 @ registry+https://astral-sh.github.io/packse/PACKSE_VERSION/simple-html/` can't be installed because it doesn't have a source distribution or wheel for the current platform - hint: You're on [PLATFORM] (`[TAG]`), but `wheel-tag-test` (v0.1.0) only has wheels for the following platform: `win_amd64`; consider adding your platform to `tool.uv.required-environments` to ensure uv resolves to a version with compatible wheels + hint: You're on [PLATFORM] (`[TAG]`), but `no-sdist-no-wheels-with-matching-platform-a` (v1.0.0) only has wheels for the following platform: `macosx_10_0_ppc64`; consider adding your platform to `tool.uv.required-environments` to ensure uv resolves to a version with compatible wheels "); Ok(()) From 87ab57e902c9009b47f22d951acf631b515e3bed Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Thu, 12 Jun 2025 05:02:51 -0500 Subject: [PATCH 028/221] Update the CLI help and reference to include references to the Python bin directory (#13978) Closes https://github.com/astral-sh/uv/issues/13977 --- crates/uv-cli/src/lib.rs | 6 ++++-- crates/uv/tests/it/help.rs | 3 ++- docs/reference/cli.md | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index 63e87367c..e29387b28 100644 --- a/crates/uv-cli/src/lib.rs +++ b/crates/uv-cli/src/lib.rs @@ -4728,7 +4728,8 @@ pub enum PythonCommand { /// /// A `python` executable is not made globally available, managed Python versions are only used /// in uv commands or in active virtual environments. There is experimental support for adding - /// Python executables to the `PATH` β€” use the `--preview` flag to enable this behavior. + /// Python executables to a directory on the path β€” use the `--preview` flag to enable this + /// behavior and `uv python dir --bin` to retrieve the target directory. /// /// Multiple Python versions may be requested. /// @@ -4763,7 +4764,8 @@ pub enum PythonCommand { /// The Python installation directory may be overridden with `$UV_PYTHON_INSTALL_DIR`. /// /// To view the directory where uv installs Python executables instead, use the `--bin` flag. - /// Note that Python executables are only installed when preview mode is enabled. + /// The Python executable directory may be overridden with `$UV_PYTHON_BIN_DIR`. Note that + /// Python executables are only installed when preview mode is enabled. Dir(PythonDirArgs), /// Uninstall Python versions. diff --git a/crates/uv/tests/it/help.rs b/crates/uv/tests/it/help.rs index 932991859..6fd9bd466 100644 --- a/crates/uv/tests/it/help.rs +++ b/crates/uv/tests/it/help.rs @@ -468,7 +468,8 @@ fn help_subsubcommand() { A `python` executable is not made globally available, managed Python versions are only used in uv commands or in active virtual environments. There is experimental support for adding Python - executables to the `PATH` β€” use the `--preview` flag to enable this behavior. + executables to a directory on the path β€” use the `--preview` flag to enable this behavior and `uv + python dir --bin` to retrieve the target directory. Multiple Python versions may be requested. diff --git a/docs/reference/cli.md b/docs/reference/cli.md index aef894368..d434b954b 100644 --- a/docs/reference/cli.md +++ b/docs/reference/cli.md @@ -2666,7 +2666,7 @@ Supports CPython and PyPy. CPython distributions are downloaded from the Astral Python versions are installed into the uv Python directory, which can be retrieved with `uv python dir`. -A `python` executable is not made globally available, managed Python versions are only used in uv commands or in active virtual environments. There is experimental support for adding Python executables to the `PATH` β€” use the `--preview` flag to enable this behavior. +A `python` executable is not made globally available, managed Python versions are only used in uv commands or in active virtual environments. There is experimental support for adding Python executables to a directory on the path β€” use the `--preview` flag to enable this behavior and `uv python dir --bin` to retrieve the target directory. Multiple Python versions may be requested. @@ -2917,7 +2917,7 @@ By default, Python installations are stored in the uv data directory at `$XDG_DA The Python installation directory may be overridden with `$UV_PYTHON_INSTALL_DIR`. -To view the directory where uv installs Python executables instead, use the `--bin` flag. Note that Python executables are only installed when preview mode is enabled. +To view the directory where uv installs Python executables instead, use the `--bin` flag. The Python executable directory may be overridden with `$UV_PYTHON_BIN_DIR`. Note that Python executables are only installed when preview mode is enabled.

Usage

From 806cc5cad9ac8abc3c29537a9f27bec66f409389 Mon Sep 17 00:00:00 2001 From: Zanie Blue Date: Thu, 12 Jun 2025 08:05:25 -0500 Subject: [PATCH 029/221] Debug `sync_dry_run` flake by panicking with verbose output on failure (#13817) Investigating #13744 I tried reproducing here by running the test in a loop, but could not. I presume it's an interaction with other tests. This drops the snapshot, but I think it's worth it to try to examine the flake? --- crates/uv/tests/it/sync.rs | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/crates/uv/tests/it/sync.rs b/crates/uv/tests/it/sync.rs index 6503a279b..3f3cd072c 100644 --- a/crates/uv/tests/it/sync.rs +++ b/crates/uv/tests/it/sync.rs @@ -7879,18 +7879,13 @@ fn sync_dry_run() -> Result<()> { + iniconfig==2.0.0 "###); - uv_snapshot!(context.filters(), context.sync().arg("--dry-run"), @r###" - success: true - exit_code: 0 - ----- stdout ----- - - ----- stderr ----- - Discovered existing environment at: .venv - Resolved 2 packages in [TIME] - Found up-to-date lockfile at: uv.lock - Audited 1 package in [TIME] - Would make no changes - "###); + let output = context.sync().arg("--dry-run").arg("-vv").output()?; + let stderr = String::from_utf8_lossy(&output.stderr); + assert!( + !stderr.contains("Would replace existing virtual environment"), + "{}", + stderr + ); Ok(()) } From a1f9f28762b113dcecd07fd739f77c1bb417a53d Mon Sep 17 00:00:00 2001 From: Ahmed Ilyas Date: Thu, 12 Jun 2025 16:45:12 +0200 Subject: [PATCH 030/221] Do not allow `uv add --group ... --script` (#13997) ## Summary Closes #13988 ## Test Plan `cargo test` --- crates/uv-cli/src/lib.rs | 28 ++++++++++++++++++++++++---- crates/uv/tests/it/edit.rs | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/crates/uv-cli/src/lib.rs b/crates/uv-cli/src/lib.rs index e29387b28..0b96875e5 100644 --- a/crates/uv-cli/src/lib.rs +++ b/crates/uv-cli/src/lib.rs @@ -3516,7 +3516,12 @@ pub struct AddArgs { /// Add the requirements to the development dependency group. /// /// This option is an alias for `--group dev`. - #[arg(long, conflicts_with("optional"), conflicts_with("group"))] + #[arg( + long, + conflicts_with("optional"), + conflicts_with("group"), + conflicts_with("script") + )] pub dev: bool, /// Add the requirements to the package's optional dependencies for the specified extra. @@ -3530,7 +3535,12 @@ pub struct AddArgs { /// Add the requirements to the specified dependency group. /// /// These requirements will not be included in the published metadata for the project. - #[arg(long, conflicts_with("dev"), conflicts_with("optional"))] + #[arg( + long, + conflicts_with("dev"), + conflicts_with("optional"), + conflicts_with("script") + )] pub group: Option, /// Add the requirements as editable. @@ -3677,11 +3687,21 @@ pub struct RemoveArgs { pub dev: bool, /// Remove the packages from the project's optional dependencies for the specified extra. - #[arg(long, conflicts_with("dev"), conflicts_with("group"))] + #[arg( + long, + conflicts_with("dev"), + conflicts_with("group"), + conflicts_with("script") + )] pub optional: Option, /// Remove the packages from the specified dependency group. - #[arg(long, conflicts_with("dev"), conflicts_with("optional"))] + #[arg( + long, + conflicts_with("dev"), + conflicts_with("optional"), + conflicts_with("script") + )] pub group: Option, /// Avoid syncing the virtual environment after re-locking the project. diff --git a/crates/uv/tests/it/edit.rs b/crates/uv/tests/it/edit.rs index 5ba64fca2..f96dd7b7b 100644 --- a/crates/uv/tests/it/edit.rs +++ b/crates/uv/tests/it/edit.rs @@ -2013,6 +2013,42 @@ fn remove_both_dev() -> Result<()> { Ok(()) } +/// Do not allow add for groups in scripts. +#[test] +fn disallow_group_script_add() -> Result<()> { + let context = TestContext::new("3.12"); + + let script = context.temp_dir.child("main.py"); + script.write_str(indoc! {r#" + # /// script + # requires-python = ">=3.13" + # dependencies = [] + # + # /// + "#})?; + + uv_snapshot!(context.filters(), context + .add() + .arg("--group") + .arg("dev") + .arg("anyio==3.7.0") + .arg("--script") + .arg("main.py"), @r###" + success: false + exit_code: 2 + ----- stdout ----- + + ----- stderr ----- + error: the argument '--group ' cannot be used with '--script