You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- 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
+
6
33
## 0.7.11
7
34
8
35
### Python
@@ -284,11 +311,11 @@ This release contains various changes that improve correctness and user experien
284
311
### Breaking changes
285
312
286
313
-**Update `uv version` to display and update project versions ([#12349](https://github.com/astral-sh/uv/pull/12349))**
287
-
314
+
288
315
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
+
290
317
Here's a brief example:
291
-
318
+
292
319
```console
293
320
$ uv init example
294
321
Initialized project `example` at `./example`
@@ -300,72 +327,72 @@ This release contains various changes that improve correctness and user experien
300
327
$ uv version --short
301
328
1.0.0
302
329
```
303
-
330
+
304
331
If used outside of a project, uv will fallback to showing its own version still:
305
-
332
+
306
333
```console
307
334
$ uv version
308
335
warning: failed to read project: No `pyproject.toml` found in current directory or any parent directory
309
336
running `uv self version` for compatibility with old `uv version` command.
310
337
this fallback will be removed soon, pass `--preview` to make this an error.
311
-
338
+
312
339
uv 0.7.0 (4433f41c9 2025-04-29)
313
340
```
314
-
341
+
315
342
As described in the warning, `--preview` can be used to error instead:
316
-
343
+
317
344
```console
318
345
$ uv version --preview
319
346
error: No `pyproject.toml` found in current directory or any parent directory
320
347
```
321
-
348
+
322
349
The previous functionality of `uv version` was moved to `uv self version`.
323
350
-**Avoid fallback to subsequent indexes on authentication failure ([#12805](https://github.com/astral-sh/uv/pull/12805))**
324
-
351
+
325
352
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
+
327
354
```toml
328
355
[[tool.uv.index]]
329
356
name = "pytorch"
330
357
url = "https://download.pytorch.org/whl/cpu"
331
358
ignore-error-codes = [401, 403]
332
359
```
333
-
360
+
334
361
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.
335
362
-**Require the command in `uvx <name>` to be available in the Python environment ([#11603](https://github.com/astral-sh/uv/pull/11603))**
336
-
363
+
337
364
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.
338
365
-**Use index URL instead of package URL for keyring credential lookups ([#12651](https://github.com/astral-sh/uv/pull/12651))**
339
-
366
+
340
367
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`.
341
368
-**Remove `--version` from subcommands ([#13108](https://github.com/astral-sh/uv/pull/13108))**
342
-
369
+
343
370
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`.
344
371
-**Omit Python 3.7 downloads from managed versions ([#13022](https://github.com/astral-sh/uv/pull/13022))**
345
-
372
+
346
373
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.
347
374
-**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
+
349
376
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`.
350
377
-**Ignore arbitrary Python requests in version files ([#12909](https://github.com/astral-sh/uv/pull/12909))**
351
-
378
+
352
379
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.
353
380
-**Error on unknown dependency object specifiers ([12811](https://github.com/astral-sh/uv/pull/12811))**
354
-
381
+
355
382
The `[dependency-groups]` entries can include "object specifiers", e.g. `set-phasers-to = ...` in:
356
-
383
+
357
384
```toml
358
385
[dependency-groups]
359
386
foo = ["pyparsing"]
360
387
bar = [{set-phasers-to = "stun"}]
361
388
```
362
-
389
+
363
390
However, the only current spec-compliant object specifier is `include-group`. Previously, uv would ignore unknown object specifiers. Now, uv will error.
364
391
-**Make `--frozen` and `--no-sources` conflicting options ([#12671](https://github.com/astral-sh/uv/pull/12671))**
365
-
392
+
366
393
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.
367
394
-**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
+
369
396
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.
0 commit comments