-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Add uv sync --check
flag
#12342
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add uv sync --check
flag
#12342
Conversation
// Running `uv sync --check` should fail. | ||
uv_snapshot!(context.filters(), context.sync().arg("--check"), @r###" | ||
success: false | ||
exit_code: 2 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this be exit code 2 or 1? I think we probably should use 1.
crates/uv/tests/it/sync.rs
Outdated
Would download 1 package | ||
Would install 1 package | ||
+ iniconfig==2.0.0 | ||
error: The environment is out of sync and requires updates. Run `uv sync` to install or update packages. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we don't want error:
here, modeling after Ruff
❯ uvx ruff format --check
Installed 1 package in 2ms
51 files already formatted
❯ echo "import bar" > test.py
❯ uvx ruff format --check
Would reformat: test.py
1 file would be reformatted, 51 files already formatted
❯ echo $?
1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
uv sync --locked
already uses error: (exit code 2). Should we change both, or is it too risky due to potential breakage for users relying on the --locked
exit code?
❯ uv sync --locked
Resolved 14 packages in 4ms
error: The lockfile at `uv.lock` needs to be updated, but `--locked` was provided. To update the lockfile, run `uv lock`.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm.. I'm not sure.
I think of the difference as: --check
is asking uv to "check if my sync would do anything" whereas the other is asking uv to "sync but fail if the lockfile is outdated". In the first, it's not an error if sync would do something — that's the intent of the invocation. Whereas in the second, it's a failure to sync?
Unfortunately uv lock --check
destroys my carefully constructed logic:
❯ uv lock --check
Using CPython 3.13.0
Resolved 4 packages in 86ms
error: The lockfile at `uv.lock` needs to be updated, but `--locked` was provided. To update the lockfile, run `uv lock`.
❯ echo $?
2
I'd honestly be partial to changing that one specifically (in a separate PR), I think it's wrong. I think it's probably breaking to change though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I could be convinced to keep what you have here and change them both together in a future release.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah makes sense, I'm okay with either option, lmk. Happy to make a follow up PR fixing that!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's stick with consistency to uv lock
for now and open an issue to track a broader change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah seems fine to ship this as-is and re-consider in a future release.
Co-authored-by: Zanie Blue <[email protected]>
If you're ever interested in some guidance on places we could use your help, feel free to reach out on Discord. Always appreciate your contributions. |
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.6.9` -> `0.6.10` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>astral-sh/uv (astral-sh/uv)</summary> ### [`v0.6.10`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0610) [Compare Source](astral-sh/uv@0.6.9...0.6.10) ##### Enhancements - Add `uv sync --check` flag ([#​12342](astral-sh/uv#12342)) - Add support for Python version requests in `uv python list` ([#​12375](astral-sh/uv#12375)) - Support `.env` files in `uv tool run` ([#​12386](astral-sh/uv#12386)) - Support `python find --script` ([#​11891](astral-sh/uv#11891)) ##### Preview features - Check all compatible torch indexes when `--torch-backend` is enabled ([#​12385](astral-sh/uv#12385)) ##### Performance - Use a boxed slice for extras and groups ([#​12391](astral-sh/uv#12391)) - Use small string for index name type ([#​12355](astral-sh/uv#12355)) ##### Bug fixes - Allow virtual packages with `--no-build` ([#​12314](astral-sh/uv#12314)) - Ignore `--find-links` entries for pinned indexes ([#​12396](astral-sh/uv#12396)) - Omit wheels from lockfile based on `--exclude-newer` ([#​12299](astral-sh/uv#12299)) - Retain end-of-line comment position when adding dependency ([#​12360](astral-sh/uv#12360)) - Omit fragment when querying for wheels in Simple HTML API ([#​12384](astral-sh/uv#12384)) - Error on missing argument in `requirements.txt` ([#​12354](astral-sh/uv#12354)) - Support modules with different casing in build backend ([#​12240](astral-sh/uv#12240)) - Add authentication policy support for `pip` commands ([#​12470](astral-sh/uv#12470)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMTMuNSIsInVwZGF0ZWRJblZlciI6IjM5LjIxMy41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
## 0.6.14 ### Python versions The following Python versions have been added: - CPython 3.13.3 - CPython 3.12.10 - CPython 3.11.12 - CPython 3.10.17 - CPython 3.9.22 See the [`python-build-standalone` release notes](https://github.com/astral-sh/python-build-standalone/releases/tag/20250409) for more details. ### Enhancements - Add `uv-build` and `uv_build` aliases to `uv init --build-backend` ([#12776](astral-sh/uv#12776)) - Emit dedicated error message for Conda `environment.yml` files ([#12669](astral-sh/uv#12669)) ### Preview features - Build backend: Check module dir exists for sdist build ([#12779](astral-sh/uv#12779)) - Build backend: Fix sdist with long directories ([#12764](astral-sh/uv#12764)) ### Performance - Avoid querying GitHub on repeated install invocations ([#12767](astral-sh/uv#12767)) ### Bug fixes - Error when `tool.uv.sources` is set in system-level configuration file ([#12757](astral-sh/uv#12757)) - Split workspace members onto their own lines in `uv init` ([#12756](astral-sh/uv#12756)) ### Documentation - Add lockfile note about PEP 751 ([#12732](astral-sh/uv#12732)) - Extend the reference documentation for `uv pip sync` ([#12683](astral-sh/uv#12683)) - Fix mismatched pip interface header / nav titles ([#12640](astral-sh/uv#12640)) ## 0.6.13 ### Enhancements - Add `--show-version` to `uv python find` ([#12376](astral-sh/uv#12376)) - Remove `--no-config` warning from `uv pip compile` and `uv pip sync` ([#12642](astral-sh/uv#12642)) - Skip repeated directories in `PATH` when searching for Python interpreters ([#12367](astral-sh/uv#12367)) - Unset `SCRIPT_PATH` in relocatable activation script ([#12672](astral-sh/uv#12672)) - Add `UV_PYTHON_DOWNLOADS_JSON_URL` to set custom managed python sources ([#10939](astral-sh/uv#10939)) - Reject `pyproject.toml` files in `uv pip compile -o` ([#12673](astral-sh/uv#12673)) - Respect the `--offline` flag for Git operations ([#12619](astral-sh/uv#12619)) ### Bug fixes - Warn instead of error if CRC appears to be missing ([#12722](astral-sh/uv#12722)) - Avoid infinite loop in `uv export` with conflicts ([#12726](astral-sh/uv#12726)) ### Rust API - Update MSRV to 1.84 ([#12670](astral-sh/uv#12670)) ## 0.6.12 ### Enhancements - Report the queried executable path in `uv python list` ([#12628](astral-sh/uv#12628)) - Improve archive unpack error messages ([#12627](astral-sh/uv#12627)) ### Bug fixes - Respect `authenticate` when using `explicit = true` ([#12631](astral-sh/uv#12631)) - Normalize extra and group names in `uv add` and `uv remove` ([#12586](astral-sh/uv#12586)) - Enforce CRC-32 checks when unpacking archives ([#12623](astral-sh/uv#12623)) - Fix parsing of `python-platform` in settings files ([#12592](astral-sh/uv#12592)) ### Documentation - Add note about `uv build` to `package = false` ([#12608](astral-sh/uv#12608)) - Add index fallback note to `authenticate = always` documentation ([#12498](astral-sh/uv#12498)) - Fix invalid 'kind' reference in flat index docs ([#12583](astral-sh/uv#12583)) ## 0.6.11 ### Enhancements - Add dependents ("via ..." comments) in `uv export` command ([#12350](astral-sh/uv#12350)) - Bump least-recent non-EOL macOS version to 13.0 ([#12518](astral-sh/uv#12518)) - Support `--find-links`-style "flat" indexes in `[[tool.uv.index]]` ([#12407](astral-sh/uv#12407)) - Distinguish between `-q` and `-qq` ([#12300](astral-sh/uv#12300)) ### Configuration - Support `UV_PROJECT` environment to set project directory. ([#12327](astral-sh/uv#12327)) ### Performance - Use a boxed slice for various requirement types ([#12514](astral-sh/uv#12514)) ### Bug fixes - Add a newline after metadata when initializing scripts with other metadata blocks ([#12501](astral-sh/uv#12501)) - Avoid writing empty `requires-python` to script blocks ([#12517](astral-sh/uv#12517)) - Respect build constraints in `uv sync` ([#12502](astral-sh/uv#12502)) - Respect transitive dependencies in `uv tree --only-group` ([#12560](astral-sh/uv#12560)) ## 0.6.10 ### Enhancements - Add `uv sync --check` flag ([#12342](astral-sh/uv#12342)) - Add support for Python version requests in `uv python list` ([#12375](astral-sh/uv#12375)) - Support `.env` files in `uv tool run` ([#12386](astral-sh/uv#12386)) - Support `python find --script` ([#11891](astral-sh/uv#11891)) ### Preview features - Check all compatible torch indexes when `--torch-backend` is enabled ([#12385](astral-sh/uv#12385)) ### Performance - Use a boxed slice for extras and groups ([#12391](astral-sh/uv#12391)) - Use small string for index name type ([#12355](astral-sh/uv#12355)) ### Bug fixes - Allow virtual packages with `--no-build` ([#12314](astral-sh/uv#12314)) - Ignore `--find-links` entries for pinned indexes ([#12396](astral-sh/uv#12396)) - Omit wheels from lockfile based on `--exclude-newer` ([#12299](astral-sh/uv#12299)) - Retain end-of-line comment position when adding dependency ([#12360](astral-sh/uv#12360)) - Omit fragment when querying for wheels in Simple HTML API ([#12384](astral-sh/uv#12384)) - Error on missing argument in `requirements.txt` ([#12354](astral-sh/uv#12354)) - Support modules with different casing in build backend ([#12240](astral-sh/uv#12240)) - Add authentication policy support for `pip` commands ([#12470](astral-sh/uv#12470)) ## 0.6.9 ### Enhancements - Use `keyring --mode creds` when `authenticate = "always"` ([#12316](astral-sh/uv#12316)) - Fail with specific error message when no password is present and `authenticate = "always"` ([#12313](astral-sh/uv#12313)) ### Bug fixes - Add boolish value parser for `UV_MANAGED_PYTHON` flags ([#12345](astral-sh/uv#12345)) - Make deserialization non-fatal when assessing source tree revisions ([#12319](astral-sh/uv#12319)) - Use resolver-returned wheel over alternate cached wheel ([#12301](astral-sh/uv#12301)) ### Documentation - Add experimental `--torch-backend` to the PyTorch guide ([#12317](astral-sh/uv#12317)) - Fix `#keyring-provider` references in alternative index docs ([#12315](astral-sh/uv#12315)) - Fix `--directory` path in examples ([#12165](astral-sh/uv#12165)) ### Preview changes - Automatically infer the PyTorch index via `--torch-backend=auto` ([#12070](astral-sh/uv#12070)) ## 0.6.8 ### Enhancements - Add support for enabling all groups by default with `default-groups = "all"` ([#12289](astral-sh/uv#12289)) - Add simpler `--managed-python` and `--no-managed-python` flags for toggling Python preferences ([#12246](astral-sh/uv#12246)) ### Performance - Avoid allocations for default cache keys ([#12063](astral-sh/uv#12063)) ### Bug fixes - Allow local version mismatches when validating lockfile ([#12285](astral-sh/uv#12285)) - Allow owned string when deserializing `requires-python` ([#12278](astral-sh/uv#12278)) - Make cache errors non-fatal in `Planner::build` ([#12281](astral-sh/uv#12281)) ## 0.6.7 ### Python - Add CPython 3.14.0a6 - Fix regression where extension modules would use wrong `CXX` compiler on Linux - Enable FTS3 enhanced query syntax for SQLite See the [`python-build-standalone` release notes](https://github.com/astral-sh/python-build-standalone/releases/tag/20250317) for more details. ### Enhancements - Add support for `-c` constraints in `uv add` ([#12209](astral-sh/uv#12209)) - Add support for `--global` default version in `uv python pin` ([#12115](astral-sh/uv#12115)) - Always reinstall local source trees passed to `uv pip install` ([#12176](astral-sh/uv#12176)) - Render token claims on publish permission error ([#12135](astral-sh/uv#12135)) - Add pip-compatible `--group` flag to `uv pip install` and `uv pip compile` ([#11686](astral-sh/uv#11686)) ### Preview features - Avoid creating duplicate directory entries in built wheels ([#12206](astral-sh/uv#12206)) - Allow overriding module names for editable builds ([#12137](astral-sh/uv#12137)) ### Performance - Avoid replicating core-metadata field on `File` struct ([#12159](astral-sh/uv#12159)) ### Bug fixes - Add `src` to default cache keys ([#12062](astral-sh/uv#12062)) - Discard insufficient fork markers ([#10682](astral-sh/uv#10682)) - Ensure `python pin --global` creates parent directories if missing ([#12180](astral-sh/uv#12180)) - Fix GraalPy abi tag parsing and discovery ([#12154](astral-sh/uv#12154)) - Remove extraneous script packages in `uv sync --script` ([#12158](astral-sh/uv#12158)) - Remove redundant `activate.bat` output ([#12160](astral-sh/uv#12160)) - Avoid subsequent index hint when no versions are available on the first index ([#9332](astral-sh/uv#9332)) - Error on lockfiles with incoherent wheel versions ([#12235](astral-sh/uv#12235)) ### Rust API - Update `BaseClientBuild` to accept custom proxies ([#12232](astral-sh/uv#12232)) ### Documentation - Make testpypi index explicit in example snippet ([#12148](astral-sh/uv#12148)) - Reverse and format the archived changelogs ([#12099](astral-sh/uv#12099)) - Use consistent commas around i.e. and e.g. ([#12157](astral-sh/uv#12157)) - Fix typos in MRE docs ([#12198](astral-sh/uv#12198)) - Fix double space typo ([#12171](astral-sh/uv#12171))
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ghcr.io/astral-sh/uv](https://github.com/astral-sh/uv) | final | minor | `0.5.7` -> `0.6.10` | --- ### Release Notes <details> <summary>astral-sh/uv (ghcr.io/astral-sh/uv)</summary> ### [`v0.6.10`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0610) [Compare Source](astral-sh/uv@0.6.9...0.6.10) ##### Enhancements - Add `uv sync --check` flag ([#​12342](astral-sh/uv#12342)) - Add support for Python version requests in `uv python list` ([#​12375](astral-sh/uv#12375)) - Support `.env` files in `uv tool run` ([#​12386](astral-sh/uv#12386)) - Support `python find --script` ([#​11891](astral-sh/uv#11891)) ##### Preview features - Check all compatible torch indexes when `--torch-backend` is enabled ([#​12385](astral-sh/uv#12385)) ##### Performance - Use a boxed slice for extras and groups ([#​12391](astral-sh/uv#12391)) - Use small string for index name type ([#​12355](astral-sh/uv#12355)) ##### Bug fixes - Allow virtual packages with `--no-build` ([#​12314](astral-sh/uv#12314)) - Ignore `--find-links` entries for pinned indexes ([#​12396](astral-sh/uv#12396)) - Omit wheels from lockfile based on `--exclude-newer` ([#​12299](astral-sh/uv#12299)) - Retain end-of-line comment position when adding dependency ([#​12360](astral-sh/uv#12360)) - Omit fragment when querying for wheels in Simple HTML API ([#​12384](astral-sh/uv#12384)) - Error on missing argument in `requirements.txt` ([#​12354](astral-sh/uv#12354)) - Support modules with different casing in build backend ([#​12240](astral-sh/uv#12240)) - Add authentication policy support for `pip` commands ([#​12470](astral-sh/uv#12470)) ### [`v0.6.9`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#069) [Compare Source](astral-sh/uv@0.6.8...0.6.9) ##### Enhancements - Use `keyring --mode creds` when `authenticate = "always"` ([#​12316](astral-sh/uv#12316)) - Fail with specific error message when no password is present and `authenticate = "always"` ([#​12313](astral-sh/uv#12313)) ##### Bug fixes - Add boolish value parser for `UV_MANAGED_PYTHON` flags ([#​12345](astral-sh/uv#12345)) - Make deserialization non-fatal when assessing source tree revisions ([#​12319](astral-sh/uv#12319)) - Use resolver-returned wheel over alternate c...
Summary
Closes #12338
Test Plan
cargo test