Skip to content

Commit dc086e0

Browse files
authored
uv: prerelease if-necessary, matching python-commerce (#98)
## Summary Replaces `prerelease = "disallow"` with `prerelease = "if-necessary"`, matching python-commerce (agentscore/python-commerce#149). A blanket `disallow` also refuses packages that have never published a stable version, and uv then silently keeps an older version of whatever needs them; that held fastapi back in python-commerce and core's store and failed Dependabot outright. `if-necessary` admits a prerelease only where no stable release exists, and any package that reaches for a beta it does not need gets its own constraint (python-commerce pins `web3<8`; nothing in this tree needs one). This tree relocks with no changes and no prereleases. ## Type of change - [ ] Bug fix (no breaking change) - [ ] New feature (no breaking change) - [ ] Breaking change (existing callers must update) - [x] Docs, tests, or internal maintenance only ## Public API None. `[tool.uv]` is development-only, so no release. ## Test plan `uv lock --upgrade` reports no changes, no `a`/`b`/`rc` version in `uv.lock`, and `uv run pytest tests` passes (177 passed, 2 skipped). ## Checklist - [x] Tests cover the new behavior, and the suite passes locally - [x] Lint, format, and type checks pass - [x] Docs and README examples updated if the public surface changed (no public surface changed) - [x] No secrets, credentials, or personal data in the diff or the tests
1 parent c1bfdb9 commit dc086e0

2 files changed

Lines changed: 5 additions & 7 deletions

File tree

‎pyproject.toml‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ include = ["agentscore"]
6363
required-version = ">=0.11.0"
6464
# An unbounded transitive requirement lets a routine refresh resolve a BETA and
6565
# drag a subtree with it, and the tests pass either way, so nothing reports it.
66-
# That is how python-commerce once resolved web3 8.0.0b3 through three
67-
# unbounded parents. Blocking prereleases outright beats pinning whichever
68-
# package surfaced last, since the same shape exists on several transitives.
69-
prerelease = "disallow"
66+
# `if-necessary` admits a prerelease only for a package that has never shipped
67+
# a stable release; a package that reaches for a beta it does not need gets its
68+
# own constraint (python-commerce pins web3 below 8). A blanket `disallow` also
69+
# refuses the never-stable packages and silently holds back whatever needs them.
70+
prerelease = "if-necessary"

‎uv.lock‎

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)