modal 0.74.54__py3-none-any.whl → 0.74.55__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/_functions.py +6 -4
- modal/_utils/function_utils.py +3 -2
- modal/_utils/grpc_utils.py +33 -3
- modal/client.py +67 -37
- modal/client.pyi +28 -13
- modal/functions.pyi +6 -6
- modal/parallel_map.py +1 -1
- {modal-0.74.54.dist-info → modal-0.74.55.dist-info}/METADATA +1 -1
- {modal-0.74.54.dist-info → modal-0.74.55.dist-info}/RECORD +15 -15
- modal_proto/modal_api_grpc.py +156 -150
- modal_version/_version_generated.py +1 -1
- {modal-0.74.54.dist-info → modal-0.74.55.dist-info}/WHEEL +0 -0
- {modal-0.74.54.dist-info → modal-0.74.55.dist-info}/entry_points.txt +0 -0
- {modal-0.74.54.dist-info → modal-0.74.55.dist-info}/licenses/LICENSE +0 -0
- {modal-0.74.54.dist-info → modal-0.74.55.dist-info}/top_level.txt +0 -0
modal/_functions.py
CHANGED
@@ -139,8 +139,10 @@ class _Invocation:
|
|
139
139
|
from_spawn_map: bool = False,
|
140
140
|
) -> "_Invocation":
|
141
141
|
assert client.stub
|
142
|
+
stub = client.stub
|
143
|
+
|
142
144
|
function_id = function.object_id
|
143
|
-
item = await _create_input(args, kwargs,
|
145
|
+
item = await _create_input(args, kwargs, stub, method_name=function._use_method_name)
|
144
146
|
|
145
147
|
request = api_pb2.FunctionMapRequest(
|
146
148
|
function_id=function_id,
|
@@ -181,7 +183,7 @@ class _Invocation:
|
|
181
183
|
item=item,
|
182
184
|
sync_client_retries_enabled=response.sync_client_retries_enabled,
|
183
185
|
)
|
184
|
-
return _Invocation(
|
186
|
+
return _Invocation(stub, function_call_id, client, retry_context)
|
185
187
|
|
186
188
|
request_put = api_pb2.FunctionPutInputsRequest(
|
187
189
|
function_id=function_id, inputs=[item], function_call_id=function_call_id
|
@@ -203,7 +205,7 @@ class _Invocation:
|
|
203
205
|
item=item,
|
204
206
|
sync_client_retries_enabled=response.sync_client_retries_enabled,
|
205
207
|
)
|
206
|
-
return _Invocation(
|
208
|
+
return _Invocation(stub, function_call_id, client, retry_context)
|
207
209
|
|
208
210
|
async def pop_function_call_outputs(
|
209
211
|
self, timeout: Optional[float], clear_on_success: bool, input_jwts: Optional[list[str]] = None
|
@@ -249,7 +251,7 @@ class _Invocation:
|
|
249
251
|
item = api_pb2.FunctionRetryInputsItem(input_jwt=ctx.input_jwt, input=ctx.item.input)
|
250
252
|
request = api_pb2.FunctionRetryInputsRequest(function_call_jwt=ctx.function_call_jwt, inputs=[item])
|
251
253
|
await retry_transient_errors(
|
252
|
-
self.
|
254
|
+
self.stub.FunctionRetryInputs,
|
253
255
|
request,
|
254
256
|
)
|
255
257
|
|
modal/_utils/function_utils.py
CHANGED
@@ -14,6 +14,7 @@ from synchronicity.exceptions import UserCodeException
|
|
14
14
|
|
15
15
|
import modal_proto
|
16
16
|
from modal_proto import api_pb2
|
17
|
+
from modal_proto.modal_api_grpc import ModalClientModal
|
17
18
|
|
18
19
|
from .._serialization import (
|
19
20
|
deserialize,
|
@@ -511,7 +512,7 @@ async def _process_result(result: api_pb2.GenericResult, data_format: int, stub,
|
|
511
512
|
|
512
513
|
|
513
514
|
async def _create_input(
|
514
|
-
args, kwargs,
|
515
|
+
args, kwargs, stub: ModalClientModal, *, idx: Optional[int] = None, method_name: Optional[str] = None
|
515
516
|
) -> api_pb2.FunctionPutInputsItem:
|
516
517
|
"""Serialize function arguments and create a FunctionInput protobuf,
|
517
518
|
uploading to blob storage if needed.
|
@@ -524,7 +525,7 @@ async def _create_input(
|
|
524
525
|
args_serialized = serialize((args, kwargs))
|
525
526
|
|
526
527
|
if len(args_serialized) > MAX_OBJECT_SIZE_BYTES:
|
527
|
-
args_blob_id = await blob_upload(args_serialized,
|
528
|
+
args_blob_id = await blob_upload(args_serialized, stub)
|
528
529
|
|
529
530
|
return api_pb2.FunctionPutInputsItem(
|
530
531
|
input=api_pb2.FunctionInput(
|
modal/_utils/grpc_utils.py
CHANGED
@@ -78,14 +78,44 @@ class RetryWarningMessage:
|
|
78
78
|
errors_to_warn_for: typing.List[Status]
|
79
79
|
|
80
80
|
|
81
|
+
class ConnectionManager:
|
82
|
+
"""ConnectionManager is a helper class for sharing connections to the Modal server.
|
83
|
+
|
84
|
+
It can create, cache, and close channels to the Modal server. This is useful since
|
85
|
+
multiple ModalClientModal stubs may target the same server URL, in which case they
|
86
|
+
should share the same connection.
|
87
|
+
"""
|
88
|
+
|
89
|
+
def __init__(self, client: "modal.client._Client", metadata: dict[str, str] = {}):
|
90
|
+
self._client = client
|
91
|
+
# Warning: This metadata is shared across all channels! If the metadata is mutated
|
92
|
+
# in one `create_channel` call, the mutation will be reflected in all channels.
|
93
|
+
self._metadata = metadata
|
94
|
+
self._channels: dict[str, grpclib.client.Channel] = {}
|
95
|
+
|
96
|
+
async def get_or_create_channel(self, server_url: str) -> grpclib.client.Channel:
|
97
|
+
if server_url not in self._channels:
|
98
|
+
self._channels[server_url] = create_channel(server_url, self._metadata)
|
99
|
+
try:
|
100
|
+
await connect_channel(self._channels[server_url])
|
101
|
+
except OSError as exc:
|
102
|
+
raise ConnectionError("Could not connect to the Modal server.") from exc
|
103
|
+
return self._channels[server_url]
|
104
|
+
|
105
|
+
def close(self):
|
106
|
+
for channel in self._channels.values():
|
107
|
+
channel.close()
|
108
|
+
self._channels.clear()
|
109
|
+
|
110
|
+
|
81
111
|
def create_channel(
|
82
112
|
server_url: str,
|
83
113
|
metadata: dict[str, str] = {},
|
84
114
|
) -> grpclib.client.Channel:
|
85
|
-
"""Creates a grpclib.Channel.
|
115
|
+
"""Creates a grpclib.Channel to be used by a GRPC stub.
|
86
116
|
|
87
|
-
|
88
|
-
|
117
|
+
Note that this function mutates the given metadata argument by adding an x-modal-auth-token
|
118
|
+
if one is present in the trailing metadata of any response.
|
89
119
|
"""
|
90
120
|
o = urllib.parse.urlparse(server_url)
|
91
121
|
|
modal/client.py
CHANGED
@@ -26,9 +26,9 @@ from modal_version import __version__
|
|
26
26
|
from ._traceback import print_server_warnings
|
27
27
|
from ._utils import async_utils
|
28
28
|
from ._utils.async_utils import TaskContext, synchronize_api
|
29
|
-
from ._utils.grpc_utils import
|
29
|
+
from ._utils.grpc_utils import ConnectionManager, retry_transient_errors
|
30
30
|
from .config import _check_config, _is_remote, config, logger
|
31
|
-
from .exception import AuthError, ClientClosed
|
31
|
+
from .exception import AuthError, ClientClosed
|
32
32
|
|
33
33
|
HEARTBEAT_INTERVAL: float = config.get("heartbeat_interval")
|
34
34
|
HEARTBEAT_TIMEOUT: float = HEARTBEAT_INTERVAL + 0.1
|
@@ -94,7 +94,6 @@ class _Client:
|
|
94
94
|
self._credentials = credentials
|
95
95
|
self.version = version
|
96
96
|
self._closed = False
|
97
|
-
self._channel: Optional[grpclib.client.Channel] = None
|
98
97
|
self._stub: Optional[modal_api_grpc.ModalClientModal] = None
|
99
98
|
self._snapshotted = False
|
100
99
|
self._owner_pid = None
|
@@ -104,10 +103,28 @@ class _Client:
|
|
104
103
|
|
105
104
|
@property
|
106
105
|
def stub(self) -> modal_api_grpc.ModalClientModal:
|
107
|
-
"""mdmd:hidden
|
106
|
+
"""mdmd:hidden
|
107
|
+
The default stub. Stubs can safely be used across forks / client snapshots.
|
108
|
+
|
109
|
+
This is useful if you want to make requests to the default Modal server in us-east, for example
|
110
|
+
control plane requests.
|
111
|
+
|
112
|
+
This is equivalent to client.get_stub(default_server_url), but it's cached, so it's a bit faster.
|
113
|
+
"""
|
108
114
|
assert self._stub
|
109
115
|
return self._stub
|
110
116
|
|
117
|
+
async def get_stub(self, server_url: str) -> modal_api_grpc.ModalClientModal:
|
118
|
+
"""mdmd:hidden
|
119
|
+
Get a stub for a specific server URL. Stubs can safely be used across forks / client snapshots.
|
120
|
+
|
121
|
+
This is useful if you want to make requests to a regional Modal server, for example low-latency
|
122
|
+
function calls in us-west.
|
123
|
+
|
124
|
+
This function is O(n) where n is the number of RPCs in ModalClient.
|
125
|
+
"""
|
126
|
+
return await modal_api_grpc.ModalClientModal._create(self, server_url)
|
127
|
+
|
111
128
|
async def _open(self):
|
112
129
|
self._closed = False
|
113
130
|
assert self._stub is None
|
@@ -115,13 +132,9 @@ class _Client:
|
|
115
132
|
self._cancellation_context = TaskContext(grace=0.5) # allow running rpcs to finish in 0.5s when closing client
|
116
133
|
self._cancellation_context_event_loop = asyncio.get_running_loop()
|
117
134
|
await self._cancellation_context.__aenter__()
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
except OSError as exc:
|
122
|
-
raise ConnectionError("Could not connect to the Modal server.") from exc
|
123
|
-
self._grpclib_stub = api_grpc.ModalClientStub(self._channel)
|
124
|
-
self._stub = modal_api_grpc.ModalClientModal(self._grpclib_stub, client=self)
|
135
|
+
|
136
|
+
self._connection_manager = ConnectionManager(client=self, metadata=metadata)
|
137
|
+
self._stub = await self.get_stub(self.server_url)
|
125
138
|
self._owner_pid = os.getpid()
|
126
139
|
|
127
140
|
async def _close(self, prep_for_restore: bool = False):
|
@@ -129,8 +142,8 @@ class _Client:
|
|
129
142
|
self._closed = True
|
130
143
|
if hasattr(self, "_cancellation_context"):
|
131
144
|
await self._cancellation_context.__aexit__(None, None, None) # wait for all rpcs to be finished/cancelled
|
132
|
-
if self.
|
133
|
-
self.
|
145
|
+
if self._connection_manager:
|
146
|
+
self._connection_manager.close()
|
134
147
|
|
135
148
|
if prep_for_restore:
|
136
149
|
self._snapshotted = True
|
@@ -284,43 +297,40 @@ class _Client:
|
|
284
297
|
if self._owner_pid and self._owner_pid != os.getpid():
|
285
298
|
# not calling .close() since that would also interact with stale resources
|
286
299
|
# just reset the internal state
|
287
|
-
self.
|
300
|
+
self._connection_manager = None
|
288
301
|
self._stub = None
|
289
|
-
self._grpclib_stub = None
|
290
302
|
self._owner_pid = None
|
291
303
|
|
292
304
|
self.set_env_client(None)
|
293
305
|
# TODO(elias): reset _cancellation_context in case ?
|
294
306
|
await self._open()
|
295
307
|
|
296
|
-
async def
|
297
|
-
#
|
298
|
-
# This prevents usage of stale
|
308
|
+
async def _get_channel(self, server_url: str) -> grpclib.client.Channel:
|
309
|
+
# Get a valid grpclib channel, reusing existing channels if possible.
|
310
|
+
# This prevents usage of stale channels across forks of processes.
|
299
311
|
await self._reset_on_pid_change()
|
300
|
-
return
|
312
|
+
return await self._connection_manager.get_or_create_channel(server_url)
|
301
313
|
|
302
314
|
@synchronizer.nowrap
|
303
315
|
async def _call_unary(
|
304
316
|
self,
|
305
|
-
|
317
|
+
grpclib_method: grpclib.client.UnaryUnaryMethod[RequestType, ResponseType],
|
306
318
|
request: Any,
|
307
319
|
*,
|
308
320
|
timeout: Optional[float] = None,
|
309
321
|
metadata: Optional[_MetadataLike] = None,
|
310
322
|
) -> Any:
|
311
|
-
grpclib_method = await self._get_grpclib_method(method_name)
|
312
323
|
coro = grpclib_method(request, timeout=timeout, metadata=metadata)
|
313
324
|
return await self._call_safely(coro, grpclib_method.name)
|
314
325
|
|
315
326
|
@synchronizer.nowrap
|
316
327
|
async def _call_stream(
|
317
328
|
self,
|
318
|
-
|
329
|
+
grpclib_method: grpclib.client.UnaryStreamMethod[RequestType, ResponseType],
|
319
330
|
request: Any,
|
320
331
|
*,
|
321
332
|
metadata: Optional[_MetadataLike],
|
322
333
|
) -> AsyncGenerator[Any, None]:
|
323
|
-
grpclib_method = await self._get_grpclib_method(method_name)
|
324
334
|
stream_context = grpclib_method.open(metadata=metadata)
|
325
335
|
stream = await self._call_safely(stream_context.__aenter__(), f"{grpclib_method.name}.open")
|
326
336
|
try:
|
@@ -347,16 +357,19 @@ class UnaryUnaryWrapper(Generic[RequestType, ResponseType]):
|
|
347
357
|
wrapped_method: grpclib.client.UnaryUnaryMethod[RequestType, ResponseType]
|
348
358
|
client: _Client
|
349
359
|
|
350
|
-
def __init__(
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
360
|
+
def __init__(
|
361
|
+
self,
|
362
|
+
wrapped_method: grpclib.client.UnaryUnaryMethod[RequestType, ResponseType],
|
363
|
+
client: _Client,
|
364
|
+
server_url: str,
|
365
|
+
):
|
366
|
+
self.wrapped_method = wrapped_method
|
355
367
|
self.client = client
|
368
|
+
self.server_url = server_url
|
356
369
|
|
357
370
|
@property
|
358
371
|
def name(self) -> str:
|
359
|
-
return self.
|
372
|
+
return self.wrapped_method.name
|
360
373
|
|
361
374
|
async def __call__(
|
362
375
|
self,
|
@@ -366,22 +379,38 @@ class UnaryUnaryWrapper(Generic[RequestType, ResponseType]):
|
|
366
379
|
metadata: Optional[_MetadataLike] = None,
|
367
380
|
) -> ResponseType:
|
368
381
|
if self.client._snapshotted:
|
369
|
-
logger.debug(f"refreshing client after snapshot for {self.
|
382
|
+
logger.debug(f"refreshing client after snapshot for {self.name.rsplit('/', 1)[1]}")
|
370
383
|
self.client = await _Client.from_env()
|
371
|
-
|
384
|
+
|
385
|
+
# Note: We override the grpclib method's channel (see grpclib's code [1]). I think this is fine
|
386
|
+
# since grpclib's code doesn't seem to change very much, but we could also recreate the
|
387
|
+
# grpclib stub if we aren't comfortable with this. The downside is then we need to cache
|
388
|
+
# the grpclib stub so the rest of our code becomes a bit more complicated.
|
389
|
+
#
|
390
|
+
# We need to override the channel because after the process is forked or the client is
|
391
|
+
# snapshotted, the existing channel may be stale / unusable.
|
392
|
+
#
|
393
|
+
# [1]: https://github.com/vmagamedov/grpclib/blob/62f968a4c84e3f64e6966097574ff0a59969ea9b/grpclib/client.py#L844
|
394
|
+
self.wrapped_method.channel = await self.client._get_channel(self.server_url)
|
395
|
+
return await self.client._call_unary(self.wrapped_method, req, timeout=timeout, metadata=metadata)
|
372
396
|
|
373
397
|
|
374
398
|
class UnaryStreamWrapper(Generic[RequestType, ResponseType]):
|
375
399
|
wrapped_method: grpclib.client.UnaryStreamMethod[RequestType, ResponseType]
|
376
400
|
|
377
|
-
def __init__(
|
378
|
-
self
|
379
|
-
|
401
|
+
def __init__(
|
402
|
+
self,
|
403
|
+
wrapped_method: grpclib.client.UnaryStreamMethod[RequestType, ResponseType],
|
404
|
+
client: _Client,
|
405
|
+
server_url: str,
|
406
|
+
):
|
407
|
+
self.wrapped_method = wrapped_method
|
380
408
|
self.client = client
|
409
|
+
self.server_url = server_url
|
381
410
|
|
382
411
|
@property
|
383
412
|
def name(self) -> str:
|
384
|
-
return self.
|
413
|
+
return self.wrapped_method.name
|
385
414
|
|
386
415
|
async def unary_stream(
|
387
416
|
self,
|
@@ -389,7 +418,8 @@ class UnaryStreamWrapper(Generic[RequestType, ResponseType]):
|
|
389
418
|
metadata: Optional[Any] = None,
|
390
419
|
):
|
391
420
|
if self.client._snapshotted:
|
392
|
-
logger.debug(f"refreshing client after snapshot for {self.
|
421
|
+
logger.debug(f"refreshing client after snapshot for {self.name.rsplit('/', 1)[1]}")
|
393
422
|
self.client = await _Client.from_env()
|
394
|
-
|
423
|
+
self.wrapped_method.channel = await self.client._get_channel(self.server_url)
|
424
|
+
async for response in self.client._call_stream(self.wrapped_method, request, metadata=metadata):
|
395
425
|
yield response
|
modal/client.pyi
CHANGED
@@ -27,11 +27,12 @@ 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.74.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.55"
|
31
31
|
): ...
|
32
32
|
def is_closed(self) -> bool: ...
|
33
33
|
@property
|
34
34
|
def stub(self) -> modal_proto.modal_api_grpc.ModalClientModal: ...
|
35
|
+
async def get_stub(self, server_url: str) -> modal_proto.modal_api_grpc.ModalClientModal: ...
|
35
36
|
async def _open(self): ...
|
36
37
|
async def _close(self, prep_for_restore: bool = False): ...
|
37
38
|
async def hello(self): ...
|
@@ -49,10 +50,10 @@ class _Client:
|
|
49
50
|
def set_env_client(cls, client: typing.Optional[_Client]): ...
|
50
51
|
async def _call_safely(self, coro, readable_method: str): ...
|
51
52
|
async def _reset_on_pid_change(self): ...
|
52
|
-
async def
|
53
|
+
async def _get_channel(self, server_url: str) -> grpclib.client.Channel: ...
|
53
54
|
async def _call_unary(
|
54
55
|
self,
|
55
|
-
|
56
|
+
grpclib_method: grpclib.client.UnaryUnaryMethod[RequestType, ResponseType],
|
56
57
|
request: typing.Any,
|
57
58
|
*,
|
58
59
|
timeout: typing.Optional[float] = None,
|
@@ -64,7 +65,7 @@ class _Client:
|
|
64
65
|
) -> typing.Any: ...
|
65
66
|
def _call_stream(
|
66
67
|
self,
|
67
|
-
|
68
|
+
grpclib_method: grpclib.client.UnaryStreamMethod[RequestType, ResponseType],
|
68
69
|
request: typing.Any,
|
69
70
|
*,
|
70
71
|
metadata: typing.Union[
|
@@ -85,12 +86,18 @@ class Client:
|
|
85
86
|
_snapshotted: bool
|
86
87
|
|
87
88
|
def __init__(
|
88
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.
|
89
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.55"
|
89
90
|
): ...
|
90
91
|
def is_closed(self) -> bool: ...
|
91
92
|
@property
|
92
93
|
def stub(self) -> modal_proto.modal_api_grpc.ModalClientModal: ...
|
93
94
|
|
95
|
+
class __get_stub_spec(typing_extensions.Protocol[SUPERSELF]):
|
96
|
+
def __call__(self, server_url: str) -> modal_proto.modal_api_grpc.ModalClientModal: ...
|
97
|
+
async def aio(self, server_url: str) -> modal_proto.modal_api_grpc.ModalClientModal: ...
|
98
|
+
|
99
|
+
get_stub: __get_stub_spec[typing_extensions.Self]
|
100
|
+
|
94
101
|
class ___open_spec(typing_extensions.Protocol[SUPERSELF]):
|
95
102
|
def __call__(self): ...
|
96
103
|
async def aio(self): ...
|
@@ -136,15 +143,15 @@ class Client:
|
|
136
143
|
|
137
144
|
_reset_on_pid_change: ___reset_on_pid_change_spec[typing_extensions.Self]
|
138
145
|
|
139
|
-
class
|
140
|
-
def __call__(self,
|
141
|
-
async def aio(self,
|
146
|
+
class ___get_channel_spec(typing_extensions.Protocol[SUPERSELF]):
|
147
|
+
def __call__(self, server_url: str) -> grpclib.client.Channel: ...
|
148
|
+
async def aio(self, server_url: str) -> grpclib.client.Channel: ...
|
142
149
|
|
143
|
-
|
150
|
+
_get_channel: ___get_channel_spec[typing_extensions.Self]
|
144
151
|
|
145
152
|
async def _call_unary(
|
146
153
|
self,
|
147
|
-
|
154
|
+
grpclib_method: grpclib.client.UnaryUnaryMethod[RequestType, ResponseType],
|
148
155
|
request: typing.Any,
|
149
156
|
*,
|
150
157
|
timeout: typing.Optional[float] = None,
|
@@ -156,7 +163,7 @@ class Client:
|
|
156
163
|
) -> typing.Any: ...
|
157
164
|
def _call_stream(
|
158
165
|
self,
|
159
|
-
|
166
|
+
grpclib_method: grpclib.client.UnaryStreamMethod[RequestType, ResponseType],
|
160
167
|
request: typing.Any,
|
161
168
|
*,
|
162
169
|
metadata: typing.Union[
|
@@ -170,7 +177,12 @@ class UnaryUnaryWrapper(typing.Generic[RequestType, ResponseType]):
|
|
170
177
|
wrapped_method: grpclib.client.UnaryUnaryMethod[RequestType, ResponseType]
|
171
178
|
client: _Client
|
172
179
|
|
173
|
-
def __init__(
|
180
|
+
def __init__(
|
181
|
+
self,
|
182
|
+
wrapped_method: grpclib.client.UnaryUnaryMethod[RequestType, ResponseType],
|
183
|
+
client: _Client,
|
184
|
+
server_url: str,
|
185
|
+
): ...
|
174
186
|
@property
|
175
187
|
def name(self) -> str: ...
|
176
188
|
async def __call__(
|
@@ -189,7 +201,10 @@ class UnaryStreamWrapper(typing.Generic[RequestType, ResponseType]):
|
|
189
201
|
wrapped_method: grpclib.client.UnaryStreamMethod[RequestType, ResponseType]
|
190
202
|
|
191
203
|
def __init__(
|
192
|
-
self,
|
204
|
+
self,
|
205
|
+
wrapped_method: grpclib.client.UnaryStreamMethod[RequestType, ResponseType],
|
206
|
+
client: _Client,
|
207
|
+
server_url: str,
|
193
208
|
): ...
|
194
209
|
@property
|
195
210
|
def name(self) -> str: ...
|
modal/functions.pyi
CHANGED
@@ -222,11 +222,11 @@ class Function(
|
|
222
222
|
|
223
223
|
_call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
|
224
224
|
|
225
|
-
class __remote_spec(typing_extensions.Protocol[
|
225
|
+
class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
226
226
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
227
227
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
228
228
|
|
229
|
-
remote: __remote_spec[modal._functions.
|
229
|
+
remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
|
230
230
|
|
231
231
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
232
232
|
def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
|
@@ -241,12 +241,12 @@ class Function(
|
|
241
241
|
self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
|
242
242
|
) -> modal._functions.OriginalReturnType: ...
|
243
243
|
|
244
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
244
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
245
245
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
246
246
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
247
247
|
|
248
248
|
_experimental_spawn: ___experimental_spawn_spec[
|
249
|
-
modal._functions.
|
249
|
+
modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
|
250
250
|
]
|
251
251
|
|
252
252
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
|
@@ -255,11 +255,11 @@ class Function(
|
|
255
255
|
|
256
256
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
|
257
257
|
|
258
|
-
class __spawn_spec(typing_extensions.Protocol[
|
258
|
+
class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
259
259
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
260
260
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
261
261
|
|
262
|
-
spawn: __spawn_spec[modal._functions.
|
262
|
+
spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
|
263
263
|
|
264
264
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
|
265
265
|
|
modal/parallel_map.py
CHANGED
@@ -138,7 +138,7 @@ async def _map_invocation(
|
|
138
138
|
idx = inputs_created
|
139
139
|
inputs_created += 1
|
140
140
|
(args, kwargs) = argskwargs
|
141
|
-
return await _create_input(args, kwargs, client, idx=idx, method_name=function._use_method_name)
|
141
|
+
return await _create_input(args, kwargs, client.stub, idx=idx, method_name=function._use_method_name)
|
142
142
|
|
143
143
|
async def input_iter():
|
144
144
|
while 1:
|
@@ -3,7 +3,7 @@ modal/__main__.py,sha256=sTJcc9EbDuCKSwg3tL6ZckFw9WWdlkXW8mId1IvJCNc,2846
|
|
3
3
|
modal/_clustered_functions.py,sha256=kTf-9YBXY88NutC1akI-gCbvf01RhMPCw-zoOI_YIUE,2700
|
4
4
|
modal/_clustered_functions.pyi,sha256=vllkegc99A0jrUOWa8mdlSbdp6uz36TsHhGxysAOpaQ,771
|
5
5
|
modal/_container_entrypoint.py,sha256=2Zx9O_EMJg0H77EdnC2vGKs6uFMWwbP1NLFf-qYmWmU,28962
|
6
|
-
modal/_functions.py,sha256=
|
6
|
+
modal/_functions.py,sha256=XouGO1IvJA3qSmjwZYt6i-dZxH-FJkfhwVJp4o_0j1s,77679
|
7
7
|
modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
|
8
8
|
modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
|
9
9
|
modal/_object.py,sha256=6ve4sI2nRAnjPCuAXdSoUplaXfzC9MqRlF_ZLULwwy0,11472
|
@@ -21,8 +21,8 @@ modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
|
|
21
21
|
modal/app.py,sha256=r-9vVU1lrR1CWtJEo60fuaianvxY_oOXZyv1Qx1DEkI,51231
|
22
22
|
modal/app.pyi,sha256=0QNtnUpAFbOPcbwCt119ge7OmoBqMFw5SajLgdE5eOw,28600
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
24
|
-
modal/client.py,sha256=
|
25
|
-
modal/client.pyi,sha256=
|
24
|
+
modal/client.py,sha256=o-aQThHpvDHUzg_kUafyhWzACViUBhY2WLZ2EitnSHA,16787
|
25
|
+
modal/client.pyi,sha256=9fUzrcuA2uqCuRxHuIZxhsTR-lopTQuKxs_VvusFdLY,8343
|
26
26
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
27
27
|
modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
|
28
28
|
modal/cls.py,sha256=aHoMEWMZUN7bOezs3tRPxzS1FP3gTxZBORVjbPmtxyg,35338
|
@@ -39,7 +39,7 @@ modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
|
|
39
39
|
modal/file_io.pyi,sha256=NTRft1tbPSWf9TlWVeZmTlgB5AZ_Zhu2srWIrWr7brk,9445
|
40
40
|
modal/file_pattern_matcher.py,sha256=trosX-Bp7dOubudN1bLLhRAoidWy1TcoaR4Pv8CedWw,6497
|
41
41
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
42
|
-
modal/functions.pyi,sha256=
|
42
|
+
modal/functions.pyi,sha256=RB5J_KCZknSsZ5TW4Yi-16w-FqlHWuE3w-5DOiiSO3c,16360
|
43
43
|
modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
|
44
44
|
modal/image.py,sha256=ZCghS6l1O7pezXcdMHk6RoJpW3qWszfWGJTW38lNXaU,92797
|
45
45
|
modal/image.pyi,sha256=ddbegF532pDLiVANOJdtJiYoDbbF3mAFrsCiyvIu7jU,25632
|
@@ -52,7 +52,7 @@ modal/network_file_system.pyi,sha256=C_ZiXmpdkTObapVhAPlRmB4ofmM2D7SdKlUCZVg-1IQ
|
|
52
52
|
modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
|
53
53
|
modal/object.pyi,sha256=kyJkRQcVv3ct7zSAxvvXcuhBVeH914v80uSlqeS7cA4,5632
|
54
54
|
modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
|
55
|
-
modal/parallel_map.py,sha256=
|
55
|
+
modal/parallel_map.py,sha256=ZOzjgCBcXv4gyOmEsLPVRkji1r2yqPIsP4Diw7G0hWI,35694
|
56
56
|
modal/parallel_map.pyi,sha256=bLh_D57e5KOIkmP4WW-C_rMSzfxRUNfdtpNJKj4jWA4,5865
|
57
57
|
modal/partial_function.py,sha256=SwuAAj2wj4SO6F6nkSnwNZrczEmm9w9YdlQTHh6hr04,1195
|
58
58
|
modal/partial_function.pyi,sha256=NFWz1aCAs2B3-GnPf1cTatWRZOLnYpFKCnjP_X9iNRs,6411
|
@@ -96,10 +96,10 @@ modal/_utils/blob_utils.py,sha256=IexC2Jbtqp_Tkmy62ayfgzTYte0UPCNufB_v-DO21g8,18
|
|
96
96
|
modal/_utils/bytes_io_segment_payload.py,sha256=uunxVJS4PE1LojF_UpURMzVK9GuvmYWRqQo_bxEj5TU,3385
|
97
97
|
modal/_utils/deprecation.py,sha256=EXP1beU4pmEqEzWMLw6E3kUfNfpmNA_VOp6i0EHi93g,4856
|
98
98
|
modal/_utils/docker_utils.py,sha256=h1uETghR40mp_y3fSWuZAfbIASH1HMzuphJHghAL6DU,3722
|
99
|
-
modal/_utils/function_utils.py,sha256=
|
99
|
+
modal/_utils/function_utils.py,sha256=KNoFx_DBtfw3QMB8V_HPDcj4GylnI3tuf7RKPF2T3-I,27342
|
100
100
|
modal/_utils/git_utils.py,sha256=qtUU6JAttF55ZxYq51y55OR58B0tDPZsZWK5dJe6W5g,3182
|
101
101
|
modal/_utils/grpc_testing.py,sha256=H1zHqthv19eGPJz2HKXDyWXWGSqO4BRsxah3L5Xaa8A,8619
|
102
|
-
modal/_utils/grpc_utils.py,sha256=
|
102
|
+
modal/_utils/grpc_utils.py,sha256=Op0D25Z3WOogoo1ZPKc4zOco1IWckJCfq_QOxfkzroI,10599
|
103
103
|
modal/_utils/hash_utils.py,sha256=zg3J6OGxTFGSFri1qQ12giDz90lWk8bzaxCTUCRtiX4,3034
|
104
104
|
modal/_utils/http_utils.py,sha256=yeTFsXYr0rYMEhB7vBP7audG9Uc7OLhzKBANFDZWVt0,2451
|
105
105
|
modal/_utils/jwt_utils.py,sha256=fxH9plyrbAemTbjSsQtzIdDXE9QXxvMC4DiUZ16G0aA,1360
|
@@ -145,7 +145,7 @@ modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddR
|
|
145
145
|
modal/requirements/PREVIEW.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
|
146
146
|
modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
|
147
147
|
modal/requirements/base-images.json,sha256=57vMSqzMbLBxw5tFWSaMiIkkVEps4JfX5PAtXGnkS4U,740
|
148
|
-
modal-0.74.
|
148
|
+
modal-0.74.55.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
149
149
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
150
150
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
151
151
|
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
@@ -159,7 +159,7 @@ modal_proto/api_pb2.py,sha256=EWWs8G_DH4ezUzsNSCRiYCW7TV3J9pM3NDtdcR1N9YA,332519
|
|
159
159
|
modal_proto/api_pb2.pyi,sha256=K05tcHYkl_ZFGK_mfFOxjJ2V1SryTpCng6CkeqOAA0Q,452511
|
160
160
|
modal_proto/api_pb2_grpc.py,sha256=-KPQMzXmTYwgF23_tGpODCVK79iOdV1sRsw5mN-byMw,247448
|
161
161
|
modal_proto/api_pb2_grpc.pyi,sha256=ls1qcby7goTrlE6BluSWpo73cW_ajvh3rOe41azMBWM,57929
|
162
|
-
modal_proto/modal_api_grpc.py,sha256=
|
162
|
+
modal_proto/modal_api_grpc.py,sha256=eoJvCFelooz_mlLa1sJ5CEsNuUSIui-4aUgSmiCwKOI,17312
|
163
163
|
modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
|
164
164
|
modal_proto/options.proto,sha256=zp9h5r61ivsp0XwEWwNBsVqNTbRA1VSY_UtN7sEcHtE,549
|
165
165
|
modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
|
@@ -170,9 +170,9 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
170
170
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
171
171
|
modal_version/__init__.py,sha256=m94xZNWIjH8oUtJk4l9xfovzDJede2o7X-q0MHVECtM,470
|
172
172
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
173
|
-
modal_version/_version_generated.py,sha256=
|
174
|
-
modal-0.74.
|
175
|
-
modal-0.74.
|
176
|
-
modal-0.74.
|
177
|
-
modal-0.74.
|
178
|
-
modal-0.74.
|
173
|
+
modal_version/_version_generated.py,sha256=OZ_XmoTkO3MCoksyO8lR_vFkMH1zV93AgoruWFvLPis,149
|
174
|
+
modal-0.74.55.dist-info/METADATA,sha256=oCE7_7EOAb5XgRznncfj2CpEJmlHutoa2JPOv9cDg_I,2451
|
175
|
+
modal-0.74.55.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
176
|
+
modal-0.74.55.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
177
|
+
modal-0.74.55.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
178
|
+
modal-0.74.55.dist-info/RECORD,,
|
modal_proto/modal_api_grpc.py
CHANGED
@@ -10,154 +10,160 @@ if typing.TYPE_CHECKING:
|
|
10
10
|
|
11
11
|
|
12
12
|
class ModalClientModal:
|
13
|
+
@classmethod
|
14
|
+
async def _create(cls, client: 'modal.client._Client', server_url: str):
|
15
|
+
channel = await client._get_channel(server_url)
|
16
|
+
grpclib_stub = modal_proto.api_grpc.ModalClientStub(channel)
|
17
|
+
return cls(grpclib_stub, client, server_url)
|
13
18
|
|
14
|
-
|
15
|
-
|
16
|
-
self.
|
17
|
-
self.
|
18
|
-
self.
|
19
|
-
self.
|
20
|
-
self.
|
21
|
-
self.
|
22
|
-
self.
|
23
|
-
self.
|
24
|
-
self.
|
25
|
-
self.
|
26
|
-
self.
|
27
|
-
self.
|
28
|
-
self.
|
29
|
-
self.
|
30
|
-
self.
|
31
|
-
self.
|
32
|
-
self.
|
33
|
-
self.
|
34
|
-
self.
|
35
|
-
self.
|
36
|
-
self.
|
37
|
-
self.
|
38
|
-
self.
|
39
|
-
self.
|
40
|
-
self.
|
41
|
-
self.
|
42
|
-
self.
|
43
|
-
self.
|
44
|
-
self.
|
45
|
-
self.
|
46
|
-
self.
|
47
|
-
self.
|
48
|
-
self.
|
49
|
-
self.
|
50
|
-
self.
|
51
|
-
self.
|
52
|
-
self.
|
53
|
-
self.
|
54
|
-
self.
|
55
|
-
self.
|
56
|
-
self.
|
57
|
-
self.
|
58
|
-
self.
|
59
|
-
self.
|
60
|
-
self.
|
61
|
-
self.
|
62
|
-
self.
|
63
|
-
self.
|
64
|
-
self.
|
65
|
-
self.
|
66
|
-
self.
|
67
|
-
self.
|
68
|
-
self.
|
69
|
-
self.
|
70
|
-
self.
|
71
|
-
self.
|
72
|
-
self.
|
73
|
-
self.
|
74
|
-
self.
|
75
|
-
self.
|
76
|
-
self.
|
77
|
-
self.
|
78
|
-
self.
|
79
|
-
self.
|
80
|
-
self.
|
81
|
-
self.
|
82
|
-
self.
|
83
|
-
self.
|
84
|
-
self.
|
85
|
-
self.
|
86
|
-
self.
|
87
|
-
self.
|
88
|
-
self.
|
89
|
-
self.
|
90
|
-
self.
|
91
|
-
self.
|
92
|
-
self.
|
93
|
-
self.
|
94
|
-
self.
|
95
|
-
self.
|
96
|
-
self.
|
97
|
-
self.
|
98
|
-
self.
|
99
|
-
self.
|
100
|
-
self.
|
101
|
-
self.
|
102
|
-
self.
|
103
|
-
self.
|
104
|
-
self.
|
105
|
-
self.
|
106
|
-
self.
|
107
|
-
self.
|
108
|
-
self.
|
109
|
-
self.
|
110
|
-
self.
|
111
|
-
self.
|
112
|
-
self.
|
113
|
-
self.
|
114
|
-
self.
|
115
|
-
self.
|
116
|
-
self.
|
117
|
-
self.
|
118
|
-
self.
|
119
|
-
self.
|
120
|
-
self.
|
121
|
-
self.
|
122
|
-
self.
|
123
|
-
self.
|
124
|
-
self.
|
125
|
-
self.
|
126
|
-
self.
|
127
|
-
self.
|
128
|
-
self.
|
129
|
-
self.
|
130
|
-
self.
|
131
|
-
self.
|
132
|
-
self.
|
133
|
-
self.
|
134
|
-
self.
|
135
|
-
self.
|
136
|
-
self.
|
137
|
-
self.
|
138
|
-
self.
|
139
|
-
self.
|
140
|
-
self.
|
141
|
-
self.
|
142
|
-
self.
|
143
|
-
self.
|
144
|
-
self.
|
145
|
-
self.
|
146
|
-
self.
|
147
|
-
self.
|
148
|
-
self.
|
149
|
-
self.
|
150
|
-
self.
|
151
|
-
self.
|
152
|
-
self.
|
153
|
-
self.
|
154
|
-
self.
|
155
|
-
self.
|
156
|
-
self.
|
157
|
-
self.
|
158
|
-
self.
|
159
|
-
self.
|
160
|
-
self.
|
161
|
-
self.
|
162
|
-
self.
|
163
|
-
self.
|
19
|
+
|
20
|
+
def __init__(self, grpclib_stub: modal_proto.api_grpc.ModalClientStub, client: "modal.client._Client", server_url: str) -> None:
|
21
|
+
self.AppClientDisconnect = modal.client.UnaryUnaryWrapper(grpclib_stub.AppClientDisconnect, client, server_url)
|
22
|
+
self.AppCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.AppCreate, client, server_url)
|
23
|
+
self.AppDeploy = modal.client.UnaryUnaryWrapper(grpclib_stub.AppDeploy, client, server_url)
|
24
|
+
self.AppDeploymentHistory = modal.client.UnaryUnaryWrapper(grpclib_stub.AppDeploymentHistory, client, server_url)
|
25
|
+
self.AppGetByDeploymentName = modal.client.UnaryUnaryWrapper(grpclib_stub.AppGetByDeploymentName, client, server_url)
|
26
|
+
self.AppGetLayout = modal.client.UnaryUnaryWrapper(grpclib_stub.AppGetLayout, client, server_url)
|
27
|
+
self.AppGetLogs = modal.client.UnaryStreamWrapper(grpclib_stub.AppGetLogs, client, server_url)
|
28
|
+
self.AppGetObjects = modal.client.UnaryUnaryWrapper(grpclib_stub.AppGetObjects, client, server_url)
|
29
|
+
self.AppGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.AppGetOrCreate, client, server_url)
|
30
|
+
self.AppHeartbeat = modal.client.UnaryUnaryWrapper(grpclib_stub.AppHeartbeat, client, server_url)
|
31
|
+
self.AppList = modal.client.UnaryUnaryWrapper(grpclib_stub.AppList, client, server_url)
|
32
|
+
self.AppLookup = modal.client.UnaryUnaryWrapper(grpclib_stub.AppLookup, client, server_url)
|
33
|
+
self.AppPublish = modal.client.UnaryUnaryWrapper(grpclib_stub.AppPublish, client, server_url)
|
34
|
+
self.AppRollback = modal.client.UnaryUnaryWrapper(grpclib_stub.AppRollback, client, server_url)
|
35
|
+
self.AppSetObjects = modal.client.UnaryUnaryWrapper(grpclib_stub.AppSetObjects, client, server_url)
|
36
|
+
self.AppStop = modal.client.UnaryUnaryWrapper(grpclib_stub.AppStop, client, server_url)
|
37
|
+
self.AttemptAwait = modal.client.UnaryUnaryWrapper(grpclib_stub.AttemptAwait, client, server_url)
|
38
|
+
self.AttemptStart = modal.client.UnaryUnaryWrapper(grpclib_stub.AttemptStart, client, server_url)
|
39
|
+
self.BlobCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.BlobCreate, client, server_url)
|
40
|
+
self.BlobGet = modal.client.UnaryUnaryWrapper(grpclib_stub.BlobGet, client, server_url)
|
41
|
+
self.ClassCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.ClassCreate, client, server_url)
|
42
|
+
self.ClassGet = modal.client.UnaryUnaryWrapper(grpclib_stub.ClassGet, client, server_url)
|
43
|
+
self.ClientHello = modal.client.UnaryUnaryWrapper(grpclib_stub.ClientHello, client, server_url)
|
44
|
+
self.ClusterGet = modal.client.UnaryUnaryWrapper(grpclib_stub.ClusterGet, client, server_url)
|
45
|
+
self.ClusterList = modal.client.UnaryUnaryWrapper(grpclib_stub.ClusterList, client, server_url)
|
46
|
+
self.ContainerCheckpoint = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerCheckpoint, client, server_url)
|
47
|
+
self.ContainerExec = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerExec, client, server_url)
|
48
|
+
self.ContainerExecGetOutput = modal.client.UnaryStreamWrapper(grpclib_stub.ContainerExecGetOutput, client, server_url)
|
49
|
+
self.ContainerExecPutInput = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerExecPutInput, client, server_url)
|
50
|
+
self.ContainerExecWait = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerExecWait, client, server_url)
|
51
|
+
self.ContainerFilesystemExec = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerFilesystemExec, client, server_url)
|
52
|
+
self.ContainerFilesystemExecGetOutput = modal.client.UnaryStreamWrapper(grpclib_stub.ContainerFilesystemExecGetOutput, client, server_url)
|
53
|
+
self.ContainerHeartbeat = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerHeartbeat, client, server_url)
|
54
|
+
self.ContainerHello = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerHello, client, server_url)
|
55
|
+
self.ContainerLog = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerLog, client, server_url)
|
56
|
+
self.ContainerStop = modal.client.UnaryUnaryWrapper(grpclib_stub.ContainerStop, client, server_url)
|
57
|
+
self.DictClear = modal.client.UnaryUnaryWrapper(grpclib_stub.DictClear, client, server_url)
|
58
|
+
self.DictContains = modal.client.UnaryUnaryWrapper(grpclib_stub.DictContains, client, server_url)
|
59
|
+
self.DictContents = modal.client.UnaryStreamWrapper(grpclib_stub.DictContents, client, server_url)
|
60
|
+
self.DictDelete = modal.client.UnaryUnaryWrapper(grpclib_stub.DictDelete, client, server_url)
|
61
|
+
self.DictGet = modal.client.UnaryUnaryWrapper(grpclib_stub.DictGet, client, server_url)
|
62
|
+
self.DictGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.DictGetOrCreate, client, server_url)
|
63
|
+
self.DictHeartbeat = modal.client.UnaryUnaryWrapper(grpclib_stub.DictHeartbeat, client, server_url)
|
64
|
+
self.DictLen = modal.client.UnaryUnaryWrapper(grpclib_stub.DictLen, client, server_url)
|
65
|
+
self.DictList = modal.client.UnaryUnaryWrapper(grpclib_stub.DictList, client, server_url)
|
66
|
+
self.DictPop = modal.client.UnaryUnaryWrapper(grpclib_stub.DictPop, client, server_url)
|
67
|
+
self.DictUpdate = modal.client.UnaryUnaryWrapper(grpclib_stub.DictUpdate, client, server_url)
|
68
|
+
self.DomainCertificateVerify = modal.client.UnaryUnaryWrapper(grpclib_stub.DomainCertificateVerify, client, server_url)
|
69
|
+
self.DomainCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.DomainCreate, client, server_url)
|
70
|
+
self.DomainList = modal.client.UnaryUnaryWrapper(grpclib_stub.DomainList, client, server_url)
|
71
|
+
self.EnvironmentCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.EnvironmentCreate, client, server_url)
|
72
|
+
self.EnvironmentDelete = modal.client.UnaryUnaryWrapper(grpclib_stub.EnvironmentDelete, client, server_url)
|
73
|
+
self.EnvironmentGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.EnvironmentGetOrCreate, client, server_url)
|
74
|
+
self.EnvironmentList = modal.client.UnaryUnaryWrapper(grpclib_stub.EnvironmentList, client, server_url)
|
75
|
+
self.EnvironmentUpdate = modal.client.UnaryUnaryWrapper(grpclib_stub.EnvironmentUpdate, client, server_url)
|
76
|
+
self.FunctionAsyncInvoke = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionAsyncInvoke, client, server_url)
|
77
|
+
self.FunctionBindParams = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionBindParams, client, server_url)
|
78
|
+
self.FunctionCallCancel = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionCallCancel, client, server_url)
|
79
|
+
self.FunctionCallGetDataIn = modal.client.UnaryStreamWrapper(grpclib_stub.FunctionCallGetDataIn, client, server_url)
|
80
|
+
self.FunctionCallGetDataOut = modal.client.UnaryStreamWrapper(grpclib_stub.FunctionCallGetDataOut, client, server_url)
|
81
|
+
self.FunctionCallList = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionCallList, client, server_url)
|
82
|
+
self.FunctionCallPutDataOut = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionCallPutDataOut, client, server_url)
|
83
|
+
self.FunctionCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionCreate, client, server_url)
|
84
|
+
self.FunctionGet = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionGet, client, server_url)
|
85
|
+
self.FunctionGetCallGraph = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionGetCallGraph, client, server_url)
|
86
|
+
self.FunctionGetCurrentStats = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionGetCurrentStats, client, server_url)
|
87
|
+
self.FunctionGetDynamicConcurrency = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionGetDynamicConcurrency, client, server_url)
|
88
|
+
self.FunctionGetInputs = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionGetInputs, client, server_url)
|
89
|
+
self.FunctionGetOutputs = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionGetOutputs, client, server_url)
|
90
|
+
self.FunctionGetSerialized = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionGetSerialized, client, server_url)
|
91
|
+
self.FunctionMap = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionMap, client, server_url)
|
92
|
+
self.FunctionPrecreate = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionPrecreate, client, server_url)
|
93
|
+
self.FunctionPutInputs = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionPutInputs, client, server_url)
|
94
|
+
self.FunctionPutOutputs = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionPutOutputs, client, server_url)
|
95
|
+
self.FunctionRetryInputs = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionRetryInputs, client, server_url)
|
96
|
+
self.FunctionStartPtyShell = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionStartPtyShell, client, server_url)
|
97
|
+
self.FunctionUpdateSchedulingParams = modal.client.UnaryUnaryWrapper(grpclib_stub.FunctionUpdateSchedulingParams, client, server_url)
|
98
|
+
self.ImageFromId = modal.client.UnaryUnaryWrapper(grpclib_stub.ImageFromId, client, server_url)
|
99
|
+
self.ImageGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.ImageGetOrCreate, client, server_url)
|
100
|
+
self.ImageJoinStreaming = modal.client.UnaryStreamWrapper(grpclib_stub.ImageJoinStreaming, client, server_url)
|
101
|
+
self.MountGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.MountGetOrCreate, client, server_url)
|
102
|
+
self.MountPutFile = modal.client.UnaryUnaryWrapper(grpclib_stub.MountPutFile, client, server_url)
|
103
|
+
self.NotebookKernelPublishResults = modal.client.UnaryUnaryWrapper(grpclib_stub.NotebookKernelPublishResults, client, server_url)
|
104
|
+
self.ProxyAddIp = modal.client.UnaryUnaryWrapper(grpclib_stub.ProxyAddIp, client, server_url)
|
105
|
+
self.ProxyCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.ProxyCreate, client, server_url)
|
106
|
+
self.ProxyDelete = modal.client.UnaryUnaryWrapper(grpclib_stub.ProxyDelete, client, server_url)
|
107
|
+
self.ProxyGet = modal.client.UnaryUnaryWrapper(grpclib_stub.ProxyGet, client, server_url)
|
108
|
+
self.ProxyGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.ProxyGetOrCreate, client, server_url)
|
109
|
+
self.ProxyList = modal.client.UnaryUnaryWrapper(grpclib_stub.ProxyList, client, server_url)
|
110
|
+
self.ProxyRemoveIp = modal.client.UnaryUnaryWrapper(grpclib_stub.ProxyRemoveIp, client, server_url)
|
111
|
+
self.QueueClear = modal.client.UnaryUnaryWrapper(grpclib_stub.QueueClear, client, server_url)
|
112
|
+
self.QueueDelete = modal.client.UnaryUnaryWrapper(grpclib_stub.QueueDelete, client, server_url)
|
113
|
+
self.QueueGet = modal.client.UnaryUnaryWrapper(grpclib_stub.QueueGet, client, server_url)
|
114
|
+
self.QueueGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.QueueGetOrCreate, client, server_url)
|
115
|
+
self.QueueHeartbeat = modal.client.UnaryUnaryWrapper(grpclib_stub.QueueHeartbeat, client, server_url)
|
116
|
+
self.QueueLen = modal.client.UnaryUnaryWrapper(grpclib_stub.QueueLen, client, server_url)
|
117
|
+
self.QueueList = modal.client.UnaryUnaryWrapper(grpclib_stub.QueueList, client, server_url)
|
118
|
+
self.QueueNextItems = modal.client.UnaryUnaryWrapper(grpclib_stub.QueueNextItems, client, server_url)
|
119
|
+
self.QueuePut = modal.client.UnaryUnaryWrapper(grpclib_stub.QueuePut, client, server_url)
|
120
|
+
self.SandboxCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxCreate, client, server_url)
|
121
|
+
self.SandboxGetLogs = modal.client.UnaryStreamWrapper(grpclib_stub.SandboxGetLogs, client, server_url)
|
122
|
+
self.SandboxGetResourceUsage = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetResourceUsage, client, server_url)
|
123
|
+
self.SandboxGetTaskId = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetTaskId, client, server_url)
|
124
|
+
self.SandboxGetTunnels = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxGetTunnels, client, server_url)
|
125
|
+
self.SandboxList = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxList, client, server_url)
|
126
|
+
self.SandboxRestore = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxRestore, client, server_url)
|
127
|
+
self.SandboxSnapshot = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshot, client, server_url)
|
128
|
+
self.SandboxSnapshotFs = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotFs, client, server_url)
|
129
|
+
self.SandboxSnapshotGet = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotGet, client, server_url)
|
130
|
+
self.SandboxSnapshotWait = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxSnapshotWait, client, server_url)
|
131
|
+
self.SandboxStdinWrite = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxStdinWrite, client, server_url)
|
132
|
+
self.SandboxTagsSet = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxTagsSet, client, server_url)
|
133
|
+
self.SandboxTerminate = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxTerminate, client, server_url)
|
134
|
+
self.SandboxWait = modal.client.UnaryUnaryWrapper(grpclib_stub.SandboxWait, client, server_url)
|
135
|
+
self.SecretDelete = modal.client.UnaryUnaryWrapper(grpclib_stub.SecretDelete, client, server_url)
|
136
|
+
self.SecretGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.SecretGetOrCreate, client, server_url)
|
137
|
+
self.SecretList = modal.client.UnaryUnaryWrapper(grpclib_stub.SecretList, client, server_url)
|
138
|
+
self.SharedVolumeDelete = modal.client.UnaryUnaryWrapper(grpclib_stub.SharedVolumeDelete, client, server_url)
|
139
|
+
self.SharedVolumeGetFile = modal.client.UnaryUnaryWrapper(grpclib_stub.SharedVolumeGetFile, client, server_url)
|
140
|
+
self.SharedVolumeGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.SharedVolumeGetOrCreate, client, server_url)
|
141
|
+
self.SharedVolumeHeartbeat = modal.client.UnaryUnaryWrapper(grpclib_stub.SharedVolumeHeartbeat, client, server_url)
|
142
|
+
self.SharedVolumeList = modal.client.UnaryUnaryWrapper(grpclib_stub.SharedVolumeList, client, server_url)
|
143
|
+
self.SharedVolumeListFiles = modal.client.UnaryUnaryWrapper(grpclib_stub.SharedVolumeListFiles, client, server_url)
|
144
|
+
self.SharedVolumeListFilesStream = modal.client.UnaryStreamWrapper(grpclib_stub.SharedVolumeListFilesStream, client, server_url)
|
145
|
+
self.SharedVolumePutFile = modal.client.UnaryUnaryWrapper(grpclib_stub.SharedVolumePutFile, client, server_url)
|
146
|
+
self.SharedVolumeRemoveFile = modal.client.UnaryUnaryWrapper(grpclib_stub.SharedVolumeRemoveFile, client, server_url)
|
147
|
+
self.TaskClusterHello = modal.client.UnaryUnaryWrapper(grpclib_stub.TaskClusterHello, client, server_url)
|
148
|
+
self.TaskCurrentInputs = modal.client.UnaryUnaryWrapper(grpclib_stub.TaskCurrentInputs, client, server_url)
|
149
|
+
self.TaskList = modal.client.UnaryUnaryWrapper(grpclib_stub.TaskList, client, server_url)
|
150
|
+
self.TaskResult = modal.client.UnaryUnaryWrapper(grpclib_stub.TaskResult, client, server_url)
|
151
|
+
self.TokenFlowCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.TokenFlowCreate, client, server_url)
|
152
|
+
self.TokenFlowWait = modal.client.UnaryUnaryWrapper(grpclib_stub.TokenFlowWait, client, server_url)
|
153
|
+
self.TunnelStart = modal.client.UnaryUnaryWrapper(grpclib_stub.TunnelStart, client, server_url)
|
154
|
+
self.TunnelStop = modal.client.UnaryUnaryWrapper(grpclib_stub.TunnelStop, client, server_url)
|
155
|
+
self.VolumeCommit = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeCommit, client, server_url)
|
156
|
+
self.VolumeCopyFiles = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeCopyFiles, client, server_url)
|
157
|
+
self.VolumeDelete = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeDelete, client, server_url)
|
158
|
+
self.VolumeGetFile = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeGetFile, client, server_url)
|
159
|
+
self.VolumeGetFile2 = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeGetFile2, client, server_url)
|
160
|
+
self.VolumeGetOrCreate = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeGetOrCreate, client, server_url)
|
161
|
+
self.VolumeHeartbeat = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeHeartbeat, client, server_url)
|
162
|
+
self.VolumeList = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeList, client, server_url)
|
163
|
+
self.VolumeListFiles = modal.client.UnaryStreamWrapper(grpclib_stub.VolumeListFiles, client, server_url)
|
164
|
+
self.VolumePutFiles = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumePutFiles, client, server_url)
|
165
|
+
self.VolumePutFiles2 = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumePutFiles2, client, server_url)
|
166
|
+
self.VolumeReload = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeReload, client, server_url)
|
167
|
+
self.VolumeRemoveFile = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeRemoveFile, client, server_url)
|
168
|
+
self.VolumeRename = modal.client.UnaryUnaryWrapper(grpclib_stub.VolumeRename, client, server_url)
|
169
|
+
self.WorkspaceNameLookup = modal.client.UnaryUnaryWrapper(grpclib_stub.WorkspaceNameLookup, client, server_url)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|