Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installing packages from multiple indexes fails if the desired versions are not found from the first index where the package is available. #2205

Closed
korhojoa opened this issue Mar 5, 2024 · 6 comments
Labels
duplicate This issue or pull request already exists

Comments

@korhojoa
Copy link

korhojoa commented Mar 5, 2024

This is on uv 0.1.14.

Probably the easiest way to reproduce is to run
pip-compile --extra-index-url=https://download.pytorch.org/whl/cpu requirements.in
with a requirements.in file that looks like this:

certifi >2023
torch==2.1.1+cpu

This gets you:


#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
#    pip-compile --extra-index-url=https://download.pytorch.org/whl/cpu requirements.in
#
--extra-index-url https://download.pytorch.org/whl/cpu

certifi==2024.2.2
    # via -r requirements.in
filelock==3.13.1
    # via torch
fsspec==2024.2.0
    # via torch
jinja2==3.1.3
    # via torch
markupsafe==2.1.5
    # via jinja2
mpmath==1.3.0
    # via sympy
networkx==3.2.1
    # via torch
sympy==1.12
    # via torch
torch==2.1.1+cpu
    # via -r requirements.in
typing-extensions==4.10.0
    # via torch

Which doesn't work, because pytorch has a certifi package in their index with a version of 2022.12.7.

Pip handles this okay.
I understand that this is desired behavior for uv, based on #2135
However, I do wish there was a way to let this functionality stay, as I'm going to assume I'm not unique in wanting to use eg. corporate or vendor indexes, which may have versions of packages which are outdated.

Curiously, the package that is reported to be unavailable seems to vary.

(uv-issue) user@host:~/uv-issue$ uv pip sync --extra-index-url https://download.pytorch.org/whl/cpu --verbose --no-cache-dir requirements.txt
 uv::requirements::from_source source=requirements.txt
    0.002547s DEBUG uv_interpreter::python_environment Found a virtualenv through VIRTUAL_ENV at: /home/user/uv-issue/.venv
    0.002643s DEBUG uv_interpreter::interpreter Probing interpreter info for: /home/user/uv-issue/.venv/bin/python
    0.030452s DEBUG uv_interpreter::interpreter Found Python 3.11.5 for: /home/user/uv-issue/.venv/bin/python
    0.031089s DEBUG uv::commands::pip_sync Using Python 3.11.5 environment at /home/user/uv-issue/.venv/bin/python
    0.031462s DEBUG uv_client::registry_client Using registry request timeout of 300s
 uv_client::flat_index::from_entries
    0.032402s DEBUG uv_installer::plan Identified uncached requirement: certifi ==2024.2.2
    0.032454s DEBUG uv_installer::plan Identified uncached requirement: filelock ==3.13.1
    0.032472s DEBUG uv_installer::plan Identified uncached requirement: fsspec ==2024.2.0
    0.032515s DEBUG uv_installer::plan Identified uncached requirement: jinja2 ==3.1.3
    0.032557s DEBUG uv_installer::plan Identified uncached requirement: markupsafe ==2.1.5
    0.032599s DEBUG uv_installer::plan Identified uncached requirement: mpmath ==1.3.0
    0.032642s DEBUG uv_installer::plan Identified uncached requirement: networkx ==3.2.1
    0.032682s DEBUG uv_installer::plan Identified uncached requirement: sympy ==1.12
    0.032721s DEBUG uv_installer::plan Identified uncached requirement: torch ==2.1.1+cpu
    0.032765s DEBUG uv_installer::plan Identified uncached requirement: typing-extensions ==4.10.0
 uv_client::registry_client::simple_api package=certifi
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/certifi.rkyv
 uv_client::registry_client::simple_api package=filelock
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/filelock.rkyv
 uv_client::registry_client::simple_api package=fsspec
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/fsspec.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/certifi.rkyv"
 uv_client::registry_client::simple_api package=jinja2
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/jinja2.rkyv
 uv_client::registry_client::simple_api package=markupsafe
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/markupsafe.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/jinja2.rkyv"
 uv_client::registry_client::simple_api package=mpmath
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/markupsafe.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/mpmath.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/fsspec.rkyv"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/filelock.rkyv"
 uv_client::registry_client::simple_api package=networkx
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/mpmath.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/networkx.rkyv
 uv_client::registry_client::simple_api package=sympy
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/sympy.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/networkx.rkyv"
 uv_client::registry_client::simple_api package=torch
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/torch.rkyv
 uv_client::registry_client::simple_api package=typing-extensions
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/torch.rkyv"
        0.038428s   5ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/certifi/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/certifi/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv"
        0.038768s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/jinja2/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/jinja2/"
        0.038882s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/markupsafe/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/markupsafe/"
        0.038986s   5ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/filelock/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/filelock/"
        0.039079s   5ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/fsspec/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/fsspec/"
        0.039122s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/mpmath/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/mpmath/"
        0.039172s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/networkx/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/networkx/"
        0.039303s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/torch/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/torch/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/sympy.rkyv"
        0.039406s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/typing-extensions/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/typing-extensions/"
        0.039487s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/sympy/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/sympy/"
     uv_client::cached_client::new_cache file=/tmp/.tmpVqDhsY/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv
     uv_client::registry_client::parse_simple_api package=typing-extensions
       uv_client::html::parse url=https://download.pytorch.org/whl/cpu/typing-extensions/
error: Failed to find a version of typing-extensions ==4.10.0 that satisfies the requirement
(uv-issue) user@host:~/uv-issue$ uv pip sync --extra-index-url https://download.pytorch.org/whl/cpu --verbose --no-cache-dir requirements.txt
 uv::requirements::from_source source=requirements.txt
    0.003620s DEBUG uv_interpreter::python_environment Found a virtualenv through VIRTUAL_ENV at: /home/user/uv-issue/.venv
    0.003701s DEBUG uv_interpreter::interpreter Probing interpreter info for: /home/user/uv-issue/.venv/bin/python
    0.030236s DEBUG uv_interpreter::interpreter Found Python 3.11.5 for: /home/user/uv-issue/.venv/bin/python
    0.030927s DEBUG uv::commands::pip_sync Using Python 3.11.5 environment at /home/user/uv-issue/.venv/bin/python
    0.031798s DEBUG uv_client::registry_client Using registry request timeout of 300s
 uv_client::flat_index::from_entries
    0.033159s DEBUG uv_installer::plan Identified uncached requirement: certifi ==2024.2.2
    0.033219s DEBUG uv_installer::plan Identified uncached requirement: filelock ==3.13.1
    0.033279s DEBUG uv_installer::plan Identified uncached requirement: fsspec ==2024.2.0
    0.033323s DEBUG uv_installer::plan Identified uncached requirement: jinja2 ==3.1.3
    0.033376s DEBUG uv_installer::plan Identified uncached requirement: markupsafe ==2.1.5
    0.033422s DEBUG uv_installer::plan Identified uncached requirement: mpmath ==1.3.0
    0.033495s DEBUG uv_installer::plan Identified uncached requirement: networkx ==3.2.1
    0.033544s DEBUG uv_installer::plan Identified uncached requirement: sympy ==1.12
    0.033599s DEBUG uv_installer::plan Identified uncached requirement: torch ==2.1.1+cpu
    0.033647s DEBUG uv_installer::plan Identified uncached requirement: typing-extensions ==4.10.0
 uv_client::registry_client::simple_api package=certifi
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/certifi.rkyv
 uv_client::registry_client::simple_api package=filelock
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/filelock.rkyv
 uv_client::registry_client::simple_api package=fsspec
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/fsspec.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/certifi.rkyv"
 uv_client::registry_client::simple_api package=jinja2
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/jinja2.rkyv
 uv_client::registry_client::simple_api package=markupsafe
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/jinja2.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/markupsafe.rkyv
 uv_client::registry_client::simple_api package=mpmath
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/markupsafe.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/mpmath.rkyv
 uv_client::registry_client::simple_api package=networkx
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/networkx.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/mpmath.rkyv"
 uv_client::registry_client::simple_api package=sympy
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/networkx.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/sympy.rkyv
 uv_client::registry_client::simple_api package=torch
   uv_client::cached_client::get_cacheable
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/sympy.rkyv"
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/torch.rkyv
 uv_client::registry_client::simple_api package=typing-extensions
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/torch.rkyv"
   uv_client::cached_client::get_cacheable
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/fsspec.rkyv"
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv"
        0.038799s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/certifi/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/certifi/"
        0.039100s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/jinja2/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/jinja2/"
        0.039195s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/markupsafe/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/markupsafe/"
        0.039292s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/mpmath/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/mpmath/"
        0.039372s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/networkx/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/networkx/"
        0.039482s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/sympy/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/sympy/"
        0.039558s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/torch/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/torch/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/filelock.rkyv"
        0.039721s   5ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/fsspec/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/fsspec/"
        0.039883s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/typing-extensions/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/typing-extensions/"
        0.039957s   5ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/filelock/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/filelock/"
     uv_client::cached_client::new_cache file=/tmp/.tmpzS4yoR/simple-v3/e1d141a6ca947dff/fsspec.rkyv
     uv_client::registry_client::parse_simple_api package=fsspec
       uv_client::html::parse url=https://download.pytorch.org/whl/cpu/fsspec/
error: Failed to find a version of fsspec ==2024.2.0 that satisfies the requirement
(uv-issue) user@host:~/uv-issue$ uv pip sync --extra-index-url https://download.pytorch.org/whl/cpu --verbose --no-cache-dir requirements.txt
 uv::requirements::from_source source=requirements.txt
    0.004362s DEBUG uv_interpreter::python_environment Found a virtualenv through VIRTUAL_ENV at: /home/user/uv-issue/.venv
    0.004532s DEBUG uv_interpreter::interpreter Probing interpreter info for: /home/user/uv-issue/.venv/bin/python
    0.030931s DEBUG uv_interpreter::interpreter Found Python 3.11.5 for: /home/user/uv-issue/.venv/bin/python
    0.031759s DEBUG uv::commands::pip_sync Using Python 3.11.5 environment at /home/user/uv-issue/.venv/bin/python
    0.032584s DEBUG uv_client::registry_client Using registry request timeout of 300s
 uv_client::flat_index::from_entries
    0.033948s DEBUG uv_installer::plan Identified uncached requirement: certifi ==2024.2.2
    0.034013s DEBUG uv_installer::plan Identified uncached requirement: filelock ==3.13.1
    0.034062s DEBUG uv_installer::plan Identified uncached requirement: fsspec ==2024.2.0
    0.034122s DEBUG uv_installer::plan Identified uncached requirement: jinja2 ==3.1.3
    0.034165s DEBUG uv_installer::plan Identified uncached requirement: markupsafe ==2.1.5
    0.034207s DEBUG uv_installer::plan Identified uncached requirement: mpmath ==1.3.0
    0.034261s DEBUG uv_installer::plan Identified uncached requirement: networkx ==3.2.1
    0.034307s DEBUG uv_installer::plan Identified uncached requirement: sympy ==1.12
    0.034348s DEBUG uv_installer::plan Identified uncached requirement: torch ==2.1.1+cpu
    0.034393s DEBUG uv_installer::plan Identified uncached requirement: typing-extensions ==4.10.0
 uv_client::registry_client::simple_api package=certifi
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/certifi.rkyv
 uv_client::registry_client::simple_api package=filelock
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/filelock.rkyv
 uv_client::registry_client::simple_api package=fsspec
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/fsspec.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/certifi.rkyv"
 uv_client::registry_client::simple_api package=jinja2
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/jinja2.rkyv
 uv_client::registry_client::simple_api package=markupsafe
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/jinja2.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/markupsafe.rkyv
 uv_client::registry_client::simple_api package=mpmath
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/markupsafe.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/mpmath.rkyv
 uv_client::registry_client::simple_api package=networkx
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/networkx.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/mpmath.rkyv"
 uv_client::registry_client::simple_api package=sympy
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/networkx.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/sympy.rkyv
 uv_client::registry_client::simple_api package=torch
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/fsspec.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/torch.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/sympy.rkyv"
 uv_client::registry_client::simple_api package=typing-extensions
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv"
        0.039329s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/certifi/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/certifi/"
        0.039697s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/jinja2/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/jinja2/"
        0.039800s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/markupsafe/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/markupsafe/"
        0.039916s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/mpmath/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/mpmath/"
        0.040052s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/networkx/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/networkx/"
        0.040221s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/fsspec/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/fsspec/"
        0.040361s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/sympy/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/sympy/"
        0.040500s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/typing-extensions/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/typing-extensions/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/filelock.rkyv"
        0.040905s   6ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/filelock/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/filelock/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/torch.rkyv"
        0.041698s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/torch/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/torch/"
     uv_client::cached_client::new_cache file=/tmp/.tmpWbDk2i/simple-v3/e1d141a6ca947dff/jinja2.rkyv
     uv_client::registry_client::parse_simple_api package=jinja2
       uv_client::html::parse url=https://download.pytorch.org/whl/cpu/jinja2/
