Chore/migrate poetry to uv#7755
Conversation
There was a problem hiding this comment.
1 issue found across 5 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="pyproject.toml">
<violation number="1" location="pyproject.toml:162">
P2: Missing explicit `default-groups` in [tool.uv] causes `uv sync` to install the dev group by default, unlike Poetry where dev was optional and excluded from `poetry install`. This is a behavior change in the migration.</violation>
</file>
Tip: cubic can generate docs of your entire codebase and keep them up to date. Try it here.
Re-trigger cubic
|
I support this PR as well, but since it involves changing part of the ecosystem, I will delegate the review to someone else. |
|
What changes would be made to https://github.com/getredash/redash/wiki/Local-development-setup? |
|
@eradman The Python dependency section of the wiki would change as follows. The Remove: Replace with: Notes:
I'm happy to prepare the wiki edit once the approach here looks good to you. |
|
After running |
What type of PR is this?
Description
Migrate Python dependency management from
poetrytouv.This is a pure tooling swap with zero dependency changes. Every resolved package version in
uv.lockmatches the previouspoetry.lockexactly (all237packages), so no application behavior changes and there is no new testing surface from version bumps.Changes:
pyproject.toml: convert[tool.poetry.dependencies]to PEP 621[project.dependencies], and theall_ds/ldap3/devgroups to PEP 735[dependency-groups]. Drop the Poetry[build-system]and mark the project non-packaged via[tool.uv] package = false(equivalent to Poetry's--no-root).poetry.lockwithuv.lock.Dockerfile: install a pinneduvbinary from the official image and useuv sync --frozen. Theinstall_groupsbuild-arg interface is preserved, so CI and existing build invocations need no changes.How is this tested?
uv lock --lockedconfirms the lockfile is consistent with the manifest.install_groups="main,all_ds,dev"(236distributions, versions identical to the previous lockfile).gunicorn,supervisord,rq, etc.) resolve on PATH and core imports load.ldap3group remains excluded by default and installs only when requested viainstall_groups.Notes
How is this tested?
Related Tickets & Documents
Mobile & Desktop Screenshots/Recordings (if there are UI changes)