chore: migrate from PDM to uv for dependency management#15
chore: migrate from PDM to uv for dependency management#15
Conversation
- Replace pdm.lock with uv.lock, update pyproject.toml (dependency-groups) - Use uv in CI (setup-uv, uv sync, uv run) and Dockerfile - Update .gitignore for uv (.uv/) and remove PDM entries - Update README setup instructions Co-authored-by: Cursor <cursoragent@cursor.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
This is the final PR Bugbot will review for you during this billing cycle
Your free Bugbot reviews will reset on March 1
Details
You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
|
|
||
| WORKDIR /bill | ||
| RUN pdm install --check --prod --no-editable | ||
| RUN uv sync --no-dev --no-editable |
There was a problem hiding this comment.
Dockerfile missing --frozen flag for reproducible builds
Medium Severity
The uv sync command in the Dockerfile lacks a --frozen or --locked flag, replacing the safety check that PDM's --check flag provided. Without it, if uv.lock and pyproject.toml are out of sync, uv sync will silently re-resolve dependencies during the Docker build instead of failing, leading to non-reproducible production builds. The uv documentation recommends --frozen for Dockerfiles.
| RUN pip install -U pdm | ||
| ENV PDM_CHECK_UPDATE=false | ||
| COPY pyproject.toml pdm.lock /bill/ | ||
| COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv |
There was a problem hiding this comment.
Unpinned uv image tag reduces Docker build reproducibility
Low Severity
Using ghcr.io/astral-sh/uv:latest copies an unpinned version of uv into the build. A new uv release could change dependency resolution behavior or introduce breaking changes, causing unexpected build failures or different dependency installations across builds. The uv Docker guide recommends pinning to a specific version tag.


Migrates the project from PDM to uv for dependency management.
pdm.lockwithuv.lock, updatepyproject.toml(dependency-groups).gitignorefor uv (.uv/) and remove PDM entriesMade with Cursor
Note
Medium Risk
Build/CI and container dependency resolution is changing end-to-end; risk is mainly around lockfile parity and environment reproducibility across workflows and Docker images.
Overview
Migrates Python dependency management from PDM to
uvacross GitHub Actions and Docker builds, swappingpdm sync/run/installusage foruv sync/runand updating caching to key offuv.lock.Replaces
pdm.lockwith a generateduv.lock, updatespyproject.tomlto usedependency-groups(and drops PDM-specific config), refreshes.gitignoreto ignoreuvartifacts, and updates the README install instructions to useuv.Written by Cursor Bugbot for commit bd58653. This will update automatically on new commits. Configure here.