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.
