modal 0.72.25__py3-none-any.whl → 0.72.27__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
modal_proto/api_pb2.pyi CHANGED
@@ -6071,13 +6071,13 @@ class NotebookKernelPublishResultsRequest(google.protobuf.message.Message):
6071
6071
 
6072
6072
  CELL_ID_FIELD_NUMBER: builtins.int
6073
6073
  OUTPUT_FIELD_NUMBER: builtins.int
6074
- CLEAR_OUTPUTS_FIELD_NUMBER: builtins.int
6074
+ CLEAR_OUTPUT_FIELD_NUMBER: builtins.int
6075
6075
  EXECUTE_REPLY_FIELD_NUMBER: builtins.int
6076
6076
  cell_id: builtins.str
6077
6077
  @property
6078
6078
  def output(self) -> global___NotebookOutput:
6079
6079
  """Persistent output that is saved in the notebook."""
6080
- clear_outputs: builtins.bool
6080
+ clear_output: builtins.bool
6081
6081
  """Clear all previous outputs of the cell."""
6082
6082
  @property
6083
6083
  def execute_reply(self) -> global___NotebookKernelPublishResultsRequest.ExecuteReply:
@@ -6087,12 +6087,12 @@ class NotebookKernelPublishResultsRequest(google.protobuf.message.Message):
6087
6087
  *,
6088
6088
  cell_id: builtins.str = ...,
6089
6089
  output: global___NotebookOutput | None = ...,
6090
- clear_outputs: builtins.bool = ...,
6090
+ clear_output: builtins.bool = ...,
6091
6091
  execute_reply: global___NotebookKernelPublishResultsRequest.ExecuteReply | None = ...,
6092
6092
  ) -> None: ...
6093
- def HasField(self, field_name: typing_extensions.Literal["clear_outputs", b"clear_outputs", "execute_reply", b"execute_reply", "output", b"output", "result_type", b"result_type"]) -> builtins.bool: ...
6094
- def ClearField(self, field_name: typing_extensions.Literal["cell_id", b"cell_id", "clear_outputs", b"clear_outputs", "execute_reply", b"execute_reply", "output", b"output", "result_type", b"result_type"]) -> None: ...
6095
- def WhichOneof(self, oneof_group: typing_extensions.Literal["result_type", b"result_type"]) -> typing_extensions.Literal["output", "clear_outputs", "execute_reply"] | None: ...
6093
+ def HasField(self, field_name: typing_extensions.Literal["clear_output", b"clear_output", "execute_reply", b"execute_reply", "output", b"output", "result_type", b"result_type"]) -> builtins.bool: ...
6094
+ def ClearField(self, field_name: typing_extensions.Literal["cell_id", b"cell_id", "clear_output", b"clear_output", "execute_reply", b"execute_reply", "output", b"output", "result_type", b"result_type"]) -> None: ...
6095
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["result_type", b"result_type"]) -> typing_extensions.Literal["output", "clear_output", "execute_reply"] | None: ...
6096
6096
 
6097
6097
  NOTEBOOK_ID_FIELD_NUMBER: builtins.int
6098
6098
  RESULTS_FIELD_NUMBER: builtins.int
@@ -6149,19 +6149,24 @@ class NotebookOutput(google.protobuf.message.Message):
6149
6149
 
6150
6150
  DATA_FIELD_NUMBER: builtins.int
6151
6151
  METADATA_FIELD_NUMBER: builtins.int
6152
+ TRANSIENT_DISPLAY_ID_FIELD_NUMBER: builtins.int
6152
6153
  @property
6153
6154
  def data(self) -> google.protobuf.struct_pb2.Struct:
6154
6155
  """mimebundle"""
6155
6156
  @property
6156
6157
  def metadata(self) -> google.protobuf.struct_pb2.Struct: ...
6158
+ transient_display_id: builtins.str
6159
+ """This should not be included in saved notebook."""
6157
6160
  def __init__(
6158
6161
  self,
6159
6162
  *,
6160
6163
  data: google.protobuf.struct_pb2.Struct | None = ...,
6161
6164
  metadata: google.protobuf.struct_pb2.Struct | None = ...,
6165
+ transient_display_id: builtins.str | None = ...,
6162
6166
  ) -> None: ...
