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
- Explanation of uv's resolution strategy: https://github.com/astral-sh/uv/blob/0.1.14/README.md#resolution-strategy
PR welcome 👍