Skip to content

🚚 Migrate from Poetry to uv#21

Open
ThatXliner wants to merge 4 commits into
feat/venv-improvements-loggingfrom
chore/migrate-poetry-to-uv
Open

🚚 Migrate from Poetry to uv#21
ThatXliner wants to merge 4 commits into
feat/venv-improvements-loggingfrom
chore/migrate-poetry-to-uv

Conversation

@ThatXliner

Copy link
Copy Markdown
Owner

Switches the project from Poetry to uv.

Note

Stacked on #20 — review/merge that first. Base will retarget to `main` once #20 lands.

Changes

  • build — `[tool.poetry]` → PEP 621 `[project]`; dev deps → `[dependency-groups]`; build backend → `uv_build` (flat layout via `module-root = ""`); `poetry.lock` → `uv.lock`.
  • ci — both workflows use `astral-sh/setup-uv` + `uv sync`/`uv run`/`uv build`; former poe tasks inlined.
  • docs — CONTRIBUTING + README badge point at uv.

Notes

  • Dependency bounds kept equivalent to the former caret constraints, so resolution stays reproducible.
  • Pinned `click>=8.1.7,<8.2`: idae imports `click.exceptions`, and typer 0.9 still ships `CliRunner(mix_stderr=...)` which click 8.2 removed.
  • `python = "^3.8"` → `requires-python = ">=3.8"` (no spurious upper bound for a library).

Verification

Clean-env `uv sync --frozen`: ruff + black + isort + mypy --strict clean; 20/20 tests; sdist + wheel build with `py.typed` and all modules, `idae` entrypoint works.

🤖 Generated with Claude Code

ThatXliner and others added 4 commits June 2, 2026 00:46
Poetry's lockfile and proprietary [tool.poetry] metadata tied the project
to a single tool. Move to standard PEP 621 metadata so any PEP 517 frontend
works, and adopt uv for fast, reproducible resolution.

Rewrite metadata under [project], move dev deps to [dependency-groups],
switch the build backend to uv_build (flat layout via module-root = ""),
and replace poetry.lock with uv.lock. Keep dependency bounds equivalent to
the former caret constraints; pin click below 8.2 since typer 0.9's
CliRunner(mix_stderr=...) was removed there. Read the version from the
[project] table in the version test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The workflows installed Poetry and Poe to drive tests, lints, and builds.

Replace them with astral-sh/setup-uv plus uv sync / uv run / uv build, and
inline the former poe tasks as direct uv run commands. The test matrix now
pins interpreters by writing .python-version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CONTRIBUTING and the README badge still told contributors to install Poetry
and Poe. Update the dev setup, format, and lint commands to uv run, and swap
the Poetry badge for the uv badge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The click<8.2 pin only existed so typer 0.9's CliRunner(mix_stderr=...) kept
working. typer 0.16 removed that parameter (click 8.2 separates stderr by
default) and bundles rich/shellingham without the [all] extra since 0.12.

Require typer>=0.16.0, drop the explicit click constraint and the [all]
extra, and call CliRunner() without mix_stderr in the tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant