-
Notifications
You must be signed in to change notification settings - Fork 667
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support private virtualenvs and locks for workspace members #4574
Comments
This would be a really clean solution to the refactor I'm trying to do. It also seems like a lightweight change that unlocks a lot of the what Pants can do (finding the minimum set of dependencies required for each project, although that works per file and is a lot more powerful). |
… private or shared one (astral-sh#4574)
…rivate or shared one (astral-sh#4574)
…rivate or shared one (astral-sh#4574)
…rivate or shared one (astral-sh#4574)
… private or shared one (astral-sh#4574)
…rivate or shared one (astral-sh#4574)
…rivate or shared one (astral-sh#4574)
…rn the private or shared location (astral-sh#4574)
How does this differ from excluding the projects from the workspace? |
Excluded projects cannot use workspace dependencies, these can. |
It's an interesting idea... I understand the motivation but needs some thought / discussion before committing to it. |
Yesterday I couldn't resist trying to implement it, it turned out to be a lot more straightforward than I expected. |
Workspace members currently share a single
uv.lock
and.venv
, which comes with a couple of side-effects:This is unlike most languages, but usually no big deal, and having one
.venv
is convenient for most use-cases.But it isn't for everyone, and I think it would be useful to introduce a distinct kind of member, which:
uv.lock
/.venv
uv.lock
/.venv
, with only itself and its dependencies (workspace and otherwise).I have tried to achieve this with one simple change, and it mostly works, but it's clunky and I think it could be much better.
Let's say we have this tree:
And let's say we're ok with libraries using the default shared lock, but apps should not.
The workspace could be defined as
This is both explicit and efficient because workspace discovery won't have to read individual
pyproject.toml
files.Wrote a basic implementation with a sample workspace.
Hope this makes sense.
The text was updated successfully, but these errors were encountered: