Good article. But the Makefile part should really be replaced by tox as a best practice. Tox even has a uv runner now that will handle setting up all the environments.
There’s a bit of a bootstrap problem there in that Tox (and its dependencies) have to be installed first, unless your makefile is calling “uv run tox” or similar. Uv’s standalone nature makes it ideal for bootstrapping projects in a way that tox isn’t.
I like just or mise tasks as often my python projects contain many other language commands (SQL, docker, pnpm, etc ...).