Migrate project from Poetry to UV - #834
Merged
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #834 +/- ##
=======================================
Coverage 96.13% 96.13%
=======================================
Files 55 55
Lines 2430 2430
Branches 137 137
=======================================
Hits 2336 2336
Misses 57 57
Partials 37 37 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved moderate findings remain in project metadata, documentation, CI, and direnv integration.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Migrates project packaging, dependency management, CI, and contributor workflows from Poetry to uv.
Changes:
- Replaces Poetry configuration with uv dependency groups and
uv_build. - Updates tox, pre-commit, CI, and contributor documentation.
- Removes Poetry-specific direnv integration.
File summaries
| File | Changes and review notes |
|---|---|
tox.ini |
Uses the uv-managed development dependency group for mypy. No final findings. |
pyproject.toml |
Defines uv groups and build backend. Moderate: retain the MIT classifier and correct the Python-version markers, then regenerate uv.lock. |
CONTRIBUTING.md |
Updates development and release commands. Moderate: use uv run --group build for the Twine command. |
.pre-commit-config.yaml |
Adds uv lock validation. No final findings. |
.gitignore |
Removes obsolete Poetry-related commentary. No final findings. |
.github/workflows/main.yml |
Migrates build and test jobs to uv. Moderate: use --only-group build and --locked; nit: enable uv caching. |
.envrc |
Removes Poetry-specific activation. Moderate: activate the uv-managed .venv or document the breaking change. |
Review details
Suppressed comments (6)
.envrc:1
- Deleting this tracked
.envrcremoves the repository's direnv integration, so users who relied on entering the project to activate the Poetry environment will no longer get any virtualenv. The uv migration should replace the Poetry lookup/source with activation of the uv-managed.venv(or explicitly document this breaking change), rather than silently dropping the workflow.
.github/workflows/main.yml:21 - Because
[tool.uv]setsdefault-groups = "all",--group buildadds the build group to the dev group instead of selecting build dependencies only. The build job therefore now resolves and installs the documentation tooling that the oldpoetry install --only builddeliberately excluded; use--only-group buildhere.
run: uv run --group build twine check --strict dist/*
.github/workflows/main.yml:78
uv syncupdates the lockfile when the project metadata anduv.lockdiverge, so this CI step can silently resolve a new dependency set instead of failing on a stale lock. Since the lock is committed and checked by pre-commit, make CI enforce it with--locked.
run: uv sync --only-group dev
.github/workflows/main.yml:70
- The previous workflow cached each Poetry virtualenv, but this migration removes that cache and leaves
setup-uvwith its cache disabled. Every Python matrix job will therefore redownload the full dependency set; enable the uv cache here to retain equivalent CI reuse.
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
pyproject.toml:16
- This migration removes the existing
License :: OSI Approved :: MIT LicenseTrove classifier. The separatelicense = "MIT"field does not preserve that classifier in package metadata, so PyPI classifier consumers lose existing license metadata; keep the classifier.
"Operating System :: POSIX",
pyproject.toml:61
python_full_versionincludes the prerelease segment, so the3.15-devmatrix interpreter (for example,3.15.0a1) still satisfies< '3.15'. This makes CI installsphinx-autobuildand itswatchfilesdependency on the prerelease interpreter, contrary to the stated compatibility rationale and potentially causing the job to fail; usepython_version < '3.15'for both groups and regenerateuv.lock.
"sphinx ; python_full_version < '3.15'",
"sphinx-autobuild ; python_full_version < '3.15'",
- Files reviewed: 6/9 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
youtux
force-pushed
the
switch-to-uv
branch
from
September 14, 2026 23:18
d9b482c to
f120acf
Compare
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.
No description provided.