6163
- def HasField(self, field_name: typing_extensions.Literal["data", b"data", "metadata", b"metadata"]) -> builtins.bool: ...
6164
- def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "metadata", b"metadata"]) -> None: ...
6167
+ def HasField(self, field_name: typing_extensions.Literal["_transient_display_id", b"_transient_display_id", "data", b"data", "metadata", b"metadata", "transient_display_id", b"transient_display_id"]) -> builtins.bool: ...
6168
+ def ClearField(self, field_name: typing_extensions.Literal["_transient_display_id", b"_transient_display_id", "data", b"data", "metadata", b"metadata", "transient_display_id", b"transient_display_id"]) -> None: ...
6169
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_transient_display_id", b"_transient_display_id"]) -> typing_extensions.Literal["transient_display_id"] | None: ...
6165
6170
 
6166
6171
  class Stream(google.protobuf.message.Message):
6167
6172
  """Stream output from a code cell (stdout / stderr)."""
@@ -7040,6 +7045,8 @@ class Sandbox(google.protobuf.message.Message):
7040
7045
  I6PN_ENABLED_FIELD_NUMBER: builtins.int
7041
7046
  NETWORK_ACCESS_FIELD_NUMBER: builtins.int
7042
7047
  PROXY_ID_FIELD_NUMBER: builtins.int
7048
+ ENABLE_MEMORY_SNAPSHOT_FIELD_NUMBER: builtins.int
7049
+ SNAPSHOT_VERSION_FIELD_NUMBER: builtins.int
7043
7050
  @property
7044
7051
  def entrypoint_args(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
7045
7052
  @property
@@ -7076,6 +7083,12 @@ class Sandbox(google.protobuf.message.Message):
7076
7083
  def network_access(self) -> global___NetworkAccess:
7077
7084
  """Network access configuration beyond simple allow/block."""
7078
7085
  proxy_id: builtins.str
7086
+ enable_memory_snapshot: builtins.bool
7087
+ """Enable memory snapshots."""
7088
+ snapshot_version: builtins.int
7089
+ """Used to pin gVisor version for memory-snapshottable sandboxes.
7090
+ This field is set by the server, not the client.
7091
+ """
7079
7092
  def __init__(
7080
7093
  self,
7081
7094
  *,
@@ -7100,14 +7113,18 @@ class Sandbox(google.protobuf.message.Message):
7100
7113
  i6pn_enabled: builtins.bool = ...,
7101
7114
  network_access: global___NetworkAccess | None = ...,
7102
7115
  proxy_id: builtins.str | None = ...,
7116
+ enable_memory_snapshot: builtins.bool = ...,
7117
+ snapshot_version: builtins.int | None = ...,
7103
7118
  ) -> None: ...
7104
- def HasField(self, field_name: typing_extensions.Literal["_proxy_id", b"_proxy_id", "_scheduler_placement", b"_scheduler_placement", "_workdir", b"_workdir", "network_access", b"network_access", "open_ports", b"open_ports", "open_ports_oneof", b"open_ports_oneof", "proxy_id", b"proxy_id", "pty_info", b"pty_info", "resources", b"resources", "scheduler_placement", b"scheduler_placement", "workdir", b"workdir"]) -> builtins.bool: ...
7105
- def ClearField(self, field_name: typing_extensions.Literal["_proxy_id", b"_proxy_id", "_scheduler_placement", b"_scheduler_placement", "_workdir", b"_workdir", "block_network", b"block_network", "cloud_bucket_mounts", b"cloud_bucket_mounts", "cloud_provider", b"cloud_provider", "entrypoint_args", b"entrypoint_args", "i6pn_enabled", b"i6pn_enabled", "image_id", b"image_id", "mount_ids", b"mount_ids", "network_access", b"network_access", "nfs_mounts", b"nfs_mounts", "open_ports", b"open_ports", "open_ports_oneof", b"open_ports_oneof", "proxy_id", b"proxy_id", "pty_info", b"pty_info", "resources", b"resources", "runtime_debug", b"runtime_debug", "s3_mounts", b"s3_mounts", "scheduler_placement", b"scheduler_placement", "secret_ids", b"secret_ids", "timeout_secs", b"timeout_secs", "volume_mounts", b"volume_mounts", "workdir", b"workdir", "worker_id", b"worker_id"]) -> None: ...
7119
+ def HasField(self, field_name: typing_extensions.Literal["_proxy_id", b"_proxy_id", "_scheduler_placement", b"_scheduler_placement", "_snapshot_version", b"_snapshot_version", "_workdir", b"_workdir", "network_access", b"network_access", "open_ports", b"open_ports", "open_ports_oneof", b"open_ports_oneof", "proxy_id", b"proxy_id", "pty_info", b"pty_info", "resources", b"resources", "scheduler_placement", b"scheduler_placement", "snapshot_version", b"snapshot_version", "workdir", b"workdir"]) -> builtins.bool: ...
7120
+ def ClearField(self, field_name: typing_extensions.Literal["_proxy_id", b"_proxy_id", "_scheduler_placement", b"_scheduler_placement", "_snapshot_version", b"_snapshot_version", "_workdir", b"_workdir", "block_network", b"block_network", "cloud_bucket_mounts", b"cloud_bucket_mounts", "cloud_provider", b"cloud_provider", "enable_memory_snapshot", b"enable_memory_snapshot", "entrypoint_args", b"entrypoint_args", "i6pn_enabled", b"i6pn_enabled", "image_id", b"image_id", "mount_ids", b"mount_ids", "network_access", b"network_access", "nfs_mounts", b"nfs_mounts", "open_ports", b"open_ports", "open_ports_oneof", b"open_ports_oneof", "proxy_id", b"proxy_id", "pty_info", b"pty_info", "resources", b"resources", "runtime_debug", b"runtime_debug", "s3_mounts", b"s3_mounts", "scheduler_placement", b"scheduler_placement", "secret_ids", b"secret_ids", "snapshot_version", b"snapshot_version", "timeout_secs", b"timeout_secs", "volume_mounts", b"volume_mounts", "workdir", b"workdir", "worker_id", b"worker_id"]) -> None: ...
7106
7121
  @typing.overload
7107
7122
  def WhichOneof(self, oneof_group: typing_extensions.Literal["_proxy_id", b"_proxy_id"]) -> typing_extensions.Literal["proxy_id"] | None: ...
7108
7123
  @typing.overload
7109
7124
  def WhichOneof(self, oneof_group: typing_extensions.Literal["_scheduler_placement", b"_scheduler_placement"]) -> typing_extensions.Literal["scheduler_placement"] | None: ...
7110
7125
  @typing.overload
7126
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_snapshot_version", b"_snapshot_version"]) -> typing_extensions.Literal["snapshot_version"] | None: ...
7127
+ @typing.overload
7111
7128
  def WhichOneof(self, oneof_group: typing_extensions.Literal["_workdir", b"_workdir"]) -> typing_extensions.Literal["workdir"] | None: ...
7112
7129
  @typing.overload
7113
7130
  def WhichOneof(self, oneof_group: typing_extensions.Literal["open_ports_oneof", b"open_ports_oneof"]) -> typing_extensions.Literal["open_ports"] | None: ...
@@ -7339,6 +7356,40 @@ class SandboxListResponse(google.protobuf.message.Message):
7339
7356
 
7340
7357
  global___SandboxListResponse = SandboxListResponse
7341
7358
 
7359
+ class SandboxRestoreRequest(google.protobuf.message.Message):
7360
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
7361
+
7362
+ APP_ID_FIELD_NUMBER: builtins.int
7363
+ SNAPSHOT_ID_FIELD_NUMBER: builtins.int
7364
+ ENVIRONMENT_NAME_FIELD_NUMBER: builtins.int
7365
+ app_id: builtins.str
7366
+ snapshot_id: builtins.str
7367
+ environment_name: builtins.str
7368
+ def __init__(
7369
+ self,
7370
+ *,
7371
+ app_id: builtins.str = ...,
7372
+ snapshot_id: builtins.str = ...,
7373
+ environment_name: builtins.str = ...,
7374
+ ) -> None: ...
7375
+ def ClearField(self, field_name: typing_extensions.Literal["app_id", b"app_id", "environment_name", b"environment_name", "snapshot_id", b"snapshot_id"]) -> None: ...
7376
+
7377
+ global___SandboxRestoreRequest = SandboxRestoreRequest
7378
+
7379
+ class SandboxRestoreResponse(google.protobuf.message.Message):
7380
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
7381
+
7382
+ SANDBOX_ID_FIELD_NUMBER: builtins.int
7383
+ sandbox_id: builtins.str
7384
+ def __init__(
7385
+ self,
7386
+ *,
7387
+ sandbox_id: builtins.str = ...,
7388
+ ) -> None: ...
7389
+ def ClearField(self, field_name: typing_extensions.Literal["sandbox_id", b"sandbox_id"]) -> None: ...
7390
+
7391
+ global___SandboxRestoreResponse = SandboxRestoreResponse
7392
+
7342
7393
  class SandboxSnapshotFsRequest(google.protobuf.message.Message):
7343
7394
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
7344
7395
 
@@ -7380,6 +7431,67 @@ class SandboxSnapshotFsResponse(google.protobuf.message.Message):
7380
7431
 
7381
7432
  global___SandboxSnapshotFsResponse = SandboxSnapshotFsResponse
7382
7433
 
7434
+ class SandboxSnapshotRequest(google.protobuf.message.Message):
7435
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
7436
+
7437
+ SANDBOX_ID_FIELD_NUMBER: builtins.int
7438
+ sandbox_id: builtins.str
7439
+ def __init__(
7440
+ self,
7441
+ *,
7442
+ sandbox_id: builtins.str = ...,
7443
+ ) -> None: ...
7444
+ def ClearField(self, field_name: typing_extensions.Literal["sandbox_id", b"sandbox_id"]) -> None: ...
7445
+
7446
+ global___SandboxSnapshotRequest = SandboxSnapshotRequest
7447
+
7448
+ class SandboxSnapshotResponse(google.protobuf.message.Message):
7449
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
7450
+
7451
+ SNAPSHOT_ID_FIELD_NUMBER: builtins.int
7452
+ snapshot_id: builtins.str
7453
+ def __init__(
7454
+ self,
7455
+ *,
7456
+ snapshot_id: builtins.str = ...,
7457
+ ) -> None: ...
7458
+ def ClearField(self, field_name: typing_extensions.Literal["snapshot_id", b"snapshot_id"]) -> None: ...
7459
+
7460
+ global___SandboxSnapshotResponse = SandboxSnapshotResponse
7461
+
7462
+ class SandboxSnapshotWaitRequest(google.protobuf.message.Message):
7463
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
7464
+
7465
+ SNAPSHOT_ID_FIELD_NUMBER: builtins.int
7466
+ TIMEOUT_FIELD_NUMBER: builtins.int
7467
+ snapshot_id: builtins.str
7468
+ timeout: builtins.float
7469
+ def __init__(
7470
+ self,
7471
+ *,
7472
+ snapshot_id: builtins.str = ...,
7473
+ timeout: builtins.float = ...,
7474
+ ) -> None: ...
7475
+ def ClearField(self, field_name: typing_extensions.Literal["snapshot_id", b"snapshot_id", "timeout", b"timeout"]) -> None: ...
7476
+
7477
+ global___SandboxSnapshotWaitRequest = SandboxSnapshotWaitRequest
7478
+
7479
+ class SandboxSnapshotWaitResponse(google.protobuf.message.Message):
7480
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
7481
+
7482
+ RESULT_FIELD_NUMBER: builtins.int
7483
+ @property
7484
+ def result(self) -> global___GenericResult: ...
7485
+ def __init__(
7486
+ self,
7487
+ *,
7488
+ result: global___GenericResult | None = ...,
7489
+ ) -> None: ...
7490
+ def HasField(self, field_name: typing_extensions.Literal["result", b"result"]) -> builtins.bool: ...
7491
+ def ClearField(self, field_name: typing_extensions.Literal["result", b"result"]) -> None: ...
7492
+
7493
+ global___SandboxSnapshotWaitResponse = SandboxSnapshotWaitResponse
7494
+
7383
7495
  class SandboxStdinWriteRequest(google.protobuf.message.Message):
7384
7496
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
7385
7497
 
@@ -505,11 +505,26 @@ class ModalClientStub(object):
505
505
  request_serializer=modal__proto_dot_api__pb2.SandboxListRequest.SerializeToString,
506
506
  response_deserializer=modal__proto_dot_api__pb2.SandboxListResponse.FromString,
507
507
  )
