modal 1.0.6.dev58__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 (147) hide show
  1. modal/__main__.py +3 -4
  2. modal/_billing.py +80 -0
  3. modal/_clustered_functions.py +7 -3
  4. modal/_clustered_functions.pyi +4 -2
  5. modal/_container_entrypoint.py +41 -49
  6. modal/_functions.py +424 -195
  7. modal/_grpc_client.py +171 -0
  8. modal/_load_context.py +105 -0
  9. modal/_object.py +68 -20
  10. modal/_output.py +58 -45
  11. modal/_partial_function.py +36 -11
  12. modal/_pty.py +7 -3
  13. modal/_resolver.py +21 -35
  14. modal/_runtime/asgi.py +4 -3
  15. modal/_runtime/container_io_manager.py +301 -186
  16. modal/_runtime/container_io_manager.pyi +70 -61
  17. modal/_runtime/execution_context.py +18 -2
  18. modal/_runtime/execution_context.pyi +4 -1
  19. modal/_runtime/gpu_memory_snapshot.py +170 -63
  20. modal/_runtime/user_code_imports.py +28 -58
  21. modal/_serialization.py +57 -1
  22. modal/_utils/async_utils.py +33 -12
  23. modal/_utils/auth_token_manager.py +2 -5
  24. modal/_utils/blob_utils.py +110 -53
  25. modal/_utils/function_utils.py +49 -42
  26. modal/_utils/grpc_utils.py +80 -50
  27. modal/_utils/mount_utils.py +26 -1
  28. modal/_utils/name_utils.py +17 -3
  29. modal/_utils/task_command_router_client.py +536 -0
  30. modal/_utils/time_utils.py +34 -6
  31. modal/app.py +219 -83
  32. modal/app.pyi +229 -56
  33. modal/billing.py +5 -0
  34. modal/{requirements → builder}/2025.06.txt +1 -0
  35. modal/{requirements → builder}/PREVIEW.txt +1 -0
  36. modal/cli/_download.py +19 -3
  37. modal/cli/_traceback.py +3 -2
  38. modal/cli/app.py +4 -4
  39. modal/cli/cluster.py +15 -7
  40. modal/cli/config.py +5 -3
  41. modal/cli/container.py +7 -6
  42. modal/cli/dict.py +22 -16
  43. modal/cli/entry_point.py +12 -5
  44. modal/cli/environment.py +5 -4
  45. modal/cli/import_refs.py +3 -3
  46. modal/cli/launch.py +102 -5
  47. modal/cli/network_file_system.py +9 -13
  48. modal/cli/profile.py +3 -2
  49. modal/cli/programs/launch_instance_ssh.py +94 -0
  50. modal/cli/programs/run_jupyter.py +1 -1
  51. modal/cli/programs/run_marimo.py +95 -0
  52. modal/cli/programs/vscode.py +1 -1
  53. modal/cli/queues.py +57 -26
  54. modal/cli/run.py +58 -16
  55. modal/cli/secret.py +48 -22
  56. modal/cli/utils.py +3 -4
  57. modal/cli/volume.py +28 -25
  58. modal/client.py +13 -116
  59. modal/client.pyi +9 -91
  60. modal/cloud_bucket_mount.py +5 -3
  61. modal/cloud_bucket_mount.pyi +5 -1
  62. modal/cls.py +130 -102
  63. modal/cls.pyi +45 -85
  64. modal/config.py +29 -10
  65. modal/container_process.py +291 -13
  66. modal/container_process.pyi +95 -32
  67. modal/dict.py +282 -63
  68. modal/dict.pyi +423 -73
  69. modal/environments.py +15 -27
  70. modal/environments.pyi +5 -15
  71. modal/exception.py +8 -0
  72. modal/experimental/__init__.py +143 -38
  73. modal/experimental/flash.py +247 -78
  74. modal/experimental/flash.pyi +137 -9
  75. modal/file_io.py +14 -28
  76. modal/file_io.pyi +2 -2
  77. modal/file_pattern_matcher.py +25 -16
  78. modal/functions.pyi +134 -61
  79. modal/image.py +255 -86
  80. modal/image.pyi +300 -62
  81. modal/io_streams.py +436 -126
  82. modal/io_streams.pyi +236 -171
  83. modal/mount.py +62 -157
  84. modal/mount.pyi +45 -172
  85. modal/network_file_system.py +30 -53
  86. modal/network_file_system.pyi +16 -76
  87. modal/object.pyi +42 -8
  88. modal/parallel_map.py +821 -113
  89. modal/parallel_map.pyi +134 -0
  90. modal/partial_function.pyi +4 -1
  91. modal/proxy.py +16 -7
  92. modal/proxy.pyi +10 -2
  93. modal/queue.py +263 -61
  94. modal/queue.pyi +409 -66
  95. modal/runner.py +112 -92
  96. modal/runner.pyi +45 -27
  97. modal/sandbox.py +451 -124
  98. modal/sandbox.pyi +513 -67
  99. modal/secret.py +291 -67
  100. modal/secret.pyi +425 -19
  101. modal/serving.py +7 -11
  102. modal/serving.pyi +7 -8
  103. modal/snapshot.py +11 -8
  104. modal/token_flow.py +4 -4
  105. modal/volume.py +344 -98
  106. modal/volume.pyi +464 -68
  107. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/METADATA +9 -8
  108. modal-1.2.3.dev7.dist-info/RECORD +195 -0
  109. modal_docs/mdmd/mdmd.py +11 -1
  110. modal_proto/api.proto +399 -67
  111. modal_proto/api_grpc.py +241 -1
  112. modal_proto/api_pb2.py +1395 -1000
  113. modal_proto/api_pb2.pyi +1239 -79
  114. modal_proto/api_pb2_grpc.py +499 -4
  115. modal_proto/api_pb2_grpc.pyi +162 -14
  116. modal_proto/modal_api_grpc.py +175 -160
  117. modal_proto/sandbox_router.proto +145 -0
  118. modal_proto/sandbox_router_grpc.py +105 -0
  119. modal_proto/sandbox_router_pb2.py +149 -0
  120. modal_proto/sandbox_router_pb2.pyi +333 -0
  121. modal_proto/sandbox_router_pb2_grpc.py +203 -0
  122. modal_proto/sandbox_router_pb2_grpc.pyi +75 -0
  123. modal_proto/task_command_router.proto +144 -0
  124. modal_proto/task_command_router_grpc.py +105 -0
  125. modal_proto/task_command_router_pb2.py +149 -0
  126. modal_proto/task_command_router_pb2.pyi +333 -0
  127. modal_proto/task_command_router_pb2_grpc.py +203 -0
  128. modal_proto/task_command_router_pb2_grpc.pyi +75 -0
  129. modal_version/__init__.py +1 -1
  130. modal-1.0.6.dev58.dist-info/RECORD +0 -183
  131. modal_proto/modal_options_grpc.py +0 -3
  132. modal_proto/options.proto +0 -19
  133. modal_proto/options_grpc.py +0 -3
  134. modal_proto/options_pb2.py +0 -35
  135. modal_proto/options_pb2.pyi +0 -20
  136. modal_proto/options_pb2_grpc.py +0 -4
  137. modal_proto/options_pb2_grpc.pyi +0 -7
  138. /modal/{requirements → builder}/2023.12.312.txt +0 -0
  139. /modal/{requirements → builder}/2023.12.txt +0 -0
  140. /modal/{requirements → builder}/2024.04.txt +0 -0
  141. /modal/{requirements → builder}/2024.10.txt +0 -0
  142. /modal/{requirements → builder}/README.md +0 -0
  143. /modal/{requirements → builder}/base-images.json +0 -0
  144. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/WHEEL +0 -0
  145. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/entry_points.txt +0 -0
  146. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/licenses/LICENSE +0 -0
  147. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/top_level.txt +0 -0
@@ -47,6 +47,10 @@ class ModalClientStub:
47
47
  modal_proto.api_pb2.AppGetOrCreateRequest,
48
48
  modal_proto.api_pb2.AppGetOrCreateResponse,
49
49
  ]
50
+ AppGetTags: grpc.UnaryUnaryMultiCallable[
51
+ modal_proto.api_pb2.AppGetTagsRequest,
52
+ modal_proto.api_pb2.AppGetTagsResponse,
53
+ ]
50
54
  AppHeartbeat: grpc.UnaryUnaryMultiCallable[
51
55
  modal_proto.api_pb2.AppHeartbeatRequest,
52
56
  google.protobuf.empty_pb2.Empty,
@@ -71,6 +75,10 @@ class ModalClientStub:
71
75
  modal_proto.api_pb2.AppSetObjectsRequest,
72
76
  google.protobuf.empty_pb2.Empty,
73
77
  ]
78
+ AppSetTags: grpc.UnaryUnaryMultiCallable[
79
+ modal_proto.api_pb2.AppSetTagsRequest,
80
+ google.protobuf.empty_pb2.Empty,
81
+ ]
74
82
  AppStop: grpc.UnaryUnaryMultiCallable[
75
83
  modal_proto.api_pb2.AppStopRequest,
76
84
  google.protobuf.empty_pb2.Empty,
@@ -79,10 +87,7 @@ class ModalClientStub:
79
87
  modal_proto.api_pb2.AttemptAwaitRequest,
80
88
  modal_proto.api_pb2.AttemptAwaitResponse,
81
89
  ]