error: Failed to find a version of jinja2 ==3.1.3 that satisfies the requirement
(uv-issue) user@host:~/uv-issue$ uv pip sync --extra-index-url https://download.pytorch.org/whl/cpu --verbose --no-cache-dir requirements.txt
 uv::requirements::from_source source=requirements.txt
    0.003836s DEBUG uv_interpreter::python_environment Found a virtualenv through VIRTUAL_ENV at: /home/user/uv-issue/.venv
    0.003997s DEBUG uv_interpreter::interpreter Probing interpreter info for: /home/user/uv-issue/.venv/bin/python
    0.037887s DEBUG uv_interpreter::interpreter Found Python 3.11.5 for: /home/user/uv-issue/.venv/bin/python
    0.038754s DEBUG uv::commands::pip_sync Using Python 3.11.5 environment at /home/user/uv-issue/.venv/bin/python
    0.039541s DEBUG uv_client::registry_client Using registry request timeout of 300s
 uv_client::flat_index::from_entries
    0.041240s DEBUG uv_installer::plan Identified uncached requirement: certifi ==2024.2.2
    0.041318s DEBUG uv_installer::plan Identified uncached requirement: filelock ==3.13.1
    0.041370s DEBUG uv_installer::plan Identified uncached requirement: fsspec ==2024.2.0
    0.041395s DEBUG uv_installer::plan Identified uncached requirement: jinja2 ==3.1.3
    0.041472s DEBUG uv_installer::plan Identified uncached requirement: markupsafe ==2.1.5
    0.041521s DEBUG uv_installer::plan Identified uncached requirement: mpmath ==1.3.0
    0.041568s DEBUG uv_installer::plan Identified uncached requirement: networkx ==3.2.1
    0.041618s DEBUG uv_installer::plan Identified uncached requirement: sympy ==1.12
    0.041666s DEBUG uv_installer::plan Identified uncached requirement: torch ==2.1.1+cpu
    0.041716s DEBUG uv_installer::plan Identified uncached requirement: typing-extensions ==4.10.0
 uv_client::registry_client::simple_api package=certifi
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/certifi.rkyv
 uv_client::registry_client::simple_api package=filelock
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/filelock.rkyv
 uv_client::registry_client::simple_api package=fsspec
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/fsspec.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/certifi.rkyv"
 uv_client::registry_client::simple_api package=jinja2
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/jinja2.rkyv
 uv_client::registry_client::simple_api package=markupsafe
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/jinja2.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/markupsafe.rkyv
 uv_client::registry_client::simple_api package=mpmath
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/markupsafe.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/mpmath.rkyv
 uv_client::registry_client::simple_api package=networkx
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/mpmath.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/networkx.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/filelock.rkyv"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/fsspec.rkyv"
 uv_client::registry_client::simple_api package=sympy
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/networkx.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/sympy.rkyv
 uv_client::registry_client::simple_api package=torch
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/torch.rkyv
 uv_client::registry_client::simple_api package=typing-extensions
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv"
        0.049065s   7ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/certifi/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/certifi/"
        0.049405s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/jinja2/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/jinja2/"
        0.049543s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/markupsafe/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/markupsafe/"
        0.049623s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/mpmath/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/mpmath/"
        0.049724s   7ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/fsspec/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/fsspec/"
        0.049853s   7ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/filelock/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/filelock/"
        0.049999s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/networkx/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/networkx/"
        0.050123s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/typing-extensions/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/typing-extensions/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/sympy.rkyv"
        0.050524s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/sympy/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/sympy/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/torch.rkyv"
        0.051369s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/torch/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/torch/"
     uv_client::cached_client::new_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/networkx.rkyv
     uv_client::registry_client::parse_simple_api package=networkx
       uv_client::html::parse url=https://download.pytorch.org/whl/cpu/networkx/
     uv_client::cached_client::new_cache file=/tmp/.tmpdoGWRm/simple-v3/e1d141a6ca947dff/markupsafe.rkyv
     uv_client::registry_client::parse_simple_api package=markupsafe
       uv_client::html::parse url=https://download.pytorch.org/whl/cpu/markupsafe/
