Skip to content

Switch from poetry to uv#29

Merged
dmitry-mukhin merged 2 commits into
mainfrom
chore/switch-to-uv
Feb 13, 2026
Merged

Switch from poetry to uv#29
dmitry-mukhin merged 2 commits into
mainfrom
chore/switch-to-uv

Conversation

@dmitry-mukhin

@dmitry-mukhin dmitry-mukhin commented Feb 13, 2026

Copy link
Copy Markdown
Member

Description

Checklist

Summary by CodeRabbit

  • Chores
    • Updated minimum Python version requirement to 3.12+
    • Migrated from Poetry to uv for dependency and environment management
    • Updated CI workflow and build configuration
  • Documentation
    • Updated installation and development instructions to reflect new tooling and Python version requirements
  • License
    • Updated copyright year to 2026

@coderabbitai

coderabbitai Bot commented Feb 13, 2026

Copy link
Copy Markdown

Walkthrough

The pull request migrates the project from Poetry to uv as its package manager across CI/build infrastructure and configuration files. Additionally, it updates the Python version requirement to 3.12, restructures pyproject.toml to use standard PEP 517 format, and updates the copyright year to 2026.

Changes

Cohort / File(s) Summary
CI/Build Infrastructure
.github/workflows/test.yml, Dockerfile, Makefile
Systematically replaces Poetry-based commands with uv equivalents. Updates CI workflow to use actions/checkout@v4 and astral-sh/setup-uv@v4. Docker image now copies uv.lock instead of poetry.lock and sets UV_SYSTEM_PYTHON=1. All tool invocations (format, lint) switch from poetry run to uv run.
Project Configuration
pyproject.toml
Restructures from Poetry-specific [tool.poetry] format to standard PEP 517 [project] table. Removes [tool.poetry.dependencies] and [tool.poetry.dev-dependencies]. Adds [dependency-groups] with dev tools. Authors field changes from string to structured table. Adds requires-python = ">=3.12.12,<4.0". Enhances [tool.black] and introduces [tool.isort] configurations.
Documentation
README.md
Updates installation and usage instructions to reference Python 3.12+, uv commands, and removes Poetry references. Replaces poetry install with uv sync --all-extras --no-install-project and poetry run commands with uv run equivalents.
License
LICENSE
Updates copyright year from 2021 to 2026.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Switch from poetry to uv' directly and clearly summarizes the main change across all modified files—replacing Poetry-based dependency management with uv throughout the project.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/switch-to-uv

Warning

Review ran into problems

🔥 Problems

Errors were encountered while retrieving linked issues.

Errors (1)
  • JIRA integration encountered authorization issues. Please disconnect and reconnect the integration in the CodeRabbit UI.

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pyproject.toml (1)

24-24: ⚠️ Potential issue | 🟡 Minor

Black target-version is inconsistent with requires-python.

target-version = ['py38'] targets Python 3.8, but requires-python specifies >=3.12.12. This should be updated to match the project's minimum Python version.

Proposed fix
-target-version = ['py38']
+target-version = ['py312']
🤖 Fix all issues with AI agents
In `@Dockerfile`:
- Around line 9-15: The Dockerfile currently copies only pyproject.toml and
uv.lock and runs "uv sync" but never copies the application source or the start
script, so ENTRYPOINT /app/start.sh will fail; update the Dockerfile to COPY the
application directory and start.sh into /app (e.g., ensure you add COPY app/
/app/ and COPY start.sh /app/start.sh or equivalent) before running uv sync and
before setting ENTRYPOINT, and ensure file permissions on start.sh are preserved
or set executable so ENTRYPOINT /app/start.sh can run.
- Line 5: The Dockerfile currently copies the uv binary from the image tag
"ghcr.io/astral-sh/uv:latest" which is mutable; update the COPY source to use a
specific pinned version tag (e.g., ghcr.io/astral-sh/uv:<stable-version>) so
builds are reproducible. Modify the COPY line (COPY
--from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv) to reference the
chosen fixed version tag and ensure any related build docs or CI variables are
updated to reflect the pinned uv version.

Comment thread Dockerfile
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*

RUN pip install --no-cache-dir --upgrade pip setuptools poetry
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

latest version of uv package manager

💡 Result:

The latest uv (Python package/project manager) release is v0.10.2, released Feb 10, 2026. [1], [2]


Pin the uv image version for reproducible builds.

Using :latest tag can lead to inconsistent builds over time. Pin to a specific stable version to ensure reproducibility across builds.

🤖 Prompt for AI Agents
In `@Dockerfile` at line 5, The Dockerfile currently copies the uv binary from the
image tag "ghcr.io/astral-sh/uv:latest" which is mutable; update the COPY source
to use a specific pinned version tag (e.g.,
ghcr.io/astral-sh/uv:<stable-version>) so builds are reproducible. Modify the
COPY line (COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv) to
reference the chosen fixed version tag and ensure any related build docs or CI
variables are updated to reflect the pinned uv version.

Comment thread Dockerfile Outdated
@dmitry-mukhin dmitry-mukhin merged commit 13412f2 into main Feb 13, 2026
1 of 4 checks passed
@dmitry-mukhin dmitry-mukhin deleted the chore/switch-to-uv branch February 13, 2026 15:19
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