Skip to content

Switch project tooling from Poetry to uv#36

Merged
tommyjcarpenter merged 2 commits into
mainfrom
switch-to-uv
Jun 5, 2026
Merged

Switch project tooling from Poetry to uv#36
tommyjcarpenter merged 2 commits into
mainfrom
switch-to-uv

Conversation

@tommyjcarpenter

Copy link
Copy Markdown
Owner

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.

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.
Copilot AI review requested due to automatic review settings June 5, 2026 10:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 to hatchling.
  • Introduce a committed uv.lock, remove poetry.lock / poetry.toml, and update CI workflows + Makefile targets to use uv.
  • 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.

Comment thread pyproject.toml
Comment thread tox.ini Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 5, 2026 10:39
@tommyjcarpenter tommyjcarpenter merged commit 4c63d8a into main Jun 5, 2026
6 checks passed
@tommyjcarpenter tommyjcarpenter deleted the switch-to-uv branch June 5, 2026 10:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 12 out of 14 changed files in this pull request and generated 4 comments.

Comment thread pyproject.toml
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants