Commit Graph

8630 Commits

Author SHA1 Message Date
Charlie Marsh bec06f62bb Avoid copying /usr in install test (#18372)
Closes https://github.com/astral-sh/uv/issues/18361.

---------

Co-authored-by: konsti <konstin@mailbox.org>
Co-authored-by: Tomasz Kramkowski <tom@astral.sh>
2026-03-09 14:39:27 +00:00
renovate[bot] e4a4e75e77 Update actions/attest-build-provenance action to v4 (#18382)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[actions/attest-build-provenance](https://redirect.github.com/actions/attest-build-provenance)
| action | major | `v3.2.0` → `v4.1.0` |

---

### Release Notes

<details>
<summary>actions/attest-build-provenance
(actions/attest-build-provenance)</summary>

###
[`v4.1.0`](https://redirect.github.com/actions/attest-build-provenance/releases/tag/v4.1.0)

[Compare
Source](https://redirect.github.com/actions/attest-build-provenance/compare/v4.0.0...v4.1.0)

> \[!NOTE]
> As of version 4, `actions/attest-build-provenance` is simply a wrapper
on top of
[`actions/attest`](https://redirect.github.com/actions/attest).
>
> Existing applications may continue to use the
`attest-build-provenance` action, but new implementations should use
`actions/attest` instead.

#### What's Changed

- Update RELEASE.md docs by
[@&#8203;bdehamer](https://redirect.github.com/bdehamer) in
[#&#8203;836](https://redirect.github.com/actions/attest-build-provenance/pull/836)
- Bump `actions/attest` from 4.0.0 to 4.1.0 by
[@&#8203;bdehamer](https://redirect.github.com/bdehamer) in
[#&#8203;838](https://redirect.github.com/actions/attest-build-provenance/pull/838)
- Bump `@actions/attest` from 3.0.0 to 3.1.0 by
[@&#8203;bdehamer](https://redirect.github.com/bdehamer) in
[actions/attest#362](https://redirect.github.com/actions/attest/pull/362)
- Bump `@actions/attest` from 3.1.0 to 3.2.0 by
[@&#8203;bdehamer](https://redirect.github.com/bdehamer) in
[actions/attest#365](https://redirect.github.com/actions/attest/pull/365)
- Add new `subject-version` input for inclusion in storage record by
[@&#8203;bdehamer](https://redirect.github.com/bdehamer) in
[actions/attest#364](https://redirect.github.com/actions/attest/pull/364)
- Add storage record content to README by
[@&#8203;bdehamer](https://redirect.github.com/bdehamer) in
[actions/attest#366](https://redirect.github.com/actions/attest/pull/366)

**Full Changelog**:
<https://github.com/actions/attest-build-provenance/compare/v4.0.0...v4.1.0>

###
[`v4.0.0`](https://redirect.github.com/actions/attest-build-provenance/releases/tag/v4.0.0)

[Compare
Source](https://redirect.github.com/actions/attest-build-provenance/compare/v3.2.0...v4.0.0)

> \[!NOTE]
> As of version 4, `actions/attest-build-provenance` is simply a wrapper
on top of
[`actions/attest`](https://redirect.github.com/actions/attest).
>
> Existing applications may continue to use the
`attest-build-provenance` action, but new implementations should use
`actions/attest` instead.

#### What's Changed

- Prepare v4 release by
[@&#8203;bdehamer](https://redirect.github.com/bdehamer) in
[#&#8203;835](https://redirect.github.com/actions/attest-build-provenance/pull/835)

**Full Changelog**:
<https://github.com/actions/attest-build-provenance/compare/v3.2.0...v4.0.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (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.

---

- [ ] <!-- rebase-check -->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).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 21:01:57 +08:00
renovate[bot] ece7db8cb3 Update MSRV to v1.92.0 (#18380)
This PR contains the following updates:

| Package | Update | Change | Pending |
|---|---|---|---|
| [msrv](https://redirect.github.com/rust-lang/rust) | minor | `1.91` →
`1.92.0` | `1.94.0` (+2) |

---

### Release Notes

<details>
<summary>rust-lang/rust (msrv)</summary>

###
[`v1.92.0`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1920-2025-12-11)

[Compare
Source](https://redirect.github.com/rust-lang/rust/compare/1.91.1...1.92.0)

\==========================

<a id="1.92.0-Language"></a>

## Language

- [Document `MaybeUninit` representation and
validity](https://redirect.github.com/rust-lang/rust/pull/140463)
- [Allow `&raw [mut | const]` for union field in safe
code](https://redirect.github.com/rust-lang/rust/pull/141469)
- [Prefer item bounds of associated types over where-bounds for
auto-traits and
`Sized`](https://redirect.github.com/rust-lang/rust/pull/144064)
- [Do not materialize `X` in `[X; 0]` when `X` is unsizing a
const](https://redirect.github.com/rust-lang/rust/pull/145277)
- [Support combining `#[track_caller]` and `#[no_mangle]` (requires
every declaration specifying `#[track_caller]` as
well)](https://redirect.github.com/rust-lang/rust/pull/145724)
- [Make never type lints `never_type_fallback_flowing_into_unsafe` and
`dependency_on_unit_never_type_fallback`
deny-by-default](https://redirect.github.com/rust-lang/rust/pull/146167)
- [Allow specifying multiple bounds for same associated item, except in
trait objects](https://redirect.github.com/rust-lang/rust/pull/146593)
- [Slightly strengthen higher-ranked region handling in
coherence](https://redirect.github.com/rust-lang/rust/pull/146725)
- [The `unused_must_use` lint no longer warns on `Result<(),
Uninhabited>` (for instance, `Result<(), !>`), or
`ControlFlow<Uninhabited,
()>`](https://redirect.github.com/rust-lang/rust/pull/147382). This
avoids having to check for an error that can never happen.

<a id="1.92.0-Compiler"></a>

## Compiler

- [Make `mips64el-unknown-linux-muslabi64` link
dynamically](https://redirect.github.com/rust-lang/rust/pull/146858)
- [Remove current code for embedding command-line args in
PDB](https://redirect.github.com/rust-lang/rust/pull/147022)
Command-line information is typically not needed by debugging tools, and
the removed code
was causing problems for incremental builds even on targets that don't
use PDB debuginfo.

<a id="1.92.0-Libraries"></a>

## Libraries

- [Specialize `Iterator::eq{_by}` for `TrustedLen`
iterators](https://redirect.github.com/rust-lang/rust/pull/137122)
- [Simplify `Extend` for
tuples](https://redirect.github.com/rust-lang/rust/pull/138799)
- [Added details to `Debug` for
`EncodeWide`](https://redirect.github.com/rust-lang/rust/pull/140153).
-
[`iter::Repeat::last`](https://redirect.github.com/rust-lang/rust/pull/147258)
and [`count`](https://redirect.github.com/rust-lang/rust/pull/146410)
will now panic, rather than looping infinitely.

<a id="1.92.0-Stabilized-APIs"></a>

## Stabilized APIs

-
[`NonZero<u{N}>::div_ceil`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.div_ceil)
-
[`Location::file_as_c_str`](https://doc.rust-lang.org/stable/std/panic/struct.Location.html#method.file_as_c_str)
-
[`RwLockWriteGuard::downgrade`](https://doc.rust-lang.org/stable/std/sync/struct.RwLockWriteGuard.html#method.downgrade)
-
[`Box::new_zeroed`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.new_zeroed)
-
[`Box::new_zeroed_slice`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.new_zeroed_slice)
-
[`Rc::new_zeroed`](https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.new_zeroed)
-
[`Rc::new_zeroed_slice`](https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.new_zeroed_slice)
-
[`Arc::new_zeroed`](https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.new_zeroed)
-
[`Arc::new_zeroed_slice`](https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.new_zeroed_slice)
-
[`btree_map::Entry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/btree_map/enum.Entry.html#method.insert_entry)
-
[`btree_map::VacantEntry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/btree_map/struct.VacantEntry.html#method.insert_entry)
- [`impl Extend<proc_macro::Group> for
proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CGroup%3E-for-TokenStream)
- [`impl Extend<proc_macro::Literal> for
proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CLiteral%3E-for-TokenStream)
- [`impl Extend<proc_macro::Punct> for
proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CPunct%3E-for-TokenStream)
- [`impl Extend<proc_macro::Ident> for
proc_macro::TokenStream`](https://doc.rust-lang.org/stable/proc_macro/struct.TokenStream.html#impl-Extend%3CIdent%3E-for-TokenStream)

These previously stable APIs are now stable in const contexts:

-
[`<[_]>::rotate_left`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.rotate_left)
-
[`<[_]>::rotate_right`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.rotate_right)

<a id="1.92.0-Cargo"></a>

## Cargo

- [Added a new
chapter](https://redirect.github.com/rust-lang/cargo/issues/16119) to
the Cargo book, ["Optimizing Build
Performance"](https://doc.rust-lang.org/stable/cargo/guide/build-performance.html).

<a id="1.92.0-Rustdoc"></a>

## Rustdoc

- [If a trait item appears in rustdoc search, hide the corresponding
impl items](https://redirect.github.com/rust-lang/rust/pull/145898).
Previously a search for "last" would show both `Iterator::last` as well
as impl methods like `std::vec::IntoIter::last`. Now these impl methods
will be hidden, freeing up space for inherent methods like
`BTreeSet::last`.
- [Relax rules for identifiers in
search](https://redirect.github.com/rust-lang/rust/pull/147860).
Previously you could only search for identifiers that were valid in rust
code, now searches only need to be valid as part of an identifier. For
example, you can now perform a search that starts with a digit.

<a id="1.92.0-Compatibility-Notes"></a>

## Compatibility Notes

- [Fix backtraces with `-C panic=abort` on Linux by generating unwind
tables by
default](https://redirect.github.com/rust-lang/rust/pull/143613). Build
with `-C force-unwind-tables=no` to keep omitting unwind tables.

* As part of the larger effort refactoring compiler built-in attributes
and their diagnostics, [the future-compatibility lint
`invalid_macro_export_arguments` is upgraded to deny-by-default and will
be reported in dependencies
too.](https://redirect.github.com/rust-lang/rust/pull/143857)
* [Update the minimum external LLVM to
20](https://redirect.github.com/rust-lang/rust/pull/145071)
* [Prevent downstream `impl DerefMut for
Pin<LocalType>`](https://redirect.github.com/rust-lang/rust/pull/145608)
* [Don't apply temporary lifetime extension rules to the arguments of
non-extended `pin!` and formatting
macros](https://redirect.github.com/rust-lang/rust/pull/145838)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (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.

---

- [ ] <!-- rebase-check -->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).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 13:43:42 +01:00
renovate[bot] d5ca9334f1 Update Rust crate windows-version to v0.1.7 (#18385)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [windows-version](https://redirect.github.com/microsoft/windows-rs) |
workspace.dependencies | patch | `0.1.6` → `0.1.7` |

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (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.

---

- [ ] <!-- rebase-check -->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).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 13:39:34 +01:00
konsti b908c41433 Contributing: Require a human in the loop for LLM contributions (#18315)
This policy is derived from
https://github.com/ghostty-org/ghostty/blob/main/AI_POLICY.md: We have
the problem that there are autonomous contributions, or users trying to
get the LLM to solve the hard problems, where it usually fails.

I've kept the section intentionally concise without laying out all the
branches of valid and invalid LLM usage. For example, it's totally
possible to first have the LLM write the change, review that, then
develop a design from that and iterate on it and in the end have a fully
human-understood PR. What I want to discourage is that contributors
think they can outsource e.g. the hard algorithmic parts to the LLM,
without understanding the existing structure, where the LLM currently
inevitably fails.

---------

Co-authored-by: Tomasz Kramkowski <tom@astral.sh>
2026-03-09 13:22:25 +01:00
samypr100 9889525195 fix(uv-platform): adjust windows ostype to match sys-info-rs, fix windows version (#18383)
## Summary

In https://github.com/astral-sh/uv/pull/18324, sys-info-rs was dropped
in favor of a more native reimplementation to provide OsType and
OsRelease.

This PR adjusts two areas for windows to match closely previous
behavior:

1. OsType should be `Windows` rather than `Windows_NT`
https://github.com/astral-sh/uv/pull/18324#discussion_r2902257834 as
seen in
https://github.com/FillZpp/sys-info-rs/blob/60ecf1470a5b7c90242f429934a3bacb6023ec4d/c/windows.c#L12.
This also matches the output of `platform.system()` in CPython.
2. OsRelease previously used `GetVersionEx` in sys-info-rs. Looking
closely, this was used primarily in
`crates/uv-python/src/interpreter.rs` and not in linehaul as linehaul
uses `platform.release()`. The problem with `GetVersionEx` is that it
returns often the wrong version due to legacy reasons (e.g. may be stuck
returning `6.2.9200`). The current implementation only returns the build
number from the registry which is prone to problems across windows older
variants. The implementation should use `RtlGetVersion` system call
which returns the current major, minor, build in the same way as
reported by `sys.getwindowsversion()` in CPython. In order to strike
balance, this switches the implementation to use four octects
`{major}.{minor}.{build}.{revision}` as recent windows versioning relies
on major, build and revision where as older versions rely on major,
minor and service pack. A windows-version crate by the same author as
windows-rs was added as it includes the correct system calls for the
windows versions.

## Test Plan

Tested manually on both Windows desktop (10, 11) and Windows Server
(2016).
2026-03-08 22:10:21 -05:00
renovate[bot] 50d5d89079 Update taiki-e/install-action action to v2.68.16 (#18381) 2026-03-08 22:47:13 -04:00
renovate[bot] a653c3d09c Update crate-ci/typos action to v1.44.0 (#18379) 2026-03-08 22:46:57 -04:00
renovate[bot] cf668efe84 Update CodSpeedHQ/action action to v4.11.0 (#18378) 2026-03-08 22:46:49 -04:00
renovate[bot] fe5922b4d0 Update Rust crate spdx to v0.13.4 (#18377) 2026-03-08 22:46:41 -04:00
renovate[bot] 42b1d5d08b Update Rust crate rustls to v0.23.37 (#18376) 2026-03-08 22:44:47 -04:00
renovate[bot] 1cacc2f2ed Update Rust crate jiff to v0.2.22 (#18375) 2026-03-08 22:44:39 -04:00
renovate[bot] 0a17ba5406 Update dependency astral-sh/uv to v0.10.9 (#18374) 2026-03-08 22:44:34 -04:00
Mikaël Barbero 499cc82b35 Add --outdated flag to uv tool list (#18318)
## Summary

Add a `--outdated` flag that queries PyPI for the latest version of each
installed tool and filters the output to only show tools with available
updates. Each outdated tool is displayed with its installed version and
a `[latest: X.Y.Z]` annotation.

The implementation reuses the existing `LatestClient` infrastructure
from `pip list --outdated`, fetching versions concurrently with progress
reporting. Up-to-date tools are omitted from the output. A
`--no-outdated` hidden flag is included for flag negation consistency.

Fixes #9309

## Test Plan

A new integration test has been created in
`crates/uv/tests/it/tool_list.rs`, and the feature has also been tested
locally.

Signed-off-by: Mikaël Barbero <mikael.barbero@eclipse-foundation.org>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 12:20:19 -04:00
Ben Beasley 77489379b1 Conditionalize two new tests on the test-pypi feature (#18369)
<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

<!-- What's the purpose of the change? What does it do, and why? -->
Both `build_backend::tool_uv_build_backend_without_build_backend` and
`build_backend::tool_uv_build_backend_wrong_build_backend` fail in
offline environments because they try to download a build backend from
PyPI.

This PR conditionalizes both tests on the existing `test-pypi` feature.

## Test Plan

<!-- How was it tested? -->
Applied as a downstream patch to Fedora’s `uv` package.
2026-03-08 11:55:34 -04:00
Tomasz Kramkowski 1cf6247447 Bump zlib-rs to 0.6.2 to fix panic on decompression of large wheels on Windows (#18362)
## Summary

Extracting a wheel on windows which has a larger total uncompressed size
than 4GiB leads to panics as seen in
<https://github.com/astral-sh/uv/issues/18316#issuecomment-4016534644>.

This is caused by
<https://github.com/trifectatechfoundation/zlib-rs/issues/472>.

`zlib-rs` 0.6.2 includes
<https://github.com/trifectatechfoundation/zlib-rs/pull/473> which
addresses this issue.

## Test Plan

Manually verified via:

```
uv pip install --no-cache-dir https://repo.radeon.com/rocm/windows/rocm-rel-7.2/rocm_sdk_devel-7.2.0.dev0-py3-none-win_amd64.whl
```

On a Windows 11 VM.
2026-03-07 15:29:45 +00:00
Zanie Blue d1c6f03726 Update the platform support policy with a tier 3 section including freebsd and 32-bit windows (#18345)
And I'll add Android once we land some more patches.
2026-03-07 09:12:36 -06:00
William Woodruff e30c081d5a Send mint-token requests with a proper Content-Type (#18334)
## Summary

Using `.body()` meant that the request was sent without a
`Content-Type`, whereas we want to explicitly communicate that the
mint-token request is a JSON payload. Using `.json()` causes request to
send the `Content-Type` header by default.

## Test Plan

Existing coverage.

---------

Signed-off-by: William Woodruff <william@astral.sh>
2026-03-07 21:03:05 +08:00
Zanie Blue f675560f32 Bump version to 0.10.9 (#18357) 2026-03-06 14:00:59 -06:00
Zanie Blue 8fedd25b41 Use uv 0.10.8 for internal workflows (#18354)
This should resolve GitHub Python download flakes
2026-03-06 19:45:40 +00:00
Charlie Marsh 03b4d8a2da Use optimized rustfmt step in .pre-commit-config.yaml (#18355)
Matches the setup we use in Ruff.
2026-03-06 13:49:48 -05:00
Zanie Blue 9345450b4c Use cargo auditable to include SBOM in uv builds (#18276)
Inspired by #18252 

This required an upstream change
https://github.com/rust-secure-code/cargo-auditable/pull/245 which is
now released.

This increases binary sizes slightly, ~4KB.

The cargo wrapper implementation will be extended in #18280 to code sign
binaries.
2026-03-06 11:38:02 -06:00
Charlie Marsh 12caaf3160 Respect build constraints for workspace members (#18350)
## Summary

These are respected in `uv sync` and `uv pip install`, but not `uv
build`.

Closes https://github.com/astral-sh/uv/issues/18283
2026-03-06 16:53:07 +00:00
Zanie Blue 24e9b47900 Add fallback to /usr/lib/os-release on Linux (#18349) 2026-03-06 16:50:54 +00:00
luyiming 7520fe6c25 Improve documentation on virtual dependencies (#18346)
<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

<!-- What's the purpose of the change? What does it do, and why? -->

The current documentation for virtual dependencies is somewhat confusing
because it places the sentence

> "the package will be built even if a build system is not declared"

immediately after introducing `tool.uv.package = false`. This makes it
sound as if the package might still be built when `package = false` is
set.

In reality, that sentence describes the *default behavior of path
dependencies* (when `package = false` is not set). The revised wording
clarifies that:

- `package = false` → the dependency becomes virtual (its dependencies
are installed, but the package itself is not built or installed)
- otherwise → uv treats the path dependency as a normal package and will
attempt to build it, even without a `[build-system]`.
2026-03-06 10:50:11 -06:00
Charlie Marsh 9dea237fca Revalidate editables and other dependencies in scripts (#18328)
## Summary

Lockfile re-validation was iterating from the workspace roots; but for
scripts, we have no roots! This is similar to the approach we use in `uv
tree`, `uv export`, etc.

Closes https://github.com/astral-sh/uv/issues/18312.
2026-03-06 11:46:07 -05:00
Zanie Blue a13ba947c9 Add a development build of aarch64-linux-android to CI (#18333)
Part of https://github.com/astral-sh/uv/issues/14574

Adds a cross-compiled build for the `aarch64-linux-android` target using
the Android NDK available on the runner.

Requires #18324
2026-03-06 16:45:20 +00:00
Zanie Blue bb8970a982 Add a Termux integration test (#18332)
After this, I want to figure out how to unify more of the smoke, system,
and integration tests, but this seems like a sufficient start for Termux
testing.
2026-03-06 16:44:16 +00:00
Zanie Blue 363aea27be Drop the sys-info dependency (#18324)
Part of https://github.com/astral-sh/uv/issues/14574 and
https://github.com/termux/termux-packages/issues/27547

Avoids the downstream patch at
https://github.com/termux/termux-packages/blob/master/packages/uv/0001-sys-info-replace-index-with-strchr.diff

`sys-info-rs` has not been updated in years
https://github.com/FillZpp/sys-info-rs — it includes C code and can't be
built on Termux https://github.com/FillZpp/sys-info-rs/issues/116

I considered switching to https://github.com/GuillaumeGomez/sysinfo but
our usage is trivial, so we implement our requirements in `uv-platform`
instead
2026-03-06 16:30:19 +00:00
Zanie Blue ccd1ea99ae Skip building of dhi images in contributor pull requests (#18330)
These require authentication to pull.
2026-03-06 10:22:41 -06:00
konsti 401661ee22 Log the duration we took before erroring (#18231)
We previously errored due to not having long enough backoff, and there
were questions about how long the retries are, so let's log this on
failure.
2026-03-06 08:51:10 -06:00
renovate[bot] 686f43e67e Update PyO3/maturin-action action to v1.50.1 (#18343)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [PyO3/maturin-action](https://redirect.github.com/PyO3/maturin-action)
| action | patch | `v1.50.0` → `v1.50.1` |

---

### Release Notes

<details>
<summary>PyO3/maturin-action (PyO3/maturin-action)</summary>

###
[`v1.50.1`](https://redirect.github.com/PyO3/maturin-action/releases/tag/v1.50.1)

[Compare
Source](https://redirect.github.com/PyO3/maturin-action/compare/v1.50.0...v1.50.1)

##### What's Changed

- Remove ziglang bound by
[@&#8203;konstin](https://redirect.github.com/konstin) in
[#&#8203;418](https://redirect.github.com/PyO3/maturin-action/pull/418)
- Try reactivating Windows ARM by
[@&#8203;konstin](https://redirect.github.com/konstin) in
[#&#8203;419](https://redirect.github.com/PyO3/maturin-action/pull/419)

**Full Changelog**:
<https://github.com/PyO3/maturin-action/compare/v1...v1.50.1>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (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.

---

- [ ] <!-- rebase-check -->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).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41Ni4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 15:26:48 +01:00
renovate[bot] 95bc471164 Update maturin to v1.12.6 (#18342)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [maturin](https://redirect.github.com/PyO3/maturin) | patch |
`v1.12.4` → `v1.12.6` |

---

### Release Notes

<details>
<summary>PyO3/maturin (maturin)</summary>

###
[`v1.12.6`](https://redirect.github.com/PyO3/maturin/releases/tag/v1.12.6)

[Compare
Source](https://redirect.github.com/PyO3/maturin/compare/v1.12.5...v1.12.6)

##### What's Changed

- Sync legacy\_py.rs with upstream PyPI warehouse legacy.py
([#&#8203;3053](https://redirect.github.com/PyO3/maturin/pull/3053))
- Keep cargo build artifact at original path after staging
([#&#8203;3054](https://redirect.github.com/PyO3/maturin/pull/3054))

**Full Changelog**:
<https://github.com/PyO3/maturin/compare/v1.12.5...v1.12.6>

###
[`v1.12.5`](https://redirect.github.com/PyO3/maturin/releases/tag/v1.12.5)

[Compare
Source](https://redirect.github.com/PyO3/maturin/compare/v1.12.4...v1.12.5)

##### What's Changed

- feat: include debug info files (.pdb, .dSYM, .dwp) in wheels by
[@&#8203;messense](https://redirect.github.com/messense) in
[#&#8203;3024](https://redirect.github.com/PyO3/maturin/pull/3024)
- Fix wrong abi3 tag for conditional cargo features enabled pyo3 abi3
feature by [@&#8203;messense](https://redirect.github.com/messense) in
[#&#8203;3029](https://redirect.github.com/PyO3/maturin/pull/3029)
- fix: `maturin build --sdist` wheel name/layout for excluded workspace
crates by [@&#8203;messense](https://redirect.github.com/messense) in
[#&#8203;3031](https://redirect.github.com/PyO3/maturin/pull/3031)
- fix: preserve wheel output dir when building from unpacked sdist by
[@&#8203;messense](https://redirect.github.com/messense) in
[#&#8203;3036](https://redirect.github.com/PyO3/maturin/pull/3036)
- feat: add python-implementation condition to conditional features by
[@&#8203;messense](https://redirect.github.com/messense) in
[#&#8203;3038](https://redirect.github.com/PyO3/maturin/pull/3038)
- Update zip to 8.1 by
[@&#8203;musicinmybrain](https://redirect.github.com/musicinmybrain) in
[#&#8203;3039](https://redirect.github.com/PyO3/maturin/pull/3039)
- Use the latest version of github actions by
[@&#8203;Armavica](https://redirect.github.com/Armavica) in
[#&#8203;3040](https://redirect.github.com/PyO3/maturin/pull/3040)
- Use renovate and pinned hashes for GitHub Actions by
[@&#8203;konstin](https://redirect.github.com/konstin) in
[#&#8203;3043](https://redirect.github.com/PyO3/maturin/pull/3043)
- chore(deps): update taiki-e/install-action digest to
[`7410117`](https://redirect.github.com/PyO3/maturin/commit/7410117) by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3046](https://redirect.github.com/PyO3/maturin/pull/3046)
- Fix non-existent comment tag by
[@&#8203;konstin](https://redirect.github.com/konstin) in
[#&#8203;3044](https://redirect.github.com/PyO3/maturin/pull/3044)
- chore(deps): update dtolnay/rust-toolchain digest to
[`efa25f7`](https://redirect.github.com/PyO3/maturin/commit/efa25f7) by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3045](https://redirect.github.com/PyO3/maturin/pull/3045)
- chore(deps): update actions/attest-build-provenance action to v4 by
[@&#8203;renovate](https://redirect.github.com/renovate)\[bot] in
[#&#8203;3047](https://redirect.github.com/PyO3/maturin/pull/3047)
- Use mmap for faster warn\_missing\_py\_init by
[@&#8203;orlp](https://redirect.github.com/orlp) in
[#&#8203;2950](https://redirect.github.com/PyO3/maturin/pull/2950), to
be safe we now move the cargo built artifact to `target/maturin` so this
may cause breakage if you rely on it in standard cargo `target/`
location

##### New Contributors

- [@&#8203;Armavica](https://redirect.github.com/Armavica) made their
first contribution in
[#&#8203;3040](https://redirect.github.com/PyO3/maturin/pull/3040)
- [@&#8203;renovate](https://redirect.github.com/renovate)\[bot] made
their first contribution in
[#&#8203;3046](https://redirect.github.com/PyO3/maturin/pull/3046)
- [@&#8203;orlp](https://redirect.github.com/orlp) made their first
contribution in
[#&#8203;2950](https://redirect.github.com/PyO3/maturin/pull/2950)

**Full Changelog**:
<https://github.com/PyO3/maturin/compare/v1.12.4...v1.12.5>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on
Monday ( * 0-3 * * 1 ) (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.

---

- [ ] <!-- rebase-check -->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).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41Ni4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTYuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 15:26:02 +01:00
Zanie Blue 8b82d17f44 Support Python 3.13+ on Android (#18301)
Python 3.13+ changed how it reports platform information on Android; see
https://peps.python.org/pep-0738/#architectures

Here we add support for the new platform values, without which uv will
fail due to an unrecognized interpreter.

Closes #18296
Closes #18285
Closes https://github.com/astral-sh/uv/issues/18313

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-06 07:42:21 -06:00
konsti 6055369bb1 Remove invisible unicode characters (#18344) 2026-03-06 14:27:57 +01:00
Charlie Marsh 5fc74a2357 Add fbgemm-gpu, fbgemm-gpu-genai, torchrec, and torchtune to the PyTorch list (#18338)
## Summary

Like #18336.
2026-03-06 07:27:35 -06:00
konsti 53c4a0925a Workspace refactoring rollup (#18308)
Three small refactorings pulled out of the toml optimization branch.
2026-03-06 10:37:41 +00:00
konsti 4a1028e78c Avoid toml Document overhead (#18306)
The difference is below the noise threshold, but it showed up in the
profiled. The code originally existed for error handling that has since
been removed.
2026-03-06 11:16:15 +01:00
Djordje 8616b11d59 Add torchcodec to PyTorch List (#18336)
<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

torchcodec added
https://github.com/astral-sh/uv/issues/18335
<!-- What's the purpose of the change? What does it do, and why? -->

## Test Plan

<!-- How was it tested? -->
2026-03-05 19:11:38 -05:00
Alessandro Molina 6036575324 Handle the hard link limit gracefully instead of failing (#17699)
## Summary

Handle the case where too many hardlinks were created and thus
installing packages fails.

There are cases where the file system can have a hardlinks limit and
when it's hit `uv` fails,
for example AWS EFS that has a limit of 177 hard links (
https://docs.aws.amazon.com/efs/latest/ug/troubleshooting-efs-fileop-errors.html#hardlinkerror
)

This PR address this by resetting the hardlinks when the limit is
reached (it does this by replacing the file in the cache, so new
hardlinks can be made)

There can be race conditions over the limit, but those are ok, as the
links are reset atomically so in case of race conditions the worst case
will be that the limit is reset twice, but nothing will break.

## Test Plan

Add a `install_hardlink_after_emlink` function, it successfully
reproduced the issue on my system.
The issue is that it's expensive to run as it has to generate a lot of
hardlinks

---------

Co-authored-by: Tomasz Kramkowski <tom@astral.sh>
2026-03-05 23:43:34 +00:00
Charlie Marsh eec0c284d0 Add an environment variable for UV_VENV_RELOCATABLE (#18331)
Closes https://github.com/astral-sh/uv/issues/18319.
2026-03-05 18:40:39 -05:00
Charlie Marsh 9f53c5866f Add documentation for common marker values (#18327)
Closes https://github.com/astral-sh/uv/issues/18300.
2026-03-05 21:18:01 +00:00
Zanie Blue e431787e4e Retry on apt downloads in Docker (#18329)
This failed with a 503 flake. I hate flakes.

```
   E: Failed to fetch                              
 https://snapshot.ubuntu.com/.../libcurl4t64_8.5.0 -2ubuntu10.7_arm64.deb  503  Service Unavailable  
```
2026-03-05 20:51:16 +00:00
Zanie Blue 91f02e29bb Add the uv-audit crate readme (#18325) 2026-03-05 19:44:21 +00:00
konsti 674fdffe4d Use a single global workspace cache (#18307)
Currently, uv parses each workspace member 's `pyproject.toml` in
airflow 4 times, this reduces it to 3 times.
2026-03-05 14:44:03 +01:00
konsti f18d279686 Add spans for toml reading (#18305)
In a warm cache situation, e.g. with `uv run`, toml parsing is by far
our slowest operation. These kinda hacky spans help debugging that. It
would be better if `toml::from_str` would be instrumented itself, but
this way we can add paths in the relevant places.
2026-03-05 14:43:52 +01:00
Zanie Blue 4eed07269b Use --no-project in graalpy integration test (#18314) 2026-03-05 13:01:37 +00:00
konsti 87b2539e80 Warn when using uv_build settings without uv_build (#15750)
To help with cases such as https://github.com/astral-sh/uv/issues/15655.

A question is when to show this warning. I've used sources as a proxy as
URL dependencies with enabled sources are likely those controlled by the
user, and they include workspace and `git clone`d path dependencies.

The first commit is a refactoring, the second commit the implementation.

Fixes https://github.com/astral-sh/uv/issues/15740
2026-03-05 06:56:35 -06:00
konsti 8efb5421bc Skip over broken tool Python on Windows too (#17176)
Fixes #16252
2026-03-05 10:02:49 +01:00
Zanie Blue 02e92aed3b Fix debian system test which was building uv by accident (#18294) 2026-03-04 16:38:06 -06:00