82
- """Input Plane
83
- These RPCs are experimental, not deployed to production, and can be changed / removed
84
- without needing to worry about backwards compatibility.
85
- """
90
+ """Input Plane"""
86
91
  AttemptRetry: grpc.UnaryUnaryMultiCallable[
87
92
  modal_proto.api_pb2.AttemptRetryRequest,
88
93
  modal_proto.api_pb2.AttemptRetryResponse,
@@ -269,6 +274,10 @@ class ModalClientStub:
269
274
  modal_proto.api_pb2.FlashContainerRegisterRequest,
270
275
  modal_proto.api_pb2.FlashContainerRegisterResponse,
271
276
  ]
277
+ FlashSetTargetSlotsMetrics: grpc.UnaryUnaryMultiCallable[
278
+ modal_proto.api_pb2.FlashSetTargetSlotsMetricsRequest,
279
+ modal_proto.api_pb2.FlashSetTargetSlotsMetricsResponse,
280
+ ]
272
281
  FunctionAsyncInvoke: grpc.UnaryUnaryMultiCallable[
273
282
  modal_proto.api_pb2.FunctionAsyncInvokeRequest,
274
283
  modal_proto.api_pb2.FunctionAsyncInvokeResponse,
@@ -282,6 +291,10 @@ class ModalClientStub:
282
291
  modal_proto.api_pb2.FunctionCallCancelRequest,
283
292
  google.protobuf.empty_pb2.Empty,
284
293
  ]
294
+ FunctionCallFromId: grpc.UnaryUnaryMultiCallable[
295
+ modal_proto.api_pb2.FunctionCallFromIdRequest,
296
+ modal_proto.api_pb2.FunctionCallFromIdResponse,
297
+ ]
285
298
  FunctionCallGetDataIn: grpc.UnaryStreamMultiCallable[
286
299
  modal_proto.api_pb2.FunctionCallGetDataRequest,
287
300
  modal_proto.api_pb2.DataChunk,
@@ -302,6 +315,11 @@ class ModalClientStub:
302
315
  modal_proto.api_pb2.FunctionCreateRequest,
303
316
  modal_proto.api_pb2.FunctionCreateResponse,
304
317
  ]
318
+ FunctionFinishInputs: grpc.UnaryUnaryMultiCallable[
319
+ modal_proto.api_pb2.FunctionFinishInputsRequest,
320
+ google.protobuf.empty_pb2.Empty,
321
+ ]
322
+ """For map RPCs, to signal that all inputs have been sent"""
305
323
  FunctionGet: grpc.UnaryUnaryMultiCallable[
306
324
  modal_proto.api_pb2.FunctionGetRequest,
307
325
  modal_proto.api_pb2.FunctionGetResponse,
@@ -361,11 +379,15 @@ class ModalClientStub:
361
379
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsRequest,
362
380
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsResponse,
363
381
  ]
382
+ ImageDelete: grpc.UnaryUnaryMultiCallable[
383
+ modal_proto.api_pb2.ImageDeleteRequest,
384
+ google.protobuf.empty_pb2.Empty,
385
+ ]
386
+ """Images"""
364
387
  ImageFromId: grpc.UnaryUnaryMultiCallable[
365
388
  modal_proto.api_pb2.ImageFromIdRequest,
366
389
  modal_proto.api_pb2.ImageFromIdResponse,
367
390
  ]
368
- """Images"""
369
391
  ImageGetOrCreate: grpc.UnaryUnaryMultiCallable[
370
392
  modal_proto.api_pb2.ImageGetOrCreateRequest,
371
393
  modal_proto.api_pb2.ImageGetOrCreateResponse,
@@ -374,6 +396,19 @@ class ModalClientStub:
374
396
  modal_proto.api_pb2.ImageJoinStreamingRequest,
375
397
  modal_proto.api_pb2.ImageJoinStreamingResponse,
376
398
  ]
399
+ MapAwait: grpc.UnaryUnaryMultiCallable[
400
+ modal_proto.api_pb2.MapAwaitRequest,
401
+ modal_proto.api_pb2.MapAwaitResponse,
402
+ ]
403
+ """Input Plane Map"""
404
+ MapCheckInputs: grpc.UnaryUnaryMultiCallable[
405
+ modal_proto.api_pb2.MapCheckInputsRequest,
406
+ modal_proto.api_pb2.MapCheckInputsResponse,
407
+ ]
408
+ MapStartOrContinue: grpc.UnaryUnaryMultiCallable[
409
+ modal_proto.api_pb2.MapStartOrContinueRequest,
410
+ modal_proto.api_pb2.MapStartOrContinueResponse,
411
+ ]
377
412
  MountGetOrCreate: grpc.UnaryUnaryMultiCallable[
378
413
  modal_proto.api_pb2.MountGetOrCreateRequest,
379
414
  modal_proto.api_pb2.MountGetOrCreateResponse,
@@ -459,6 +494,10 @@ class ModalClientStub:
459
494
  modal_proto.api_pb2.SandboxCreateResponse,
460
495
  ]
461
496
  """Sandboxes"""
497
+ SandboxCreateConnectToken: grpc.UnaryUnaryMultiCallable[
498
+ modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
499
+ modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
500
+ ]
462
501
  SandboxGetFromName: grpc.UnaryUnaryMultiCallable[
463
502
  modal_proto.api_pb2.SandboxGetFromNameRequest,
464
503
  modal_proto.api_pb2.SandboxGetFromNameResponse,
@@ -496,6 +535,14 @@ class ModalClientStub:
496
535
  modal_proto.api_pb2.SandboxSnapshotFsRequest,
497
536
  modal_proto.api_pb2.SandboxSnapshotFsResponse,
498
537
  ]
538
+ SandboxSnapshotFsAsync: grpc.UnaryUnaryMultiCallable[
539
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncRequest,
540
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncResponse,
541
+ ]
542
+ SandboxSnapshotFsAsyncGet: grpc.UnaryUnaryMultiCallable[
543
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncGetRequest,
544
+ modal_proto.api_pb2.SandboxSnapshotFsResponse,
545
+ ]
499
546
  SandboxSnapshotGet: grpc.UnaryUnaryMultiCallable[
500
547
  modal_proto.api_pb2.SandboxSnapshotGetRequest,
501
548
  modal_proto.api_pb2.SandboxSnapshotGetResponse,
@@ -508,6 +555,10 @@ class ModalClientStub:
508
555
  modal_proto.api_pb2.SandboxStdinWriteRequest,
509
556
  modal_proto.api_pb2.SandboxStdinWriteResponse,
510
557
  ]
558
+ SandboxTagsGet: grpc.UnaryUnaryMultiCallable[
559
+ modal_proto.api_pb2.SandboxTagsGetRequest,
560
+ modal_proto.api_pb2.SandboxTagsGetResponse,
561
+ ]
511
562
  SandboxTagsSet: grpc.UnaryUnaryMultiCallable[
512
563
  modal_proto.api_pb2.SandboxTagsSetRequest,
513
564
  google.protobuf.empty_pb2.Empty,
@@ -579,6 +630,10 @@ class ModalClientStub:
579
630
  google.protobuf.empty_pb2.Empty,
580
631
  modal_proto.api_pb2.TaskCurrentInputsResponse,
581
632
  ]
