# PEP 751: lock files (again)

**URL:** <https://discuss.python.org/t/pep-751-lock-files-again/59173>\
**Category:** Standards\
**Created:** [July 25, 2024, 6:51pm UTC](https://discuss.python.org/t/pep-751-lock-files-again/59173 "2024-07-25T18:51:17Z")\
**Posts on this page:** 1\
**Showing post:** 253

<div class="post-metadata">

**Author:** ![charliermarsh](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/charliermarsh/32/10246_2.png) [@charliermarsh](https://discuss.python.org/u/charliermarsh)\
**Post date:** [September 12, 2024, 1:31pm UTC](https://discuss.python.org/t/pep-751-lock-files-again/59173/253 "2024-09-12T13:31:02Z")

</div>

One thing I realized after putting up this PR, though, is that adding the markers to the nodes isn’t sufficient for our use-case, because we support installing from multiple different “roots” in the lockfile (because we support “workspaces”, groups of local packages that depend on one another).

With uv, you could have a lockfile that includes both local package A and local package B, which may not depend on one another (they can, though – A could depend on B, etc.). And you can install _just_ A and its dependencies, or _just_ B and its dependencies (`uv sync --package A` vs. `uv sync --package B`, from the same lockfile). So to support that, you can’t have a flat list of packages with markers that tell you when to install them, since A could depend on C with `sys_platform == 'win32'` while B depends on C with `sys_platform == 'darwin'`. The “combined” marker would be `sys_platform == 'win32' or sys_platform == 'darwin'`… But you don’t want to _always_ install C on those platforms – it depends on whether the user request the dependency tree rooted at A or B.

So, from that perspective, the markers kind of represent… the superset of platforms on which the package might be installed? Like, C would never be installed on platforms _other_ than `win32` or `darwin`, but it wouldn’t be installed on `win32` unconditionally.

As long as we (uv) want to support this, I think we need to track markers on edges, not nodes. (I don’t have a strong objection to including them on the nodes, but we wouldn’t use those markers for anything.)

---

_[View the full topic](https://discuss.python.org/t/pep-751-lock-files-again/59173)._
