- Add PyPy finder (#5337)
- Add
uv init --virtual
(#5396) - Allow
uv init
in unmanaged projects (#5372) - Allow comments in
.python-version[s]
(#5350) - Always show lock updates in
uv lock
(#5413) - Improvements to the docs content (#5426)
- Fix blurring from nav title box shadow (#5374)
- Ignore Ctrl-C signals in
uv run
anduv tool run
(#5395) - Ignore hidden directories in workspace discovery (#5408)
- Increase padding between each nav section (#5373)
- Mark
--raw-sources
as conflicting with sources-specific arguments (#5378) - Omit empty uv.tool.dev-dependencies on
uv init
(#5406) - Omit interpreter path during
uv venv
with managed Python (#5311) - Omit interpreter path from output when using managed Python (#5313)
- Reject Git CLI arguments with non-Git sources (#5377)
- Retain dependency specifier in
uv add
with sources (#5370) - Show additions and removals in
uv lock
updates (#5410) - Skip 'Nothing to uninstall' message when removing dangling environments (#5382)
- Support
requirements.txt
files inuv tool install
anduv tool run
(#5362) - Use env variables in Github Actions docs (#5411)
- Use logo in documentation (#5421)
- Warn on
requirements.txt
-provided arguments inuv run
et al (#5364)
- Add
requires-python
touv init
(#5322) - Add
uv add --no-editable
(#5246) - Add constraint dependencies to pyproject.toml (#5248)
- Add support for requirements files in
uv run
(#4973) - Avoid redundant members update in
uv init
(#5321) - Create member
pyproject.toml
prior to workspace discovery (#5317) - Fix
uv init .
(#5330) - Fix
uv init
creation of a sub-package by path (#5247) - Fix colors in
uv tool run
suggestion (#5267) - Improve consistency of
tool
CLI (#5326) - Make tool install robust to malformed receipts (#5305)
- Reduce spacing between nav items (#5310)
- Respect exclusions in
uv init
(#5318) - Store resolution options in lockfile (#5264)
- Use backticks in project init message (#5302)
- Ignores workspace when
--isolated
flag is used inuv init
(#5290) - Normalize directory names in
uv init
(#5292) - Avoid project discovery in
uv python pin
if--isolated
is provided (#5354) - Show symbolic links in
uv python list
(#5343) - Discover workspace from target path in
uv init
(#5250) - Do not create nested workspace in
uv init
(#5293)
- Add
--frozen
touv add
,uv remove
, anduv tree
(#5214) - Add
--locked
and--frozen
touv run
CLI (#5196) - Add
uv tool dir --bin
to show executable directory (#5160) - Add
uv tool list --show-paths
to show install paths (#5164) - Add color to
python pin
CLI (#5215) - Added a way to inspect installation scripts on Powershell(Windows) (#5157)
- Avoid TOCTOU errors in
.python-version
reads (#5223) - Only show the Python installed on the system if
--python-preference only-system
is specified (#5219) - Check
python pin
compatibility withRequires-Python
(#4989) - Enforce hashes in lockfile install (#5170)
- Fix reference to
uv run
inuv tree
CLI (#5216) - Handle universal vs. fork markers with
ResolverMarkers
(#5099) - Implement
uv init
(#4791) - Make Python install robust to individual failures (#5199)
- Make registry hashes optional in the lockfile (#5166)
- Merge extras in lockfile (#5181)
- Move integration guide docs and edit Azure integration guide (#5117)
- Process completed Python installs and uninstalls as a stream (#5203)
- Skip invalid tools in
uv tool list
(#5156) - Touch-ups to tools guide (#5202)
- Use +- install output for Python versions (#5201)
- Use display representation for download error (#5173)
- Use specialized error message for invalid Python install / uninstall requests (#5171)
- Use the strongest hash in the lockfile (#5167)
- Write project guide (#5195)
- Write tools concept document (#5207)
- Fix reference to
projects.md
(#5154) - Fixes to the settings documentation (#5177)
- Set exact version specifiers when resolving from lockfile (#5193)
- Indicate that
uv lock --upgrade
has updated the lock file (#5110) - Sort managed Python installations by version (#5140)
- Support workspace to workspace path dependencies (#4833)
- Allow conflicting locals when forking (#5104)
- Rework
pyproject.toml
reformatting to respect original indentation (#5075)
- Add stubs for the project documentation (#5135)
- Add
settings.md
to docs (#5091) - Add contributor documentation for the docs (#5108)
- Add reference documentation for global settings (#5123)
- Add reference documentation for pip settings (#5125)
- Add reference documentation for resolver settings (#5122)
- Add uv to docs Pull Request titles (#5115)
- Auto-merge docs PRs on release (#5101)
- Autogenerate possible values for enums in reference documentation (#5137)
- Add documentation for running scripts (#4968)
- Add guide for tools (#4982)
- Allow URL dependencies in tool run
--from
(#5002) - Add guide for authenticating to Azure Artifacts (#4857)
- Improve rc file detection based on rustup (#5026)
- Rename
python install --force
parameter to--reinstall
(#4999) - Use lockfile to prefill resolver index (#4495)
uv tool install
hint the correct when the executable is available (#5019)uv tool run
error messages referencesuvx
when appropriate (#5014)uvx
warns when requested executable is not provided by the package #5071)- Exit with zero when
uv tool install
request is already satisfied (#4986) - Respect the libc of the execution environment with
uv python list
(#5036) - Update standalone Pythons to include 3.12.4 (#5042)
uv tool run
suggest valid commands when command is not found (#4997)- Add Windows path updates for
uv tool
(#5029) - Add a command to append uv's binary directory to PATH (#4975)
- Add Python installation guide (#4942)
- Add
uv python pin
(#4950) - Add command-separation for Python discovery display (#4916)
- Avoid debug error for
uv run
with unknown Python version (#4913) - Enable
--all
to uninstall all managed Pythons (#4932) - Enable
--all
to uninstall all managed tools (#4937) - Filter out markers based on Python requirement (#4912)
- Implement
uv tree
(#4708) - Improve 'any' search message during
uv python install
(#4940) - Lock for the duration of tool commands (#4720)
- Perform lock in
uv sync
by default (#4839) - Reinstall and recreate environments when interpreter is removed (#4935)
- Respect
--isolated
inuv python install
(#4938) - Respect resolver settings in
uv remove
(#4930) - Update "Python versions" documentation (#4943)
- Warn if tool binary directory is not on path (#4951)
- Avoid reparsing wheel URLs (#4947)
- Avoid serializing if lockfile does not change (#4945)
- Avoid creating cache directories in tool directory (#4868)
- Add progress bar when downloading python (#4840)
- Add some decoration to tool CLI (#4865)
- Add some text decoration to toolchain CLI (#4882)
- Add user-facing output to indicate PEP 723 script (#4881)
- Ensure Pythons are aligned in
uv python list
(#4884) - Fix always-plural message in uv python install (#4866)
- Skip installing
--with
requirements if present in base environment (#4879) - Sort dependencies before wheels and source distributions (#4897)
- Improve logging during resolver forking (#4894)
- Always use base interpreter for cached environments (#4805)
- Cache tool environments in
uv tool run
(#4784) - Check hash of downloaded python toolchain (#4806)
- Remove incompatible wheels from
uv.lock
(#4799) uv cache prune
removes all cached environments (#4845)- Add dedicated help menu for
uvx
(#4770) - Change "toolchain" to "python" (#4735)
- Create empty environment for
uv run --isolated
(#4849) - Deduplicate when install or uninstall python (#4841)
- Require at least one target for toolchain uninstalls (#4820)
- Resolve requirements prior to nuking tool environments (#4788)
- Tweak installation language in toolchain install (#4811)
- Use already-installed tools in
uv tool run
(#4750) - Use cached environments in PEP 723 execution (#4789)
- Use optimized versions of managed Python on Linux (#4775)
- Fill Python requests with platform information during automatic fetches (#4810)
- Remove installed python for force installation (#4807)
- Add tool version to list command (#4674)
- Add entrypoints to tool list (#4661)
- Replace tool environments on updated Python request (#4746)
- Remove dangling environments in
uv tool uninstall
(#4740) - Respect upgrades in
uv tool install
(#4736) - Add PEP 723 support to
uv run
(#4656) - Add
tool dir
andtoolchain dir
commands (#4695) - Omit
pythonX.Y
segment in stdlib path for managed toolchains on Windows (#4727) - Add
uv toolchain uninstall
(#4646) - Add
uvx
alias foruv tool run
(#4632) - Allow configuring the toolchain fetch strategy (#4601)
- Drop
prefer
prefix fromtoolchain-preference
values (#4602) - Enable projects to opt-out of workspace management (#4565)
- Fetch managed toolchains if necessary in
uv tool install
anduv tool run
(#4717) - Fix tool dist-info directory normalization (#4686)
- Lock the toolchains directory during toolchain operations (#4733)
- Log when we start solving a fork (#4684)
- Reinstall entrypoints with
--force
(#4697) - Respect data scripts in
uv tool install
(#4693) - Set fork solution as preference when resolving (#4662)
- Show dedicated message for tools with no entrypoints (#4694)
- Support unnamed requirements in
uv tool install
(#4716)
- Add
uv tool list
(#4630) - Add
uv tool uninstall
(#4641) - Add support for specifying
name@version
inuv tool run
(#4572) - Allow
uv add
to specify optional dependency groups (#4607) - Allow the package spec to be passed positionally in
uv tool install
(#4564) - Avoid infinite loop for cyclic installs (#4633)
- Indent wheels like dependencies in the lockfile (#4582)
- Sync all packages in a virtual workspace (#4636)
- Use inline table for dependencies in lockfile (#4581)
- Make
source
field in lock file more structured (#4627)
- Add
--extra
touv add
and enable fine-grained updates (#4566)
- Add
--package
argument touv add
anduv remove
(#4556) - Add
uv tool install
(#4492) - Fallback to interpreter discovery in
uv run
(#4549) - Make
uv.sources
without--preview
non-fatal (#4558) - Remove non-existent extras from lockfile (#4479)
- Support conflicting URL in separate forks (#4435)
- Automatically detect workspace packages in
uv add
(#4557) - Omit
distribution.sdist
from lockfile when it is redundant (#4528) - Remove
source
andversion
from lock file when unambiguous (#4513) - Allow
uv lock
to read overrides fromtool.uv
(#4108) (#4369)
- Expose
toolchain-preference
as a CLI and configuration file option (#4424) - Improve handling of command arguments in
uv run
anduv tool run
(#4404) - Add
tool.uv.sources
support foruv add
(#4406) - Use correct lock path for workspace dependencies (#4421)
- Filter out sibling dependencies in resolver forks (#4415)
- Add
--workspace
option touv add
(#4362) - Ignore query errors during
uv toolchain list
(#4382) - Respect
.python-version
files and fetch manged toolchains in uv project commands (#4361) - Respect
.python-version
inuv venv --preview
(#4360)
- Add
--force
option touv toolchain install
(#4313) - Add
--no-build
,--no-build-package
, and binary variants (#4322) - Add
EXTERNALLY-MANAGED
markers to managed toolchains (#4312) - Add
uv toolchain find
(#4206) - Add persistent configuration for non-
pip
APIs (#4294) - Add support for adding/removing development dependencies (#4327)
- Add support for listing system toolchains (#4172)
- Add support for toolchain requests by key (#4332)
- Allow multiple toolchains to be requested in
uv toolchain install
(#4334) - Fix relative and absolute path handling in lockfiles (#4266)
- Load configuration options from workspace root (#4295)
- Omit project name from workspace errors (#4299)
- Read Python version files during toolchain installs (#4335)
- Remove extraneous installations in
uv sync
by default (#4366) - Respect
requires-python
inuv lock
(#4282) - Respect workspace-wide
requires-python
in interpreter selection (#4298) - Support unnamed requirements in
uv add
(#4326) - Use portable slash paths in lockfile (#4324)
- Use registry URL for fetching source distributions from lockfile (#4280)
uv sync --no-clean
(#4367)- Filter dependencies by tracking markers on resolver forks (#4339)
- Use
Requires-Python
to filter dependencies during universal resolution (#4273)
- Add changelog for preview changes (#4251)
- Allow direct URLs for dev dependencies (#4233)
- Create temporary environments in dedicated cache bucket (#4223)
- Improve output when an older toolchain version is already installed (#4248)
- Initial implementation of
uv add
anduv remove
(#4193) - Refactor project interpreter request for
requires-python
specifiers (#4216) - Replace
toolchain fetch
withtoolchain install
(#4228) - Support locking relative paths (#4205)
- Warn when 'requires-python' does not include a lower bound (#4234)
- Add
uv toolchain install
(#4164) - Add
uv toolchain list
(#4163) - Add extra and dev dependency validation to lockfile (#4112)
- Add markers to edges rather than distributions (#4166)
- Cap
Requires-Python
comparisons at the patch version (#4150) - Do not create a virtual environment when locking (#4147)
- Don't panic with invalid wheel source (#4191)
- Fetch managed toolchains in
uv run
(#4143) - Fix PEP 508 link in preview doc
specifying_dependencies
(#4158) - Ignore tags in universal resolution (#4174)
- Implement
Toolchain::find_or_fetch
and use inuv venv --preview
(#4138) - Lock all packages in workspace (#4016)
- Recreate project environment if
--python
orrequires-python
doesn't match (#3945) - Respect
--find-links
inlock
andsync
(#4183) - Set
--dev
to default foruv run
anduv sync
(#4118) - Track
Markers
via a PubGrub package variant (#4123) - Use union of
requires-python
in workspace (#4041) - make universal resolver fork only when markers are disjoint (#4135)
- Add support for development dependencies (#4036)
- Avoid enforcing distribution ID uniqueness for extras (#4104)
- Ignore upper-bounds on
Requires-Python
(#4086)
- Default to current Python minor if
Requires-Python
is absent (#4070) - Enforce
Requires-Python
when syncing (#4068) - Track supported Python range in lockfile (#4065)
- Fix a bug where no warning is output when parsing of workspace settings fails. (#4014)
- Normalize extras in lockfile (#3958)
- Respect
Requires-Python
in universal resolution (#3998)
- Add
uv run --package
(#3864) - Add index URL parameters to Project CLI (#3984)
- Avoid re-adding solutions to forked state (#3967)
- Draft for user docs for workspaces (#3866)
- Include all extras when generating lockfile (#3912)
- Remove unstable uv lock from pip interface (#3970)
- Respect resolved Git SHAs in
uv lock
(#3956) - Use lockfile in
uv run
(#3894) - Use lockfile versions as resolution preferences (#3921)
- Use universal resolution in
uv lock
(#3969)
- Add context to failed
uv tool run
(#3882) - Add persistent storage of installed toolchains (#3797)
- Gate discovery of managed toolchains with preview (#3835)
- Initial workspace support (#3705)
- Move editable discovery behind
--preview
for now (#3884)
- Allow specification of additional requirements in
uv tool run
(#3678)
- Allow users to specify a custom source package to
uv tool run
(#3677)
- Add initial implementation of
uv tool run
(#3657) - Add offline support to
uv tool run
anduv run
(#3676) - Better error message for
uv run
failures (#3691) - Discover workspaces without using them in resolution (#3585)
- Support editables in
uv sync
(#3692) - Track editable requirements in lockfile (#3725)
- Add direct URL conversion to lockfile (#3633)
- Add hashes and versions to all distributions (#3589)
- Add local path conversions from lockfile (#3609)
- Add missing
"directory"
branch in source match (#3608) - Add registry file size to lockfile (#3652)
- Add registry source distribution support to lockfile (#3649)
- Refactor editables for supporting them in bluejay commands (#3639)
- Rename
sourcedist
tosdist
in lockfile (#3590) - Respect installed packages in
uv run
(#3603) - Support lossless serialization for Git dependencies in lockfile (#3630)
- Create virtualenv if it doesn't exist in project API (#3499)
- Discover
uv run
projects hierarchically (#3494) - Read and write
uv.lock
based on project root (#3497) - Read package name from
pyproject.toml
inuv run
(#3496) - Rebrand workspace API as project API (#3489)
- Use environment layering for
uv run --with
(#3447) - Warn when missing minimal bounds when using
tool.uv.sources
(#3452)
- Add basic
tool.uv.sources
support (#3263) - Improve non-git error message (#3403)
- Preserve given for
tool.uv.sources
paths (#3412) - Restore verbatim in error message (#3402)
- Use preview mode for tool.uv.sources (#3277)
- Use top-level
--isolated
foruv run
(#3431) - add basic "install from lock file" operation (#3340)
- uv-resolver: add initial version of universal lock file format (#3314)