633
+ TaskGetCommandRouterAccess: grpc.UnaryUnaryMultiCallable[
634
+ modal_proto.api_pb2.TaskGetCommandRouterAccessRequest,
635
+ modal_proto.api_pb2.TaskGetCommandRouterAccessResponse,
636
+ ]
582
637
  TaskList: grpc.UnaryUnaryMultiCallable[
583
638
  modal_proto.api_pb2.TaskListRequest,
584
639
  modal_proto.api_pb2.TaskListResponse,
@@ -674,11 +729,15 @@ class ModalClientStub:
674
729
  modal_proto.api_pb2.VolumeRenameRequest,
675
730
  google.protobuf.empty_pb2.Empty,
676
731
  ]
732
+ WorkspaceBillingReport: grpc.UnaryStreamMultiCallable[
733
+ modal_proto.api_pb2.WorkspaceBillingReportRequest,
734
+ modal_proto.api_pb2.WorkspaceBillingReportItem,
735
+ ]
736
+ """Workspaces"""
677
737
  WorkspaceNameLookup: grpc.UnaryUnaryMultiCallable[
678
738
  google.protobuf.empty_pb2.Empty,
679
739
  modal_proto.api_pb2.WorkspaceNameLookupResponse,
680
740
  ]
681
- """Workspaces"""
682
741
 
683
742
  class ModalClientServicer(metaclass=abc.ABCMeta):
684
743
  @abc.abstractmethod
@@ -737,6 +796,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
737
796
  context: grpc.ServicerContext,
738
797
  ) -> modal_proto.api_pb2.AppGetOrCreateResponse: ...
739
798
  @abc.abstractmethod
799
+ def AppGetTags(
800
+ self,
801
+ request: modal_proto.api_pb2.AppGetTagsRequest,
802
+ context: grpc.ServicerContext,
803
+ ) -> modal_proto.api_pb2.AppGetTagsResponse: ...
804
+ @abc.abstractmethod
740
805
  def AppHeartbeat(
741
806
  self,
742
807
  request: modal_proto.api_pb2.AppHeartbeatRequest,
@@ -773,6 +838,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
773
838
  context: grpc.ServicerContext,
774
839
  ) -> google.protobuf.empty_pb2.Empty: ...
775
840
  @abc.abstractmethod
841
+ def AppSetTags(
842
+ self,
843
+ request: modal_proto.api_pb2.AppSetTagsRequest,
844
+ context: grpc.ServicerContext,
845
+ ) -> google.protobuf.empty_pb2.Empty: ...
846
+ @abc.abstractmethod
776
847
  def AppStop(
777
848
  self,
778
849
  request: modal_proto.api_pb2.AppStopRequest,
@@ -784,10 +855,7 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
784
855
  request: modal_proto.api_pb2.AttemptAwaitRequest,
785
856
  context: grpc.ServicerContext,
786
857
  ) -> modal_proto.api_pb2.AttemptAwaitResponse:
787
- """Input Plane
788
- These RPCs are experimental, not deployed to production, and can be changed / removed
789
- without needing to worry about backwards compatibility.
790
- """
858
+ """Input Plane"""
791
859
  @abc.abstractmethod
792
860
  def AttemptRetry(
793
861
  self,
@@ -1063,6 +1131,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1063
1131
  context: grpc.ServicerContext,
1064
1132
  ) -> modal_proto.api_pb2.FlashContainerRegisterResponse: ...
1065
1133
  @abc.abstractmethod
1134
+ def FlashSetTargetSlotsMetrics(
1135
+ self,
1136
+ request: modal_proto.api_pb2.FlashSetTargetSlotsMetricsRequest,
1137
+ context: grpc.ServicerContext,
1138
+ ) -> modal_proto.api_pb2.FlashSetTargetSlotsMetricsResponse: ...
1139
+ @abc.abstractmethod
1066
1140
  def FunctionAsyncInvoke(
1067
1141
  self,
1068
1142
  request: modal_proto.api_pb2.FunctionAsyncInvokeRequest,
@@ -1082,6 +1156,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1082
1156
  context: grpc.ServicerContext,
1083
1157
  ) -> google.protobuf.empty_pb2.Empty: ...
1084
1158
  @abc.abstractmethod
1159
+ def FunctionCallFromId(
1160
+ self,
1161
+ request: modal_proto.api_pb2.FunctionCallFromIdRequest,
1162
+ context: grpc.ServicerContext,
1163
+ ) -> modal_proto.api_pb2.FunctionCallFromIdResponse: ...
1164
+ @abc.abstractmethod
1085
1165
  def FunctionCallGetDataIn(
1086
1166
  self,
1087
1167
  request: modal_proto.api_pb2.FunctionCallGetDataRequest,
@@ -1112,6 +1192,13 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1112
1192
  context: grpc.ServicerContext,
1113
1193
  ) -> modal_proto.api_pb2.FunctionCreateResponse: ...
1114
1194
  @abc.abstractmethod
1195
+ def FunctionFinishInputs(
1196
+ self,
1197
+ request: modal_proto.api_pb2.FunctionFinishInputsRequest,
1198
+ context: grpc.ServicerContext,
1199
+ ) -> google.protobuf.empty_pb2.Empty:
1200
+ """For map RPCs, to signal that all inputs have been sent"""
1201
+ @abc.abstractmethod
1115
1202
  def FunctionGet(
1116
1203
  self,
1117
1204
  request: modal_proto.api_pb2.FunctionGetRequest,
@@ -1199,12 +1286,18 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1199
1286
  context: grpc.ServicerContext,
1200
1287
  ) -> modal_proto.api_pb2.FunctionUpdateSchedulingParamsResponse: ...
1201
1288
  @abc.abstractmethod
1289
+ def ImageDelete(
1290
+ self,
1291
+ request: modal_proto.api_pb2.ImageDeleteRequest,
1292
+ context: grpc.ServicerContext,
1293
+ ) -> google.protobuf.empty_pb2.Empty:
1294
+ """Images"""
1295
+ @abc.abstractmethod
1202
1296
  def ImageFromId(
1203
1297
  self,
1204
1298
  request: modal_proto.api_pb2.ImageFromIdRequest,
1205
1299
  context: grpc.ServicerContext,
1206
- ) -> modal_proto.api_pb2.ImageFromIdResponse:
1207
- """Images"""
1300
+ ) -> modal_proto.api_pb2.ImageFromIdResponse: ...
1208
1301
  @abc.abstractmethod
1209
1302
  def ImageGetOrCreate(
1210
1303
  self,
@@ -1218,6 +1311,25 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1218
1311
  context: grpc.ServicerContext,
1219
1312
  ) -> collections.abc.Iterator[modal_proto.api_pb2.ImageJoinStreamingResponse]: ...
1220
1313
  @abc.abstractmethod
1314
+ def MapAwait(
1315
+ self,
1316
+ request: modal_proto.api_pb2.MapAwaitRequest,
1317
+ context: grpc.ServicerContext,
1318
+ ) -> modal_proto.api_pb2.MapAwaitResponse:
1319
+ """Input Plane Map"""
1320
+ @abc.abstractmethod
1321
+ def MapCheckInputs(
1322
+ self,
1323
+ request: modal_proto.api_pb2.MapCheckInputsRequest,
1324
+ context: grpc.ServicerContext,
1325
+ ) -> modal_proto.api_pb2.MapCheckInputsResponse: ...
1326
+ @abc.abstractmethod
1327
+ def MapStartOrContinue(
1328
+ self,
1329
+ request: modal_proto.api_pb2.MapStartOrContinueRequest,
1330
+ context: grpc.ServicerContext,
1331
+ ) -> modal_proto.api_pb2.MapStartOrContinueResponse: ...
1332
+ @abc.abstractmethod
1221
1333
  def MountGetOrCreate(
1222
1334
  self,
1223
1335
  request: modal_proto.api_pb2.MountGetOrCreateRequest,
@@ -1343,6 +1455,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1343
1455
  ) -> modal_proto.api_pb2.SandboxCreateResponse:
1344
1456
  """Sandboxes"""
1345
1457
  @abc.abstractmethod
