Commit Graph

7305 Commits

Author SHA1 Message Date
Charlie Marsh ac84f5aedc
Move preview features into a dedicated crate (#15482)
## Summary

This is causing some cyclic dependencies issues for me, because these
can be used in virtually _any_ crate (like `uv-install-wheel`), which
then means that all of `uv-configuration` becomes a dependency, etc. I
think this should be a leaf crate so that we can safely depend on it
anywhere.
2025-08-24 09:55:30 -04:00
Giuseppe Di Giorno f1647838ae
Move Resolver to new Internals section in the Reference (#15465)
## Summary

Move the Resolver reference into a new Internals section in the
reference. Add the new nav item, fix internal linking to the new path,
fix server side redirect to the new path for external traffic via
redirect_maps, fix non existent anchor in
"docs/concepts/projects/dependencies.md"

Closes #15412
2025-08-22 19:26:16 -05:00
Jorge Hermo e6def43110
Run the formatter in the project root instead of the working directory (#15440)
Closes https://github.com/astral-sh/uv/issues/15430

This PR is a branch from https://github.com/astral-sh/uv/pull/15438,
opening it as a draft until that is merged to main and I'll merge main
with this branch to have a cleaner diff

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-08-22 15:09:42 -05:00
Xavi Simpson 6e2fbbc30f
Add `--no-install-local` option to `uv sync`, `uv add` and `uv export` (#15328)
<!--
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? -->

Closes #14866. Adds a `no-install-local` flag to the sync and export
commands that excludes locally defined packages from being installed.

This helps with if you're caching your virtual environment. You can
exclude local packages since they're more likely to change between
builds.

## Test Plan

snapshot test: `sync::no_install_local`
CI

## Notes
I made an `InstallOptions` struct to avoid a crate isolation issue I was
running into while implementing.

Thanks for maintaining this project!
2025-08-22 11:31:52 -05:00
KotlinIsland f231d0f2a5
Fix github doc highlight lines (#15443)
<!--
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

i noticed some of the line highlights are wrong in the docs

## Test Plan

visual verification
2025-08-22 11:28:41 -05:00
Jorge Hermo a2d97ae9b1
Respect `--project` in `uv format` (#15438)
Closes https://github.com/astral-sh/uv/issues/15431

This is my first contribution, so I'm sorry if I miss something! Didn't
update any documentation nor added tests. Tell me if this is needed for
this feature 😄

I will try to address https://github.com/astral-sh/uv/issues/15430 in
another PR
2025-08-22 11:27:34 -05:00
Charlie Marsh 93630a8f79
Include cycle error message in `uv pip` CLI (#15453)
## Summary

The use of `format!` was dropping the error chain.

Closes https://github.com/astral-sh/uv/issues/15397.
2025-08-22 15:30:33 +01:00
Charlie Marsh 088c908cda
Allow more trailing null bytes in zip files (#15452)
## Summary

There isn't any risk here, and we have reports of at least one zip file
with more than one (but fewer than, e.g., 10) null bytes.

Closes https://github.com/astral-sh/uv/issues/15451.
2025-08-22 14:50:07 +01:00
Charlie Marsh 3e34aee63e
Avoid introducing unnecessary system dependency on CUDA (#15449)
## Summary

Packages like `triton` should come from the PyTorch index, but they
don't actually vary across (e.g.) the `cu128` or `cu129` indexes.

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

## Test Plan

Validate that the following pins to `cu128`, rather than `cpu`:

```
echo "vllm\ntorch==2.7.1+cu128" | cargo run pip compile --torch-backend=auto --extra-index-url https://wheels.vllm.ai/b2f6c247a9b84556a8ea0e75bb4a2db765ff3315 - --python-platform linux --python-version 3.13 -v
```
2025-08-22 12:06:23 +01:00
renovate[bot] 965d5b338f
Update Rust crate cargo-util to v0.2.22 (#15211) 2025-08-22 10:17:36 +00:00
Charlie Marsh b826c8db04
Bump MSRV to 1.87 (#15441)
## Summary

Per our N-2 policy (1.89 is latest).
2025-08-22 10:21:24 +01:00
Charlie Marsh 35a8dd514e
Import `PackageName` from `uv-normalize` (#15439)
## Summary

This might be unintentional? `PackageName` is re-exported from
`uv-pep508`, so some crates import it from there.
2025-08-21 23:15:40 +00:00
Charlie Marsh 91d66e0bd8
Add file-to-CLI overrides for build isolation configuration (#15437)
## Summary

Like #15395, but `--no-build-isolation`.
2025-08-21 23:54:39 +01:00
Charlie Marsh d1e0c26678
Add an environment variable for `UV_ISOLATED` (#15428)
Closes https://github.com/astral-sh/uv/issues/15427.
2025-08-21 23:39:04 +01:00
Pepe Osca c4f2da729c
fix(tests): Ensure show_settings tests don't load user config (#15434)
## Summary

Ensure show_settings tests set XDG_CONFIG_HOME to avoid loading user
configuration

Closes #15403
2025-08-21 17:10:11 -05:00
Zanie Blue f210db0907
Fix format doc mistake (#15433) 2025-08-21 21:12:06 +00:00
Charlie Marsh 330b54b173
Add file-to-CLI overrides for reinstall configuration (#15426)
## Summary

This is like #15395, but for `--reinstall` and `--reinstall-package`.
2025-08-21 19:03:03 +00:00
Zanie Blue ede75fe628
Bump version to 0.8.13 (#15423) 2025-08-21 13:52:39 -05:00
Charlie Marsh e4de538dae
Remove `UpgradeSelection` struct (#15422)
## Summary

After #15395, I realized that we didn't actually need a separate struct
for this since we now pass it around as an `Option`. (The key change
from #15395 is that when combining, we treat the options as a single
unit.)
2025-08-21 18:35:07 +00:00
Zsolt Dollenstein 11633549fd
extra-build-dependencies: Allow version specifiers if match-runtime is explicitly false (#15420)
## Summary

`match-runtime` can be explicitly specified, and if it's `false` it
should behave the same way as if it's omitted.

## Test Plan

Added snapshot test
2025-08-21 17:50:15 +01:00
konsti 25bedeadea
Stop leaking strings in Python downloads (#15418)
We should not unnecessarily leak memory. Instead, we follow the general
patterns and use `Cow` for strings that can be from either a static or a
dynamic source.
2025-08-21 17:54:39 +02:00
Charlie Marsh 0397595e53
Treat `--upgrade-package` on the command-line as overriding `upgrade = false` in configuration (#15395)
## Summary

Right now, if you put `upgrade = false` in a `uv.toml`, then pass
`--upgrade-package numpy` on the CLI, we won't upgrade NumPy. This PR
fixes that interaction by ensuring that when we "combine", we look at
those arguments holistically (i.e., we bundle `upgrade` and
`upgrade-package` into a single struct, which then goes through the
`.combine` logic), rather than combining `upgrade` and `upgrade-package`
independently.

If approved, I then need to add the same thing for `no-build-isolation`,
`reinstall`, `no-build`, and `no-binary`.
2025-08-21 16:20:55 +01:00
youkaichao b950453891
Add CUDA 12.9 backend (#15416)
## Summary

Add torch cuda 12.9 backend

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

## Test Plan

<!-- How was it tested? -->

---------

Signed-off-by: youkaichao <youkaichao@gmail.com>
Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2025-08-21 16:01:02 +01:00
Charlie Marsh 61e2308806
Add `triton` to `torch-backend` manifest (#15405)
## Summary

The PyTorch team publishes ARM Linux wheels for `triton` to the PyTorch
index, which aren't available on PyPI.

## Test Plan

```
echo "torch" | cargo run pip compile - --torch-backend=cu128 --python-platform aarch64-unknown-linux-gnu --python-version 3.13
```

Previously failed because it couldn't find a compatible `triton` wheel.
2025-08-21 13:23:12 +00:00
Zanie Blue e31f000da7
Add an experimental `uv format` command (#15017)
As a frontend to Ruff's formatter.

There are some interesting choices here, some of which may just be
temporary:

1. We pin a default version of Ruff, so `uv format` is stable for a
given uv version
2. We install Ruff from GitHub instead of PyPI, which means we don't
need a Python interpreter or environment
3. We do not read the Ruff version from the dependency tree

See https://github.com/astral-sh/ruff/pull/19665 for a prototype of the
LSP integration.
2025-08-21 06:33:18 -05:00
Anuraag (Rag) Agrawal 8d6ea3f2ea
Fix uv_build wheel hashes (#15400)
<!--
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? -->

Currently record hashes are the hex encoded sha-256 sum. However,
they're supposed to be urlsafe-base64-nopad.


https://packaging.python.org/en/latest/specifications/recording-installed-packages/#the-record-file

Fixes #15398 

## Test Plan

<!-- How was it tested? -->

Build any wheel

```
uv build --wheel
```

Unpack the wheel

```
uvx wheel unpack dist/*.whl
```

Before this change, it will fail with a hash mismatch. I could confirm
with a local build that now the wheel can be unpacked with the `wheel`
command. While I don't enable hash checking when syncing, presumably it
would also currently fail.
2025-08-21 10:54:21 +02:00
github-actions[bot] f1a023d384
Update Pyodide to 0.28.2 (#15385)
Automated update for Python releases.

Co-authored-by: zanieb <2586601+zanieb@users.noreply.github.com>
2025-08-21 01:04:15 +00:00
Charlie Marsh fcc8cfc0bc
Add `uv sync` tests for upgrade CLI interaction (#15396)
Like #15393 but for `uv sync`, since the settings logic is a bit
different than `uv pip`.
2025-08-20 18:31:18 +01:00
Charlie Marsh 1176e5e00c
Retain IO error source in extraction (#15388)
## Summary

This was accidentally lost in 4f4492dd53.
2025-08-20 16:27:26 +01:00
Charlie Marsh 02e7a8216b
Add tests to track `upgrade` and `upgrade-package` interactions (#15393)
## Summary

There are some non-ideal behaviors here, but want to start by tacking
them.
2025-08-20 16:27:18 +01:00
Charlie Marsh 08233c2ac7
Avoid panicking when resolver returns stale distributions (#15389)
## Summary

I've written a reasonably-long comment to explain what's going on here.
We should fix this, but it's better to continue using a
potentially-stale distribution than to panic.

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

---------

Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-08-20 14:04:39 +00:00
Zsolt Dollenstein 5271ce5e24
Fix typo in extra-build-dependencies docs (#15390)
## Summary

Smol but important typo.
2025-08-20 12:39:59 +01:00
Zanie Blue 249154ee08
Restore DockerHub publishing (#15381)
- **Revert "Skip DockerHub annotations too (#15366)"**
- **Revert "Disable DockerHub publish for extended images in 0.8.12
(#15365)"**

Closes https://github.com/astral-sh/uv/issues/15367
2025-08-19 11:45:41 -05:00
konsti 4fbf3097d8
Update astral-tokio-tar to v0.5.3 (#15382)
This is not actually an update, we're just updating the commit tag to a
crates.io release for
https://github.com/astral-sh/uv/pull/15202#issuecomment-3200209608
2025-08-19 15:49:01 +00:00
Charlie Marsh 68f33e8fef
Add `--no-install-*` arguments to `uv add` (#15375)
## Summary

Closes https://github.com/astral-sh/uv/issues/15369.
2025-08-19 15:32:56 +01:00
Charlie Marsh c58192eebe
Initialize Git prior to reading author (#15377)
## Summary

Closes https://github.com/astral-sh/uv/issues/15372.
2025-08-19 08:37:20 -05:00
Hood Chatham 075291f23e
Update pyodide-build to 0.30.7 (#15373)
And remove `--prerelease=allow`. We can remove this once I get the
jsdelivr index set up.
2025-08-19 15:33:38 +02:00
Michał Górny ec27ab6033
Mark `find_uv_bin_py38` test as requiring `python-eol` (#15379)
## Summary

Mark `find_uv_bin_py38` test as requiring `python-eol`. Resolves one of
the issues reported in #15368.

## Test Plan

```
cargo test --profile=dev --features git --features pypi --features python --no-default-features
```

(without Python 3.8 installed)

Signed-off-by: Michał Górny <mgorny@gentoo.org>
2025-08-19 13:06:03 +00:00
konsti 7a9e07a98e
Block `tokio::fs` symbols (#15374)
Inspired by #15017, mirror the blocking of `std::fs` symbols in favor of
`fs_err` and block `tokio::fs` symbols in favor of `fs_err::tokio`.
2025-08-19 13:13:46 +02:00
Michael Richter f98cb7dece
Update libc to fix build on AIX #15128 (#15376)
<!--
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

Updates libc dependencies to fix #15128

Note: The whole build on AIX still doesn't work but libc works now.

## Test Plan

<!-- How was it tested? -->
Build on AIX 7300-03-00-2446:

```
bash-5.2$ cargo build --offline
   Compiling proc-macro2 v1.0.95
   Compiling unicode-ident v1.0.18
   Compiling libc v0.2.175       # worked
   Compiling cfg-if v1.0.1
   Compiling memchr v2.7.5
   Compiling serde v1.0.219
   Compiling pin-project-lite v0.2.16
   Compiling shlex v1.3.0
   Compiling itoa v1.0.15
   Compiling once_cell v1.21.3
   Compiling smallvec v1.15.1
   Compiling bytes v1.10.1
   Compiling stable_deref_trait v1.2.0
   Compiling ryu v1.0.20
   Compiling tracing-core v0.1.34
   Compiling bitflags v2.9.1
   Compiling foldhash v0.1.5
   Compiling allocator-api2 v0.2.21
   Compiling equivalent v1.0.2
   Compiling litemap v0.8.0
   Compiling quote v1.0.40
   Compiling jobserver v0.1.33     # worked too (depends on libc)
   Compiling hashbrown v0.15.5
   Compiling syn v2.0.104
   Compiling serde_json v1.0.142
   Compiling cc v1.2.30
   Compiling autocfg v1.5.0
   Compiling writeable v0.6.1
   Compiling signal-hook-registry v1.4.5
   Compiling mio v1.0.4
   Compiling socket2 v0.6.0
   Compiling icu_normalizer_data v2.0.0
   Compiling icu_properties_data v2.0.1
   Compiling percent-encoding v2.3.1
   Compiling form_urlencoded v1.2.1
[...]
```

Co-authored-by: Richter, Michael (G-GP-A/4) <michael.richter@vwgis.de>
2025-08-19 10:27:43 +00:00
Zanie Blue 36151df0e4
Skip DockerHub annotations too (#15366) 2025-08-18 18:36:31 -05:00
Zanie Blue f77d78a8ad
Disable DockerHub publish for extended images in 0.8.12 (#15365) 2025-08-18 18:21:39 -05:00
samypr100 5b088e9430
chore: add trixie base images and alpine 3.22 support (#15351)
## Summary

Follow up to
https://github.com/astral-sh/uv/pull/15269#issuecomment-3194000772

Enables the following additional images to be published
* buildpack-deps:trixie
* debian:trixie-slim
* alpine:3.22

## Test Plan

Existing Tests. The newly added images were checked manually.
2025-08-18 17:55:42 -05:00
Zanie Blue f784c334cf
Bump version to 0.8.12 (#15364) 2025-08-18 22:14:51 +00:00
konsti 4f4492dd53
Add hint for venv in source distribution error (#15202)
Venvs should not be in source distributions, and on Unix, we now reject
them for having a link outside the source directory. This PR adds a hint
for that since users were confused (#15096).

In the process, we're differentiating IO errors for format error for
uncompression generally.

Fixes #15096
2025-08-18 22:07:57 +00:00
github-actions[bot] 724e4c7e5e
Sync latest Python releases (#15363)
Automated update for Python releases.

---------

Co-authored-by: zanieb <2586601+zanieb@users.noreply.github.com>
Co-authored-by: Zanie Blue <contact@zanie.dev>
2025-08-18 21:49:00 +00:00
Charlie Marsh fa3c20a177
Document improvements to build-isolation setups (#15326)
## Summary

There's a lot here (maybe it should go somewhere else?), but this is a
complex topic and I wanted to include a lot of copy-pasteable examples
for common cases.

Closes https://github.com/astral-sh/uv/issues/10694.
Closes https://github.com/astral-sh/uv/issues/13959.
Closes https://github.com/astral-sh/uv/issues/15248.
Closes https://github.com/astral-sh/uv/issues/15316.
2025-08-18 16:15:35 -05:00
Zanie Blue 0c825c5609
Use Depot macOS runner in CI (#15358) 2025-08-18 14:24:58 -05:00
renovate[bot] bbef948b6a
Update pre-commit dependencies (#15338)
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.12.8` -> `v0.12.9` |
| [crate-ci/typos](https://redirect.github.com/crate-ci/typos) |
repository | patch | `v1.35.3` -> `v1.35.4` |

---

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

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.12.9`](https://redirect.github.com/astral-sh/ruff-pre-commit/releases/tag/v0.12.9)

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

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

</details>

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

###
[`v1.35.4`](https://redirect.github.com/crate-ci/typos/blob/HEAD/CHANGELOG.md#014---2019-11-03)

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

##### Bug Fixes

- Ignore numbers as identifiers
([a00831c8](a00831c847))
- Improve the organization of --help
([a48a457c](a48a457cc3))

##### Features

- Dump files, identifiers, and words
([ce365ae1](ce365ae12e),
closes
[#&#8203;41](https://redirect.github.com/crate-ci/typos/issues/41))
- Give control over allowed identifier characters for leading vs rest
([107308a6](107308a655))

##### Performance

- Use standard identifier rules to avoid doing umber checks
([107308a6](107308a655))
- Only do hex check if digits are in identifiers
([68cd36d0](68cd36d0de))

<!-- next-url -->

[Unreleased]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.4...HEAD

[1.35.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.3...v1.35.4

[1.35.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.2...v1.35.3

[1.35.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.1...v1.35.2

[1.35.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.35.0...v1.35.1

[1.35.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.34.0...v1.35.0

[1.34.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.1...v1.34.0

[1.33.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.33.0...v1.33.1

[1.33.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.32.0...v1.33.0

[1.32.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.2...v1.32.0

[1.31.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.1...v1.31.2

[1.31.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.31.0...v1.31.1

[1.31.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.3...v1.31.0

[1.30.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.2...v1.30.3

[1.30.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.1...v1.30.2

[1.30.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.30.0...v1.30.1

[1.30.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.10...v1.30.0

[1.29.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.9...v1.29.10

[1.29.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.8...v1.29.9

[1.29.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.7...v1.29.8

[1.29.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.6...v1.29.7

[1.29.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.5...v1.29.6

[1.29.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.4...v1.29.5

[1.29.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.3...v1.29.4

[1.29.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.2...v1.29.3

[1.29.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.1...v1.29.2

[1.29.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.29.0...v1.29.1

[1.29.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.4...v1.29.0

[1.28.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.3...v1.28.4

[1.28.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.2...v1.28.3

[1.28.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.1...v1.28.2

[1.28.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.28.0...v1.28.1

[1.28.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.3...v1.28.0

[1.27.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.2...v1.27.3

[1.27.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.1...v1.27.2

[1.27.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.27.0...v1.27.1

[1.27.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.8...v1.27.0

[1.26.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.7...v1.26.8

[1.26.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.6...v1.26.7

[1.26.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.5...v1.26.6

[1.26.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.4...v1.26.5

[1.26.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.3...v1.26.4

[1.26.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.2...v1.26.3

[1.26.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.1...v1.26.2

[1.26.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.26.0...v1.26.1

[1.26.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.25.0...v1.26.0

[1.25.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.6...v1.25.0

[1.24.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.5...v1.24.6

[1.24.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.4...v1.24.5

[1.24.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.3...v1.24.4

[1.24.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.2...v1.24.3

[1.24.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.1...v1.24.2

[1.24.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.24.0...v1.24.1

[1.24.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.7...v1.24.0

[1.23.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.6...v1.23.7

[1.23.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.5...v1.23.6

[1.23.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.4...v1.23.5

[1.23.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.3...v1.23.4

[1.23.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.2...v1.23.3

[1.23.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.1...v1.23.2

[1.23.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.23.0...v1.23.1

[1.23.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.9...v1.23.0

[1.22.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.8...v1.22.9

[1.22.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.7...v1.22.8

[1.22.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.6...v1.22.7

[1.22.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.5...v1.22.6

[1.22.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.4...v1.22.5

[1.22.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.3...v1.22.4

[1.22.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.2...v1.22.3

[1.22.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.1...v1.22.2

[1.22.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.22.0...v1.22.1

[1.22.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.21.0...v1.22.0

[1.21.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.10...v1.21.0

[1.20.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.9...v1.20.10

[1.20.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.8...v1.20.9

[1.20.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.7...v1.20.8

[1.20.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.6...v1.20.7

[1.20.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.5...v1.20.6

[1.20.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.4...v1.20.5

[1.20.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.3...v1.20.4

[1.20.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.2...v1.20.3

[1.20.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.1...v1.20.2

[1.20.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.20.0...v1.20.1

[1.20.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.19.0...v1.20.0

[1.19.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.2...v1.19.0

[1.18.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.1...v1.18.2

[1.18.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.18.0...v1.18.1

[1.18.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.2...v1.18.0

[1.17.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.1...v1.17.2

[1.17.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.17.0...v1.17.1

[1.17.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.26...v1.17.0

[1.16.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.25...v1.16.26

[1.16.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.24...v1.16.25

[1.16.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.23...v1.16.24

[1.16.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.22...v1.16.23

[1.16.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.21...v1.16.22

[1.16.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.20...v1.16.21

[1.16.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.19...v1.16.20

[1.16.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.18...v1.16.19

[1.16.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.17...v1.16.18

[1.16.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.16...v1.16.17

[1.16.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.15...v1.16.16

[1.16.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.14...v1.16.15

[1.16.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.13...v1.16.14

[1.16.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.12...v1.16.13

[1.16.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.11...v1.16.12

[1.16.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.10...v1.16.11

[1.16.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.9...v1.16.10

[1.16.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.8...v1.16.9

[1.16.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.7...v1.16.8

[1.16.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.6...v1.16.7

[1.16.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.5...v1.16.6

[1.16.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.4...v1.16.5

[1.16.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.3...v1.16.4

[1.16.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.2...v1.16.3

[1.16.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.1...v1.16.2

[1.16.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.16.0...v1.16.1

[1.16.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.10...v1.16.0

[1.15.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.9...v1.15.10

[1.15.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.8...v1.15.9

[1.15.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.7...v1.15.8

[1.15.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.6...v1.15.7

[1.15.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.5...v1.15.6

[1.15.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.4...v1.15.5

[1.15.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.3...v1.15.4

[1.15.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.2...v1.15.3

[1.15.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.1...v1.15.2

[1.15.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.15.0...v1.15.1

[1.15.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.12...v1.15.0

[1.14.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.11...v1.14.12

[1.14.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.10...v1.14.11

[1.14.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.9...v1.14.10

[1.14.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.8...v1.14.9

[1.14.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.7...v1.14.8

[1.14.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.6...v1.14.7

[1.14.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.5...v1.14.6

[1.14.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.4...v1.14.5

[1.14.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.3...v1.14.4

[1.14.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.2...v1.14.3

[1.14.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.1...v1.14.2

[1.14.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.14.0...v1.14.1

[1.14.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.26...v1.14.0

[1.13.26]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.25...v1.13.26

[1.13.25]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.24...v1.13.25

[1.13.24]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.23...v1.13.24

[1.13.23]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.22...v1.13.23

[1.13.22]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.21...v1.13.22

[1.13.21]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.20...v1.13.21

[1.13.20]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.19...v1.13.20

[1.13.19]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.18...v1.13.19

[1.13.18]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.17...v1.13.18

[1.13.17]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.16...v1.13.17

[1.13.16]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.15...v1.13.16

[1.13.15]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.14...v1.13.15

[1.13.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.13...v1.13.14

[1.13.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.12...v1.13.13

[1.13.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.11...v1.13.12

[1.13.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.10...v1.13.11

[1.13.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.9...v1.13.10

[1.13.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.8...v1.13.9

[1.13.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.7...v1.13.8

[1.13.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.6...v1.13.7

[1.13.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.5...v1.13.6

[1.13.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.4...v1.13.5

[1.13.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.3...v1.13.4

[1.13.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.2...v1.13.3

[1.13.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.1...v1.13.2

[1.13.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.13.0...v1.13.1

[1.13.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.14...v1.13.0

[1.12.14]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.13...v1.12.14

[1.12.13]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.12...v1.12.13

[1.12.12]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.11...v1.12.12

[1.12.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.10...v1.12.11

[1.12.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.9...v1.12.10

[1.12.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.8...v1.12.9

[1.12.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.7...v1.12.8

[1.12.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.6...v1.12.7

[1.12.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.5...v1.12.6

[1.12.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.4...v1.12.5

[1.12.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.3...v1.12.4

[1.12.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.2...v1.12.3

[1.12.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.1...v1.12.2

[1.12.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.12.0...v1.12.1

[1.12.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.5...v1.12.0

[1.11.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.4...v1.11.5

[1.11.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.3...v1.11.4

[1.11.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.2...v1.11.3

[1.11.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.1...v1.11.2

[1.11.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.11.0...v1.11.1

[1.11.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.3...v1.11.0

[1.10.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.2...v1.10.3

[1.10.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.1...v1.10.2

[1.10.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.10.0...v1.10.1

[1.10.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.9.0...v1.10.0

[1.9.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.1...v1.9.0

[1.8.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.8.0...v1.8.1

[1.8.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.3...v1.8.0

[1.7.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.2...v1.7.3

[1.7.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.1...v1.7.2

[1.7.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.7.0...v1.7.1

[1.7.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.6.0...v1.7.0

[1.6.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.5.0...v1.6.0

[1.5.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.1...v1.5.0

[1.4.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.4.0...v1.4.1

[1.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.9...v1.4.0

[1.3.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.8...v1.3.9

[1.3.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.7...v1.3.8

[1.3.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.6...v1.3.7

[1.3.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.5...v1.3.6

[1.3.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.4...v1.3.5

[1.3.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.3...v1.3.4

[1.3.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.2...v1.3.3

[1.3.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.1...v1.3.2

[1.3.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.3.0...v1.3.1

[1.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.1...v1.3.0

[1.2.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.2.0...v1.2.1

[1.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.9...v1.2.0

[1.1.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.8...v1.1.9

[1.1.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.7...v1.1.8

[1.1.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.6...v1.1.7

[1.1.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.5...v1.1.6

[1.1.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.4...v1.1.5

[1.1.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.3...v1.1.4

[1.1.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.2...v1.1.3

[1.1.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.1...v1.1.2

[1.1.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.1.0...v1.1.1

[1.1.0]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.11...v1.1.0

[1.0.11]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.10...v1.0.11

[1.0.10]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.9...v1.0.10

[1.0.9]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.8...v1.0.9

[1.0.8]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.7...v1.0.8

[1.0.7]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.6...v1.0.7

[1.0.6]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.5...v1.0.6

[1.0.5]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.4...v1.0.5

[1.0.4]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.3...v1.0.4

[1.0.3]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.2...v1.0.3

[1.0.2]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.1...v1.0.2

[1.0.1]:
https://redirect.github.com/crate-ci/typos/compare/v1.0.0...v1.0.1

[1.0.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.4.0...v1.0.0

[0.4.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.3.0...v0.4.0

[0.3.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.2.0...v0.3.0

[0.2.0]:
https://redirect.github.com/crate-ci/typos/compare/v0.1.4...v0.2.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:eyJjcmVhdGVkSW5WZXIiOiI0MS43MS4xIiwidXBkYXRlZEluVmVyIjoiNDEuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-08-18 14:07:12 -05:00
Ed Rogers 4b88b1379a
Add fallback parent process detection to `uv tool update-shell` (#15356)
## Summary

Closes #15355

This PR adds a fallback mechanism to `Shell::from_env()` that inspects
the parent process when shell environment variables are not available on
Unix-like systems.

Currently, `uv tool update-shell` fails with "the current shell could
not be determined" when environment variables like `ZSH_VERSION`,
`BASH_VERSION`, or `SHELL` are not exported. This commonly occurs in
automated environments such as GitHub Actions runners.

The fallback approach:
1. Uses `nix::unistd::getppid()` to get the parent process ID
2. Reads `/proc/<ppid>/exe` to determine the parent executable path
3. Falls back to `/proc/<ppid>/comm` if the exe symlink fails  
4. Uses existing `parse_shell_from_path()` to identify the shell type

This maintains full backward compatibility - the fallback only activates
when environment variables are unavailable and an error would otherwise
occur.

## Test Plan

Tested locally with:

```bash
env -u ZSH_VERSION -u SHELL PATH="/usr/bin:/bin" $(which cargo) run -- tool update-shell --verbose
```
```text
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.30s
     Running `target/debug/uv tool update-shell --verbose`
DEBUG uv 0.8.11
DEBUG Ensuring that the executable directory is in PATH: /home/user/.local/bin
DEBUG Detected parent process ID: 4147396
DEBUG Parent process executable: /usr/bin/zsh
Updated configuration file: /home/user/.zshenv
Restart your shell to apply changes
```
2025-08-18 13:48:34 -05:00