Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions packages/code-interpreter-python/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
"name": "@e2b/code-interpreter-python",
"private": true,
"version": "2.10.4",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the version actually needed here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The version field was already there (not added by this PR). It's used by the postVersion script below, which syncs it into pyproject.toml via uv version on release — same pattern as packages/python-sdk. Only the dependencies block is new.

"dependencies": {
"@e2b/python-sdk": "workspace:*"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 After merging, a release with only a python-sdk changeset also publishes a new e2b-code-interpreter to PyPI, and its test suite is skipped. Changesets reads workspace:* as an exact pin, so with updateInternalDependencies: "patch" the dependent gets a patch bump. The test gate in release.yml:110 only looks at raw changeset files, which never name the dependent. Fix: base the per-package release outputs on the computed plan (pnpm changeset status --output, the same source publish_command.cjs reads), so every package that gets bumped also has its tests run.

Why this was flagged

Trigger: a changeset that bumps only @ e2b/python-sdk, then the Release workflow. Changesets resolves the dependent range workspace:* to the dependency's old version. Combined with updateInternalDependencies: "patch" (.changeset/config.json:10) and privatePackages.version: true, this adds a patch release of @ e2b/code-interpreter-python to the plan. pnpm run version bumps it, and postVersion/uv version rewrites pyproject. pnpm run publish then runs its postPublish (uv build && uv publish), which uploads a new e2b-code-interpreter to PyPI. The preflight step at release.yml:106-111 calls is_release_for_package.sh, and that script (line 13) only checks @ changesets/read changeset files for the package name. So code_interpreter_python is false, and code-interpreter-python-tests (release.yml:185-190) is skipped. On the base branch the importer had no dependency, so no bump, publish or skipped gate happened. Nothing else stops it: the publish job only requires that no needed job failed, and skipped jobs pass that check.

Verification: The diff adds "@ e2b/python-sdk": "workspace:*" in packages/code-interpreter-python/package.json:5-7, so any python-sdk bump gives the dependent a patch release. release.yml:110 runs is_release_for_package.sh, which reads only the raw changeset files, so it outputs false. The code-interpreter-python-tests job (release.yml:185-190) is skipped, and publish (release.yml:231) still runs.

},
"scripts": {
"test": "uv run pytest -n 4 --verbose -x",
"postVersion": "uv version --frozen $(pnpm pkg get version --workspaces=false | tr -d \\\")",
Expand Down
6 changes: 5 additions & 1 deletion pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading