Migrate to uv for dependency management#138
Conversation
Breaking changes for contributors (not end users): - Require uv for development (Python 3.8+) - Remove Makefiles in favor of uv commands - Add uv.lock for reproducible builds Changes: - Replace setuptools with hatchling + hatch-vcs - Generate uv.lock with conservative pinning (146 packages) - Update all CI workflows to use uv - Hybrid Python 3.7 testing (pip) + 3.8-3.14 (uv) - Replace twine with uv publish - Update contributor documentation - Remove root and docs-source Makefiles - Add generated docs artifacts to .gitignore End users unaffected - package remains pip-installable. Validation: - All 260 tests passing - Pylint score: 10.00/10 - Package builds and installs successfully See docs/superpowers/specs/2026-05-20-uv-migration-design.md Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
- Add blank line before list in ADVANCED.md - Add blank lines around code fences in CONTRIBUTING.md
Coverage Report for CI Build 26155601823Warning No base build found for commit Coverage: 74.613%Details
Uncovered ChangesNo uncovered changes found. Coverage RegressionsRequires a base build to compare against. How to fix this → Coverage Stats
💛 - Coveralls |
There was a problem hiding this comment.
Pull request overview
Migrates the repository’s packaging, development workflows, and CI/publishing pipeline from a pip/setuptools-centric setup to uv, using hatchling + hatch-vcs for builds and VCS-based versioning.
Changes:
- Switched build backend from
setuptools/setuptools_scmtohatchlingwithhatch-vcsversion generation. - Replaced Makefile-driven dev/docs commands and CI install/build steps with
uv sync,uv run,uv build, anduv publish. - Updated contributor and advanced documentation to reflect
uv-based workflows and removed legacy Makefiles.
Reviewed changes
Copilot reviewed 8 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
pyproject.toml |
Moves build system to hatchling/hatch-vcs and removes twine/setuptools_scm config. |
Makefile |
Removed legacy developer task runner in favor of uv commands. |
docs-source/Makefile |
Removed Sphinx Makefile; docs are built via direct sphinx-* commands under uv run. |
CONTRIBUTING.md |
Adds uv-based development setup and replaces Makefile-based instructions. |
ADVANCED.md |
Updates manual install guidance and separates end-user vs contributor paths. |
.gitignore |
Ignores .venv and generated Sphinx/docs artifacts. |
.github/workflows/test-build.yaml |
Updates CI to use uv for sync/run/build and hybrid handling for legacy Python. |
.github/workflows/publish-documentation.yaml |
Switches docs build steps to uv and runs Sphinx commands via uv run. |
.github/workflows/publish-distribution.yaml |
Switches packaging workflow to uv sync, uv build, and uv publish. |
Comments suppressed due to low confidence (1)
.github/workflows/test-build.yaml:117
- The documentation build outputs HTML to
docs-source/_build/html(per thesphinx-buildcommand), but the artifact upload path is set todocs/build/html/, which will likely upload nothing. Update the upload path to match the actual output directory.
uses: actions/upload-artifact@v4
with:
name: html-docs
path: docs/build/html/
retention-days: 5
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| [build-system] | ||
| requires = ["setuptools>=61.0", "setuptools_scm>=7.0.1"] | ||
| build-backend = "setuptools.build_meta" | ||
| requires = ["hatchling", "hatch-vcs"] | ||
| build-backend = "hatchling.build" |
| ## Development Setup | ||
|
|
||
| ### Prerequisites | ||
|
|
||
| - Python 3.8+ (required for development tooling) |
| - name: Install Python dependencies (Python 3.7 only) | ||
| if: matrix.python-version == '3.7' | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| pip install build | ||
| - name: Install test dependencies | ||
| run: | | ||
| pip install .[test] | ||
| - name: Install dependencies (Python 3.8+) | ||
| if: matrix.python-version != '3.7' | ||
| run: | | ||
| pip install uv | ||
| uv sync --extra test |
Summary
Migrates the project from pip to uv for all dependency management, builds, and publishing.
Changes
Breaking Changes for Contributors
pip install uv)End User Impact
None - package remains fully pip-installable from PyPI.
Testing
uv run pytest- All 260 tests passinguv buildRelated