What's New
✨ Features
-
Add first-class Python sandbox pool support for both async and sync clients. This release includes single-node in-memory pools, optional Redis-backed distributed pool stores via
opensandbox[pool-redis], lifecycle snapshots, resize/reconcile behavior, stale-idle cleanup, and documentation for operating distributed pools. Redis support is exposed fromopensandbox.pool_redisso the base SDK import path does not require Redis dependencies. by @ninan-nn in #823 -
Add snapshot APIs to the Python SDK. Consumers can create, get, list, and delete snapshots, and can create new sandboxes from a
snapshotId; snapshot creation remains asynchronous, so callers should poll until the snapshot reachesReadyorFailed. Docker-backed servers support the full flow in this release, while unsupported runtimes may return not implemented. by @ninan-nn in #764 -
Add secure endpoint access surfaces. Python async and sync SDKs now support
secureAccesson sandbox creation for Kubernetes gateway deployments, and expose signed endpoint retrieval for short-lived sandbox route access without sharing static tokens. Default endpoint behavior is unchanged unless secure access is explicitly requested. by @ninan-nn in #745 and by @Pangjiping in #787 -
Extend Python sandbox model support for new platform and storage options. The SDK now recognizes Windows platform OS values and syncs PVC auto-provisioning fields across the Python models and converters, keeping request payloads aligned with the updated lifecycle contract. by @Pangjiping in #785 and #749
🐛 Bug Fixes
-
Preserve API error detail from sandbox creation failures. FastAPI-style wrapped error responses are now parsed by the Python exception conversion path so callers keep the original server context instead of receiving a flattened fallback error. by @Gujiassh in #824
-
Preserve
timeout=Nonefor manual-cleanup sandbox creation. The Python SDK now serializes an explicitNonetimeout as JSONnullinstead of omitting the field, so manual cleanup intent is retained while keeping the existing publictimeout: timedelta | NoneAPI. by @Gujiassh in #760 -
Harden command streaming error parsing for mixed deployments. The Python SDK now tolerates
traceback: nullin SSE command-start failures while execd normalizes foreground command error payloads to match the API contract. by @Aboysky in #701
📦 Misc
-
Regenerate Python lifecycle client code for updated snapshot routes, including snapshot creation and deletion endpoint changes. by @ninan-nn in #840
-
Refresh Python sandbox SDK development dependencies:
pygments2.20.0 andpytest9.0.3. by @dependabot in #671 and #720
👥 Contributors
Thanks to these contributors ❤️