o
    ;i                     @   s   d dl mZmZ d dlZd dlZd dlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZmZmZ dd	lmZ G d
d deddZeeZdS )    )OptionalcastN)api_pb2   )LoadContext)_Object)Resolver)deprecate_aio_usagesynchronize_apisynchronizer)_Clientc                	   @   s>   e Zd ZdZedde	ddeded dej	fd	d
Z
dS )_SandboxSnapshotaU  
    > Sandbox memory snapshots are in **early preview**.

    A `SandboxSnapshot` object lets you interact with a stored Sandbox snapshot that was created by calling
    `._experimental_snapshot()` on a Sandbox instance. This includes both the filesystem and memory state of
    the original Sandbox at the time the snapshot was taken.
    )i        zSandboxSnapshot.from_idNsandbox_snapshot_idclientzmodal.client.Clientreturnc              	      sf   t tt|}dtdtdtdtt f fdd}d}tj	||t|dd	d
} |_
t tjt|S )zR
        Construct a `SandboxSnapshot` object from a sandbox snapshot ID.
        selfresolverload_contextexisting_object_idc                    s4   |j jtj dI d H }| |j|j d  d S )N)snapshot_id)r   stubSandboxSnapshotGetr   SandboxSnapshotGetRequest_hydrater   )r   r   r   r   respr    B/home/ubuntu/.local/lib/python3.10/site-packages/modal/snapshot.py_load#   s
   

z'_SandboxSnapshot.from_id.<locals>._loadzSandboxSnapshot())r   T)load_context_overrideshydrate_lazily)r   r   r   _translate_inr   r   r   r   str_from_loader
_object_idtyping_extensionsSelf_translate_out)clsr   r   _clientr    repobjr   r   r   from_id   s    
z_SandboxSnapshot.from_id)N)__name__
__module____qualname____doc__r	   classmethodr$   r   r'   r(   r.   r   r   r   r   r      s    r   sn)type_prefix)typingr   r   r'   modal.clientmodalmodal_protor   _load_contextr   _objectr   	_resolverr   _utils.async_utilsr	   r
   r   r   r   r   SandboxSnapshotr   r   r   r   <module>   s   (