modal 0.72.35__py3-none-any.whl → 0.72.37__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/client.pyi +2 -2
- modal/experimental.py +47 -11
- modal/experimental.pyi +29 -0
- modal/functions.pyi +6 -6
- {modal-0.72.35.dist-info → modal-0.72.37.dist-info}/METADATA +1 -1
- {modal-0.72.35.dist-info → modal-0.72.37.dist-info}/RECORD +18 -17
- modal_proto/api.proto +14 -0
- modal_proto/api_grpc.py +32 -0
- modal_proto/api_pb2.py +365 -331
- modal_proto/api_pb2.pyi +44 -0
- modal_proto/api_pb2_grpc.py +67 -1
- modal_proto/api_pb2_grpc.pyi +23 -3
- modal_proto/modal_api_grpc.py +2 -0
- modal_version/_version_generated.py +1 -1
- {modal-0.72.35.dist-info → modal-0.72.37.dist-info}/LICENSE +0 -0
- {modal-0.72.35.dist-info → modal-0.72.37.dist-info}/WHEEL +0 -0
- {modal-0.72.35.dist-info → modal-0.72.37.dist-info}/entry_points.txt +0 -0
- {modal-0.72.35.dist-info → modal-0.72.37.dist-info}/top_level.txt +0 -0
modal/client.pyi
CHANGED
@@ -27,7 +27,7 @@ class _Client:
|
|
27
27
|
_snapshotted: bool
|
28
28
|
|
29
29
|
def __init__(
|
30
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.72.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.72.37"
|
31
31
|
): ...
|
32
32
|
def is_closed(self) -> bool: ...
|
33
33
|
@property
|
@@ -83,7 +83,7 @@ class Client:
|
|
83
83
|
_snapshotted: bool
|
84
84
|
|
85
85
|
def __init__(
|
86
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.72.
|
86
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.72.37"
|
87
87
|
): ...
|
88
88
|
def is_closed(self) -> bool: ...
|
89
89
|
@property
|
modal/experimental.py
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
# Copyright Modal Labs 2022
|
2
|
-
from
|
3
|
-
|
4
|
-
Callable,
|
5
|
-
)
|
2
|
+
from dataclasses import dataclass
|
3
|
+
from typing import Any, Callable, Optional
|
6
4
|
|
7
|
-
import
|
8
|
-
from modal.functions import _Function
|
5
|
+
from modal_proto import api_pb2
|
9
6
|
|
7
|
+
from ._clustered_functions import ClusterInfo, get_cluster_info as _get_cluster_info
|
8
|
+
from ._object import _get_environment_name
|
10
9
|
from ._runtime.container_io_manager import _ContainerIOManager
|
11
|
-
from .
|
12
|
-
|
13
|
-
|
10
|
+
from ._utils.async_utils import synchronizer
|
11
|
+
from .client import _Client
|
12
|
+
from .exception import InvalidError
|
13
|
+
from .functions import _Function
|
14
14
|
from .partial_function import _PartialFunction, _PartialFunctionFlags
|
15
15
|
|
16
16
|
|
@@ -65,5 +65,41 @@ def clustered(size: int, broadcast: bool = True):
|
|
65
65
|
return wrapper
|
66
66
|
|
67
67
|
|
68
|
-
def get_cluster_info() ->
|
69
|
-
return
|
68
|
+
def get_cluster_info() -> ClusterInfo:
|
69
|
+
return _get_cluster_info()
|
70
|
+
|
71
|
+
|
72
|
+
@dataclass
|
73
|
+
class AppInfo:
|
74
|
+
app_id: str
|
75
|
+
name: str
|
76
|
+
containers: int
|
77
|
+
|
78
|
+
|
79
|
+
@synchronizer.create_blocking
|
80
|
+
async def list_deployed_apps(environment_name: str = "", client: Optional[_Client] = None) -> list[AppInfo]:
|
81
|
+
"""List deployed Apps along with the number of containers currently running."""
|
82
|
+
# This function exists to provide backwards compatibility for some users who had been
|
83
|
+
# calling into the private function that previously backed the `modal app list` CLI command.
|
84
|
+
# We plan to add more Python API for exposing this sort of information, but we haven't
|
85
|
+
# settled on a design we're happy with yet. In the meantime, this function will continue
|
86
|
+
# to support existing codebases. It's likely that the final API will be different
|
87
|
+
# (e.g. more oriented around the App object). This function should be gracefully deprecated
|
88
|
+
# one the new API is released.
|
89
|
+
client = client or await _Client.from_env()
|
90
|
+
|
91
|
+
resp: api_pb2.AppListResponse = await client.stub.AppList(
|
92
|
+
api_pb2.AppListRequest(environment_name=_get_environment_name(environment_name))
|
93
|
+
)
|
94
|
+
|
95
|
+
app_infos = []
|
96
|
+
for app_stats in resp.apps:
|
97
|
+
if app_stats.state == api_pb2.APP_STATE_DEPLOYED:
|
98
|
+
app_infos.append(
|
99
|
+
AppInfo(
|
100
|
+
app_id=app_stats.app_id,
|
101
|
+
name=app_stats.description,
|
102
|
+
containers=app_stats.n_running_tasks,
|
103
|
+
)
|
104
|
+
)
|
105
|
+
return app_infos
|
modal/experimental.pyi
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
import modal._clustered_functions
|
2
|
+
import modal.client
|
3
|
+
import typing
|
4
|
+
import typing_extensions
|
5
|
+
|
6
|
+
def stop_fetching_inputs(): ...
|
7
|
+
def get_local_input_concurrency(): ...
|
8
|
+
def set_local_input_concurrency(concurrency: int): ...
|
9
|
+
def clustered(size: int, broadcast: bool = True): ...
|
10
|
+
def get_cluster_info() -> modal._clustered_functions.ClusterInfo: ...
|
11
|
+
|
12
|
+
class AppInfo:
|
13
|
+
app_id: str
|
14
|
+
name: str
|
15
|
+
containers: int
|
16
|
+
|
17
|
+
def __init__(self, app_id: str, name: str, containers: int) -> None: ...
|
18
|
+
def __repr__(self): ...
|
19
|
+
def __eq__(self, other): ...
|
20
|
+
|
21
|
+
class __list_deployed_apps_spec(typing_extensions.Protocol):
|
22
|
+
def __call__(
|
23
|
+
self, environment_name: str = "", client: typing.Optional[modal.client.Client] = None
|
24
|
+
) -> list[AppInfo]: ...
|
25
|
+
async def aio(
|
26
|
+
self, environment_name: str = "", client: typing.Optional[modal.client.Client] = None
|
27
|
+
) -> list[AppInfo]: ...
|
28
|
+
|
29
|
+
list_deployed_apps: __list_deployed_apps_spec
|
modal/functions.pyi
CHANGED
@@ -463,11 +463,11 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
|
|
463
463
|
|
464
464
|
_call_generator_nowait: ___call_generator_nowait_spec
|
465
465
|
|
466
|
-
class __remote_spec(typing_extensions.Protocol[
|
466
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
|
467
467
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
468
468
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
469
469
|
|
470
|
-
remote: __remote_spec[
|
470
|
+
remote: __remote_spec[P, ReturnType]
|
471
471
|
|
472
472
|
class __remote_gen_spec(typing_extensions.Protocol):
|
473
473
|
def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
|
@@ -480,17 +480,17 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
|
|
480
480
|
def _get_obj(self) -> typing.Optional[modal.cls.Obj]: ...
|
481
481
|
def local(self, *args: P.args, **kwargs: P.kwargs) -> OriginalReturnType: ...
|
482
482
|
|
483
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
483
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
|
484
484
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
485
485
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
486
486
|
|
487
|
-
_experimental_spawn: ___experimental_spawn_spec[
|
487
|
+
_experimental_spawn: ___experimental_spawn_spec[P, ReturnType]
|
488
488
|
|
489
|
-
class __spawn_spec(typing_extensions.Protocol[
|
489
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
|
490
490
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
491
491
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
492
492
|
|
493
|
-
spawn: __spawn_spec[
|
493
|
+
spawn: __spawn_spec[P, ReturnType]
|
494
494
|
|
495
495
|
def get_raw_f(self) -> typing.Callable[..., typing.Any]: ...
|
496
496
|
|
@@ -20,7 +20,7 @@ modal/app.py,sha256=UOuqlCKlFAjOXCacXmoEMM90FnqFwPRXUhLh0Gi6xzg,45344
|
|
20
20
|
modal/app.pyi,sha256=5D3LkPP6qvTIl2_YgiyhNQ9X4VsOVuxd69a23UmohDg,25477
|
21
21
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
22
22
|
modal/client.py,sha256=8SQawr7P1PNUCq1UmJMUQXG2jIo4Nmdcs311XqrNLRE,15276
|
23
|
-
modal/client.pyi,sha256=
|
23
|
+
modal/client.pyi,sha256=a8mZAozQK3R3y8QO2JmP3DCLX-emclgL7SXcEgJr8q0,7326
|
24
24
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
25
25
|
modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
|
26
26
|
modal/cls.py,sha256=xHgZZAmymplw0I2YZGAA8raBboixdNKKTrnsxQZI7G8,32159
|
@@ -33,12 +33,13 @@ modal/dict.pyi,sha256=VM3dmNqQzV1piZbRncXDqkpiKpmVracmuZB_VXRkrTw,7137
|
|
33
33
|
modal/environments.py,sha256=20doFhRnm1fae30LMOp8hSYbIfR7yFZTtbLdo5PrSj4,6661
|
34
34
|
modal/environments.pyi,sha256=RXE3slyEr9tWpfS84Fj7iUzNJy-SujlqWOQTE8A4Qaw,3537
|
35
35
|
modal/exception.py,sha256=4JyO-SACaLNDe2QC48EjsK8GMkZ8AgEurZ8j1YdRu8E,5263
|
36
|
-
modal/experimental.py,sha256=
|
36
|
+
modal/experimental.py,sha256=H9FXT3kshbjPLovshT10DicyOkGFrPqILy-qdTX-P7s,4015
|
37
|
+
modal/experimental.pyi,sha256=24tIYu_w9RLwFrz1cIsgYuqmDCtV8eg6-bQNz3zjhDo,939
|
37
38
|
modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
|
38
39
|
modal/file_io.pyi,sha256=NrIoB0YjIqZ8MDMe826xAnybT0ww_kxQM3iPLo82REU,8898
|
39
40
|
modal/file_pattern_matcher.py,sha256=dSo7BMQGZBAuoBFOX-e_72HxmF3FLzjQlEtnGtJiaD4,6506
|
40
41
|
modal/functions.py,sha256=JLQxVn1VEyQMEFzqT1ibDradkb1mvrATJ41zvfffA4I,68499
|
41
|
-
modal/functions.pyi,sha256=
|
42
|
+
modal/functions.pyi,sha256=eoXG53WPMnHY7N8dblghdLEBQ47k8uiSSaCDP9LfNxA,25473
|
42
43
|
modal/gpu.py,sha256=rcBwbE-_e2hEUr3VJbr1EgQDRb6aieJKx6G2oQdyBhE,7462
|
43
44
|
modal/image.py,sha256=leeY7fLfFjS0IqTi3D4cRxIDOb80BPtb3jsQfqvVJ8c,90912
|
44
45
|
modal/image.pyi,sha256=X9vj6cwBdYh8q_2cOd-2RSYNMF49ujcy0lrOXh_v1xc,26049
|
@@ -149,13 +150,13 @@ modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0
|
|
149
150
|
modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
|
150
151
|
modal_global_objects/mounts/python_standalone.py,sha256=pEML5GaV2_0ahci_1vpfc_FnySpsfi2fhYmFF5I7IiQ,1837
|
151
152
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
152
|
-
modal_proto/api.proto,sha256=
|
153
|
-
modal_proto/api_grpc.py,sha256=
|
154
|
-
modal_proto/api_pb2.py,sha256=
|
155
|
-
modal_proto/api_pb2.pyi,sha256=
|
156
|
-
modal_proto/api_pb2_grpc.py,sha256=
|
157
|
-
modal_proto/api_pb2_grpc.pyi,sha256=
|
158
|
-
modal_proto/modal_api_grpc.py,sha256=
|
153
|
+
modal_proto/api.proto,sha256=hhpsbyLV6Rziyb9pGIw6zVcR30G4ueV3B9qD-8JtwCE,84899
|
154
|
+
modal_proto/api_grpc.py,sha256=UH63GuZR9AQFBgk5UdNEnjREgkejsnMH7H9KaRjzpiY,108244
|
155
|
+
modal_proto/api_pb2.py,sha256=WrVMzHddqlxj1GXpBz4ciqa0L9PVC6uRDxo3OWF3GV0,309536
|
156
|
+
modal_proto/api_pb2.pyi,sha256=rJxZnSSLOI9GjNaGDnRtc9XASiB9128Hnbb01PRAunM,412814
|
157
|
+
modal_proto/api_pb2_grpc.py,sha256=0STIhGJkO5sN2JnGKmoNGT38EK-kti4oXziPi-_hty8,234054
|
158
|
+
modal_proto/api_pb2_grpc.pyi,sha256=KUZw2u9D23f2QI9Khd_FD8HGPOJksPOTiZGLN3HSPuM,54491
|
159
|
+
modal_proto/modal_api_grpc.py,sha256=4sdBOwimIgkh8OmBsiRQHgB2hTBp6mT7lfEukN6GYb4,14444
|
159
160
|
modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
|
160
161
|
modal_proto/options.proto,sha256=a-siq4swVbZPfaFRXAipRZzGP2bq8OsdUvjlyzAeodQ,488
|
161
162
|
modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
|
@@ -166,10 +167,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
166
167
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
167
168
|
modal_version/__init__.py,sha256=kGya2ZlItX2zB7oHORs-wvP4PG8lg_mtbi1QIK3G6SQ,470
|
168
169
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
169
|
-
modal_version/_version_generated.py,sha256=
|
170
|
-
modal-0.72.
|
171
|
-
modal-0.72.
|
172
|
-
modal-0.72.
|
173
|
-
modal-0.72.
|
174
|
-
modal-0.72.
|
175
|
-
modal-0.72.
|
170
|
+
modal_version/_version_generated.py,sha256=qp2mAYJytI5mo-UHfq8OErWhtyaT-laTRNVGIcSL2f0,149
|
171
|
+
modal-0.72.37.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
172
|
+
modal-0.72.37.dist-info/METADATA,sha256=jFge-HVQEUG5kFJaBH_-GGPZ4L2MY0amN4Crhz6dHoE,2329
|
173
|
+
modal-0.72.37.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
174
|
+
modal-0.72.37.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
175
|
+
modal-0.72.37.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
|
176
|
+
modal-0.72.37.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
@@ -2004,6 +2004,14 @@ message Proxy {
|
|
2004
2004
|
repeated ProxyIp proxy_ips = 4;
|
2005
2005
|
}
|
2006
2006
|
|
2007
|
+
message ProxyAddIpRequest {
|
2008
|
+
string proxy_id = 1 [ (modal.options.audit_target_attr) = true ];
|
2009
|
+
}
|
2010
|
+
|
2011
|
+
message ProxyAddIpResponse {
|
2012
|
+
ProxyIp proxy_ip = 1;
|
2013
|
+
}
|
2014
|
+
|
2007
2015
|
message ProxyCreateRequest {
|
2008
2016
|
string name = 1 [ (modal.options.audit_target_attr) = true ];
|
2009
2017
|
string environment_name = 2;
|
@@ -2056,6 +2064,10 @@ message ProxyListResponse {
|
|
2056
2064
|
repeated Proxy proxies = 1;
|
2057
2065
|
}
|
2058
2066
|
|
2067
|
+
message ProxyRemoveIpRequest {
|
2068
|
+
string proxy_ip = 1 [ (modal.options.audit_target_attr) = true ];
|
2069
|
+
}
|
2070
|
+
|
2059
2071
|
message QueueClearRequest {
|
2060
2072
|
string queue_id = 1;
|
2061
2073
|
bytes partition_key = 2;
|
@@ -2943,11 +2955,13 @@ service ModalClient {
|
|
2943
2955
|
rpc NotebookKernelPublishResults(NotebookKernelPublishResultsRequest) returns (google.protobuf.Empty);
|
2944
2956
|
|
2945
2957
|
// Proxies
|
2958
|
+
rpc ProxyAddIp(ProxyAddIpRequest) returns (ProxyAddIpResponse);
|
2946
2959
|
rpc ProxyCreate(ProxyCreateRequest) returns (ProxyCreateResponse);
|
2947
2960
|
rpc ProxyDelete(ProxyDeleteRequest) returns (google.protobuf.Empty);
|
2948
2961
|
rpc ProxyGet(ProxyGetRequest) returns (ProxyGetResponse);
|
2949
2962
|
rpc ProxyGetOrCreate(ProxyGetOrCreateRequest) returns (ProxyGetOrCreateResponse);
|
2950
2963
|
rpc ProxyList(google.protobuf.Empty) returns (ProxyListResponse);
|
2964
|
+
rpc ProxyRemoveIp(ProxyRemoveIpRequest) returns (google.protobuf.Empty);
|
2951
2965
|
|
2952
2966
|
// Queues
|
2953
2967
|
rpc QueueClear(QueueClearRequest) returns (google.protobuf.Empty);
|
modal_proto/api_grpc.py
CHANGED
@@ -334,6 +334,10 @@ class ModalClientBase(abc.ABC):
|
|
334
334
|
async def NotebookKernelPublishResults(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.NotebookKernelPublishResultsRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
335
335
|
pass
|
336
336
|
|
337
|
+
@abc.abstractmethod
|
338
|
+
async def ProxyAddIp(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ProxyAddIpRequest, modal_proto.api_pb2.ProxyAddIpResponse]') -> None:
|
339
|
+
pass
|
340
|
+
|
337
341
|
@abc.abstractmethod
|
338
342
|
async def ProxyCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ProxyCreateRequest, modal_proto.api_pb2.ProxyCreateResponse]') -> None:
|
339
343
|
pass
|
@@ -354,6 +358,10 @@ class ModalClientBase(abc.ABC):
|
|
354
358
|
async def ProxyList(self, stream: 'grpclib.server.Stream[google.protobuf.empty_pb2.Empty, modal_proto.api_pb2.ProxyListResponse]') -> None:
|
355
359
|
pass
|
356
360
|
|
361
|
+
@abc.abstractmethod
|
362
|
+
async def ProxyRemoveIp(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ProxyRemoveIpRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
363
|
+
pass
|
364
|
+
|
357
365
|
@abc.abstractmethod
|
358
366
|
async def QueueClear(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.QueueClearRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
359
367
|
pass
|
@@ -1050,6 +1058,12 @@ class ModalClientBase(abc.ABC):
|
|
1050
1058
|
modal_proto.api_pb2.NotebookKernelPublishResultsRequest,
|
1051
1059
|
google.protobuf.empty_pb2.Empty,
|
1052
1060
|
),
|
1061
|
+
'/modal.client.ModalClient/ProxyAddIp': grpclib.const.Handler(
|
1062
|
+
self.ProxyAddIp,
|
1063
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
1064
|
+
modal_proto.api_pb2.ProxyAddIpRequest,
|
1065
|
+
modal_proto.api_pb2.ProxyAddIpResponse,
|
1066
|
+
),
|
1053
1067
|
'/modal.client.ModalClient/ProxyCreate': grpclib.const.Handler(
|
1054
1068
|
self.ProxyCreate,
|
1055
1069
|
grpclib.const.Cardinality.UNARY_UNARY,
|
@@ -1080,6 +1094,12 @@ class ModalClientBase(abc.ABC):
|
|
1080
1094
|
google.protobuf.empty_pb2.Empty,
|
1081
1095
|
modal_proto.api_pb2.ProxyListResponse,
|
1082
1096
|
),
|
1097
|
+
'/modal.client.ModalClient/ProxyRemoveIp': grpclib.const.Handler(
|
1098
|
+
self.ProxyRemoveIp,
|
1099
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
1100
|
+
modal_proto.api_pb2.ProxyRemoveIpRequest,
|
1101
|
+
google.protobuf.empty_pb2.Empty,
|
1102
|
+
),
|
1083
1103
|
'/modal.client.ModalClient/QueueClear': grpclib.const.Handler(
|
1084
1104
|
self.QueueClear,
|
1085
1105
|
grpclib.const.Cardinality.UNARY_UNARY,
|
@@ -1890,6 +1910,12 @@ class ModalClientStub:
|
|
1890
1910
|
modal_proto.api_pb2.NotebookKernelPublishResultsRequest,
|
1891
1911
|
google.protobuf.empty_pb2.Empty,
|
1892
1912
|
)
|
1913
|
+
self.ProxyAddIp = grpclib.client.UnaryUnaryMethod(
|
1914
|
+
channel,
|
1915
|
+
'/modal.client.ModalClient/ProxyAddIp',
|
1916
|
+
modal_proto.api_pb2.ProxyAddIpRequest,
|
1917
|
+
modal_proto.api_pb2.ProxyAddIpResponse,
|
1918
|
+
)
|
1893
1919
|
self.ProxyCreate = grpclib.client.UnaryUnaryMethod(
|
1894
1920
|
channel,
|
1895
1921
|
'/modal.client.ModalClient/ProxyCreate',
|
@@ -1920,6 +1946,12 @@ class ModalClientStub:
|
|
1920
1946
|
google.protobuf.empty_pb2.Empty,
|
1921
1947
|
modal_proto.api_pb2.ProxyListResponse,
|
1922
1948
|
)
|
1949
|
+
self.ProxyRemoveIp = grpclib.client.UnaryUnaryMethod(
|
1950
|
+
channel,
|
1951
|
+
'/modal.client.ModalClient/ProxyRemoveIp',
|
1952
|
+
modal_proto.api_pb2.ProxyRemoveIpRequest,
|
1953
|
+
google.protobuf.empty_pb2.Empty,
|
1954
|
+
)
|
1923
1955
|
self.QueueClear = grpclib.client.UnaryUnaryMethod(
|
1924
1956
|
channel,
|
1925
1957
|
'/modal.client.ModalClient/QueueClear',
|