0.7.0
Breaking Changes📦 uvView on GitHub →
⚠ 11 breaking✨ 5 features🐛 4 fixes🔧 16 symbols
Summary
This release introduces several breaking changes—most notably a new behavior for `uv version` and stricter validation for indexes and configuration—while adding useful enhancements such as a managed download cache and improved error hints.
⚠️ Breaking Changes
- uv version now displays or updates the project version instead of uv's own version; the previous behavior moved to uv self version. Use uv self version to get uv's version or pass --preview to error when outside a project.
- Authentication failures now stop index search; to retain previous fallback behavior configure index.ignore-error-codes with [401,403] in the relevant index configuration.
- uvx now requires the requested command to be provided by the Python package; it will error if not. Use --from to bypass this check or ensure the package supplies the executable.
- Keyring credential lookups now use the index URL instead of the full package URL; no action needed unless a custom keyring expects the full URL.
- The --version flag was removed from all subcommands; use uv --version instead.
- Python 3.7 downloads are no longer provided by uv's managed versions.
- Non‑PEP 751 TOML files are rejected in install, compile, and export commands; rename custom lockfiles to pylock.<name>.toml.
- Arbitrary string requests in .python-version files are ignored; ensure the file contains a valid Python version specifier.
- Unknown dependency object specifiers now cause an error; only include-group is allowed.
- --frozen and --no-sources are now conflicting options; avoid using them together.
- Empty UV_PYTHON_INSTALL_DIR and UV_TOOL_DIR are treated as unset; remove empty definitions.
Migration Steps
- If you relied on uv version to show uv's version, switch to uv self version or use --preview to enforce an error when outside a project.
- If you need the previous authentication fallback behavior, add ignore-error-codes = [401,403] to the relevant index configuration.
- Update any scripts that used uvx to invoke commands not provided by the package; ensure the package supplies the executable or use uvx --from.
- Replace any use of --version on subcommands with uv --version.
- Rename custom lockfiles that are not PEP 751 to pylock.<name>.toml.
- Remove empty definitions of UV_PYTHON_INSTALL_DIR and UV_TOOL_DIR from the environment or configuration.
- Avoid using unknown object specifiers in [dependency-groups]; only include-group is supported.
- Do not combine --frozen with --no-sources.
- If you were downloading Python 3.7 via uv, switch to an external installer.
✨ New Features
- Disallow mixing requirements across PyTorch indexes.
- Add optional managed Python archive download cache.
- Add poetry-core as a uv init build backend option.
- Show tag hints when failing to find a compatible wheel in pylock.toml.
- Report Python version mismatches in pyvenv.cfg.
🐛 Bug Fixes
- Avoid error on omitted wheel‑only packages in pylock.toml.
- Fix display name for uvx --version.
- Restore handling of authentication when encountering redirects.
- Respect build options (--no-binary etc.) in pylock.toml.
🔧 Affected Symbols
uv versionuv self versionuvxuvx --fromuv runuv installuv compileuv exportuv pip installuv pip compileindex.ignore-error-codesUV_PYTHON_INSTALL_DIRUV_TOOL_DIRdependency-groups object specifierspylock.tomlpylock.<name>.toml