Conversation
Summary of ChangesHello @halms, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request modernizes the Python package management within the system by renaming the Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request renames the pipx backend to uv, reflecting the shift in the Python ecosystem. This is a significant refactoring that touches numerous documentation files, configuration schemas, and the core backend logic. The changes are mostly correct, but I've identified a couple of logical issues in the new uv_tool backend implementation concerning the logic that decides whether to use uv tool or the pipx fallback. I have provided suggestions to correct this logic and ensure consistency with the documentation.
There was a problem hiding this comment.
Pull request overview
Renames the Python CLI-tools backend from pipx to uv (backed by uv tool), while keeping pipx: as a deprecated alias and migrating related settings/registry entries.
Changes:
- Introduce
uvas the primary backend identifier (aliasingpipx→uv) and update CLI/help/docs accordingly. - Add
uv.*settings + JSON schema support, and migrate legacypipx.*settings/flags to the new names. - Update built-in registry tool definitions to use
uv:instead ofpipx:.
Reviewed changes
Copilot reviewed 58 out of 58 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/config/settings.rs | Migrates disabled backends and legacy pipx settings to uv settings. |
| src/cli/upgrade.rs | Reinstalls Python CLI tools via the renamed backend after Python upgrades. |
| src/cli/search.rs | Treats uv (and legacy pipx) as PyPI-backed for URL generation. |
| src/cli/install.rs | Updates wildcard example to uv:*. |
| src/cli/edit.rs | Updates backend display label from pipx to uv. |
| src/cli/backends/ls.rs | Updates backend list output to show uv instead of pipx. |
| src/cli/args/backend_arg.rs | Emits deprecation warning for pipx: prefix usage. |
| src/backend/uv_tool.rs | Renames/repurposes backend implementation to UvToolBackend and adds legacy-option handling. |
| src/backend/mod.rs | Switches module export and backend factory wiring from pipx to uv_tool. |
| src/backend/backend_type.rs | Introduces UvTool backend type serialized as uv and pipx (deprecated). |
| settings.toml | Adds uv.* settings, deprecates pipx.* settings, updates docs/metadata. |
| schema/mise.json | Adds uv settings to JSON schema and marks pipx settings deprecated. |
| schema/mise-registry-tool.json | Allows uv: backend prefix in registry tool schemas (keeps pipx: too). |
| registry/yamllint.toml | Switch registry backend entry to uv:. |
| registry/xxh.toml | Switch registry backend entry to uv:. |
| registry/uv.toml | Switch registry backend entry to uv: for installing uv itself. |
| registry/sshuttle.toml | Switch registry backend entry to uv:. |
| registry/semgrep.toml | Switch registry backend entry to uv:. |
| registry/pre-commit.toml | Switch registry backend entry to uv:. |
| registry/poetry.toml | Switch registry backend entry to uv:. |
| registry/pipenv.toml | Switch registry backend entry to uv:. |
| registry/pdm.toml | Switch registry backend entry to uv:. |
| registry/mitmproxy.toml | Switch registry backend entry to uv:. |
| registry/meson.toml | Switch registry backend entry to uv:. |
| registry/jc.toml | Switch registry backend entry to uv:. |
| registry/hatch.toml | Switch registry backend entry to uv:. |
| registry/ggshield.toml | Switch registry backend entry to uv:. |
| registry/gallery-dl.toml | Switch registry backend entry to uv:. |
| registry/dvc.toml | Switch registry backend entry to uv:. |
| registry/copier.toml | Switch registry backend entry to uv:. |
| registry/cookiecutter.toml | Switch registry backend entry to uv:. |
| registry/conan.toml | Switch registry backend entry to uv:. |
| registry/cfn-lint.toml | Switch registry backend entry to uv:. |
| registry/azure.toml | Switch backend to uv: and rename legacy uvx_args to uv_tool_args. |
| registry/awsebcli.toml | Switch registry backend entry to uv:. |
| registry/awscli-local.toml | Switch registry backend entry to uv:. |
| registry/aws-sam.toml | Switch registry backend entry to uv:. |
| registry/ast-grep.toml | Switch registry backend entry to uv:. |
| registry/ansible.toml | Switch backend to uv: and update options to uv_tool_args. |
| registry/ansible-core.toml | Switch registry backend entry to uv:. |
| mise.usage.kdl | Updates CLI usage text to show uv backend in lists. |
| llms.txt | Updates contributor-facing docs references from pipx to uv. |
| docs/registry.md | Updates recommended backend list entry from pipx to uv. |
| docs/registry.data.ts | Adds uv → PyPI URL mapping. |
| docs/mise.usage.kdl | Updates docs usage snippet to list uv. |
| docs/glossary.md | Updates glossary entry from pipx to uv (formerly pipx). |
| docs/getting-started.md | Updates getting started examples and diagrams from pipx to uv. |
| docs/dev-tools/mise-lock.md | Updates backend capability list from pipx to uv. |
| docs/dev-tools/backends/uv.md | Adds new uv backend documentation page. |
| docs/dev-tools/backends/pipx.md | Replaces pipx doc with a pointer to the uv docs + deprecation note. |
| docs/dev-tools/backends/index.md | Updates backend index to reference uv instead of pipx. |
| docs/dev-tools/backend_architecture.md | Updates architecture docs from pipx to uv. |
| docs/contributing.md | Updates contributing guidance referencing language package managers. |
| docs/cli/backends/ls.md | Updates backend list doc output to show uv. |
| docs/asdf-legacy-plugins.md | Updates doc references from pipx to uv. |
| docs/architecture.md | Updates architecture overview from pipx to uv. |
| .agent-os/standards/mise-tech-stack.md | Updates tech stack reference from pipx to uv tool. |
| .agent-os/instructions/mise-product-guide.md | Updates product guide references from pipx to uv tool. |
Comments suppressed due to low confidence (3)
src/backend/uv_tool.rs:213
uv.pipxis defined as “use pipx instead of uv tool”, but this condition treatsuv.pipx == Some(true)as still allowing uv tool (!= Some(false)). This inverts the meaning of the setting; the check should disableuv toolwhenuv.pipxis true, not when it is false. Also, the legacyuvxoption previously useduvx=falseto disable uv, but this code disables uv whenuvx=trueinstead.
src/backend/uv_tool.rs:223- The warning suggests “set
uv_tool = falsefor this tool”, butinstall_version_never reads auv_tooloption to influence backend selection (it only checkspipxand legacyuvx). This makes the message inaccurate and the documented override ineffective; either implementuv_toolhandling (and mapuvx->uv_tool) or adjust the message to point users to the actually supported option.
src/backend/uv_tool.rs:294 resolve_lockfile_optionspersistsuv_tool(and maps legacyuvxto it), butinstall_version_does not consultuv_toolat all when deciding betweenuv toolandpipx. This means lockfiles (and user config) may not reproduce the intended installer choice. Consider usinguv_tool(and legacyuvx) consistently in the selection logic.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
64a8cda to
fd2af74
Compare
|
/gemini review |
There was a problem hiding this comment.
Code Review
This PR is a large refactoring to rename the pipx backend to uv, reflecting that uv is now the default tool used. The changes are extensive, touching documentation, configuration schemas, and core backend logic. The refactoring is well-executed, with consideration for backward compatibility by keeping the pipx: prefix working with a deprecation warning and handling legacy settings. I've found a couple of minor inconsistencies in the new uv_tool.rs backend implementation related to option naming and deprecation messages that should be addressed for clarity.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 60 out of 60 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (5)
src/backend/uv_tool.rs:223
- The error message mentions setting
uv_tool = false, but according to the documentation and the actual code logic (line 211), the correct option name ispipx = true(notuv_tool). This should be updated to say "(or set pipx = true for this tool)" to match the actual option name.
src/backend/uv_tool.rs:484 - The deprecation warning suggests using
uv_toolinstead ofuvx, but according to the documentation and the actual code logic (line 211), the correct option name ispipx. This should be updated to say "Optionuvxis deprecated; usepipxinstead." to match the actual option name.
src/backend/uv_tool.rs:313 - The option
uv_toolis listed in install_time_option_keys but is not actually used anywhere in the code. According to the documentation and implementation, the correct option name ispipx(notuv_tool). This entry should either be changed to "pipx".into() or removed ifpipxis already included elsewhere. Based on the implementation, it appears this should be "pipx".into().
src/backend/uv_tool.rs:62 - The comment refers to "Pipx" but this is now the UV tool backend. This should be updated to say "UV tool installs" or "This backend installs" to reflect the rename from pipx to uv.
src/backend/uv_tool.rs:300 - The function
warn_deprecated_uv_legacy_optionsis called both in the conditional logic here (lines 293, 299) and at the start ofinstall_version_(line 206). Ifresolve_lockfile_optionsis called during an installation flow, users might see duplicate deprecation warnings. Consider only calling the warning function once at the entry point (install_version_) to avoid duplicate warnings, or add a check to ensure the warning is only shown once per tool installation.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
42bb4ed to
4819748
Compare
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
4819748 to
907eb18
Compare
|
IMHO if there is no breaking change in that it's not a problem. And UV is mature enough today to be default. |
|
I think that pipx was the wrong name (pip would've been better), but I'm not sure that uv is the right one. I feel like it should reference the name of the registry, not the tool to install—so maybe pypi. It's worth considering that we may want to adopt pyx later and would want a good way to achieve that. |
|
Good point! So we'd go for About breaking changes: |
|
Standardise on the name of the source/registry instead of the name of the tool really sounds like a better approach |
|
yeah, I kind of think that "pypi:" vs "pyx:" would make a natural onramp and work similarly to gitlab:/github: which I think has been working well. It's a lot better than |
|
that said, please challenge me on this if you disagree—I am very much not a python dev |
|
seeing if charlie has any thoughts on the matter: https://x.com/jdxcode/status/2024533166547951618?s=20 |
No disagreement. There are some other backends, where this could open a naming discussion: |
|
actually cargo is a bad example, if we followed the same pattern it would be "crate:", but I feel like that'd be pretty unidiomatic and in rust it's hard to imagine a tool capable of competing with cargo |
|
well, the name of the site is crates.io, following the same approach gem would be rubygems |
|
I just figured this: The docs for the backend state
First, the But that aside, the backend not only supports So maybe stick with
|
WIP 🚧
After input from @jdx, I'll revisit this, probably rename
pipxtopypirather thanuv.Original note below:
This might be a bit controversial one, but I'll put it here to maybe have a discussion.
The
pipxbackend has defaulted to usinguv toolfor a while now anduvhas more or less become the default package manager for Python,So I thought why not rename the backend to
uv(while keepingpipxworking for now).