tox: try using uv for CI, should result in speedup
see https://github.com/karlicoss/HPI/issues/391
This commit is contained in:
parent
8ed9e1947e
commit
bf8af6c598
3 changed files with 17 additions and 9 deletions
13
.ci/run
13
.ci/run
|
@ -11,6 +11,8 @@ if ! command -v sudo; then
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# --parallel-live to show outputs while it's running
|
||||||
|
tox_cmd='run-parallel --parallel-live'
|
||||||
if [ -n "${CI-}" ]; then
|
if [ -n "${CI-}" ]; then
|
||||||
# install OS specific stuff here
|
# install OS specific stuff here
|
||||||
case "$OSTYPE" in
|
case "$OSTYPE" in
|
||||||
|
@ -20,7 +22,8 @@ if [ -n "${CI-}" ]; then
|
||||||
;;
|
;;
|
||||||
cygwin* | msys* | win*)
|
cygwin* | msys* | win*)
|
||||||
# windows
|
# windows
|
||||||
:
|
# ugh. parallel stuff seems super flaky under windows, some random failures, "file used by other process" and crap like that
|
||||||
|
tox_cmd='run'
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# must be linux?
|
# must be linux?
|
||||||
|
@ -37,5 +40,9 @@ if ! command -v python3 &> /dev/null; then
|
||||||
PY_BIN="python"
|
PY_BIN="python"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
"$PY_BIN" -m pip install --user tox
|
|
||||||
"$PY_BIN" -m tox --parallel --parallel-live "$@"
|
# TODO hmm for some reason installing uv with pip and then running
|
||||||
|
# "$PY_BIN" -m uv tool fails with missing setuptools error??
|
||||||
|
# just uvx directly works, but it's not present in PATH...
|
||||||
|
"$PY_BIN" -m pip install --user pipx
|
||||||
|
"$PY_BIN" -m pipx run uv tool run --with=tox-uv tox $tox_cmd "$@"
|
||||||
|
|
|
@ -373,8 +373,9 @@ def module_install(*, user: bool, module: Sequence[str], parallel: bool=False, b
|
||||||
warning('requirements list is empty, no need to install anything')
|
warning('requirements list is empty, no need to install anything')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
use_uv = 'HPI_MODULE_INSTALL_USE_UV' in os.environ
|
||||||
pre_cmd = [
|
pre_cmd = [
|
||||||
sys.executable, '-m', 'pip',
|
sys.executable, '-m', *(['uv'] if use_uv else []), 'pip',
|
||||||
'install',
|
'install',
|
||||||
*(['--user'] if user else []), # todo maybe instead, forward all the remaining args to pip?
|
*(['--user'] if user else []), # todo maybe instead, forward all the remaining args to pip?
|
||||||
*(['--break-system-packages'] if break_system_packages else []), # https://peps.python.org/pep-0668/
|
*(['--break-system-packages'] if break_system_packages else []), # https://peps.python.org/pep-0668/
|
||||||
|
|
10
tox.ini
10
tox.ini
|
@ -17,6 +17,9 @@ passenv =
|
||||||
PYTHONPYCACHEPREFIX
|
PYTHONPYCACHEPREFIX
|
||||||
MYPY_CACHE_DIR
|
MYPY_CACHE_DIR
|
||||||
RUFF_CACHE_DIR
|
RUFF_CACHE_DIR
|
||||||
|
setenv =
|
||||||
|
HPI_MODULE_INSTALL_USE_UV=true
|
||||||
|
uv_seed = true # seems necessary so uv creates separate venvs per tox env?
|
||||||
|
|
||||||
|
|
||||||
# note: --use-pep517 below is necessary for tox --parallel flag to work properly
|
# note: --use-pep517 below is necessary for tox --parallel flag to work properly
|
||||||
|
@ -24,7 +27,6 @@ passenv =
|
||||||
|
|
||||||
|
|
||||||
[testenv:ruff]
|
[testenv:ruff]
|
||||||
install_command = {envpython} -m pip install --use-pep517 {opts} {packages}
|
|
||||||
deps =
|
deps =
|
||||||
-e .[testing]
|
-e .[testing]
|
||||||
commands =
|
commands =
|
||||||
|
@ -33,7 +35,6 @@ commands =
|
||||||
|
|
||||||
# just the very core tests with minimal dependencies
|
# just the very core tests with minimal dependencies
|
||||||
[testenv:tests-core]
|
[testenv:tests-core]
|
||||||
install_command = {envpython} -m pip install --use-pep517 {opts} {packages}
|
|
||||||
deps =
|
deps =
|
||||||
-e .[testing]
|
-e .[testing]
|
||||||
commands =
|
commands =
|
||||||
|
@ -56,9 +57,9 @@ setenv =
|
||||||
# TODO not sure if need it?
|
# TODO not sure if need it?
|
||||||
MY_CONFIG=nonexistent
|
MY_CONFIG=nonexistent
|
||||||
HPI_TESTS_USES_OPTIONAL_DEPS=true
|
HPI_TESTS_USES_OPTIONAL_DEPS=true
|
||||||
install_command = {envpython} -m pip install --use-pep517 {opts} {packages}
|
|
||||||
deps =
|
deps =
|
||||||
-e .[testing]
|
-e .[testing]
|
||||||
|
uv # for hpi module install
|
||||||
cachew
|
cachew
|
||||||
ijson # optional dependency for various modules
|
ijson # optional dependency for various modules
|
||||||
commands =
|
commands =
|
||||||
|
@ -93,7 +94,6 @@ commands =
|
||||||
|
|
||||||
|
|
||||||
[testenv:mypy-core]
|
[testenv:mypy-core]
|
||||||
install_command = {envpython} -m pip install --use-pep517 {opts} {packages}
|
|
||||||
deps =
|
deps =
|
||||||
-e .[testing,optional]
|
-e .[testing,optional]
|
||||||
orgparse # for core.orgmode
|
orgparse # for core.orgmode
|
||||||
|
@ -109,9 +109,9 @@ commands =
|
||||||
# specific modules that are known to be mypy compliant (to avoid false negatives)
|
# specific modules that are known to be mypy compliant (to avoid false negatives)
|
||||||
# todo maybe split into separate jobs? need to add comment how to run
|
# todo maybe split into separate jobs? need to add comment how to run
|
||||||
[testenv:mypy-misc]
|
[testenv:mypy-misc]
|
||||||
install_command = {envpython} -m pip install --use-pep517 {opts} {packages}
|
|
||||||
deps =
|
deps =
|
||||||
-e .[testing,optional]
|
-e .[testing,optional]
|
||||||
|
uv # for hpi module install
|
||||||
lxml-stubs # for my.smscalls
|
lxml-stubs # for my.smscalls
|
||||||
types-protobuf # for my.google.maps.android
|
types-protobuf # for my.google.maps.android
|
||||||
types-Pillow # for my.photos
|
types-Pillow # for my.photos
|
||||||
|
|
Loading…
Add table
Reference in a new issue