tox-dev / tox-uv

Use https://github.com/astral-sh/uv with tox

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support for uv's `--resolution` as an alternative to frozen constraints

Stealthii opened this issue · comments

What's the problem this feature will solve?

Running tests against the minimum supported set of dependencies as defined by the package, utilising the resolution feature that uv offers.

Describe the solution you'd like

Providing a new configuration option called uv-resolution, letting this option be passed to uv when installing dependencies would enable the resolution of alternate or minimum dependencies without extra boilerplate or generated constraint lists.

[testenv:py38-mindeps]
uv_resolution = lowest-direct

Alternative Solutions

An existing use of hardcoded dependencies with the constrain_package_deps and/or use_frozen_constraints options exists, but has issues when used with tox-uv at present (tracked by #38):

[testenv:py38-mindeps]
constrain_package_deps = true
use_frozen_constraints = true
deps =
    ciso8601 == 2.2
    importlib-metadata == 1.4
    httpx == 0.24
py38-mindeps: install_package_deps> /opt/_internal/cpython-3.11.8/bin/uv pip install 'ciso8601~=2.2' 'httpx>=0.24' 'importlib-metadata>=1.4' 'pytest-cov>=4.0' 'pytest>=7.3' types-pkg_resources -c/app/.tox/py38-mindeps/constraints.txt
error: Unexpected 'xpected '-c', '-e', '-r' or the start of a requirement in `/app/.tox/py38-mindeps/constraints.txt` at position 0
py38-mindeps: exit 2 (0.10 seconds) /app> /opt/_internal/cpython-3.11.8/bin/uv pip install 'ciso8601~=2.2' 'httpx>=0.24' 'importlib-metadata>=1.4' 'pytest-cov>=4.0' 'pytest>=7.3' types-pkg_resources -c/app/.tox/py38-mindeps/constraints.txt pid=263

Additional context

PR welcome 👍