Commit Graph

8110 Commits

Author SHA1 Message Date
samypr100
339e97baa0 Broadcast WM_SETTINGCHANGE on uv tool update-shell (#17404)
## Summary

Closes https://github.com/astral-sh/uv/issues/17331

Certain applications on windows expect to be notified when environment
variables change such as conhost.exe (traditional cmd.exe host).
Without this notification conhost.exe will not pick up changes to
environment variables regardless of how many times conhost.exe is
re-launched after running `uv tool update-shell`.

## Test Plan

Before this change

1. Removed `%USERPROFILE%\.local\bin` from environment variables via UI
(which sends `WM_SETTINGCHANGE`)
2. Launched `%SYSTEMROOT%\System32\conhost.exe` and attempted to run any
tool preivously installed. It fails to find any.
3. Ran `uv tool update-shell`. Confirmed
`HKEY_CURRENT_USER\Environment\Path` was updated in registry.
4. Launched new `%SYSTEMROOT%\System32\conhost.exe` session. **Fails to
find installed tools**.

After this change

1. Removed `%USERPROFILE%\.local\bin` from environment variables via UI
(which sends `WM_SETTINGCHANGE`)
2. Launched `%SYSTEMROOT%\System32\conhost.exe` and attempted to run any
tool preivously installed. It fails to find any.
3. Ran `uv tool update-shell`. Confirmed
`HKEY_CURRENT_USER\Environment\Path` was updated in registry.
4. Launched new `%SYSTEMROOT%\System32\conhost.exe` session. **Finds the
installed tools**.
2026-01-11 09:10:02 -05:00
Denizhan Dakılır
7e7f1656ca fix: add Win32_Storage_FileSystem feature and improve handle closing logic (#17374)
<!--
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

fix https://github.com/astral-sh/uv/issues/17174 mentioned the invalid
issues here:

results of diagnostics:

before:
```
--- TRAMPOLINE DIAGNOSTICS: STARTUP ---
  STDIN: Handle=184
    -> Console Mode: 503
  STDOUT: Handle=536
    -> Console Mode: 7
  STDERR: Handle=540
    -> Console Mode: 7
-------------------------------------------
--- TRAMPOLINE DIAGNOSTICS: AFTER CLOSE_HANDLES ---
  STDIN: INVALID
  STDOUT: INVALID
  STDERR: Handle=540
    -> Console Mode: 7
```

after:
```
--- TRAMPOLINE DIAGNOSTICS: STARTUP ---
  STDIN: Handle=716
    -> Console Mode: 503
  STDOUT: Handle=580
    -> Console Mode: 7
  STDERR: Handle=604
    -> Console Mode: 7
-------------------------------------------
--- TRAMPOLINE DIAGNOSTICS: AFTER CLOSE_HANDLES ---
  STDIN: Handle=716
    -> Console Mode: 503
  STDOUT: Handle=580
    -> Console Mode: 7
  STDERR: Handle=604
    -> Console Mode: 7
```

the problem was we were closing the handlers whatever they were from
pipes (byte streams) or consoles, this will make sure we close only the
handlers from pipes by using `FILE_TYPE_PIPE`

## Test Plan

<!-- How was it tested? -->
completely manual by adding debug statements and running a simple script
to open the pdb.
2026-01-10 12:11:13 -06:00
Zanie Blue
c10c84a588 Disable pyx staging publish tests temporarily (#17397)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-09 22:19:45 +00:00
Zanie Blue
0fda1525eb Bump version to 0.9.24 (#17395) 0.9.24 2026-01-09 22:09:11 +00:00
Zanie Blue
1a72f8c677 Fix handling of UV_NO_SYNC=1 uv run ... (#17391)
Closes #17390

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-09 21:37:20 +00:00
Charlie Marsh
ef83fc34bc Rebuild dynamic distribution when version changes with --no-cache (#17387)
## Summary

Well-explained in https://github.com/astral-sh/uv/issues/17370. I don't
see a reason _not_ to fix this.

Closes https://github.com/astral-sh/uv/issues/17370.
2026-01-09 15:43:20 -05:00
Mathieu Kniewallner
161b99c546 Add Rust language classifier (#17389)
## Summary

Noticed that something really important was missing 🦀
2026-01-09 14:41:28 -06:00
Zanie Blue
00f07541a1 Bump version to 0.9.23 (#17385) 0.9.23 2026-01-09 19:09:04 +00:00
Zanie Blue
dbb4e0b1c7 Recognize armv8l as an alias for armv7l in platform tag parsing (#17384)
Closes #17375

It looks like this was missed in
https://github.com/astral-sh/uv/pull/8881 and now that we fail if wheel
tags do not match the target environment (see
https://github.com/astral-sh/uv/pull/16074), we do not allow armv8l
wheels to installed in environments where the interpreter reports
armv7l.

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-09 12:29:23 -06:00
Charlie Marsh
7bb6e3109c Split OIDC and S3 clients in publish (#17379) 2026-01-09 12:15:58 -05:00
Charlie Marsh
a959d625b2 Include headers when uploading to S3 (#17381)
## Summary

The server sends these down, and the pre-signed URL _requires_ them to
be set.
2026-01-09 11:32:51 -05:00
Zanie Blue
a8ecd7c477 Support relative paths in UV_PYTHON_BIN_DIR and UV_TOOL_BIN_DIR (#17367)
Closes #17364

Extends #17365

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-09 07:21:46 -06:00
Zanie Blue
21f76e8a2a Clarify that uv run uses inexact syncing by default (#17366)
Closes #14230

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-09 07:20:42 -06:00
Charlie Marsh
85dedc8051 Enable uploads via pre-signed URLs (#17349)
## Summary

For pyx, we can allow uploads that bypass the registry and send the file
directly to S3. This is an opt-in feature, enabled via the `--direct`
flag.
2026-01-08 21:26:34 -05:00
Zanie Blue
25d691eeaf Document why parse_xdg_path requires absolute paths (#17365)
Related to #17364

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-08 21:22:41 +00:00
Tom Schafer
29285db48e Fix missing dependencies on synthetic root in SBOM export (#17363) 2026-01-08 13:19:34 -05:00
Zanie Blue
6d9c8f853f Add index.md suggestion to llms.txt (#17362)
I noticed that Claude did not request the `index.md` files when pointed
to `llms.txt`

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-08 10:57:37 -06:00
Zanie Blue
b5d3186061 Add authentication tests for URLs with an empty username (#17347)
Add test cases for https://github.com/astral-sh/uv/issues/17343 where
you have an empty username and non-empty password

These don't include the "redirect" aspect.

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-08 07:41:22 -06:00
Zanie Blue
600a332bec Add Renovate automation for maturin version bumps (#17353)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-08 07:15:17 -06:00
renovate[bot]
1447694188 Update Rust crate toml_edit to 0.24.0 (#17303)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: William Woodruff <william@astral.sh>
2026-01-07 21:14:12 +00:00
konsti
6b2d6f2c40 Only write portable paths in RECORD (#17339)
The spec allows both, but we're already using forward paths for paths
that are not created by uv.

See
* https://github.com/astral-sh/uv/issues/14446
* https://github.com/python/importlib_metadata/issues/528

Closes #14446

---------

Co-authored-by: Tomasz Kramkowski <tom@astral.sh>
2026-01-07 20:40:18 +01:00
Zanie Blue
c71ba13b6d Avoid checking formatting of all files during windows trampoline checks (#17348)
I've noticed this escapes the trampoline crates so these fail whenever
there's bad formatting in the workspace.

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-07 13:14:47 -06:00
Jo
29c44c71c2 Use ty to type-check Python files (#17229)
I added mypy type‑checking in https://github.com/astral-sh/uv/pull/5332,
so I think it's a good time to switch to ty now :)
2026-01-07 12:25:15 -06:00
William Woodruff
9ddaae2244 Initial PEP 792 types and index parsing (#17311) 2026-01-07 16:35:39 +00:00
William Woodruff
dbe5481d5c Use DisplaySafeUrl to readact a URL in a trace log (#17346) 2026-01-07 15:55:08 +00:00
Charlie Marsh
cd55d1ce12 Manually parse and reconcile Boolean environment variables (#17321)
## Summary

This gives us more flexibility since we can avoid erroring on
"conflicts" when one option is disabled (e.g., `UV_FROZEN=0 uv lock
--check`).

Closes https://github.com/astral-sh/uv/issues/13385.

Closes https://github.com/astral-sh/uv/issues/13316.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 20:43:04 +00:00
Eli Uriegas
e67dbce3fe Allow setting proxy variables via global / user configuration (#16918)
<!--
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? -->

This allows users to set the HTTP, HTTPS, and no proxy variables via the
configuration files like ~pyproject.toml~ and uv.toml.

Users can set like so:

`uv.toml`
```toml
https-proxy = "http://my_cool_proxy:10500"
http-proxy = "http://my_cool_proxy:10500"
no-proxy = [
  "dontproxyme.com",
  "localhost",
]
```

Resolves https://github.com/astral-sh/uv/issues/9472

## Test Plan

<!-- How was it tested? -->
It also adds a new integration test for the proxy support in
`uv-client`.

This was tested on some of our developer machines with our proxy setup
using `~/.config/uv/uv.toml` with values like:

```toml
https-proxy = "http://my_cool_proxy:10500"
http-proxy = "http://my_cool_proxy:10500"
no-proxy = [
  "dontproxyme.com",
  "localhost",
]

```

---------

Signed-off-by: Eli Uriegas <eliuriegas@meta.com>
Co-authored-by: Zanie Blue <contact@zanie.dev>
2026-01-06 11:13:59 -06:00
Leo H
cc1ca8b4a1 Avoid broken build artifacts on build failure (#17276)
## Summary

Fixes https://github.com/astral-sh/uv/issues/17232

When `uv build` fails (e.g., due to missing `__init__.py`), partial
distribution
files were being left in the `dist/` directory. 

### Changes

- Use `NamedTempFile` to write build output to a temporary file first
- Only persist the file to the final location on successful build
- If build fails, the temporary file is automatically cleaned up
- Added `Error::Persist` variant for handling persistence failures

## Test Plan

Added `no_partial_files_on_build_failure` test that verifies:

1. `build_source_dist` fails when `__init__.py` is missing
2. `build_wheel` fails when `__init__.py` is missing  
3. The `dist/` directory remains empty after both failures (no partial
files)

---------

Co-authored-by: Hayashi Reo <reo@wantedly.com>
2026-01-06 15:27:05 +01:00
Zanie Blue
d7cdd58d63 Format JSON schema with prettier at generation time (#17272)
Formats the generated JSON schema with prettier so it doesn't fail CI
lints immediately after update.

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-06 08:20:45 -06:00
konsti
82a6a66b81 Bump version to 0.9.22 (#17333)
There's a hyper-util bump to get out separate from other reqwest related
changes.
0.9.22
2026-01-06 11:23:12 +01:00
konsti
4950dd475b Remove retries duplication uv_client error (#17325)
Previously, we had a retry count both on the top level error type, and
on an error variant, and had a conversion step in between. When
reviewing #17274, I noticed we can simplify that.
2026-01-06 09:20:02 +00:00
Charlie Marsh
6049ddcb86 Add manylinux to armv6l match (#17328)
## Summary

See: https://github.com/astral-sh/uv/pull/17317/changes#r2662205930. I
omitted these because we technically don't allow this for manylinux, but
this seems more consistent.
2026-01-05 19:37:08 -05:00
William Woodruff
a27e0c850d Use Cow<str> for deserialization everywhere (#17330) 2026-01-05 17:57:35 -05:00
Zanie Blue
478c884704 Use Cow<str> for deserialization map keys in PypiFile and PyxFile (#17327)
Co-authored-by: Claude <noreply@anthropic.com>
2026-01-05 15:59:44 -05:00
Tomasz Kramkowski
df62ee6f4d Track retry counts originating from early middleware errors (#17274)
## Summary

Fixes #17266.

The retry count was getting dropped by
`ErrorKind::from_retry_middleware` and `<Error as
From<ErrorKind>>::from` so we were doing more retries than we should
have.

## Test Plan

Added a testcase for the specific error path in the issue. Added an
expect to the other retry test too.
2026-01-05 20:06:38 +00:00
William Woodruff
6f9fced6c6 Replace deprecated benchmarking mode (#17222)
## Summary

Minor, noticed this with #17221. CodSpeed has deprecated
`instrumentation` and replaced it with `simulation`, which has the same
meaning:

https://codspeed.io/docs/instruments/cpu/overview#legacy-terminology

## Test Plan

No functional changes.

---------

Signed-off-by: William Woodruff <william@astral.sh>
2026-01-05 19:52:29 +01:00
Charlie Marsh
691719f906 Filter PPC wheels et al in lockfile (#17317)
## Summary

Closes https://github.com/astral-sh/uv/issues/17313.
2026-01-05 10:25:02 -05:00
Charlie Marsh
a3b1aee8c7 Use a dedicated error message when lockfile can't be found (#17318)
## Summary

Closes https://github.com/astral-sh/uv/issues/17259.
2026-01-05 07:40:56 -05:00
konsti
24cc4a789b Fix some Rust 1.92 clippy lints (#17324)
Saw this as a build failure in a CI job.

Excluding https://github.com/zkat/miette/pull/459
2026-01-05 11:11:43 +00:00
renovate[bot]
1fd4a784d2 Update Rust crate uuid to v1.19.0 (#17304)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [uuid](https://redirect.github.com/uuid-rs/uuid) |
workspace.dependencies | minor | `1.17.0` → `1.19.0` |

---

### Release Notes

<details>
<summary>uuid-rs/uuid (uuid)</summary>

###
[`v1.19.0`](https://redirect.github.com/uuid-rs/uuid/releases/tag/v1.19.0)

[Compare
Source](https://redirect.github.com/uuid-rs/uuid/compare/v1.18.1...v1.19.0)

#### What's Changed

- Switch serde dependency to serde\_core by
[@&#8203;paolobarbolini](https://redirect.github.com/paolobarbolini) in
[#&#8203;843](https://redirect.github.com/uuid-rs/uuid/pull/843)
- Upgrade to 2021 edition and fix most clippy warnings by
[@&#8203;paolobarbolini](https://redirect.github.com/paolobarbolini) in
[#&#8203;848](https://redirect.github.com/uuid-rs/uuid/pull/848)
- Prepare for 1.19.0 release by
[@&#8203;KodrAus](https://redirect.github.com/KodrAus) in
[#&#8203;849](https://redirect.github.com/uuid-rs/uuid/pull/849)

**Full Changelog**:
<https://github.com/uuid-rs/uuid/compare/v1.18.1...v1.19.0>

###
[`v1.18.1`](https://redirect.github.com/uuid-rs/uuid/releases/tag/v1.18.1)

[Compare
Source](https://redirect.github.com/uuid-rs/uuid/compare/v1.18.0...v1.18.1)

##### What's Changed

- Unsafe cleanup by
[@&#8203;KodrAus](https://redirect.github.com/KodrAus) in
[#&#8203;841](https://redirect.github.com/uuid-rs/uuid/pull/841)
- Prepare for 1.18.1 release by
[@&#8203;KodrAus](https://redirect.github.com/KodrAus) in
[#&#8203;842](https://redirect.github.com/uuid-rs/uuid/pull/842)

**Full Changelog**:
<https://github.com/uuid-rs/uuid/compare/v1.18.0...v1.18.1>

###
[`v1.18.0`](https://redirect.github.com/uuid-rs/uuid/releases/tag/v1.18.0)

[Compare
Source](https://redirect.github.com/uuid-rs/uuid/compare/v1.17.0...v1.18.0)

##### What's Changed

- Fix up mismatched\_lifetime\_syntaxes lint by
[@&#8203;KodrAus](https://redirect.github.com/KodrAus) in
[#&#8203;837](https://redirect.github.com/uuid-rs/uuid/pull/837)
- Conversions between `Timestamp` and `std::time::SystemTime` by
[@&#8203;dcormier](https://redirect.github.com/dcormier) in
[#&#8203;835](https://redirect.github.com/uuid-rs/uuid/pull/835)
- Wrap the error type used in time conversions by
[@&#8203;KodrAus](https://redirect.github.com/KodrAus) in
[#&#8203;838](https://redirect.github.com/uuid-rs/uuid/pull/838)
- Prepare for 1.18.0 release by
[@&#8203;KodrAus](https://redirect.github.com/KodrAus) in
[#&#8203;839](https://redirect.github.com/uuid-rs/uuid/pull/839)

##### New Contributors

- [@&#8203;dcormier](https://redirect.github.com/dcormier) made their
first contribution in
[#&#8203;835](https://redirect.github.com/uuid-rs/uuid/pull/835)

**Full Changelog**:
<https://github.com/uuid-rs/uuid/compare/v1.17.0...v1.18.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:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4xIiwidXBkYXRlZEluVmVyIjoiNDIuNjkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-05 12:01:24 +01:00
renovate[bot]
fe9198e546 Update Rust crate tempfile to v3.24.0 (#17298)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [tempfile](https://stebalien.com/projects/tempfile-rs/)
([source](https://redirect.github.com/Stebalien/tempfile)) |
workspace.dependencies | minor | `3.20.0` → `3.24.0` |

---

### Release Notes

<details>
<summary>Stebalien/tempfile (tempfile)</summary>

###
[`v3.24.0`](https://redirect.github.com/Stebalien/tempfile/blob/HEAD/CHANGELOG.md#3240)

[Compare
Source](https://redirect.github.com/Stebalien/tempfile/compare/v3.23.0...v3.24.0)

- Actually support WASIp2 without the nightly feature. This library is
now feature complete on WASIp2 without any additional feature flags.
- Exclude CI scripts from the published crate.

###
[`v3.23.0`](https://redirect.github.com/Stebalien/tempfile/blob/HEAD/CHANGELOG.md#3230)

[Compare
Source](https://redirect.github.com/Stebalien/tempfile/compare/v3.22.0...v3.23.0)

- Remove need for the "nightly" feature to compile with "wasip2".

###
[`v3.22.0`](https://redirect.github.com/Stebalien/tempfile/blob/HEAD/CHANGELOG.md#3220)

[Compare
Source](https://redirect.github.com/Stebalien/tempfile/compare/v3.21.0...v3.22.0)

- Updated `windows-sys` requirement to allow version 0.61.x
- Remove `unstable-windows-keep-open-tempfile` feature.

###
[`v3.21.0`](https://redirect.github.com/Stebalien/tempfile/blob/HEAD/CHANGELOG.md#3210)

[Compare
Source](https://redirect.github.com/Stebalien/tempfile/compare/v3.20.0...v3.21.0)

- Updated `windows-sys` requirement to allow version 0.60.x

</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:eyJjcmVhdGVkSW5WZXIiOiI0Mi42OS4xIiwidXBkYXRlZEluVmVyIjoiNDIuNjkuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-05 11:33:43 +01:00
nwyin
2318e48e81 Gate python_install tests on python-managed feature (#17312)
## Summary

Gates four tests in `python_find.rs` that call `python_install()` behind
the `python-managed` feature flag. These tests attempt to download
Python versions from the network (free-threaded and pre-release
versions) which fail in offline build environments.

  Fixes #16431

  ## Test Plan

Verified that the gated tests match the pattern used elsewhere in the
codebase where the entire `python_install` module is already gated
behind `#[cfg(feature = "python-managed")]`.
2026-01-03 16:30:50 -06:00
renovate[bot]
0d1ee355ca Update documentation references to actions/checkout to v6 (#17306)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:19:17 -05:00
renovate[bot]
e3687b5b68 Update documentation references to actions/cache to v5 (#17305)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:18:59 -05:00
renovate[bot]
1b66f24b4c Update docker/metadata-action action to v5.10.0 (#17301)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 13:05:27 -05:00
renovate[bot]
0f53c48dd9 Update actions/setup-python action to v6 (#17299)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 12:51:49 -05:00
renovate[bot]
9ea4d1afa7 Update docker/login-action action to v3.6.0 (#17300)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 17:46:33 +00:00
renovate[bot]
8e8881e2fa Update EmbarkStudios/cargo-deny-action action to v2.0.14 (#16898)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 12:40:56 -05:00
renovate[bot]
c6fa2e89c3 Update Rust crate rustix to v1.1.3 (#17297)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 17:25:11 +00:00
renovate[bot]
d79dc495fa Update Rust crate insta to v1.45.0 (#17296)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 17:22:29 +00:00