Hey everyone,

Few days ago the ruff creators have released a new tool uv - which is an
extremely fast (written in rust) and fully featured tool generally fully
compatible with `pip`.

Blog post here: https://astral.sh/blog/uv

It looks like It has a number of things that would make our CI cases and
tooling quite a bit faster and better including a few things that I have
implemented some workarounds for and some that I have not
implemented because `pip` had no good solution.

I looked at the docs and it solves some problems that are currently
difficult or impossible to handle with `pip`:

* ability to use overrides (which are constraints on steroids - allowing to
override limits specified by the packages - this will be very useful to
better handle our cases with "chicken-egg" providers (for example like we
had in FAB) where we have pre-release packages depending on each other

* different resolution strategies including --resolution=lowest which will
finally allow us to see whether airflow's lower bounds are still holding
(i.e. - will our test still pass if we use the lowest supported version of
our dependencies?  this is something i wanted to do for quite some time and
recorded an issue for that - https://github.com/apache/airflow/issues/35549
but lack of tooling support made it a wish, with `--resolution=lowest` it
seems like super-easy thing to do.

* It is said to be many, many times faster - with better caching and
resolution speeds (similarly like with ruff they claim orders of magnitude
speedups in a number of cases). We can likely make very good use of it and
speed up some parts of our CI workflow significantly.

I might likely do some experimenting with uv in our toolchain, but wanted
to make sure we are all aware of it - and ask if someone has something
against it (and maybe someone would like to do some work there trying it
out - I will be happy to guide others with the dev/tooling mindset and
incline to do some changes there/review PRs and cooperate on testing those
things.

It's not a user-facing change, and I do not think we want to get rid of
`pip` as an installation tool in general (in our images and user facing
side) - it's mostly an internal CI tooling improvement I am thinking of.
Maybe at some point in time we can recommend it also for development
workflows, and maybe someday it will gain enough popularity to think about
recommending it to our users, but definitely not now nor in even mid-term
future.

Let me know what you think.

Repo here: https://github.com/astral-sh/uv

J.

Reply via email to