Commit Graph

6483 Commits

Author SHA1 Message Date
renovate[bot]
916d69be5d Update Rust crate rustix to v1.0.7 (#13397)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [rustix](https://redirect.github.com/bytecodealliance/rustix) |
workspace.dependencies | patch | `1.0.1` -> `1.0.7` |

---

### Release Notes

<details>
<summary>bytecodealliance/rustix (rustix)</summary>

###
[`v1.0.7`](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.6...v1.0.7)

[Compare
Source](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.6...v1.0.7)

###
[`v1.0.6`](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.5...v1.0.6)

[Compare
Source](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.5...v1.0.6)

###
[`v1.0.5`](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.4...v1.0.5)

[Compare
Source](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.4...v1.0.5)

###
[`v1.0.4`](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.3...v1.0.4)

[Compare
Source](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.3...v1.0.4)

###
[`v1.0.3`](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.2...v1.0.3)

[Compare
Source](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.2...v1.0.3)

###
[`v1.0.2`](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.1...v1.0.2)

[Compare
Source](https://redirect.github.com/bytecodealliance/rustix/compare/v1.0.1...v1.0.2)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0MC43LjEiLCJ1cGRhdGVkSW5WZXIiOiI0MC43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImludGVybmFsIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 11:47:48 +02:00
konsti
87c8ec8a85 Fix ecosystem checks by pinning Git refs (#13401)
https://github.com/pallets/flask/pull/5727 broke our ecosystem checks,
for now we're pinning the Git refs to unblock CI.
2025-05-12 11:45:25 +02:00
renovate[bot]
aed9269c8e Align indentation of long arguments (#13394)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [clap](https://redirect.github.com/clap-rs/clap) |
workspace.dependencies | patch | `4.5.35` -> `4.5.38` |

---

### Release Notes

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

###
[`v4.5.38`](https://redirect.github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4538---2025-05-11)

[Compare
Source](https://redirect.github.com/clap-rs/clap/compare/v4.5.37...v4.5.38)

##### Fixes

-   *(help)* When showing aliases, include leading `--` or `-`

###
[`v4.5.37`](https://redirect.github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4537---2025-04-18)

[Compare
Source](https://redirect.github.com/clap-rs/clap/compare/v4.5.36...v4.5.37)

##### Features

-   Added `ArgMatches::try_clear_id()`

###
[`v4.5.36`](https://redirect.github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4536---2025-04-11)

[Compare
Source](https://redirect.github.com/clap-rs/clap/compare/v4.5.35...v4.5.36)

##### Fixes

- *(help)* Revert 4.5.35's "Don't leave space for shorts if there are
none" for now

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0MC43LjEiLCJ1cGRhdGVkSW5WZXIiOiI0MC43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImludGVybmFsIl19-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: konstin <konstin@mailbox.org>
2025-05-12 11:36:48 +02:00
renovate[bot]
bd8bffe39a Update Rust crate sha2 to v0.10.9 (#13398)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [sha2](https://redirect.github.com/RustCrypto/hashes) |
workspace.dependencies | patch | `0.10.8` -> `0.10.9` |

---

### Release Notes

<details>
<summary>RustCrypto/hashes (sha2)</summary>

###
[`v0.10.9`](https://redirect.github.com/RustCrypto/hashes/compare/sha2-v0.10.8...sha2-v0.10.9)

[Compare
Source](https://redirect.github.com/RustCrypto/hashes/compare/sha2-v0.10.8...sha2-v0.10.9)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0MC43LjEiLCJ1cGRhdGVkSW5WZXIiOiI0MC43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImludGVybmFsIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 11:13:23 +02:00
renovate[bot]
7b5178e67e Update Rust crate jiff to v0.2.13 (#13396)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [jiff](https://redirect.github.com/BurntSushi/jiff) |
workspace.dependencies | patch | `0.2.10` -> `0.2.13` |

---

### Release Notes

<details>
<summary>BurntSushi/jiff (jiff)</summary>

###
[`v0.2.13`](https://redirect.github.com/BurntSushi/jiff/blob/HEAD/CHANGELOG.md#0213-2025-05-05)

[Compare
Source](https://redirect.github.com/BurntSushi/jiff/compare/0.2.12...0.2.13)

\===================
This release fixes a bug in a corner case where `TimeZone::following`
could
sometimes omit the last time zone transition. This could only happen in
time
zones that once had daylight saving time, but ended it. This did not
have an
impact on other Jiff APIs that handle daylight saving time.

Bug fixes:

- [#&#8203;362](https://redirect.github.com/BurntSushi/jiff/issues/362):
Fix a bug where `TimeZone::following` could omit the last historical
time zone
    transition.

###
[`v0.2.12`](https://redirect.github.com/BurntSushi/jiff/blob/HEAD/CHANGELOG.md#0212-2025-05-03)

[Compare
Source](https://redirect.github.com/BurntSushi/jiff/compare/0.2.11...0.2.12)

\===================
This release fixes a couple bugs in Jiff's parser. In particular, a
regression
was introduced in `jiff 0.2.11` where its RFC 2822 parser could panic on
some
inputs. Previous releases of Jiff are unaffected.

Bug fixes:

- [#&#8203;357](https://redirect.github.com/BurntSushi/jiff/issues/357):
Fix a bug where parsing `1970-06-01T00-00:45:00[Africa/Monrovia]`
succeeded
    but it should fail.
- [#&#8203;359](https://redirect.github.com/BurntSushi/jiff/issues/359):
    Fix a bug where the RFC 2822 parser could panic on some inputs.

###
[`v0.2.11`](https://redirect.github.com/BurntSushi/jiff/blob/HEAD/CHANGELOG.md#0211-2025-05-01)

[Compare
Source](https://redirect.github.com/BurntSushi/jiff/compare/0.2.10...0.2.11)

\===================
This release includes new APIs for customizing Jiff's `strtime` behavior
along
with a few minor bug fixes. Jiff's `strtime` formatting API has also
been
optimized. It's about twice as fast as it was.

This release also coincides with the publication of `jiff-icu
0.2.0-beta.2`,
which has support for `icu 2.0.0-beta.2`.

Enhancements:

-   [#&#8203;338](https://redirect.github.com/BurntSushi/jiff/pull/338):
    Add support for the `%c`, `%r`, `%X` and `%x` conversion specifiers.
- [#&#8203;341](https://redirect.github.com/BurntSushi/jiff/issues/341):
Add support for `%q` in `jiff::fmt::strtime` (prints quarter of year).
- [#&#8203;342](https://redirect.github.com/BurntSushi/jiff/issues/342):
    Add support for `%::z` and `%:::z` in `jiff::fmt::strtime`.
- [#&#8203;344](https://redirect.github.com/BurntSushi/jiff/issues/344):
    Add support for `%N` in `jiff::fmt::strtime` (alias for `%9f`).
- [#&#8203;350](https://redirect.github.com/BurntSushi/jiff/issues/350):
Add a "lenient" mode for `strtime` formatting APIs that ignores most
errors.

Bug fixes:

- [#&#8203;328](https://redirect.github.com/BurntSushi/jiff/issues/328):
Document default precision behavior of `Display` impls for datetime
types.
- [#&#8203;340](https://redirect.github.com/BurntSushi/jiff/issues/340):
Allow whitespace in more places in RFC 2822 parser (improves spec
compliance).
- [#&#8203;346](https://redirect.github.com/BurntSushi/jiff/issues/346):
    `TimeZone::get("UTC")` should now always return `TimeZone::UTC`.

Performance:

-   [#&#8203;338](https://redirect.github.com/BurntSushi/jiff/pull/338):
Jiff's `strftime` APIs are now approximately twice as fast as they were.
Performance should be comparable to `chrono` and `time`'s prebuilt APIs.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0MC43LjEiLCJ1cGRhdGVkSW5WZXIiOiI0MC43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImludGVybmFsIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 11:10:57 +02:00
renovate[bot]
b005aedb1c Update pre-commit hook astral-sh/ruff-pre-commit to v0.11.9 (#13393)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[astral-sh/ruff-pre-commit](https://redirect.github.com/astral-sh/ruff-pre-commit)
| repository | patch | `v0.11.8` -> `v0.11.9` |

Note: The `pre-commit` manager in Renovate is not supported by the
`pre-commit` maintainers or community. Please do not report any problems
there, instead [create a Discussion in the Renovate
repository](https://redirect.github.com/renovatebot/renovate/discussions/new)
if you have any questions.

---

### Release Notes

<details>
<summary>astral-sh/ruff-pre-commit (astral-sh/ruff-pre-commit)</summary>

###
[`v0.11.9`](https://redirect.github.com/astral-sh/ruff-pre-commit/releases/tag/v0.11.9)

[Compare
Source](https://redirect.github.com/astral-sh/ruff-pre-commit/compare/v0.11.8...v0.11.9)

See: https://github.com/astral-sh/ruff/releases/tag/0.11.9

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiI0MC43LjEiLCJ1cGRhdGVkSW5WZXIiOiI0MC43LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImludGVybmFsIl19-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-12 11:03:12 +02:00
Charlie Marsh
4109210cca Avoid erroring on pylock.toml dependency entries (#13384)
## Summary

We want to allow any map; as-is, it expects the unit struct.

Closes https://github.com/astral-sh/uv/issues/13383.
2025-05-11 02:55:58 +00:00
Charlie Marsh
e70cf25ea7 Fix .tgz parsing to respect true extension (#13382)
## Summary

We mapped both `.tgz` and `.tar.gz` to the same enum variant; later,
though, we made the assumption that a file marked with that variant
ended with exactly `.tar.gz`. Instead, we need to preserve the
originating suffix.

Closes https://github.com/astral-sh/uv/issues/13372.
2025-05-10 20:55:28 +00:00
Charlie Marsh
d3fc814ff9 Retain dot-separated wheel tags during cache prune (#13379)
## Summary

If a set of wheel tags includes a dot, this code is treating the part
_after_ the dot as an extension, and thereby failing to detect that the
entry is a symlink to an archive (and thereby removing the archive).

This is all an optimization, so this code just makes it a little
targeted: we skip specific known extensions, rather than anything with
any extension.

Closes https://github.com/astral-sh/uv/issues/13270.
2025-05-10 18:39:11 +00:00
Frazer McLean
62692b4e1b Fix detection of sorted dependencies when include-group is used (#13354)
This follows on from #13334 to fix another case.

<!--
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

If a dependency group contained any `{ include-group = "..." }` entries,
the sort detection would bail out. The root cause of the problem was
gating the sort detection behind `deps.iter().all(Value::is_str)`.

A public code search reveals that keeping include-groups at the top is
by far the most common, but keeping them at the bottom isn't uncommon.
In both of these cases, uv will now preserve the convention that is in
use.

Unless I've missed it, I don't think uv supports `uv add`ing an
include-group, and so that wasn't tested here.

## Test Plan

cargo test

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2025-05-10 14:00:27 -04:00
Bryan Lee
8d6d616791 Update issue templates to use uv self version command (#13370)
<!--
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 PR updates the issue templates to recommend using the `uv self
version` command instead of `uv version` for retrieving uv's own version
information. The `uv version` command is intended to show the current
project's version (from pyproject.toml), not the uv tool version, which
leads to confusion when users try to report issues.

## Test Plan

<!-- How was it tested? -->
n/a
2025-05-09 16:41:24 -05:00
Zanie Blue
26e37f3a1e Rename --raw-sources to --raw (#13348)
This also omits bounds on constraints, and is useful for that. This
retains `--raw-sources` as an alias. I've had this on my mind for a
while, but https://github.com/astral-sh/uv/pull/12946 reminded me of it
again.
2025-05-08 15:05:03 -05:00
Zanie Blue
9a15240147 Fix display of HTTP responses in trace logs for retry of errors (#13339)
Follows https://github.com/astral-sh/uv/pull/13228

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

I recall some discussion (maybe around
https://github.com/astral-sh/uv/pull/4725) about how finding the source
may not work properly? I can't find it though.

Now, I tested this, e.g.:

```
❯ cargo run -q -- pip install anyio -vv --index-url https://download.pytorch.org/whl/torch/ --no-cache --reinstall
...
TRACE Considering retry of response HTTP 403 Forbidden for https://download.pytorch.org/whl/torch/anyio/
```

I lament that I didn't think of that as a testing method in the first
place :)
2025-05-08 09:23:24 -05:00
Charlie Marsh
145fe4e7e3 Show 'Downgraded' when self update is used to install an older version (#13340)
## Summary

Small thing I noticed while testing
https://github.com/astral-sh/uv/pull/13305.
2025-05-08 00:17:47 +00:00
Ahmed Ilyas
3eba70cf09 Suggest uv self update if required version is newer (#13305)
## Summary

Closes #13253 

## Test Plan

```sh
❯ cat pyproject.toml | rg required
required-version = ">=0.7.3, <0.8"
❯ cargo run -q --features self-update --manifest-path ~/uv/Cargo.toml add black
error: Required uv version `>=0.7.3, <0.8` does not match the running version `0.7.2`.
hint: Update `uv` by running `uv self update`.
❯ cat pyproject.toml | rg required
required-version = ">=0.7.3"
❯ cargo run -q --features self-update --manifest-path ~/uv/Cargo.toml add black
error: Required uv version `>=0.7.3` does not match the running version `0.7.2`. 
hint: Update `uv` by running `uv self update`.
❯ cat pyproject.toml | rg required
required-version = "<0.7"
❯ cargo run -q --features self-update --manifest-path ~/uv/Cargo.toml add black
error: Required uv version `<0.7` does not match the running version `0.7.2`.
❯ cat pyproject.toml | rg required
required-version = ">=0.4,<0.7"
❯ cargo run -q --features self-update --manifest-path ~/uv/Cargo.toml add black
error: Required uv version `>=0.4, <0.7` does not match the running version `0.7.2`.
```

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2025-05-08 00:09:29 +00:00
Frazer McLean
d242c47821 Preserve order of dependencies which are sorted naively (#13334)
## Summary

The prior implementation only looks for dependencies which are sorted by
name then specifier.

I knew uv was meant to preserve sorted dependencies, but it never seemed
to work for me.

I've always used the "sort lines" feature of PyCharm/Sublime to sort
these lists, and I guess I'm not the only one. In such a case,
`flask-wtf>=1.2.1` is sorted before `flask>=3.0.2`.

After digging into the code I realised what was happening, hence this
merge request.

Maybe there's a tool I'm not aware of that people are using to sort
dependencies "properly", or are doing it by hand, but I think this is
worth supporting.

Relevant issues: https://github.com/astral-sh/uv/issues/9076,
https://github.com/astral-sh/uv/issues/10738

## Test Plan

`cargo test`
2025-05-07 18:18:20 -04:00
Zanie Blue
3c413f74b9 Bump verison to 0.7.3 (#13337) 0.7.3 2025-05-07 14:37:22 -05:00
Zanie Blue
fa8db5a8d0 Avoid enumerating sources in errors for path Python requests (#13335)
e.g., these are misleading cruft in the error message at
https://github.com/astral-sh/uv/pull/12168#discussion_r2078204601

```
❯ uv python find /foo/bar
error: No interpreter found for path `/foo/bar` in virtual environments, managed installations, or search path
❯ cargo run -q -- python find /foo/bar
error: No interpreter found at path `/foo/bar`
```
2025-05-07 18:53:09 +00:00
konsti
364e3999d4 Improve error message when a virtual environment Python symlink is broken (#12168)
When removing a Python interpreter underneath an existing venv, uv
currently shows a not found error:

```
error: Failed to inspect Python interpreter from active virtual environment at `.venv/bin/python3`
  Caused by: Python interpreter not found at `/home/konsti/projects/uv/.venv/bin/python3`
```

This is unintuitive, as the file for the Python interpreter does exist,
it is a broken symlink that needs to be replaced with `uv venv`.

I've been encountering those occasionally, and I expect users that
switch between versions a lot will, too, especially when they also use
pyenv or a similar Python manager.

The new error hints at this solution:

```
error: Failed to inspect Python interpreter from active virtual environment at `.venv/bin/python3`
  Caused by: Broken symlink at `.venv/bin/python3`, was the underlying Python interpreter removed?

hint: To recreate the virtual environment, run `uv venv`
```
2025-05-07 13:24:53 -05:00
konsti
a43333351e Build backend: Allow escaping in globs (#13313)
PEP 639 does not allow any characters that aren't in either their
limited glob syntax or the alphanumeric Unicode characters. This means
there's no way to express a glob such as `**/@test` for the excludes.

We extend the glob syntax from PEP 639 by introducing backslash escapes,
which can escape all characters but path separators (forward and
backwards slashes) to be parsed verbatim.

This means we have two glob parsers: The strict PEP 639 parser for
`project.license-files`, and our extended parser for `tool.uv`, with a
slight difference if you need to use special characters, to both adhere
to PEP 639 and to support cases such as #13280.

Fixes #13280
2025-05-07 18:31:41 +02:00
Zanie Blue
ddd6f3debe Fix discovery of pre-release managed Python versions in range requests (#13330)
We have test coverage for this elsewhere, but managed Python versions
are a distinct case because we know the _full_ version before querying
the interpreter (whereas, when we find them on the `PATH`, we usually
only know `X.y` from the file name).

This pre-filter logic now matches our subsequent logic at


060be9cef1/crates/uv-python/src/discovery.rs (L2146-L2149)



060be9cef1
shows the snapshot change.
2025-05-07 09:27:13 -05:00
John Mumm
1eaa432e37 Remove outdated description of index strategy (#13326) 2025-05-07 08:18:21 -05:00
Tobias Gårdhus
5e7f3d2920 Add --show-with to uv tool list to list packages included by --with (#13264)
## Summary

Add a `--show-extras` argument to the `uv tool list` cli, to show which
extra dependencies were installed with the tool.

i.e.

```bash
$ uv tool install fastapi --with requests --with typer==0.14
```

```bash
$ uv tool list --show-extras
fastapi v0.115.12 [extras: requests, typer==0.14]
- fastapi
```

## Test Plan

Added a new test function based on the others in the same file, with the
other arguments tested with the new argument as well.
2025-05-06 15:23:50 -05:00
konsti
1ec1935693 Reproducible uv build backend across operating systems (#13171)
The goal of this PR is to support reproducible builds and best-effort
platform-independent builds. Previously, while the build backend would
build the same source dist and wheel on the same machine, they would
look different across different operating systems. This PR fixes the
platform-dependent walk dir order by sorting and removes
platform-specific permissions from the source dist that had caused those
differences.

The reproducibility goal does not extend to platform-dependent
filesystem features, such as permissions and links, especially in
interaction with Git. Since most users share code across platforms
through Git, we're focusing on cross-platform behavior under Git. One of
those caveats is intentional: If a file, such as a bash script, has an
executable bit, we preserve it. This means that E.g. builds of Git
checkout of a repository with an executable shell script in the sources
will have different archives on Unix and Windows. Another relevant case
are symlinks: By default, Git on Windows replaces symlinks with a file
that contains the path to the target file
(https://stackoverflow.com/q/5917249/3549270). (This example comes from
Cargo, where it means that the package archive is different on Windows
when symlinking license from the repository root to a workspace package)

Best reviewed commit-by-commit
2025-05-06 18:51:56 +02:00
Tim Felgentreff
878c2acdf3 Add downloading of GraalPy (#13172)
## Summary

This adds GraalPy download metadata so that `uv python install graalpy`
works. See https://github.com/astral-sh/uv/issues/13114

## Test Plan

The existing integration test was changed to test this functionality.
2025-05-06 11:02:27 -05:00
konsti
9071e0eeac Move portable glob parsing to struct (#13311)
Refactoring to make fixing #13280 easier.
2025-05-06 11:22:54 +00:00
konsti
3218e364ae Use fs_err for paths in symlinking errors (#13303)
In #13302, there was an IO error without context. This error seems to be
caused by a symlink error. Switching as symlinking to `fs_err` ensures
these errors will carry context in the future.
2025-05-05 16:29:27 +00:00
Charlie Marsh
f557ea3823 Avoid re-creating virtual environment with --no-sync (#13287)
## Summary

We now show a user-visible warning if we're using a "stale" virtual
environment due to `--no-sync`. I'd also be fine erroring here.

Closes https://github.com/astral-sh/uv/issues/13235.
2025-05-05 14:57:46 +00:00
konsti
5386701cc1 Build backend: Make preview default and add configuration docs (#12804)
Add configuration documentation for the build backend and make it the
preview default.

The build backend should generally work with default configuration
unless you want specific features such as flat layout or module
renaming, there is only a dedicated configuration, but no concept or
guide page for the build backend. Once the build backend is stable, we
can update the guide documentation to explain that uv defaults to its
own build backend, but other build backends are also supported.

The uv build backend becomes the default in preview, giving it more
exposure from users and preparing it to make it the default proper. The
current documentation retains warnings that the build backend is in
preview.

To see current uses of `uv_build` on GitHub:
https://github.com/search?q=path%3A**%2Fpyproject.toml+uv_build%3E%3D0&type=code

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-05-05 13:52:31 +00:00
renovate[bot]
1cfc67d266 Update Artifact GitHub Actions dependencies (#13290)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| actions/download-artifact | action | digest | `95815c3` -> `d3f86a1` |
|
[actions/download-artifact](https://redirect.github.com/actions/download-artifact)
| action | minor | `v4.2.1` -> `v4.3.0` |

---

### Release Notes

<details>
<summary>actions/download-artifact (actions/download-artifact)</summary>

###
[`v4.3.0`](https://redirect.github.com/actions/download-artifact/releases/tag/v4.3.0)

[Compare
Source](https://redirect.github.com/actions/download-artifact/compare/v4.2.1...v4.3.0)

#### What's Changed

- feat: implement new `artifact-ids` input by
[@&#8203;GrantBirki](https://redirect.github.com/GrantBirki) in
[https://github.com/actions/download-artifact/pull/401](https://redirect.github.com/actions/download-artifact/pull/401)
- Fix workflow example for downloading by artifact ID by
[@&#8203;joshmgross](https://redirect.github.com/joshmgross) in
[https://github.com/actions/download-artifact/pull/402](https://redirect.github.com/actions/download-artifact/pull/402)
- Prep for v4.3.0 release by
[@&#8203;robherley](https://redirect.github.com/robherley) in
[https://github.com/actions/download-artifact/pull/404](https://redirect.github.com/actions/download-artifact/pull/404)

#### New Contributors

- [@&#8203;GrantBirki](https://redirect.github.com/GrantBirki) made
their first contribution in
[https://github.com/actions/download-artifact/pull/401](https://redirect.github.com/actions/download-artifact/pull/401)

**Full Changelog**:
https://github.com/actions/download-artifact/compare/v4.2.1...v4.3.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 09:52:26 +00:00
renovate[bot]
12a978cd34 Update astral-sh/setup-uv action to v6.0.1 (#13291)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [astral-sh/setup-uv](https://redirect.github.com/astral-sh/setup-uv) |
action | patch | `v6.0.0` -> `v6.0.1` |

---

### Release Notes

<details>
<summary>astral-sh/setup-uv (astral-sh/setup-uv)</summary>

###
[`v6.0.1`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v6.0.1):
🌈 Fix default cache dependency glob

[Compare
Source](https://redirect.github.com/astral-sh/setup-uv/compare/v6.0.0...v6.0.1)

##### Changes

The new default in v6 used illegal patterns and therefore didn't match
requirements files. This is now fixed.

##### 🐛 Bug fixes

- Fix default cache dependency glob
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;388](https://redirect.github.com/astral-sh/setup-uv/issues/388))

##### 🧰 Maintenance

- chore: update known checksums for 0.6.17
@&#8203;[github-actions\[bot\]](https://redirect.github.com/apps/github-actions)
([#&#8203;384](https://redirect.github.com/astral-sh/setup-uv/issues/384))

##### ⬆️ Dependency updates

- Bump dependencies
[@&#8203;eifinger](https://redirect.github.com/eifinger)
([#&#8203;389](https://redirect.github.com/astral-sh/setup-uv/issues/389))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 11:38:56 +02:00
renovate[bot]
21a95ae433 Update pre-commit dependencies (#13292)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[astral-sh/ruff-pre-commit](https://redirect.github.com/astral-sh/ruff-pre-commit)
| repository | patch | `v0.11.7` -> `v0.11.8` |
| [crate-ci/typos](https://redirect.github.com/crate-ci/typos) |
repository | minor | `v1.31.1` -> `v1.32.0` |

Note: The `pre-commit` manager in Renovate is not supported by the
`pre-commit` maintainers or community. Please do not report any problems
there, instead [create a Discussion in the Renovate
repository](https://redirect.github.com/renovatebot/renovate/discussions/new)
if you have any questions.

---

### Release Notes

<details>
<summary>astral-sh/ruff-pre-commit (astral-sh/ruff-pre-commit)</summary>

###
[`v0.11.8`](https://redirect.github.com/astral-sh/ruff-pre-commit/releases/tag/v0.11.8)

[Compare
Source](https://redirect.github.com/astral-sh/ruff-pre-commit/compare/v0.11.7...v0.11.8)

See: https://github.com/astral-sh/ruff/releases/tag/0.11.8

</details>

<details>
<summary>crate-ci/typos (crate-ci/typos)</summary>

###
[`v1.32.0`](https://redirect.github.com/crate-ci/typos/releases/tag/v1.32.0)

[Compare
Source](https://redirect.github.com/crate-ci/typos/compare/v1.31.2...v1.32.0)

#### \[1.32.0] - 2025-05-02

##### Features

- Updated the dictionary with the [April
2025](https://redirect.github.com/crate-ci/typos/issues/1264) changes

###
[`v1.31.2`](https://redirect.github.com/crate-ci/typos/releases/tag/v1.31.2)

[Compare
Source](https://redirect.github.com/crate-ci/typos/compare/v1.31.1...v1.31.2)

#### \[1.31.2] - 2025-04-28

##### Fixes

-   *(exclusion)* Don't confused emails as base64
-   *(dict)* Correct `contamint` to `contaminant`, not `contaminat`
-   *(dict)* Correct `contamints` to `contaminants`, not `contaminats`

##### Performance

-   Improve tokenization performance

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 11:38:14 +02:00
renovate[bot]
30f3a39eee Update Rust crate assert_fs to v1.1.3 (#13293)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [assert_fs](https://redirect.github.com/assert-rs/assert_fs) |
dev-dependencies | patch | `1.1.2` -> `1.1.3` |

---

### Release Notes

<details>
<summary>assert-rs/assert_fs (assert_fs)</summary>

###
[`v1.1.3`](https://redirect.github.com/assert-rs/assert_fs/blob/HEAD/CHANGELOG.md#113---2025-05-02)

[Compare
Source](https://redirect.github.com/assert-rs/assert_fs/compare/v1.1.2...v1.1.3)

##### Features

-   Add `TempDir::new_in/with_prefix/with_prefix_in`

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 11:37:19 +02:00
renovate[bot]
52c2ee6666 Update Rust crate hashbrown to v0.15.3 (#13294)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [hashbrown](https://redirect.github.com/rust-lang/hashbrown) |
workspace.dependencies | patch | `0.15.2` -> `0.15.3` |

---

### Release Notes

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

###
[`v0.15.3`](https://redirect.github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#0153---2025-04-29)

##### Added

- SIMD implementation for LoongArch
([#&#8203;592](https://redirect.github.com/rust-lang/hashbrown/issues/592),
requires nightly)

##### Changed

- Optimized insertion path by avoiding an unnecessary `match_empty`
([#&#8203;607](https://redirect.github.com/rust-lang/hashbrown/issues/607))
- Increased minimum table size for small types
([#&#8203;615](https://redirect.github.com/rust-lang/hashbrown/issues/615))
- Dropped FnMut trait bounds from `ExtractIf` data structures
([#&#8203;616](https://redirect.github.com/rust-lang/hashbrown/issues/616))
- Relaxed constraint in `hash_map::EntryRef` insertion methods `K:
From<&Q>` to \&Q: `Into<K>`
([#&#8203;611](https://redirect.github.com/rust-lang/hashbrown/issues/611))
- Added allocator template argument for `rustc_iter`
([#&#8203;605](https://redirect.github.com/rust-lang/hashbrown/issues/605))
- The `allocator-api2/nightly` feature is no longer enabled by
`hashbrown/nightly`
([#&#8203;606](https://redirect.github.com/rust-lang/hashbrown/issues/606))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 11:36:01 +02:00
renovate[bot]
1ab6d2d28e Update Rust crate insta to v1.43.1 (#13295)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [insta](https://insta.rs/)
([source](https://redirect.github.com/mitsuhiko/insta)) |
dev-dependencies | patch | `1.43.0` -> `1.43.1` |

---

### Release Notes

<details>
<summary>mitsuhiko/insta (insta)</summary>

###
[`v1.43.1`](https://redirect.github.com/mitsuhiko/insta/blob/HEAD/CHANGELOG.md#1431)

[Compare
Source](https://redirect.github.com/mitsuhiko/insta/compare/1.43.0...1.43.1)

This release in identical in rust code to 1.43.0, but reruns the GitHub
Actions
workflows, which failed to create a release within GitHub for 1.43.0.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNjQuMCIsInVwZGF0ZWRJblZlciI6IjM5LjI2NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-05 11:34:13 +02:00
Charlie Marsh
07f346f723 Accept musllinux_1_0 as a valid platform tag (#13289)
## Summary

This seems to match `packaging`:


d0d5ad8687/src/packaging/_musllinux.py (L71C1-L72C62)

Closes https://github.com/astral-sh/uv/issues/13045.
2025-05-05 08:53:41 +02:00
Charlie Marsh
2c567a64b9 Treat already-installed base environment packages as preferences in uv run --with (#13284)
## Summary

If a script has some requirements, and you provide `--with`, we
currently ignore any constraints from those requirements. We might want
to treat them as hard constraints in the future. For now, though, we
just treat them as preferences -- so we _prefer_ those versions, but
don't require them to match and still run the `--with` resolution in
isolation.

Closes https://github.com/astral-sh/uv/issues/13173.
2025-05-04 23:24:57 +00:00
Zanie Blue
ea4284c041 Add --dry-run support to uv self update (#9829)
See commentary at
https://github.com/astral-sh/uv/issues/9828#issuecomment-2537542100
regarding the limitations and future upstream changes needed.

```
❯ cargo build --features self-update
   Compiling uv v0.5.8 (/Users/zb/workspace/uv/crates/uv)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.28s
❯ cp ./target/debug/uv ~/.cargo/bin
❯ uv self update --dry-run
info: Checking for updates...
Nothing to do. You're on the latest version of uv (v0.5.8)
❯ uv self update --dry-run 0.5.7
info: Checking for updates...
Would update uv from v0.5.8 to v0.5.7
❯ vi ~/.config/uv/uv-receipt.json  # Edit the receipt to think its on an older version
❯ uv self update --dry-run
info: Checking for updates...
Would update uv from v0.5.8 to the latest version
```

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2025-05-04 17:54:36 -04:00
konsti
59e7287590 Support more zip compression formats: bzip2, lzma, xz, zstd (#13285)
Wheels are zip files, and as such can internally be compressed with a
number of compression algorithms besides the popular choices, DEFLATE
and stored. I added all algorithms supported by async-zip except
`deflate64`, which wasn't yet a part of our dependency tree. All other
compression algorithms and crates are already supported and dependencies
for their source dist `.tar.<format>` support.

Python 3.13 supports stored, deflate, bzip2 and lzma
(https://docs.python.org/3/library/zipfile.html#zipfile.ZIP_STORED), PEP
784 adds zstandard support in 3.14.

Fixes #13192
2025-05-04 20:08:19 +02:00
Charlie Marsh
c12ce84fbd Respect locked script preferences in uv run --with (#13283)
## Summary

Part of https://github.com/astral-sh/uv/issues/13173, but doesn't close
the issue. This just respects preferences if your script uses a
lockfile, since we already support that for locked _projects_.
2025-05-04 12:56:33 -04:00
konsti
e2d105d045 Retry streaming downloads on broken pipe errors (#13281)
Educated guess at #12359

See
adab70fd9f/src/proto/streams/state.rs (L309-L310)
for the error source.
2025-05-04 08:56:15 -04:00
konsti
96cfca1c8f Move static feature out of perf features (#13265)
#5577 fixed a bug on macos due to dynamically linking lzma/xz through
static linking. In #7686, this feature was moved to the performance
category.

This PR moves the `xz2/static` back to the general default features,
and, inspired by https://github.com/Homebrew/homebrew-core/pull/222211,
it structures and documents the feature flags cleaner.

We need to take care that this feature does not accidentally disable
features we want.

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-05-02 15:56:40 +00:00
konsti
b442aae80e Only rebuild download JSON on change (#13261)
By default, Cargo runs the build script if any file in the package
changes
(https://doc.rust-lang.org/cargo/reference/build-scripts.html#change-detection).
In our case, we only need to rerun it if `download-metadata.json`
changed.
2025-05-02 07:49:34 -05:00
konsti
360a335e7f Check nested IO errors for retries (#13260)
## Summary

The only thing that changed for #12175 relevant to the existing
downloads is the order of nesting, so we're checking all nested IO
errors instead of only the first one.

See #13238

## Test Plan

This is an educated guess based on what happens if I turn off the
network during a download.

```
Downloading cpython-3.13.3-linux-x86_64-gnu (download) (20.3MiB)
TRACE Considering retry of error: ExtractError("cpython-3.13.3-20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz", Io(Custom { kind: Other, error: TarError { desc: "failed to unpack `/home/konsti/.local/share/uv/python/.temp/.tmpe3AIvt/python/lib/libpython3.13.so.1.0`", io: Custom { kind: Other, error: TarError { desc: "failed to unpack `python/lib/libpython3.13.so.1.0` into `/home/konsti/.local/share/uv/python/.temp/.tmpe3AIvt/python/lib/libpython3.13.so.1.0`", io: Custom { kind: Other, error: reqwest::Error { kind: Decode, source: reqwest::Error { kind: Body, source: TimedOut } } } } } } }))
TRACE Cannot retry IO error: not one of `ConnectionReset` or `UnexpectedEof`
TRACE Cannot retry IO error: not one of `ConnectionReset` or `UnexpectedEof`
TRACE Cannot retry error: not an IO error
error: Failed to install cpython-3.13.3-linux-x86_64-gnu
  Caused by: Failed to extract archive: cpython-3.13.3-20250409-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz
  Caused by: failed to unpack `/home/konsti/.local/share/uv/python/.temp/.tmpe3AIvt/python/lib/libpython3.13.so.1.0`
  Caused by: failed to unpack `python/lib/libpython3.13.so.1.0` into `/home/konsti/.local/share/uv/python/.temp/.tmpe3AIvt/python/lib/libpython3.13.so.1.0`
  Caused by: error decoding response body
  Caused by: request or response body error
  Caused by: operation timed out
```
2025-05-02 14:41:09 +02:00
Christopher Tee
801fd0e5b8 Deduplicate fetched index URLs (#13205)
<!--
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? -->
Fixes #11970.

## Test Plan

<!-- How was it tested? -->
Ran `cargo nextest`
2025-05-02 10:29:07 +02:00
konsti
4c63c9c6a2 Update add_warn_index_url snapshot (#13259)
There is a new idna version of testpypi. While we don't select that
version due to the exclude-newer cutoff, the version is still available
to pubgrub as an incompatible choice, changing the error message on
conflicts.
2025-05-02 08:13:37 +00:00
Zanie Blue
21b9f62dbf Update "Viewing the version" docs (#13241)
Updates this section for

- #12349 
- #13108
2025-05-01 08:55:52 -04:00
Charlie Marsh
a261995449 Use base client pattern in more sites (#13227)
## Summary

For consistency. No functional changes.
2025-04-30 20:00:59 -04:00
Meitar Reihan
0593b967ba Add python-downloads-json-url option for uv.toml to configure custom Python installations via JSON URL (#12974)
## Summary

Part of #12838. Allow users to configure `python-downloads-json-url` in
`uv.toml` and not just from env.

I followed similar PR #8695, so same as there it's also available in the
CLI (I think maybe it's better not to be configurable from the CLI, but
since the mirror parameters are, I think it's better to do the same)


## Test Plan

<!-- How was it tested? -->
2025-04-30 15:52:11 -04:00
Meitar Reihan
5ee54b4fa3 minify and filter embed managed pythons json on compile time (#12967)
## Summary

In #10939 I added the generated
`crates/uv-python/src/download-metadata-minified.json` file which is a
minified version of `crates/uv-python/download-metadata.json`.

The main reason for this PR is to avoid bloating the git objects as this
is a single-line file.

As a bonus, I also filtered the embed json to include only the versions
for the compiled target. Which should improve the binary size and
performance by a bit.

## Test Plan

<!-- How was it tested? -->
2025-04-30 15:51:03 -04:00