Skip to content

uv.lock -> pex optimization#23365

Draft
wisechengyi wants to merge 1 commit into
pantsbuild:mainfrom
wisechengyi:uv/venvopt
Draft

uv.lock -> pex optimization#23365
wisechengyi wants to merge 1 commit into
pantsbuild:mainfrom
wisechengyi:uv/venvopt

Conversation

@wisechengyi

Copy link
Copy Markdown
Contributor

No description provided.

…ockfile

When building a PEX for a small set of requirements from a uv resolve,
the previous behavior synced the entire lockfile into a shared venv, which
exhausted disk on cold CI agents with large resolves (e.g. torch + CUDA).

For the PexRequirements case (a subset of a resolve), we now:
1. Add a [dependency-groups] section to the ephemeral pyproject.toml
2. Run `uv lock` to register the group in the lock (~0ms, no network)
3. Run `uv sync --only-group pants-subset --frozen` to install only the
   transitive dependencies of the requested packages

Each unique subset gets its own venv path (keyed by a hash of the
req_strings) so different targets don't overwrite each other's venvs.

The EntireLockfile case is unchanged (still uses --all-extras).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant