Repository navigation
feat(snapshots): wait for a snapshot to be Ready - #55
Merged
Merged
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
sandboxes.wait_for_snapshot polls a snapshot until it is Ready, raising on
Failed (with its reason) or on timeout, and sandbox.snapshot takes
wait_until_ready=True to snapshot and wait in one call. Sync and async,
matching the JS SDK's waitForSnapshot and snapshot({ waitUntilReady }).
Signed-off-by: Mayur Das <mayur.das@neevcloud.com>
mayur-tolexo
force-pushed
the
feat/snapshot-wait
branch
from
October 16, 2026 18:48
c68eca1 to
8006107
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.
Why
A snapshot starts as Pending and is only usable for rollback, fork or restore once it is Ready. The JS SDK can wait for that with
snapshot({ waitUntilReady: true })andsandboxes.waitForSnapshot, but in Python you had to write the polling loop yourself, so the docs could only say "wait until the status is Ready".What
client.sandboxes.wait_for_snapshot(snapshot_id, timeout_ms=300000, poll_interval_ms=2000)polls until the snapshot is Ready and returns it. A Failed snapshot raisesNeevAIErrorwith its reason, and so does a snapshot that is not Ready in time. A zero, negative or non-finite timing is rejected before any request; withwait_until_ready=Truethat check runs before the snapshot is created, so a bad timing leaves no snapshot behind.sandbox.snapshot(params, wait_until_ready=True)takes the snapshot and waits in one call; without it, behaviour is unchanged.Example
Testing
ruff, ruff format, pyright, mypy and 698 tests pass. The new tests cover Ready after polling, Ready at once, Failed with its reason, timeout, rejected timings (including that a bad timing creates no snapshot), and the handle's wait on the sync and async clients. Not run against a live API.