This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| debian | container | major | `bookworm` → `trixie` |
---
### 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1yZWxlYXNlIiwiaW50ZXJuYWwiXX0=-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Zanie Blue <contact@zanie.dev>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
<!--
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
Update the `fs-err` dependency to 3.2.2, because `uv` uses
`File::set_modified` in
https://github.com/astral-sh/uv/blob/2183c3fe1b4b8e83ea284f7b8ffbdc736f40332e/crates/uv-install-wheel/src/linker.rs#L337
and this API was added [in
3.2.2](https://github.com/andrewhickman/fs-err/blob/3.2.2/CHANGELOG.md#322).
<!-- What's the purpose of the change? What does it do, and why? -->
Version 3.2.2 was already in `Cargo.lock`, but I ran `cargo update
fs-error` and it made two small changes anyway.
## Test Plan
<!-- How was it tested? -->
There’s not much to test, as this just increases the minimum version.
You can verify the original problem by checking out `main` and running
```
$ cargo update fs-err --precise 3.2.1
$ cargo build
```
to see the error
```
error[E0599]: no method named `set_modified` found for struct `fs_err::File` in the current scope
--> crates/uv-install-wheel/src/linker.rs:337:35
|
337 | if let Err(err) = dir.set_modified(now) {
| ^^^^^^^^^^^^ method not found in `fs_err::File`
```
The `with_real_home()` method sets `HOME` to the real home directory,
which is required for tests that use the macOS keychain for
authentication. However, this causes a problem: when `HOME` is set but
`XDG_CONFIG_HOME` is not, uv resolves the config directory to
`$HOME/.config/uv` per the XDG specification. This means tests would
read the user's real configuration files (like `.python-version` or
`uv.toml`), which can override test-specified settings and cause
failures.
This PR sets `XDG_CONFIG_HOME` to the test's isolated config directory
in `with_real_home()`, ensuring that even when the real HOME is needed
for keychain access, configuration files are read from an isolated
location.
## Test plan
- Existing tests pass
- Tests using `with_real_home()` no longer read user config files
## Summary
This adds Pyodide interpreter support in windows environment. In Pyodide
0.29.2, we made some enhancements to run Pyodide CLI in windows. This PR
relaxes a check that was disabling `uv pip` in Windows + Pyodide and
adds integration test.
## Test Plan
Added integration test, also tested locally by running
```
uv python install cpython-3.13.2-emscripten-wasm32-musl
uv venv venv-pyodide -p cpython-3.13.2-emscripten-wasm32-musl
call venv-pyodide\Scripts\activate
uv pip install packaging
python -c "import packaging"
```
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [http](https://redirect.github.com/hyperium/http) |
workspace.dependencies | minor | `1.3.1` → `1.4.0` |
---
### Release Notes
<details>
<summary>hyperium/http (http)</summary>
###
[`v1.4.0`](https://redirect.github.com/hyperium/http/blob/HEAD/CHANGELOG.md#140-November-24-2025)
[Compare
Source](https://redirect.github.com/hyperium/http/compare/v1.3.1...v1.4.0)
- Add `StatusCode::EARLY_HINTS` constant for 103 Early Hints.
- Make `StatusCode::from_u16` now a `const fn`.
- Make `Authority::from_static` now a `const fn`.
- Make `PathAndQuery::from_static` now a `const fn`.
- MSRV increased to 1.57 (allows legible const fn panic messages).
</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:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1yZWxlYXNlIiwiaW50ZXJuYWwiXX0=-->
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tomasz (Tom) Kramkowski <tom@astral.sh>
This PR contains the following updates:
| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [cargo-util](https://redirect.github.com/rust-lang/cargo) |
workspace.dependencies | patch | `0.2.24` → `0.2.25` | `0.2.26` |
---
### 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:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NC41IiwidXBkYXRlZEluVmVyIjoiNDIuODUuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1yZWxlYXNlIiwiaW50ZXJuYWwiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [thiserror](https://redirect.github.com/dtolnay/thiserror) |
workspace.dependencies | patch | `2.0.17` → `2.0.18` |
---
### Release Notes
<details>
<summary>dtolnay/thiserror (thiserror)</summary>
###
[`v2.0.18`](https://redirect.github.com/dtolnay/thiserror/releases/tag/2.0.18)
[Compare
Source](https://redirect.github.com/dtolnay/thiserror/compare/2.0.17...2.0.18)
- Make compatible with project-level `needless_lifetimes = "forbid"`
([#​443](https://redirect.github.com/dtolnay/thiserror/issues/443),
thanks
[@​LucaCappelletti94](https://redirect.github.com/LucaCappelletti94))
</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:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1yZWxlYXNlIiwiaW50ZXJuYWwiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://redirect.github.com/actions/checkout) |
action | patch | `v6.0.1` → `v6.0.2` |
---
### Release Notes
<details>
<summary>actions/checkout (actions/checkout)</summary>
###
[`v6.0.2`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v602)
[Compare
Source](https://redirect.github.com/actions/checkout/compare/v6.0.1...v6.0.2)
- Fix tag handling: preserve annotations and explicit fetch-tags by
[@​ericsciple](https://redirect.github.com/ericsciple) in
[#​2356](https://redirect.github.com/actions/checkout/pull/2356)
</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:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1yZWxlYXNlIiwiaW50ZXJuYWwiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [filetime](https://redirect.github.com/alexcrichton/filetime) |
workspace.dependencies | patch | `0.2.26` → `0.2.27` |
---
### Release Notes
<details>
<summary>alexcrichton/filetime (filetime)</summary>
###
[`v0.2.27`](https://redirect.github.com/alexcrichton/filetime/compare/0.2.26...0.2.27)
[Compare
Source](https://redirect.github.com/alexcrichton/filetime/compare/0.2.26...0.2.27)
</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:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xIiwidXBkYXRlZEluVmVyIjoiNDIuOTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1yZWxlYXNlIiwiaW50ZXJuYWwiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Correct GitLab integration guide to the '.gitlab-ci.yml' default file
name - see [GitLab's CI/CD Yaml syntax
reference](https://docs.gitlab.com/ci/yaml/).
## Summary
This PR replaces `bitflags` in favour of `enumflags2` (which we already
transitively depended on) so that `PreviewFeatures` can be replaced with
`PreviewFeature` which is an enum. This clarifies intent in cases where
we only care about one specific `PreviewFeature`.
To avoid a bunch of boilerplate changes, the `Preview` wrapper has been
kept and creation now involves a `&[PreviewFeature]` in all cases. The
alternative was to have everything which initialises a `Preview` use
`BitFlags` directly and possibly to remove `Preview` entirely but this
keeps things simpler and limits the changes throughout the rest of the
codebase solely to changes which deal with the name changes (ALL_CAPS to
PascalCase) and the impact on `--show-settings` which I don't believe we
care about stability of output for?
The changes to `--show-settings` could be avoided with some custom
`Debug` implementation but that seems excessive.
This PR will impact #16452. But the changes were inspired by trying to
remove the need for that particular PR to add more runtime type
checking.
## Test Plan
Existing tests were adjusted (I also fixed some missing cases). The test
for panicking in cases which are now prevented through the use of type
changes has been dropped. All the rest of the tests were ran, snapshot
changes reviewed and applied.
## Summary
Currently we require `macos:test` explicitly even when `test:extended`
is set, but from discussions it seems `test:extended` should also
trigger `test:macos` so this change adds that.
This change also introduces a new `test-macos` plan output variable which is used as the new condition.
## Test Plan
CI.
It seems that PyPy is not being actively developed anymore and is phased
out even by numpy (https://github.com/numpy/numpy/issues/30416). There's
no official statement from the project, but the numpy issue is from a
PyPy developer. I added a warning to avoid users assuming PyPy properly
supported and developed Python distribution, and in anticipation of PyPy
being eventually, slowly deprecated.
---------
Co-authored-by: Tomasz Kramkowski <tom@astral.sh>
In the previous iteration, conflict detection was based on top level
modules. This would work if all namespace packages correctly omitted the
`__init__.py`, but e.g. the nvidia packages include an empty
`nvida/__init__.py`.
Instead, we track overlapping top level modules during installation and
perform conflict analysis after installation, recursing only as far as
necessary.
See https://github.com/astral-sh/uv/pull/13437 for a list of reported
conflicts.
Before:
```
$ uv venv -c -q && uv pip install --preview nvidia-nvjitlink-cu12==12.8.93 nvidia-nvtx-cu12==12.8.90
Resolved 2 packages in 0.99ms
░░░░░░░░░░░░░░░░░░░░ [0/2] Installing wheels... warning: The module `nvidia` is provided by more than one package, which causes an install race condition and can result in a broken module. Consider removing your dependency on either `nvidia-nvtx-cu12` (v12.8.90) or `nvidia-nvjitlink-cu12` (v12.8.93).
Installed 2 packages in 3ms
+ nvidia-nvjitlink-cu12==12.8.93
+ nvidia-nvtx-cu12==12.8.90
```
After:
```
$ uv venv -c -q && cargo run -q pip install --preview nvidia-nvjitlink-cu12==12.8.93 nvidia-nvtx-cu12==12.8.90
Resolved 2 packages in 3ms
Installed 2 packages in 4ms
+ nvidia-nvjitlink-cu12==12.8.93
+ nvidia-nvtx-cu12==12.8.90
```
Still detected true positive:
```
$ uv venv -c -q && cargo run -q pip install --no-progress opencv-python opencv-contrib-python --no-build --no-deps --preview
Resolved 2 packages in 5ms
warning: The file `cv2/__init__.pyi` is provided by more than one package, which causes an install race condition and can result in a broken module. Packages containing the file:
* opencv-contrib-python (opencv_contrib_python-4.13.0.90-cp37-abi3-manylinux_2_28_x86_64.whl)
* opencv-python (opencv_python-4.13.0.90-cp37-abi3-manylinux_2_28_x86_64.whl)
Installed 2 packages in 6ms
+ opencv-contrib-python==4.13.0.90
+ opencv-python==4.13.0.90
```