Skip to content

uv pip compile --universal resolves to wrong python_full_version specifier on python3.8 #6412

@ungrichtepfl

Description

@ungrichtepfl

Happens with uv version 0.3.1 on a Ubuntu 20.04.6 LTS x86_64 machine.

Steps to reproduce.

  1. Create a python3.8 virtualenv
python3.8 -m venv venv
  1. Create requirements.in
coverage[toml]
pandas
matplotlib
  1. Run uv pip compile in the virtualenv:
uv pip compile --universal -o requirements.txt requirements.in
  1. This generates:
# This file was autogenerated by uv via the following command:
#    uv pip compile --universal -o requirements-py38.txt requirements.in
contourpy==1.1.1
    # via matplotlib
coverage==7.6.1
    # via -r requirements.in
cycler==0.12.1
    # via matplotlib
fonttools==4.53.1
    # via matplotlib
importlib-resources==6.4.4 ; python_full_version < '3.10'
    # via matplotlib
kiwisolver==1.4.5
    # via matplotlib
matplotlib==3.7.5
    # via -r requirements.in
numpy==1.24.4 ; python_full_version < '3.12'
    # via
    #   contourpy
    #   matplotlib
    #   pandas
numpy==1.26.4 ; python_full_version >= '3.12'
    # via
    #   contourpy
    #   matplotlib
    #   pandas
packaging==24.1
    # via matplotlib
pandas==2.0.3
    # via -r requirements.in
pillow==10.4.0
    # via matplotlib
pyparsing==3.1.2
    # via matplotlib
python-dateutil==2.9.0.post0
    # via
    #   matplotlib
    #   pandas
pytz==2024.1
    # via pandas
six==1.16.0
    # via python-dateutil
tomli==2.0.1 ; python_full_version == '3.11'
    # via coverage
tzdata==2024.1
    # via pandas
zipp==3.20.0 ; python_full_version < '3.10'
    # via importlib-resources

For which the third to last entry (tomli) is wrong:

tomli==2.0.1 ; python_full_version == '3.11'
    # via coverage

converage needs tomli for python < 3.11.

Running the same uv binary in a python3.9 virtualenv however, generates the correct python specifier:

# This file was autogenerated by uv via the following command:
#    uv pip compile --universal -o requirements-py39.txt requirements.in
contourpy==1.2.1
    # via matplotlib
coverage==7.6.1
    # via -r requirements.in
cycler==0.12.1
    # via matplotlib
fonttools==4.53.1
    # via matplotlib
importlib-resources==6.4.4 ; python_full_version < '3.10'
    # via matplotlib
kiwisolver==1.4.5
    # via matplotlib
matplotlib==3.9.2
    # via -r requirements.in
numpy==2.0.1
    # via
    #   contourpy
    #   matplotlib
    #   pandas
packaging==24.1
    # via matplotlib
pandas==2.2.2
    # via -r requirements.in
pillow==10.4.0
    # via matplotlib
pyparsing==3.1.2
    # via matplotlib
python-dateutil==2.9.0.post0
    # via
    #   matplotlib
    #   pandas
pytz==2024.1
    # via pandas
six==1.16.0
    # via python-dateutil
tomli==2.0.1 ; python_full_version <= '3.11'
    # via coverage
tzdata==2024.1
    # via pandas
zipp==3.20.0 ; python_full_version < '3.10'
    # via importlib-resources

Also, running it without the --universal flag generates a correct requirements.txt:

# This file was autogenerated by uv via the following command:
#    uv pip compile -o requirements.txt requirements.in
contourpy==1.1.1
    # via matplotlib
coverage==7.6.1
    # via -r requirements.in
cycler==0.12.1
    # via matplotlib
fonttools==4.53.1
    # via matplotlib
importlib-resources==6.4.4
    # via matplotlib
kiwisolver==1.4.5
    # via matplotlib
matplotlib==3.7.5
    # via -r requirements.in
numpy==1.24.4
    # via
    #   contourpy
    #   matplotlib
    #   pandas
packaging==24.1
    # via matplotlib
pandas==2.0.3
    # via -r requirements.in
pillow==10.4.0
    # via matplotlib
pyparsing==3.1.2
    # via matplotlib
python-dateutil==2.9.0.post0
    # via
    #   matplotlib
    #   pandas
pytz==2024.1
    # via pandas
six==1.16.0
    # via python-dateutil
tomli==2.0.1
    # via coverage
tzdata==2024.1
    # via pandas
zipp==3.20.0
    # via importlib-resources

This may be related to #6269.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingresolverRelated to the package resolver

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions