Commit Graph

6813 Commits

Author SHA1 Message Date
Charlie Marsh 9d1a14e1f9
Bump version to v0.7.5 (#13500) 2025-05-16 20:37:17 -04:00
konsti 5d37c7ecc5
Apply first set of Rustfmt edition 2024 changes (#13478)
Rustfmt introduces a lot of formatting changes in the 2024 edition. To
not break everything all at once, we split out the set of formatting
changes compatible with both the 2021 and 2024 edition by first
formatting with the 2024 style, and then again with the currently used
2021 style.

Notable changes are the formatting of derive macro attributes and lines
with overly long strings and adding trailing semicolons after statements
consistently.
2025-05-16 20:19:02 -04:00
konsti b31d08c683
Bump simple cache bucket to v16 (#13498)
We broke the rkyv deserialization in
e70cf25ea7 (diff-348b24d7a84672ab2873833988156191995ff467619a77f548adbd9808549999L30-R41)
by placing `.tar.bz2` in the position of `.tar.gz`. We need to
invalidate the cache bucket.

Fixes #13492
2025-05-16 20:17:23 -04:00
konsti 316439337f
Don't error when the script is too short for the buffer (#13488)
I hit this error case with a broken wheel.
2025-05-16 20:14:13 -04:00
konsti 77268ee152
Build backend: Case sensitive module discovery (#13468)
We may run on case-sensitive file systems (Linux, generally) or on
case-insensitive file systems (Windows, generally), while modules in
Python may be lower or upper case. For robustness over filesystem
casing, we require an explicit module name for modules with upper cases.

Fixes #13419
2025-05-16 14:25:35 +02:00
konsti 23261b7e2e
Apply some Edition 2024 fixes (#13479)
Some `ref`-removal and `use<>` fixes for the Rust Edition 2024
migration, which are also compatible with Rust Edition 2021.
2025-05-16 10:34:22 +02:00
Andrew Pollack 0baa376627
cli: adjust grammar in “script not supported” error (#13483)
Love this tooling! Small adjustment to help on error messaging 🙏 

<!--
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 previous message was missing the word **“like,”** which made it read
a tad awkwardly.
This PR inserts the missing word so the error reads naturally:
**After:**
```
$ uvx ch1.py 
error: It looks like you tried to run a Python script at `ch1.py`, which is not supported by `uvx`

hint: Use `uv run ch1.py` instead
```

**Before:**
```
$ uvx ch1.py 
error: It looks you tried to run a Python script at `ch1.py`, which is not supported by `uvx`

hint: Use `uv run ch1.py` instead
```

## Test Plan

<!-- How was it tested? -->
- `cargo run -- uvx examples/ch1.py` shows the updated message (see
“After” above).
- `cargo test` passes.
2025-05-16 10:23:30 +02:00
konsti 4aa72089a1
Mask `gen` as `r#gen` for the 2024 edition (#13477)
`gen` is a reserved keyword in Rust 2024. This is a requirement to run
`cargo fmt` on the Rust 2024 edition.
2025-05-15 19:21:12 +00:00
Zanie Blue 6fbcd09b5a
Bump version to 0.7.4 (#13473) 2025-05-15 11:08:50 -05:00
Zanie Blue e92c17881c
Log skip reasons during Python installation key interpreter match checks (#13472)
Investigating https://github.com/astral-sh/uv/issues/13471
2025-05-15 10:28:01 -05:00
konsti 18a1f0d9db
Build backend: Normalize glob paths (#13465)
Unlike OS APIs, glob inclusion checks don't work when there are relative
path elements such as `./`. We normalize the path before using it for
the glob.

Fixes #13407
2025-05-15 17:19:02 +02:00
Ahmed Ilyas 7a83f51de2
Reinstall local packages in `uv add` (#13462)
## Summary

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

## Test Plan

`cargo test`
2025-05-15 14:08:54 +00:00
konsti dfa1b958ac
Issue template: Please include the complete error message (#13451)
We're getting a number of user reports where we could have helped if we
were just seeing the full error message. If we're not getting an MRE, we
should at least urge users to copy the _full_ error they see on screen.


![image](https://github.com/user-attachments/assets/45c72990-e068-4706-abb6-591962a865c6)
2025-05-15 07:36:08 -05:00
konsti 7261ede004
Refactor build backend testing (#13464)
This is useful for adding more tests for build backend configuration.
2025-05-15 12:00:02 +00:00
John Mumm 4ea44bec0a
Ensure cached realm credentials are applied if no password is found for index URL (#13463)
We were not correctly falling back to cached realm credentials when an
index URL was provided with only a username. This came up in a [later
comment](https://github.com/astral-sh/uv/issues/13443#issuecomment-2881115301)
on #13443 where credentials in a pip extra index in `uv.toml` were being
ignored when the same URL (but with only a username) was used at the
command line for `--extra-index-url`. I've added a test to catch this
case.

Closes #13443
2025-05-15 13:36:18 +02:00
konsti 12860a9041
Remove extra newline (#13461)
This left an extra newline the hint, which isn't captured in the
snapshot.
2025-05-15 09:30:21 +00:00
Eduardo Rittner Coelho 2d4d93a350
ProgressReporter: align progress bars by largest name length (#13266)
## Summary

Related to https://github.com/astral-sh/uv/issues/12492

This change makes all progress bars vertically aligned. This is still a
WIP and so is not complete, in the current design I store `max_len` in
`BarState` and update it on every `on_request_start`, however this is
problematic since order matters, and if the largest name is not sent
first, the alignment is not complete. To mitigate this we'd probably
have to update all previous bars by "iterating" through the `bars` field
in `BarState` and update all request bars.

Below is an image of what happens when the largest name
(`nvidia-cusparselt-cu12`) is not the first (in this case, it was the
second to last).


![2025-05-02T10:56:54-03:00](https://github.com/user-attachments/assets/ac6f2205-5f30-4fe3-a2c3-f980e36b7cf7)


## Test Plan

There are currently no tests, and I'm not sure how to design them since
from what I gather the `uv_snapshot` facilities record the final output,
not the intermediate stages.

---------

Co-authored-by: konstin <konstin@mailbox.org>
2025-05-15 09:32:36 +02:00
Charlie Marsh b326bb92a0
Retain trailing comments after PEP 723 metadata block (#13460)
## Summary

Closes https://github.com/astral-sh/uv/issues/13447.
2025-05-14 21:54:20 +00:00
samypr100 395039afd1
feat(docker): add 3.14 beta images to uv docker (#13390)
## Summary

Now that Python 3.14 first beta is out, I think it's worth adding
support for the official upstream RC images.

Once 3.14 is released, we can remove the `-rc-` infix from the images we
pull from.

## Test Plan

Upstream images verified to be functional with uv.
2025-05-13 20:27:09 +02:00
konsti 73cf2b8d59
uv export docs: "export" instead of "install" (#13430)
Change the two missing places in the `uv export` docs to say "export"
instead of "install".
2025-05-13 15:53:10 +02:00
renovate[bot] a0b27c7cff
Update fedora Docker tag to v43 (#13165)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| fedora | container | major | `42` -> `43` |

---

### 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:eyJjcmVhdGVkSW5WZXIiOiIzOS4yNTcuMyIsInVwZGF0ZWRJblZlciI6IjM5LjI1Ny4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbnRlcm5hbCJdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-13 14:47:49 +02:00
konsti 22b1ed5c5d
Be more precise in unpinned packages warning (#13426)
Fixes #13424
2025-05-13 07:25:05 +00:00
Charlie Marsh ca725d08f2
Remove unused source tree variant (#13422)
## Summary

Perhaps this disappeared when we added support for unnamed requirements?
2025-05-13 07:07:10 +00:00
Charlie Marsh 3b8139526a
Add comma after "i.e." in Conda environment error (#13423) 2025-05-13 03:51:07 +00:00
Charlie Marsh a179972e2d
Reject `pylock.toml` in `uv add -r` (#13421)
## Summary

This silently fails right now.

Closes #13420.
2025-05-13 03:50:01 +00:00
konsti 73d22ac21b
Fix double self-dependency (#13366)
The fix itself and its documentation live in pubgrub:
https://github.com/astral-sh/pubgrub/pull/44

Fixes #13344

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2025-05-13 03:03:44 +00:00
konsti 3b125dbe71
Avoid panics for cannot-be-a-base URLs (#13406)
Following #13376, avoid `.unwrap()` on `Url::path_segments()`.

I also added some unwrap-safety comments.
2025-05-12 22:29:26 -04:00
John Mumm 6df588bb00
Redact credentials when displaying URLs (#13333)
This PR redacts credentials in displayed URLs. 

It mostly relies on a `redacted_url` function (and where possible
`IndexUrl::redacted`). This is a quick way to prevent leaked credentials
but it's prone to programmer error when adding new trace statements. A
better follow-on would use a `RedactedUrl` type with the appropriate
`Display` implementation. This would allow us to still extract
credentials from the URL while displaying it securely. On the plus side,
the sites where the `redacted_url` function are used serve as easy
signposts for where to use the new type in a future PR.

Closes #1714.
2025-05-12 18:58:25 +02:00
konsti 1afadda819
Add more context to errors in high level crates. (#13351)
Add error context in some places where it was previously missing, and a
few style improvements.
2025-05-12 11:04:41 +00:00
renovate[bot] c65b895e2e
Update Rust crate ctrlc to v3.4.7 (#13395)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [ctrlc](https://redirect.github.com/Detegr/rust-ctrlc) |
workspace.dependencies | patch | `3.4.6` -> `3.4.7` |

---

### Release Notes

<details>
<summary>Detegr/rust-ctrlc (ctrlc)</summary>

###
[`v3.4.7`](https://redirect.github.com/Detegr/rust-ctrlc/releases/tag/3.4.7)

[Compare
Source](https://redirect.github.com/Detegr/rust-ctrlc/compare/3.4.6...3.4.7)

#### What's Changed

- Update nix by
[@&#8203;Berrysoft](https://redirect.github.com/Berrysoft) in
[https://github.com/Detegr/rust-ctrlc/pull/131](https://redirect.github.com/Detegr/rust-ctrlc/pull/131)

#### New Contributors

- [@&#8203;Berrysoft](https://redirect.github.com/Berrysoft) made their
first contribution in
[https://github.com/Detegr/rust-ctrlc/pull/131](https://redirect.github.com/Detegr/rust-ctrlc/pull/131)

**Full Changelog**:
https://github.com/Detegr/rust-ctrlc/compare/3.4.6...3.4.7

</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 12:14:49 +02:00
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) 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