Commit Graph

6968 Commits

Author SHA1 Message Date
Geoffrey Thomas 25dd584a27 Add a version backwards incompatibility scheme for the JSON Python download list
If the JSON does not deserialize, check to see if any key is named
"version" and print a different error message hinting at upgrading uv.

The intention is that we will add this field on backwards-incompatible
changes (and set it to an integer or string or something else that does
not deserialize into a JsonPythonDownload).
2025-07-18 23:30:39 +00:00
Geoffrey Thomas ecebc914a6 review comment 2025-07-18 23:30:39 +00:00
Geoffrey Thomas 66937e35fa Rename ManagedPythonDownloadList methods for readability 2025-07-18 23:30:39 +00:00
Geoffrey Thomas e20103f5ea Support http/https URLs in uv python --python-downloads-json-url 2025-07-18 23:30:07 +00:00
Geoffrey Thomas 01998f492b comments from Konsti 2025-07-18 23:30:07 +00:00
Geoffrey Thomas dbeca9859e update docs 2025-07-18 23:30:07 +00:00
Geoffrey Thomas 5f42c7cc16 uv-python: Refactor ManagedPythonDownload state management
In preparation for supporting download sources over HTTP, change the
implicit creation of the download list to an explicit async constructor.
Also pass it a BaseClient which will be used in the next commit.
2025-07-18 23:30:04 +00:00
Geoffrey Thomas a8bb7be52b
windows_exception: Improve async signal safety (#14619)
It's not as bad as I feared to bypass libsys's stderr. (There's still a
lock in libsys's backtrace, which might also not be too bad to bypass.)
2025-07-17 01:39:21 +00:00
Charlie Marsh 7cdc1f62ee
Suggest `uv cache clean` prior to `--reinstall` (#14659)
## Summary

Closes https://github.com/astral-sh/uv/issues/14479.
2025-07-16 12:02:29 -04:00
konsti 052a74c451
Fix doctests (#14658)
`cargo nextest run` doesn't run them, but `cargo insta test
--test-runner nextest` does, which surfaced those failures.
2025-07-16 16:56:32 +02:00
konsti 7fece9b90a
Remove marker from `Edge` (#14649)
It seems that this field is unused.
2025-07-16 09:21:22 -05:00
Zanie Blue 8b29ec0bfd
Use `astral.sh` instead of `example.com` in `lock_unique_named_index` (#14657)
This test flakes a lot, maybe using a different domain will help

Closes https://github.com/astral-sh/uv/issues/14542
2025-07-16 09:20:25 -05:00
Zanie Blue 1f49fbd53c
Display `sys.executable` names in check system jobs (#14656)
Cherry-picked from https://github.com/astral-sh/uv/pull/14652

This is useful for debugging
2025-07-16 09:17:01 -05:00
github-actions[bot] eaff96e5dc
Sync latest Python releases (#14643)
Automated update for Python releases.

Co-authored-by: zanieb <2586601+zanieb@users.noreply.github.com>
2025-07-16 09:06:06 -05:00
Zanie Blue 1b2f212e8b
Use `[PYTHON]` placeholder in filtered Python names (#14640)
We should never replace with a non-placeholder, it is very confusing
when trying to understand test behavior
2025-07-16 09:05:10 -05:00
Zanie Blue 0cf5ecf841
Request arm64 Python in aarch64-windows smoke test (#14655)
The Python interpreter selected by `py` recently changed to x64 instead
of arm64.

Closes https://github.com/astral-sh/uv/pull/14652
See https://github.com/astral-sh/uv/pull/14652
2025-07-16 09:04:58 -05:00
Nathan Cain e547527587
Add UV_LIBC to allow libc selection in multi-libc environment (#14646)
Closes #14262 

## Description

Adds `UV_LIBC` environment variable and implements check within
`Libc::from_env` as recommended here:
https://github.com/astral-sh/uv/issues/14262#issuecomment-3014600313

Gave this a few passes to make sure I follow dev practices within uv as
best I am able. Feel free to call out anything that could be improved.

## Test Plan

Planned to simply run existing test suite. Open to adding more tests
once implementation is validated due to my limited Rust experience.
2025-07-16 08:52:17 -05:00
Charlie Marsh 03de6c36e3
Warn on invalid `uv.toml` when provided via direct path (#14653)
## Summary

We validate the `uv.toml` when it's discovered automatically, but not
when provided via `--config-file`. The same limitations exist, though --
I think the lack of enforcement is just an oversight.

Closes https://github.com/astral-sh/uv/issues/14650.
2025-07-16 13:48:16 +00:00
Gilles Peiffer 861f7a1c42
docs: add missing backtick (#14654)
Subject is message :)
2025-07-16 13:44:29 +00:00
Zanie Blue 8d6d0678a7
Move "Conflicting dependencies" to the "Resolution" page (#14633) 2025-07-15 16:47:43 -05:00
Zanie Blue 863e73a841
Skip Windows Python interpreters that return a broken MSIX package code (#14636)
Currently we treat all spawn failures as fatal, because they indicate a
broken interpreter. In this case, I think we should just skip these
broken interpreters — though I don't know the root cause of why it's
broken yet.

Closes https://github.com/astral-sh/uv/issues/14637
See
https://discord.com/channels/1039017663004942429/1039017663512449056/1394758502647333025
2025-07-15 16:47:35 -05:00
Zanie Blue ab2bd0179b
Mention the `revision` in the lockfile versioning doc (#14634) 2025-07-15 14:35:54 -05:00
Zanie Blue d525720266
Add `uv python update-shell` (#14627)
Part of #14296 

This is the same as `uv tool update-shell` but handles the case where
the Python bin directory is configured to a different path.

```
❯ UV_PYTHON_BIN_DIR=/tmp/foo cargo run -q -- python install --preview 3.13.3
Installed Python 3.13.3 in 1.75s
 + cpython-3.13.3-macos-aarch64-none
warning: `/tmp/foo` is not on your PATH. To use installed Python executables, run `export PATH="/tmp/foo:$PATH"` or `uv python update-shell`.
❯ UV_PYTHON_BIN_DIR=/tmp/foo cargo run -q -- python update-shell
Created configuration file: /Users/zb/.zshenv
Restart your shell to apply changes
❯ cat /Users/zb/.zshenv
# uv
export PATH="/tmp/foo:$PATH"
❯ UV_TOOL_BIN_DIR=/tmp/bar cargo run -q -- tool update-shell
Updated configuration file: /Users/zb/.zshenv
Restart your shell to apply changes
❯ cat /Users/zb/.zshenv
# uv
export PATH="/tmp/foo:$PATH"

# uv
export PATH="/tmp/bar:$PATH"
```
2025-07-15 13:47:02 -05:00
Zanie Blue c226d66f35
Rename "Dependency specifiers" section to exclude PEP 508 reference (#14631) 2025-07-15 12:55:57 -05:00
Zanie Blue d2c81e503f
Make preview Python registration on Windows non-fatal (#14614)
Same as #14612 for registration with the Windows Registry.
2025-07-15 17:29:11 +00:00
Zanie Blue bb1e9a247c
Update preview installation of Python executables to be non-fatal (#14612)
Previously, if installation of executables into the bin directory failed
we'd with a non-zero code. However, if we make this behavior the default
we don't want it to be fatal. There's a `--bin` opt-in to _require_
successful executable installation and a `--no-bin` opt-out to silence
the warning / opt-out of installation entirely.

Part of https://github.com/astral-sh/uv/issues/14296 — we need this
before we can stabilize the behavior.

In #14614 we do the same for writing entries to the Windows registry.
2025-07-15 17:12:36 +00:00
Alex Prengère cd0d5d4748
Fix --all-arches when paired with --only-downloads (#14629)
## Summary

On current main, and on the latest released version 0.7.21, I have:

```
$ uv python list --only-downloads --all-arches
cpython-3.14.0b4-linux-x86_64-gnu                 <download available>
cpython-3.14.0b4+freethreaded-linux-x86_64-gnu    <download available>
cpython-3.13.5-linux-x86_64-gnu                   <download available>
cpython-3.13.5+freethreaded-linux-x86_64-gnu      <download available>
cpython-3.12.11-linux-x86_64-gnu                  <download available>
cpython-3.11.13-linux-x86_64-gnu                  <download available>
cpython-3.10.18-linux-x86_64-gnu                  <download available>
cpython-3.9.23-linux-x86_64-gnu                   <download available>
cpython-3.8.20-linux-x86_64-gnu                   <download available>
pypy-3.11.13-linux-x86_64-gnu                     <download available>
pypy-3.10.16-linux-x86_64-gnu                     <download available>
pypy-3.9.19-linux-x86_64-gnu                      <download available>
pypy-3.8.16-linux-x86_64-gnu                      <download available>
graalpy-3.11.0-linux-x86_64-gnu                   <download available>
graalpy-3.10.0-linux-x86_64-gnu                   <download available>
graalpy-3.8.5-linux-x86_64-gnu                    <download available>
```

As you can see, `--all-arches` is not respected here.

## Test Plan

With the patch:

```
$ cargo run python list --only-downloads --all-arches
cpython-3.14.0b4-linux-x86_64-gnu                      <download available>
cpython-3.14.0b4+freethreaded-linux-x86_64-gnu         <download available>
cpython-3.14.0b4-linux-x86_64_v2-gnu                   <download available>
cpython-3.14.0b4+freethreaded-linux-x86_64_v2-gnu      <download available>
cpython-3.14.0b4-linux-x86_64_v3-gnu                   <download available>
cpython-3.14.0b4+freethreaded-linux-x86_64_v3-gnu      <download available>
cpython-3.14.0b4-linux-x86_64_v4-gnu                   <download available>
cpython-3.14.0b4+freethreaded-linux-x86_64_v4-gnu      <download available>
cpython-3.14.0b4-linux-aarch64-gnu                     <download available>
cpython-3.14.0b4+freethreaded-linux-aarch64-gnu        <download available>
cpython-3.14.0b4-linux-powerpc64le-gnu                 <download available>
cpython-3.14.0b4+freethreaded-linux-powerpc64le-gnu    <download available>
cpython-3.14.0b4-linux-riscv64gc-gnu                   <download available>
cpython-3.14.0b4+freethreaded-linux-riscv64gc-gnu      <download available>
cpython-3.14.0b4-linux-s390x-gnu                       <download available>
cpython-3.14.0b4+freethreaded-linux-s390x-gnu          <download available>
cpython-3.13.5-linux-x86_64-gnu                        <download available>
cpython-3.13.5+freethreaded-linux-x86_64-gnu           <download available>
cpython-3.13.5-linux-x86_64_v2-gnu                     <download available>
cpython-3.13.5+freethreaded-linux-x86_64_v2-gnu        <download available>
cpython-3.13.5-linux-x86_64_v3-gnu                     <download available>
cpython-3.13.5+freethreaded-linux-x86_64_v3-gnu        <download available>
cpython-3.13.5-linux-x86_64_v4-gnu                     <download available>
cpython-3.13.5+freethreaded-linux-x86_64_v4-gnu        <download available>
cpython-3.13.5-linux-aarch64-gnu                       <download available>
cpython-3.13.5+freethreaded-linux-aarch64-gnu          <download available>
cpython-3.13.5-linux-powerpc64le-gnu                   <download available>
cpython-3.13.5+freethreaded-linux-powerpc64le-gnu      <download available>
cpython-3.13.5-linux-riscv64gc-gnu                     <download available>
cpython-3.13.5+freethreaded-linux-riscv64gc-gnu        <download available>
cpython-3.13.5-linux-s390x-gnu                         <download available>
cpython-3.13.5+freethreaded-linux-s390x-gnu            <download available>
cpython-3.12.11-linux-x86_64-gnu                       <download available>
cpython-3.12.11-linux-x86_64_v2-gnu                    <download available>
cpython-3.12.11-linux-x86_64_v3-gnu                    <download available>
cpython-3.12.11-linux-x86_64_v4-gnu                    <download available>
cpython-3.12.11-linux-aarch64-gnu                      <download available>
cpython-3.12.11-linux-powerpc64le-gnu                  <download available>
cpython-3.12.11-linux-riscv64gc-gnu                    <download available>
cpython-3.12.11-linux-s390x-gnu                        <download available>
cpython-3.11.13-linux-x86_64-gnu                       <download available>
cpython-3.11.13-linux-x86_64_v2-gnu                    <download available>
cpython-3.11.13-linux-x86_64_v3-gnu                    <download available>
cpython-3.11.13-linux-x86_64_v4-gnu                    <download available>
cpython-3.11.13-linux-aarch64-gnu                      <download available>
cpython-3.11.13-linux-powerpc64le-gnu                  <download available>
cpython-3.11.13-linux-riscv64gc-gnu                    <download available>
cpython-3.11.13-linux-s390x-gnu                        <download available>
cpython-3.11.5-linux-x86-gnu                           <download available>
cpython-3.10.18-linux-x86_64-gnu                       <download available>
cpython-3.10.18-linux-x86_64_v2-gnu                    <download available>
cpython-3.10.18-linux-x86_64_v3-gnu                    <download available>
cpython-3.10.18-linux-x86_64_v4-gnu                    <download available>
cpython-3.10.18-linux-aarch64-gnu                      <download available>
cpython-3.10.18-linux-powerpc64le-gnu                  <download available>
cpython-3.10.18-linux-riscv64gc-gnu                    <download available>
cpython-3.10.18-linux-s390x-gnu                        <download available>
cpython-3.10.13-linux-x86-gnu                          <download available>
cpython-3.9.23-linux-x86_64-gnu                        <download available>
cpython-3.9.23-linux-x86_64_v2-gnu                     <download available>
cpython-3.9.23-linux-x86_64_v3-gnu                     <download available>
cpython-3.9.23-linux-x86_64_v4-gnu                     <download available>
cpython-3.9.23-linux-aarch64-gnu                       <download available>
cpython-3.9.23-linux-powerpc64le-gnu                   <download available>
cpython-3.9.23-linux-riscv64gc-gnu                     <download available>
cpython-3.9.23-linux-s390x-gnu                         <download available>
cpython-3.9.18-linux-x86-gnu                           <download available>
cpython-3.8.20-linux-x86_64-gnu                        <download available>
cpython-3.8.20-linux-aarch64-gnu                       <download available>
cpython-3.8.17-linux-x86-gnu                           <download available>
pypy-3.11.13-linux-x86_64-gnu                          <download available>
pypy-3.11.13-linux-aarch64-gnu                         <download available>
pypy-3.11.13-linux-x86-gnu                             <download available>
pypy-3.10.16-linux-x86_64-gnu                          <download available>
pypy-3.10.16-linux-aarch64-gnu                         <download available>
pypy-3.10.16-linux-x86-gnu                             <download available>
pypy-3.10.14-linux-s390x-gnu                           <download available>
pypy-3.9.19-linux-x86_64-gnu                           <download available>
pypy-3.9.19-linux-aarch64-gnu                          <download available>
pypy-3.9.19-linux-x86-gnu                              <download available>
pypy-3.9.19-linux-s390x-gnu                            <download available>
pypy-3.8.16-linux-x86_64-gnu                           <download available>
pypy-3.8.16-linux-aarch64-gnu                          <download available>
pypy-3.8.16-linux-x86-gnu                              <download available>
pypy-3.8.16-linux-s390x-gnu                            <download available>
graalpy-3.11.0-linux-x86_64-gnu                        <download available>
graalpy-3.11.0-linux-aarch64-gnu                       <download available>
graalpy-3.10.0-linux-x86_64-gnu                        <download available>
graalpy-3.10.0-linux-aarch64-gnu                       <download available>
graalpy-3.8.5-linux-x86_64-gnu                         <download available>
graalpy-3.8.5-linux-aarch64-gnu                        <download available>
```
2025-07-15 12:03:01 -05:00
Charlie Marsh 405ef66cef
Allow users to override index `cache-control` headers (#14620)
## Summary

You can now override the cache control headers for the Simple API, file
downloads, or both:

```toml
[[tool.uv.index]]
name = "example"
url = "https://example.com/simple"
cache-control = { api = "max-age=600", files = "max-age=365000000, immutable" }
```

Closes https://github.com/astral-sh/uv/issues/10444.
2025-07-15 10:00:04 -04:00
Geoffrey Thomas 9871bbdc79
Fix 0.7.21 changelog (#14615) 2025-07-14 15:29:02 -05:00
InSync b046e7f3be
Add missing comma in `projects/dependencies.md` (#14613)
## Summary

Diff:

```diff
 [dependency-groups]
 dev = [
-  {include-group = "lint"}
+  {include-group = "lint"},
   {include-group = "test"}
 ]
```

## Test Plan

None.
2025-07-14 14:06:05 -05:00
Geoffrey Thomas 77c771c7f3
Bump version to 0.7.21 (#14611) 2025-07-14 14:01:28 -04:00
Ivan Smirnov 4d82e88863
Follow links when cache-key is a glob (#13438)
## Summary

There's some inconsistent behaviour in handling symlinks when
`cache-key` is a glob or a file path. This PR attempts to address that.

- When cache-key is a path,
[`Path::metadata()`](https://doc.rust-lang.org/std/path/struct.Path.html#method.metadata)
is used to check if it's a file or not. According to the docs:
> This function will traverse symbolic links to query information about
the destination file.

So, if the target file is a symlink, it will be resolved and the
metadata will be queried for the underlying file.

- When cache-key is a glob, `globwalk` is used, specifically allowing
for symlinks:

  ```rust
  .file_type(globwalk::FileType::FILE | globwalk::FileType::SYMLINK)
  ```

- However, without enabling link following, `DirEntry::metadata()` will
return an equivalent of `Path::symlink_metadata()` (and not
`Path::metadata()`), which will have a file type that looks like

   ```rust
   FileType {
       is_file: false,
       is_dir: false,
       is_symlink: true,
      ..
    }
    ```

- Then, there's a check for `metadata.is_file()` which fails and
complains that the target entry "is a directory when file was expected".

- TLDR: glob cache-keys don't work with symlinks.

## Solutions

Option 1 (current PR): follow symlinks.

Option 2 (also doable): don't follow symlinks, but resolve the resulting
target entry manually in case its file type is a symlink. However, this
would be a little weird and unobvious in that we resolve files but not
directories for some reason. Also, symlinking directories is pretty
useful if you want to symlink directories of local dependencies that are
not under the project's path.

## Test Plan

This has been tested manually:

```rust
fn main() {
    for follow_links in [false, true] {
        let walker = globwalk::GlobWalkerBuilder::from_patterns(".", &["a/*"])
            .file_type(globwalk::FileType::FILE | globwalk::FileType::SYMLINK)
            .follow_links(follow_links)
            .build()
            .unwrap();
        let entry = walker.into_iter().next().unwrap().unwrap();
        dbg!(&entry);
        dbg!(entry.file_type());
        dbg!(entry.path_is_symlink());
        dbg!(entry.path());
        let meta = entry.metadata().unwrap();
        dbg!(meta.is_file());
    }

    let path = std::path::PathBuf::from("./a/b");
    dbg!(path.metadata().unwrap().file_type());
    dbg!(path.symlink_metadata().unwrap().file_type());
}
```

Current behaviour (glob cache-key, don't follow links):
```
[src/main.rs:9:9] &entry = DirEntry("./a/b")
[src/main.rs:10:9] entry.file_type() = FileType {
    is_file: false,
    is_dir: false,
    is_symlink: true,
    ..
}
[src/main.rs:11:9] entry.path_is_symlink() = true
[src/main.rs:12:9] entry.path() = "./a/b"
[src/main.rs:14:9] meta.is_file() = false
```

Glob cache-key, follow links:
```
[src/main.rs:9:9] &entry = DirEntry("./a/b")
[src/main.rs:10:9] entry.file_type() = FileType {
    is_file: true,
    is_dir: false,
    is_symlink: false,
    ..
}
[src/main.rs:11:9] entry.path_is_symlink() = true
[src/main.rs:12:9] entry.path() = "./a/b"
[src/main.rs:14:9] meta.is_file() = true
```

Using `path.metadata()` for a non-glob cache key:
```
[src/main.rs:18:5] path.metadata().unwrap().file_type() = FileType {
    is_file: true,
    is_dir: false,
    is_symlink: false,
    ..
}
[src/main.rs:19:5] path.symlink_metadata().unwrap().file_type() = FileType {
    is_file: false,
    is_dir: false,
    is_symlink: true,
    ..
}
```
2025-07-14 11:35:34 -04:00
Aria Desires 34fbc06ad6
Add experimental `uv sync --output-format json` (#13689)
This is a continuation of the work in 

* #12405 

I have:
* moved to an architecture where the human output is derived from the
json structs to centralize more of the printing state/logic
* cleaned up some of the names/types
* added tests
* removed the restriction that this output is --dry-run only

I have not yet added package info, which was TBD in their design.

---------

Co-authored-by: x0rw <mahdi.svt5@gmail.com>
Co-authored-by: Zanie Blue <contact@zanie.dev>
Co-authored-by: John Mumm <jtfmumm@gmail.com>
2025-07-14 14:53:39 +00:00
Geoffrey Thomas df44199ceb
Add an exception handler on Windows (#14582)
We've seen a few cases of uv.exe exiting with an exception code as its
exit status and no user-visible output (#14563 in the field, and #13812
in CI). It seems that recent versions of Windows no longer show dialog
boxes on access violations (what UNIX calls segfaults) or similar
errors. Something is probably sent to Windows Error Reporting, and we
can maybe sign up to get the crashes from Microsoft, but the user
experience of seeing uv exit with no output is poor, both for end users
and during development. While it's possible to opt out of this behavior
or set up a debugger, this isn't the default configuration. (See
https://superuser.com/q/1246626 for some pointers.)

In order to get some output on a crash, we need to install our own
default handler for unhandled exceptions (or call all our code inside a
Structured Exception Handling __try/__catch block, which is complicated
on Rust). This is the moral equivalent of a segfault handler on Windows;
the kernel creates a new stack frame and passes arguments to it with
some processor state.

This commit adds a relatively simple exception handler that leans on
Rust's own backtrace implementation and also displays some minimal
information from the exception itself. This should be enough info to
communicate that something went wrong and let us collect enough
information to attempt to debug. There are also a handful of (non-Rust)
open-source libraries for this like Breakpad and Crashpad (both from
Google) and crashrpt.

The approach here, of using SetUnhandledExceptionFilter, seems to be the
standard one taken by other such libraries. Crashpad also seems to try
to use a newer mechanism for an out-of-tree DLL to report the crash:
https://issues.chromium.org/issues/42310037
If we have serious problems with memory corruption, it might be worth
adopting some third-party library that has already implemented this
approach. (In general, the docs of other crash reporting libraries are
worth skimming to understand how these things ought to work.)

Co-authored-by: samypr100 <3933065+samypr100@users.noreply.github.com>
2025-07-14 10:42:35 -04:00
renovate[bot] 852aba4f90
Update Rust crate indicatif to 0.18.0 (#14598)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [indicatif](https://redirect.github.com/console-rs/indicatif) |
workspace.dependencies | minor | `0.17.8` -> `0.18.0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>console-rs/indicatif (indicatif)</summary>

###
[`v0.18.0`](https://redirect.github.com/console-rs/indicatif/releases/tag/0.18.0)

[Compare
Source](https://redirect.github.com/console-rs/indicatif/compare/0.17.12...0.18.0)

Unfortunately
[0.17.12](https://redirect.github.com/console-rs/indicatif/releases/0.17.12)
had to be yanked because the console upgrade was a semver-incompatible
change. Rerelease as 0.18.0 instead.

#### What's Changed

- Bump version to 0.18.0 by
[@&#8203;djc](https://redirect.github.com/djc) in
[https://github.com/console-rs/indicatif/pull/715](https://redirect.github.com/console-rs/indicatif/pull/715)

###
[`v0.17.12`](https://redirect.github.com/console-rs/indicatif/releases/tag/0.17.12)

[Compare
Source](https://redirect.github.com/console-rs/indicatif/compare/0.17.11...0.17.12)

#### What's Changed

- Add ProgressBar::force\_draw by
[@&#8203;jaheba](https://redirect.github.com/jaheba) in
[https://github.com/console-rs/indicatif/pull/689](https://redirect.github.com/console-rs/indicatif/pull/689)
- Use width to truncate `HumanFloatCount` values by
[@&#8203;ReagentX](https://redirect.github.com/ReagentX) in
[https://github.com/console-rs/indicatif/pull/696](https://redirect.github.com/console-rs/indicatif/pull/696)
- `ProgressStyle` enable/disable colors based on draw target by
[@&#8203;tonywu6](https://redirect.github.com/tonywu6) in
[https://github.com/console-rs/indicatif/pull/699](https://redirect.github.com/console-rs/indicatif/pull/699)
- Switch dep number\_prefix to unit\_prefix by
[@&#8203;kimono-koans](https://redirect.github.com/kimono-koans) in
[https://github.com/console-rs/indicatif/pull/709](https://redirect.github.com/console-rs/indicatif/pull/709)
- draw\_target: inline the format arg to silence clippy by
[@&#8203;chris-laplante](https://redirect.github.com/chris-laplante) in
[https://github.com/console-rs/indicatif/pull/711](https://redirect.github.com/console-rs/indicatif/pull/711)
- Upgrade to console 0.16 by
[@&#8203;djc](https://redirect.github.com/djc) in
[https://github.com/console-rs/indicatif/pull/712](https://redirect.github.com/console-rs/indicatif/pull/712)

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 16:09:06 +02:00
Zanie Blue 4890f3ef2b
Do not re-resolve with a new Python version in `uv tool` if it is incompatible with `--python` (#14606)
Closes https://github.com/astral-sh/uv/issues/14604
2025-07-14 14:07:30 +00:00
renovate[bot] 0af025eafb
Update CodSpeedHQ/action action to v3.7.0 (#14597)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [CodSpeedHQ/action](https://redirect.github.com/CodSpeedHQ/action) |
action | minor | `v3.5.0` -> `v3.7.0` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>CodSpeedHQ/action (CodSpeedHQ/action)</summary>

###
[`v3.7.0`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v3.7.0)

[Compare
Source](https://redirect.github.com/CodSpeedHQ/action/compare/v3.6.1...v3.7.0)

#### What's Changed

##### <!-- 0 -->🚀 Features

- Add pre- and post-benchmark scripts by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Add cli args for perf by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;94](https://redirect.github.com/CodSpeedHQ/runner/pull/94)

##### <!-- 1 -->🐛 Bug Fixes

- Forward environment to systemd-run cmd by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Only panic in upload for non-existing integration by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Multi-line commands in valgrind by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Symlink libpython doesn't work for statically linked python by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;89](https://redirect.github.com/CodSpeedHQ/runner/pull/89)
- Run perf with sudo; support systemd-run for non-perf walltime by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Use correct path for unwind info by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)

##### <!-- 7 -->⚙️ Internals

- Add executor tests by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;95](https://redirect.github.com/CodSpeedHQ/runner/pull/95)
- Add log to detect invalid origin url by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Upgrade to edition 2024 by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Add debug logs for proc maps by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;88](https://redirect.github.com/CodSpeedHQ/runner/pull/88)
- Enhance version resolution with 'latest' support and flexible formats
by [@&#8203;art049](https://redirect.github.com/art049) in
[https://github.com/CodSpeedHQ/action/pull/132](https://redirect.github.com/CodSpeedHQ/action/pull/132)

**Full Changelog**:
https://github.com/CodSpeedHQ/action/compare/v3.6.1...v3.7.0
**Full Runner Changelog**:
https://github.com/CodSpeedHQ/runner/blob/main/CHANGELOG.md

###
[`v3.6.1`](https://redirect.github.com/CodSpeedHQ/action/releases/tag/v3.6.1)

[Compare
Source](https://redirect.github.com/CodSpeedHQ/action/compare/v3.5.0...v3.6.1)

##### What's Changed

##### <!-- 0 -->🚀 Features

- Allow setting upload url via env var for convenience by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;85](https://redirect.github.com/CodSpeedHQ/runner/pull/85)
- Send unknown cpu\_brand when it is not recognized by
[@&#8203;adriencaccia](https://redirect.github.com/adriencaccia)
- Allow only running the benchmarks, and only uploading the results by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;81](https://redirect.github.com/CodSpeedHQ/runner/pull/81)
- Install perf on setup by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Add perf integration for python by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Add perf integration for rust by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Add fifo ipc by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Use custom time formatting to be in line with the rest of CodSpeed by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;77](https://redirect.github.com/CodSpeedHQ/runner/pull/77)
- Output information about benches after a local run by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;76](https://redirect.github.com/CodSpeedHQ/runner/pull/76)
- Allow specifying oauth token through CLI by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;75](https://redirect.github.com/CodSpeedHQ/runner/pull/75)
- Add option to output structured json by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;74](https://redirect.github.com/CodSpeedHQ/runner/pull/74)
- Add flags to specify repository from CLI by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Improve error handling for valgrind by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;67](https://redirect.github.com/CodSpeedHQ/runner/pull/67)
- Handle local run failure by
[@&#8203;adriencaccia](https://redirect.github.com/adriencaccia) in
[#&#8203;71](https://redirect.github.com/CodSpeedHQ/runner/pull/71)
- Run benchmark with systemd (for optional cpu isolation) by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;86](https://redirect.github.com/CodSpeedHQ/runner/pull/86)

##### <!-- 1 -->🐛 Bug Fixes

- Persist logs when running with skip\_upload by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in [#&#8203;84](https://redirect.github.com/CodSpeedHQ/runner/pull/84)
- Valgrind crash for unresolved libpython by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;82](https://redirect.github.com/CodSpeedHQ/runner/pull/82)
- Support trailing slash in origin url by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;83](https://redirect.github.com/CodSpeedHQ/runner/pull/83)
- Use bash to ensure correct behavior across systems by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Fix test randomly failing due to other test run in parallel by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
- Check child status code after valgrind by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;72](https://redirect.github.com/CodSpeedHQ/runner/pull/72)
- Only show perf output at debug or trace level by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias) in
[#&#8203;87](https://redirect.github.com/CodSpeedHQ/runner/pull/87)

##### <!-- 7 -->⚙️ Internals

- Dont use regex in perf map harvest by
[@&#8203;not-matthias](https://redirect.github.com/not-matthias)
- Switch to astral-sh/cargo-dist by
[@&#8203;adriencaccia](https://redirect.github.com/adriencaccia) in
[#&#8203;80](https://redirect.github.com/CodSpeedHQ/runner/pull/80)

**Full Changelog**:
https://github.com/CodSpeedHQ/action/compare/v3.5.0...v3.6.1
**Full Runner Changelog**:
https://github.com/CodSpeedHQ/runner/blob/main/CHANGELOG.md

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 08:59:09 -05:00
renovate[bot] 3b050b5545
Update Rust crate tokio to v1.46.1 (#14599) 2025-07-14 09:58:55 -04:00
Zanie Blue 9efd053d27
Add test case for `uv tool` Python re-resolves (#14605)
A test case for https://github.com/astral-sh/uv/pull/10401 and
https://github.com/astral-sh/uv/pull/14606
2025-07-14 08:56:39 -05:00
renovate[bot] d179c496dd
Update Rust crate spdx to v0.10.9 (#14596)
This PR contains the following updates:

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

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>EmbarkStudios/spdx (spdx)</summary>

###
[`v0.10.9`](https://redirect.github.com/EmbarkStudios/spdx/blob/HEAD/CHANGELOG.md#0109---2025-07-12)

[Compare
Source](https://redirect.github.com/EmbarkStudios/spdx/compare/0.10.8...0.10.9)

##### Changed

- [PR#74](https://redirect.github.com/EmbarkStudios/spdx/pull/76) update
SPDX license list to 3.27.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 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:eyJjcmVhdGVkSW5WZXIiOiI0MS4yMy4yIiwidXBkYXRlZEluVmVyIjoiNDEuMjMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 15:49:11 +02:00
renovate[bot] ef7ab76206
Update Rust crate codspeed-criterion-compat to v3.0.3 (#14594)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [codspeed-criterion-compat](https://codspeed.io)
([source](https://redirect.github.com/CodSpeedHQ/codspeed-rust)) |
dependencies | patch | `3.0.2` -> `3.0.3` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>CodSpeedHQ/codspeed-rust (codspeed-criterion-compat)</summary>

###
[`v3.0.3`](https://redirect.github.com/CodSpeedHQ/codspeed-rust/releases/tag/v3.0.3)

[Compare
Source](https://redirect.github.com/CodSpeedHQ/codspeed-rust/compare/v3.0.2...v3.0.3)

#### What's Changed

- tests: cargo-bench should work with the compat layers by
[@&#8203;art049](https://redirect.github.com/art049) in
[https://github.com/CodSpeedHQ/codspeed-rust/pull/110](https://redirect.github.com/CodSpeedHQ/codspeed-rust/pull/110)
- fix: handle rustflags from .cargo/config.toml by
[@&#8203;GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange)
in
[https://github.com/CodSpeedHQ/codspeed-rust/pull/109](https://redirect.github.com/CodSpeedHQ/codspeed-rust/pull/109)

**Full Changelog**:
https://github.com/CodSpeedHQ/codspeed-rust/compare/v3.0.2...v3.0.3

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 15:48:47 +02:00
renovate[bot] 4c40dd341e
Update Rust crate hyper-util to v0.1.15 (#14595)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [hyper-util](https://hyper.rs)
([source](https://redirect.github.com/hyperium/hyper-util)) |
dev-dependencies | patch | `0.1.14` -> `0.1.15` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

<details>
<summary>hyperium/hyper-util (hyper-util)</summary>

###
[`v0.1.15`](https://redirect.github.com/hyperium/hyper-util/blob/HEAD/CHANGELOG.md#0115-2025-07-07)

[Compare
Source](https://redirect.github.com/hyperium/hyper-util/compare/v0.1.14...v0.1.15)

- Add header casing options to `auto::Builder`.
- Fix `proxy::Socksv5` to check for enough bytes before parsing ipv6
responses.
- Fix including `client-proxy` in the `full` feature set.

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 15:45:56 +02:00
renovate[bot] e9509fde84
Update Rust crate clap to v4.5.41 (#14593)
This PR contains the following updates:

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

---

> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.

---

### Release Notes

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

###
[`v4.5.41`](https://redirect.github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4541---2025-07-09)

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

##### Features

- Add `Styles::context` and `Styles::context_value` to customize the
styling of `[default: value]` like notes in the `--help`

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-07-14 15:42:56 +02:00
renovate[bot] a57241c0d7
Update pre-commit hook astral-sh/ruff-pre-commit to v0.12.3 (#14592) 2025-07-13 21:10:28 -04:00
github-actions[bot] 4175e3eb4d
Sync latest Python releases (#14581)
Automated update for Python releases.

Co-authored-by: zanieb <2586601+zanieb@users.noreply.github.com>
2025-07-13 08:20:51 -05:00
Geoffrey Thomas 7ea030a1a8
Bump Python releases to pick up python-build-standalone 20250712 (#14578)
This is primarily a regression fix for missing SQLite extensions
(astral-sh/python-build-standalone#694).
2025-07-12 12:46:40 -04:00
Zanie Blue ee35fe34ab
Increase the number of retries during test runs in CI (#14565) 2025-07-11 13:59:47 -05:00
Zanie Blue 081e2010df
Isolate `install_git_public_rate_limited...` test from `UV_HTTP_RETRIES` (#14567)
Blocking https://github.com/astral-sh/uv/pull/14565

This also makes the test 5x faster, from 5s to 1s.
2025-07-11 17:13:35 +00:00
dmitry-bychkov a9e21f7f6b
Update CONTRIBUTING.md with instructions to format markdown files (#14246)
<!--
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

Current documentation requires contributors to have Node.js/npm
installed locally to format Markdown files. This might be problematic
for users who don't work with JavaScript ecosystem or users who want to
avoid toolchain setup.

This change adds docker-based alternative:

```
docker run --rm -v .:/src/ -w /src/ node:alpine npx prettier --prose-wrap always --write "**/*.md"
```

Which mounts current working directory into /src/ inside of a container
and also sets working directory (-w) to /src/ so prettier loads
.editorconfig.

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

## Test Plan

Both commands should produce the same output

<details>
<summary>Native Prettier</summary>

```console
➜  uv git:(docs/contributing-md-formatting) npx prettier --prose-wrap always --write "**/*.md"
.github/PULL_REQUEST_TEMPLATE.md 28ms (unchanged)
BENCHMARKS.md 30ms (unchanged)
changelogs/0.1.x.md 264ms (unchanged)
changelogs/0.2.x.md 223ms (unchanged)
changelogs/0.3.x.md 29ms (unchanged)
changelogs/0.4.x.md 126ms (unchanged)
changelogs/0.5.x.md 153ms (unchanged)
changelogs/0.6.x.md 77ms (unchanged)
CONTRIBUTING.md 9ms (unchanged)
crates/README.md 4ms (unchanged)
crates/uv-build/README.md 1ms (unchanged)
crates/uv-client/README.md 1ms (unchanged)
crates/uv-globfilter/README.md 3ms (unchanged)
crates/uv-pep440/Readme.md 6ms (unchanged)
crates/uv-pep508/Readme.md 3ms (unchanged)
crates/uv-python/python/packaging/README.md 1ms (unchanged)
crates/uv-trampoline/README.md 14ms (unchanged)
crates/uv-virtualenv/README.md 1ms (unchanged)
docs/concepts/authentication.md 10ms (unchanged)
docs/concepts/build-backend.md 11ms (unchanged)
docs/concepts/cache.md 17ms (unchanged)
docs/concepts/configuration-files.md 9ms (unchanged)
docs/concepts/index.md 2ms (unchanged)
docs/concepts/indexes.md 22ms (unchanged)
docs/concepts/projects/build.md 4ms (unchanged)
docs/concepts/projects/config.md 25ms (unchanged)
docs/concepts/projects/dependencies.md 29ms (unchanged)
docs/concepts/projects/index.md 2ms (unchanged)
docs/concepts/projects/init.md 10ms (unchanged)
docs/concepts/projects/layout.md 10ms (unchanged)
docs/concepts/projects/run.md 4ms (unchanged)
docs/concepts/projects/sync.md 11ms (unchanged)
docs/concepts/projects/workspaces.md 12ms (unchanged)
docs/concepts/python-versions.md 26ms (unchanged)
docs/concepts/resolution.md 40ms (unchanged)
docs/concepts/tools.md 19ms (unchanged)
docs/getting-started/features.md 8ms (unchanged)
docs/getting-started/first-steps.md 2ms (unchanged)
docs/getting-started/help.md 8ms (unchanged)
docs/getting-started/index.md 2ms (unchanged)
docs/getting-started/installation.md 8ms (unchanged)
docs/guides/index.md 2ms (unchanged)
docs/guides/install-python.md 31ms (unchanged)
docs/guides/integration/alternative-indexes.md 21ms (unchanged)
docs/guides/integration/aws-lambda.md 49ms (unchanged)
docs/guides/integration/dependency-bots.md 16ms (unchanged)
docs/guides/integration/docker.md 37ms (unchanged)
docs/guides/integration/fastapi.md 8ms (unchanged)
docs/guides/integration/github.md 36ms (unchanged)
docs/guides/integration/index.md 4ms (unchanged)
docs/guides/integration/jupyter.md 17ms (unchanged)
docs/guides/integration/marimo.md 11ms (unchanged)
docs/guides/integration/pre-commit.md 27ms (unchanged)
docs/guides/integration/pytorch.md 12ms (unchanged)
docs/guides/package.md 5ms (unchanged)
docs/guides/projects.md 12ms (unchanged)
docs/guides/scripts.md 19ms (unchanged)
docs/guides/tools.md 8ms (unchanged)
docs/index.md 7ms (unchanged)
docs/pip/compatibility.md 44ms (unchanged)
docs/pip/compile.md 13ms (unchanged)
docs/pip/dependencies.md 3ms (unchanged)
docs/pip/environments.md 10ms (unchanged)
docs/pip/index.md 2ms (unchanged)
docs/pip/inspection.md 1ms (unchanged)
docs/pip/packages.md 3ms (unchanged)
docs/reference/benchmarks.md 3ms (unchanged)
docs/reference/index.md 3ms (unchanged)
docs/reference/installer.md 2ms (unchanged)
docs/reference/policies/index.md 2ms (unchanged)
docs/reference/policies/license.md 2ms (unchanged)
docs/reference/policies/platforms.md 4ms (unchanged)
docs/reference/policies/versioning.md 2ms (unchanged)
docs/reference/resolver-internals.md 19ms (unchanged)
docs/reference/troubleshooting/build-failures.md 13ms (unchanged)
docs/reference/troubleshooting/index.md 1ms (unchanged)
docs/reference/troubleshooting/reproducible-examples.md 7ms (unchanged)
PIP_COMPATIBILITY.md 1ms (unchanged)
README.md 10ms (unchanged)
scripts/benchmark/README.md 1ms (unchanged)
scripts/packages/built-by-uv/README.md 1ms (unchanged)
scripts/packages/dependent_locals/first_local/README.md 0ms (unchanged)
scripts/packages/dependent_locals/second_local/README.md 0ms (unchanged)
scripts/packages/hatchling_editable/README.md 0ms (unchanged)
scripts/packages/README.md 1ms (unchanged)
scripts/packages/root_editable/README.md 0ms (unchanged)
scripts/workspaces/albatross-virtual-workspace/packages/Unrelated.md 1ms (unchanged)
SECURITY.md 2ms (unchanged)
STYLE.md 9ms (unchanged)
➜  uv git:(docs/contributing-md-formatting) git status
On branch docs/contributing-md-formatting
nothing to commit, working tree clean
➜  uv git:(docs/contributing-md-formatting)
```
</details>

<details>
<summary>Docker based</summary>

```console
➜  uv git:(docs/contributing-md-formatting) sudo docker run --rm -v .:/src/ -w /src/ node:alpine npx prettier --prose-wrap always --write "**/*.md"
npm warn exec The following package was not found and will be installed: prettier@3.6.0
.github/PULL_REQUEST_TEMPLATE.md 54ms (unchanged)
BENCHMARKS.md 41ms (unchanged)
changelogs/0.1.x.md 297ms (unchanged)
changelogs/0.2.x.md 306ms (unchanged)
changelogs/0.3.x.md 50ms (unchanged)
changelogs/0.4.x.md 137ms (unchanged)
changelogs/0.5.x.md 217ms (unchanged)
changelogs/0.6.x.md 114ms (unchanged)
CONTRIBUTING.md 12ms (unchanged)
crates/README.md 8ms (unchanged)
crates/uv-build/README.md 2ms (unchanged)
crates/uv-client/README.md 2ms (unchanged)
crates/uv-globfilter/README.md 6ms (unchanged)
crates/uv-pep440/Readme.md 8ms (unchanged)
crates/uv-pep508/Readme.md 5ms (unchanged)
crates/uv-python/python/packaging/README.md 2ms (unchanged)
crates/uv-trampoline/README.md 17ms (unchanged)
crates/uv-virtualenv/README.md 2ms (unchanged)
docs/concepts/authentication.md 20ms (unchanged)
docs/concepts/build-backend.md 20ms (unchanged)
docs/concepts/cache.md 35ms (unchanged)
docs/concepts/configuration-files.md 11ms (unchanged)
docs/concepts/index.md 3ms (unchanged)
docs/concepts/indexes.md 24ms (unchanged)
docs/concepts/projects/build.md 5ms (unchanged)
docs/concepts/projects/config.md 25ms (unchanged)
docs/concepts/projects/dependencies.md 38ms (unchanged)
docs/concepts/projects/index.md 3ms (unchanged)
docs/concepts/projects/init.md 15ms (unchanged)
docs/concepts/projects/layout.md 11ms (unchanged)
docs/concepts/projects/run.md 7ms (unchanged)
docs/concepts/projects/sync.md 15ms (unchanged)
docs/concepts/projects/workspaces.md 15ms (unchanged)
docs/concepts/python-versions.md 30ms (unchanged)
docs/concepts/resolution.md 52ms (unchanged)
docs/concepts/tools.md 20ms (unchanged)
docs/getting-started/features.md 10ms (unchanged)
docs/getting-started/first-steps.md 2ms (unchanged)
docs/getting-started/help.md 5ms (unchanged)
docs/getting-started/index.md 3ms (unchanged)
docs/getting-started/installation.md 8ms (unchanged)
docs/guides/index.md 2ms (unchanged)
docs/guides/install-python.md 49ms (unchanged)
docs/guides/integration/alternative-indexes.md 29ms (unchanged)
docs/guides/integration/aws-lambda.md 102ms (unchanged)
docs/guides/integration/dependency-bots.md 20ms (unchanged)
docs/guides/integration/docker.md 38ms (unchanged)
docs/guides/integration/fastapi.md 7ms (unchanged)
docs/guides/integration/github.md 46ms (unchanged)
docs/guides/integration/index.md 3ms (unchanged)
docs/guides/integration/jupyter.md 16ms (unchanged)
docs/guides/integration/marimo.md 6ms (unchanged)
docs/guides/integration/pre-commit.md 14ms (unchanged)
docs/guides/integration/pytorch.md 18ms (unchanged)
docs/guides/package.md 9ms (unchanged)
docs/guides/projects.md 11ms (unchanged)
docs/guides/scripts.md 13ms (unchanged)
docs/guides/tools.md 13ms (unchanged)
docs/index.md 11ms (unchanged)
docs/pip/compatibility.md 40ms (unchanged)
docs/pip/compile.md 12ms (unchanged)
docs/pip/dependencies.md 4ms (unchanged)
docs/pip/environments.md 10ms (unchanged)
docs/pip/index.md 4ms (unchanged)
docs/pip/inspection.md 2ms (unchanged)
docs/pip/packages.md 5ms (unchanged)
docs/reference/benchmarks.md 2ms (unchanged)
docs/reference/index.md 3ms (unchanged)
docs/reference/installer.md 3ms (unchanged)
docs/reference/policies/index.md 1ms (unchanged)
docs/reference/policies/license.md 3ms (unchanged)
docs/reference/policies/platforms.md 5ms (unchanged)
docs/reference/policies/versioning.md 4ms (unchanged)
docs/reference/resolver-internals.md 29ms (unchanged)
docs/reference/troubleshooting/build-failures.md 19ms (unchanged)
docs/reference/troubleshooting/index.md 2ms (unchanged)
docs/reference/troubleshooting/reproducible-examples.md 9ms (unchanged)
PIP_COMPATIBILITY.md 1ms (unchanged)
README.md 15ms (unchanged)
scripts/benchmark/README.md 1ms (unchanged)
scripts/packages/built-by-uv/README.md 1ms (unchanged)
scripts/packages/dependent_locals/first_local/README.md 0ms (unchanged)
scripts/packages/dependent_locals/second_local/README.md 0ms (unchanged)
scripts/packages/hatchling_editable/README.md 1ms (unchanged)
scripts/packages/README.md 1ms (unchanged)
scripts/packages/root_editable/README.md 0ms (unchanged)
scripts/workspaces/albatross-virtual-workspace/packages/Unrelated.md 2ms (unchanged)
SECURITY.md 3ms (unchanged)
STYLE.md 16ms (unchanged)
npm notice
npm notice New minor version of npm available! 11.3.0 -> 11.4.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.4.2
npm notice To update run: npm install -g npm@11.4.2
npm notice
➜  uv git:(docs/contributing-md-formatting) git status
On branch docs/contributing-md-formatting
nothing to commit, working tree clean
➜  uv git:(docs/contributing-md-formatting)
```

</details>

Co-authored-by: Dmitry Bychkov <dbychkov@alarislabs.com>
2025-07-11 12:05:15 -05:00
Zanie Blue 088a436efe
Move `run_to_completion` utility to `crate::child` instead of `crate::commands::run` (#14566)
This was really confusing as everything else in the `commands` module is
a command
2025-07-11 16:45:45 +00:00