error: Failed to find a version of markupsafe ==2.1.5 that satisfies the requirement
(uv-issue) user@host:~/uv-issue$ uv pip sync --extra-index-url https://download.pytorch.org/whl/cpu --verbose --no-cache-dir requirements.txt
 uv::requirements::from_source source=requirements.txt
    0.003238s DEBUG uv_interpreter::python_environment Found a virtualenv through VIRTUAL_ENV at: /home/user/uv-issue/.venv
    0.003385s DEBUG uv_interpreter::interpreter Probing interpreter info for: /home/user/uv-issue/.venv/bin/python
    0.033278s DEBUG uv_interpreter::interpreter Found Python 3.11.5 for: /home/user/uv-issue/.venv/bin/python
    0.033820s DEBUG uv::commands::pip_sync Using Python 3.11.5 environment at /home/user/uv-issue/.venv/bin/python
    0.034182s DEBUG uv_client::registry_client Using registry request timeout of 300s
 uv_client::flat_index::from_entries
    0.035054s DEBUG uv_installer::plan Identified uncached requirement: certifi ==2024.2.2
    0.035100s DEBUG uv_installer::plan Identified uncached requirement: filelock ==3.13.1
    0.035153s DEBUG uv_installer::plan Identified uncached requirement: fsspec ==2024.2.0
    0.035194s DEBUG uv_installer::plan Identified uncached requirement: jinja2 ==3.1.3
    0.035236s DEBUG uv_installer::plan Identified uncached requirement: markupsafe ==2.1.5
    0.035276s DEBUG uv_installer::plan Identified uncached requirement: mpmath ==1.3.0
    0.035317s DEBUG uv_installer::plan Identified uncached requirement: networkx ==3.2.1
    0.035358s DEBUG uv_installer::plan Identified uncached requirement: sympy ==1.12
    0.035401s DEBUG uv_installer::plan Identified uncached requirement: torch ==2.1.1+cpu
    0.035442s DEBUG uv_installer::plan Identified uncached requirement: typing-extensions ==4.10.0
 uv_client::registry_client::simple_api package=certifi
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/certifi.rkyv
 uv_client::registry_client::simple_api package=filelock
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/filelock.rkyv
 uv_client::registry_client::simple_api package=fsspec
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/fsspec.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/certifi.rkyv"
 uv_client::registry_client::simple_api package=jinja2
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/fsspec.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/jinja2.rkyv
 uv_client::registry_client::simple_api package=markupsafe
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/markupsafe.rkyv
 uv_client::registry_client::simple_api package=mpmath
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/markupsafe.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/mpmath.rkyv
 uv_client::registry_client::simple_api package=networkx
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/mpmath.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/networkx.rkyv
 uv_client::registry_client::simple_api package=sympy
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/sympy.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/networkx.rkyv"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/jinja2.rkyv"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/filelock.rkyv"
 uv_client::registry_client::simple_api package=torch
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/sympy.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/torch.rkyv
 uv_client::registry_client::simple_api package=typing-extensions
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv"
        0.039190s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/certifi/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/certifi/"
        0.039526s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/fsspec/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/fsspec/"
        0.039665s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/markupsafe/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/markupsafe/"
        0.040023s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/mpmath/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/mpmath/"
        0.040182s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/networkx/
 uv_client::cached_client::from_path_sync path="/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/torch.rkyv"
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/networkx/"
        0.040567s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/jinja2/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/jinja2/"
        0.040719s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/filelock/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/filelock/"
        0.040811s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/sympy/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/sympy/"
        0.040905s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/typing-extensions/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/typing-extensions/"
        0.040989s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/torch/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/torch/"
     uv_client::cached_client::new_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/sympy.rkyv
     uv_client::registry_client::parse_simple_api package=sympy
       uv_client::html::parse url=https://download.pytorch.org/whl/cpu/sympy/
     uv_client::cached_client::new_cache file=/tmp/.tmpzx8Hp3/simple-v3/e1d141a6ca947dff/jinja2.rkyv
     uv_client::registry_client::parse_simple_api package=jinja2
       uv_client::html::parse url=https://download.pytorch.org/whl/cpu/jinja2/
error: Failed to find a version of jinja2 ==3.1.3 that satisfies the requirement
(uv-issue) user@host:~/uv-issue$ uv pip sync --extra-index-url https://download.pytorch.org/whl/cpu --verbose --no-cache-dir requirements.txt
 uv::requirements::from_source source=requirements.txt
    0.002837s DEBUG uv_interpreter::python_environment Found a virtualenv through VIRTUAL_ENV at: /home/user/uv-issue/.venv
    0.002956s DEBUG uv_interpreter::interpreter Probing interpreter info for: /home/user/uv-issue/.venv/bin/python
    0.030127s DEBUG uv_interpreter::interpreter Found Python 3.11.5 for: /home/user/uv-issue/.venv/bin/python
    0.030578s DEBUG uv::commands::pip_sync Using Python 3.11.5 environment at /home/user/uv-issue/.venv/bin/python
    0.031037s DEBUG uv_client::registry_client Using registry request timeout of 300s
 uv_client::flat_index::from_entries
    0.031997s DEBUG uv_installer::plan Identified uncached requirement: certifi ==2024.2.2
    0.032045s DEBUG uv_installer::plan Identified uncached requirement: filelock ==3.13.1
    0.032087s DEBUG uv_installer::plan Identified uncached requirement: fsspec ==2024.2.0
    0.032130s DEBUG uv_installer::plan Identified uncached requirement: jinja2 ==3.1.3
    0.032160s DEBUG uv_installer::plan Identified uncached requirement: markupsafe ==2.1.5
    0.032186s DEBUG uv_installer::plan Identified uncached requirement: mpmath ==1.3.0
    0.032226s DEBUG uv_installer::plan Identified uncached requirement: networkx ==3.2.1
    0.032275s DEBUG uv_installer::plan Identified uncached requirement: sympy ==1.12
    0.032295s DEBUG uv_installer::plan Identified uncached requirement: torch ==2.1.1+cpu
    0.032339s DEBUG uv_installer::plan Identified uncached requirement: typing-extensions ==4.10.0
 uv_client::registry_client::simple_api package=certifi
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/certifi.rkyv
 uv_client::registry_client::simple_api package=filelock
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/filelock.rkyv
 uv_client::registry_client::simple_api package=fsspec
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/fsspec.rkyv
 uv_client::registry_client::simple_api package=jinja2
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/jinja2.rkyv
 uv_client::registry_client::simple_api package=markupsafe
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/markupsafe.rkyv
 uv_client::registry_client::simple_api package=mpmath
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/mpmath.rkyv
 uv_client::registry_client::simple_api package=networkx
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/networkx.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/certifi.rkyv"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/jinja2.rkyv"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/filelock.rkyv"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/fsspec.rkyv"
 uv_client::registry_client::simple_api package=sympy
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/sympy.rkyv
 uv_client::registry_client::simple_api package=torch
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/sympy.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/torch.rkyv
 uv_client::registry_client::simple_api package=typing-extensions
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/torch.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv"
        0.038966s   6ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/certifi/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/certifi/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/mpmath.rkyv"
        0.039336s   5ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/fsspec/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/fsspec/"
        0.039568s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/jinja2/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/jinja2/"
        0.039704s   6ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/filelock/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/filelock/"
        0.039815s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/sympy/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/sympy/"
        0.039927s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/torch/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/torch/"
        0.040016s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/typing-extensions/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/typing-extensions/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/markupsafe.rkyv"
        0.040402s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/mpmath/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/mpmath/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/networkx.rkyv"
        0.040665s   5ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/markupsafe/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/markupsafe/"
        0.040826s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/networkx/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/networkx/"
     uv_client::cached_client::new_cache file=/tmp/.tmpIs8L3f/simple-v3/e1d141a6ca947dff/certifi.rkyv
     uv_client::registry_client::parse_simple_api package=certifi
       uv_client::html::parse url=https://download.pytorch.org/whl/cpu/certifi/
