Switch project tooling from Poetry to uv#36
Merged
Conversation
This swaps the project's packaging and dev tooling from Poetry to `uv` (already installed on all my machines). The package itself is unchanged; this is purely build/dev tooling plus the docs and CI that drive it.
Changes:
- `pyproject.toml`: rewritten from `[tool.poetry]` to PEP 621 `[project]`, with `[project.scripts]` for the `runboot` entry point, a PEP 735 `[dependency-groups]` `dev` group holding `ruff==0.15.12`, and a `hatchling` build backend. Version bumped to 1.3.1.
- Removed `poetry.lock` and `poetry.toml`; added a committed `uv.lock`. uv creates the in-project `.venv` by default, so the old `virtualenvs.in-project` pin in `poetry.toml` is no longer needed.
- `Makefile`: every target now runs through `uv run`/`uv sync`. `uv run` resolves the project venv on every platform, so the OS-specific `.venv/Scripts` vs `.venv/bin` interpreter-path detection is gone.
- `.github/workflows/{lint,test,schema}.yml`: converted from `setup-python` + `pip install` to `astral-sh/setup-uv@v5` + `uv sync` + `uv run`. The `poetry.lock` path filter in `test.yml` is now `uv.lock`.
- `README.md`: prerequisites now list `uv`; the Install/Running section uses `uv sync` then `uv run runboot --loctype ...`.
- Consistency: the "rust/cargo, go, poetry" toolchain example in `boot.py`, `utils.py`, and `schema.py` now says `uv`, and the stale Poetry comment in `tox.ini` is dropped.
- `Changelog.md`: 1.3.1 entry for the tooling switch.
Verified `make ci` (ruff clean, 18 tests pass, sample_config.json valid) and `uv run runboot --help` locally.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR migrates the project’s Python packaging / developer workflow from Poetry to uv, updating project metadata to PEP 621 and aligning local + CI commands around uv sync / uv run.
Changes:
- Replace Poetry-specific project metadata with PEP 621
[project], add[dependency-groups]for dev tooling, and switch build backend tohatchling. - Introduce a committed
uv.lock, removepoetry.lock/poetry.toml, and update CI workflows +Makefiletargets to useuv. - Update docs and in-code references mentioning Poetry to now reference
uv, and add a changelog entry for 1.3.1.
Reviewed changes
Copilot reviewed 12 out of 14 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
pyproject.toml |
Migrates to PEP 621 metadata, adds dependency groups, switches build backend to hatchling, bumps version. |
uv.lock |
Adds uv lockfile for reproducible installs/resolution. |
poetry.lock |
Removes Poetry lockfile now that uv.lock is the source of truth. |
poetry.toml |
Removes Poetry virtualenv config (uv uses in-project venv by default). |
Makefile |
Rewrites dev/test/lint/schema targets to run through uv sync / uv run. |
.github/workflows/lint.yml |
Uses setup-uv + uv sync + uv run ruff … instead of setup-python + pip install. |
.github/workflows/test.yml |
Uses setup-uv + uv sync + uv run python -m unittest …; updates path filters to uv.lock. |
.github/workflows/schema.yml |
Uses setup-uv + uv sync + uv run python … for schema validation. |
README.md |
Updates prerequisites and install/run instructions from Poetry to uv. |
tox.ini |
Removes stale Poetry-related comment (and adjusts comment text). |
Changelog.md |
Adds 1.3.1 entry documenting the tooling switch. |
bootstrap/boot.py |
Updates documentation text referencing Poetry to uv. |
bootstrap/utils.py |
Updates docstring referencing Poetry to uv. |
bootstrap/schema.py |
Updates schema description string referencing Poetry to uv. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Comment on lines
+7
to
+11
| requires-python = ">=3.10" | ||
| dependencies = [ | ||
| "click>=8.1.3", | ||
| "jsonschema>=4.14.0", | ||
| ] |
Comment on lines
+21
to
+22
| - name: Install deps | ||
| run: uv sync |
Comment on lines
+35
to
+36
| - name: Install deps | ||
| run: uv sync |
Comment on lines
+21
to
+22
| - name: Install deps | ||
| run: uv sync |
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.
This swaps the project's packaging and dev tooling from Poetry to
uv(already installed on all my machines). The package itself is unchanged; this is purely build/dev tooling plus the docs and CI that drive it.Changes:
pyproject.toml: rewritten from[tool.poetry]to PEP 621[project], with[project.scripts]for therunbootentry point, a PEP 735[dependency-groups]devgroup holdingruff==0.15.12, and ahatchlingbuild backend. Version bumped to 1.3.1.poetry.lockandpoetry.toml; added a committeduv.lock. uv creates the in-project.venvby default, so the oldvirtualenvs.in-projectpin inpoetry.tomlis no longer needed.Makefile: every target now runs throughuv run/uv sync.uv runresolves the project venv on every platform, so the OS-specific.venv/Scriptsvs.venv/bininterpreter-path detection is gone..github/workflows/{lint,test,schema}.yml: converted fromsetup-python+pip installtoastral-sh/setup-uv@v5+uv sync+uv run. Thepoetry.lockpath filter intest.ymlis nowuv.lock.README.md: prerequisites now listuv; the Install/Running section usesuv syncthenuv run runboot --loctype ....boot.py,utils.py, andschema.pynow saysuv, and the stale Poetry comment intox.iniis dropped.Changelog.md: 1.3.1 entry for the tooling switch.Verified
make ci(ruff clean, 18 tests pass, sample_config.json valid) anduv run runboot --helplocally.