fix(sandbox): unblock multi-sandbox when host pyzmq lags PyPI - #10690
fix(sandbox): unblock multi-sandbox when host pyzmq lags PyPI#10690Light2Dark wants to merge 1 commit into
Conversation
An exact host pin conflicts with the version uv export locks from PyPI, so multi-sandbox installs fail after a new pyzmq release.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
All contributors have signed the CLA ✍️ ✅ |
There was a problem hiding this comment.
1 issue found across 4 files
You’re at about 99% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="marimo/_cli/sandbox.py">
<violation number="1" location="marimo/_cli/sandbox.py:583">
P1: When a notebook’s existing `pyzmq` line has a false environment marker, this name-only check suppresses the unconditional IPC dependency, leaving the kernel venv without `pyzmq`. Evaluate PEP 508 markers before treating an existing line as satisfying `get_ipc_kernel_deps()`.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
| d.lower().split("[")[0].split(">=")[0].split("==")[0] | ||
| for d in normalized | ||
| } | ||
| existing = {_requirement_name(dep) for dep in normalized} |
There was a problem hiding this comment.
P1: When a notebook’s existing pyzmq line has a false environment marker, this name-only check suppresses the unconditional IPC dependency, leaving the kernel venv without pyzmq. Evaluate PEP 508 markers before treating an existing line as satisfying get_ipc_kernel_deps().
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At marimo/_cli/sandbox.py, line 583:
<comment>When a notebook’s existing `pyzmq` line has a false environment marker, this name-only check suppresses the unconditional IPC dependency, leaving the kernel venv without `pyzmq`. Evaluate PEP 508 markers before treating an existing line as satisfying `get_ipc_kernel_deps()`.</comment>
<file context>
@@ -570,15 +579,14 @@ def get_sandbox_requirements(
- d.lower().split("[")[0].split(">=")[0].split("==")[0]
- for d in normalized
- }
+ existing = {_requirement_name(dep) for dep in normalized}
+ existing.discard("")
for dep in additional_deps:
</file context>
This pull request was authored by a coding agent.
📝 Summary
Opening a notebook from
marimo edit --sandbox(directory or home page) can fail to build the kernel venv:The editor pinned its installed pyzmq into the sandbox so host and kernel would match.
uv exportindependently locks marimo's transitive pyzmq from PyPI. Those versions diverge whenever the host was installed before a new pyzmq release — here 27.1.0 in the repo lock vs 27.2.0 on PyPI. The notebook never asked for pyzmq.We stopped exact-pinning. IPC only needs
pyzmq>=27.1.0; ZMQ does not require the same wheel on both sides. If the lock already has pyzmq, we skip adding a second line. That avoids a merge engine for a conflict we were creating ourselves.📋 Pre-Review Checklist
✅ Merge Checklist