508
+ self.SandboxRestore = channel.unary_unary(
509
+ '/modal.client.ModalClient/SandboxRestore',
510
+ request_serializer=modal__proto_dot_api__pb2.SandboxRestoreRequest.SerializeToString,
511
+ response_deserializer=modal__proto_dot_api__pb2.SandboxRestoreResponse.FromString,
512
+ )
513
+ self.SandboxSnapshot = channel.unary_unary(
514
+ '/modal.client.ModalClient/SandboxSnapshot',
515
+ request_serializer=modal__proto_dot_api__pb2.SandboxSnapshotRequest.SerializeToString,
516
+ response_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotResponse.FromString,
517
+ )
508
518
  self.SandboxSnapshotFs = channel.unary_unary(
509
519
  '/modal.client.ModalClient/SandboxSnapshotFs',
510
520
  request_serializer=modal__proto_dot_api__pb2.SandboxSnapshotFsRequest.SerializeToString,
511
521
  response_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotFsResponse.FromString,
512
522
  )
523
+ self.SandboxSnapshotWait = channel.unary_unary(
524
+ '/modal.client.ModalClient/SandboxSnapshotWait',
525
+ request_serializer=modal__proto_dot_api__pb2.SandboxSnapshotWaitRequest.SerializeToString,
526
+ response_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotWaitResponse.FromString,
527
+ )
513
528
  self.SandboxStdinWrite = channel.unary_unary(
514
529
  '/modal.client.ModalClient/SandboxStdinWrite',
515
530
  request_serializer=modal__proto_dot_api__pb2.SandboxStdinWriteRequest.SerializeToString,
@@ -1307,12 +1322,30 @@ class ModalClientServicer(object):
1307
1322
  context.set_details('Method not implemented!')
1308
1323
  raise NotImplementedError('Method not implemented!')
1309
1324
 
1325
+ def SandboxRestore(self, request, context):
1326
+ """Missing associated documentation comment in .proto file."""
1327
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
1328
+ context.set_details('Method not implemented!')
1329
+ raise NotImplementedError('Method not implemented!')
1330
+
1331
+ def SandboxSnapshot(self, request, context):
1332
+ """Missing associated documentation comment in .proto file."""
1333
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
1334
+ context.set_details('Method not implemented!')
1335
+ raise NotImplementedError('Method not implemented!')
1336
+
1310
1337
  def SandboxSnapshotFs(self, request, context):
1311
1338
  """Missing associated documentation comment in .proto file."""
1312
1339
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
1313
1340
  context.set_details('Method not implemented!')
1314
1341
  raise NotImplementedError('Method not implemented!')
1315
1342
 
1343
+ def SandboxSnapshotWait(self, request, context):
1344
+ """Missing associated documentation comment in .proto file."""
1345
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
1346
+ context.set_details('Method not implemented!')
1347
+ raise NotImplementedError('Method not implemented!')
1348
+
1316
1349
  def SandboxStdinWrite(self, request, context):
1317
1350
  """Missing associated documentation comment in .proto file."""
1318
1351
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -2035,11 +2068,26 @@ def add_ModalClientServicer_to_server(servicer, server):
2035
2068
  request_deserializer=modal__proto_dot_api__pb2.SandboxListRequest.FromString,
2036
2069
  response_serializer=modal__proto_dot_api__pb2.SandboxListResponse.SerializeToString,
2037
2070
  ),
