Closed tleonhardt closed 2 weeks ago
uv
venvs.uv
virtual envs are now working great for cmd2
development on both the master
and 3.0.0
branches.
TODO:
nox
in GitHub Action pytest
runs with uv
nox
in tasks.py
nox
uv
for cmd2
development nox
in GithHub Action pytest runs with uv
, removes nox
from tasks.py
and removes the dependency on nox
uv
for cmd2
developmentI was initially planning on replacing the use of twine
with uv publish
, but that feature of uv
is experimental and subject to change in backwards incompatible ways, so that would be premature at this time.
There are several more advanced build system tools which are worth exploring. The current default recommendation from python seems to be hatch. It has impressive features including declaring build/test configurations and managing venv environments. @anselor tried hatch on a couple small projects and found it to be much faster than using nox to set up venvs. The problem is it currently doesn't support a monorepo project with multiple modules or plugin modules. There is a development ticket (https://github.com/pypa/hatch/issues/233) that documents it and it is under active development now. Once that is complete we should be able to migrate to hatch with minimal fuss.
A newer alternative that is taking the Python world by storm is uv which is an extremely fast Python package and project manager, written in Rust. uv is a single tool to replace pip, pip-tools, pipx, poetry, pyenv, virtualenv, pipenv and more. I've used this at work to replace pip in some builds and it has typically sped things up by a factor of 2x.