modal 1.0.3.dev10__py3-none-any.whl → 1.2.3.dev7__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.

Potentially problematic release.


This version of modal might be problematic. Click here for more details.

Files changed (160) hide show
  1. modal/__init__.py +0 -2
  2. modal/__main__.py +3 -4
  3. modal/_billing.py +80 -0
  4. modal/_clustered_functions.py +7 -3
  5. modal/_clustered_functions.pyi +15 -3
  6. modal/_container_entrypoint.py +51 -69
  7. modal/_functions.py +508 -240
  8. modal/_grpc_client.py +171 -0
  9. modal/_load_context.py +105 -0
  10. modal/_object.py +81 -21
  11. modal/_output.py +58 -45
  12. modal/_partial_function.py +48 -73
  13. modal/_pty.py +7 -3
  14. modal/_resolver.py +26 -46
  15. modal/_runtime/asgi.py +4 -3
  16. modal/_runtime/container_io_manager.py +358 -220
  17. modal/_runtime/container_io_manager.pyi +296 -101
  18. modal/_runtime/execution_context.py +18 -2
  19. modal/_runtime/execution_context.pyi +64 -7
  20. modal/_runtime/gpu_memory_snapshot.py +262 -57
  21. modal/_runtime/user_code_imports.py +28 -58
  22. modal/_serialization.py +90 -6
  23. modal/_traceback.py +42 -1
  24. modal/_tunnel.pyi +380 -12
  25. modal/_utils/async_utils.py +84 -29
  26. modal/_utils/auth_token_manager.py +111 -0
  27. modal/_utils/blob_utils.py +181 -58
  28. modal/_utils/deprecation.py +19 -0
  29. modal/_utils/function_utils.py +91 -47
  30. modal/_utils/grpc_utils.py +89 -66
  31. modal/_utils/mount_utils.py +26 -1
  32. modal/_utils/name_utils.py +17 -3
  33. modal/_utils/task_command_router_client.py +536 -0
  34. modal/_utils/time_utils.py +34 -6
  35. modal/app.py +256 -88
  36. modal/app.pyi +909 -92
  37. modal/billing.py +5 -0
  38. modal/builder/2025.06.txt +18 -0
  39. modal/builder/PREVIEW.txt +18 -0
  40. modal/builder/base-images.json +58 -0
  41. modal/cli/_download.py +19 -3
  42. modal/cli/_traceback.py +3 -2
  43. modal/cli/app.py +4 -4
  44. modal/cli/cluster.py +15 -7
  45. modal/cli/config.py +5 -3
  46. modal/cli/container.py +7 -6
  47. modal/cli/dict.py +22 -16
  48. modal/cli/entry_point.py +12 -5
  49. modal/cli/environment.py +5 -4
  50. modal/cli/import_refs.py +3 -3
  51. modal/cli/launch.py +102 -5
  52. modal/cli/network_file_system.py +11 -12
  53. modal/cli/profile.py +3 -2
  54. modal/cli/programs/launch_instance_ssh.py +94 -0
  55. modal/cli/programs/run_jupyter.py +1 -1
  56. modal/cli/programs/run_marimo.py +95 -0
  57. modal/cli/programs/vscode.py +1 -1
  58. modal/cli/queues.py +57 -26
  59. modal/cli/run.py +91 -23
  60. modal/cli/secret.py +48 -22
  61. modal/cli/token.py +7 -8
  62. modal/cli/utils.py +4 -7
  63. modal/cli/volume.py +31 -25
  64. modal/client.py +15 -85
  65. modal/client.pyi +183 -62
  66. modal/cloud_bucket_mount.py +5 -3
  67. modal/cloud_bucket_mount.pyi +197 -5
  68. modal/cls.py +200 -126
  69. modal/cls.pyi +446 -68
  70. modal/config.py +29 -11
  71. modal/container_process.py +319 -19
  72. modal/container_process.pyi +190 -20
  73. modal/dict.py +290 -71
  74. modal/dict.pyi +835 -83
  75. modal/environments.py +15 -27
  76. modal/environments.pyi +46 -24
  77. modal/exception.py +14 -2
  78. modal/experimental/__init__.py +194 -40
  79. modal/experimental/flash.py +618 -0
  80. modal/experimental/flash.pyi +380 -0
  81. modal/experimental/ipython.py +11 -7
  82. modal/file_io.py +29 -36
  83. modal/file_io.pyi +251 -53
  84. modal/file_pattern_matcher.py +56 -16
  85. modal/functions.pyi +673 -92
  86. modal/gpu.py +1 -1
  87. modal/image.py +528 -176
  88. modal/image.pyi +1572 -145
  89. modal/io_streams.py +458 -128
  90. modal/io_streams.pyi +433 -52
  91. modal/mount.py +216 -151
  92. modal/mount.pyi +225 -78
  93. modal/network_file_system.py +45 -62
  94. modal/network_file_system.pyi +277 -56
  95. modal/object.pyi +93 -17
  96. modal/parallel_map.py +942 -129
  97. modal/parallel_map.pyi +294 -15
  98. modal/partial_function.py +0 -2
  99. modal/partial_function.pyi +234 -19
  100. modal/proxy.py +17 -8
  101. modal/proxy.pyi +36 -3
  102. modal/queue.py +270 -65
  103. modal/queue.pyi +817 -57
  104. modal/runner.py +115 -101
  105. modal/runner.pyi +205 -49
  106. modal/sandbox.py +512 -136
  107. modal/sandbox.pyi +845 -111
  108. modal/schedule.py +1 -1
  109. modal/secret.py +300 -70
  110. modal/secret.pyi +589 -34
  111. modal/serving.py +7 -11
  112. modal/serving.pyi +7 -8
  113. modal/snapshot.py +11 -8
  114. modal/snapshot.pyi +25 -4
  115. modal/token_flow.py +4 -4
  116. modal/token_flow.pyi +28 -8
  117. modal/volume.py +416 -158
  118. modal/volume.pyi +1117 -121
  119. {modal-1.0.3.dev10.dist-info → modal-1.2.3.dev7.dist-info}/METADATA +10 -9
  120. modal-1.2.3.dev7.dist-info/RECORD +195 -0
  121. modal_docs/mdmd/mdmd.py +17 -4
  122. modal_proto/api.proto +534 -79
  123. modal_proto/api_grpc.py +337 -1
  124. modal_proto/api_pb2.py +1522 -968
  125. modal_proto/api_pb2.pyi +1619 -134
  126. modal_proto/api_pb2_grpc.py +699 -4
  127. modal_proto/api_pb2_grpc.pyi +226 -14
  128. modal_proto/modal_api_grpc.py +175 -154
  129. modal_proto/sandbox_router.proto +145 -0
  130. modal_proto/sandbox_router_grpc.py +105 -0
  131. modal_proto/sandbox_router_pb2.py +149 -0
  132. modal_proto/sandbox_router_pb2.pyi +333 -0
  133. modal_proto/sandbox_router_pb2_grpc.py +203 -0
  134. modal_proto/sandbox_router_pb2_grpc.pyi +75 -0
  135. modal_proto/task_command_router.proto +144 -0
  136. modal_proto/task_command_router_grpc.py +105 -0
  137. modal_proto/task_command_router_pb2.py +149 -0
  138. modal_proto/task_command_router_pb2.pyi +333 -0
  139. modal_proto/task_command_router_pb2_grpc.py +203 -0
  140. modal_proto/task_command_router_pb2_grpc.pyi +75 -0
  141. modal_version/__init__.py +1 -1
  142. modal/requirements/PREVIEW.txt +0 -16
  143. modal/requirements/base-images.json +0 -26
  144. modal-1.0.3.dev10.dist-info/RECORD +0 -179
  145. modal_proto/modal_options_grpc.py +0 -3
  146. modal_proto/options.proto +0 -19
  147. modal_proto/options_grpc.py +0 -3
  148. modal_proto/options_pb2.py +0 -35
  149. modal_proto/options_pb2.pyi +0 -20
  150. modal_proto/options_pb2_grpc.py +0 -4
  151. modal_proto/options_pb2_grpc.pyi +0 -7
  152. /modal/{requirements → builder}/2023.12.312.txt +0 -0
  153. /modal/{requirements → builder}/2023.12.txt +0 -0
  154. /modal/{requirements → builder}/2024.04.txt +0 -0
  155. /modal/{requirements → builder}/2024.10.txt +0 -0
  156. /modal/{requirements → builder}/README.md +0 -0
  157. {modal-1.0.3.dev10.dist-info → modal-1.2.3.dev7.dist-info}/WHEEL +0 -0
  158. {modal-1.0.3.dev10.dist-info → modal-1.2.3.dev7.dist-info}/entry_points.txt +0 -0
  159. {modal-1.0.3.dev10.dist-info → modal-1.2.3.dev7.dist-info}/licenses/LICENSE +0 -0
  160. {modal-1.0.3.dev10.dist-info → modal-1.2.3.dev7.dist-info}/top_level.txt +0 -0
modal_proto/api_grpc.py CHANGED
@@ -9,9 +9,9 @@ import grpclib.client
9
9
  if typing.TYPE_CHECKING:
10
10
  import grpclib.server
11
11
 
12
- import modal_proto.options_pb2
13
12
  import google.protobuf.empty_pb2
14
13
  import google.protobuf.struct_pb2
14
+ import google.protobuf.timestamp_pb2
15
15
  import google.protobuf.wrappers_pb2
16
16
  import modal_proto.api_pb2
17
17
 
@@ -54,6 +54,10 @@ class ModalClientBase(abc.ABC):
54
54
  async def AppGetOrCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AppGetOrCreateRequest, modal_proto.api_pb2.AppGetOrCreateResponse]') -> None:
55
55
  pass
56
56
 
57
+ @abc.abstractmethod
58
+ async def AppGetTags(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AppGetTagsRequest, modal_proto.api_pb2.AppGetTagsResponse]') -> None:
59
+ pass
60
+
57
61
  @abc.abstractmethod
58
62
  async def AppHeartbeat(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AppHeartbeatRequest, google.protobuf.empty_pb2.Empty]') -> None:
59
63
  pass
@@ -78,6 +82,10 @@ class ModalClientBase(abc.ABC):
78
82
  async def AppSetObjects(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AppSetObjectsRequest, google.protobuf.empty_pb2.Empty]') -> None:
79
83
  pass
80
84
 
85
+ @abc.abstractmethod
86
+ async def AppSetTags(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AppSetTagsRequest, google.protobuf.empty_pb2.Empty]') -> None:
87
+ pass
88
+
81
89
  @abc.abstractmethod
82
90
  async def AppStop(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AppStopRequest, google.protobuf.empty_pb2.Empty]') -> None:
83
91
  pass
@@ -94,6 +102,10 @@ class ModalClientBase(abc.ABC):
94
102
  async def AttemptStart(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AttemptStartRequest, modal_proto.api_pb2.AttemptStartResponse]') -> None:
95
103
  pass
96
104
 
105
+ @abc.abstractmethod
106
+ async def AuthTokenGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AuthTokenGetRequest, modal_proto.api_pb2.AuthTokenGetResponse]') -> None:
107
+ pass
108
+
97
109
  @abc.abstractmethod
98
110
  async def BlobCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.BlobCreateRequest, modal_proto.api_pb2.BlobCreateResponse]') -> None:
99
111
  pass
@@ -162,6 +174,10 @@ class ModalClientBase(abc.ABC):
162
174
  async def ContainerLog(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ContainerLogRequest, google.protobuf.empty_pb2.Empty]') -> None:
163
175
  pass
164
176
 
177
+ @abc.abstractmethod
178
+ async def ContainerReloadVolumes(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ContainerReloadVolumesRequest, modal_proto.api_pb2.ContainerReloadVolumesResponse]') -> None:
179
+ pass
180
+
165
181
  @abc.abstractmethod
166
182
  async def ContainerStop(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ContainerStopRequest, modal_proto.api_pb2.ContainerStopResponse]') -> None:
167
183
  pass
@@ -242,6 +258,22 @@ class ModalClientBase(abc.ABC):
242
258
  async def EnvironmentUpdate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.EnvironmentUpdateRequest, modal_proto.api_pb2.EnvironmentListItem]') -> None:
243
259
  pass
244
260
 
261
+ @abc.abstractmethod
262
+ async def FlashContainerDeregister(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FlashContainerDeregisterRequest, google.protobuf.empty_pb2.Empty]') -> None:
263
+ pass
264
+
265
+ @abc.abstractmethod
266
+ async def FlashContainerList(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FlashContainerListRequest, modal_proto.api_pb2.FlashContainerListResponse]') -> None:
267
+ pass
268
+
269
+ @abc.abstractmethod
270
+ async def FlashContainerRegister(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FlashContainerRegisterRequest, modal_proto.api_pb2.FlashContainerRegisterResponse]') -> None:
271
+ pass
272
+
273
+ @abc.abstractmethod
274
+ async def FlashSetTargetSlotsMetrics(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FlashSetTargetSlotsMetricsRequest, modal_proto.api_pb2.FlashSetTargetSlotsMetricsResponse]') -> None:
275
+ pass
276
+
245
277
  @abc.abstractmethod
246
278
  async def FunctionAsyncInvoke(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionAsyncInvokeRequest, modal_proto.api_pb2.FunctionAsyncInvokeResponse]') -> None:
247
279
  pass
@@ -254,6 +286,10 @@ class ModalClientBase(abc.ABC):
254
286
  async def FunctionCallCancel(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionCallCancelRequest, google.protobuf.empty_pb2.Empty]') -> None:
255
287
  pass
256
288
 
289
+ @abc.abstractmethod
290
+ async def FunctionCallFromId(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionCallFromIdRequest, modal_proto.api_pb2.FunctionCallFromIdResponse]') -> None:
291
+ pass
292
+
257
293
  @abc.abstractmethod
258
294
  async def FunctionCallGetDataIn(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionCallGetDataRequest, modal_proto.api_pb2.DataChunk]') -> None:
259
295
  pass
@@ -274,6 +310,10 @@ class ModalClientBase(abc.ABC):
274
310
  async def FunctionCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionCreateRequest, modal_proto.api_pb2.FunctionCreateResponse]') -> None:
275
311
  pass
276
312
 
313
+ @abc.abstractmethod
314
+ async def FunctionFinishInputs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionFinishInputsRequest, google.protobuf.empty_pb2.Empty]') -> None:
315
+ pass
316
+
277
317
  @abc.abstractmethod
278
318
  async def FunctionGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionGetRequest, modal_proto.api_pb2.FunctionGetResponse]') -> None:
279
319
  pass
@@ -330,6 +370,10 @@ class ModalClientBase(abc.ABC):
330
370
  async def FunctionUpdateSchedulingParams(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionUpdateSchedulingParamsRequest, modal_proto.api_pb2.FunctionUpdateSchedulingParamsResponse]') -> None:
331
371
  pass
332
372
 
373
+ @abc.abstractmethod
374
+ async def ImageDelete(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ImageDeleteRequest, google.protobuf.empty_pb2.Empty]') -> None:
375
+ pass
376
+
333
377
  @abc.abstractmethod
334
378
  async def ImageFromId(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ImageFromIdRequest, modal_proto.api_pb2.ImageFromIdResponse]') -> None:
335
379
  pass
@@ -342,6 +386,18 @@ class ModalClientBase(abc.ABC):
342
386
  async def ImageJoinStreaming(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ImageJoinStreamingRequest, modal_proto.api_pb2.ImageJoinStreamingResponse]') -> None:
343
387
  pass
344
388
 
389
+ @abc.abstractmethod
390
+ async def MapAwait(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.MapAwaitRequest, modal_proto.api_pb2.MapAwaitResponse]') -> None:
391
+ pass
392
+
393
+ @abc.abstractmethod
394
+ async def MapCheckInputs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.MapCheckInputsRequest, modal_proto.api_pb2.MapCheckInputsResponse]') -> None:
395
+ pass
396
+
397
+ @abc.abstractmethod
398
+ async def MapStartOrContinue(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.MapStartOrContinueRequest, modal_proto.api_pb2.MapStartOrContinueResponse]') -> None:
399
+ pass
400
+
345
401
  @abc.abstractmethod
346
402
  async def MountGetOrCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.MountGetOrCreateRequest, modal_proto.api_pb2.MountGetOrCreateResponse]') -> None:
347
403
  pass
@@ -422,6 +478,14 @@ class ModalClientBase(abc.ABC):
422
478
  async def SandboxCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxCreateRequest, modal_proto.api_pb2.SandboxCreateResponse]') -> None:
423
479
  pass
424
480
 
481
+ @abc.abstractmethod
482
+ async def SandboxCreateConnectToken(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxCreateConnectTokenRequest, modal_proto.api_pb2.SandboxCreateConnectTokenResponse]') -> None:
483
+ pass
484
+
485
+ @abc.abstractmethod
486
+ async def SandboxGetFromName(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxGetFromNameRequest, modal_proto.api_pb2.SandboxGetFromNameResponse]') -> None:
487
+ pass
488
+
425
489
  @abc.abstractmethod
426
490
  async def SandboxGetLogs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxGetLogsRequest, modal_proto.api_pb2.TaskLogsBatch]') -> None:
427
491
  pass
@@ -454,6 +518,14 @@ class ModalClientBase(abc.ABC):
454
518
  async def SandboxSnapshotFs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxSnapshotFsRequest, modal_proto.api_pb2.SandboxSnapshotFsResponse]') -> None:
455
519
  pass
456
520
 
521
+ @abc.abstractmethod
522
+ async def SandboxSnapshotFsAsync(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxSnapshotFsAsyncRequest, modal_proto.api_pb2.SandboxSnapshotFsAsyncResponse]') -> None:
523
+ pass
524
+
525
+ @abc.abstractmethod
526
+ async def SandboxSnapshotFsAsyncGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxSnapshotFsAsyncGetRequest, modal_proto.api_pb2.SandboxSnapshotFsResponse]') -> None:
527
+ pass
528
+
457
529
  @abc.abstractmethod
458
530
  async def SandboxSnapshotGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxSnapshotGetRequest, modal_proto.api_pb2.SandboxSnapshotGetResponse]') -> None:
459
531
  pass
@@ -466,6 +538,10 @@ class ModalClientBase(abc.ABC):
466
538
  async def SandboxStdinWrite(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxStdinWriteRequest, modal_proto.api_pb2.SandboxStdinWriteResponse]') -> None:
467
539
  pass
468
540
 
541
+ @abc.abstractmethod
542
+ async def SandboxTagsGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxTagsGetRequest, modal_proto.api_pb2.SandboxTagsGetResponse]') -> None:
543
+ pass
544
+
469
545
  @abc.abstractmethod
470
546
  async def SandboxTagsSet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxTagsSetRequest, google.protobuf.empty_pb2.Empty]') -> None:
471
547
  pass
@@ -534,6 +610,10 @@ class ModalClientBase(abc.ABC):
534
610
  async def TaskCurrentInputs(self, stream: 'grpclib.server.Stream[google.protobuf.empty_pb2.Empty, modal_proto.api_pb2.TaskCurrentInputsResponse]') -> None:
535
611
  pass
536
612
 
613
+ @abc.abstractmethod
614
+ async def TaskGetCommandRouterAccess(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.TaskGetCommandRouterAccessRequest, modal_proto.api_pb2.TaskGetCommandRouterAccessResponse]') -> None:
615
+ pass
616
+
537
617
  @abc.abstractmethod
538
618
  async def TaskList(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.TaskListRequest, modal_proto.api_pb2.TaskListResponse]') -> None:
539
619
  pass
@@ -626,6 +706,10 @@ class ModalClientBase(abc.ABC):
626
706
  async def VolumeRename(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.VolumeRenameRequest, google.protobuf.empty_pb2.Empty]') -> None:
627
707
  pass
628
708
 
709
+ @abc.abstractmethod
710
+ async def WorkspaceBillingReport(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.WorkspaceBillingReportRequest, modal_proto.api_pb2.WorkspaceBillingReportItem]') -> None:
711
+ pass
712
+
629
713
  @abc.abstractmethod
630
714
  async def WorkspaceNameLookup(self, stream: 'grpclib.server.Stream[google.protobuf.empty_pb2.Empty, modal_proto.api_pb2.WorkspaceNameLookupResponse]') -> None:
631
715
  pass
@@ -686,6 +770,12 @@ class ModalClientBase(abc.ABC):
686
770
  modal_proto.api_pb2.AppGetOrCreateRequest,
687
771
  modal_proto.api_pb2.AppGetOrCreateResponse,
688
772
  ),
773
+ '/modal.client.ModalClient/AppGetTags': grpclib.const.Handler(
774
+ self.AppGetTags,
775
+ grpclib.const.Cardinality.UNARY_UNARY,
776
+ modal_proto.api_pb2.AppGetTagsRequest,
777
+ modal_proto.api_pb2.AppGetTagsResponse,
778
+ ),
689
779
  '/modal.client.ModalClient/AppHeartbeat': grpclib.const.Handler(
690
780
  self.AppHeartbeat,
691
781
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -722,6 +812,12 @@ class ModalClientBase(abc.ABC):
722
812
  modal_proto.api_pb2.AppSetObjectsRequest,
723
813
  google.protobuf.empty_pb2.Empty,
724
814
  ),
815
+ '/modal.client.ModalClient/AppSetTags': grpclib.const.Handler(
816
+ self.AppSetTags,
817
+ grpclib.const.Cardinality.UNARY_UNARY,
818
+ modal_proto.api_pb2.AppSetTagsRequest,
819
+ google.protobuf.empty_pb2.Empty,
820
+ ),
725
821
  '/modal.client.ModalClient/AppStop': grpclib.const.Handler(
726
822
  self.AppStop,
727
823
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -746,6 +842,12 @@ class ModalClientBase(abc.ABC):
746
842
  modal_proto.api_pb2.AttemptStartRequest,
747
843
  modal_proto.api_pb2.AttemptStartResponse,
748
844
  ),
845
+ '/modal.client.ModalClient/AuthTokenGet': grpclib.const.Handler(
846
+ self.AuthTokenGet,
847
+ grpclib.const.Cardinality.UNARY_UNARY,
848
+ modal_proto.api_pb2.AuthTokenGetRequest,
849
+ modal_proto.api_pb2.AuthTokenGetResponse,
850
+ ),
749
851
  '/modal.client.ModalClient/BlobCreate': grpclib.const.Handler(
750
852
  self.BlobCreate,
751
853
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -848,6 +950,12 @@ class ModalClientBase(abc.ABC):
848
950
  modal_proto.api_pb2.ContainerLogRequest,
849
951
  google.protobuf.empty_pb2.Empty,
850
952
  ),
953
+ '/modal.client.ModalClient/ContainerReloadVolumes': grpclib.const.Handler(
954
+ self.ContainerReloadVolumes,
955
+ grpclib.const.Cardinality.UNARY_UNARY,
956
+ modal_proto.api_pb2.ContainerReloadVolumesRequest,
957
+ modal_proto.api_pb2.ContainerReloadVolumesResponse,
958
+ ),
851
959
  '/modal.client.ModalClient/ContainerStop': grpclib.const.Handler(
852
960
  self.ContainerStop,
853
961
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -968,6 +1076,30 @@ class ModalClientBase(abc.ABC):
968
1076
  modal_proto.api_pb2.EnvironmentUpdateRequest,
969
1077
  modal_proto.api_pb2.EnvironmentListItem,
970
1078
  ),
1079
+ '/modal.client.ModalClient/FlashContainerDeregister': grpclib.const.Handler(
1080
+ self.FlashContainerDeregister,
1081
+ grpclib.const.Cardinality.UNARY_UNARY,
1082
+ modal_proto.api_pb2.FlashContainerDeregisterRequest,
1083
+ google.protobuf.empty_pb2.Empty,
1084
+ ),
1085
+ '/modal.client.ModalClient/FlashContainerList': grpclib.const.Handler(
1086
+ self.FlashContainerList,
1087
+ grpclib.const.Cardinality.UNARY_UNARY,
1088
+ modal_proto.api_pb2.FlashContainerListRequest,
1089
+ modal_proto.api_pb2.FlashContainerListResponse,
1090
+ ),
1091
+ '/modal.client.ModalClient/FlashContainerRegister': grpclib.const.Handler(
1092
+ self.FlashContainerRegister,
1093
+ grpclib.const.Cardinality.UNARY_UNARY,
1094
+ modal_proto.api_pb2.FlashContainerRegisterRequest,
1095
+ modal_proto.api_pb2.FlashContainerRegisterResponse,
1096
+ ),
1097
+ '/modal.client.ModalClient/FlashSetTargetSlotsMetrics': grpclib.const.Handler(
1098
+ self.FlashSetTargetSlotsMetrics,
1099
+ grpclib.const.Cardinality.UNARY_UNARY,
1100
+ modal_proto.api_pb2.FlashSetTargetSlotsMetricsRequest,
1101
+ modal_proto.api_pb2.FlashSetTargetSlotsMetricsResponse,
1102
+ ),
971
1103
  '/modal.client.ModalClient/FunctionAsyncInvoke': grpclib.const.Handler(
972
1104
  self.FunctionAsyncInvoke,
973
1105
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -986,6 +1118,12 @@ class ModalClientBase(abc.ABC):
986
1118
  modal_proto.api_pb2.FunctionCallCancelRequest,
987
1119
  google.protobuf.empty_pb2.Empty,
988
1120
  ),
1121
+ '/modal.client.ModalClient/FunctionCallFromId': grpclib.const.Handler(
1122
+ self.FunctionCallFromId,
1123
+ grpclib.const.Cardinality.UNARY_UNARY,
1124
+ modal_proto.api_pb2.FunctionCallFromIdRequest,
1125
+ modal_proto.api_pb2.FunctionCallFromIdResponse,
1126
+ ),
989
1127
  '/modal.client.ModalClient/FunctionCallGetDataIn': grpclib.const.Handler(
990
1128
  self.FunctionCallGetDataIn,
991
1129
  grpclib.const.Cardinality.UNARY_STREAM,
@@ -1016,6 +1154,12 @@ class ModalClientBase(abc.ABC):
1016
1154
  modal_proto.api_pb2.FunctionCreateRequest,
1017
1155
  modal_proto.api_pb2.FunctionCreateResponse,
1018
1156
  ),
1157
+ '/modal.client.ModalClient/FunctionFinishInputs': grpclib.const.Handler(
1158
+ self.FunctionFinishInputs,
1159
+ grpclib.const.Cardinality.UNARY_UNARY,
1160
+ modal_proto.api_pb2.FunctionFinishInputsRequest,
1161
+ google.protobuf.empty_pb2.Empty,
1162
+ ),
1019
1163
  '/modal.client.ModalClient/FunctionGet': grpclib.const.Handler(
1020
1164
  self.FunctionGet,
1021
1165
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -1100,6 +1244,12 @@ class ModalClientBase(abc.ABC):
1100
1244
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsRequest,
1101
1245
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsResponse,
1102
1246
  ),
1247
+ '/modal.client.ModalClient/ImageDelete': grpclib.const.Handler(
1248
+ self.ImageDelete,
1249
+ grpclib.const.Cardinality.UNARY_UNARY,
1250
+ modal_proto.api_pb2.ImageDeleteRequest,
1251
+ google.protobuf.empty_pb2.Empty,
1252
+ ),
1103
1253
  '/modal.client.ModalClient/ImageFromId': grpclib.const.Handler(
1104
1254
  self.ImageFromId,
1105
1255
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -1118,6 +1268,24 @@ class ModalClientBase(abc.ABC):
1118
1268
  modal_proto.api_pb2.ImageJoinStreamingRequest,
1119
1269
  modal_proto.api_pb2.ImageJoinStreamingResponse,
1120
1270
  ),
1271
+ '/modal.client.ModalClient/MapAwait': grpclib.const.Handler(
1272
+ self.MapAwait,
1273
+ grpclib.const.Cardinality.UNARY_UNARY,
1274
+ modal_proto.api_pb2.MapAwaitRequest,
1275
+ modal_proto.api_pb2.MapAwaitResponse,
1276
+ ),
1277
+ '/modal.client.ModalClient/MapCheckInputs': grpclib.const.Handler(
1278
+ self.MapCheckInputs,
1279
+ grpclib.const.Cardinality.UNARY_UNARY,
1280
+ modal_proto.api_pb2.MapCheckInputsRequest,
1281
+ modal_proto.api_pb2.MapCheckInputsResponse,
1282
+ ),
1283
+ '/modal.client.ModalClient/MapStartOrContinue': grpclib.const.Handler(
1284
+ self.MapStartOrContinue,
1285
+ grpclib.const.Cardinality.UNARY_UNARY,
1286
+ modal_proto.api_pb2.MapStartOrContinueRequest,
1287
+ modal_proto.api_pb2.MapStartOrContinueResponse,
1288
+ ),
1121
1289
  '/modal.client.ModalClient/MountGetOrCreate': grpclib.const.Handler(
1122
1290
  self.MountGetOrCreate,
1123
1291
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -1238,6 +1406,18 @@ class ModalClientBase(abc.ABC):
1238
1406
  modal_proto.api_pb2.SandboxCreateRequest,
1239
1407
  modal_proto.api_pb2.SandboxCreateResponse,
1240
1408
  ),
1409
+ '/modal.client.ModalClient/SandboxCreateConnectToken': grpclib.const.Handler(
1410
+ self.SandboxCreateConnectToken,
1411
+ grpclib.const.Cardinality.UNARY_UNARY,
1412
+ modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
1413
+ modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
1414
+ ),
1415
+ '/modal.client.ModalClient/SandboxGetFromName': grpclib.const.Handler(
1416
+ self.SandboxGetFromName,
1417
+ grpclib.const.Cardinality.UNARY_UNARY,
1418
+ modal_proto.api_pb2.SandboxGetFromNameRequest,
1419
+ modal_proto.api_pb2.SandboxGetFromNameResponse,
1420
+ ),
1241
1421
  '/modal.client.ModalClient/SandboxGetLogs': grpclib.const.Handler(
1242
1422
  self.SandboxGetLogs,
1243
1423
  grpclib.const.Cardinality.UNARY_STREAM,
@@ -1286,6 +1466,18 @@ class ModalClientBase(abc.ABC):
1286
1466
  modal_proto.api_pb2.SandboxSnapshotFsRequest,
1287
1467
  modal_proto.api_pb2.SandboxSnapshotFsResponse,
1288
1468
  ),
1469
+ '/modal.client.ModalClient/SandboxSnapshotFsAsync': grpclib.const.Handler(
1470
+ self.SandboxSnapshotFsAsync,
1471
+ grpclib.const.Cardinality.UNARY_UNARY,
1472
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncRequest,
1473
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncResponse,
1474
+ ),
1475
+ '/modal.client.ModalClient/SandboxSnapshotFsAsyncGet': grpclib.const.Handler(
1476
+ self.SandboxSnapshotFsAsyncGet,
1477
+ grpclib.const.Cardinality.UNARY_UNARY,
1478
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncGetRequest,
1479
+ modal_proto.api_pb2.SandboxSnapshotFsResponse,
1480
+ ),
1289
1481
  '/modal.client.ModalClient/SandboxSnapshotGet': grpclib.const.Handler(
1290
1482
  self.SandboxSnapshotGet,
1291
1483
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -1304,6 +1496,12 @@ class ModalClientBase(abc.ABC):
1304
1496
  modal_proto.api_pb2.SandboxStdinWriteRequest,
1305
1497
  modal_proto.api_pb2.SandboxStdinWriteResponse,
1306
1498
  ),
1499
+ '/modal.client.ModalClient/SandboxTagsGet': grpclib.const.Handler(
1500
+ self.SandboxTagsGet,
1501
+ grpclib.const.Cardinality.UNARY_UNARY,
1502
+ modal_proto.api_pb2.SandboxTagsGetRequest,
1503
+ modal_proto.api_pb2.SandboxTagsGetResponse,
1504
+ ),
1307
1505
  '/modal.client.ModalClient/SandboxTagsSet': grpclib.const.Handler(
1308
1506
  self.SandboxTagsSet,
1309
1507
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -1406,6 +1604,12 @@ class ModalClientBase(abc.ABC):
1406
1604
  google.protobuf.empty_pb2.Empty,
1407
1605
  modal_proto.api_pb2.TaskCurrentInputsResponse,
1408
1606
  ),
1607
+ '/modal.client.ModalClient/TaskGetCommandRouterAccess': grpclib.const.Handler(
1608
+ self.TaskGetCommandRouterAccess,
1609
+ grpclib.const.Cardinality.UNARY_UNARY,
1610
+ modal_proto.api_pb2.TaskGetCommandRouterAccessRequest,
1611
+ modal_proto.api_pb2.TaskGetCommandRouterAccessResponse,
1612
+ ),
1409
1613
  '/modal.client.ModalClient/TaskList': grpclib.const.Handler(
1410
1614
  self.TaskList,
1411
1615
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -1544,6 +1748,12 @@ class ModalClientBase(abc.ABC):
1544
1748
  modal_proto.api_pb2.VolumeRenameRequest,
1545
1749
  google.protobuf.empty_pb2.Empty,
1546
1750
  ),
1751
+ '/modal.client.ModalClient/WorkspaceBillingReport': grpclib.const.Handler(
1752
+ self.WorkspaceBillingReport,
1753
+ grpclib.const.Cardinality.UNARY_STREAM,
1754
+ modal_proto.api_pb2.WorkspaceBillingReportRequest,
1755
+ modal_proto.api_pb2.WorkspaceBillingReportItem,
1756
+ ),
1547
1757
  '/modal.client.ModalClient/WorkspaceNameLookup': grpclib.const.Handler(
1548
1758
  self.WorkspaceNameLookup,
1549
1759
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -1610,6 +1820,12 @@ class ModalClientStub:
1610
1820
  modal_proto.api_pb2.AppGetOrCreateRequest,
1611
1821
  modal_proto.api_pb2.AppGetOrCreateResponse,
1612
1822
  )
1823
+ self.AppGetTags = grpclib.client.UnaryUnaryMethod(
1824
+ channel,
1825
+ '/modal.client.ModalClient/AppGetTags',
1826
+ modal_proto.api_pb2.AppGetTagsRequest,
1827
+ modal_proto.api_pb2.AppGetTagsResponse,
1828
+ )
1613
1829
  self.AppHeartbeat = grpclib.client.UnaryUnaryMethod(
1614
1830
  channel,
1615
1831
  '/modal.client.ModalClient/AppHeartbeat',
@@ -1646,6 +1862,12 @@ class ModalClientStub:
1646
1862
  modal_proto.api_pb2.AppSetObjectsRequest,
1647
1863
  google.protobuf.empty_pb2.Empty,
1648
1864
  )
1865
+ self.AppSetTags = grpclib.client.UnaryUnaryMethod(
1866
+ channel,
1867
+ '/modal.client.ModalClient/AppSetTags',
1868
+ modal_proto.api_pb2.AppSetTagsRequest,
1869
+ google.protobuf.empty_pb2.Empty,
1870
+ )
1649
1871
  self.AppStop = grpclib.client.UnaryUnaryMethod(
1650
1872
  channel,
1651
1873
  '/modal.client.ModalClient/AppStop',
@@ -1670,6 +1892,12 @@ class ModalClientStub:
1670
1892
  modal_proto.api_pb2.AttemptStartRequest,
1671
1893
  modal_proto.api_pb2.AttemptStartResponse,
1672
1894
  )
1895
+ self.AuthTokenGet = grpclib.client.UnaryUnaryMethod(
1896
+ channel,
1897
+ '/modal.client.ModalClient/AuthTokenGet',
1898
+ modal_proto.api_pb2.AuthTokenGetRequest,
1899
+ modal_proto.api_pb2.AuthTokenGetResponse,
1900
+ )
1673
1901
  self.BlobCreate = grpclib.client.UnaryUnaryMethod(
1674
1902
  channel,
1675
1903
  '/modal.client.ModalClient/BlobCreate',
@@ -1772,6 +2000,12 @@ class ModalClientStub:
1772
2000
  modal_proto.api_pb2.ContainerLogRequest,
1773
2001
  google.protobuf.empty_pb2.Empty,
1774
2002
  )
2003
+ self.ContainerReloadVolumes = grpclib.client.UnaryUnaryMethod(
2004
+ channel,
2005
+ '/modal.client.ModalClient/ContainerReloadVolumes',
2006
+ modal_proto.api_pb2.ContainerReloadVolumesRequest,
2007
+ modal_proto.api_pb2.ContainerReloadVolumesResponse,
2008
+ )
1775
2009
  self.ContainerStop = grpclib.client.UnaryUnaryMethod(
1776
2010
  channel,
1777
2011
  '/modal.client.ModalClient/ContainerStop',
@@ -1892,6 +2126,30 @@ class ModalClientStub:
1892
2126
  modal_proto.api_pb2.EnvironmentUpdateRequest,
1893
2127
  modal_proto.api_pb2.EnvironmentListItem,
1894
2128
  )
2129
+ self.FlashContainerDeregister = grpclib.client.UnaryUnaryMethod(
2130
+ channel,
2131
+ '/modal.client.ModalClient/FlashContainerDeregister',
2132
+ modal_proto.api_pb2.FlashContainerDeregisterRequest,
2133
+ google.protobuf.empty_pb2.Empty,
2134
+ )
2135
+ self.FlashContainerList = grpclib.client.UnaryUnaryMethod(
2136
+ channel,
2137
+ '/modal.client.ModalClient/FlashContainerList',
2138
+ modal_proto.api_pb2.FlashContainerListRequest,
2139
+ modal_proto.api_pb2.FlashContainerListResponse,
2140
+ )
2141
+ self.FlashContainerRegister = grpclib.client.UnaryUnaryMethod(
2142
+ channel,
2143
+ '/modal.client.ModalClient/FlashContainerRegister',
2144
+ modal_proto.api_pb2.FlashContainerRegisterRequest,
2145
+ modal_proto.api_pb2.FlashContainerRegisterResponse,
2146
+ )
2147
+ self.FlashSetTargetSlotsMetrics = grpclib.client.UnaryUnaryMethod(
2148
+ channel,
2149
+ '/modal.client.ModalClient/FlashSetTargetSlotsMetrics',
2150
+ modal_proto.api_pb2.FlashSetTargetSlotsMetricsRequest,
2151
+ modal_proto.api_pb2.FlashSetTargetSlotsMetricsResponse,
2152
+ )
1895
2153
  self.FunctionAsyncInvoke = grpclib.client.UnaryUnaryMethod(
1896
2154
  channel,
1897
2155
  '/modal.client.ModalClient/FunctionAsyncInvoke',
@@ -1910,6 +2168,12 @@ class ModalClientStub:
1910
2168
  modal_proto.api_pb2.FunctionCallCancelRequest,
1911
2169
  google.protobuf.empty_pb2.Empty,
1912
2170
  )
2171
+ self.FunctionCallFromId = grpclib.client.UnaryUnaryMethod(
2172
+ channel,
2173
+ '/modal.client.ModalClient/FunctionCallFromId',
2174
+ modal_proto.api_pb2.FunctionCallFromIdRequest,
2175
+ modal_proto.api_pb2.FunctionCallFromIdResponse,
2176
+ )
1913
2177
  self.FunctionCallGetDataIn = grpclib.client.UnaryStreamMethod(
1914
2178
  channel,
1915
2179
  '/modal.client.ModalClient/FunctionCallGetDataIn',
@@ -1940,6 +2204,12 @@ class ModalClientStub:
1940
2204
  modal_proto.api_pb2.FunctionCreateRequest,
1941
2205
  modal_proto.api_pb2.FunctionCreateResponse,
1942
2206
  )
2207
+ self.FunctionFinishInputs = grpclib.client.UnaryUnaryMethod(
2208
+ channel,
2209
+ '/modal.client.ModalClient/FunctionFinishInputs',
2210
+ modal_proto.api_pb2.FunctionFinishInputsRequest,
2211
+ google.protobuf.empty_pb2.Empty,
2212
+ )
1943
2213
  self.FunctionGet = grpclib.client.UnaryUnaryMethod(
1944
2214
  channel,
1945
2215
  '/modal.client.ModalClient/FunctionGet',
@@ -2024,6 +2294,12 @@ class ModalClientStub:
2024
2294
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsRequest,
2025
2295
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsResponse,
2026
2296
  )
2297
+ self.ImageDelete = grpclib.client.UnaryUnaryMethod(
2298
+ channel,
2299
+ '/modal.client.ModalClient/ImageDelete',
2300
+ modal_proto.api_pb2.ImageDeleteRequest,
2301
+ google.protobuf.empty_pb2.Empty,
2302
+ )
2027
2303
  self.ImageFromId = grpclib.client.UnaryUnaryMethod(
2028
2304
  channel,
2029
2305
  '/modal.client.ModalClient/ImageFromId',
@@ -2042,6 +2318,24 @@ class ModalClientStub:
2042
2318
  modal_proto.api_pb2.ImageJoinStreamingRequest,
2043
2319
  modal_proto.api_pb2.ImageJoinStreamingResponse,
2044
2320
  )
