modal 0.73.165__py3-none-any.whl → 0.73.167__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/cli/import_refs.py +0 -1
- modal/client.pyi +2 -2
- modal/cls.py +2 -3
- modal/functions.pyi +6 -6
- modal/image.py +8 -8
- modal/mount.py +4 -3
- {modal-0.73.165.dist-info → modal-0.73.167.dist-info}/METADATA +1 -1
- {modal-0.73.165.dist-info → modal-0.73.167.dist-info}/RECORD +20 -20
- modal_proto/api.proto +27 -0
- modal_proto/api_grpc.py +32 -0
- modal_proto/api_pb2.py +761 -711
- modal_proto/api_pb2.pyi +84 -0
- modal_proto/api_pb2_grpc.py +67 -0
- modal_proto/api_pb2_grpc.pyi +22 -0
- modal_proto/modal_api_grpc.py +2 -0
- modal_version/_version_generated.py +1 -1
- {modal-0.73.165.dist-info → modal-0.73.167.dist-info}/WHEEL +0 -0
- {modal-0.73.165.dist-info → modal-0.73.167.dist-info}/entry_points.txt +0 -0
- {modal-0.73.165.dist-info → modal-0.73.167.dist-info}/licenses/LICENSE +0 -0
- {modal-0.73.165.dist-info → modal-0.73.167.dist-info}/top_level.txt +0 -0
modal/cli/import_refs.py
CHANGED
@@ -69,7 +69,6 @@ def import_file_or_module(import_ref: ImportRef, base_cmd: str = ""):
|
|
69
69
|
(2025, 2, 6),
|
70
70
|
f"Using Python module paths will require using the -m flag in a future version of Modal.\n"
|
71
71
|
f"Use `{base_cmd} -m {import_ref.file_or_module}` instead.",
|
72
|
-
pending=True,
|
73
72
|
show_source=False,
|
74
73
|
)
|
75
74
|
try:
|
modal/client.pyi
CHANGED
@@ -31,7 +31,7 @@ class _Client:
|
|
31
31
|
server_url: str,
|
32
32
|
client_type: int,
|
33
33
|
credentials: typing.Optional[tuple[str, str]],
|
34
|
-
version: str = "0.73.
|
34
|
+
version: str = "0.73.167",
|
35
35
|
): ...
|
36
36
|
def is_closed(self) -> bool: ...
|
37
37
|
@property
|
@@ -93,7 +93,7 @@ class Client:
|
|
93
93
|
server_url: str,
|
94
94
|
client_type: int,
|
95
95
|
credentials: typing.Optional[tuple[str, str]],
|
96
|
-
version: str = "0.73.
|
96
|
+
version: str = "0.73.167",
|
97
97
|
): ...
|
98
98
|
def is_closed(self) -> bool: ...
|
99
99
|
@property
|
modal/cls.py
CHANGED
@@ -706,10 +706,9 @@ class _Cls(_Object, type_prefix="cs"):
|
|
706
706
|
# if not local (== k *could* be a method) or it is local and we know k is a method
|
707
707
|
deprecation_warning(
|
708
708
|
(2025, 1, 13),
|
709
|
-
"
|
710
|
-
"instantiate
|
709
|
+
"Calling a method on an uninstantiated class will soon be deprecated; "
|
710
|
+
"update your code to instantiate the class first, i.e.:\n"
|
711
711
|
f"{self._name}().{k} instead of {self._name}.{k}",
|
712
|
-
pending=True,
|
713
712
|
)
|
714
713
|
return getattr(self(), k)
|
715
714
|
# non-method attribute access on local class - arguably shouldn't be used either:
|
modal/functions.pyi
CHANGED
@@ -200,11 +200,11 @@ class Function(
|
|
200
200
|
|
201
201
|
_call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
|
202
202
|
|
203
|
-
class __remote_spec(typing_extensions.Protocol[
|
203
|
+
class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
204
204
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
205
205
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
206
206
|
|
207
|
-
remote: __remote_spec[modal._functions.
|
207
|
+
remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
|
208
208
|
|
209
209
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
210
210
|
def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
|
@@ -219,19 +219,19 @@ class Function(
|
|
219
219
|
self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
|
220
220
|
) -> modal._functions.OriginalReturnType: ...
|
221
221
|
|
222
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
222
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
223
223
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
224
224
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
225
225
|
|
226
226
|
_experimental_spawn: ___experimental_spawn_spec[
|
227
|
-
modal._functions.
|
227
|
+
modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
|
228
228
|
]
|
229
229
|
|
230
|
-
class __spawn_spec(typing_extensions.Protocol[
|
230
|
+
class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
231
231
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
232
232
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
233
233
|
|
234
|
-
spawn: __spawn_spec[modal._functions.
|
234
|
+
spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
|
235
235
|
|
236
236
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
|
237
237
|
|
modal/image.py
CHANGED
@@ -820,7 +820,8 @@ class _Image(_Object, type_prefix="im"):
|
|
820
820
|
works in a `Dockerfile`.
|
821
821
|
"""
|
822
822
|
deprecation_warning(
|
823
|
-
(2025, 1, 13),
|
823
|
+
(2025, 1, 13),
|
824
|
+
COPY_DEPRECATION_MESSAGE_PATTERN.format(replacement="image.add_local_file"),
|
824
825
|
)
|
825
826
|
basename = str(Path(local_path).name)
|
826
827
|
|
@@ -934,7 +935,8 @@ class _Image(_Object, type_prefix="im"):
|
|
934
935
|
```
|
935
936
|
"""
|
936
937
|
deprecation_warning(
|
937
|
-
(2025, 1, 13),
|
938
|
+
(2025, 1, 13),
|
939
|
+
COPY_DEPRECATION_MESSAGE_PATTERN.format(replacement="image.add_local_dir"),
|
938
940
|
)
|
939
941
|
|
940
942
|
def build_dockerfile(version: ImageBuilderVersion) -> DockerfileSpec:
|
@@ -1367,9 +1369,8 @@ class _Image(_Object, type_prefix="im"):
|
|
1367
1369
|
if context_mount is not None:
|
1368
1370
|
deprecation_warning(
|
1369
1371
|
(2025, 1, 13),
|
1370
|
-
"`context_mount` is deprecated."
|
1371
|
-
|
1372
|
-
pending=True,
|
1372
|
+
"The `context_mount` parameter of `Image.dockerfile_commands` is deprecated."
|
1373
|
+
" Files are now automatically added to the build context based on the commands.",
|
1373
1374
|
)
|
1374
1375
|
cmds = _flatten_str_args("dockerfile_commands", "dockerfile_commands", dockerfile_commands)
|
1375
1376
|
if not cmds:
|
@@ -1777,9 +1778,8 @@ class _Image(_Object, type_prefix="im"):
|
|
1777
1778
|
if context_mount is not None:
|
1778
1779
|
deprecation_warning(
|
1779
1780
|
(2025, 1, 13),
|
1780
|
-
"`context_mount` is deprecated."
|
1781
|
-
|
1782
|
-
pending=True,
|
1781
|
+
"The `context_mount` parameter of `Image.from_dockerfile` is deprecated."
|
1782
|
+
" Files are now automatically added to the build context based on the commands in the Dockerfile.",
|
1783
1783
|
)
|
1784
1784
|
|
1785
1785
|
# --- Build the base dockerfile
|
modal/mount.py
CHANGED
@@ -410,7 +410,8 @@ class _Mount(_Object, type_prefix="mo"):
|
|
410
410
|
```
|
411
411
|
"""
|
412
412
|
deprecation_warning(
|
413
|
-
(2025, 1, 8),
|
413
|
+
(2025, 1, 8),
|
414
|
+
MOUNT_DEPRECATION_MESSAGE_PATTERN.format(replacement="image.add_local_dir"),
|
414
415
|
)
|
415
416
|
return _Mount._from_local_dir(local_path, remote_path=remote_path, condition=condition, recursive=recursive)
|
416
417
|
|
@@ -467,7 +468,8 @@ class _Mount(_Object, type_prefix="mo"):
|
|
467
468
|
```
|
468
469
|
"""
|
469
470
|
deprecation_warning(
|
470
|
-
(2025, 1, 8),
|
471
|
+
(2025, 1, 8),
|
472
|
+
MOUNT_DEPRECATION_MESSAGE_PATTERN.format(replacement="image.add_local_file"),
|
471
473
|
)
|
472
474
|
return _Mount._from_local_file(local_path, remote_path)
|
473
475
|
|
@@ -640,7 +642,6 @@ class _Mount(_Object, type_prefix="mo"):
|
|
640
642
|
deprecation_warning(
|
641
643
|
(2025, 1, 8),
|
642
644
|
MOUNT_DEPRECATION_MESSAGE_PATTERN.format(replacement="image.add_local_python_source"),
|
643
|
-
pending=True,
|
644
645
|
)
|
645
646
|
return _Mount._from_local_python_packages(
|
646
647
|
*module_names, remote_dir=remote_dir, condition=condition, ignore=ignore
|
@@ -23,10 +23,10 @@ modal/app.py,sha256=bJp7W3liuVG2VwWkG31tMFogDh84EKppzP8YJFWl3eQ,48140
|
|
23
23
|
modal/app.pyi,sha256=SkqXNrdnGIZ4MmNNvpGtzNLoUdyuvi9IjQQR_DRiRHk,26968
|
24
24
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
25
25
|
modal/client.py,sha256=U-YKSw0n7J1ZLREt9cbEJCtmHe5YoPKFxl0xlkan2yc,15565
|
26
|
-
modal/client.pyi,sha256=
|
26
|
+
modal/client.pyi,sha256=AGcVcEelqx_X_Jfb4xfzqsQLTEdabMRN3AWICFkwqc8,7661
|
27
27
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
28
28
|
modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
|
29
|
-
modal/cls.py,sha256=
|
29
|
+
modal/cls.py,sha256=x3CUDPC-QK7pa9E2eiFsiCS2ULvVi8UzNZQw1i9drsU,32945
|
30
30
|
modal/cls.pyi,sha256=pTYO9JsRENmsa5pDgzfoRJGm_NpCvEjEx--vs-jJkj8,10902
|
31
31
|
modal/config.py,sha256=FlqVyh6LVukMahhmEGQVTwWtwtfoPfHqEo3GDn13EOA,11687
|
32
32
|
modal/container_process.py,sha256=vvyK3DVPUMsuqvkKdUiQ49cDLF9JawGrxpglLk5vfgI,6208
|
@@ -40,13 +40,13 @@ modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
|
|
40
40
|
modal/file_io.pyi,sha256=NTRft1tbPSWf9TlWVeZmTlgB5AZ_Zhu2srWIrWr7brk,9445
|
41
41
|
modal/file_pattern_matcher.py,sha256=trosX-Bp7dOubudN1bLLhRAoidWy1TcoaR4Pv8CedWw,6497
|
42
42
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
43
|
-
modal/functions.pyi,sha256=
|
43
|
+
modal/functions.pyi,sha256=Bg_zlYSHMYuEXQYLcFU-j1Kwq5zHQ9jggMA_5ZO_du8,14785
|
44
44
|
modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
|
45
|
-
modal/image.py,sha256=
|
45
|
+
modal/image.py,sha256=I-9_YZL0SSfnuGPywa3-4PlxDmJ-53p7ce3gP74SrOA,92877
|
46
46
|
modal/image.pyi,sha256=89zv12C1sFrJs7Es9SnX23_m208ASAdeNGCVTrhjzHI,25632
|
47
47
|
modal/io_streams.py,sha256=h5O2LmbRoT9l777z3TQhCAm-JF1r7avZ2ykXlejztDs,15163
|
48
48
|
modal/io_streams.pyi,sha256=bJ7ZLmSmJ0nKoa6r4FJpbqvzdUVa0lEe0Fa-MMpMezU,5071
|
49
|
-
modal/mount.py,sha256=
|
49
|
+
modal/mount.py,sha256=_v1VYxryY3BcF4XxyRfOWm7AxAz79D2VRWh5tOHhWuc,31945
|
50
50
|
modal/mount.pyi,sha256=CmHa7zKSxHA_7-vMQLnGfw_ZXvAvHlafvUEVJcQ1LQA,12535
|
51
51
|
modal/network_file_system.py,sha256=WXdyL7du_fvjvuG6hSAREyJ83sSEP2xSLAIAhBsisdI,14869
|
52
52
|
modal/network_file_system.pyi,sha256=4N3eqMbTSlqmS8VV_aJK-uvrgJC8xnf_YtW5FHfRfc8,8156
|
@@ -124,7 +124,7 @@ modal/cli/container.py,sha256=FYwEgjf93j4NMorAjGbSV98i1wpebqdAeNU1wfrFp1k,3668
|
|
124
124
|
modal/cli/dict.py,sha256=8Wq3w-UDaywk8EVNdj-ECCNV9TYHqh4kzhUqhhulatM,4593
|
125
125
|
modal/cli/entry_point.py,sha256=dOosuCwhfznwTCB4oMljUFhihq5aLUVoAz7RhcBEDnc,4189
|
126
126
|
modal/cli/environment.py,sha256=Ayddkiq9jdj3XYDJ8ZmUqFpPPH8xajYlbexRkzGtUcg,4334
|
127
|
-
modal/cli/import_refs.py,sha256=
|
127
|
+
modal/cli/import_refs.py,sha256=pmzY0hpexx6DtvobNmCOvRqEdS9IriEP4BpMw1TIy2w,13911
|
128
128
|
modal/cli/launch.py,sha256=0_sBu6bv2xJEPWi-rbGS6Ri9ggnkWQvrGlgpYSUBMyY,3097
|
129
129
|
modal/cli/network_file_system.py,sha256=eq3JnwjbfFNsJodIyANHL06ByYc3BSavzdmu8C96cHA,7948
|
130
130
|
modal/cli/profile.py,sha256=0TYhgRSGUvQZ5LH9nkl6iZllEvAjDniES264dE57wOM,3201
|
@@ -146,7 +146,7 @@ modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddR
|
|
146
146
|
modal/requirements/PREVIEW.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
|
147
147
|
modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
|
148
148
|
modal/requirements/base-images.json,sha256=57vMSqzMbLBxw5tFWSaMiIkkVEps4JfX5PAtXGnkS4U,740
|
149
|
-
modal-0.73.
|
149
|
+
modal-0.73.167.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
150
150
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
151
151
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
152
152
|
modal_docs/gen_reference_docs.py,sha256=cvTgltucqYLLIX84QxAwf51Z5Vc2n6cLxS8VcrxNCAo,6401
|
@@ -154,13 +154,13 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
|
|
154
154
|
modal_docs/mdmd/mdmd.py,sha256=Irx49MCCTlBOP4FBdLR--JrpA3-WhsVeriq0LGgsRic,6232
|
155
155
|
modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
|
156
156
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
157
|
-
modal_proto/api.proto,sha256=
|
158
|
-
modal_proto/api_grpc.py,sha256=
|
159
|
-
modal_proto/api_pb2.py,sha256=
|
160
|
-
modal_proto/api_pb2.pyi,sha256=
|
161
|
-
modal_proto/api_pb2_grpc.py,sha256=
|
162
|
-
modal_proto/api_pb2_grpc.pyi,sha256=
|
163
|
-
modal_proto/modal_api_grpc.py,sha256=
|
157
|
+
modal_proto/api.proto,sha256=pVzFEsIpOuybO3v6aQW2ONmTaX6-Gcfk9sBbpxNYOOk,92066
|
158
|
+
modal_proto/api_grpc.py,sha256=DlrVx10B6HLy4LjWrgK7HJ7kUNDKqEvm6mUqh-6EVvs,112161
|
159
|
+
modal_proto/api_pb2.py,sha256=ACSAQ0P-ZR36tTgN3C_RmO381ZK-9EM1FXzUtQzCOn8,325087
|
160
|
+
modal_proto/api_pb2.pyi,sha256=KNJrAFmFXQY5REYJUgL4Rjg2ie-CZKGPkFz8vVIx0zs,442208
|
161
|
+
modal_proto/api_pb2_grpc.py,sha256=NQPpAa3Co-zFNB6L6BQoZjf-RaOlWFFPX8chQyGHQEo,242401
|
162
|
+
modal_proto/api_pb2_grpc.pyi,sha256=zK2Ms2Xws02cC9uy5U5A5sPULXx4T6A9o9BONqFcipg,56456
|
163
|
+
modal_proto/modal_api_grpc.py,sha256=K_GsrHIw2CayKh_nyuYAblQW_tOijUNW267Hs9vWUWU,14948
|
164
164
|
modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
|
165
165
|
modal_proto/options.proto,sha256=a-siq4swVbZPfaFRXAipRZzGP2bq8OsdUvjlyzAeodQ,488
|
166
166
|
modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
|
@@ -171,9 +171,9 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
171
171
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
172
172
|
modal_version/__init__.py,sha256=wiJQ53c-OMs0Xf1UeXOxQ7FwlV1VzIjnX6o-pRYZ_Pk,470
|
173
173
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
174
|
-
modal_version/_version_generated.py,sha256=
|
175
|
-
modal-0.73.
|
176
|
-
modal-0.73.
|
177
|
-
modal-0.73.
|
178
|
-
modal-0.73.
|
179
|
-
modal-0.73.
|
174
|
+
modal_version/_version_generated.py,sha256=48GMAoPZ_ag_EWB42SJTPQblePrD_fvU9USnaFhq-D8,150
|
175
|
+
modal-0.73.167.dist-info/METADATA,sha256=J9mj1Rd5kLYwuVHbs9jgxiyd5e19wUDaQZS76blat3g,2475
|
176
|
+
modal-0.73.167.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
177
|
+
modal-0.73.167.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
178
|
+
modal-0.73.167.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
179
|
+
modal-0.73.167.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
@@ -757,6 +757,29 @@ message CloudBucketMount {
|
|
757
757
|
optional string oidc_auth_role_arn = 9;
|
758
758
|
}
|
759
759
|
|
760
|
+
message ClusterGetRequest {
|
761
|
+
string cluster_id = 1;
|
762
|
+
}
|
763
|
+
|
764
|
+
message ClusterGetResponse {
|
765
|
+
ClusterStats cluster = 1;
|
766
|
+
}
|
767
|
+
|
768
|
+
message ClusterListRequest {
|
769
|
+
string environment_name = 1;
|
770
|
+
}
|
771
|
+
|
772
|
+
message ClusterListResponse {
|
773
|
+
repeated ClusterStats clusters = 1;
|
774
|
+
}
|
775
|
+
|
776
|
+
message ClusterStats {
|
777
|
+
string app_id = 1;
|
778
|
+
repeated string task_ids = 2;
|
779
|
+
string region = 3;
|
780
|
+
double started_at = 4; // Defined as start time of the first task in the cluster
|
781
|
+
}
|
782
|
+
|
760
783
|
message CommitInfo {
|
761
784
|
string vcs = 1; // Only git is supported for now
|
762
785
|
string branch = 2;
|
@@ -3052,6 +3075,10 @@ service ModalClient {
|
|
3052
3075
|
// Clients
|
3053
3076
|
rpc ClientHello(google.protobuf.Empty) returns (ClientHelloResponse);
|
3054
3077
|
|
3078
|
+
// Clusters
|
3079
|
+
rpc ClusterGet(ClusterGetRequest) returns (ClusterGetResponse);
|
3080
|
+
rpc ClusterList(ClusterListRequest) returns (ClusterListResponse);
|
3081
|
+
|
3055
3082
|
// Container
|
3056
3083
|
rpc ContainerCheckpoint(ContainerCheckpointRequest) returns (google.protobuf.Empty);
|
3057
3084
|
rpc ContainerExec(ContainerExecRequest) returns (ContainerExecResponse);
|
modal_proto/api_grpc.py
CHANGED
@@ -102,6 +102,14 @@ class ModalClientBase(abc.ABC):
|
|
102
102
|
async def ClientHello(self, stream: 'grpclib.server.Stream[google.protobuf.empty_pb2.Empty, modal_proto.api_pb2.ClientHelloResponse]') -> None:
|
103
103
|
pass
|
104
104
|
|
105
|
+
@abc.abstractmethod
|
106
|
+
async def ClusterGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ClusterGetRequest, modal_proto.api_pb2.ClusterGetResponse]') -> None:
|
107
|
+
pass
|
108
|
+
|
109
|
+
@abc.abstractmethod
|
110
|
+
async def ClusterList(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ClusterListRequest, modal_proto.api_pb2.ClusterListResponse]') -> None:
|
111
|
+
pass
|
112
|
+
|
105
113
|
@abc.abstractmethod
|
106
114
|
async def ContainerCheckpoint(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ContainerCheckpointRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
107
115
|
pass
|
@@ -722,6 +730,18 @@ class ModalClientBase(abc.ABC):
|
|
722
730
|
google.protobuf.empty_pb2.Empty,
|
723
731
|
modal_proto.api_pb2.ClientHelloResponse,
|
724
732
|
),
|
733
|
+
'/modal.client.ModalClient/ClusterGet': grpclib.const.Handler(
|
734
|
+
self.ClusterGet,
|
735
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
736
|
+
modal_proto.api_pb2.ClusterGetRequest,
|
737
|
+
modal_proto.api_pb2.ClusterGetResponse,
|
738
|
+
),
|
739
|
+
'/modal.client.ModalClient/ClusterList': grpclib.const.Handler(
|
740
|
+
self.ClusterList,
|
741
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
742
|
+
modal_proto.api_pb2.ClusterListRequest,
|
743
|
+
modal_proto.api_pb2.ClusterListResponse,
|
744
|
+
),
|
725
745
|
'/modal.client.ModalClient/ContainerCheckpoint': grpclib.const.Handler(
|
726
746
|
self.ContainerCheckpoint,
|
727
747
|
grpclib.const.Cardinality.UNARY_UNARY,
|
@@ -1592,6 +1612,18 @@ class ModalClientStub:
|
|
1592
1612
|
google.protobuf.empty_pb2.Empty,
|
1593
1613
|
modal_proto.api_pb2.ClientHelloResponse,
|
1594
1614
|
)
|
1615
|
+
self.ClusterGet = grpclib.client.UnaryUnaryMethod(
|
1616
|
+
channel,
|
1617
|
+
'/modal.client.ModalClient/ClusterGet',
|
1618
|
+
modal_proto.api_pb2.ClusterGetRequest,
|
1619
|
+
modal_proto.api_pb2.ClusterGetResponse,
|
1620
|
+
)
|
1621
|
+
self.ClusterList = grpclib.client.UnaryUnaryMethod(
|
1622
|
+
channel,
|
1623
|
+
'/modal.client.ModalClient/ClusterList',
|
1624
|
+
modal_proto.api_pb2.ClusterListRequest,
|
1625
|
+
modal_proto.api_pb2.ClusterListResponse,
|
1626
|
+
)
|
1595
1627
|
self.ContainerCheckpoint = grpclib.client.UnaryUnaryMethod(
|
1596
1628
|
channel,
|
1597
1629
|
'/modal.client.ModalClient/ContainerCheckpoint',
|