mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 19:08:04 +00:00
Implement PEP 440-compliant local version semantics (#8797)
Implement a full working version of local version semantics. The (AFAIA) major move towards this was implemented in #2430. This added support such that the version specifier `torch==2.1.0+cpu` would install `torch@2.1.0+cpu` and consider `torch@2.1.0+cpu` a valid way to satisfy the requirement `torch==2.1.0` in further dependency resolution. In this feature, we more fully support local version semantics. Namely, we now allow `torch==2.1.0` to install `torch@2.1.0+cpu` regardless of whether `torch@2.1.0` (no local tag) actually exists. We do this by adding an internal-only `Max` value to local versions that compare greater to all other local versions. Then we can translate `torch==2.1.0` into bounds: greater than 2.1.0 with no local tag and less than 2.1.0 with the `Max` local tag. Depends on https://github.com/astral-sh/packse/pull/227.
This commit is contained in:
parent
8ef5949294
commit
c49c7bdf97
15 changed files with 631 additions and 840 deletions
|
@ -152,18 +152,6 @@ def main(scenarios: list[Path], snapshot_update: bool = True):
|
|||
else:
|
||||
scenario["python_patch"] = False
|
||||
|
||||
# We don't yet support local versions that aren't expressed as direct dependencies.
|
||||
for scenario in data["scenarios"]:
|
||||
expected = scenario["expected"]
|
||||
|
||||
if scenario["name"] in (
|
||||
"local-less-than-or-equal",
|
||||
"local-simple",
|
||||
"local-transitive-confounding",
|
||||
"local-used-without-sdist",
|
||||
):
|
||||
expected["satisfiable"] = False
|
||||
|
||||
# Split scenarios into `install`, `compile` and `lock` cases
|
||||
install_scenarios = []
|
||||
compile_scenarios = []
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue