modal 1.2.1.dev8__py3-none-any.whl → 1.2.2.dev19__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/_clustered_functions.py +1 -3
- modal/_container_entrypoint.py +4 -1
- modal/_functions.py +33 -49
- modal/_grpc_client.py +148 -0
- modal/_output.py +3 -4
- modal/_partial_function.py +22 -2
- modal/_runtime/container_io_manager.py +21 -22
- modal/_utils/async_utils.py +12 -3
- modal/_utils/auth_token_manager.py +1 -4
- modal/_utils/blob_utils.py +3 -4
- modal/_utils/function_utils.py +4 -0
- modal/_utils/grpc_utils.py +80 -51
- modal/_utils/mount_utils.py +26 -1
- modal/_utils/task_command_router_client.py +536 -0
- modal/app.py +7 -5
- modal/cli/cluster.py +4 -2
- modal/cli/config.py +3 -1
- modal/cli/container.py +5 -4
- modal/cli/entry_point.py +1 -0
- modal/cli/launch.py +1 -2
- modal/cli/network_file_system.py +1 -4
- modal/cli/queues.py +1 -2
- modal/cli/secret.py +1 -2
- modal/client.py +5 -115
- modal/client.pyi +2 -91
- modal/cls.py +1 -2
- modal/config.py +3 -1
- modal/container_process.py +287 -11
- modal/container_process.pyi +95 -32
- modal/dict.py +12 -12
- modal/environments.py +1 -2
- modal/exception.py +4 -0
- modal/experimental/__init__.py +2 -3
- modal/experimental/flash.py +27 -57
- modal/experimental/flash.pyi +6 -20
- modal/file_io.py +13 -27
- modal/functions.pyi +6 -6
- modal/image.py +24 -3
- modal/image.pyi +4 -0
- modal/io_streams.py +433 -127
- modal/io_streams.pyi +236 -171
- modal/mount.py +4 -4
- modal/network_file_system.py +5 -6
- modal/parallel_map.py +29 -31
- modal/parallel_map.pyi +3 -9
- modal/partial_function.pyi +4 -1
- modal/queue.py +17 -18
- modal/runner.py +12 -11
- modal/sandbox.py +148 -42
- modal/sandbox.pyi +139 -0
- modal/secret.py +4 -5
- modal/snapshot.py +1 -4
- modal/token_flow.py +1 -1
- modal/volume.py +22 -22
- {modal-1.2.1.dev8.dist-info → modal-1.2.2.dev19.dist-info}/METADATA +1 -1
- {modal-1.2.1.dev8.dist-info → modal-1.2.2.dev19.dist-info}/RECORD +70 -68
- modal_proto/api.proto +2 -24
- modal_proto/api_grpc.py +0 -32
- modal_proto/api_pb2.py +838 -878
- modal_proto/api_pb2.pyi +8 -70
- modal_proto/api_pb2_grpc.py +0 -67
- modal_proto/api_pb2_grpc.pyi +0 -22
- modal_proto/modal_api_grpc.py +175 -177
- modal_proto/sandbox_router.proto +0 -4
- modal_proto/sandbox_router_pb2.pyi +0 -4
- modal_version/__init__.py +1 -1
- {modal-1.2.1.dev8.dist-info → modal-1.2.2.dev19.dist-info}/WHEEL +0 -0
- {modal-1.2.1.dev8.dist-info → modal-1.2.2.dev19.dist-info}/entry_points.txt +0 -0
- {modal-1.2.1.dev8.dist-info → modal-1.2.2.dev19.dist-info}/licenses/LICENSE +0 -0
- {modal-1.2.1.dev8.dist-info → modal-1.2.2.dev19.dist-info}/top_level.txt +0 -0
modal/volume.py
CHANGED
|
@@ -59,7 +59,7 @@ from ._utils.blob_utils import (
|
|
|
59
59
|
get_file_upload_spec_from_path,
|
|
60
60
|
)
|
|
61
61
|
from ._utils.deprecation import deprecation_warning, warn_if_passing_namespace
|
|
62
|
-
from ._utils.grpc_utils import
|
|
62
|
+
from ._utils.grpc_utils import Retry
|
|
63
63
|
from ._utils.http_utils import ClientSessionRegistry
|
|
64
64
|
from ._utils.name_utils import check_object_name
|
|
65
65
|
from ._utils.time_utils import as_timestamp, timestamp_to_localized_dt
|
|
@@ -170,7 +170,7 @@ class _VolumeManager:
|
|
|
170
170
|
version=version,
|
|
171
171
|
)
|
|
172
172
|
try:
|
|
173
|
-
await
|
|
173
|
+
await client.stub.VolumeGetOrCreate(req)
|
|
174
174
|
except GRPCError as exc:
|
|
175
175
|
if exc.status == Status.ALREADY_EXISTS and not allow_existing:
|
|
176
176
|
raise AlreadyExistsError(exc.message)
|
|
@@ -222,7 +222,7 @@ class _VolumeManager:
|
|
|
222
222
|
req = api_pb2.VolumeListRequest(
|
|
223
223
|
environment_name=_get_environment_name(environment_name), pagination=pagination
|
|
224
224
|
)
|
|
225
|
-
resp = await
|
|
225
|
+
resp = await client.stub.VolumeList(req)
|
|
226
226
|
items.extend(resp.items)
|
|
227
227
|
finished = (len(resp.items) < max_page_size) or (max_objects is not None and len(items) >= max_objects)
|
|
228
228
|
return finished
|
|
@@ -280,7 +280,7 @@ class _VolumeManager:
|
|
|
280
280
|
raise
|
|
281
281
|
else:
|
|
282
282
|
req = api_pb2.VolumeDeleteRequest(volume_id=obj.object_id)
|
|
283
|
-
await
|
|
283
|
+
await obj._client.stub.VolumeDelete(req)
|
|
284
284
|
|
|
285
285
|
|
|
286
286
|
VolumeManager = synchronize_api(_VolumeManager)
|
|
@@ -519,7 +519,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
519
519
|
object_creation_type=api_pb2.OBJECT_CREATION_TYPE_CREATE_FAIL_IF_EXISTS,
|
|
520
520
|
version=version,
|
|
521
521
|
)
|
|
522
|
-
resp = await
|
|
522
|
+
resp = await client.stub.VolumeGetOrCreate(request)
|
|
523
523
|
return resp.volume_id
|
|
524
524
|
|
|
525
525
|
@live_method
|
|
@@ -539,7 +539,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
539
539
|
async def _do_reload(self, lock=True):
|
|
540
540
|
async with (await self._get_lock()) if lock else asyncnullcontext():
|
|
541
541
|
req = api_pb2.VolumeReloadRequest(volume_id=self.object_id)
|
|
542
|
-
_ = await
|
|
542
|
+
_ = await self._client.stub.VolumeReload(req)
|
|
543
543
|
|
|
544
544
|
@live_method
|
|
545
545
|
async def commit(self):
|
|
@@ -552,7 +552,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
552
552
|
req = api_pb2.VolumeCommitRequest(volume_id=self.object_id)
|
|
553
553
|
try:
|
|
554
554
|
# TODO(gongy): only apply indefinite retries on 504 status.
|
|
555
|
-
resp = await
|
|
555
|
+
resp = await self._client.stub.VolumeCommit(req, retry=Retry(max_retries=90))
|
|
556
556
|
if not resp.skip_reload:
|
|
557
557
|
# Reload changes on successful commit.
|
|
558
558
|
await self._do_reload(lock=False)
|
|
@@ -648,13 +648,14 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
648
648
|
req = api_pb2.VolumeGetFile2Request(volume_id=self.object_id, path=path)
|
|
649
649
|
|
|
650
650
|
try:
|
|
651
|
-
response = await
|
|
651
|
+
response = await self._client.stub.VolumeGetFile2(req)
|
|
652
652
|
except modal.exception.NotFoundError as exc:
|
|
653
653
|
raise FileNotFoundError(exc.args[0])
|
|
654
654
|
|
|
655
655
|
@retry(n_attempts=5, base_delay=0.1, timeout=None)
|
|
656
656
|
async def read_block(block_url: str) -> bytes:
|
|
657
657
|
async with ClientSessionRegistry.get_session().get(block_url) as get_response:
|
|
658
|
+
get_response.raise_for_status()
|
|
658
659
|
return await get_response.content.read()
|
|
659
660
|
|
|
660
661
|
async def iter_urls() -> AsyncGenerator[str]:
|
|
@@ -700,7 +701,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
700
701
|
req = api_pb2.VolumeGetFile2Request(volume_id=self.object_id, path=path)
|
|
701
702
|
|
|
702
703
|
try:
|
|
703
|
-
response = await
|
|
704
|
+
response = await self._client.stub.VolumeGetFile2(req)
|
|
704
705
|
except modal.exception.NotFoundError as exc:
|
|
705
706
|
raise FileNotFoundError(exc.args[0])
|
|
706
707
|
|
|
@@ -716,6 +717,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
716
717
|
num_bytes_written = 0
|
|
717
718
|
|
|
718
719
|
async with download_semaphore, ClientSessionRegistry.get_session().get(url) as get_response:
|
|
720
|
+
get_response.raise_for_status()
|
|
719
721
|
async for chunk in get_response.content.iter_any():
|
|
720
722
|
num_chunk_bytes_written = 0
|
|
721
723
|
|
|
@@ -749,10 +751,10 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
749
751
|
try:
|
|
750
752
|
if self._is_v1:
|
|
751
753
|
req = api_pb2.VolumeRemoveFileRequest(volume_id=self.object_id, path=path, recursive=recursive)
|
|
752
|
-
await
|
|
754
|
+
await self._client.stub.VolumeRemoveFile(req)
|
|
753
755
|
else:
|
|
754
756
|
req = api_pb2.VolumeRemoveFile2Request(volume_id=self.object_id, path=path, recursive=recursive)
|
|
755
|
-
await
|
|
757
|
+
await self._client.stub.VolumeRemoveFile2(req)
|
|
756
758
|
except modal.exception.NotFoundError as exc:
|
|
757
759
|
raise FileNotFoundError(exc.args[0])
|
|
758
760
|
|
|
@@ -791,12 +793,12 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
791
793
|
request = api_pb2.VolumeCopyFilesRequest(
|
|
792
794
|
volume_id=self.object_id, src_paths=src_paths, dst_path=dst_path, recursive=recursive
|
|
793
795
|
)
|
|
794
|
-
await
|
|
796
|
+
await self._client.stub.VolumeCopyFiles(request, retry=Retry(base_delay=1))
|
|
795
797
|
else:
|
|
796
798
|
request = api_pb2.VolumeCopyFiles2Request(
|
|
797
799
|
volume_id=self.object_id, src_paths=src_paths, dst_path=dst_path, recursive=recursive
|
|
798
800
|
)
|
|
799
|
-
await
|
|
801
|
+
await self._client.stub.VolumeCopyFiles2(request, retry=Retry(base_delay=1))
|
|
800
802
|
|
|
801
803
|
@live_method
|
|
802
804
|
async def batch_upload(self, force: bool = False) -> "_AbstractVolumeUploadContextManager":
|
|
@@ -826,9 +828,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
826
828
|
|
|
827
829
|
@live_method
|
|
828
830
|
async def _instance_delete(self):
|
|
829
|
-
await
|
|
830
|
-
self._client.stub.VolumeDelete, api_pb2.VolumeDeleteRequest(volume_id=self.object_id)
|
|
831
|
-
)
|
|
831
|
+
await self._client.stub.VolumeDelete(api_pb2.VolumeDeleteRequest(volume_id=self.object_id))
|
|
832
832
|
|
|
833
833
|
@staticmethod
|
|
834
834
|
async def delete(name: str, client: Optional[_Client] = None, environment_name: Optional[str] = None):
|
|
@@ -857,7 +857,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
|
857
857
|
):
|
|
858
858
|
obj = await _Volume.from_name(old_name, environment_name=environment_name).hydrate(client)
|
|
859
859
|
req = api_pb2.VolumeRenameRequest(volume_id=obj.object_id, name=new_name)
|
|
860
|
-
await
|
|
860
|
+
await obj._client.stub.VolumeRename(req)
|
|
861
861
|
|
|
862
862
|
|
|
863
863
|
Volume = synchronize_api(_Volume)
|
|
@@ -958,7 +958,7 @@ class _VolumeUploadContextManager(_AbstractVolumeUploadContextManager):
|
|
|
958
958
|
disallow_overwrite_existing_files=not self._force,
|
|
959
959
|
)
|
|
960
960
|
try:
|
|
961
|
-
await
|
|
961
|
+
await self._client.stub.VolumePutFiles(request, retry=Retry(base_delay=1))
|
|
962
962
|
except GRPCError as exc:
|
|
963
963
|
raise FileExistsError(exc.message) if exc.status == Status.ALREADY_EXISTS else exc
|
|
964
964
|
|
|
@@ -1018,7 +1018,7 @@ class _VolumeUploadContextManager(_AbstractVolumeUploadContextManager):
|
|
|
1018
1018
|
remote_filename = file_spec.mount_filename
|
|
1019
1019
|
progress_task_id = self._progress_cb(name=remote_filename, size=file_spec.size)
|
|
1020
1020
|
request = api_pb2.MountPutFileRequest(sha256_hex=file_spec.sha256_hex)
|
|
1021
|
-
response = await
|
|
1021
|
+
response = await self._client.stub.MountPutFile(request, retry=Retry(base_delay=1))
|
|
1022
1022
|
|
|
1023
1023
|
start_time = time.monotonic()
|
|
1024
1024
|
if not response.exists:
|
|
@@ -1042,7 +1042,7 @@ class _VolumeUploadContextManager(_AbstractVolumeUploadContextManager):
|
|
|
1042
1042
|
self._progress_cb(task_id=progress_task_id, complete=True)
|
|
1043
1043
|
|
|
1044
1044
|
while (time.monotonic() - start_time) < VOLUME_PUT_FILE_CLIENT_TIMEOUT:
|
|
1045
|
-
response = await
|
|
1045
|
+
response = await self._client.stub.MountPutFile(request2, retry=Retry(base_delay=1))
|
|
1046
1046
|
if response.exists:
|
|
1047
1047
|
break
|
|
1048
1048
|
|
|
@@ -1202,7 +1202,7 @@ class _VolumeUploadContextManager2(_AbstractVolumeUploadContextManager):
|
|
|
1202
1202
|
)
|
|
1203
1203
|
|
|
1204
1204
|
try:
|
|
1205
|
-
response = await
|
|
1205
|
+
response = await self._client.stub.VolumePutFiles2(request, retry=Retry(base_delay=1))
|
|
1206
1206
|
except GRPCError as exc:
|
|
1207
1207
|
raise FileExistsError(exc.message) if exc.status == Status.ALREADY_EXISTS else exc
|
|
1208
1208
|
|
|
@@ -1263,7 +1263,7 @@ async def _put_missing_blocks(
|
|
|
1263
1263
|
file_progress.pending_blocks.add(missing_block.block_index)
|
|
1264
1264
|
task_progress_cb = functools.partial(progress_cb, task_id=file_progress.task_id)
|
|
1265
1265
|
|
|
1266
|
-
@retry(n_attempts=
|
|
1266
|
+
@retry(n_attempts=11, base_delay=0.5, timeout=None)
|
|
1267
1267
|
async def put_missing_block_attempt(payload: BytesIOSegmentPayload) -> bytes:
|
|
1268
1268
|
with payload.reset_on_error(subtract_progress=True):
|
|
1269
1269
|
async with ClientSessionRegistry.get_session().put(
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
modal/__init__.py,sha256=WMaRW-2IJRGA9ioNAaBhJYuyLvu-GS01L8wQD90fKBs,2682
|
|
2
2
|
modal/__main__.py,sha256=45H-GtwzaDfN-1nP4_HYvzN3s7AG_HXR4-ynrsjO_OI,2803
|
|
3
3
|
modal/_billing.py,sha256=C1jUN9f_1WqozSZAt9EOk1nImXUdiLrgFeeAu3R23cI,3012
|
|
4
|
-
modal/_clustered_functions.py,sha256=
|
|
4
|
+
modal/_clustered_functions.py,sha256=7amiOxErtlciWeBJBL2KvaxerUomJpTAJ3qElflFHQA,2884
|
|
5
5
|
modal/_clustered_functions.pyi,sha256=JmYwAGOLEnD5AF-gYF9O5tu-SgGjeoJz-X1j48b1Ijg,1157
|
|
6
|
-
modal/_container_entrypoint.py,sha256=
|
|
7
|
-
modal/_functions.py,sha256=
|
|
6
|
+
modal/_container_entrypoint.py,sha256=zYk5mC8_IMx4kWnyFMRHKOrFRLBWchy6x-py3M8FYEw,28084
|
|
7
|
+
modal/_functions.py,sha256=QCEm1_6l0WSGlF4ICyH580wd8VyFinQRybQVxUXESuM,90416
|
|
8
|
+
modal/_grpc_client.py,sha256=xnrubCsqK8JlbVMLI3_iHuDLmV2rNZjEAQeCDAZl-eE,5558
|
|
8
9
|
modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
|
|
9
10
|
modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
|
|
10
11
|
modal/_object.py,sha256=gwsLdXb-Ecd8nH8LVCo8oVZPzzdyo9BrN1DjgQmsSuM,11967
|
|
11
|
-
modal/_output.py,sha256=
|
|
12
|
-
modal/_partial_function.py,sha256=
|
|
12
|
+
modal/_output.py,sha256=eikFqD82RA8uwF-LLVzO-A9EtmoVLnqg0X5nZE5hdLA,26852
|
|
13
|
+
modal/_partial_function.py,sha256=t0yOVrYrDUdCJt7eVNyBS-atnUtjO56izKB3rDuN17Q,38573
|
|
13
14
|
modal/_pty.py,sha256=E58MQ8d5-wkbMatRKpQR-G9FdbCRcZGiZxOpGy__VuY,1481
|
|
14
15
|
modal/_resolver.py,sha256=2RWvm34cNSnbv1v7izJMNZgfvpLDD6LzaBlr0lIrLnY,7364
|
|
15
16
|
modal/_resources.py,sha256=NMAp0GCLutiZI4GuKSIVnRHVlstoD3hNGUabjTUtzf4,1794
|
|
@@ -19,72 +20,72 @@ modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
|
|
|
19
20
|
modal/_tunnel.pyi,sha256=rvC7USR2BcKkbZIeCJXwf7-UfGE-LPLjKsGNiK7Lxa4,13366
|
|
20
21
|
modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
|
|
21
22
|
modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
|
|
22
|
-
modal/app.py,sha256=
|
|
23
|
+
modal/app.py,sha256=mS2k4d6yC3zDxm2L3U1gK5O70-epWfVRdo72q_9m6eA,54667
|
|
23
24
|
modal/app.pyi,sha256=AUV5Rp8qQrZJTP2waoKHFY7rYgsXNMYibMcCAQKuSeo,50544
|
|
24
25
|
modal/billing.py,sha256=zmQ3bcCJlwa4KD1IA_QgdWpm1pn13c-7qfy79iEauYI,195
|
|
25
26
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
|
26
|
-
modal/client.py,sha256=
|
|
27
|
-
modal/client.pyi,sha256=
|
|
27
|
+
modal/client.py,sha256=tPzihC7R9WtP56k6dyPKi5GLGdLEHdMA6YUj9Ry5G8o,14409
|
|
28
|
+
modal/client.pyi,sha256=LF-tVjsKrUjYDRLZQIQVfP7wsOo-ktfCsWbTj4LGZ9g,13094
|
|
28
29
|
modal/cloud_bucket_mount.py,sha256=I2GRXYhOWLIz2kJZjXu75jAm9EJkBNcutGc6jR2ReUw,5928
|
|
29
30
|
modal/cloud_bucket_mount.pyi,sha256=VuUOipMIHqFXMkD-3g2bsoqpSxV5qswlFHDOqPQzYAo,7405
|
|
30
|
-
modal/cls.py,sha256=
|
|
31
|
+
modal/cls.py,sha256=1kxGkqXgAJS6anuWKdbqWx_n0rbXqyFuYJIROeBxNyw,40306
|
|
31
32
|
modal/cls.pyi,sha256=jJsDPFoqzM4ht-V-e-xEJKJ5TINLF0fYtoBm_UeAW5Y,27281
|
|
32
|
-
modal/config.py,sha256=
|
|
33
|
-
modal/container_process.py,sha256=
|
|
34
|
-
modal/container_process.pyi,sha256=
|
|
35
|
-
modal/dict.py,sha256=
|
|
33
|
+
modal/config.py,sha256=xUbw_ETdR7S3guj4dyzqdd9EYwRRht3aGYQRogZbi1o,13050
|
|
34
|
+
modal/container_process.py,sha256=KG2ZkFOWe2KN1b8dFSBLBoW5pWoRxBzJ20MLhDTicJs,16749
|
|
35
|
+
modal/container_process.pyi,sha256=xMKr-VbQsydS8AbhAys9UTpHHnH2QRyINpPtPG7NwmI,8373
|
|
36
|
+
modal/dict.py,sha256=qHu6ZGLwgYWfQig1awWaOeza9EV5g9EexNscq2tGaEs,21317
|
|
36
37
|
modal/dict.pyi,sha256=deOiwuwZtwXqedC3h19SwoQIWc4mUnDTBM5XkONt48Y,31712
|
|
37
|
-
modal/environments.py,sha256=
|
|
38
|
+
modal/environments.py,sha256=v_TGina35BlkjG54e3FrEx6zEIKE7w21QoFTNm6u0Ys,5950
|
|
38
39
|
modal/environments.pyi,sha256=YwI2zClQ5vZHqqKaBJYX2eK4QHRlUuqRlF0lM1JrMOs,3673
|
|
39
|
-
modal/exception.py,sha256=
|
|
40
|
-
modal/file_io.py,sha256=
|
|
40
|
+
modal/exception.py,sha256=HrvKRJO4EMwkoqa77PBeZyrGIgEZ-yqLIA10cqZndqI,5768
|
|
41
|
+
modal/file_io.py,sha256=Whs3QSl3pQbSoLzSRIIWfK4XyP-kwgyZmWgx3bhJ9u0,20933
|
|
41
42
|
modal/file_io.pyi,sha256=xtO6Glf_BFwDE7QiQQo24QqcMf_Vv-iz7WojcGVlLBU,15932
|
|
42
43
|
modal/file_pattern_matcher.py,sha256=A_Kdkej6q7YQyhM_2-BvpFmPqJ0oHb54B6yf9VqvPVE,8116
|
|
43
44
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
|
44
|
-
modal/functions.pyi,sha256=
|
|
45
|
+
modal/functions.pyi,sha256=Z6VuukLrjASAgf0kV9I6c09WvP_b2gCujX6f9j2bBaw,37988
|
|
45
46
|
modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
|
|
46
|
-
modal/image.py,sha256=
|
|
47
|
-
modal/image.pyi,sha256=
|
|
48
|
-
modal/io_streams.py,sha256=
|
|
49
|
-
modal/io_streams.pyi,sha256=
|
|
50
|
-
modal/mount.py,sha256=
|
|
47
|
+
modal/image.py,sha256=SW2QJNZCXpPwLwK5UAjRJexWr1-pUJR6AJJ5OCF7rQI,108048
|
|
48
|
+
modal/image.pyi,sha256=NQ82YbSF_kadH0r4UqBDgHPDHZo5_yD8qNEFJgUzJZM,77956
|
|
49
|
+
modal/io_streams.py,sha256=Lc-id7HvW-ffJKSoN1xQxf37pHARNkr4re2HKyGpKy4,29316
|
|
50
|
+
modal/io_streams.pyi,sha256=P9kvQhXmh9fxQNGI2DtuFnnZ_9MJQ4ZiqOpDP2-QWUU,16746
|
|
51
|
+
modal/mount.py,sha256=UPel5L2JfeOgI96718SSrjJ0dhMOQgnFDJrzpzsZ4A8,33111
|
|
51
52
|
modal/mount.pyi,sha256=MD_zV2M7eCWxbOpQRjU60aHevN-bmbiywaCX82QoFlw,15380
|
|
52
|
-
modal/network_file_system.py,sha256=
|
|
53
|
+
modal/network_file_system.py,sha256=mN26L8Q3jVZjmxSWNKbQHGAIDoZuP1LopVMt5ODqZ1o,13335
|
|
53
54
|
modal/network_file_system.pyi,sha256=zF4PIaiuIaC4OLQ0YCj1e2O3uepW9-2Jo1T3blc7RVg,15365
|
|
54
55
|
modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
|
|
55
56
|
modal/object.pyi,sha256=qlyVVMezW3XgJe_iqhtzWRSki3Nuk-KrpXc1g-r8ujA,6944
|
|
56
57
|
modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
|
|
57
|
-
modal/parallel_map.py,sha256=
|
|
58
|
-
modal/parallel_map.pyi,sha256=
|
|
58
|
+
modal/parallel_map.py,sha256=VAfhkgCKFXtpba01Dvq7kc-xg5nlP-AdvmJW0LoyfD8,68670
|
|
59
|
+
modal/parallel_map.pyi,sha256=3sbWnV2ijA2KCh4BV8oNUJMd7ryemJu7NvwsqyUlvho,15588
|
|
59
60
|
modal/partial_function.py,sha256=aIdlGfTjjgqY6Fpr-biCjvRU9W542_S5N2xkNN_rYGM,1127
|
|
60
|
-
modal/partial_function.pyi,sha256=
|
|
61
|
+
modal/partial_function.pyi,sha256=M7aHV6sbCc7R28D4Tk6Agr39m6R0emrXvm8IfWflt1o,14023
|
|
61
62
|
modal/proxy.py,sha256=CQydu_NPDgApN2GLdd7rrcg8PM-pXyFdVYcTaGMBRCQ,1491
|
|
62
63
|
modal/proxy.pyi,sha256=yWGWwADCRGrC2w81B7671UTH4Uv3HMZKy5vVqlJUZoA,1417
|
|
63
64
|
modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
64
|
-
modal/queue.py,sha256=
|
|
65
|
+
modal/queue.py,sha256=3IyfLRp_G_sg4-Wr7cplnt3KSjJkL-H3U0asfTacd7I,25536
|
|
65
66
|
modal/queue.pyi,sha256=mFu7GFFVFNLU9VZshnfekEsb-ABgpjdhJ07KXHvdv3A,37256
|
|
66
67
|
modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
|
|
67
|
-
modal/runner.py,sha256=
|
|
68
|
+
modal/runner.py,sha256=GP-8dU5J8ZSAVk1U8UtZ0KCxfq3i8Y49hX6BzVJwyaU,25053
|
|
68
69
|
modal/runner.pyi,sha256=DV3Z7h0owgRyOu9W5KU5O3UbRftX99KGrZQId91fpsU,8671
|
|
69
70
|
modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
|
|
70
|
-
modal/sandbox.py,sha256=
|
|
71
|
-
modal/sandbox.pyi,sha256=
|
|
71
|
+
modal/sandbox.py,sha256=NbMS4iLQvz0moFZEcndXJ1OwpwVzXJDnoyMVugNrb3U,50295
|
|
72
|
+
modal/sandbox.pyi,sha256=VqGO59NZX5fSU1tnA_g0pAd7eq6GvV6lNtC8TH9Xlo8,57478
|
|
72
73
|
modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
|
|
73
74
|
modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
|
|
74
|
-
modal/secret.py,sha256=
|
|
75
|
+
modal/secret.py,sha256=ZSI7OAT8YXWQn4gmidH1bwjh8h7z68jxv0of46xiam8,18173
|
|
75
76
|
modal/secret.pyi,sha256=2dj8FPBlAJodp_yvwwzV0_Q1VevMNpKxri0rDvlIn4U,20493
|
|
76
77
|
modal/serving.py,sha256=3I3WBeVbzZY258u9PXBCW_dZBgypq3OhwBuTVvlgubE,4423
|
|
77
78
|
modal/serving.pyi,sha256=YfixTaWikyYpwhnNxCHMZnDDQiPmV1xJ87QF91U_WGU,1924
|
|
78
|
-
modal/snapshot.py,sha256=
|
|
79
|
+
modal/snapshot.py,sha256=DRKSQYwwUonh5Yt3lYUi1P3caJKc-gz4ST2ER7aZlrU,1347
|
|
79
80
|
modal/snapshot.pyi,sha256=0q83hlmWxAhDu8xwZyL5VmYh0i8Tigf7S60or2k30L8,1682
|
|
80
81
|
modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
|
|
81
|
-
modal/token_flow.py,sha256=
|
|
82
|
+
modal/token_flow.py,sha256=tLvBE9OT50p8AnYYh4b5MvBMQc1vV1-6C0GsmyFDfxw,7626
|
|
82
83
|
modal/token_flow.pyi,sha256=eirYjyqbRiT3GCKMIPHJPpkvBTu8WxDKqSHehWaJI_4,2533
|
|
83
|
-
modal/volume.py,sha256=
|
|
84
|
+
modal/volume.py,sha256=Fpx6J3OxkIsaVvzzQdt0EdoJjXjP4ahgV8_Piw22r20,51984
|
|
84
85
|
modal/volume.pyi,sha256=WZGdwB51qvH5E7d6qS7sNCsscyuHsKUHFyyiZaQyvw8,53212
|
|
85
86
|
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
|
86
87
|
modal/_runtime/asgi.py,sha256=AOcduIlijmlxhXVWo7AIUhigo-bqm6nDkHj4Q4JLy6o,22607
|
|
87
|
-
modal/_runtime/container_io_manager.py,sha256=
|
|
88
|
+
modal/_runtime/container_io_manager.py,sha256=MGURW9xa89j6GXzLlZDe9onMvfb-E69HrTyJUPaVXjw,52051
|
|
88
89
|
modal/_runtime/container_io_manager.pyi,sha256=GDNLirCcPMRc6gckInYKmGmJZY3LNcgUVXKftt9P9jI,23493
|
|
89
90
|
modal/_runtime/execution_context.py,sha256=AYrNQRHHXEqX2MwMf8zxelKZnYf25RE_B-NRLWf93n8,3521
|
|
90
91
|
modal/_runtime/execution_context.pyi,sha256=FVzakehz72ndL-ufe8-EC7TM4IHO_MEBcAdgWuU4W9k,2426
|
|
@@ -93,26 +94,27 @@ modal/_runtime/telemetry.py,sha256=T1RoAGyjBDr1swiM6pPsGRSITm7LI5FDK18oNXxY08U,5
|
|
|
93
94
|
modal/_runtime/user_code_imports.py,sha256=1MlOgw810aj0MeDvFPvHBIz-aHd7jUX6dwRfIcM3-KE,16498
|
|
94
95
|
modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
|
|
95
96
|
modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
|
|
96
|
-
modal/_utils/async_utils.py,sha256=
|
|
97
|
-
modal/_utils/auth_token_manager.py,sha256=
|
|
98
|
-
modal/_utils/blob_utils.py,sha256=
|
|
97
|
+
modal/_utils/async_utils.py,sha256=j2DEgAvYrp89tni0_oS-YotT8npvTlY97DExfiUHG4E,30057
|
|
98
|
+
modal/_utils/auth_token_manager.py,sha256=QsDokl1c1dN9m6Z9N-Se-8cY3laphByjJtNdRXUTieI,5151
|
|
99
|
+
modal/_utils/blob_utils.py,sha256=NoAWDqYQsqAjievWmH5mCFSXA6XxQStDt9otT-Nh7_g,22755
|
|
99
100
|
modal/_utils/bytes_io_segment_payload.py,sha256=vaXPq8b52-x6G2hwE7SrjS58pg_aRm7gV3bn3yjmTzQ,4261
|
|
100
101
|
modal/_utils/deprecation.py,sha256=-Bgg7jZdcJU8lROy18YyVnQYbM8hue-hVmwJqlWAGH0,5504
|
|
101
102
|
modal/_utils/docker_utils.py,sha256=h1uETghR40mp_y3fSWuZAfbIASH1HMzuphJHghAL6DU,3722
|
|
102
|
-
modal/_utils/function_utils.py,sha256=
|
|
103
|
+
modal/_utils/function_utils.py,sha256=B5dAhcOM6SK3H-iwbrJjZ7XbjpweFd3YfmuFS26R8fQ,28671
|
|
103
104
|
modal/_utils/git_utils.py,sha256=qtUU6JAttF55ZxYq51y55OR58B0tDPZsZWK5dJe6W5g,3182
|
|
104
105
|
modal/_utils/grpc_testing.py,sha256=H1zHqthv19eGPJz2HKXDyWXWGSqO4BRsxah3L5Xaa8A,8619
|
|
105
|
-
modal/_utils/grpc_utils.py,sha256=
|
|
106
|
+
modal/_utils/grpc_utils.py,sha256=9KOQ3JW6DEmsi0lqve0YkTMU23u9AmWIyvLWJVA3TKc,11515
|
|
106
107
|
modal/_utils/hash_utils.py,sha256=zg3J6OGxTFGSFri1qQ12giDz90lWk8bzaxCTUCRtiX4,3034
|
|
107
108
|
modal/_utils/http_utils.py,sha256=yeTFsXYr0rYMEhB7vBP7audG9Uc7OLhzKBANFDZWVt0,2451
|
|
108
109
|
modal/_utils/jwt_utils.py,sha256=fxH9plyrbAemTbjSsQtzIdDXE9QXxvMC4DiUZ16G0aA,1360
|
|
109
110
|
modal/_utils/logger.py,sha256=NgbMKFT9chYYt_TU01DdIior5ByYr2gZtrWIk1SFRLc,1782
|
|
110
|
-
modal/_utils/mount_utils.py,sha256=
|
|
111
|
+
modal/_utils/mount_utils.py,sha256=3v6wbSvEjOhIlnLGbyXKOzdoXaG-FwNAZ_Rr0io_v2o,4113
|
|
111
112
|
modal/_utils/name_utils.py,sha256=CIQL0Y4z47tq0rfNL2Kdo5dxsGrxoN2hR9Ko0HapeE4,2517
|
|
112
113
|
modal/_utils/package_utils.py,sha256=LcL2olGN4xaUzu2Tbv-C-Ft9Qp6bsLxEfETOAVd-mjU,2073
|
|
113
114
|
modal/_utils/pattern_utils.py,sha256=ZUffaECfe2iYBhH6cvCB-0-UWhmEBTZEl_TwG_So3ag,6714
|
|
114
115
|
modal/_utils/rand_pb_testing.py,sha256=mmVPk1rZldHwHZx0DnHTuHQlRLAiiAYdxjwEJpxvT9c,3900
|
|
115
116
|
modal/_utils/shell_utils.py,sha256=hWHzv730Br2Xyj6cGPiMZ-198Z3RZuOu3pDXhFSZ22c,2157
|
|
117
|
+
modal/_utils/task_command_router_client.py,sha256=ZoajSdIyAv_YXxpyY0jNsr_543FjTbSzyVONmaETqkw,23531
|
|
116
118
|
modal/_utils/time_utils.py,sha256=43tpFVwT7ykOjlETIFLVt9auMsRZqYYRYBEKxGCrRSA,1212
|
|
117
119
|
modal/_vendor/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
|
118
120
|
modal/_vendor/a2wsgi_wsgi.py,sha256=Q1AsjpV_Q_vzQsz_cSqmP9jWzsGsB-ARFU6vpQYml8k,21878
|
|
@@ -130,19 +132,19 @@ modal/cli/__init__.py,sha256=6FRleWQxBDT19y7OayO4lBOzuL6Bs9r0rLINYYYbHwQ,769
|
|
|
130
132
|
modal/cli/_download.py,sha256=_Q_CG1Qb4cjVSAwHGGPOPoNTsmK9gHvF-HNWCNdFjaY,4900
|
|
131
133
|
modal/cli/_traceback.py,sha256=IKj9xtc6LjAxyhGJWolNIXEX3MhAIulnRqywZNOFmkU,7324
|
|
132
134
|
modal/cli/app.py,sha256=rbuAG92my-1eZN0olk6p2eD4oBnyBliUsrCOUW-U-9k,7832
|
|
133
|
-
modal/cli/cluster.py,sha256=
|
|
134
|
-
modal/cli/config.py,sha256=
|
|
135
|
-
modal/cli/container.py,sha256=
|
|
135
|
+
modal/cli/cluster.py,sha256=BLcKDpwpDmlqE2UC4V0qNpJKiQ-ZXfI9g_SE7u6vnIU,3347
|
|
136
|
+
modal/cli/config.py,sha256=7xgglsSf5pKfE7ZLz-uZf9S11NBuNbUkUbcZ5nFk8Y0,1721
|
|
137
|
+
modal/cli/container.py,sha256=meFH-T_Bdyd7a9HjClzGCgYuPq0KhWs_HUUsSW12HjM,3686
|
|
136
138
|
modal/cli/dict.py,sha256=YAJtiv41YcCd5Fqam3hXCNTs4Y0yOgGR_i6RfQNSAFM,4572
|
|
137
|
-
modal/cli/entry_point.py,sha256=
|
|
139
|
+
modal/cli/entry_point.py,sha256=7nGM8zob80L5iyLCf_TEmjyinKojquW3_O_V0wDnK-U,4809
|
|
138
140
|
modal/cli/environment.py,sha256=LGBq8RVQjfBH3EWz8QgmYe19UO66JKSDNxOXMUjw7JM,4285
|
|
139
141
|
modal/cli/import_refs.py,sha256=X59Z5JwgliRO6C-cIFto2Pr7o3SwlZMKQPKA0aI4ZK4,13927
|
|
140
|
-
modal/cli/launch.py,sha256=
|
|
141
|
-
modal/cli/network_file_system.py,sha256=
|
|
142
|
+
modal/cli/launch.py,sha256=oJKGWjTJiXQTdw-SUiCmCQ76bY_8nlzJMUMu0zew0zs,6435
|
|
143
|
+
modal/cli/network_file_system.py,sha256=MO4YHBdwokXaVv95W4ucmxvi-Q2IpiMrxWLOBhEED5c,8029
|
|
142
144
|
modal/cli/profile.py,sha256=g8X6tFFK9ccKyu2he9Yu19WLSLNdztzECgmIV__XJFs,3257
|
|
143
|
-
modal/cli/queues.py,sha256
|
|
145
|
+
modal/cli/queues.py,sha256=-vqEHbbc5XHT0Qbzc4ttQtAGtKzoaeJ8o9B9-WlyMhU,6057
|
|
144
146
|
modal/cli/run.py,sha256=3_UF2Vdye_KEgY8JzBBomt0i944cCJx96RfNbeAEPDo,25783
|
|
145
|
-
modal/cli/secret.py,sha256
|
|
147
|
+
modal/cli/secret.py,sha256=zkCztov8c4x8CI8G0EoyieUfv9XLQQtVXV8xeMLK-Os,8044
|
|
146
148
|
modal/cli/token.py,sha256=NAmQzKBfEHkcldWKeFxAVIqQBoo1RTp7_A4yc7-8qM0,1911
|
|
147
149
|
modal/cli/utils.py,sha256=aUXDU9_VgcJrGaGRy4bGf4dqwKYXHCpoO27x4m_bpuo,3293
|
|
148
150
|
modal/cli/volume.py,sha256=wJchJyIEw9lTKiNUNTgR4I3DPYHYJBu50gU_SsecP0w,10877
|
|
@@ -151,11 +153,11 @@ modal/cli/programs/launch_instance_ssh.py,sha256=GrwK_Vy8-7B4x5a6AqFaF7lqNVgu75J
|
|
|
151
153
|
modal/cli/programs/run_jupyter.py,sha256=IJw8nds8Cjl9j4dxBqMGxhz-bIyVX0kle7jbt8HFOhM,2688
|
|
152
154
|
modal/cli/programs/run_marimo.py,sha256=QlCGPkwQ0XLajt2LtujR_BGsRV1AZ3OCUgZxkkM1lug,2893
|
|
153
155
|
modal/cli/programs/vscode.py,sha256=E1aJPU7b8RWWj-JX71DifsCoLYsCAnre7lATiBJjUms,3386
|
|
154
|
-
modal/experimental/__init__.py,sha256=
|
|
155
|
-
modal/experimental/flash.py,sha256=
|
|
156
|
-
modal/experimental/flash.pyi,sha256=
|
|
156
|
+
modal/experimental/__init__.py,sha256=sCwNbBLcR2t-jhrpwtMAPGKt2WNqXBg0xkNZdyB-6CE,13940
|
|
157
|
+
modal/experimental/flash.py,sha256=9Xk3W2tMobiP6QknnPUDeOnWf7aE89a1VZ2EByQYmEM,26662
|
|
158
|
+
modal/experimental/flash.pyi,sha256=uwinKAYxpunNNfBj58FP88DXb535Qik4F6tnJKPAIwQ,14696
|
|
157
159
|
modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
|
|
158
|
-
modal-1.2.
|
|
160
|
+
modal-1.2.2.dev19.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
|
159
161
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
|
160
162
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
|
161
163
|
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
|
@@ -163,18 +165,18 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
|
|
|
163
165
|
modal_docs/mdmd/mdmd.py,sha256=tUTImNd4UMFk1opkaw8J672gX8AkBO5gbY2S_NMxsxs,7140
|
|
164
166
|
modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
|
|
165
167
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
|
166
|
-
modal_proto/api.proto,sha256=
|
|
167
|
-
modal_proto/api_grpc.py,sha256=
|
|
168
|
-
modal_proto/api_pb2.py,sha256=
|
|
169
|
-
modal_proto/api_pb2.pyi,sha256=
|
|
170
|
-
modal_proto/api_pb2_grpc.py,sha256=
|
|
171
|
-
modal_proto/api_pb2_grpc.pyi,sha256=
|
|
172
|
-
modal_proto/modal_api_grpc.py,sha256=
|
|
168
|
+
modal_proto/api.proto,sha256=mbijJX4tYHF9LcpJniYGpIhThdlawC0p-ORWru8NK30,108696
|
|
169
|
+
modal_proto/api_grpc.py,sha256=vwC-GjejDKWbG5jRN3rkU8WBSqQ8Pdj-T2E2xAECAUw,134411
|
|
170
|
+
modal_proto/api_pb2.py,sha256=uYJBEWhrDy0hS16LaWqEtWRJPp3LK4qr1HNAQTmQ0bE,379710
|
|
171
|
+
modal_proto/api_pb2.pyi,sha256=HSd6yyvy_479dqcI4_6BvD_djGW-FkORH2iWpxclyvE,531472
|
|
172
|
+
modal_proto/api_pb2_grpc.py,sha256=Hqw9jcbhpr-W6jsfog_tGU55ouZjITxGvA-DGNBqOLA,289714
|
|
173
|
+
modal_proto/api_pb2_grpc.pyi,sha256=QLJ58ANCx147HeGJva58h0MTCLIDs9JmVjrx8bDdwlg,67776
|
|
174
|
+
modal_proto/modal_api_grpc.py,sha256=MqaBZB2ZqYj6XTIgI_p5dOPjt9gKT4pAJNd_WXR3W84,21295
|
|
173
175
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
174
|
-
modal_proto/sandbox_router.proto,sha256=
|
|
176
|
+
modal_proto/sandbox_router.proto,sha256=o6LZWekz2h7uAhBlHcu_EqXnc5ptxm-4j_ZUFVGAJFk,5161
|
|
175
177
|
modal_proto/sandbox_router_grpc.py,sha256=27daOTX2N5hADDG-5Qnn4Yj3VfekyJwrDUkrQ12mPuU,5004
|
|
176
178
|
modal_proto/sandbox_router_pb2.py,sha256=-AuG6ZRjGDjKgS1J4nSleqkS1W0HgpLjs7ahPnYwUHc,10860
|
|
177
|
-
modal_proto/sandbox_router_pb2.pyi,sha256=
|
|
179
|
+
modal_proto/sandbox_router_pb2.pyi,sha256=9KzzS0-goV3p12hWZrLUHGzZEgrzpa4AazEUOd_xK9g,14899
|
|
178
180
|
modal_proto/sandbox_router_pb2_grpc.py,sha256=8kPFo84rpRHfeRdZuHyoWuuIAphGmjM0s3ygGJSBVck,10006
|
|
179
181
|
modal_proto/sandbox_router_pb2_grpc.pyi,sha256=iAr1ornlIEYP7pfrFMrw91-F3PNs7amH6z6J2oCwYxk,3276
|
|
180
182
|
modal_proto/task_command_router.proto,sha256=xAVsFyIff6Yvp-PoS3kwyag2G73tBht2KtF4CWKeewI,5000
|
|
@@ -183,10 +185,10 @@ modal_proto/task_command_router_pb2.py,sha256=_pD2ZpU0bNzhwBdzmLoLyLtAtftI_Agxwn
|
|
|
183
185
|
modal_proto/task_command_router_pb2.pyi,sha256=EyDgXPLr7alqjXYERV8w_MPuO404x0uCppmSkrfE9IE,14589
|
|
184
186
|
modal_proto/task_command_router_pb2_grpc.py,sha256=uEQ0HdrCp8v-9bB5yIic9muA8spCShLHY6Bz9cCgOUE,10114
|
|
185
187
|
modal_proto/task_command_router_pb2_grpc.pyi,sha256=s3Yxsrawdj4nr8vqQqsAxyX6ilWaGbdECy425KKbLIA,3301
|
|
186
|
-
modal_version/__init__.py,sha256=
|
|
188
|
+
modal_version/__init__.py,sha256=rAQMUy4uHHGCIGmPr3JAcoeSK-H_scIgJvE9xXrtEPc,121
|
|
187
189
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
|
188
|
-
modal-1.2.
|
|
189
|
-
modal-1.2.
|
|
190
|
-
modal-1.2.
|
|
191
|
-
modal-1.2.
|
|
192
|
-
modal-1.2.
|
|
190
|
+
modal-1.2.2.dev19.dist-info/METADATA,sha256=ASbe3swD5rqN8ld4oJBXmozVxfHT1GhGGxSOPUacnLw,2484
|
|
191
|
+
modal-1.2.2.dev19.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
|
192
|
+
modal-1.2.2.dev19.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
|
193
|
+
modal-1.2.2.dev19.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
|
194
|
+
modal-1.2.2.dev19.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
|
@@ -857,6 +857,7 @@ message CloudBucketMount {
|
|
|
857
857
|
optional string bucket_endpoint_url = 7;
|
|
858
858
|
optional string key_prefix = 8;
|
|
859
859
|
optional string oidc_auth_role_arn = 9;
|
|
860
|
+
bool force_path_style = 10;
|
|
860
861
|
}
|
|
861
862
|
|
|
862
863
|
message ClusterGetRequest {
|
|
@@ -2461,6 +2462,7 @@ message ProxyAddIpResponse {
|
|
|
2461
2462
|
message ProxyCreateRequest {
|
|
2462
2463
|
string name = 1;
|
|
2463
2464
|
string environment_name = 2;
|
|
2465
|
+
string region = 3;
|
|
2464
2466
|
}
|
|
2465
2467
|
|
|
2466
2468
|
message ProxyCreateResponse {
|
|
@@ -2757,20 +2759,6 @@ message SandboxCreateResponse {
|
|
|
2757
2759
|
string sandbox_id = 1;
|
|
2758
2760
|
}
|
|
2759
2761
|
|
|
2760
|
-
// Used to get a JWT and URL for direct access to a sandbox router server
|
|
2761
|
-
// running on the modal-worker, so the client can issue exec commands (and other
|
|
2762
|
-
// operations as they become available) directly to the worker.
|
|
2763
|
-
// DEPRECATED: Use TaskGetCommandRouterAccessRequest instead.
|
|
2764
|
-
// TODO(saltzm): Remove this.
|
|
2765
|
-
message SandboxGetCommandRouterAccessRequest {
|
|
2766
|
-
string sandbox_id = 1;
|
|
2767
|
-
}
|
|
2768
|
-
|
|
2769
|
-
message SandboxGetCommandRouterAccessResponse {
|
|
2770
|
-
string jwt = 1;
|
|
2771
|
-
string url = 2;
|
|
2772
|
-
}
|
|
2773
|
-
|
|
2774
2762
|
message SandboxGetFromNameRequest {
|
|
2775
2763
|
string sandbox_name = 1;
|
|
2776
2764
|
string environment_name = 2;
|
|
@@ -3157,14 +3145,6 @@ message TaskCurrentInputsResponse {
|
|
|
3157
3145
|
repeated string input_ids = 1;
|
|
3158
3146
|
}
|
|
3159
3147
|
|
|
3160
|
-
message TaskGetAutoscalingMetricsRequest {
|
|
3161
|
-
string task_id = 1;
|
|
3162
|
-
}
|
|
3163
|
-
|
|
3164
|
-
message TaskGetAutoscalingMetricsResponse {
|
|
3165
|
-
AutoscalingMetrics metrics = 1;
|
|
3166
|
-
}
|
|
3167
|
-
|
|
3168
3148
|
// Used to get a JWT and URL for direct access to a task command router
|
|
3169
3149
|
// running on the modal-worker, so the client can issue exec commands (and other
|
|
3170
3150
|
// operations as they become available) directly to the worker.
|
|
@@ -3754,7 +3734,6 @@ service ModalClient {
|
|
|
3754
3734
|
// Sandboxes
|
|
3755
3735
|
rpc SandboxCreate(SandboxCreateRequest) returns (SandboxCreateResponse);
|
|
3756
3736
|
rpc SandboxCreateConnectToken(SandboxCreateConnectTokenRequest) returns (SandboxCreateConnectTokenResponse);
|
|
3757
|
-
rpc SandboxGetCommandRouterAccess(SandboxGetCommandRouterAccessRequest) returns (SandboxGetCommandRouterAccessResponse);
|
|
3758
3737
|
rpc SandboxGetFromName(SandboxGetFromNameRequest) returns (SandboxGetFromNameResponse);
|
|
3759
3738
|
rpc SandboxGetLogs(SandboxGetLogsRequest) returns (stream TaskLogsBatch);
|
|
3760
3739
|
rpc SandboxGetResourceUsage(SandboxGetResourceUsageRequest) returns (SandboxGetResourceUsageResponse);
|
|
@@ -3793,7 +3772,6 @@ service ModalClient {
|
|
|
3793
3772
|
// Tasks
|
|
3794
3773
|
rpc TaskClusterHello(TaskClusterHelloRequest) returns (TaskClusterHelloResponse);
|
|
3795
3774
|
rpc TaskCurrentInputs(google.protobuf.Empty) returns (TaskCurrentInputsResponse);
|
|
3796
|
-
rpc TaskGetAutoscalingMetrics(TaskGetAutoscalingMetricsRequest) returns (TaskGetAutoscalingMetricsResponse); // Used for flash autoscaling
|
|
3797
3775
|
rpc TaskGetCommandRouterAccess(TaskGetCommandRouterAccessRequest) returns (TaskGetCommandRouterAccessResponse);
|
|
3798
3776
|
rpc TaskList(TaskListRequest) returns (TaskListResponse);
|
|
3799
3777
|
rpc TaskResult(TaskResultRequest) returns (google.protobuf.Empty);
|
modal_proto/api_grpc.py
CHANGED
|
@@ -482,10 +482,6 @@ class ModalClientBase(abc.ABC):
|
|
|
482
482
|
async def SandboxCreateConnectToken(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxCreateConnectTokenRequest, modal_proto.api_pb2.SandboxCreateConnectTokenResponse]') -> None:
|
|
483
483
|
pass
|
|
484
484
|
|
|
485
|
-
@abc.abstractmethod
|
|
486
|
-
async def SandboxGetCommandRouterAccess(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxGetCommandRouterAccessRequest, modal_proto.api_pb2.SandboxGetCommandRouterAccessResponse]') -> None:
|
|
487
|
-
pass
|
|
488
|
-
|
|
489
485
|
@abc.abstractmethod
|
|
490
486
|
async def SandboxGetFromName(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxGetFromNameRequest, modal_proto.api_pb2.SandboxGetFromNameResponse]') -> None:
|
|
491
487
|
pass
|
|
@@ -614,10 +610,6 @@ class ModalClientBase(abc.ABC):
|
|
|
614
610
|
async def TaskCurrentInputs(self, stream: 'grpclib.server.Stream[google.protobuf.empty_pb2.Empty, modal_proto.api_pb2.TaskCurrentInputsResponse]') -> None:
|
|
615
611
|
pass
|
|
616
612
|
|
|
617
|
-
@abc.abstractmethod
|
|
618
|
-
async def TaskGetAutoscalingMetrics(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.TaskGetAutoscalingMetricsRequest, modal_proto.api_pb2.TaskGetAutoscalingMetricsResponse]') -> None:
|
|
619
|
-
pass
|
|
620
|
-
|
|
621
613
|
@abc.abstractmethod
|
|
622
614
|
async def TaskGetCommandRouterAccess(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.TaskGetCommandRouterAccessRequest, modal_proto.api_pb2.TaskGetCommandRouterAccessResponse]') -> None:
|
|
623
615
|
pass
|
|
@@ -1420,12 +1412,6 @@ class ModalClientBase(abc.ABC):
|
|
|
1420
1412
|
modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
|
|
1421
1413
|
modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
|
|
1422
1414
|
),
|
|
1423
|
-
'/modal.client.ModalClient/SandboxGetCommandRouterAccess': grpclib.const.Handler(
|
|
1424
|
-
self.SandboxGetCommandRouterAccess,
|
|
1425
|
-
grpclib.const.Cardinality.UNARY_UNARY,
|
|
1426
|
-
modal_proto.api_pb2.SandboxGetCommandRouterAccessRequest,
|
|
1427
|
-
modal_proto.api_pb2.SandboxGetCommandRouterAccessResponse,
|
|
1428
|
-
),
|
|
1429
1415
|
'/modal.client.ModalClient/SandboxGetFromName': grpclib.const.Handler(
|
|
1430
1416
|
self.SandboxGetFromName,
|
|
1431
1417
|
grpclib.const.Cardinality.UNARY_UNARY,
|
|
@@ -1618,12 +1604,6 @@ class ModalClientBase(abc.ABC):
|
|
|
1618
1604
|
google.protobuf.empty_pb2.Empty,
|
|
1619
1605
|
modal_proto.api_pb2.TaskCurrentInputsResponse,
|
|
1620
1606
|
),
|
|
1621
|
-
'/modal.client.ModalClient/TaskGetAutoscalingMetrics': grpclib.const.Handler(
|
|
1622
|
-
self.TaskGetAutoscalingMetrics,
|
|
1623
|
-
grpclib.const.Cardinality.UNARY_UNARY,
|
|
1624
|
-
modal_proto.api_pb2.TaskGetAutoscalingMetricsRequest,
|
|
1625
|
-
modal_proto.api_pb2.TaskGetAutoscalingMetricsResponse,
|
|
1626
|
-
),
|
|
1627
1607
|
'/modal.client.ModalClient/TaskGetCommandRouterAccess': grpclib.const.Handler(
|
|
1628
1608
|
self.TaskGetCommandRouterAccess,
|
|
1629
1609
|
grpclib.const.Cardinality.UNARY_UNARY,
|
|
@@ -2482,12 +2462,6 @@ class ModalClientStub:
|
|
|
2482
2462
|
modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
|
|
2483
2463
|
modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
|
|
2484
2464
|
)
|
|
2485
|
-
self.SandboxGetCommandRouterAccess = grpclib.client.UnaryUnaryMethod(
|
|
2486
|
-
channel,
|
|
2487
|
-
'/modal.client.ModalClient/SandboxGetCommandRouterAccess',
|
|
2488
|
-
modal_proto.api_pb2.SandboxGetCommandRouterAccessRequest,
|
|
2489
|
-
modal_proto.api_pb2.SandboxGetCommandRouterAccessResponse,
|
|
2490
|
-
)
|
|
2491
2465
|
self.SandboxGetFromName = grpclib.client.UnaryUnaryMethod(
|
|
2492
2466
|
channel,
|
|
2493
2467
|
'/modal.client.ModalClient/SandboxGetFromName',
|
|
@@ -2680,12 +2654,6 @@ class ModalClientStub:
|
|
|
2680
2654
|
google.protobuf.empty_pb2.Empty,
|
|
2681
2655
|
modal_proto.api_pb2.TaskCurrentInputsResponse,
|
|
2682
2656
|
)
|
|
2683
|
-
self.TaskGetAutoscalingMetrics = grpclib.client.UnaryUnaryMethod(
|
|
2684
|
-
channel,
|
|
2685
|
-
'/modal.client.ModalClient/TaskGetAutoscalingMetrics',
|
|
2686
|
-
modal_proto.api_pb2.TaskGetAutoscalingMetricsRequest,
|
|
2687
|
-
modal_proto.api_pb2.TaskGetAutoscalingMetricsResponse,
|
|
2688
|
-
)
|
|
2689
2657
|
self.TaskGetCommandRouterAccess = grpclib.client.UnaryUnaryMethod(
|
|
2690
2658
|
channel,
|
|
2691
2659
|
'/modal.client.ModalClient/TaskGetCommandRouterAccess',
|