uv/crates/uv-resolver/src
Charlie Marsh 326e4497da
Allow local indexes to reference remote files (#14294)
## Summary

Previously, we assumed that local indexes only referenced local files.
However, it's fine for a local index (like, a `file://`-based Simple
API) to reference a remote file, and in fact Pyodide operates this way.

Closes https://github.com/astral-sh/uv/issues/14227.

## Test Plan

Ran `UV_INDEX=$(pyodide config get package_index) cargo run add anyio`,
which produced this lockfile:

```toml
version = 1
revision = 2
requires-python = ">=3.13.2"

[[package]]
name = "anyio"
version = "4.9.0"
source = { registry = "../../../Library/Caches/.pyodide-xbuildenv-0.30.5/0.27.7/xbuildenv/pyodide-root/package_index" }
dependencies = [
    { name = "idna" },
    { name = "sniffio" },
]
wheels = [
    { url = "https://cdn.jsdelivr.net/pyodide/v0.27.7/full/anyio-4.9.0-py3-none-any.whl", hash = "sha256:e1d9180d4361fd71d1bc4a7007fea6cae1d18792dba9d07eaad89f2a8562f71c" },
]

[[package]]
name = "foo"
version = "0.1.0"
source = { virtual = "." }
dependencies = [
    { name = "anyio" },
]

[package.metadata]
requires-dist = [{ name = "anyio", specifier = ">=4.9.0" }]

[[package]]
name = "idna"
version = "3.7"
source = { registry = "../../../Library/Caches/.pyodide-xbuildenv-0.30.5/0.27.7/xbuildenv/pyodide-root/package_index" }
wheels = [
    { url = "https://cdn.jsdelivr.net/pyodide/v0.27.7/full/idna-3.7-py3-none-any.whl", hash = "sha256:9d4685891e3e37434e09b1becda7e96a284e660c7aea9222564d88b6c3527c09" },
]

[[package]]
name = "sniffio"
version = "1.3.1"
source = { registry = "../../../Library/Caches/.pyodide-xbuildenv-0.30.5/0.27.7/xbuildenv/pyodide-root/package_index" }
wheels = [
    { url = "https://cdn.jsdelivr.net/pyodide/v0.27.7/full/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:9215f9917b34fc73152b134a3fc0a2eb0e4a49b0b956100cad75e84943412bb9" },
]
```
2025-06-26 20:17:42 +00:00
..
lock Allow local indexes to reference remote files (#14294) 2025-06-26 20:17:42 +00:00
pubgrub Add `[tool.uv.dependency-groups].mygroup.requires-python` (#13735) 2025-06-13 22:04:13 +00:00
resolution Turn off `clippy::struct_excessive_bools` rule (#14102) 2025-06-17 12:18:54 +02:00
resolver Add auto-detection for AMD GPUs (#14176) 2025-06-21 15:21:06 +00:00
candidate_selector.rs Bump MSRV to 1.85 and Edition 2024 (#13516) 2025-05-18 19:38:43 -04:00
dependency_mode.rs Store resolution options in lockfile (#5264) 2024-07-22 08:28:22 -04:00
dependency_provider.rs All (virtual) packages must have a priority (#10853) 2025-01-23 16:09:47 +00:00
error.rs Hint at `tool.uv.environments` on resolution error (#13455) 2025-06-06 14:17:52 +00:00
exclude_newer.rs Update schemars 1.0.0 (#13693) 2025-06-24 21:43:31 +02:00
exclusions.rs Always reinstall local source trees passed to `uv pip install` (#12176) 2025-03-17 21:12:21 +00:00
flat_index.rs Bump MSRV to 1.85 and Edition 2024 (#13516) 2025-05-18 19:38:43 -04:00
fork_indexes.rs Bump MSRV to 1.85 and Edition 2024 (#13516) 2025-05-18 19:38:43 -04:00
fork_strategy.rs Introduce a `--fork-strategy` preference mode (#9868) 2024-12-13 16:05:07 -05:00
fork_urls.rs Bump MSRV to 1.85 and Edition 2024 (#13516) 2025-05-18 19:38:43 -04:00
graph_ops.rs Support conflict markers in `uv export` (#11643) 2025-02-20 12:19:46 -08:00
lib.rs Add `[tool.uv.dependency-groups].mygroup.requires-python` (#13735) 2025-06-13 22:04:13 +00:00
manifest.rs Move lowered requirement source type out of `uv-pypi-types` (#12356) 2025-03-20 21:16:12 -04:00
marker.rs Add `[tool.uv.dependency-groups].mygroup.requires-python` (#13735) 2025-06-13 22:04:13 +00:00
options.rs Disallow mixing requirements across PyTorch indexes (#13179) 2025-04-28 20:06:18 +00:00
pins.rs Improve file pinning comments (#10387) 2025-01-08 11:42:25 +00:00
preferences.rs Treat already-installed base environment packages as preferences in `uv run --with` (#13284) 2025-05-04 23:24:57 +00:00
prerelease.rs Move lowered requirement source type out of `uv-pypi-types` (#12356) 2025-03-20 21:16:12 -04:00
python_requirement.rs Add `[tool.uv.dependency-groups].mygroup.requires-python` (#13735) 2025-06-13 22:04:13 +00:00
redirect.rs Add `DisplaySafeUrl` newtype to prevent leaking of credentials by default (#13560) 2025-05-27 00:05:30 +02:00
resolution_mode.rs Respect fork markers in `--resolution-mode=lowest-direct` (#8839) 2024-11-05 21:09:38 +00:00
universal_marker.rs Apply first set of Rustfmt edition 2024 changes (#13478) 2025-05-16 20:19:02 -04:00
version_map.rs Turn off `clippy::struct_excessive_bools` rule (#14102) 2025-06-17 12:18:54 +02:00
yanks.rs Move lowered requirement source type out of `uv-pypi-types` (#12356) 2025-03-20 21:16:12 -04:00