fix(python): make cloudpickle an optional dependency#215
Merged
DorianZheng merged 1 commit intomainfrom Feb 6, 2026
Merged
Conversation
- Move cloudpickle from required to optional-dependencies[orchestration] - Add lint check in lint.yml to enforce no required dependencies - Update build-wheels.yml comment explaining --no-index as lint - Bump Node SDK version to 0.2.7 The BoxRuntime orchestration feature requires cloudpickle for serializing Python closures into VMs. Most users don't need this, so it's now opt-in via: pip install boxlite[orchestration] Fixes wheel build failure where --no-index couldn't resolve cloudpickle.
f4446d6 to
841b0bc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
[orchestration]extra--no-indexcomment in build-wheels.yml to document its lint purposeProblem
The wheel test job was failing with:
The
--no-indexflag prevents PyPI access, but cloudpickle wasn't in the wheelhouse.Solution
cloudpickle is only used by
BoxRuntime(multi-box orchestration), which is already wrapped intry/except ImportError. Making it optional aligns the dependency declaration with the existing code pattern.Before:
pip install boxlite # Requires cloudpickleAfter:
Test plan
python -c "import boxlite"works without cloudpickle installedpip install boxlite[orchestration]+from boxlite import BoxRuntimeworks