modal 0.74.14__py3-none-any.whl → 0.74.16__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/_utils/blob_utils.py +138 -6
- modal/cli/volume.py +13 -5
- modal/client.pyi +2 -2
- modal/volume.py +276 -7
- modal/volume.pyi +179 -39
- {modal-0.74.14.dist-info → modal-0.74.16.dist-info}/METADATA +1 -1
- {modal-0.74.14.dist-info → modal-0.74.16.dist-info}/RECORD +19 -19
- modal_proto/api.proto +27 -0
- modal_proto/api_grpc.py +32 -0
- modal_proto/api_pb2.py +813 -773
- modal_proto/api_pb2.pyi +79 -0
- modal_proto/api_pb2_grpc.py +69 -0
- modal_proto/api_pb2_grpc.pyi +28 -0
- modal_proto/modal_api_grpc.py +2 -0
- modal_version/_version_generated.py +1 -1
- {modal-0.74.14.dist-info → modal-0.74.16.dist-info}/WHEEL +0 -0
- {modal-0.74.14.dist-info → modal-0.74.16.dist-info}/entry_points.txt +0 -0
- {modal-0.74.14.dist-info → modal-0.74.16.dist-info}/licenses/LICENSE +0 -0
- {modal-0.74.14.dist-info → modal-0.74.16.dist-info}/top_level.txt +0 -0
modal/volume.pyi
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
import _io
|
1
2
|
import asyncio.locks
|
2
3
|
import collections.abc
|
3
4
|
import enum
|
5
|
+
import google.protobuf.message
|
4
6
|
import modal._object
|
5
7
|
import modal._utils.blob_utils
|
6
8
|
import modal.client
|
@@ -36,6 +38,7 @@ class FileEntry:
|
|
36
38
|
|
37
39
|
class _Volume(modal._object._Object):
|
38
40
|
_lock: typing.Optional[asyncio.locks.Lock]
|
41
|
+
_metadata: typing.Optional[modal_proto.api_pb2.VolumeMetadata]
|
39
42
|
|
40
43
|
async def _get_lock(self): ...
|
41
44
|
@staticmethod
|
@@ -46,6 +49,8 @@ class _Volume(modal._object._Object):
|
|
46
49
|
create_if_missing: bool = False,
|
47
50
|
version: typing.Optional[int] = None,
|
48
51
|
) -> _Volume: ...
|
52
|
+
def _hydrate_metadata(self, metadata: typing.Optional[google.protobuf.message.Message]): ...
|
53
|
+
def _get_metadata(self) -> typing.Optional[google.protobuf.message.Message]: ...
|
49
54
|
@classmethod
|
50
55
|
def ephemeral(
|
51
56
|
cls: type[_Volume],
|
@@ -80,7 +85,7 @@ class _Volume(modal._object._Object):
|
|
80
85
|
async def read_file_into_fileobj(self, path: str, fileobj: typing.IO[bytes]) -> int: ...
|
81
86
|
async def remove_file(self, path: str, recursive: bool = False) -> None: ...
|
82
87
|
async def copy_files(self, src_paths: collections.abc.Sequence[str], dst_path: str) -> None: ...
|
83
|
-
async def batch_upload(self, force: bool = False) ->
|
88
|
+
async def batch_upload(self, force: bool = False) -> _AbstractVolumeUploadContextManager: ...
|
84
89
|
async def _instance_delete(self): ...
|
85
90
|
@staticmethod
|
86
91
|
async def delete(
|
@@ -95,44 +100,11 @@ class _Volume(modal._object._Object):
|
|
95
100
|
environment_name: typing.Optional[str] = None,
|
96
101
|
): ...
|
97
102
|
|
98
|
-
class _VolumeUploadContextManager:
|
99
|
-
_volume_id: str
|
100
|
-
_client: modal.client._Client
|
101
|
-
_force: bool
|
102
|
-
progress_cb: collections.abc.Callable[..., typing.Any]
|
103
|
-
_upload_generators: list[
|
104
|
-
collections.abc.Generator[collections.abc.Callable[[], modal._utils.blob_utils.FileUploadSpec], None, None]
|
105
|
-
]
|
106
|
-
|
107
|
-
def __init__(
|
108
|
-
self,
|
109
|
-
volume_id: str,
|
110
|
-
client: modal.client._Client,
|
111
|
-
progress_cb: typing.Optional[collections.abc.Callable[..., typing.Any]] = None,
|
112
|
-
force: bool = False,
|
113
|
-
): ...
|
114
|
-
async def __aenter__(self): ...
|
115
|
-
async def __aexit__(self, exc_type, exc_val, exc_tb): ...
|
116
|
-
def put_file(
|
117
|
-
self,
|
118
|
-
local_file: typing.Union[pathlib.Path, str, typing.BinaryIO],
|
119
|
-
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
120
|
-
mode: typing.Optional[int] = None,
|
121
|
-
): ...
|
122
|
-
def put_directory(
|
123
|
-
self,
|
124
|
-
local_path: typing.Union[pathlib.Path, str],
|
125
|
-
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
126
|
-
recursive: bool = True,
|
127
|
-
): ...
|
128
|
-
async def _upload_file(
|
129
|
-
self, file_spec: modal._utils.blob_utils.FileUploadSpec
|
130
|
-
) -> modal_proto.api_pb2.MountFile: ...
|
131
|
-
|
132
103
|
SUPERSELF = typing.TypeVar("SUPERSELF", covariant=True)
|
133
104
|
|
134
105
|
class Volume(modal.object.Object):
|
135
106
|
_lock: typing.Optional[asyncio.locks.Lock]
|
107
|
+
_metadata: typing.Optional[modal_proto.api_pb2.VolumeMetadata]
|
136
108
|
|
137
109
|
def __init__(self, *args, **kwargs): ...
|
138
110
|
|
@@ -150,6 +122,8 @@ class Volume(modal.object.Object):
|
|
150
122
|
create_if_missing: bool = False,
|
151
123
|
version: typing.Optional[int] = None,
|
152
124
|
) -> Volume: ...
|
125
|
+
def _hydrate_metadata(self, metadata: typing.Optional[google.protobuf.message.Message]): ...
|
126
|
+
def _get_metadata(self) -> typing.Optional[google.protobuf.message.Message]: ...
|
153
127
|
@classmethod
|
154
128
|
def ephemeral(
|
155
129
|
cls: type[Volume],
|
@@ -256,8 +230,8 @@ class Volume(modal.object.Object):
|
|
256
230
|
copy_files: __copy_files_spec[typing_extensions.Self]
|
257
231
|
|
258
232
|
class __batch_upload_spec(typing_extensions.Protocol[SUPERSELF]):
|
259
|
-
def __call__(self, force: bool = False) ->
|
260
|
-
async def aio(self, force: bool = False) ->
|
233
|
+
def __call__(self, force: bool = False) -> AbstractVolumeUploadContextManager: ...
|
234
|
+
async def aio(self, force: bool = False) -> AbstractVolumeUploadContextManager: ...
|
261
235
|
|
262
236
|
batch_upload: __batch_upload_spec[typing_extensions.Self]
|
263
237
|
|
@@ -303,7 +277,92 @@ class Volume(modal.object.Object):
|
|
303
277
|
|
304
278
|
rename: __rename_spec
|
305
279
|
|
306
|
-
class
|
280
|
+
class _AbstractVolumeUploadContextManager:
|
281
|
+
async def __aenter__(self): ...
|
282
|
+
async def __aexit__(self, exc_type, exc_val, exc_tb): ...
|
283
|
+
def put_file(
|
284
|
+
self,
|
285
|
+
local_file: typing.Union[pathlib.Path, str, typing.BinaryIO, _io.BytesIO],
|
286
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
287
|
+
mode: typing.Optional[int] = None,
|
288
|
+
): ...
|
289
|
+
def put_directory(
|
290
|
+
self,
|
291
|
+
local_path: typing.Union[pathlib.Path, str],
|
292
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
293
|
+
recursive: bool = True,
|
294
|
+
): ...
|
295
|
+
@staticmethod
|
296
|
+
def resolve(
|
297
|
+
version: int,
|
298
|
+
object_id: str,
|
299
|
+
client,
|
300
|
+
progress_cb: typing.Optional[collections.abc.Callable[..., typing.Any]] = None,
|
301
|
+
force: bool = False,
|
302
|
+
) -> _AbstractVolumeUploadContextManager: ...
|
303
|
+
|
304
|
+
class AbstractVolumeUploadContextManager:
|
305
|
+
def __init__(self, /, *args, **kwargs): ...
|
306
|
+
def __enter__(self): ...
|
307
|
+
async def __aenter__(self): ...
|
308
|
+
def __exit__(self, exc_type, exc_val, exc_tb): ...
|
309
|
+
async def __aexit__(self, exc_type, exc_val, exc_tb): ...
|
310
|
+
def put_file(
|
311
|
+
self,
|
312
|
+
local_file: typing.Union[pathlib.Path, str, typing.BinaryIO, _io.BytesIO],
|
313
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
314
|
+
mode: typing.Optional[int] = None,
|
315
|
+
): ...
|
316
|
+
def put_directory(
|
317
|
+
self,
|
318
|
+
local_path: typing.Union[pathlib.Path, str],
|
319
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
320
|
+
recursive: bool = True,
|
321
|
+
): ...
|
322
|
+
@staticmethod
|
323
|
+
def resolve(
|
324
|
+
version: int,
|
325
|
+
object_id: str,
|
326
|
+
client,
|
327
|
+
progress_cb: typing.Optional[collections.abc.Callable[..., typing.Any]] = None,
|
328
|
+
force: bool = False,
|
329
|
+
) -> AbstractVolumeUploadContextManager: ...
|
330
|
+
|
331
|
+
class _VolumeUploadContextManager(_AbstractVolumeUploadContextManager):
|
332
|
+
_volume_id: str
|
333
|
+
_client: modal.client._Client
|
334
|
+
_force: bool
|
335
|
+
progress_cb: collections.abc.Callable[..., typing.Any]
|
336
|
+
_upload_generators: list[
|
337
|
+
collections.abc.Generator[collections.abc.Callable[[], modal._utils.blob_utils.FileUploadSpec], None, None]
|
338
|
+
]
|
339
|
+
|
340
|
+
def __init__(
|
341
|
+
self,
|
342
|
+
volume_id: str,
|
343
|
+
client: modal.client._Client,
|
344
|
+
progress_cb: typing.Optional[collections.abc.Callable[..., typing.Any]] = None,
|
345
|
+
force: bool = False,
|
346
|
+
): ...
|
347
|
+
async def __aenter__(self): ...
|
348
|
+
async def __aexit__(self, exc_type, exc_val, exc_tb): ...
|
349
|
+
def put_file(
|
350
|
+
self,
|
351
|
+
local_file: typing.Union[pathlib.Path, str, typing.BinaryIO, _io.BytesIO],
|
352
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
353
|
+
mode: typing.Optional[int] = None,
|
354
|
+
): ...
|
355
|
+
def put_directory(
|
356
|
+
self,
|
357
|
+
local_path: typing.Union[pathlib.Path, str],
|
358
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
359
|
+
recursive: bool = True,
|
360
|
+
): ...
|
361
|
+
async def _upload_file(
|
362
|
+
self, file_spec: modal._utils.blob_utils.FileUploadSpec
|
363
|
+
) -> modal_proto.api_pb2.MountFile: ...
|
364
|
+
|
365
|
+
class VolumeUploadContextManager(AbstractVolumeUploadContextManager):
|
307
366
|
_volume_id: str
|
308
367
|
_client: modal.client.Client
|
309
368
|
_force: bool
|
@@ -325,7 +384,7 @@ class VolumeUploadContextManager:
|
|
325
384
|
async def __aexit__(self, exc_type, exc_val, exc_tb): ...
|
326
385
|
def put_file(
|
327
386
|
self,
|
328
|
-
local_file: typing.Union[pathlib.Path, str, typing.BinaryIO],
|
387
|
+
local_file: typing.Union[pathlib.Path, str, typing.BinaryIO, _io.BytesIO],
|
329
388
|
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
330
389
|
mode: typing.Optional[int] = None,
|
331
390
|
): ...
|
@@ -342,4 +401,85 @@ class VolumeUploadContextManager:
|
|
342
401
|
|
343
402
|
_upload_file: ___upload_file_spec[typing_extensions.Self]
|
344
403
|
|
404
|
+
class _VolumeUploadContextManager2(_AbstractVolumeUploadContextManager):
|
405
|
+
_volume_id: str
|
406
|
+
_client: modal.client._Client
|
407
|
+
_force: bool
|
408
|
+
_progress_cb: collections.abc.Callable[..., typing.Any]
|
409
|
+
_uploader_generators: list[
|
410
|
+
collections.abc.Generator[
|
411
|
+
collections.abc.Callable[[], typing.Awaitable[modal._utils.blob_utils.FileUploadSpec2]]
|
412
|
+
]
|
413
|
+
]
|
414
|
+
|
415
|
+
def __init__(
|
416
|
+
self,
|
417
|
+
volume_id: str,
|
418
|
+
client: modal.client._Client,
|
419
|
+
progress_cb: typing.Optional[collections.abc.Callable[..., typing.Any]] = None,
|
420
|
+
force: bool = False,
|
421
|
+
): ...
|
422
|
+
async def __aenter__(self): ...
|
423
|
+
async def __aexit__(self, exc_type, exc_val, exc_tb): ...
|
424
|
+
def put_file(
|
425
|
+
self,
|
426
|
+
local_file: typing.Union[pathlib.Path, str, typing.BinaryIO, _io.BytesIO],
|
427
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
428
|
+
mode: typing.Optional[int] = None,
|
429
|
+
): ...
|
430
|
+
def put_directory(
|
431
|
+
self,
|
432
|
+
local_path: typing.Union[pathlib.Path, str],
|
433
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
434
|
+
recursive: bool = True,
|
435
|
+
): ...
|
436
|
+
async def _put_file_specs(self, file_specs: list[modal._utils.blob_utils.FileUploadSpec2]): ...
|
437
|
+
|
438
|
+
class VolumeUploadContextManager2(AbstractVolumeUploadContextManager):
|
439
|
+
_volume_id: str
|
440
|
+
_client: modal.client.Client
|
441
|
+
_force: bool
|
442
|
+
_progress_cb: collections.abc.Callable[..., typing.Any]
|
443
|
+
_uploader_generators: list[
|
444
|
+
collections.abc.Generator[
|
445
|
+
collections.abc.Callable[[], typing.Awaitable[modal._utils.blob_utils.FileUploadSpec2]]
|
446
|
+
]
|
447
|
+
]
|
448
|
+
|
449
|
+
def __init__(
|
450
|
+
self,
|
451
|
+
volume_id: str,
|
452
|
+
client: modal.client.Client,
|
453
|
+
progress_cb: typing.Optional[collections.abc.Callable[..., typing.Any]] = None,
|
454
|
+
force: bool = False,
|
455
|
+
): ...
|
456
|
+
def __enter__(self): ...
|
457
|
+
async def __aenter__(self): ...
|
458
|
+
def __exit__(self, exc_type, exc_val, exc_tb): ...
|
459
|
+
async def __aexit__(self, exc_type, exc_val, exc_tb): ...
|
460
|
+
def put_file(
|
461
|
+
self,
|
462
|
+
local_file: typing.Union[pathlib.Path, str, typing.BinaryIO, _io.BytesIO],
|
463
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
464
|
+
mode: typing.Optional[int] = None,
|
465
|
+
): ...
|
466
|
+
def put_directory(
|
467
|
+
self,
|
468
|
+
local_path: typing.Union[pathlib.Path, str],
|
469
|
+
remote_path: typing.Union[pathlib.PurePosixPath, str],
|
470
|
+
recursive: bool = True,
|
471
|
+
): ...
|
472
|
+
|
473
|
+
class ___put_file_specs_spec(typing_extensions.Protocol[SUPERSELF]):
|
474
|
+
def __call__(self, file_specs: list[modal._utils.blob_utils.FileUploadSpec2]): ...
|
475
|
+
async def aio(self, file_specs: list[modal._utils.blob_utils.FileUploadSpec2]): ...
|
476
|
+
|
477
|
+
_put_file_specs: ___put_file_specs_spec[typing_extensions.Self]
|
478
|
+
|
479
|
+
async def _put_missing_blocks(
|
480
|
+
file_specs: list[modal._utils.blob_utils.FileUploadSpec2],
|
481
|
+
missing_blocks: list,
|
482
|
+
put_responses: dict[bytes, bytes],
|
483
|
+
progress_cb: collections.abc.Callable[..., typing.Any],
|
484
|
+
): ...
|
345
485
|
def _open_files_error_annotation(mount_path: str) -> typing.Optional[str]: ...
|
@@ -22,7 +22,7 @@ modal/app.py,sha256=1GSPMMYRkG17FQwnA_PleK9YQrPQWXlN_4mpZ5VRA4Q,48468
|
|
22
22
|
modal/app.pyi,sha256=bpC9uN_B4d_UtyXVuhGpXC2RM-IcsytS0ndu-GoKrHQ,27276
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
24
24
|
modal/client.py,sha256=U-YKSw0n7J1ZLREt9cbEJCtmHe5YoPKFxl0xlkan2yc,15565
|
25
|
-
modal/client.pyi,sha256=
|
25
|
+
modal/client.pyi,sha256=MXDCG1c77_KDP7R66sApXRKz9ZnhLsZMjSETzBqGDzA,7593
|
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=GvaNl8R5UsH7Vg88WEOyerdjvZEPK7xxi3nqHlyOW_c,33497
|
@@ -78,8 +78,8 @@ modal/snapshot.pyi,sha256=Ypd4NKsjOTnnnqXyTGGLKq5lkocRrUURYjY5Pi67_qA,670
|
|
78
78
|
modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
|
79
79
|
modal/token_flow.py,sha256=APNPQhuqy2avu6IY26U6OiN7erRhpo03Ztt1V60_wts,6776
|
80
80
|
modal/token_flow.pyi,sha256=0XV3d-9CGQL3qjPdw3RgwIFVqqxo8Z-u044_mkgAM3o,2064
|
81
|
-
modal/volume.py,sha256=
|
82
|
-
modal/volume.pyi,sha256=
|
81
|
+
modal/volume.py,sha256=3c5_aJNJtgpsFRZWBjc0jwn8Zs0jo9V6UDmh6ifrbdA,40145
|
82
|
+
modal/volume.pyi,sha256=juOVWGlgz7IeOY4M7jBhbeNRPA9xdGUwvA3AzlZUscQ,17958
|
83
83
|
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
84
84
|
modal/_runtime/asgi.py,sha256=KNarxvZI9z8fnmZl2vbkWTjnoLXs9kqOahkrbsTLkyc,22429
|
85
85
|
modal/_runtime/container_io_manager.py,sha256=0yNO3HTVIM4f338rxJavD8nrRN7KhDpjz1jLux71MRY,43842
|
@@ -92,7 +92,7 @@ modal/_runtime/user_code_imports.py,sha256=kAv37Pl1TmGKduv0Kozum0xNTD42bDLloSIsT
|
|
92
92
|
modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
|
93
93
|
modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
|
94
94
|
modal/_utils/async_utils.py,sha256=b2TJyKY1Hq7df7M-fo3qlFM95mGdo3dCuqRPPcV5hsE,27445
|
95
|
-
modal/_utils/blob_utils.py,sha256=
|
95
|
+
modal/_utils/blob_utils.py,sha256=WhWaSFLcffVDchMyfKys-j0EFVbm9l7rebzeoa7Z2jM,18214
|
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
|
@@ -132,7 +132,7 @@ modal/cli/run.py,sha256=NX2wWwj8HD6XUhnZRF808Qy9eeouv8KnvyOP57HqIXI,23637
|
|
132
132
|
modal/cli/secret.py,sha256=WB_c-LE9-eDqleLpJxsJ9rZw62Eeza8ZFQFR10vNMEk,4197
|
133
133
|
modal/cli/token.py,sha256=mxSgOWakXG6N71hQb1ko61XAR9ZGkTMZD-Txn7gmTac,1924
|
134
134
|
modal/cli/utils.py,sha256=hZmjyzcPjDnQSkLvycZD2LhGdcsfdZshs_rOU78EpvI,3717
|
135
|
-
modal/cli/volume.py,sha256=
|
135
|
+
modal/cli/volume.py,sha256=_PJ5Vn_prkLk_x1Lksx4kZySlKWqIn36T2Edd1-h7Mg,10497
|
136
136
|
modal/cli/programs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
137
137
|
modal/cli/programs/run_jupyter.py,sha256=YVvJYu927A4ji72d6i27CKfyZ_uDWteeittARtJnf7E,2775
|
138
138
|
modal/cli/programs/vscode.py,sha256=kfvhZQ4bJwtVm3MgC1V7AlygZOlKT1a33alr_uwrewA,3473
|
@@ -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.16.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=cvTgltucqYLLIX84QxAwf51Z5Vc2n6cLxS8VcrxNCAo,6401
|
@@ -153,13 +153,13 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
|
|
153
153
|
modal_docs/mdmd/mdmd.py,sha256=Irx49MCCTlBOP4FBdLR--JrpA3-WhsVeriq0LGgsRic,6232
|
154
154
|
modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
|
155
155
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
156
|
-
modal_proto/api.proto,sha256=
|
157
|
-
modal_proto/api_grpc.py,sha256=
|
158
|
-
modal_proto/api_pb2.py,sha256=
|
159
|
-
modal_proto/api_pb2.pyi,sha256=
|
160
|
-
modal_proto/api_pb2_grpc.py,sha256=
|
161
|
-
modal_proto/api_pb2_grpc.pyi,sha256=
|
162
|
-
modal_proto/modal_api_grpc.py,sha256=
|
156
|
+
modal_proto/api.proto,sha256=eD4A8icYJFeunpUiDqra14EmUnosttBtDnrrfdxGeBw,93783
|
157
|
+
modal_proto/api_grpc.py,sha256=LZ_rylBFJ79c5-dYOcyebPjRGrCKNO3j2K7giw9P9-g,113653
|
158
|
+
modal_proto/api_pb2.py,sha256=NEV1ZmTOfpBuCgJ4F6eSZKQkBHXPaHowdJtCs0OCek0,330916
|
159
|
+
modal_proto/api_pb2.pyi,sha256=JP8s6JHac1Cz2kpJaBNk6K_bPoel1j50uJYco6lV7Co,450054
|
160
|
+
modal_proto/api_pb2_grpc.py,sha256=QaApxS-KExaYpQU0kdnoxXPrERZk_b4lRZKY_V4mbq0,245789
|
161
|
+
modal_proto/api_pb2_grpc.pyi,sha256=6obh-mFStQnsXcUHzTI_SXuED9mhwcKnfIt_urSZkJw,57552
|
162
|
+
modal_proto/modal_api_grpc.py,sha256=r7qGJdW69v5pXca2ySm6gqTGYG_pFPWBno_4XGMkbpU,15136
|
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=iw6S4gIMMk_kxXdUThejt0bL01XM4XObW5lyo2KKxMA,149
|
174
|
+
modal-0.74.16.dist-info/METADATA,sha256=SOCGPNZKh82g8EnIIGaDKd-PefSR4ucoYk5mS7JCyoE,2474
|
175
|
+
modal-0.74.16.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
176
|
+
modal-0.74.16.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
177
|
+
modal-0.74.16.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
178
|
+
modal-0.74.16.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
@@ -574,6 +574,27 @@ message Asgi {
|
|
574
574
|
}
|
575
575
|
}
|
576
576
|
|
577
|
+
message AttemptAwaitRequest {
|
578
|
+
string attempt_token = 1;
|
579
|
+
double requested_at = 2; // Used for waypoints.
|
580
|
+
float timeout_secs = 3;
|
581
|
+
}
|
582
|
+
|
583
|
+
message AttemptAwaitResponse {
|
584
|
+
optional FunctionGetOutputsItem output = 1;
|
585
|
+
}
|
586
|
+
|
587
|
+
message AttemptStartRequest {
|
588
|
+
string function_id = 1;
|
589
|
+
string parent_input_id = 2;
|
590
|
+
FunctionPutInputsItem input = 3;
|
591
|
+
}
|
592
|
+
|
593
|
+
message AttemptStartResponse {
|
594
|
+
string attempt_token = 1;
|
595
|
+
FunctionRetryPolicy retry_policy = 2;
|
596
|
+
}
|
597
|
+
|
577
598
|
message AutoscalerSettings {
|
578
599
|
// A collection of user-configurable settings for Function autoscaling
|
579
600
|
// These are used for static configuration and for dynamic autoscaler updates
|
@@ -3085,6 +3106,12 @@ service ModalClient {
|
|
3085
3106
|
rpc AppSetObjects(AppSetObjectsRequest) returns (google.protobuf.Empty);
|
3086
3107
|
rpc AppStop(AppStopRequest) returns (google.protobuf.Empty);
|
3087
3108
|
|
3109
|
+
// Input Plane
|
3110
|
+
// These RPCs are experimental, not deployed to production, and can be changed / removed
|
3111
|
+
// without needing to worry about backwards compatibility.
|
3112
|
+
rpc AttemptAwait(AttemptAwaitRequest) returns (AttemptAwaitResponse);
|
3113
|
+
rpc AttemptStart(AttemptStartRequest) returns (AttemptStartResponse);
|
3114
|
+
|
3088
3115
|
// Blobs
|
3089
3116
|
rpc BlobCreate(BlobCreateRequest) returns (BlobCreateResponse);
|
3090
3117
|
rpc BlobGet(BlobGetRequest) returns (BlobGetResponse);
|
modal_proto/api_grpc.py
CHANGED
@@ -82,6 +82,14 @@ class ModalClientBase(abc.ABC):
|
|
82
82
|
async def AppStop(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AppStopRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
83
83
|
pass
|
84
84
|
|
85
|
+
@abc.abstractmethod
|
86
|
+
async def AttemptAwait(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AttemptAwaitRequest, modal_proto.api_pb2.AttemptAwaitResponse]') -> None:
|
87
|
+
pass
|
88
|
+
|
89
|
+
@abc.abstractmethod
|
90
|
+
async def AttemptStart(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AttemptStartRequest, modal_proto.api_pb2.AttemptStartResponse]') -> None:
|
91
|
+
pass
|
92
|
+
|
85
93
|
@abc.abstractmethod
|
86
94
|
async def BlobCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.BlobCreateRequest, modal_proto.api_pb2.BlobCreateResponse]') -> None:
|
87
95
|
pass
|
@@ -700,6 +708,18 @@ class ModalClientBase(abc.ABC):
|
|
700
708
|
modal_proto.api_pb2.AppStopRequest,
|
701
709
|
google.protobuf.empty_pb2.Empty,
|
702
710
|
),
|
711
|
+
'/modal.client.ModalClient/AttemptAwait': grpclib.const.Handler(
|
712
|
+
self.AttemptAwait,
|
713
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
714
|
+
modal_proto.api_pb2.AttemptAwaitRequest,
|
715
|
+
modal_proto.api_pb2.AttemptAwaitResponse,
|
716
|
+
),
|
717
|
+
'/modal.client.ModalClient/AttemptStart': grpclib.const.Handler(
|
718
|
+
self.AttemptStart,
|
719
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
720
|
+
modal_proto.api_pb2.AttemptStartRequest,
|
721
|
+
modal_proto.api_pb2.AttemptStartResponse,
|
722
|
+
),
|
703
723
|
'/modal.client.ModalClient/BlobCreate': grpclib.const.Handler(
|
704
724
|
self.BlobCreate,
|
705
725
|
grpclib.const.Cardinality.UNARY_UNARY,
|
@@ -1582,6 +1602,18 @@ class ModalClientStub:
|
|
1582
1602
|
modal_proto.api_pb2.AppStopRequest,
|
1583
1603
|
google.protobuf.empty_pb2.Empty,
|
1584
1604
|
)
|
1605
|
+
self.AttemptAwait = grpclib.client.UnaryUnaryMethod(
|
1606
|
+
channel,
|
1607
|
+
'/modal.client.ModalClient/AttemptAwait',
|
1608
|
+
modal_proto.api_pb2.AttemptAwaitRequest,
|
1609
|
+
modal_proto.api_pb2.AttemptAwaitResponse,
|
1610
|
+
)
|
1611
|
+
self.AttemptStart = grpclib.client.UnaryUnaryMethod(
|
1612
|
+
channel,
|
1613
|
+
'/modal.client.ModalClient/AttemptStart',
|
1614
|
+
modal_proto.api_pb2.AttemptStartRequest,
|
1615
|
+
modal_proto.api_pb2.AttemptStartResponse,
|
1616
|
+
)
|
1585
1617
|
self.BlobCreate = grpclib.client.UnaryUnaryMethod(
|
1586
1618
|
channel,
|
1587
1619
|
'/modal.client.ModalClient/BlobCreate',
|