In the Telco and TLS team, we have also been using uv and tox-uv for a while with good success. In general, my personal workflow on a project looks like this:
git clone my-project; cd my-projectuv sync --all-groups; source .venv/bin/activateexport PYTHONPATH=$(pwd)/lib# for the LSP in nvim to find the charm libs
@ca-scribner, compared to the workflow you posted, I let uv automatically create the venv, and we use dependency groups instead of extras. I think they make more sense for the things we use them for (testing tools, linters, etc.), as extras are meant to let users install extra functionality.