Skip to content

Commit dc3fd46

Browse files
authored
Bump version to 0.7.12 (#13892)
1 parent 5b0133c commit dc3fd46

File tree

13 files changed

+74
-47
lines changed

13 files changed

+74
-47
lines changed

CHANGELOG.md

Lines changed: 50 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,33 @@
33
<!-- prettier-ignore-start -->
44

55

6+
## 0.7.12
7+
8+
### Enhancements
9+
10+
- Add `uv python pin --rm` to remove `.python-version` pins ([#13860](https://github.com/astral-sh/uv/pull/13860))
11+
- Don't hint at versions removed by `excluded-newer` ([#13884](https://github.com/astral-sh/uv/pull/13884))
12+
- Add hint to use `tool.uv.environments` on resolution error ([#13455](https://github.com/astral-sh/uv/pull/13455))
13+
- Add hint to use `tool.uv.required-environments` on resolution error ([#13575](https://github.com/astral-sh/uv/pull/13575))
14+
15+
- Improve `python pin` error messages ([#13862](https://github.com/astral-sh/uv/pull/13862))
16+
17+
### Bug fixes
18+
19+
- Lock environments during `uv sync`, `uv add` and `uv remove` to prevent race conditions ([#13869](https://github.com/astral-sh/uv/pull/13869))
20+
- Add `--no-editable` to `uv export` for `pylock.toml` ([#13852](https://github.com/astral-sh/uv/pull/13852))
21+
22+
### Documentation
23+
24+
- List `.gitignore` in project init files ([#13855](https://github.com/astral-sh/uv/pull/13855))
25+
- Move the pip interface documentation into the concepts section ([#13841](https://github.com/astral-sh/uv/pull/13841))
26+
- Remove the configuration section in favor of concepts / reference ([#13842](https://github.com/astral-sh/uv/pull/13842))
27+
- Update Git and GitHub Actions docs to mention `gh auth login` ([#13850](https://github.com/astral-sh/uv/pull/13850))
28+
29+
### Preview
30+
31+
- Fix directory glob traversal fallback preventing exclusion of all files ([#13882](https://github.com/astral-sh/uv/pull/13882))
32+
633
## 0.7.11
734

835
### Python
@@ -284,11 +311,11 @@ This release contains various changes that improve correctness and user experien
284311
### Breaking changes
285312

286313
- **Update `uv version` to display and update project versions ([#12349](https://github.com/astral-sh/uv/pull/12349))**
287-
314+
288315
Previously, `uv version` displayed uv's version. Now, `uv version` will display or update the project's version. This interface was [heavily requested](https://github.com/astral-sh/uv/issues/6298) and, after much consideration, we decided that transitioning the top-level command was the best option.
289-
316+
290317
Here's a brief example:
291-
318+
292319
```console
293320
$ uv init example
294321
Initialized project `example` at `./example`
@@ -300,72 +327,72 @@ This release contains various changes that improve correctness and user experien
300327
$ uv version --short
301328
1.0.0
302329
```
303-
330+
304331
If used outside of a project, uv will fallback to showing its own version still:
305-
332+
306333
```console
307334
$ uv version
308335
warning: failed to read project: No `pyproject.toml` found in current directory or any parent directory
309336
running `uv self version` for compatibility with old `uv version` command.
310337
this fallback will be removed soon, pass `--preview` to make this an error.
311-
338+
312339
uv 0.7.0 (4433f41c9 2025-04-29)
313340
```
314-
341+
315342
As described in the warning, `--preview` can be used to error instead:
316-
343+
317344
```console
318345
$ uv version --preview
319346
error: No `pyproject.toml` found in current directory or any parent directory
320347
```
321-
348+
322349
The previous functionality of `uv version` was moved to `uv self version`.
323350
- **Avoid fallback to subsequent indexes on authentication failure ([#12805](https://github.com/astral-sh/uv/pull/12805))**
324-
351+
325352
When using the `first-index` strategy (the default), uv will stop searching indexes for a package once it is found on a single index. Previously, uv considered a package as "missing" from an index during authentication failures, such as an HTTP 401 or HTTP 403 (normally, missing packages are represented by an HTTP 404). This behavior was motivated by unusual responses from some package indexes, but reduces the safety of uv's index strategy when authentication fails. Now, uv will consider an authentication failure as a stop-point when searching for a package across indexes. The `index.ignore-error-codes` option can be used to recover the existing behavior, e.g.:
326-
353+
327354
```toml
328355
[[tool.uv.index]]
329356
name = "pytorch"
330357
url = "https://download.pytorch.org/whl/cpu"
331358
ignore-error-codes = [401, 403]
332359
```
333-
360+
334361
Since PyTorch's indexes always return a HTTP 403 for missing packages, uv special-cases indexes on the `pytorch.org` domain to ignore that error code by default.
335362
- **Require the command in `uvx <name>` to be available in the Python environment ([#11603](https://github.com/astral-sh/uv/pull/11603))**
336-
363+
337364
Previously, `uvx` would attempt to execute a command even if it was not provided by a Python package. For example, if we presume `foo` is an empty Python package which provides no command, `uvx foo` would invoke the `foo` command on the `PATH` (if present). Now, uv will error early if the `foo` executable is not provided by the requested Python package. This check is not enforced when `--from` is used, so patterns like `uvx --from foo bash -c "..."` are still valid. uv also still allows `uvx foo` where the `foo` executable is provided by a dependency of `foo` instead of `foo` itself, as this is fairly common for packages which depend on a dedicated package for their command-line interface.
338365
- **Use index URL instead of package URL for keyring credential lookups ([#12651](https://github.com/astral-sh/uv/pull/12651))**
339-
366+
340367
When determining credentials for querying a package URL, uv previously sent the full URL to the `keyring` command. However, some keyring plugins expect to receive the *index URL* (which is usually a parent of the package URL). Now, uv requests credentials for the index URL instead. This behavior matches `pip`.
341368
- **Remove `--version` from subcommands ([#13108](https://github.com/astral-sh/uv/pull/13108))**
342-
369+
343370
Previously, uv allowed the `--version` flag on arbitrary subcommands, e.g., `uv run --version`. However, the `--version` flag is useful for other operations since uv is a package manager. Consequently, we've removed the `--version` flag from subcommands — it is only available as `uv --version`.
344371
- **Omit Python 3.7 downloads from managed versions ([#13022](https://github.com/astral-sh/uv/pull/13022))**
345-
372+
346373
Python 3.7 is EOL and not formally supported by uv; however, Python 3.7 was previously available for download on a subset of platforms.
347374
- **Reject non-PEP 751 TOML files in install, compile, and export commands ([#13120](https://github.com/astral-sh/uv/pull/13120), [#13119](https://github.com/astral-sh/uv/pull/13119))**
348-
375+
349376
Previously, uv treated arbitrary `.toml` files passed to commands (e.g., `uv pip install -r foo.toml` or `uv pip compile -o foo.toml`) as `requirements.txt`-formatted files. Now, uv will error instead. If using PEP 751 lockfiles, use the standardized format for custom names instead, e.g., `pylock.foo.toml`.
350377
- **Ignore arbitrary Python requests in version files ([#12909](https://github.com/astral-sh/uv/pull/12909))**
351-
378+
352379
uv allows arbitrary strings to be used for Python version requests, in which they are treated as an executable name to search for in the `PATH`. However, using this form of request in `.python-version` files is non-standard and conflicts with `pyenv-virtualenv` which writes environment names to `.python-version` files. In this release, uv will now ignore requests that are arbitrary strings when found in `.python-version` files.
353380
- **Error on unknown dependency object specifiers ([12811](https://github.com/astral-sh/uv/pull/12811))**
354-
381+
355382
The `[dependency-groups]` entries can include "object specifiers", e.g. `set-phasers-to = ...` in:
356-
383+
357384
```toml
358385
[dependency-groups]
359386
foo = ["pyparsing"]
360387
bar = [{set-phasers-to = "stun"}]
361388
```
362-
389+
363390
However, the only current spec-compliant object specifier is `include-group`. Previously, uv would ignore unknown object specifiers. Now, uv will error.
364391
- **Make `--frozen` and `--no-sources` conflicting options ([#12671](https://github.com/astral-sh/uv/pull/12671))**
365-
392+
366393
Using `--no-sources` always requires a new resolution and `--frozen` will always fail when used with it. Now, this conflict is encoded in the CLI options for clarity.
367394
- **Treat empty `UV_PYTHON_INSTALL_DIR` and `UV_TOOL_DIR` as unset ([#12907](https://github.com/astral-sh/uv/pull/12907), [#12905](https://github.com/astral-sh/uv/pull/12905))**
368-
395+
369396
Previously, these variables were treated as set to the current working directory when set to an empty string. Now, uv will ignore these variables when empty. This matches uv's behavior for other environment variables which configure directories.
370397

371398
### Enhancements

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/uv-build/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "uv-build"
3-
version = "0.7.11"
3+
version = "0.7.12"
44
edition.workspace = true
55
rust-version.workspace = true
66
homepage.workspace = true

crates/uv-build/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "uv-build"
3-
version = "0.7.11"
3+
version = "0.7.12"
44
description = "The uv build backend"
55
authors = [{ name = "Astral Software Inc.", email = "[email protected]" }]
66
requires-python = ">=3.8"

crates/uv-version/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "uv-version"
3-
version = "0.7.11"
3+
version = "0.7.12"
44
edition = { workspace = true }
55
rust-version = { workspace = true }
66
homepage = { workspace = true }

crates/uv/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "uv"
3-
version = "0.7.11"
3+
version = "0.7.12"
44
edition = { workspace = true }
55
rust-version = { workspace = true }
66
homepage = { workspace = true }

docs/concepts/build-backend.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ existing project, add it to the `[build-system]` section in your `pyproject.toml
1919

2020
```toml
2121
[build-system]
22-
requires = ["uv_build>=0.7.11,<0.8.0"]
22+
requires = ["uv_build>=0.7.12,<0.8.0"]
2323
build-backend = "uv_build"
2424
```
2525

docs/getting-started/installation.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ uv provides a standalone installer to download and install uv:
2525
Request a specific version by including it in the URL:
2626

2727
```console
28-
$ curl -LsSf https://astral.sh/uv/0.7.11/install.sh | sh
28+
$ curl -LsSf https://astral.sh/uv/0.7.12/install.sh | sh
2929
```
3030

3131
=== "Windows"
@@ -41,7 +41,7 @@ uv provides a standalone installer to download and install uv:
4141
Request a specific version by including it in the URL:
4242

4343
```pwsh-session
44-
PS> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/0.7.11/install.ps1 | iex"
44+
PS> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/0.7.12/install.ps1 | iex"
4545
```
4646

4747
!!! tip

docs/guides/integration/aws-lambda.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ the second stage, we'll copy this directory over to the final image, omitting th
9292
other unnecessary files.
9393

9494
```dockerfile title="Dockerfile"
95-
FROM ghcr.io/astral-sh/uv:0.7.11 AS uv
95+
FROM ghcr.io/astral-sh/uv:0.7.12 AS uv
9696

9797
# First, bundle the dependencies into the task root.
9898
FROM public.ecr.aws/lambda/python:3.13 AS builder
@@ -334,7 +334,7 @@ And confirm that opening http://127.0.0.1:8000/ in a web browser displays, "Hell
334334
Finally, we'll update the Dockerfile to include the local library in the deployment package:
335335

336336
```dockerfile title="Dockerfile"
337-
FROM ghcr.io/astral-sh/uv:0.7.11 AS uv
337+
FROM ghcr.io/astral-sh/uv:0.7.12 AS uv
338338

339339
# First, bundle the dependencies into the task root.
340340
FROM public.ecr.aws/lambda/python:3.13 AS builder

docs/guides/integration/docker.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ $ docker run --rm -it ghcr.io/astral-sh/uv:debian uv --help
3131
The following distroless images are available:
3232

3333
- `ghcr.io/astral-sh/uv:latest`
34-
- `ghcr.io/astral-sh/uv:{major}.{minor}.{patch}`, e.g., `ghcr.io/astral-sh/uv:0.7.11`
34+
- `ghcr.io/astral-sh/uv:{major}.{minor}.{patch}`, e.g., `ghcr.io/astral-sh/uv:0.7.12`
3535
- `ghcr.io/astral-sh/uv:{major}.{minor}`, e.g., `ghcr.io/astral-sh/uv:0.7` (the latest patch
3636
version)
3737

@@ -75,7 +75,7 @@ And the following derived images are available:
7575

7676
As with the distroless image, each derived image is published with uv version tags as
7777
`ghcr.io/astral-sh/uv:{major}.{minor}.{patch}-{base}` and
78-
`ghcr.io/astral-sh/uv:{major}.{minor}-{base}`, e.g., `ghcr.io/astral-sh/uv:0.7.11-alpine`.
78+
`ghcr.io/astral-sh/uv:{major}.{minor}-{base}`, e.g., `ghcr.io/astral-sh/uv:0.7.12-alpine`.
7979

8080
For more details, see the [GitHub Container](https://github.com/astral-sh/uv/pkgs/container/uv)
8181
page.
@@ -113,7 +113,7 @@ Note this requires `curl` to be available.
113113
In either case, it is best practice to pin to a specific uv version, e.g., with:
114114

115115
```dockerfile
116-
COPY --from=ghcr.io/astral-sh/uv:0.7.11 /uv /uvx /bin/
116+
COPY --from=ghcr.io/astral-sh/uv:0.7.12 /uv /uvx /bin/
117117
```
118118

119119
!!! tip
@@ -131,7 +131,7 @@ COPY --from=ghcr.io/astral-sh/uv:0.7.11 /uv /uvx /bin/
131131
Or, with the installer:
132132

133133
```dockerfile
134-
ADD https://astral.sh/uv/0.7.11/install.sh /uv-installer.sh
134+
ADD https://astral.sh/uv/0.7.12/install.sh /uv-installer.sh
135135
```
136136

137137
### Installing a project
@@ -557,5 +557,5 @@ Verified OK
557557
!!! tip
558558

559559
These examples use `latest`, but best practice is to verify the attestation for a specific
560-
version tag, e.g., `ghcr.io/astral-sh/uv:0.7.11`, or (even better) the specific image digest,
560+
version tag, e.g., `ghcr.io/astral-sh/uv:0.7.12`, or (even better) the specific image digest,
561561
such as `ghcr.io/astral-sh/uv:0.5.27@sha256:5adf09a5a526f380237408032a9308000d14d5947eafa687ad6c6a2476787b4f`.

0 commit comments

Comments
 (0)