chore: move the Python SDKs to a single root uv workspace - #1775
chore: move the Python SDKs to a single root uv workspace#1775devin-ai-integration[bot] wants to merge 1 commit into
Conversation
Co-Authored-By: mish@e2b.dev <mish@e2b.dev>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
|
Package ArtifactsBuilt from 8aecc87. Download artifacts from this workflow run. JS SDK ( npm install ./e2b-2.46.1-devin-1787828318-uv-workspace.0.tgzCLI ( npm install ./e2b-cli-2.18.1-devin-1787828318-uv-workspace.0.tgzCode Interpreter JS SDK ( npm install ./e2b-code-interpreter-2.7.2-devin-1787828318-uv-workspace.0.tgzDesktop JS SDK ( npm install ./e2b-desktop-2.3.3-devin-1787828318-uv-workspace.0.tgzPython SDK ( pip install ./e2b-2.46.0+devin.1787828318.uv.workspace-py3-none-any.whlCode Interpreter Python SDK ( pip install ./e2b_code_interpreter-2.9.1+devin.1787828318.uv.workspace-py3-none-any.whlDesktop Python SDK ( pip install ./e2b_desktop-2.4.3+devin.1787828318.uv.workspace-py3-none-any.whl |
Summary
The three Python packages had three separate
uv.locks and two nested workspaces that each claimed../python-sdkas a member — soe2b's transitive dependency set was resolved independently (and could drift) per consumer, andpackages/code-interpreter-pythonwas effectively the workspace root of the SDK it depends on. This makes the repo root the single uv workspace root:One
uv.lockand one.venvat the root; the per-package locks and[tool.uv.workspace]/[tool.uv.sources]blocks are gone. The stubpackage.jsons stay, since changesets still versions and releases these packages alongside the JS ones.Because the fan-out commands (
pnpm run lint/typecheck/test) hop between members of one shared venv, every uv invocation is now--all-packages, which keeps the environment stable instead of re-syncing per package:CI mirrors that:
uv sync --locked --all-packages(lint/typecheck no longer sync onlypackages/python-sdk, which would not have covered the other two).The one non-obvious consequence: inside a workspace
uv builddefaults to the workspace root'sdist/, which would have pooled all three SDKs in one directory and leftuv publish's defaultdist/*glob (relative to the package dir) matching nothing. Every release/artifact build therefore passes--out-dir distexplicitly:Path filters gained
pyproject.toml/uv.lockat the root (previously each package's lock was covered by its ownpackages/**glob), and.vscodepoints at the root interpreter.No package sources or dependency versions change: the lock resolves the same 86 packages, and
pnpm run lint,pnpm run format,pnpm run typecheckanduv buildpass for all three packages. No changeset — build tooling only, no public surface change.Link to Devin session: https://app.devin.ai/sessions/818374226bae45bc9852dbee886cac92
Open in Devin Desktop: https://app.devin.ai/desktop/session/818374226bae45bc9852dbee886cac92?variant=devin
Requested by: @mishushakov