You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a tracking ticket for exposing a way to generate a cross platform lock file using the uv CLI. This ticket is primarily about making this available as a library feature, with exposure on the CLI being a step for making it easy to interact with. For example, this should be done via uv pip compile --unstable-uv-lock-file.
A bit ago, I did a prototype of this by roughly doing the following:
Ignore markers on dependencies.
Make the resolver "fork" internally whenever multiple packages enter the dependency tree as a result of ignoring markers.
Unify all forks of the resolver at the end into one set of locked versions for packages. The result is a "universal" or "cross platform." Its principally differs from a requirements.txt in that it can have multiple versions of the same package in it, and it includes all of the artifacts (wheels and source dist) for each distribution. Installing from a lock file thus requires some filtering.
While this prototype demonstrated the idea, it took a number of shortcuts that made it work only in a limited number of cases.
NOTE: This is distinct from #3347 in that this goal of this ticket is make lock file generation work. In #3347, the goal is to integrate lock file generate with the rest of the uv workspace commands.
A good litmus test for this issue being completed is that we can run the following:
And get a uv.lock file as output. This example is interesting because it requires the resolver to "fork." Namely, with 3.10 as the minimal version of Python, both anyio<4 and anyio>=4.3.0 are constraints that need to be resolved simultaneously. Since they must necessarily lead to different versions of anyio, the resulting lock file will contain multiple versions of anyio.
The text was updated successfully, but these errors were encountered:
BurntSushi
added
preview
Experimental behavior
tracking
A "meta" issue that tracks completion of a bigger task via a list of smaller scoped issues.
labels
May 3, 2024
Work items
MarkerTree
s #3355This is a tracking ticket for exposing a way to generate a cross platform lock file using the
uv
CLI. This ticket is primarily about making this available as a library feature, with exposure on the CLI being a step for making it easy to interact with. For example, this should be done viauv pip compile --unstable-uv-lock-file
.A bit ago, I did a prototype of this by roughly doing the following:
requirements.txt
in that it can have multiple versions of the same package in it, and it includes all of the artifacts (wheels and source dist) for each distribution. Installing from a lock file thus requires some filtering.While this prototype demonstrated the idea, it took a number of shortcuts that made it work only in a limited number of cases.
NOTE: This is distinct from #3347 in that this goal of this ticket is make lock file generation work. In #3347, the goal is to integrate lock file generate with the rest of the
uv
workspace commands.A good litmus test for this issue being completed is that we can run the following:
And get a
uv.lock
file as output. This example is interesting because it requires the resolver to "fork." Namely, with 3.10 as the minimal version of Python, bothanyio<4
andanyio>=4.3.0
are constraints that need to be resolved simultaneously. Since they must necessarily lead to different versions ofanyio
, the resulting lock file will contain multiple versions ofanyio
.The text was updated successfully, but these errors were encountered: