Skip to content

Block prereleases, refresh the lock - #79

Merged
vvillait88 merged 1 commit into
mainfrom
deps/prerelease-guard-and-refresh
Aug 21, 2026
Merged

Block prereleases, refresh the lock#79
vvillait88 merged 1 commit into
mainfrom
deps/prerelease-guard-and-refresh

Conversation

@vvillait88

Copy link
Copy Markdown
Contributor

Summary

Adds prerelease = "disallow" under [tool.uv] and refreshes the lock (lefthook 2.1.11).

python-commerce has carried this guard since the sweep that added it; the rest of the fleet did not, which is backwards. The registry entry behind it says to check the whole fleet rather than the repo in front of you, because what it guards against is an unbounded transitive requirement rather than a particular package: an unbounded requirement lets a routine refresh resolve a beta and drag a subtree with it, and the suite passes either way, so nothing reports it. That is how python-commerce once resolved web3 8.0.0b3 through three unbounded parents.

Every uv.lock in the workspace was swept for a/b/rc versions before writing this, enumerated with find rather than from memory since core holds three Python projects the JS tooling cannot see. All five are clean today, so this is a guard against the next refresh, not a fix for a live problem. The same guard is going into core's three projects in that repo's own PR.

Type of change

  • Docs, tests, or internal maintenance only

Public API

None. No exported symbol, signature, or wire format changed.

No version bump, deliberately. The runbook releases only where a consumer must act, and a lockfile plus a resolver setting reaches nobody: the published wheel ships neither.

Test plan

Full gate set locally: ruff check, ruff format --check, ty check, vulture (run the way CI runs it, with the whitelist argument), and pytest (183 passed, 8 skipped, 100% coverage against a 95% floor). Exit codes read directly rather than off the tail of a pipe.

Checklist

  • Tests cover the new behavior, and the suite passes locally
  • Lint, format, and type checks pass
  • Docs and README examples updated if the public surface changed (the public surface did not change)
  • No secrets, credentials, or personal data in the diff or the tests

python-commerce carries prerelease = "disallow" and the rest of the fleet did
not, which is backwards: the registry entry that added it says to check the
whole fleet rather than the repo in front of you, because the shape it guards
against is an unbounded transitive requirement, not a particular package.

An unbounded requirement lets a routine refresh resolve a beta and drag a
subtree with it, and the suite passes either way, so nothing reports it. That is
how python-commerce once resolved web3 8.0.0b3 through three unbounded parents.

Every uv.lock in the workspace was swept for a/b/rc versions first: all five are
clean today, so this is a guard against the next refresh rather than a fix.

Lock refresh takes lefthook 2.1.11. No version bump: the changes are dev-only
and reach no consumer.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@vvillait88
vvillait88 merged commit 9e0aaea into main Aug 21, 2026
7 checks passed
@vvillait88
vvillait88 deleted the deps/prerelease-guard-and-refresh branch August 21, 2026 16:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant