heroku / buildpacks-python

Heroku's Cloud Native Buildpack for Python applications.
BSD 3-Clause "New" or "Revised" License
27 stars 3 forks source link

Support the uv package manager #248

Open edmorley opened 3 months ago

edmorley commented 3 months ago

The Python package manager uv is looking extremely promising (and quite likely to supersede Poetry and Pipenv), so we should add support for it (after we add Poetry support, and once uv's project management/sync features have stabilised): https://docs.astral.sh/uv/ https://astral.sh/blog/uv-unified-python-packaging

Potential blockers:

GUS-W-17141085.

edmorley commented 3 months ago

https://github.com/astral-sh/uv/pull/6834 has just merged (not yet released, but will be soon), which adds support for UV_PROJECT_ENVIRONMENT to uv sync, allowing control of the venv location - which was one of the blockers I'd noticed for uv support so far.

There's also the matter of uv still having very frequent releases and occasional breaking changes/regressions (not surprising given that the uv sync feature is still only 2 weeks old) - we'll need to decide at which point it's stable enough that we won't be breaking users of the CNB every time we update it.

edmorley commented 2 months ago

Adding support for uv will also increase the priority for doing https://github.com/heroku/buildpacks-python/issues/271, since uv defaults to storing venvs inside the project directory (unlike Poetry or Pipenv), which will mean that users are much more likely to accidentally either (a) git commit their local venv to the repo (which means it will be included for git push heroku main etc), (b) include the venv in a locally run pack build due to not knowing about project.toml's exclude.

edmorley commented 1 week ago

Cross-linking:

Btw the more thumbs up I can get on all the uv-related GitHub issues the easier it will be to make a case for it during internal team planning - so please everyone who is interested in uv support add a 👍 to all the things! 😂