GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing github.com — Fix uv restore ignoring lock file filters (#1604, #1613) by mikolalysenko · Pull Request #1614 · SocketDev/socket-patch Conversation
|
| Issue | Test | Covers |
|---|---|---|
| #1604 | uv_exclude_newer_package_refuses_only_its_package |
uv.lock and script-lock lanes. A cutoff on the package (alone, or beside idna = false) and exclude-newer-span refuse. A cutoff on another package, or urllib3 = false, round-trips byte for byte. |
| #1613 | pip_compile_pylock_build_filters_refuse_the_filtered_entry, plus unit tests settings_files_merge_key_by_key_with_pip_over_the_top_level and global_uv_settings_reads_the_user_then_first_system_file |
Header flags --no-build, --only-binary (name and =:all:), --no-binary (name, comma list, case), --exclude-newer and --exclude-newer-package refuse. uv.toml top level and [pip], and pyproject [tool.uv] / [tool.uv.pip], refuse. These round-trip: filters naming other packages, :none:, --no-build-isolation, =false, [pip] overriding the top level, uv.toml overriding pyproject, an unparsable pyproject, --no-config, and uv export pylocks. --config-file, a missing header, # make lock and # uv run poe lock headers refuse. The unit tests cover the user and system lookup (XDG, HOME, Windows, the empty-entry cut-off, UV_NO_CONFIG, invalid TOML) and the merge rules. |
uv.rs), both tests fail with the pinRestored instead of refused. With it, the wholeupstream_restore_golden suite passes (53/53).cargo fmt --all -- --check andcargo clippy --workspace --all-features -- -D warnings are clean.cargo test -p socket-patch-core --all-features: every integrationcopy_tree / vlt_heal / pypi_poetry / pypi_requirementscargo test -p socket-patch-cli --all-features: same root-onlyin_process_redirect ×3, repair ×2).missing_blob). None of these touch uv. CI iscargo test -p socket-patch-cli --all-features --test e2e_redirect_uv_build -- --ignoredcargo test --workspace didn't fit in the container's diskhttps://claude.ai/code/session_01FW66bMcoJmYGQykhbfuA8u
Generated by Claude Code
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Assisted-by: Claude Code:claude-opus-5-5
Hosted uv rollback and remove rebuilt a lock entry from every PyPI file of the release, even when the lock only kept some of them: a per-package exclude-newer-package cutoff (#1604) or a uv pip compile pylock built with --no-build, --only-binary, --no-binary or an exclude-newer cutoff (#1613). The restored lock then differed from what uv wrote. These restores are now refused, like the global exclude-newer already was. Assisted-by: Claude Code:claude-opus-5-5
Narrow the new refusals to the packages a filter actually reaches: an exclude-newer-package cutoff on another package, or a uv pip compile flag or uv setting naming another package, still restores the lock byte for byte. Document both refusals in CLI_CONTRACT.md. Assisted-by: Claude Code:claude-opus-5-5
Assisted-by: Claude Code:claude-opus-5-5
Follow how uv pip compile actually reads settings when deciding whether a pylock's files were filtered: [pip] wins over the top level, --no-config reads nothing, --config-file can't be checked and refuses, an unparsable pyproject is skipped, and a cutoff of false means no cutoff. This avoids refusing restores uv would have recorded in full. Assisted-by: Claude Code:claude-opus-5-5
|
BugBot review Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Stale Bugbot comment from a previous run.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
uv's pylock header keeps global options where they were typed, as in `uv --no-config pip compile ...` or `uv pip --quiet compile ...`. Such locks were not recognised as uv pip compile output, so their build filters went unchecked and a restore re-added filtered files. Assisted-by: Claude Code:claude-opus-5-5
|
BugBot review Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Stale Bugbot comment from a previous run.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Labeled Ready for review at head
Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
[agent] uv bug-hunt verification (ledger #310) of head Fixed by this PR (main
Gaps left (each reproduced on uv 0.11.32 and 0.13.1, once with
For 1 and 2, the safe option seems to be refusing a pip-compiled pylock whose command line isn't recorded, or one whose siblings show the filter. For 3, reading uv's user and system config the way uv does would cover it, or else document the gap. printf 'six==1.16.0\nattrs==24.2.0\n' > req.in uv pip compile -q req.in --no-build --no-header --format pylock.toml -o pylock.toml --python-version 3.11 # gap 1 # gap 2: UV_CUSTOM_COMPILE_COMMAND="make lock" uv pip compile -q req.in --only-binary six --format pylock.toml -o pylock.toml --python-version 3.11 # gap 3: XDG_CONFIG_HOME=$PWD/xdg with xdg/uv/uv.toml = '[pip]\nno-build = true', then a flagless compile cp pylock.toml orig.toml; uv venv -q && uv pip sync -q pylock.toml socket-patch scan --mode hosted --yes; socket-patch rollback pkg:pypi/[email protected] # exit 0 diff orig.toml pylock.toml # > sdist = { url = ".../six-1.16.0.tar.gz", … } Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
A uv pip compile pylock whose header is missing (--no-header) or was replaced by UV_CUSTOM_COMPILE_COMMAND does not record the flags that filtered its files, so restoring it now refuses. Pylock restores also read the user-level and system-level uv.toml, as uv pip compile does. Settings files merge the way uv merges them: lists add up and per-package cutoffs merge entry by entry. UV_NO_CONFIG skips the global files. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01FW66bMcoJmYGQykhbfuA8u
|
[agent] All three gaps from the ledger #310 verification are closed in 64e40c4:
The golden test and two new unit tests cover these cases. The golden suite (53/53) and Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
BugBot review Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Stale Bugbot comment from a previous run.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
A FIFO or device planted at a user- or system-level uv.toml path could block the restore. Read through read_regular_to_string, the helper the other host-config reads use, and skip a non-regular file the way uv does. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01FW66bMcoJmYGQykhbfuA8u
|
BugBot review Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Stale Bugbot comment from a previous run.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
On Windows, opening a directory fails with PermissionDenied rather than InvalidInput, so a directory at a user- or system-level uv.toml path refused the restore. Check that the path is a file first, as uv does, then read it through the FIFO-safe opener. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01FW66bMcoJmYGQykhbfuA8u
|
BugBot review Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Stale Bugbot comment from a previous run.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Still Ready for review, now at head
Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
[agent] uv bug-hunt re-verification (ledger #310) of head Closed by
A plain compile still restores byte-identically, so nothing is over-refused. Two gaps remain. Both reproduce twice on the PR, exit 0, and add
printf 'colorama==0.4.4\nsix==1.15.0\n' > req.in UV_EXCLUDE_NEWER=2020-10-14T00:00:00Z uv pip compile -q req.in --format pylock.toml -o pylock.toml --python-version 3.11 # uv 0.13.1 cp pylock.toml orig.toml; uv venv -q && uv pip sync -q pylock.toml socket-patch scan --mode hosted --yes; socket-patch rollback pkg:pypi/[email protected] # exit 0 diff orig.toml pylock.toml # > sdist = { url = ".../colorama-0.4.4.tar.gz", … } Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
uv 0.13.2 refuses the pylock Pipenv 2026.8.0 writes (environments = []) with "target environment is not supported by the lockfile". That failed e2e_vex_build pipenv:: in every merge-queue batch. This is the same pin #1639 adds: uv 0.13.1 in ci.yml and pipenv-compatibility.yml. It becomes a no-op once #1639 lands on main. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01FW66bMcoJmYGQykhbfuA8u
|
[agent] The merge queue dropped this PR because I ported #1639's change into this PR in 8b5c53a: The push resets the approval at 8805144, so this needs re-approval and a re-queue once CI is green. Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Wenxin Jiang (@Wenxin-Jiang) this changed after your approval (on Besides merges from main, the only new commit is 8b5c53a: the CI-only uv pin from #1639 ( If that's fine with you, re-approving Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
bugbot run Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Stale Bugbot comment from a previous run.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
In uv, an exclude-newer-package entry of false takes that package out of the global exclude-newer cutoff. uv 0.13.1 records all of its files then, and uv lock writes the false entry beside the global cutoff. Restores still refused such a package, wherever the global cutoff came from: the uv.lock options, uv pip compile's flags, uv settings, or UV_EXCLUDE_NEWER. They now restore it. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01FW66bMcoJmYGQykhbfuA8u
|
BugBot review Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit bc8597e. Configure here.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Wenxin Jiang (@Wenxin-Jiang) one more code change landed after your approval (on Besides merges from main and the CI-only uv pin (8b5c53a, explained above), the new commit is bc8597e "Let a false exclude-newer-package exempt its package" ( If that's fine with you, re-approving Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Burn-down agent: labeled Ready for review at
Slack announcement not sent: this run has no Slack send tool. Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Labeled Ready for review (burn-down agent).
Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
Hosted rollback / remove of auv pip compile --no-build / --only-binary / --no-binary pylock.toml re-adds the artifacts uv filtered out (uv 0.9.16+), so the restore isn't the original lock
Hosted uv rollback / remove ignore exclude-newer-package: on uv 0.12+ the restored uv.lock gains an sdist the per-package cutoff had excluded, so the restore isn't the original lock
There was an error while loading. Please reload this page.