Repository navigation
Reuse URL-provided hashes during resolution - #21279
Conversation
uv test inventory changesThis PR changes the tests when compared with the
|
|
I'm fixing the |
|
Ok let me know what I should do |
fe31b47 to
a6db59f
Compare
8cda1ec to
503a00a
Compare
503a00a to
59b9085
Compare
59b9085 to
ff28402
Compare
## Summary `HashPolicy` currently carries both resolution-wide hash collection settings and requirements for a specific archive. We split those into `MetadataHashPolicy`, with collection and validation fields, and `ArchiveHashPolicy`, which describes the hashes an archive must provide. The distribution database selects the archive policy. Expected hashes continue to take precedence over collection. Preparation for #21279, which adds URL-hash reuse on top of this refactor.
66d476f to
1008423
Compare
| let declared_hashes = if hashes.collection == HashCollection::None | ||
| || hashes.validation != HashValidation::None | ||
| { | ||
| None | ||
| } else if let BuildableSource::Dist(SourceDist::DirectUrl(dist)) = source { | ||
| parse_url_hashes(&dist.url) | ||
| } else if let BuildableSource::Url(SourceUrl::Direct(source)) = source { | ||
| parse_url_hashes(source.url) | ||
| } else { | ||
| None | ||
| }; | ||
|
|
||
| // If resolving metadata requires a build, validate the declared hashes before executing | ||
| // the backend, even when the caller only requested hash collection. | ||
| let build_hash_policy = match hashes.validation { | ||
| HashValidation::None => match hashes.collection { | ||
| HashCollection::None => ArchiveHashPolicy::None, | ||
| HashCollection::Url | HashCollection::All => ArchiveHashPolicy::Generate, | ||
| }, | ||
| HashValidation::None => { | ||
| if let Some(hashes) = declared_hashes.as_ref() { | ||
| ArchiveHashPolicy::All(hashes.as_slice()) | ||
| } else if hashes.collection != HashCollection::None { | ||
| ArchiveHashPolicy::Generate | ||
| } else { | ||
| ArchiveHashPolicy::None | ||
| } | ||
| } |
There was a problem hiding this comment.
| let declared_hashes = if hashes.collection == HashCollection::None | |
| || hashes.validation != HashValidation::None | |
| { | |
| None | |
| } else if let BuildableSource::Dist(SourceDist::DirectUrl(dist)) = source { | |
| parse_url_hashes(&dist.url) | |
| } else if let BuildableSource::Url(SourceUrl::Direct(source)) = source { | |
| parse_url_hashes(source.url) | |
| } else { | |
| None | |
| }; | |
| // If resolving metadata requires a build, validate the declared hashes before executing | |
| // the backend, even when the caller only requested hash collection. | |
| let build_hash_policy = match hashes.validation { | |
| HashValidation::None => match hashes.collection { | |
| HashCollection::None => ArchiveHashPolicy::None, | |
| HashCollection::Url | HashCollection::All => ArchiveHashPolicy::Generate, | |
| }, | |
| HashValidation::None => { | |
| if let Some(hashes) = declared_hashes.as_ref() { | |
| ArchiveHashPolicy::All(hashes.as_slice()) | |
| } else if hashes.collection != HashCollection::None { | |
| ArchiveHashPolicy::Generate | |
| } else { | |
| ArchiveHashPolicy::None | |
| } | |
| } | |
| let url_hashes = if let BuildableSource::Dist(SourceDist::DirectUrl(dist)) = source { | |
| parse_url_hashes(&dist.url) | |
| } else if let BuildableSource::Url(SourceUrl::Direct(url)) = source { | |
| parse_url_hashes(url.url) | |
| } else { | |
| None | |
| }; | |
| let build_hash_policy = match hashes.validation { | |
| HashValidation::None => match hashes.collection { | |
| HashCollection::None => ArchiveHashPolicy::None, | |
| // If resolving metadata requires a build, validate any URL hash before executing | |
| // the backend, even when the caller only requested hash collection. | |
| HashCollection::Url | HashCollection::All => match url_hashes.as_ref() { | |
| Some(digests) => ArchiveHashPolicy::All(digests.as_slice()), | |
| None => ArchiveHashPolicy::Generate, | |
| }, | |
| }, | |
| HashValidation::Any(_) | HashValidation::All(_) => hashes.validation.into(), | |
| }; |
This makes the diff much smaller and I think it's clearer what is going on.
| indoc! {r#" | ||
| [build-system] | ||
| requires = [] | ||
| build-backend = "must_not_run" |
There was a problem hiding this comment.
This works but it relies on us erroring out for a non-existent build backend package before we report the hash mismatch.
A stronger guarantee is a build backend which is real and would have a side-effect if we ever imported it.
See for example: https://github.com/astral-sh/uv/blob/100842334c1b9a55320f961a8cfe608c3f5794ec/crates/uv/tests/lock/lock.rs#L2036-L2051
| Ok(()) | ||
| } | ||
|
|
||
| /// Validate and reuse source URL hashes when reading metadata from a subdirectory. |
There was a problem hiding this comment.
This test doesn't check the case of a hash mismatch with a subdirectory and it's not covered elsewhere. Seems like it should be included for completeness.
| wheel-package @ https://example.org/wheel_package-1.0.0-py3-none-any.whl#sha256=0000000000000000000000000000000000000000000000000000000000000000 | ||
| source-package @ https://example.org/source_package-1.0.0.tar.gz#subdirectory=src&sha384=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
There was a problem hiding this comment.
nit: example.invalid is used in a few other places and is reserved as an invalid domain name which seems more appropriate here.
Chances that example.org starts serving python packages and --offline fails are slim but still...
Route the remaining package-operation errors through `UvError` and the standard error-chain renderer, then remove uv's direct `miette` dependency and global hook. Diagnostics use the same source-chain formatting and hint collection as other commands, with cause-specific hints before general command advice. No-solution headings omit trailing punctuation, retain their command context, and are not repeated inside build-dependency errors. Final errors remain visible with `-q` and are suppressed with `-qq`. Classify operation failures by their underlying cause instead of by which renderer handles them. Each error type owns its classification, and type-erased build errors forward it. Expected package, resolution, build, integrity, and lock-validation failures use code 1, while recognized transport, cache, filesystem, and internal failures use code 2. This deliberately changes some previously inconsistent statuses without attempting to normalize every standalone command or opaque archive-error path. Command-line argument errors remain code 2. Third-party dependencies may still use `miette` internally. Prior work: - #14546 removed `miette` from `uv venv`. - #17535 added first-party line wrapping. - #18090 established the `Hint` and `Hints` APIs. - #20155 made hints explicit in error-chain rendering. - #20156 preserved indentation in multiline causes. - #20159 migrated `uv build` errors to standard rendering. - #20160 migrated tool requirement errors to standard rendering. - #20188 introduced the explicit `UvError` model. - #20163 routed final errors through `Printer` for `-q` and `-qq`. - #20217 enabled cause-chain rendering for user errors. - #21563 added verification of index-provided metadata hashes. - #21279 reused URL-provided hashes during resolution. - #21584 renamed the hint-producing trait to `Hinted`. - #21577 added explicit hint ordering. Follow-up work: - #21566 collects hints for batched `uv tool upgrade` failures and fixes their quiet-mode output. - #21568 routes Python upgrade request errors and version-file hints through `UvError`. - #21587 separates operation-specific diagnostic context from exit-status classification. - #21599 renders error and warning causes with compact tree connectors.
Automated mise tool upgrades from local config. mise-managed tools: - `uv` Command: `mise upgrade --bump --local uv` <details> <summary>Version changelog (uv)</summary> | Tool | Requested | Installed | |------|-----------|-----------| | `uv` | `0.12.7` → `0.12.13` | `0.12.7` → `0.12.13` | </details> <details> <summary>Release notes (1 tools)</summary> <details> <summary>uv: `0.12.7` → `0.12.13` (astral-sh/uv)</summary> ### 0.12.8 ## Release Notes Released on 2026-08-31. ### Enhancements - Warn about invalid tool directories and continue upgrading valid tools with `uv tool upgrade --all` ([#21368](astral-sh/uv#21368)) ### Preview features - Deduplicate identical files within and across cached wheels with the `content-addressed-cache` preview feature ([#21327](astral-sh/uv#21327)) - Reduce allocations while extracting content-addressed wheels by reusing the hashing buffer across files ([#21340](astral-sh/uv#21340)) - Speed up content-addressed cache cleanup on macOS by reading hard-link counts in bulk ([#21344](astral-sh/uv#21344)) ### Performance - Prevent concurrent uv processes from downloading and extracting the same remote wheel more than once ([#21379](astral-sh/uv#21379)) - Speed up dependency graph construction from large lockfiles by indexing packages during traversal ([#21373](astral-sh/uv#21373)) - Extend indexed lockfile traversal to exports, dependency trees, audits, and freshness checks ([#21377](astral-sh/uv#21377)) - Speed up warm resolutions by reducing repeated marker interner work ([#21300](astral-sh/uv#21300)) ### Bug fixes - Do not trust hashes from direct URLs discovered only in wheel metadata when installing with `--require-hashes` ([#21348](astral-sh/uv#21348)) - Use a compatible Azure Storage API version for anonymous and authenticated requests, allowing credential retries when public access is disabled ([#21366](astral-sh/uv#21366)) - Redact Azure shared access signature (`sig`) query parameters from displayed URLs ([#21360](astral-sh/uv#21360)) - Treat projects below one-level workspace member globs as standalone instead of aborting workspace discovery ([#21341](https://github.com/astra… (truncated) ### 0.12.9 ## Release Notes Released on 2026-09-01. ### Python - Add CPython 3.15.0rc2 ([#21413](astral-sh/uv#21413), [#21415](astral-sh/uv#21415)) ### Enhancements - Add `--no-locked` and `--no-frozen` to disable lock modes enabled by `UV_LOCKED` and `UV_FROZEN` for a single invocation ([#21408](astral-sh/uv#21408)) - Report the exact command-line lock-mode flag in warnings and errors ([#21402](astral-sh/uv#21402)) ### Performance - Speed up cold wheel installs by extracting each streaming ZIP archive in a single blocking task and reusing buffers across files ([#21372](astral-sh/uv#21372)) ### Bug fixes - Update `async_http_range_reader` to 0.11.1 to address a potential memory-safety issue when reading metadata ranges from untrusted wheels ([#21401](astral-sh/uv#21401)) - Remove sensitive headers when redirects cross authentication realms, including same-host redirects that change URL schemes ([#21382](astral-sh/uv#21382)) - Redact secrets in signed URLs from retry diagnostics, including nested request errors ([#21381](astral-sh/uv#21381)) - Give `--locked`, `--frozen`, `--check`, and `--check-exists` precedence over conflicting `UV_LOCKED` and `UV_FROZEN` values ([#21396](astral-sh/uv#21396)) - Prevent concurrent uv processes from redundantly extracting the same local or source-built wheel ([#21400](astral-sh/uv#21400)) ## Install uv 0.12.9 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.9/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.9/uv-installer.ps1 | iex" ``` ## Downlo… (truncated) ### 0.12.10 ## Release Notes Released on 2026-09-04. ### Enhancements - Attempt to revoke short-lived PyPI trusted-publishing tokens after `uv publish` completes, including when publishing fails ([#21423](astral-sh/uv#21423)) ### Preview features - Omit `exclude-newer-package` settings for packages outside the resolution from `uv.lock` with the `missing-exclude-newer-package-lock` preview feature ([#21455](astral-sh/uv#21455)) - Show terminal dependency cycles in `uv tree --invert` output ([#21404](astral-sh/uv#21404)) ### Performance - Speed up locking large workspaces with conflicts by excluding unrelated extras and dependency groups from conflict simplification ([#21399](astral-sh/uv#21399)) - Speed up `uv publish` by hashing each artifact in a single blocking task and reusing the buffer across reads ([#21389](astral-sh/uv#21389)) ### Bug fixes - Prevent `--locked` from failing when `exclude-newer-package` settings differ only for packages outside the resolution ([#21454](astral-sh/uv#21454)) - Allow `uv lock --check` to reuse a lockfile when an absolute `exclude-newer` cutoff is moved later ([#19571](astral-sh/uv#19571)) - Allow `uv lock --check` to reuse a lockfile when a package-specific `exclude-newer` cutoff is disabled ([#21450](astral-sh/uv#21450)) - Require an explicit `--name` when `uv init` would infer a project name reserved for a Python interpreter ([#21395](astral-sh/uv#21395)) - Write package-specific `exclude-newer` cutoffs to `uv.lock` in a deterministic order ([#21453](astral-sh/uv#21453)) ## Install uv 0.12.10 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-installer.sh | sh ``` ### Instal… (truncated) ### 0.12.11 ## Release Notes Released on 2026-09-08. ### Preview features - Generate missing artifact hashes when exporting `pylock.toml` files to ensure they conform to PEP 751 ([#20146](astral-sh/uv#20146)) - Warn when `pylock.toml` artifact hash tables are empty, which will be rejected in a future uv release ([#21462](astral-sh/uv#21462)) ### Performance - Speed up installs that overwrite existing files by eliminating per-file temporary directories for atomic hard-link, symlink, and reflink replacements ([#21478](astral-sh/uv#21478)) - Speed up installs that merge copied wheels into existing environments by replacing per-file temporary directories with adjacent temporary files ([#21468](astral-sh/uv#21468)) - Speed up local wheel installs by replacing the shared ZIP cursor lock with positioned reads ([#21500](astral-sh/uv#21500)) - Speed up local wheel installs by reusing ZIP readers and buffers across extracted files ([#21499](astral-sh/uv#21499)) - Avoid transitive dependency checks and unnecessary resolution when `uv pip install --no-deps` finds the requested packages already installed ([#21523](astral-sh/uv#21523)) ### Bug fixes - Verify source archives against hashes recorded in `uv.lock` before reading their metadata or running their build backends ([#21223](astral-sh/uv#21223)) - Verify supplied hashes for registry requirements pinned with `===` under both `--verify-hashes` and `--require-hashes` ([#21543](astral-sh/uv#21543)) - Apply hashes from public-version pins to matching local versions when no exact local-version hash is provided ([#21544](astral-sh/uv#21544)) - Support PowerShell virtual environment activation from UNC paths, including WSL paths ([#19159](astral-sh/uv#19159)) - Tri… (truncated) ### 0.12.12 ## Release Notes Released on 2026-09-09. The executables in our macOS and Windows release archives and `uv` and `uv_build` wheels are now code-signed. macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables verification of the release publisher and binary integrity, supports publisher-based allowlisting, and should reduce security warnings and antivirus false positives. ### Bug fixes - Exclude distributions uploaded after the `exclude-newer` cutoff from lockfiles and generated requirement hashes ([#21539](astral-sh/uv#21539)) ## Install uv 0.12.12 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-installer.ps1 | iex" ``` ## Download uv 0.12.12 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-aarch64-apple-darwin.tar.gz.sha256) | | [uv-x86_64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-x86_64-apple-darwin.tar.gz.sha256) | | [uv-aarch64-pc-windows-msvc.zip](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-aarch64-pc-windows-msvc.zip.sha256) | | [uv-i68… (truncated) ### 0.12.13 ## Release Notes Released on 2026-09-10. ### Python - Add GraalPy 3.13.0 ([#21431](astral-sh/uv#21431)) ### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#21563](astral-sh/uv#21563)) ### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#21555](astral-sh/uv#21555)) ### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#21279](astral-sh/uv#21279)) ### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#21563](astral-sh/uv#21563)) ## Install uv 0.12.13 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.ps1 | iex" ``` ## Download uv 0.12.13 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz.sha256) | | [uv-x86_64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz.sha256) | | [uv-aarch64-pc… (truncated) </details> </details> Modified files: - `.mise.toml`
Automated mise tool upgrades from local config. mise-managed tools: - `uv` Command: `mise upgrade --bump --local uv` <details> <summary>Version changelog (uv)</summary> | Tool | Requested | Installed | |------|-----------|-----------| | `uv` | `0.12.7` → `0.12.13` | `0.12.7` → `0.12.13` | </details> <details> <summary>Release notes (1 tools)</summary> <details> <summary>uv: `0.12.7` → `0.12.13` (astral-sh/uv)</summary> ### 0.12.8 ## Release Notes Released on 2026-08-31. ### Enhancements - Warn about invalid tool directories and continue upgrading valid tools with `uv tool upgrade --all` ([#21368](astral-sh/uv#21368)) ### Preview features - Deduplicate identical files within and across cached wheels with the `content-addressed-cache` preview feature ([#21327](astral-sh/uv#21327)) - Reduce allocations while extracting content-addressed wheels by reusing the hashing buffer across files ([#21340](astral-sh/uv#21340)) - Speed up content-addressed cache cleanup on macOS by reading hard-link counts in bulk ([#21344](astral-sh/uv#21344)) ### Performance - Prevent concurrent uv processes from downloading and extracting the same remote wheel more than once ([#21379](astral-sh/uv#21379)) - Speed up dependency graph construction from large lockfiles by indexing packages during traversal ([#21373](astral-sh/uv#21373)) - Extend indexed lockfile traversal to exports, dependency trees, audits, and freshness checks ([#21377](astral-sh/uv#21377)) - Speed up warm resolutions by reducing repeated marker interner work ([#21300](astral-sh/uv#21300)) ### Bug fixes - Do not trust hashes from direct URLs discovered only in wheel metadata when installing with `--require-hashes` ([#21348](astral-sh/uv#21348)) - Use a compatible Azure Storage API version for anonymous and authenticated requests, allowing credential retries when public access is disabled ([#21366](astral-sh/uv#21366)) - Redact Azure shared access signature (`sig`) query parameters from displayed URLs ([#21360](astral-sh/uv#21360)) - Treat projects below one-level workspace member globs as standalone instead of aborting workspace discovery ([#21341](https://github.com/astra… (truncated) ### 0.12.9 ## Release Notes Released on 2026-09-01. ### Python - Add CPython 3.15.0rc2 ([#21413](astral-sh/uv#21413), [#21415](astral-sh/uv#21415)) ### Enhancements - Add `--no-locked` and `--no-frozen` to disable lock modes enabled by `UV_LOCKED` and `UV_FROZEN` for a single invocation ([#21408](astral-sh/uv#21408)) - Report the exact command-line lock-mode flag in warnings and errors ([#21402](astral-sh/uv#21402)) ### Performance - Speed up cold wheel installs by extracting each streaming ZIP archive in a single blocking task and reusing buffers across files ([#21372](astral-sh/uv#21372)) ### Bug fixes - Update `async_http_range_reader` to 0.11.1 to address a potential memory-safety issue when reading metadata ranges from untrusted wheels ([#21401](astral-sh/uv#21401)) - Remove sensitive headers when redirects cross authentication realms, including same-host redirects that change URL schemes ([#21382](astral-sh/uv#21382)) - Redact secrets in signed URLs from retry diagnostics, including nested request errors ([#21381](astral-sh/uv#21381)) - Give `--locked`, `--frozen`, `--check`, and `--check-exists` precedence over conflicting `UV_LOCKED` and `UV_FROZEN` values ([#21396](astral-sh/uv#21396)) - Prevent concurrent uv processes from redundantly extracting the same local or source-built wheel ([#21400](astral-sh/uv#21400)) ## Install uv 0.12.9 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.9/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.9/uv-installer.ps1 | iex" ``` ## Downlo… (truncated) ### 0.12.10 ## Release Notes Released on 2026-09-04. ### Enhancements - Attempt to revoke short-lived PyPI trusted-publishing tokens after `uv publish` completes, including when publishing fails ([#21423](astral-sh/uv#21423)) ### Preview features - Omit `exclude-newer-package` settings for packages outside the resolution from `uv.lock` with the `missing-exclude-newer-package-lock` preview feature ([#21455](astral-sh/uv#21455)) - Show terminal dependency cycles in `uv tree --invert` output ([#21404](astral-sh/uv#21404)) ### Performance - Speed up locking large workspaces with conflicts by excluding unrelated extras and dependency groups from conflict simplification ([#21399](astral-sh/uv#21399)) - Speed up `uv publish` by hashing each artifact in a single blocking task and reusing the buffer across reads ([#21389](astral-sh/uv#21389)) ### Bug fixes - Prevent `--locked` from failing when `exclude-newer-package` settings differ only for packages outside the resolution ([#21454](astral-sh/uv#21454)) - Allow `uv lock --check` to reuse a lockfile when an absolute `exclude-newer` cutoff is moved later ([#19571](astral-sh/uv#19571)) - Allow `uv lock --check` to reuse a lockfile when a package-specific `exclude-newer` cutoff is disabled ([#21450](astral-sh/uv#21450)) - Require an explicit `--name` when `uv init` would infer a project name reserved for a Python interpreter ([#21395](astral-sh/uv#21395)) - Write package-specific `exclude-newer` cutoffs to `uv.lock` in a deterministic order ([#21453](astral-sh/uv#21453)) ## Install uv 0.12.10 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.10/uv-installer.sh | sh ``` ### Instal… (truncated) ### 0.12.11 ## Release Notes Released on 2026-09-08. ### Preview features - Generate missing artifact hashes when exporting `pylock.toml` files to ensure they conform to PEP 751 ([#20146](astral-sh/uv#20146)) - Warn when `pylock.toml` artifact hash tables are empty, which will be rejected in a future uv release ([#21462](astral-sh/uv#21462)) ### Performance - Speed up installs that overwrite existing files by eliminating per-file temporary directories for atomic hard-link, symlink, and reflink replacements ([#21478](astral-sh/uv#21478)) - Speed up installs that merge copied wheels into existing environments by replacing per-file temporary directories with adjacent temporary files ([#21468](astral-sh/uv#21468)) - Speed up local wheel installs by replacing the shared ZIP cursor lock with positioned reads ([#21500](astral-sh/uv#21500)) - Speed up local wheel installs by reusing ZIP readers and buffers across extracted files ([#21499](astral-sh/uv#21499)) - Avoid transitive dependency checks and unnecessary resolution when `uv pip install --no-deps` finds the requested packages already installed ([#21523](astral-sh/uv#21523)) ### Bug fixes - Verify source archives against hashes recorded in `uv.lock` before reading their metadata or running their build backends ([#21223](astral-sh/uv#21223)) - Verify supplied hashes for registry requirements pinned with `===` under both `--verify-hashes` and `--require-hashes` ([#21543](astral-sh/uv#21543)) - Apply hashes from public-version pins to matching local versions when no exact local-version hash is provided ([#21544](astral-sh/uv#21544)) - Support PowerShell virtual environment activation from UNC paths, including WSL paths ([#19159](astral-sh/uv#19159)) - Tri… (truncated) ### 0.12.12 ## Release Notes Released on 2026-09-09. The executables in our macOS and Windows release archives and `uv` and `uv_build` wheels are now code-signed. macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables verification of the release publisher and binary integrity, supports publisher-based allowlisting, and should reduce security warnings and antivirus false positives. ### Bug fixes - Exclude distributions uploaded after the `exclude-newer` cutoff from lockfiles and generated requirement hashes ([#21539](astral-sh/uv#21539)) ## Install uv 0.12.12 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-installer.ps1 | iex" ``` ## Download uv 0.12.12 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-aarch64-apple-darwin.tar.gz.sha256) | | [uv-x86_64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-x86_64-apple-darwin.tar.gz.sha256) | | [uv-aarch64-pc-windows-msvc.zip](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.12/uv-aarch64-pc-windows-msvc.zip.sha256) | | [uv-i68… (truncated) ### 0.12.13 ## Release Notes Released on 2026-09-10. ### Python - Add GraalPy 3.13.0 ([#21431](astral-sh/uv#21431)) ### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#21563](astral-sh/uv#21563)) ### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#21555](astral-sh/uv#21555)) ### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#21279](astral-sh/uv#21279)) ### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#21563](astral-sh/uv#21563)) ## Install uv 0.12.13 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.ps1 | iex" ``` ## Download uv 0.12.13 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz.sha256) | | [uv-x86_64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz.sha256) | | [uv-aarch64-pc… (truncated) </details> </details> Modified files: - `.mise.toml` Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Automated mise tool upgrades from local config. mise-managed tools: - `uv` Command: `mise upgrade --bump --local uv` <details> <summary>Version changelog (uv)</summary> | Tool | Requested | Installed | |------|-----------|-----------| | `uv` | `0.12.12` → `0.12.13` | `0.12.12` → `0.12.13` | </details> <details> <summary>Release notes (1 tools)</summary> <details> <summary>uv: `0.12.12` → `0.12.13` (astral-sh/uv)</summary> ### 0.12.13 ## Release Notes Released on 2026-09-10. ### Python - Add GraalPy 3.13.0 ([#21431](astral-sh/uv#21431)) ### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#21563](astral-sh/uv#21563)) ### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#21555](astral-sh/uv#21555)) ### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#21279](astral-sh/uv#21279)) ### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#21563](astral-sh/uv#21563)) ## Install uv 0.12.13 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.ps1 | iex" ``` ## Download uv 0.12.13 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz.sha256) | | [uv-x86_64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz.sha256) | | [uv-aarch64-pc… (truncated) </details> </details> Modified files: - `.mise.toml` Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Automated mise tool upgrades from local config. mise-managed tools: - `action-validator` - `actionlint` - `aube` - `editorconfig-checker` - `ghalint` - `pinact` - `pipx:gh-action-pulse` - `prek` - `rumdl` - `shellcheck` - `shfmt` - `tombi` - `uv` - `yamlfmt` - `yamllint` - `zizmor` Command: `mise upgrade --bump --local action-validator actionlint aube editorconfig-checker ghalint pinact pipx:gh-action-pulse prek rumdl shellcheck shfmt tombi uv yamlfmt yamllint zizmor` <details> <summary>Version changelog (2 tools)</summary> | Tool | Requested | Installed | |------|-----------|-----------| | `rumdl` | `0.2.70` → `0.2.71` | `0.2.70` → `0.2.71` | | `uv` | `0.12.12` → `0.12.13` | `0.12.12` → `0.12.13` | </details> <details> <summary>Release notes (2 tools)</summary> <details> <summary>rumdl: `0.2.70` → `0.2.71` (rvben/rumdl)</summary> ### v0.2.71 ### Fixed - **MD034**: do not report the tail of a schemed URI as a bare email ([a8df862](rvben/rumdl@a8df862)) - **lsp**: write the mailto scheme when converting a bare email to a link ([600e229](rvben/rumdl@600e229)) - **config**: measure suggestion distance in characters, not bytes ([eabdf80](rvben/rumdl@eabdf80)) - **MD034**: emit a link, not an autolink, when fixing bare URLs in MDX ([98a6255](rvben/rumdl@98a6255)) - **config**: suggestion panics on multibyte characters ([dd88a4a](rvben/rumdl@dd88a4a)) ## Downloads | File | Platform | Checksum | |------|----------|----------| | [rumdl-v0.2.71-x86_64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-x86_64-unknown-linux-gnu.tar.gz) | Linux x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-x86_64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.71-x86_64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-x86_64-unknown-linux-musl.tar.gz) | Linux x86_64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-x86_64-unknown-linux-musl.tar.gz.sha256) | | [rumdl-v0.2.71-aarch64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-aarch64-unknown-linux-gnu.tar.gz) | Linux ARM64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.71-aarch64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-aarch64-unknown-linux-musl.tar.gz) | Linux ARM64 (musl) | [checksum](https://git… (truncated) </details> <details> <summary>uv: `0.12.12` → `0.12.13` (astral-sh/uv)</summary> ### 0.12.13 ## Release Notes Released on 2026-09-10. ### Python - Add GraalPy 3.13.0 ([#21431](astral-sh/uv#21431)) ### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#21563](astral-sh/uv#21563)) ### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#21555](astral-sh/uv#21555)) ### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#21279](astral-sh/uv#21279)) ### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#21563](astral-sh/uv#21563)) ## Install uv 0.12.13 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.ps1 | iex" ``` ## Download uv 0.12.13 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz.sha256) | | [uv-x86_64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz.sha256) | | [uv-aarch64-pc… (truncated) </details> </details> Modified files: - `.mise.toml` Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [uv](https://github.com/astral-sh/uv) | tools | patch | `0.12.12` → `0.12.13` | --- ### Release Notes <details> <summary>astral-sh/uv (uv)</summary> ### [`v0.12.13`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01213) [Compare Source](astral-sh/uv@0.12.12...0.12.13) Released on 2026-09-10. ##### Python - Add GraalPy 3.13.0 ([#​21431](astral-sh/uv#21431)) ##### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#​21563](astral-sh/uv#21563)) ##### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#​21555](astral-sh/uv#21555)) ##### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#​21279](astral-sh/uv#21279)) ##### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#​18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#​21563](astral-sh/uv#21563)) </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/London) - Branch creation - At any time (no schedule defined) - 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. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC43OS4yIiwidXBkYXRlZEluVmVyIjoiNDQuODMuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvZ2l0aHViLXJlbGVhc2UiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.hayden.moe/hayden/phoebe/pulls/563
Automated mise tool upgrades from local config. mise-managed tools: - `action-validator` - `actionlint` - `editorconfig-checker` - `ghalint` - `lychee` - `pinact` - `pipx:gh-action-pulse` - `prek` - `rumdl` - `shellcheck` - `shfmt` - `tombi` - `uv` - `yamlfmt` - `yamllint` - `zizmor` Command: `mise upgrade --bump --local action-validator actionlint editorconfig-checker ghalint lychee pinact pipx:gh-action-pulse prek rumdl shellcheck shfmt tombi uv yamlfmt yamllint zizmor` <details> <summary>Version changelog (5 tools)</summary> | Tool | Requested | Installed | |------|-----------|-----------| | `pinact` | `4.1.1` → `5.0.0` | `4.1.1` → `5.0.0` | | `prek` | `0.5.2` → `0.5.3` | `0.5.2` → `0.5.3` | | `rumdl` | `0.2.70` → `0.2.73` | `0.2.70` → `0.2.73` | | `tombi` | `1.5.4` → `1.5.5` | `1.5.4` → `1.5.5` | | `uv` | `0.12.12` → `0.12.13` | `0.12.12` → `0.12.13` | </details> <details> <summary>Release notes (5 tools)</summary> <details> <summary>pinact: `4.1.1` → `5.0.0` (suzuki-shunsuke/pinact)</summary> ### v5.0.0 suzuki-shunsuke/pinact@v4.1.1...v5.0.0 [Upgrade Guide](https://github.com/suzuki-shunsuke/pinact/blob/v5.0.0/docs/upgrade_guide/v5.md) ## 🤖 pinact is now AI friendly v5 is about coding agents. An agent that is asked about pinact, or that hits a pinact error in CI, has until now had to answer from its training data, from the source code, or from whichever version of the website it happened to land on. v5 gives it three things so that it answers from the pinact that is actually installed: #1708 An Agent Skill #1708 `pinact docs`: the documentation, embedded in the binary #1705 `pinact json-schema`: the JSON Schema of the configuration file, embedded in the binary ### An Agent Skill ```sh gh skill install suzuki-shunsuke/pinact pinact ``` The skill carries no documentation of its own, deliberately. It is installed separately from the binary, so anything copied into it would go stale, and an agent would confidently describe a flag or an error code of a version that isn't the one on the machine. Instead the skill tells the agent to run `pinact docs list` and `pinact docs show <name>` before answering, so the answer always comes from the installed pinact and the skill and the binary can never disagree about a version. It adds only the few things an agent gets wrong unless it is told: that `pinact run` edits files and `--check` is the way to look without touching them, that `--update` changes which version a workflow uses, and that the exit codes 1 and 2 are findings rather than pinact failing. ### `pinact docs` ```console $ pinact docs list # the name and the description of every document, as JSON $ pinact docs show config # one document $ pinact docs show codes/005 ``` The documents are embedded in the binary, so there is nothing to fetch. An agent doesn't need network access to read them, doesn't have to guess which branch or tag of the repository to read, and cannot land on the documentation of a versi… (truncated) </details> <details> <summary>prek: `0.5.2` → `0.5.3` (j178/prek)</summary> ### v0.5.3 ## Release Notes Released on 2026-09-13. ### Enhancements - Add PEP 740 attestations for PyPI releases ([#2705](j178/prek#2705)) - Add a `check-jsonc` builtin hook ([#2682](j178/prek#2682)) - Allow disabling automatic uv installation ([#2702](j178/prek#2702)) ### Bug fixes - Fix Julia additional dependency specifiers ([#2703](j178/prek#2703)) - Update `granit-parser` to fix YAML flow indentation ([#2707](j178/prek#2707)) ### Contributors - @clbarnes - @j178 - @tisonkun ## Install prek 0.5.3 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/j178/prek/releases/download/v0.5.3/prek-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://github.com/j178/prek/releases/download/v0.5.3/prek-installer.ps1 | iex" ``` ### Install prebuilt binaries via Homebrew ```sh brew install prek ``` ## Download prek 0.5.3 | File | Platform | Checksum | |--------|----------|----------| | [prek-aarch64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.5.3/prek-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://github.com/j178/prek/releases/download/v0.5.3/prek-aarch64-apple-darwin.tar.gz.sha256) | | [prek-x86_64-apple-darwin.tar.gz](https://github.com/j178/prek/releases/download/v0.5.3/prek-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://github.com/j178/prek/releases/download/v0.5.3/prek-x86_64-apple-darwin.tar.gz.sha256) | | [prek-aarch64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/download/v0.5.3/prek-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://github.com/j178/prek/releases/download/v0.5.3/prek-aarch64-pc-windows-msvc.zip.sha256) | | [prek-x86_64-pc-windows-msvc.zip](https://github.com/j178/prek/releases/downloa… (truncated) </details> <details> <summary>rumdl: `0.2.70` → `0.2.73` (rvben/rumdl)</summary> ### v0.2.71 ### Fixed - **MD034**: do not report the tail of a schemed URI as a bare email ([a8df862](rvben/rumdl@a8df862)) - **lsp**: write the mailto scheme when converting a bare email to a link ([600e229](rvben/rumdl@600e229)) - **config**: measure suggestion distance in characters, not bytes ([eabdf80](rvben/rumdl@eabdf80)) - **MD034**: emit a link, not an autolink, when fixing bare URLs in MDX ([98a6255](rvben/rumdl@98a6255)) - **config**: suggestion panics on multibyte characters ([dd88a4a](rvben/rumdl@dd88a4a)) ## Downloads | File | Platform | Checksum | |------|----------|----------| | [rumdl-v0.2.71-x86_64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-x86_64-unknown-linux-gnu.tar.gz) | Linux x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-x86_64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.71-x86_64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-x86_64-unknown-linux-musl.tar.gz) | Linux x86_64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-x86_64-unknown-linux-musl.tar.gz.sha256) | | [rumdl-v0.2.71-aarch64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-aarch64-unknown-linux-gnu.tar.gz) | Linux ARM64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.71-aarch64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.71/rumdl-v0.2.71-aarch64-unknown-linux-musl.tar.gz) | Linux ARM64 (musl) | [checksum](https://git… (truncated) ### v0.2.72 ### Added - **MD090**: add rule flagging horizontal rules directly before headings ([09dcae5](rvben/rumdl@09dcae5)) ### Fixed - **MD013**: end a sentence after a closing marker run of any shape ([e63206c](rvben/rumdl@e63206c)) ## Downloads | File | Platform | Checksum | |------|----------|----------| | [rumdl-v0.2.72-x86_64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-x86_64-unknown-linux-gnu.tar.gz) | Linux x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-x86_64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.72-x86_64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-x86_64-unknown-linux-musl.tar.gz) | Linux x86_64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-x86_64-unknown-linux-musl.tar.gz.sha256) | | [rumdl-v0.2.72-aarch64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-aarch64-unknown-linux-gnu.tar.gz) | Linux ARM64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.72-aarch64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-aarch64-unknown-linux-musl.tar.gz) | Linux ARM64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-aarch64-unknown-linux-musl.tar.gz.sha256) | | [rumdl-v0.2.72-x86_64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-x86_64-apple-darwin.tar.gz) | macOS x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.72/rumdl-v0.2.72-x86_64-apple-darwin.tar.gz.sha256) | | [rumdl-v0.2.72-aarch64-apple-darwin.tar.gz](https://github.com/rvben/rumdl/… (truncated) ### v0.2.73 ### Fixed - **MD022,MD031,MD032,MD058**: count a comment-only line as a blank line ([b394e30](rvben/rumdl@b394e30)) - **MD057**: stop requiring index.md for directory links in filesystem mode ([c04ae4e](rvben/rumdl@c04ae4e)) - **MD051**: validate fragments in repository-absolute cross-file links ([ead5f39](rvben/rumdl@ead5f39)) - **parser**: stop reading headings inside blocks whose body is not Markdown ([59958b1](rvben/rumdl@59958b1)) - **MD077**: carry a code block's interior indentation when reindenting its fence ([00c578d](rvben/rumdl@00c578d)) ## Downloads | File | Platform | Checksum | |------|----------|----------| | [rumdl-v0.2.73-x86_64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.73/rumdl-v0.2.73-x86_64-unknown-linux-gnu.tar.gz) | Linux x86_64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.73/rumdl-v0.2.73-x86_64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.73-x86_64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.73/rumdl-v0.2.73-x86_64-unknown-linux-musl.tar.gz) | Linux x86_64 (musl) | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.73/rumdl-v0.2.73-x86_64-unknown-linux-musl.tar.gz.sha256) | | [rumdl-v0.2.73-aarch64-unknown-linux-gnu.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.73/rumdl-v0.2.73-aarch64-unknown-linux-gnu.tar.gz) | Linux ARM64 | [checksum](https://github.com/rvben/rumdl/releases/download/v0.2.73/rumdl-v0.2.73-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [rumdl-v0.2.73-aarch64-unknown-linux-musl.tar.gz](https://github.com/rvben/rumdl/releases/download/v0.2.73/rumdl-v0.2.73-aarch64-unknown-linux-musl.tar.gz) | L… (truncated) </details> <details> <summary>tombi: `1.5.4` → `1.5.5` (tombi-toml/tombi)</summary> ### v1.5.5 <!-- Release notes generated using configuration in .github/release.yml at v1.5.5 --> ## What's Changed ### 🛠️ Other Changes * fix(lsp): stop logging empty workspace diagnostics by @ya7010 in tombi-toml/tombi#2177 * fix(vscode): persist status bar item visibility by @ya7010 in tombi-toml/tombi#2178 * fix(lsp): skip workspace diagnostics when lsp.diagnostic is disabled by @ya7010 in tombi-toml/tombi#2179 **Full Changelog**: tombi-toml/tombi@v1.5.4...v1.5.5 </details> <details> <summary>uv: `0.12.12` → `0.12.13` (astral-sh/uv)</summary> ### 0.12.13 ## Release Notes Released on 2026-09-10. ### Python - Add GraalPy 3.13.0 ([#21431](astral-sh/uv#21431)) ### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#21563](astral-sh/uv#21563)) ### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#21555](astral-sh/uv#21555)) ### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#21279](astral-sh/uv#21279)) ### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#21563](astral-sh/uv#21563)) ## Install uv 0.12.13 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.ps1 | iex" ``` ## Download uv 0.12.13 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz.sha256) | | [uv-x86_64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz.sha256) | | [uv-aarch64-pc… (truncated) </details> </details> Modified files: - `.mise.toml` Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Automated mise tool upgrades from local config. mise-managed tools: - `uv` Command: `mise upgrade --bump --local uv` <details> <summary>Version changelog (uv)</summary> | Tool | Requested | Installed | |------|-----------|-----------| | `uv` | `0.12.12` → `0.12.13` | `0.12.12` → `0.12.13` | </details> <details> <summary>Release notes (1 tools)</summary> <details> <summary>uv: `0.12.12` → `0.12.13` (astral-sh/uv)</summary> ### 0.12.13 ## Release Notes Released on 2026-09-10. ### Python - Add GraalPy 3.13.0 ([#21431](astral-sh/uv#21431)) ### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#21563](astral-sh/uv#21563)) ### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#21555](astral-sh/uv#21555)) ### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#21279](astral-sh/uv#21279)) ### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#21563](astral-sh/uv#21563)) ## Install uv 0.12.13 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.ps1 | iex" ``` ## Download uv 0.12.13 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz.sha256) | | [uv-x86_64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz.sha256) | | [uv-aarch64-pc… (truncated) </details> </details> Modified files: - `.mise.toml` Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ghcr.io/astral-sh/uv](https://github.com/astral-sh/uv) | final | patch | `0.12.12` → `0.12.15` | --- >⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/51) for more information. --- ### Release Notes <details> <summary>astral-sh/uv (ghcr.io/astral-sh/uv)</summary> ### [`v0.12.15`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01215) [Compare Source](astral-sh/uv@0.12.14...0.12.15) Released on 2026-09-15. This release fixes a regression in 0.12.14 that lead to rejecting valid installation commands such as using `uv pip install --system` in `python:*` docker images or when using `uv pip install --target .`. ([#​21699](astral-sh/uv#21699)) ##### Performance - Speed up cold-cache resolution and HTTP cache revalidation by batching cache writes ([#​21675](astral-sh/uv#21675)) ##### Bug fixes - Revert "Reject symlinked wheel installation destinations" ([#​21699](astral-sh/uv#21699)) ### [`v0.12.14`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01214) [Compare Source](astral-sh/uv@0.12.13...0.12.14) Released on 2026-09-15. Package-operation errors now use uv's standard diagnostics, with consistent hints and compact, labeled cause chains. ([#​17110](astral-sh/uv#17110), [#​21599](astral-sh/uv#21599), [#​21603](astral-sh/uv#21603)) Package-operation exit codes now reflect the underlying cause: expected failures return 1, while recognized operational and internal failures return 2. ([#​17110](astral-sh/uv#17110)) ##### Enhancements - Resume interrupted downloads with HTTP Range requests when supported ([#​21570](astral-sh/uv#21570)) - Show underlying causes and hints in user warnings ([#​21565](astral-sh/uv#21565)) - Show resolver hints for failed `uv tool upgrade` operations ([#​21566](astral-sh/uv#21566)) ##### Preview features - Export multiple dependency selections from a shared lockfile in one `uv export --batch` invocation with the `batch-export` preview feature ([#​21618](astral-sh/uv#21618)) ##### Performance - Speed up dependency resolution from local wheelhouses by reading wheel metadata in a single blocking task ([#​21619](astral-sh/uv#21619)) - Speed up cold resolution against large package indexes by parsing Simple API responses in bounded background workers ([#​21593](astral-sh/uv#21593)) - Speed up warm-cache resolution by decoding fresh HTTP cache entries in the cache-read task ([#​21621](astral-sh/uv#21621)) ##### Bug fixes - Select releases that satisfy `required-environments` within each resolver fork instead of combining incompatible wheel coverage across forks ([#​21672](astral-sh/uv#21672)) - Install packages with paths longer than `MAX_PATH` on Windows systems without long-path support enabled ([#​21625](astral-sh/uv#21625)) - Prevent `uv python install` from overwriting valid unmanaged Python symlinks with relative targets on Unix ([#​21639](astral-sh/uv#21639)) - Redact credentials and signatures from missing-path-segment URL errors ([#​21616](astral-sh/uv#21616)) - Avoid exceeding the configured retry budget when cached HTTP responses fail revalidation ([#​21640](astral-sh/uv#21640)) - Prefer `bin/python` over `bin/python3` when discovering interpreters in Unix environments ([#​21559](astral-sh/uv#21559)) - Suppress managed-Python fallback warnings under `--quiet` ([#​21565](astral-sh/uv#21565)) - Keep failed `uv tool upgrade` errors visible with `-q` while suppressing them with `-qq` ([#​21566](astral-sh/uv#21566)) ### [`v0.12.13`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01213) [Compare Source](astral-sh/uv@0.12.12...0.12.13) Released on 2026-09-10. ##### Python - Add GraalPy 3.13.0 ([#​21431](astral-sh/uv#21431)) ##### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#​21563](astral-sh/uv#21563)) ##### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#​21555](astral-sh/uv#21555)) ##### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#​21279](astral-sh/uv#21279)) ##### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#​18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#​21563](astral-sh/uv#21563)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC43Ny4wIiwidXBkYXRlZEluVmVyIjoiNDQuNzcuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsidHlwZS9kZXBlbmRlbmNpZXMiXX0=--> Reviewed-on: https://git.tainton.uk/repos/labmcp/pulls/55 Co-authored-by: renovate[bot] <renovate-bot@git.tainton.uk>
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ghcr.io/astral-sh/uv](https://github.com/astral-sh/uv) | stage | patch | `0.12.12` → `0.12.15` | --- >⚠️ **Warning** > > Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/11) for more information. --- ### Release Notes <details> <summary>astral-sh/uv (ghcr.io/astral-sh/uv)</summary> ### [`v0.12.15`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01215) [Compare Source](astral-sh/uv@0.12.14...0.12.15) Released on 2026-09-15. This release fixes a regression in 0.12.14 that lead to rejecting valid installation commands such as using `uv pip install --system` in `python:*` docker images or when using `uv pip install --target .`. ([#​21699](astral-sh/uv#21699)) ##### Performance - Speed up cold-cache resolution and HTTP cache revalidation by batching cache writes ([#​21675](astral-sh/uv#21675)) ##### Bug fixes - Revert "Reject symlinked wheel installation destinations" ([#​21699](astral-sh/uv#21699)) ### [`v0.12.14`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01214) [Compare Source](astral-sh/uv@0.12.13...0.12.14) Released on 2026-09-15. Package-operation errors now use uv's standard diagnostics, with consistent hints and compact, labeled cause chains. ([#​17110](astral-sh/uv#17110), [#​21599](astral-sh/uv#21599), [#​21603](astral-sh/uv#21603)) Package-operation exit codes now reflect the underlying cause: expected failures return 1, while recognized operational and internal failures return 2. ([#​17110](astral-sh/uv#17110)) ##### Enhancements - Resume interrupted downloads with HTTP Range requests when supported ([#​21570](astral-sh/uv#21570)) - Show underlying causes and hints in user warnings ([#​21565](astral-sh/uv#21565)) - Show resolver hints for failed `uv tool upgrade` operations ([#​21566](astral-sh/uv#21566)) ##### Preview features - Export multiple dependency selections from a shared lockfile in one `uv export --batch` invocation with the `batch-export` preview feature ([#​21618](astral-sh/uv#21618)) ##### Performance - Speed up dependency resolution from local wheelhouses by reading wheel metadata in a single blocking task ([#​21619](astral-sh/uv#21619)) - Speed up cold resolution against large package indexes by parsing Simple API responses in bounded background workers ([#​21593](astral-sh/uv#21593)) - Speed up warm-cache resolution by decoding fresh HTTP cache entries in the cache-read task ([#​21621](astral-sh/uv#21621)) ##### Bug fixes - Select releases that satisfy `required-environments` within each resolver fork instead of combining incompatible wheel coverage across forks ([#​21672](astral-sh/uv#21672)) - Install packages with paths longer than `MAX_PATH` on Windows systems without long-path support enabled ([#​21625](astral-sh/uv#21625)) - Prevent `uv python install` from overwriting valid unmanaged Python symlinks with relative targets on Unix ([#​21639](astral-sh/uv#21639)) - Redact credentials and signatures from missing-path-segment URL errors ([#​21616](astral-sh/uv#21616)) - Avoid exceeding the configured retry budget when cached HTTP responses fail revalidation ([#​21640](astral-sh/uv#21640)) - Prefer `bin/python` over `bin/python3` when discovering interpreters in Unix environments ([#​21559](astral-sh/uv#21559)) - Suppress managed-Python fallback warnings under `--quiet` ([#​21565](astral-sh/uv#21565)) - Keep failed `uv tool upgrade` errors visible with `-q` while suppressing them with `-qq` ([#​21566](astral-sh/uv#21566)) ### [`v0.12.13`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01213) [Compare Source](astral-sh/uv@0.12.12...0.12.13) Released on 2026-09-10. ##### Python - Add GraalPy 3.13.0 ([#​21431](astral-sh/uv#21431)) ##### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#​21563](astral-sh/uv#21563)) ##### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#​21555](astral-sh/uv#21555)) ##### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#​21279](astral-sh/uv#21279)) ##### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#​18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#​21563](astral-sh/uv#21563)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC43Ny4wIiwidXBkYXRlZEluVmVyIjoiNDQuNzcuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsidHlwZS9kZXBlbmRlbmNpZXMiXX0=--> Reviewed-on: https://git.tainton.uk/repos/rsu/pulls/44 Co-authored-by: renovate[bot] <renovate-bot@git.tainton.uk>
uv 0.12.13 Created-by: HarmonybrewBot Commit-by: HarmonybrewBot Merged-by: HarmonybrewBot Description: Created by `brew bump` --- Created with `brew bump-formula-pr`.<details> <summary>release notes</summary> <pre>## Release Notes Released on 2026-09-10. ### Python - Add GraalPy 3.13.0 ([#21431](astral-sh/uv#21431)) ### Enhancements - Verify hashes when downloading PEP 658 metadata sidecars ([#21563](astral-sh/uv#21563)) ### Preview features - Respect `ty` exclusions when `uv check` automatically selects members of a virtual workspace ([#21555](astral-sh/uv#21555)) ### Performance - Avoid full wheel downloads during resolution by reusing supported hashes from direct URL fragments when metadata is available separately ([#21279](astral-sh/uv#21279)) ### Bug fixes - Edit Windows entry-point launcher resources in memory to support Nano Server and reduce antivirus contention ([#18713](astral-sh/uv#18713)) - Prefer `core-metadata` over legacy aliases in JSON index responses ([#21563](astral-sh/uv#21563)) ## Install uv 0.12.13 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.sh | sh ``` ### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-installer.ps1 | iex" ``` ## Download uv 0.12.13 | File | Platform | Checksum | |--------|----------|----------| | [uv-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-apple-darwin.tar.gz.sha256) | | [uv-x86_64-apple-darwin.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-apple-darwin.tar.gz.sha256) | | [uv-aarch64-pc-windows-msvc.zip](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-pc-windows-msvc.zip.sha256) | | [uv-i686-pc-windows-msvc.zip](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-i686-pc-windows-msvc.zip) | x86 Windows | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-i686-pc-windows-msvc.zip.sha256) | | [uv-x86_64-pc-windows-msvc.zip](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-pc-windows-msvc.zip.sha256) | | [uv-aarch64-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-unknown-linux-gnu.tar.gz) | ARM64 Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [uv-i686-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-i686-unknown-linux-gnu.tar.gz) | x86 Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-i686-unknown-linux-gnu.tar.gz.sha256) | | [uv-powerpc64le-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-powerpc64le-unknown-linux-gnu.tar.gz) | PPC64LE Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-powerpc64le-unknown-linux-gnu.tar.gz.sha256) | | [uv-riscv64gc-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-riscv64gc-unknown-linux-gnu.tar.gz) | RISCV Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-riscv64gc-unknown-linux-gnu.tar.gz.sha256) | | [uv-s390x-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-s390x-unknown-linux-gnu.tar.gz) | S390x Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-s390x-unknown-linux-gnu.tar.gz.sha256) | | [uv-x86_64-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-unknown-linux-gnu.tar.gz.sha256) | | [uv-armv7-unknown-linux-gnueabihf.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-armv7-unknown-linux-gnueabihf.tar.gz) | ARMv7 Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-armv7-unknown-linux-gnueabihf.tar.gz.sha256) | | [uv-aarch64-unknown-linux-musl.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-unknown-linux-musl.tar.gz) | ARM64 MUSL Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-aarch64-unknown-linux-musl.tar.gz.sha256) | | [uv-i686-unknown-linux-musl.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-i686-unknown-linux-musl.tar.gz) | x86 MUSL Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-i686-unknown-linux-musl.tar.gz.sha256) | | [uv-riscv64gc-unknown-linux-musl.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-riscv64gc-unknown-linux-musl.tar.gz) | RISCV MUSL Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-riscv64gc-unknown-linux-musl.tar.gz.sha256) | | [uv-x86_64-unknown-linux-musl.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-x86_64-unknown-linux-musl.tar.gz.sha256) | | [uv-arm-unknown-linux-musleabihf.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-arm-unknown-linux-musleabihf.tar.gz) | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-arm-unknown-linux-musleabihf.tar.gz.sha256) | | [uv-armv7-unknown-linux-musleabihf.tar.gz](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-armv7-unknown-linux-musleabihf.tar.gz) | ARMv7 MUSL Linux | [checksum](https://releases.astral.sh/github/uv/releases/download/0.12.13/uv-armv7-unknown-linux-musleabihf.tar.gz.sha256) | ## Verifying GitHub Artifact Attestations The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the [GitHub CLI](https://cli.github.com/manual/gh_attestation_verify): ```sh gh attestation verify <file-path of downloaded artifact> --repo astral-sh/uv ``` You can also download the attestation from [GitHub](https://github.com/astral-sh/uv/attestations) and verify against that directly: ```sh gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> ``` </pre> <p>View the full release notes at <a href="https://github.com/astral-sh/uv/releases/tag/0.12.13">https://github.com/astral-sh/uv/releases/tag/0.12.13</a>.</p> </details> <hr> See merge request: Harmonybrew/homebrew-core!20056
Summary
We reuse hashes from direct URL fragments when collecting resolution hashes, avoiding full wheel downloads when metadata can be fetched separately. URLs without a usable hash, including MD5-only URLs, still fall back to computing SHA-256 hashes.
The resolver reads declared hashes from the URL, while
ArchiveMetadata.hashescontains only hashes computed from archive contents. Existing lockfile hashes and explicit verification requirements retain precedence.Wheel archive hashes are checked during installation. Source archive hashes are checked before executing a build backend; user-provided metadata can avoid downloading the archive.