error: Failed to find a version of certifi ==2024.2.2 that satisfies the requirement
(uv-issue) user@host:~/uv-issue$ uv pip sync --extra-index-url https://download.pytorch.org/whl/cpu --verbose --no-cache-dir requirements.txt
 uv::requirements::from_source source=requirements.txt
    0.003736s DEBUG uv_interpreter::python_environment Found a virtualenv through VIRTUAL_ENV at: /home/user/uv-issue/.venv
    0.003942s DEBUG uv_interpreter::interpreter Probing interpreter info for: /home/user/uv-issue/.venv/bin/python
    0.033427s DEBUG uv_interpreter::interpreter Found Python 3.11.5 for: /home/user/uv-issue/.venv/bin/python
    0.034016s DEBUG uv::commands::pip_sync Using Python 3.11.5 environment at /home/user/uv-issue/.venv/bin/python
    0.034605s DEBUG uv_client::registry_client Using registry request timeout of 300s
 uv_client::flat_index::from_entries
    0.035582s DEBUG uv_installer::plan Identified uncached requirement: certifi ==2024.2.2
    0.035639s DEBUG uv_installer::plan Identified uncached requirement: filelock ==3.13.1
    0.035658s DEBUG uv_installer::plan Identified uncached requirement: fsspec ==2024.2.0
    0.035700s DEBUG uv_installer::plan Identified uncached requirement: jinja2 ==3.1.3
    0.035742s DEBUG uv_installer::plan Identified uncached requirement: markupsafe ==2.1.5
    0.035783s DEBUG uv_installer::plan Identified uncached requirement: mpmath ==1.3.0
    0.035831s DEBUG uv_installer::plan Identified uncached requirement: networkx ==3.2.1
    0.035871s DEBUG uv_installer::plan Identified uncached requirement: sympy ==1.12
    0.035908s DEBUG uv_installer::plan Identified uncached requirement: torch ==2.1.1+cpu
    0.035949s DEBUG uv_installer::plan Identified uncached requirement: typing-extensions ==4.10.0
 uv_client::registry_client::simple_api package=certifi
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/certifi.rkyv
 uv_client::registry_client::simple_api package=filelock
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/filelock.rkyv
 uv_client::registry_client::simple_api package=fsspec
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/fsspec.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/certifi.rkyv"
 uv_client::registry_client::simple_api package=jinja2
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/jinja2.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/fsspec.rkyv"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/filelock.rkyv"
 uv_client::registry_client::simple_api package=markupsafe
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/jinja2.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/markupsafe.rkyv
 uv_client::registry_client::simple_api package=mpmath
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/mpmath.rkyv
 uv_client::registry_client::simple_api package=networkx
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/mpmath.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/networkx.rkyv
 uv_client::registry_client::simple_api package=sympy
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/sympy.rkyv
 uv_client::registry_client::simple_api package=torch
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/sympy.rkyv"
   uv_client::cached_client::get_cacheable
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/torch.rkyv
 uv_client::registry_client::simple_api package=typing-extensions
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/torch.rkyv"
   uv_client::cached_client::get_cacheable
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/markupsafe.rkyv"
     uv_client::cached_client::read_and_parse_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/typing-extensions.rkyv"
        0.040229s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/certifi/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/certifi/"
 uv_client::cached_client::from_path_sync path="/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/networkx.rkyv"
        0.040553s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/fsspec/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/fsspec/"
        0.040640s   4ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/filelock/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/filelock/"
        0.040740s   3ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/jinja2/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/jinja2/"
        0.040814s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/mpmath/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/mpmath/"
        0.040886s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/sympy/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/sympy/"
        0.040918s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/torch/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/torch/"
        0.041002s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/markupsafe/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/markupsafe/"
        0.041092s   1ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/typing-extensions/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/typing-extensions/"
        0.041163s   2ms DEBUG uv_client::cached_client No cache entry for: https://download.pytorch.org/whl/cpu/networkx/
     uv_client::cached_client::fresh_request url="https://download.pytorch.org/whl/cpu/networkx/"
     uv_client::cached_client::new_cache file=/tmp/.tmpsH6u5r/simple-v3/e1d141a6ca947dff/certifi.rkyv
     uv_client::registry_client::parse_simple_api package=certifi
       uv_client::html::parse url=https://download.pytorch.org/whl/cpu/certifi/