1458
+ def SandboxCreateConnectToken(
1459
+ self,
1460
+ request: modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
1461
+ context: grpc.ServicerContext,
1462
+ ) -> modal_proto.api_pb2.SandboxCreateConnectTokenResponse: ...
1463
+ @abc.abstractmethod
1346
1464
  def SandboxGetFromName(
1347
1465
  self,
1348
1466
  request: modal_proto.api_pb2.SandboxGetFromNameRequest,
@@ -1398,6 +1516,18 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1398
1516
  context: grpc.ServicerContext,
1399
1517
  ) -> modal_proto.api_pb2.SandboxSnapshotFsResponse: ...
1400
1518
  @abc.abstractmethod
1519
+ def SandboxSnapshotFsAsync(
1520
+ self,
1521
+ request: modal_proto.api_pb2.SandboxSnapshotFsAsyncRequest,
1522
+ context: grpc.ServicerContext,
1523
+ ) -> modal_proto.api_pb2.SandboxSnapshotFsAsyncResponse: ...
1524
+ @abc.abstractmethod
1525
+ def SandboxSnapshotFsAsyncGet(
1526
+ self,
1527
+ request: modal_proto.api_pb2.SandboxSnapshotFsAsyncGetRequest,
1528
+ context: grpc.ServicerContext,
1529
+ ) -> modal_proto.api_pb2.SandboxSnapshotFsResponse: ...
1530
+ @abc.abstractmethod
1401
1531
  def SandboxSnapshotGet(
1402
1532
  self,
1403
1533
  request: modal_proto.api_pb2.SandboxSnapshotGetRequest,
@@ -1416,6 +1546,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1416
1546
  context: grpc.ServicerContext,
1417
1547
  ) -> modal_proto.api_pb2.SandboxStdinWriteResponse: ...
1418
1548
  @abc.abstractmethod
1549
+ def SandboxTagsGet(
1550
+ self,
1551
+ request: modal_proto.api_pb2.SandboxTagsGetRequest,
1552
+ context: grpc.ServicerContext,
1553
+ ) -> modal_proto.api_pb2.SandboxTagsGetResponse: ...
1554
+ @abc.abstractmethod
1419
1555
  def SandboxTagsSet(
1420
1556
  self,
1421
1557
  request: modal_proto.api_pb2.SandboxTagsSetRequest,
@@ -1521,6 +1657,12 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1521
1657
  context: grpc.ServicerContext,
1522
1658
  ) -> modal_proto.api_pb2.TaskCurrentInputsResponse: ...
1523
1659
  @abc.abstractmethod
1660
+ def TaskGetCommandRouterAccess(
1661
+ self,
1662
+ request: modal_proto.api_pb2.TaskGetCommandRouterAccessRequest,
1663
+ context: grpc.ServicerContext,
1664
+ ) -> modal_proto.api_pb2.TaskGetCommandRouterAccessResponse: ...
1665
+ @abc.abstractmethod
1524
1666
  def TaskList(
1525
1667
  self,
1526
1668
  request: modal_proto.api_pb2.TaskListRequest,
@@ -1662,11 +1804,17 @@ class ModalClientServicer(metaclass=abc.ABCMeta):
1662
1804
  context: grpc.ServicerContext,
1663
1805
  ) -> google.protobuf.empty_pb2.Empty: ...
1664
1806
  @abc.abstractmethod
1807
+ def WorkspaceBillingReport(
1808
+ self,
1809
+ request: modal_proto.api_pb2.WorkspaceBillingReportRequest,
1810
+ context: grpc.ServicerContext,
1811
+ ) -> collections.abc.Iterator[modal_proto.api_pb2.WorkspaceBillingReportItem]:
1812
+ """Workspaces"""
1813
+ @abc.abstractmethod
1665
1814
  def WorkspaceNameLookup(
1666
1815
  self,
1667
1816
  request: google.protobuf.empty_pb2.Empty,
1668
1817
  context: grpc.ServicerContext,
1669
- ) -> modal_proto.api_pb2.WorkspaceNameLookupResponse:
1670
- """Workspaces"""
1818
+ ) -> modal_proto.api_pb2.WorkspaceNameLookupResponse: ...
1671
1819
 
1672
1820
  def add_ModalClientServicer_to_server(servicer: ModalClientServicer, server: grpc.Server) -> None: ...