An interactive TUI for updating dependencies in uv-managed Python projects.
Point it at a repo, pick what to update, and uvlift rewrites pyproject.toml and runs uv lock for you. If locking fails, it rolls back.
# run directly
uvx uvlift
# or install as a tool
uv tool install uvliftPrebuilt wheels for macOS arm64, Linux x86_64/arm64, and Windows x86_64. Other platforms build from source (requires a Rust toolchain).
uvliftRecursively finds all pyproject.toml files under the current directory. If there's only one project, it skips straight to the dependency list.
[project].dependencies[project.optional-dependencies][dependency-groups](PEP 735)
Dependencies in [tool.uv.sources] are skipped automatically.
==, ~=, and >= — single-clause only.
Multi-clause ranges (>=0.27,<1), unpinned deps, direct URLs, and source-managed deps are marked UNSUPPORTED and left untouched.
cargo build --release
cp target/release/uvlift ~/.local/bin/The repo uses maturin (bindings = "bin") to package the Rust binary into a Python wheel, which is what makes uvx uvlift work without a Rust toolchain.
# local smoke test
uvx --from . uvlift- Bump
versioninCargo.toml. - Commit the change.
- Create a tag like
v1.1.6on that commit. - Push
masterand the tag.
git push origin master v1.1.6Pushing the tag triggers the publish workflow, which verifies the version, builds wheels and sdist, uploads to PyPI, and creates a GitHub Release with the artifacts.
uvonPATH- A terminal with cursor-position query support