2071
+ 'SandboxRestore': grpc.unary_unary_rpc_method_handler(
2072
+ servicer.SandboxRestore,
2073
+ request_deserializer=modal__proto_dot_api__pb2.SandboxRestoreRequest.FromString,
2074
+ response_serializer=modal__proto_dot_api__pb2.SandboxRestoreResponse.SerializeToString,
2075
+ ),
2076
+ 'SandboxSnapshot': grpc.unary_unary_rpc_method_handler(
2077
+ servicer.SandboxSnapshot,
2078
+ request_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotRequest.FromString,
2079
+ response_serializer=modal__proto_dot_api__pb2.SandboxSnapshotResponse.SerializeToString,
2080
+ ),
2038
2081
  'SandboxSnapshotFs': grpc.unary_unary_rpc_method_handler(
2039
2082
  servicer.SandboxSnapshotFs,
2040
2083
  request_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotFsRequest.FromString,
2041
2084
  response_serializer=modal__proto_dot_api__pb2.SandboxSnapshotFsResponse.SerializeToString,
2042
2085
  ),
2086
+ 'SandboxSnapshotWait': grpc.unary_unary_rpc_method_handler(
2087
+ servicer.SandboxSnapshotWait,
2088
+ request_deserializer=modal__proto_dot_api__pb2.SandboxSnapshotWaitRequest.FromString,
2089
+ response_serializer=modal__proto_dot_api__pb2.SandboxSnapshotWaitResponse.SerializeToString,
2090
+ ),
2043
2091
  'SandboxStdinWrite': grpc.unary_unary_rpc_method_handler(
2044
2092
  servicer.SandboxStdinWrite,
2045
2093
  request_deserializer=modal__proto_dot_api__pb2.SandboxStdinWriteRequest.FromString,
@@ -3901,6 +3949,40 @@ class ModalClient(object):
3901
3949
  options, channel_credentials,
3902
3950
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
3903
3951
 
3952
+ @staticmethod
3953
+ def SandboxRestore(request,
3954
+ target,
3955
+ options=(),
3956
+ channel_credentials=None,
3957
+ call_credentials=None,
3958
+ insecure=False,
3959
+ compression=None,
3960
+ wait_for_ready=None,
3961
+ timeout=None,
3962
+ metadata=None):
3963
+ return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/SandboxRestore',
3964
+ modal__proto_dot_api__pb2.SandboxRestoreRequest.SerializeToString,
3965
+ modal__proto_dot_api__pb2.SandboxRestoreResponse.FromString,
3966
+ options, channel_credentials,
3967
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
3968
+
3969
+ @staticmethod
3970
+ def SandboxSnapshot(request,
3971
+ target,
3972
+ options=(),
3973
+ channel_credentials=None,
3974
+ call_credentials=None,
3975
+ insecure=False,
3976
+ compression=None,
3977
+ wait_for_ready=None,
3978
+ timeout=None,
3979
+ metadata=None):
3980
+ return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/SandboxSnapshot',
3981
+ modal__proto_dot_api__pb2.SandboxSnapshotRequest.SerializeToString,
3982
+ modal__proto_dot_api__pb2.SandboxSnapshotResponse.FromString,
3983
+ options, channel_credentials,
3984
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
3985
+
3904
3986
  @staticmethod
3905
3987
  def SandboxSnapshotFs(request,
3906
3988
  target,
@@ -3918,6 +4000,23 @@ class ModalClient(object):
3918
4000
  options, channel_credentials,
3919
4001
  insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
3920
4002
 
4003
+ @staticmethod
4004
+ def SandboxSnapshotWait(request,
4005
+ target,
4006
+ options=(),
4007
+ channel_credentials=None,
4008
+ call_credentials=None,
4009
+ insecure=False,
4010
+ compression=None,
4011
+ wait_for_ready=None,
4012
+ timeout=None,
4013
+ metadata=None):
4014
+ return grpc.experimental.unary_unary(request, target, '/modal.client.ModalClient/SandboxSnapshotWait',
4015
+ modal__proto_dot_api__pb2.SandboxSnapshotWaitRequest.SerializeToString,
4016
+ modal__proto_dot_api__pb2.SandboxSnapshotWaitResponse.FromString,
4017
+ options, channel_credentials,
4018
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
4019
+
3921
4020
  @staticmethod
3922
4021
  def SandboxStdinWrite(request,
3923
4022
  target,
@@ -421,10 +421,22 @@ class ModalClientStub:
421
421
  modal_proto.api_pb2.SandboxListRequest,
422
422
  modal_proto.api_pb2.SandboxListResponse,
423
423
  ]
424
+ SandboxRestore: grpc.UnaryUnaryMultiCallable[
425
+ modal_proto.api_pb2.SandboxRestoreRequest,
426
+ modal_proto.api_pb2.SandboxRestoreResponse,
427
+ ]
428
+ SandboxSnapshot: grpc.UnaryUnaryMultiCallable[
429
+ modal_proto.api_pb2.SandboxSnapshotRequest,
430
+ modal_proto.api_pb2.SandboxSnapshotResponse,
431
+ ]
424
432
  SandboxSnapshotFs: grpc.UnaryUnaryMultiCallable[
425
433
  modal_proto.api_pb2.SandboxSnapshotFsRequest,
426
434
  modal_proto.api_pb2.SandboxSnapshotFsResponse,
427
435
  ]
436
+ SandboxSnapshotWait: grpc.UnaryUnaryMultiCallable[
437
+ modal_proto.api_pb2.SandboxSnapshotWaitRequest,
438
+ modal_proto.api_pb2.SandboxSnapshotWaitResponse,
439
+ ]
428
440
  SandboxStdinWrite: grpc.UnaryUnaryMultiCallable[
429
441
  modal_proto.api_pb2.SandboxStdinWriteRequest,
430
442
  modal_proto.api_pb2.SandboxStdinWriteResponse,
@@ -1190,12 +1202,30 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1190
1202
  context: grpc.ServicerContext,
1191
1203
  ) -> modal_proto.api_pb2.SandboxListResponse: ...
1192
1204
  @abc.abstractmethod
1205
+ def SandboxRestore(
1206
+ self,
1207
+ request: modal_proto.api_pb2.SandboxRestoreRequest,
1208
+ context: grpc.ServicerContext,
1209
+ ) -> modal_proto.api_pb2.SandboxRestoreResponse: ...
1210
+ @abc.abstractmethod
1211
+ def SandboxSnapshot(
1212
+ self,
1213
+ request: modal_proto.api_pb2.SandboxSnapshotRequest,
1214
+ context: grpc.ServicerContext,
1215
+ ) -> modal_proto.api_pb2.SandboxSnapshotResponse: ...
1216
+ @abc.abstractmethod
1193
1217
  def SandboxSnapshotFs(
1194
1218
  self,
1195
1219
  request: modal_proto.api_pb2.SandboxSnapshotFsRequest,
1196
1220
  context: grpc.ServicerContext,
1197
1221
  ) -> modal_proto.api_pb2.SandboxSnapshotFsResponse: ...
1198
1222
  @abc.abstractmethod
1223
+ def SandboxSnapshotWait(
1224
+ self,
1225
+ request: modal_proto.api_pb2.SandboxSnapshotWaitRequest,
1226
+ context: grpc.ServicerContext,
1227
+ ) -> modal_proto.api_pb2.SandboxSnapshotWaitResponse: ...
1228
+ @abc.abstractmethod
1199
1229
  def SandboxStdinWrite(
1200
1230
  self,
1201
1231
  request: modal_proto.api_pb2.SandboxStdinWriteRequest,
@@ -110,7 +110,10 @@ class ModalClientModal:
110
110
  self.SandboxGetTaskId = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetTaskId, client)
111
111
  self.SandboxGetTunnels = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetTunnels, client)
112
112
  self.SandboxList = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxList, client)
113
+ self.SandboxRestore = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxRestore, client)
114
+ self.SandboxSnapshot = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshot, client)
113
115
  self.SandboxSnapshotFs = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotFs, client)
116
+ self.SandboxSnapshotWait = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotWait, client)
114
117
  self.SandboxStdinWrite = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxStdinWrite, client)
115
118
  self.SandboxTagsSet = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxTagsSet, client)
116
119
  self.SandboxTerminate = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxTerminate, client)
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
 
3
3
  # Note: Reset this value to -1 whenever you make a minor `0.X` release of the client.
4
- build_number = 25 # git: c99f9e3
4
+ build_number = 27 # git: 98aede5