error: Failed to find a version of certifi ==2024.2.2 that satisfies the requirement

@korhojoa korhojoa changed the title Installing packages from multiple indexes fails if the desired versions are not found from the first repository where the package is available. Installing packages from multiple indexes fails if the desired versions are not found from the first index where the package is available. Mar 5, 2024
@zanieb
Copy link
Member

zanieb commented Mar 5, 2024

@zanieb zanieb added the duplicate This issue or pull request already exists label Mar 5, 2024
@korhojoa
Copy link
Author

korhojoa commented Mar 5, 2024

Yes, I understand that similar things have been discussed, and the reproduction is a simple one that's very similar. Those issues are kind of outdated now that the preference for --index-url and --extra-index-url was switched.

This example was supposed to be a minimal reproducible example. The full issue is that if it is necessary to use vendor or third-party indexes to resolve packages, the summary doesn't really help.

If you have more than a few packages and more than one index, the chance for the requirements to become unsolvable becomes quite high.

#2083 (comment) does not help if there is a package which has local versioning (like torch in this case, as it exists in both)

Is there an issue kept open (or documentation somewhere) with a stance on if this use-case would be supported? I would love to switch to uv but as I need to use a handful of indexes and they do have packages which overlap, it doesn't really function as desired.

@BurntSushi
Copy link
Member

I think #171 is the issue with the most discussion. The issue started with an idea around pinning specific packages to a specific index, but the discussion kind of spirals out to the more general problem of how pip deals with multiple indexes. In particular, there are security concerns regarding dependency confusion with how pip operates.

I think the longer term vision is that we hope to address these sorts of use cases in higher level project management features that will hopefully give one a lot more control over which registries are used.

@atti92

This comment was marked as off-topic.

@atti92
Copy link

atti92 commented Mar 5, 2024

It seems like this is the issue we are interested in to find a solution for after debugging my original issue.

We have a couple of different indexes where we store dev versions for packages.
We also use a nexus for internal release versions.
And we also need to use pypi for external dependencies.

This means the same package can be in multiple different indexes, but depending on the version it may come from different indexes.

Currently we just use pip by adding all our indexes as extra-index-urls, and all our internal dependencies have explicit versions, so there is no fear of getting packages from the wrong index.

This is not possible with uv currently, because if we request a dev version, the resolution stops at the first index where the package has any versions, even if it's invalid or doesn't match the request.

In my idea if uv were to look for resolutions in the indexes in a specific order, and only stop if it finds a valid version that satisfies the request that would solve many pip incompatibilities.

@charliermarsh
Copy link
Member

I'm going to close in favor of #171 and other issues.

@charliermarsh charliermarsh closed this as not planned Won't fix, can't repro, duplicate, stale Mar 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate This issue or pull request already exists
Projects
None yet
Development

No branches or pull requests

5 participants