I have a Python package (quacc) that has a required dependency (ase). The most recent version of ase on PyPI is 3.22.1, but the master branch of ase is >3.22.1. Since the quacc package relies on features added since the last ase release, in the dependencies list in pyproject.toml of my quacc package, I have ase>3.22.1 to ensure that users won't have a silent failure when installing the package if they have an out-of-date dependency. However, uv does not like this at all (even though pip is perfectly content).
Reproduction with uv 0.1.13 on Ubuntu in a clean miniconda environment:
uv pip install "ase @ git+https://gitlab.com/ase/ase.git" # installs >3.22.1
uv pip install "quacc @ git+https://github.com/Quantum-Accelerators/quacc.git" # or `uv pip install quacc`
Traceback:
Updated https://github.com/Quantum-Accelerators/quacc.git (8c55f09) × No solution found when resolving dependencies:
╰─▶ Because only ase<=3.22.1 is available and quacc==0.6.8 depends on ase>3.22.1,
we can conclude that quacc==0.6.8 cannot be used.
And because only quacc==0.6.8 is available and you require quacc, we can
conclude that the requirements are unsatisfiable.
While it is true that only ase<=3.22.1 is available on PyPI, the current Python environment has ase>3.22.1, and that should have priority. uv should not try to be installing ase since it's already in my environment.
I have a Python package (
quacc) that has a required dependency (ase). The most recent version ofaseon PyPI is 3.22.1, but themasterbranch ofaseis >3.22.1. Since thequaccpackage relies on features added since the lastaserelease, in thedependencieslist inpyproject.tomlof myquaccpackage, I havease>3.22.1to ensure that users won't have a silent failure when installing the package if they have an out-of-date dependency. However,uvdoes not like this at all (even thoughpipis perfectly content).Reproduction with uv 0.1.13 on Ubuntu in a clean miniconda environment:
Traceback:
While it is true that only
ase<=3.22.1is available on PyPI, the current Python environment hasase>3.22.1, and that should have priority.uvshould not try to be installingasesince it's already in my environment.