Skip to content

Migrate project management and CI workflows to uv#1632

Open
theAnuragMishra wants to merge 1 commit intozulip:mainfrom
theAnuragMishra:migrate-to-uv
Open

Migrate project management and CI workflows to uv#1632
theAnuragMishra wants to merge 1 commit intozulip:mainfrom
theAnuragMishra:migrate-to-uv

Conversation

@theAnuragMishra
Copy link
Copy Markdown

@theAnuragMishra theAnuragMishra commented Apr 7, 2026

What does this PR do, and why?

This PR migrates project dependency management and build configuration from pip/pipenv to uv. This improves developer experience by providing faster installs, reproducible environments via a lockfile, and various convenience commands provided by uv.

External discussion & connections

  • Discussed in #zulip-terminal in #zulip-terminal > any plans to migrate to uv?
  • Fully fixes #
  • Partially fixes issue #
  • Builds upon previous unmerged work in PR #
  • Is a follow-up to work in PR #
  • Requires merge of PR #
  • Merge will enable work on #

How did you test this?

  • Manually - Behavioral changes
  • Manually - Visual changes
  • Adapting existing automated tests
  • Adding automated tests for new behavior (or missing tests)
  • Existing automated tests should already cover this (only a refactor of tested code)

Self-review checklist for each commit

  • It is a minimal coherent idea
  • It has a commit summary following the documented style (title & body)
  • It has a commit summary describing the motivation and reasoning for the change
  • It individually passes linting and tests
  • It contains test additions for any new behavior
  • It flows clearly from a previous branch commit, and/or prepares for the next commit

@zulipbot zulipbot added the size: XL [Automatic label added by zulipbot] label Apr 7, 2026
@theAnuragMishra theAnuragMishra force-pushed the migrate-to-uv branch 2 times, most recently from b2c7186 to 75e1c47 Compare April 7, 2026 23:50
@theAnuragMishra
Copy link
Copy Markdown
Author

I'm well aware that README.md contains a lot of unrelated changes but most of them are caused by my editor formatting md according to modern idioms.
If needed, I can pick only relevant hunks.

@theAnuragMishra
Copy link
Copy Markdown
Author

A bit surprising that one of the tests fails because pytest passes locally.

@Niloth-p
Copy link
Copy Markdown
Collaborator

Niloth-p commented Apr 8, 2026

Thanks for the PR!

Formatting changes and content changes do not go in the same commit. That is every reviewer's nightmare.

I understand that it's been a while since those files were updated, so this is natural. It might take a while for the formatting to get merged to main. Please try turning off the formatter's on-save trigger until then.

Or you could just save those files and make that the first commit, then your changes can go in the second commit. Making it possible to review your changes.

The failing test is a flaky test, pushing again should solve it.

This commit migrates package management and build setup from pip
to a modern alternative, uv.
- Moves from Pipfile + setup.py to a unified pyproject.toml.
- Updates relevant documentation.
- Updates workflows to use uv instead of pip.
@theAnuragMishra
Copy link
Copy Markdown
Author

I didn't like the idea of making a format-only commit which only formats a few files. We can maybe do a full source formatting later.
For now I have removed all the formatting changes. The one large diff is uv.lock which is auto generated.
I think it's ready for review now!

@theAnuragMishra
Copy link
Copy Markdown
Author

A few points I'd like to note:

  • since we are migrating to uv (and not also supporting uv) , pipenv support has been completely removed
  • users can however set up everything manually using pip if they don't want uv. They will just miss some of the nice things uv has.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size: XL [Automatic label added by zulipbot]

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants