An ode to uv

After using uv for a couple months, it continues to impress. It’s fast. It’s easy to use. I have not completely abandoned Poetry because my existing projects are already configered to use Poetry, and my colleagues have not yet adopted uv. Nonetheless, uv still offers tremendous advantages in my workflow. This post will explain how I make use of uv in my workflows and its advnatages over other tools, when my projects are still configured for Poetry.

Read More

"Checkout" Github action can pull from the wrong commit

A crucial step in the CI/CD process is checking out your working repository. Typically, we rely on `actions/checkout` to pull the branch we're working on for testing. However, it turns out that there are some quirks in this action that is not well documented. The action can sometimes pull from the wrong commit SHA, leading to unexpected behaviors.
Read More

Testing your code in multiple environments with nox and uv

Often in production, you might want to test your code in different python versions or environment variables. You could use the `matrix` command in Github CI, but it's much more tedious to do the same thing locally. Instead of manually setting up each environment and variable, Nox helps you automate this kind of testing. Let's see what it takes to set up Nox and test my Poetry-managed package in three different Python environments.
Read More

uv & Python Virtual Environment Tools

uv is a super fast Python package and project manager, written in Rust. It purports to be a drop-in replacement for many of the familiar tools we use, such as Pip, Conda, Poetry, Virtualenv, Pipx, etc… But how realistic is this? What is the developer experience if we ditch our existing tools for uv? Kevin Renskers wrote a nice comparison between Poetry and uv, and came to the conclusion that the number one strength of uv is in how it manages virtual environments. So in this brain dump, I’ll focus on virtual environment management aspect of uv, and compare it to other tools like poetry, conda, and virtualenv.

Read More