Repository navigation
Migrate from poetry to uv with a 7-day dependency cooldown - #380
Merged
Merged
Conversation
Convert pyproject.toml to PEP 621 metadata with a hatchling build backend, replace poetry.lock with uv.lock (same resolved versions), and add a 7-day exclude-newer cooldown so uv only resolves package files that are at least a week old. CI, the devcontainer, docs, and install hints now use uv. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
setup-uv publishes no floating major tag, so `@v10` failed to resolve. Black now reads requires-python from [project] and targets 3.11+, which reformats one test into parenthesized context managers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Switches the project's package manager from poetry to uv, and adds a 7-day supply-chain cooldown for dependency resolution.
uv.lockwas seeded frompoetry.lock, so every package is at the same version poetry installed on Python < 3.14 (the versions CI uses). Upgrades can come in a separate PR withuv lock --upgrade.[tool.uv] exclude-newer = "7 days"makes uv only resolve package files uploaded at least a week ago. The lock records the span (exclude-newer-span = "P7D"), not a fixed date, souv sync --lockedstays valid from day to day.pyproject.tomlis now PEP 621. Caret constraints became explicit ranges with the same bounds. Extras moved to[project.optional-dependencies], the dev group to[dependency-groups], and scripts to[project.scripts].source-archiveentry point is unchanged. Small metadata differences:License-Expression: MITinstead of a license classifier.Requires-Pythonis>=3.11(the<4.0cap is dropped)..gitignore.CI
v10.3.0. The action publishes no floating major tag. This is the newest release that is at least 7 days old.astral-sh/setup-uvstep replaces the old poetry install. That removes the install, the sleep, the two retry steps and the.venvcache. The retry steps were added because the poetry installer sometimes failed. setup-uv downloads uv from GitHub releases and caches uv's package cache, keyed onuv.lock.python-version, which setsUV_PYTHON). This makes uv use that interpreter and never pick a different one.uv sync --locked --no-install-project, which matches the oldpoetry install --no-root. Unit tests add--all-extras. Commands run viauv run --no-sync.Other
requires-pythonfrom[project]and targets 3.11+, sotest_file_manipulation.pynow uses parenthesized context managers.postinstall.shnow installs uv instead of poetry and runsuv sync --all-extras.uv build+uv publish, and version bumps useuv version --bump patch.Testing
run_botscorrectly.uv buildoutput was diffed against apoetry buildof the previous commit: the wheel's package files are identical.uv run source-archive --helpworks.🤖 Generated with Claude Code