[PR #127] [MERGED] [build] Migrate from Poetry to uv #131

Closed
opened 2026-10-13 19:47:43 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Glitchy-Sheep/boosty-downloader/pull/127
Author: @Glitchy-Sheep
Created: 8/9/2026
Status: ✅ Merged
Merged: 8/9/2026
Merged by: @Glitchy-Sheep

Base: main ← Head: chore/migrate-poetry-to-uv


📝 Commits (2)

  • ff8e517 build: 📦 Migrate from Poetry to uv
  • 115a077 fix: 💚 Pin setup-uv to the exact v9.0.0 tag (no floating v9 exists)

📊 Changes

13 files changed (+1618 additions, -1885 deletions)

View changed files

📝 .github/actions/setup/action.yml (+9 -25)
📝 .github/renovate.json5 (+4 -2)
➕ .python-version (+1 -0)
📝 CONTRIBUTING.md (+1 -1)
📝 Taskfile.yml (+15 -16)
📝 boosty_downloader/src/cli/console_progress_reporter.py (+1 -1)
📝 docs/development/01-dev-tools.md (+46 -3)
📝 docs/development/02-testing.md (+2 -2)
📝 docs/development/03-ci.md (+1 -1)
➖ poetry.lock (+0 -1819)
📝 pyproject.toml (+21 -14)
📝 scripts/build_install.py (+1 -1)
➕ uv.lock (+1516 -0)

📄 Description

Summary

One binary now manages Python, the venv, the lockfile and builds. The published package is not affected - the wheel came out byte-identical.

Why now

  • Two env breakages in one day came from the old setup: a Homebrew Python upgrade killed the venv symlinks, and a stale VIRTUAL_ENV broke every task
  • uv removes both classes: it downloads its own standalone CPython (pinned in .python-version) and uv run needs no activation
  • Local dev ran Python 3.14 while CI tested 3.12 - now both run the same pinned 3.12

What changed

  • dev dependencies moved to PEP 735 [dependency-groups]; uv.lock replaces poetry.lock, version ranges untouched
  • build backend stays poetry-core - uv build drives it through PEP 517, so the packaging logic is unchanged
  • Taskfile and scripts call uv run / uv sync / uv build
  • CI setup action: astral-sh/setup-uv@v9 with its built-in cache keyed by uv.lock (drops snok/install-poetry and the manual venv cache)
  • Renovate: the dev-tools rule matches the dependency-groups depType of the pep621 manager; config passes renovate-config-validator
  • docs: uv install per OS, a command map for Poetry users, concepts and gotchas in 01-dev-tools.md

Verification

  • Wheel file list, METADATA, entry_points.txt and all code file hashes in RECORD match the pre-migration build; the only difference is the Generator: poetry-core 2.2.1 -> 2.4.1 line in WHEEL
  • Wheel and sdist install into a clean env via uvx and the CLI runs; the version matches pyproject.toml
  • rm -rf .venv && uv sync from scratch gives the same tool versions as the old lock: ruff 0.12.12, pyright 1.1.407, pytest 9.1.1
  • Full task ci green, including 6 live integration tests against the real Boosty API
  • Every doc instruction executed literally: app start, single-test run, uv add / uv remove round-trip

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Glitchy-Sheep/boosty-downloader/pull/127 **Author:** [@Glitchy-Sheep](https://github.com/Glitchy-Sheep) **Created:** 8/9/2026 **Status:** ✅ Merged **Merged:** 8/9/2026 **Merged by:** [@Glitchy-Sheep](https://github.com/Glitchy-Sheep) **Base:** `main` ← **Head:** `chore/migrate-poetry-to-uv` --- ### 📝 Commits (2) - [`ff8e517`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/ff8e51732d5982438633db96fecd7d114f658b96) build: :package: Migrate from Poetry to uv - [`115a077`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/115a07726622cc79059e0d0a137955999f30bfc9) fix: :green_heart: Pin setup-uv to the exact v9.0.0 tag (no floating v9 exists) ### 📊 Changes **13 files changed** (+1618 additions, -1885 deletions) <details> <summary>View changed files</summary> 📝 `.github/actions/setup/action.yml` (+9 -25) 📝 `.github/renovate.json5` (+4 -2) ➕ `.python-version` (+1 -0) 📝 `CONTRIBUTING.md` (+1 -1) 📝 `Taskfile.yml` (+15 -16) 📝 `boosty_downloader/src/cli/console_progress_reporter.py` (+1 -1) 📝 `docs/development/01-dev-tools.md` (+46 -3) 📝 `docs/development/02-testing.md` (+2 -2) 📝 `docs/development/03-ci.md` (+1 -1) ➖ `poetry.lock` (+0 -1819) 📝 `pyproject.toml` (+21 -14) 📝 `scripts/build_install.py` (+1 -1) ➕ `uv.lock` (+1516 -0) </details> ### 📄 Description ## Summary One binary now manages Python, the venv, the lockfile and builds. The published package is not affected - the wheel came out byte-identical. ## Why now - Two env breakages in one day came from the old setup: a Homebrew Python upgrade killed the venv symlinks, and a stale `VIRTUAL_ENV` broke every task - uv removes both classes: it downloads its own standalone CPython (pinned in `.python-version`) and `uv run` needs no activation - Local dev ran Python 3.14 while CI tested 3.12 - now both run the same pinned 3.12 ## What changed - dev dependencies moved to PEP 735 `[dependency-groups]`; `uv.lock` replaces `poetry.lock`, version ranges untouched - build backend stays `poetry-core` - `uv build` drives it through PEP 517, so the packaging logic is unchanged - Taskfile and scripts call `uv run` / `uv sync` / `uv build` - CI setup action: `astral-sh/setup-uv@v9` with its built-in cache keyed by `uv.lock` (drops `snok/install-poetry` and the manual venv cache) - Renovate: the dev-tools rule matches the `dependency-groups` depType of the pep621 manager; config passes `renovate-config-validator` - docs: uv install per OS, a command map for Poetry users, concepts and gotchas in `01-dev-tools.md` ## Verification - Wheel file list, `METADATA`, `entry_points.txt` and all code file hashes in `RECORD` match the pre-migration build; the only difference is the `Generator: poetry-core 2.2.1 -> 2.4.1` line in `WHEEL` - Wheel and sdist install into a clean env via `uvx` and the CLI runs; the version matches `pyproject.toml` - `rm -rf .venv && uv sync` from scratch gives the same tool versions as the old lock: ruff 0.12.12, pyright 1.1.407, pytest 9.1.1 - Full `task ci` green, including 6 live integration tests against the real Boosty API - Every doc instruction executed literally: app start, single-test run, `uv add` / `uv remove` round-trip --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-13 19:47:43 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Glitchy-Sheep/boosty-downloader#131
No description provided.