2321
+ self.MapAwait = grpclib.client.UnaryUnaryMethod(
2322
+ channel,
2323
+ '/modal.client.ModalClient/MapAwait',
2324
+ modal_proto.api_pb2.MapAwaitRequest,
2325
+ modal_proto.api_pb2.MapAwaitResponse,
2326
+ )
2327
+ self.MapCheckInputs = grpclib.client.UnaryUnaryMethod(
2328
+ channel,
2329
+ '/modal.client.ModalClient/MapCheckInputs',
2330
+ modal_proto.api_pb2.MapCheckInputsRequest,
2331
+ modal_proto.api_pb2.MapCheckInputsResponse,
2332
+ )
2333
+ self.MapStartOrContinue = grpclib.client.UnaryUnaryMethod(
2334
+ channel,
2335
+ '/modal.client.ModalClient/MapStartOrContinue',
2336
+ modal_proto.api_pb2.MapStartOrContinueRequest,
2337
+ modal_proto.api_pb2.MapStartOrContinueResponse,
2338
+ )
2045
2339
  self.MountGetOrCreate = grpclib.client.UnaryUnaryMethod(
2046
2340
  channel,
2047
2341
  '/modal.client.ModalClient/MountGetOrCreate',
@@ -2162,6 +2456,18 @@ class ModalClientStub:
2162
2456
  modal_proto.api_pb2.SandboxCreateRequest,
2163
2457
  modal_proto.api_pb2.SandboxCreateResponse,
2164
2458
  )
2459
+ self.SandboxCreateConnectToken = grpclib.client.UnaryUnaryMethod(
2460
+ channel,
2461
+ '/modal.client.ModalClient/SandboxCreateConnectToken',
2462
+ modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
2463
+ modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
2464
+ )
2465
+ self.SandboxGetFromName = grpclib.client.UnaryUnaryMethod(
2466
+ channel,
2467
+ '/modal.client.ModalClient/SandboxGetFromName',
2468
+ modal_proto.api_pb2.SandboxGetFromNameRequest,
2469
+ modal_proto.api_pb2.SandboxGetFromNameResponse,
2470
+ )
2165
2471
  self.SandboxGetLogs = grpclib.client.UnaryStreamMethod(
2166
2472
  channel,
2167
2473
  '/modal.client.ModalClient/SandboxGetLogs',
@@ -2210,6 +2516,18 @@ class ModalClientStub:
2210
2516
  modal_proto.api_pb2.SandboxSnapshotFsRequest,
2211
2517
  modal_proto.api_pb2.SandboxSnapshotFsResponse,
2212
2518
  )
2519
+ self.SandboxSnapshotFsAsync = grpclib.client.UnaryUnaryMethod(
2520
+ channel,
2521
+ '/modal.client.ModalClient/SandboxSnapshotFsAsync',
2522
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncRequest,
2523
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncResponse,
2524
+ )
2525
+ self.SandboxSnapshotFsAsyncGet = grpclib.client.UnaryUnaryMethod(
2526
+ channel,
2527
+ '/modal.client.ModalClient/SandboxSnapshotFsAsyncGet',
2528
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncGetRequest,
2529
+ modal_proto.api_pb2.SandboxSnapshotFsResponse,
2530
+ )
2213
2531
  self.SandboxSnapshotGet = grpclib.client.UnaryUnaryMethod(
2214
2532
  channel,
2215
2533
  '/modal.client.ModalClient/SandboxSnapshotGet',
@@ -2228,6 +2546,12 @@ class ModalClientStub:
2228
2546
  modal_proto.api_pb2.SandboxStdinWriteRequest,
2229
2547
  modal_proto.api_pb2.SandboxStdinWriteResponse,
2230
2548
  )
2549
+ self.SandboxTagsGet = grpclib.client.UnaryUnaryMethod(
2550
+ channel,
2551
+ '/modal.client.ModalClient/SandboxTagsGet',
2552
+ modal_proto.api_pb2.SandboxTagsGetRequest,
2553
+ modal_proto.api_pb2.SandboxTagsGetResponse,
2554
+ )
2231
2555
  self.SandboxTagsSet = grpclib.client.UnaryUnaryMethod(
2232
2556
  channel,
2233
2557
  '/modal.client.ModalClient/SandboxTagsSet',
@@ -2330,6 +2654,12 @@ class ModalClientStub:
2330
2654
  google.protobuf.empty_pb2.Empty,
2331
2655
  modal_proto.api_pb2.TaskCurrentInputsResponse,
2332
2656
  )
2657
+ self.TaskGetCommandRouterAccess = grpclib.client.UnaryUnaryMethod(
2658
+ channel,
2659
+ '/modal.client.ModalClient/TaskGetCommandRouterAccess',
2660
+ modal_proto.api_pb2.TaskGetCommandRouterAccessRequest,
2661
+ modal_proto.api_pb2.TaskGetCommandRouterAccessResponse,
2662
+ )
2333
2663
  self.TaskList = grpclib.client.UnaryUnaryMethod(
2334
2664
  channel,
2335
2665
  '/modal.client.ModalClient/TaskList',
@@ -2468,6 +2798,12 @@ class ModalClientStub:
2468
2798
  modal_proto.api_pb2.VolumeRenameRequest,
2469
2799
  google.protobuf.empty_pb2.Empty,
2470
2800
  )
2801
+ self.WorkspaceBillingReport = grpclib.client.UnaryStreamMethod(
2802
+ channel,
2803
+ '/modal.client.ModalClient/WorkspaceBillingReport',
2804
+ modal_proto.api_pb2.WorkspaceBillingReportRequest,
2805
+ modal_proto.api_pb2.WorkspaceBillingReportItem,
2806
+ )
2471
2807
  self.WorkspaceNameLookup = grpclib.client.UnaryUnaryMethod(
2472
2808
  channel,
2473
2809
  '/modal.client.ModalClient/WorkspaceNameLookup',