modal 1.0.3.dev27__py3-none-any.whl → 1.0.4__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/_partial_function.py +4 -4
- modal/_utils/async_utils.py +45 -16
- modal/cli/network_file_system.py +3 -0
- modal/cli/run.py +7 -0
- modal/cli/volume.py +2 -0
- modal/client.pyi +2 -10
- modal/cls.py +50 -9
- modal/cls.pyi +1 -0
- modal/file_io.py +9 -7
- modal/file_io.pyi +5 -8
- modal/mount.py +52 -38
- modal/mount.pyi +15 -6
- modal/parallel_map.py +1 -1
- modal/requirements/PREVIEW.txt +16 -15
- modal/requirements/base-images.json +28 -6
- modal/sandbox.py +7 -0
- modal/sandbox.pyi +8 -0
- modal/volume.py +5 -0
- {modal-1.0.3.dev27.dist-info → modal-1.0.4.dist-info}/METADATA +2 -2
- {modal-1.0.3.dev27.dist-info → modal-1.0.4.dist-info}/RECORD +28 -28
- modal_proto/api.proto +4 -0
- modal_proto/api_pb2.py +300 -300
- modal_proto/api_pb2.pyi +9 -2
- modal_version/__init__.py +1 -1
- {modal-1.0.3.dev27.dist-info → modal-1.0.4.dist-info}/WHEEL +0 -0
- {modal-1.0.3.dev27.dist-info → modal-1.0.4.dist-info}/entry_points.txt +0 -0
- {modal-1.0.3.dev27.dist-info → modal-1.0.4.dist-info}/licenses/LICENSE +0 -0
- {modal-1.0.3.dev27.dist-info → modal-1.0.4.dist-info}/top_level.txt +0 -0
modal/mount.pyi
CHANGED
@@ -82,6 +82,7 @@ class _Mount(modal._object._Object):
|
|
82
82
|
_deployment_name: typing.Optional[str]
|
83
83
|
_namespace: typing.Optional[int]
|
84
84
|
_environment_name: typing.Optional[str]
|
85
|
+
_allow_overwrite: bool
|
85
86
|
_content_checksum_sha256_hex: typing.Optional[str]
|
86
87
|
|
87
88
|
@staticmethod
|
@@ -172,7 +173,9 @@ class _Mount(modal._object._Object):
|
|
172
173
|
self: _Mount,
|
173
174
|
deployment_name: typing.Optional[str] = None,
|
174
175
|
namespace=1,
|
176
|
+
*,
|
175
177
|
environment_name: typing.Optional[str] = None,
|
178
|
+
allow_overwrite: bool = False,
|
176
179
|
client: typing.Optional[modal.client._Client] = None,
|
177
180
|
) -> None: ...
|
178
181
|
def _get_metadata(self) -> modal_proto.api_pb2.MountHandleMetadata: ...
|
@@ -184,6 +187,7 @@ class Mount(modal.object.Object):
|
|
184
187
|
_deployment_name: typing.Optional[str]
|
185
188
|
_namespace: typing.Optional[int]
|
186
189
|
_environment_name: typing.Optional[str]
|
190
|
+
_allow_overwrite: bool
|
187
191
|
_content_checksum_sha256_hex: typing.Optional[str]
|
188
192
|
|
189
193
|
def __init__(self, *args, **kwargs): ...
|
@@ -288,7 +292,9 @@ class Mount(modal.object.Object):
|
|
288
292
|
/,
|
289
293
|
deployment_name: typing.Optional[str] = None,
|
290
294
|
namespace=1,
|
295
|
+
*,
|
291
296
|
environment_name: typing.Optional[str] = None,
|
297
|
+
allow_overwrite: bool = False,
|
292
298
|
client: typing.Optional[modal.client.Client] = None,
|
293
299
|
) -> None: ...
|
294
300
|
async def aio(
|
@@ -296,7 +302,9 @@ class Mount(modal.object.Object):
|
|
296
302
|
/,
|
297
303
|
deployment_name: typing.Optional[str] = None,
|
298
304
|
namespace=1,
|
305
|
+
*,
|
299
306
|
environment_name: typing.Optional[str] = None,
|
307
|
+
allow_overwrite: bool = False,
|
300
308
|
client: typing.Optional[modal.client.Client] = None,
|
301
309
|
) -> None: ...
|
302
310
|
|
@@ -308,25 +316,26 @@ def _create_client_mount(): ...
|
|
308
316
|
def create_client_mount(): ...
|
309
317
|
def _get_client_mount(): ...
|
310
318
|
def _is_modal_path(remote_path: pathlib.PurePosixPath): ...
|
311
|
-
async def
|
319
|
+
async def _create_single_client_dependency_mount(
|
312
320
|
client: modal.client._Client,
|
313
321
|
builder_version: str,
|
314
322
|
python_version: str,
|
315
|
-
platform: str,
|
316
323
|
arch: str,
|
317
|
-
|
324
|
+
platform: str,
|
325
|
+
uv_python_platform: str,
|
318
326
|
check_if_exists: bool = True,
|
327
|
+
allow_overwrite: bool = False,
|
319
328
|
): ...
|
320
329
|
async def _create_client_dependency_mounts(
|
321
|
-
client=None,
|
330
|
+
client=None, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"], check_if_exists=True
|
322
331
|
): ...
|
323
332
|
|
324
333
|
class __create_client_dependency_mounts_spec(typing_extensions.Protocol):
|
325
334
|
def __call__(
|
326
|
-
self, /, client=None,
|
335
|
+
self, /, client=None, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"], check_if_exists=True
|
327
336
|
): ...
|
328
337
|
async def aio(
|
329
|
-
self, /, client=None,
|
338
|
+
self, /, client=None, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"], check_if_exists=True
|
330
339
|
): ...
|
331
340
|
|
332
341
|
create_client_dependency_mounts: __create_client_dependency_mounts_spec
|
modal/parallel_map.py
CHANGED
@@ -593,7 +593,7 @@ def _spawn_map_sync(self, *input_iterators, kwargs={}) -> None:
|
|
593
593
|
|
594
594
|
return run_coroutine_in_temporary_event_loop(
|
595
595
|
_spawn_map_async(self, *input_iterators, kwargs=kwargs),
|
596
|
-
"You can't run Function.spawn_map() from an async function. Use Function.
|
596
|
+
"You can't run Function.spawn_map() from an async function. Use Function.spawn_map.aio() instead.",
|
597
597
|
)
|
598
598
|
|
599
599
|
|
modal/requirements/PREVIEW.txt
CHANGED
@@ -1,16 +1,17 @@
|
|
1
|
-
aiohappyeyeballs==2.
|
2
|
-
aiohttp==3.
|
3
|
-
aiosignal==1.3.
|
4
|
-
async-timeout==
|
5
|
-
attrs==
|
6
|
-
certifi==
|
7
|
-
frozenlist==1.
|
8
|
-
grpclib==0.4.
|
9
|
-
h2==4.
|
10
|
-
hpack==4.
|
11
|
-
hyperframe==6.0
|
1
|
+
aiohappyeyeballs==2.6.1
|
2
|
+
aiohttp==3.12.7
|
3
|
+
aiosignal==1.3.2
|
4
|
+
async-timeout==5.0.1 ; python_version < "3.11"
|
5
|
+
attrs==25.3.0
|
6
|
+
certifi==2025.4.26
|
7
|
+
frozenlist==1.6.0
|
8
|
+
grpclib==0.4.8
|
9
|
+
h2==4.2.0
|
10
|
+
hpack==4.1.0
|
11
|
+
hyperframe==6.1.0
|
12
12
|
idna==3.10
|
13
|
-
multidict==6.
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
multidict==6.4.4
|
14
|
+
propcache==0.3.1
|
15
|
+
protobuf==6.31.1
|
16
|
+
typing_extensions==4.13.2
|
17
|
+
yarl==1.20.0
|
@@ -6,13 +6,35 @@
|
|
6
6
|
"2023.12": "bullseye"
|
7
7
|
},
|
8
8
|
"python": {
|
9
|
-
"PREVIEW": [
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
"PREVIEW": [
|
10
|
+
"3.9.22",
|
11
|
+
"3.10.17",
|
12
|
+
"3.11.12",
|
13
|
+
"3.12.10",
|
14
|
+
"3.13.3"
|
15
|
+
],
|
16
|
+
"2024.10": [
|
17
|
+
"3.9.20",
|
18
|
+
"3.10.15",
|
19
|
+
"3.11.10",
|
20
|
+
"3.12.6",
|
21
|
+
"3.13.0"
|
22
|
+
],
|
23
|
+
"2024.04": [
|
24
|
+
"3.9.19",
|
25
|
+
"3.10.14",
|
26
|
+
"3.11.8",
|
27
|
+
"3.12.2"
|
28
|
+
],
|
29
|
+
"2023.12": [
|
30
|
+
"3.9.15",
|
31
|
+
"3.10.8",
|
32
|
+
"3.11.0",
|
33
|
+
"3.12.1"
|
34
|
+
]
|
13
35
|
},
|
14
36
|
"micromamba": {
|
15
|
-
"PREVIEW": "1.
|
37
|
+
"PREVIEW": "2.1.1",
|
16
38
|
"2024.10": "1.5.10",
|
17
39
|
"2024.04": "1.5.8",
|
18
40
|
"2023.12": "1.3.1"
|
@@ -23,4 +45,4 @@
|
|
23
45
|
"2024.04": "pip wheel uv",
|
24
46
|
"2023.12": "pip"
|
25
47
|
}
|
26
|
-
}
|
48
|
+
}
|
modal/sandbox.py
CHANGED
@@ -105,6 +105,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
105
105
|
proxy: Optional[_Proxy] = None,
|
106
106
|
_experimental_scheduler_placement: Optional[SchedulerPlacement] = None,
|
107
107
|
enable_snapshot: bool = False,
|
108
|
+
verbose: bool = False,
|
108
109
|
) -> "_Sandbox":
|
109
110
|
"""mdmd:hidden"""
|
110
111
|
|
@@ -205,6 +206,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
205
206
|
network_access=network_access,
|
206
207
|
proxy_id=(proxy.object_id if proxy else None),
|
207
208
|
enable_snapshot=enable_snapshot,
|
209
|
+
verbose=verbose,
|
208
210
|
)
|
209
211
|
|
210
212
|
# Note - `resolver.app_id` will be `None` for app-less sandboxes
|
@@ -253,6 +255,8 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
253
255
|
unencrypted_ports: Sequence[int] = [],
|
254
256
|
# Reference to a Modal Proxy to use in front of this Sandbox.
|
255
257
|
proxy: Optional[_Proxy] = None,
|
258
|
+
# Enable verbose logging for sandbox operations.
|
259
|
+
verbose: bool = False,
|
256
260
|
# Enable memory snapshots.
|
257
261
|
_experimental_enable_snapshot: bool = False,
|
258
262
|
_experimental_scheduler_placement: Optional[
|
@@ -298,6 +302,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
298
302
|
_experimental_enable_snapshot=_experimental_enable_snapshot,
|
299
303
|
_experimental_scheduler_placement=_experimental_scheduler_placement,
|
300
304
|
client=client,
|
305
|
+
verbose=verbose,
|
301
306
|
)
|
302
307
|
|
303
308
|
@staticmethod
|
@@ -342,6 +347,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
342
347
|
SchedulerPlacement
|
343
348
|
] = None, # Experimental controls over fine-grained scheduling (alpha).
|
344
349
|
client: Optional[_Client] = None,
|
350
|
+
verbose: bool = False,
|
345
351
|
):
|
346
352
|
# This method exposes some internal arguments (currently `mounts`) which are not in the public API
|
347
353
|
# `mounts` is currently only used by modal shell (cli) to provide a function's mounts to the
|
@@ -376,6 +382,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
376
382
|
proxy=proxy,
|
377
383
|
_experimental_scheduler_placement=_experimental_scheduler_placement,
|
378
384
|
enable_snapshot=_experimental_enable_snapshot,
|
385
|
+
verbose=verbose,
|
379
386
|
)
|
380
387
|
obj._enable_snapshot = _experimental_enable_snapshot
|
381
388
|
|
modal/sandbox.pyi
CHANGED
@@ -63,6 +63,7 @@ class _Sandbox(modal._object._Object):
|
|
63
63
|
proxy: typing.Optional[modal.proxy._Proxy] = None,
|
64
64
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
65
65
|
enable_snapshot: bool = False,
|
66
|
+
verbose: bool = False,
|
66
67
|
) -> _Sandbox: ...
|
67
68
|
@staticmethod
|
68
69
|
async def create(
|
@@ -90,6 +91,7 @@ class _Sandbox(modal._object._Object):
|
|
90
91
|
h2_ports: collections.abc.Sequence[int] = [],
|
91
92
|
unencrypted_ports: collections.abc.Sequence[int] = [],
|
92
93
|
proxy: typing.Optional[modal.proxy._Proxy] = None,
|
94
|
+
verbose: bool = False,
|
93
95
|
_experimental_enable_snapshot: bool = False,
|
94
96
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
95
97
|
client: typing.Optional[modal.client._Client] = None,
|
@@ -124,6 +126,7 @@ class _Sandbox(modal._object._Object):
|
|
124
126
|
_experimental_enable_snapshot: bool = False,
|
125
127
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
126
128
|
client: typing.Optional[modal.client._Client] = None,
|
129
|
+
verbose: bool = False,
|
127
130
|
): ...
|
128
131
|
def _hydrate_metadata(self, handle_metadata: typing.Optional[google.protobuf.message.Message]): ...
|
129
132
|
@staticmethod
|
@@ -236,6 +239,7 @@ class Sandbox(modal.object.Object):
|
|
236
239
|
proxy: typing.Optional[modal.proxy.Proxy] = None,
|
237
240
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
238
241
|
enable_snapshot: bool = False,
|
242
|
+
verbose: bool = False,
|
239
243
|
) -> Sandbox: ...
|
240
244
|
|
241
245
|
class __create_spec(typing_extensions.Protocol):
|
@@ -268,6 +272,7 @@ class Sandbox(modal.object.Object):
|
|
268
272
|
h2_ports: collections.abc.Sequence[int] = [],
|
269
273
|
unencrypted_ports: collections.abc.Sequence[int] = [],
|
270
274
|
proxy: typing.Optional[modal.proxy.Proxy] = None,
|
275
|
+
verbose: bool = False,
|
271
276
|
_experimental_enable_snapshot: bool = False,
|
272
277
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
273
278
|
client: typing.Optional[modal.client.Client] = None,
|
@@ -301,6 +306,7 @@ class Sandbox(modal.object.Object):
|
|
301
306
|
h2_ports: collections.abc.Sequence[int] = [],
|
302
307
|
unencrypted_ports: collections.abc.Sequence[int] = [],
|
303
308
|
proxy: typing.Optional[modal.proxy.Proxy] = None,
|
309
|
+
verbose: bool = False,
|
304
310
|
_experimental_enable_snapshot: bool = False,
|
305
311
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
306
312
|
client: typing.Optional[modal.client.Client] = None,
|
@@ -342,6 +348,7 @@ class Sandbox(modal.object.Object):
|
|
342
348
|
_experimental_enable_snapshot: bool = False,
|
343
349
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
344
350
|
client: typing.Optional[modal.client.Client] = None,
|
351
|
+
verbose: bool = False,
|
345
352
|
): ...
|
346
353
|
async def aio(
|
347
354
|
self,
|
@@ -376,6 +383,7 @@ class Sandbox(modal.object.Object):
|
|
376
383
|
_experimental_enable_snapshot: bool = False,
|
377
384
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
378
385
|
client: typing.Optional[modal.client.Client] = None,
|
386
|
+
verbose: bool = False,
|
379
387
|
): ...
|
380
388
|
|
381
389
|
_create: ___create_spec
|
modal/volume.py
CHANGED
@@ -403,6 +403,10 @@ class _Volume(_Object, type_prefix="vo"):
|
|
403
403
|
"""
|
404
404
|
Read a file from the modal.Volume.
|
405
405
|
|
406
|
+
Note - this function is primarily intended to be used outside of a Modal App.
|
407
|
+
For more information on downloading files from a Modal Volume, see
|
408
|
+
[the guide](/docs/guide/volumes).
|
409
|
+
|
406
410
|
**Example:**
|
407
411
|
|
408
412
|
```python notest
|
@@ -443,6 +447,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
443
447
|
Read volume file into file-like IO object.
|
444
448
|
"""
|
445
449
|
if progress_cb is None:
|
450
|
+
|
446
451
|
def progress_cb(*_, **__):
|
447
452
|
pass
|
448
453
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: modal
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.4
|
4
4
|
Summary: Python client library for Modal
|
5
5
|
Author-email: Modal Labs <support@modal.com>
|
6
6
|
License: Apache-2.0
|
@@ -22,7 +22,7 @@ Requires-Dist: click~=8.1.0
|
|
22
22
|
Requires-Dist: grpclib==0.4.7
|
23
23
|
Requires-Dist: protobuf!=4.24.0,<7.0,>=3.19
|
24
24
|
Requires-Dist: rich>=12.0.0
|
25
|
-
Requires-Dist: synchronicity~=0.9.
|
25
|
+
Requires-Dist: synchronicity~=0.9.15
|
26
26
|
Requires-Dist: toml
|
27
27
|
Requires-Dist: typer>=0.9
|
28
28
|
Requires-Dist: types-certifi
|
@@ -8,7 +8,7 @@ modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
|
|
8
8
|
modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
|
9
9
|
modal/_object.py,sha256=KzzzZoM41UQUiY9TKOrft9BtZKgjWG_ukdlyLGjB4UY,10758
|
10
10
|
modal/_output.py,sha256=LRM9KroHuR7t5pq8iLYjpFz1sQrHYan2kvRDjT6KAw4,26082
|
11
|
-
modal/_partial_function.py,sha256=
|
11
|
+
modal/_partial_function.py,sha256=RIsKpuJ7FrP8hGSowShwGsAzcEQEwW48AQaTiUku71c,39159
|
12
12
|
modal/_pty.py,sha256=JZfPDDpzqICZqtyPI_oMJf_9w-p_lLNuzHhwhodUXio,1329
|
13
13
|
modal/_resolver.py,sha256=-nolqj_p_mx5czVYj1Mazh2IQWpSMrTOGughVJqYfo8,7579
|
14
14
|
modal/_resources.py,sha256=NMAp0GCLutiZI4GuKSIVnRHVlstoD3hNGUabjTUtzf4,1794
|
@@ -22,11 +22,11 @@ modal/app.py,sha256=NZ_rJ9TuMfiNiLg8-gOFgufD5flGtXWPHOZI0gdD3hE,46585
|
|
22
22
|
modal/app.pyi,sha256=4-b_vbe3lNAqQPcMRpQCEDsE1zsVkQRJGUql9B7HvbM,22659
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
24
24
|
modal/client.py,sha256=OwISJvkgMb-rHm9Gc4i-7YcDgGiZgwJ7F_PzwZH7a6Q,16847
|
25
|
-
modal/client.pyi,sha256=
|
25
|
+
modal/client.pyi,sha256=fZ3jD3pcMRpRA5a1eikL6EcnP8-NIMuR2ufZKlStOKI,8381
|
26
26
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
27
27
|
modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
|
28
|
-
modal/cls.py,sha256=
|
29
|
-
modal/cls.pyi,sha256
|
28
|
+
modal/cls.py,sha256=JjxAeVudXKMp-co9YUnsGG6COJOv91K0ylf4f3mR67o,39792
|
29
|
+
modal/cls.pyi,sha256=EL1mQuyf8nAL2AjVZVnZhDzhakUmQt1ZtOVMy_aYWJI,12742
|
30
30
|
modal/config.py,sha256=e8sQ4RgwgJ_45S302vWUWs_wqRlKyEt3tU898RiaDKE,12073
|
31
31
|
modal/container_process.py,sha256=PDvjcyZ6eeN8foKQgR0WJ66Sg3lt7OFhK7Y_Akz6k5w,5846
|
32
32
|
modal/container_process.pyi,sha256=pPIUxVV_TY4huO2jF5cSSjb6L_EN7Es4xRvuwZ5sa5M,2802
|
@@ -35,8 +35,8 @@ modal/dict.pyi,sha256=RBaQyOd1ABRNN7vIf5L_rv94y7Kq5Qn9IlKHSr4j8N0,8120
|
|
35
35
|
modal/environments.py,sha256=gHFNLG78bqgizpQ4w_elz27QOqmcgAonFsmLs7NjUJ4,6804
|
36
36
|
modal/environments.pyi,sha256=4HbI0kywveaUVI7HqDtZ4HphCTGXYi_wie2hz87up5A,3425
|
37
37
|
modal/exception.py,sha256=2pgq-j8JP-tB3yU2VmYOzn9CsynU9_h8IU_MgqgKegM,5352
|
38
|
-
modal/file_io.py,sha256=
|
39
|
-
modal/file_io.pyi,sha256=
|
38
|
+
modal/file_io.py,sha256=SCBfLk5gRieqdTVlA_f-2YHHtRp7Iy_sA6iR1zPsO3c,21100
|
39
|
+
modal/file_io.pyi,sha256=IPQsnr5nn5Ci4OdjmRPSI1qi3AYamxWMhpEFNYPKlHM,9436
|
40
40
|
modal/file_pattern_matcher.py,sha256=wov-otB5M1oTdrYDtR2_VgacYin2srdtAP4McA1Cqzw,6516
|
41
41
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
42
42
|
modal/functions.pyi,sha256=5T58OucdNU4I-LqhBdwsWSAGka-Wa8nP2GcZ5K1bOL0,16236
|
@@ -45,14 +45,14 @@ modal/image.py,sha256=yrI9DCw7GAck3d788GCHJom-_yU55zNu7reNapBhlgE,93284
|
|
45
45
|
modal/image.pyi,sha256=2xjB6XOZDtm_chDdd90UoIj8pnDt5hCg6bOmu5fNaA4,25625
|
46
46
|
modal/io_streams.py,sha256=YDZVQSDv05DeXg5TwcucC9Rj5hQBx2GXdluan9rIUpw,15467
|
47
47
|
modal/io_streams.pyi,sha256=1UK6kWLREASQfq-wL9wSp5iqjLU0egRZPDn4LXs1PZY,5136
|
48
|
-
modal/mount.py,sha256=
|
49
|
-
modal/mount.pyi,sha256=
|
48
|
+
modal/mount.py,sha256=7gdzBNueSjPsgsdisMv1bv5SncEQyWc6D-YlAbpze3s,35523
|
49
|
+
modal/mount.pyi,sha256=xuJ3vaz33I9Mk8jxQPjlOxX5NC4WT5rqiazX3faS59U,13630
|
50
50
|
modal/network_file_system.py,sha256=lgtmHYjzA5gDMx0tysH0-WJB2Ao9JD2W15NyYK2A7_w,14612
|
51
51
|
modal/network_file_system.pyi,sha256=58DiUqHGlARmI3cz-Yo7IFObKKFIiGh5UIU5JxGNFfc,8333
|
52
52
|
modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
|
53
53
|
modal/object.pyi,sha256=UkR8NQ1jCIaw3hBUPxBRc6vvrOqtV37G_hsW2O5-4wE,5378
|
54
54
|
modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
|
55
|
-
modal/parallel_map.py,sha256=
|
55
|
+
modal/parallel_map.py,sha256=1SOOUzKGVItv9fP2WvYR5vl49Y5q2GdupsnJMLIUDUw,37434
|
56
56
|
modal/parallel_map.pyi,sha256=mhYGQmufQEJbjNrX7vNhBS2gUdfBrpmuWNUHth_Dz6U,6140
|
57
57
|
modal/partial_function.py,sha256=SwuAAj2wj4SO6F6nkSnwNZrczEmm9w9YdlQTHh6hr04,1195
|
58
58
|
modal/partial_function.pyi,sha256=NFWz1aCAs2B3-GnPf1cTatWRZOLnYpFKCnjP_X9iNRs,6411
|
@@ -65,8 +65,8 @@ modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
|
|
65
65
|
modal/runner.py,sha256=VV-PC03waAdSc_tAwpVN427TelOgs-cKeYS2GFeVRuA,24029
|
66
66
|
modal/runner.pyi,sha256=1AnEu48SUPnLWp3raQ2zJCV5lc85EGLkX2nL0bHWaB0,5162
|
67
67
|
modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
|
68
|
-
modal/sandbox.py,sha256=
|
69
|
-
modal/sandbox.pyi,sha256=
|
68
|
+
modal/sandbox.py,sha256=j4uQXiXPNKmQ_FyvzT9W9bWsElJOp2Vl--rBqszmCis,36491
|
69
|
+
modal/sandbox.pyi,sha256=2kCltK5PZwwYBJo70vfV4Ja8Vv_T9BBWJT18am4XA0c,28952
|
70
70
|
modal/schedule.py,sha256=SdH8jk6S0zoc1bTRVblrVw0zBsNwPlSC2gNpVxMet9g,3061
|
71
71
|
modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
|
72
72
|
modal/secret.py,sha256=I2z-rgKWl_Ix107d2_Y2OWGXdFOuJ7zMOyDfIOdFI1A,10374
|
@@ -78,7 +78,7 @@ modal/snapshot.pyi,sha256=dIEBdTPb7O3VwkQ8TMPjfyU17RLuS9i0DnACxxHy8X4,676
|
|
78
78
|
modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
|
79
79
|
modal/token_flow.py,sha256=0_4KabXKsuE4OXTJ1OuLOtA-b1sesShztMZkkRFK7tA,7605
|
80
80
|
modal/token_flow.pyi,sha256=ILbRv6JsZq-jK8jcJM7eB74e0PsbzwBm7hyPcV9lBlQ,2121
|
81
|
-
modal/volume.py,sha256=
|
81
|
+
modal/volume.py,sha256=IFObO-sJMbiet9dqWOaHz__6WNt5R0TtrrUWSukQP7E,43030
|
82
82
|
modal/volume.pyi,sha256=Os4MESmmUPkLF5jOW6nbrozMILDh6Uzb1VB_nLm-pLQ,19242
|
83
83
|
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
84
84
|
modal/_runtime/asgi.py,sha256=_2xSTsDD27Cit7xnMs4lzkJA2wzer2_N4Oa3BkXFzVA,22521
|
@@ -91,7 +91,7 @@ modal/_runtime/telemetry.py,sha256=T1RoAGyjBDr1swiM6pPsGRSITm7LI5FDK18oNXxY08U,5
|
|
91
91
|
modal/_runtime/user_code_imports.py,sha256=78wJyleqY2RVibqcpbDQyfWVBVT9BjyHPeoV9WdwV5Y,17720
|
92
92
|
modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
|
93
93
|
modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
|
94
|
-
modal/_utils/async_utils.py,sha256=
|
94
|
+
modal/_utils/async_utils.py,sha256=wgOSjofVaQAyP8Oq_xTSET5mYP5Y5W_eaQCPmE63xRA,29321
|
95
95
|
modal/_utils/blob_utils.py,sha256=IexC2Jbtqp_Tkmy62ayfgzTYte0UPCNufB_v-DO21g8,18585
|
96
96
|
modal/_utils/bytes_io_segment_payload.py,sha256=vaXPq8b52-x6G2hwE7SrjS58pg_aRm7gV3bn3yjmTzQ,4261
|
97
97
|
modal/_utils/deprecation.py,sha256=EXP1beU4pmEqEzWMLw6E3kUfNfpmNA_VOp6i0EHi93g,4856
|
@@ -127,14 +127,14 @@ modal/cli/entry_point.py,sha256=Ytpsy0MTLQC1RSClI0wNhCbiy6ecPO8555PMmsrxoSc,4377
|
|
127
127
|
modal/cli/environment.py,sha256=Ayddkiq9jdj3XYDJ8ZmUqFpPPH8xajYlbexRkzGtUcg,4334
|
128
128
|
modal/cli/import_refs.py,sha256=pmzY0hpexx6DtvobNmCOvRqEdS9IriEP4BpMw1TIy2w,13911
|
129
129
|
modal/cli/launch.py,sha256=0_sBu6bv2xJEPWi-rbGS6Ri9ggnkWQvrGlgpYSUBMyY,3097
|
130
|
-
modal/cli/network_file_system.py,sha256=
|
130
|
+
modal/cli/network_file_system.py,sha256=1_BF95WPLHh7x37lr0JBx5nS8NsKXCDZKt0L2F5fHgo,8104
|
131
131
|
modal/cli/profile.py,sha256=0TYhgRSGUvQZ5LH9nkl6iZllEvAjDniES264dE57wOM,3201
|
132
132
|
modal/cli/queues.py,sha256=1OzC9HdCkbNz6twF3US4FZmIhuVRQ01GOfBY42ux61A,4533
|
133
|
-
modal/cli/run.py,sha256=
|
133
|
+
modal/cli/run.py,sha256=T-Votd_0t3avdfB0HJ7cvQO6TyLHvzGJhk93FFopAbU,24658
|
134
134
|
modal/cli/secret.py,sha256=2bngl3Gb6THXkQ2eWZIN9pOHeOFJqiSNo_waUCVYgns,6611
|
135
135
|
modal/cli/token.py,sha256=mxSgOWakXG6N71hQb1ko61XAR9ZGkTMZD-Txn7gmTac,1924
|
136
136
|
modal/cli/utils.py,sha256=9Q7DIUX78-c19zBQNA7EtkgqIFatvHWUVGHwUIeBX_0,3366
|
137
|
-
modal/cli/volume.py,sha256=
|
137
|
+
modal/cli/volume.py,sha256=KJ4WKQYjRGsTERkwHE1HcRia9rWzLIDDnlc89QmTLvE,10960
|
138
138
|
modal/cli/programs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
139
139
|
modal/cli/programs/run_jupyter.py,sha256=44Lpvqk2l3hH-uOkmAOzw60NEsfB5uaRDWDKVshvQhs,2682
|
140
140
|
modal/cli/programs/vscode.py,sha256=KbTAaIXyQBVCDXxXjmBHmKpgXkUw0q4R4KkJvUjCYgk,3380
|
@@ -144,10 +144,10 @@ modal/requirements/2023.12.312.txt,sha256=zWWUVgVQ92GXBKNYYr2-5vn9rlnXcmkqlwlX5u
|
|
144
144
|
modal/requirements/2023.12.txt,sha256=OjsbXFkCSdkzzryZP82Q73osr5wxQ6EUzmGcK7twfkA,502
|
145
145
|
modal/requirements/2024.04.txt,sha256=6NnrbIE-mflwMyKyQ0tsWeY8XFE1kSW9oE8DVDoD8QU,544
|
146
146
|
modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
|
147
|
-
modal/requirements/PREVIEW.txt,sha256=
|
147
|
+
modal/requirements/PREVIEW.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqrs,312
|
148
148
|
modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
|
149
|
-
modal/requirements/base-images.json,sha256=
|
150
|
-
modal-1.0.
|
149
|
+
modal/requirements/base-images.json,sha256=f1bwyp2UkM844eoO9Qk30gQw_xrMqKpMSeJ6MErXnEk,995
|
150
|
+
modal-1.0.4.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
151
151
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
152
152
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
153
153
|
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
@@ -155,10 +155,10 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
|
|
155
155
|
modal_docs/mdmd/mdmd.py,sha256=Irx49MCCTlBOP4FBdLR--JrpA3-WhsVeriq0LGgsRic,6232
|
156
156
|
modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
|
157
157
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
158
|
-
modal_proto/api.proto,sha256=
|
158
|
+
modal_proto/api.proto,sha256=aBHQSEFm1Os9ciCl6N9N5bhumjdJIpl7VPSbP2Chjk4,96432
|
159
159
|
modal_proto/api_grpc.py,sha256=iY5o_Tm4VDP-Wa1JgA_NpQa_Y-4FYB_RN9wdSUExjwI,117469
|
160
|
-
modal_proto/api_pb2.py,sha256=
|
161
|
-
modal_proto/api_pb2.pyi,sha256=
|
160
|
+
modal_proto/api_pb2.py,sha256=PTGsaddASU8iqRoaTFmV5bNg-TtGGUGvf8tTVWjeR1Q,338641
|
161
|
+
modal_proto/api_pb2.pyi,sha256=hMvUMcYnpt7tR0fdkL-sDuOM-r2vistuds_rL03xY-k,463959
|
162
162
|
modal_proto/api_pb2_grpc.py,sha256=NL5prOS_hh_pA1hVvQP_ZRE1w49N-PR8iNPRZ65i6nA,254089
|
163
163
|
modal_proto/api_pb2_grpc.pyi,sha256=Xxgdcnv1mBnu5_AQxJ6fo0yz7GnqVU0HVObNfZWHVfM,59440
|
164
164
|
modal_proto/modal_api_grpc.py,sha256=0ir2lnwT3-IgPcAWw98yWMAiqZPkjvNro9UBk4u8hnk,17763
|
@@ -170,10 +170,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
|
|
170
170
|
modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
171
171
|
modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
|
172
172
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
173
|
-
modal_version/__init__.py,sha256=
|
173
|
+
modal_version/__init__.py,sha256=9p5cM97dzsoK-TX04rbu9Y6nGx9swUC56MLMfh1PLS4,115
|
174
174
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
175
|
-
modal-1.0.
|
176
|
-
modal-1.0.
|
177
|
-
modal-1.0.
|
178
|
-
modal-1.0.
|
179
|
-
modal-1.0.
|
175
|
+
modal-1.0.4.dist-info/METADATA,sha256=zKzh_QazPnnHnJikFZk3NUOp-_KnSY0bRpmafwYtmKM,2449
|
176
|
+
modal-1.0.4.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
177
|
+
modal-1.0.4.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
178
|
+
modal-1.0.4.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
179
|
+
modal-1.0.4.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
@@ -2440,6 +2440,9 @@ message Sandbox {
|
|
2440
2440
|
|
2441
2441
|
// If set, overrides the runtime used by the function, either "runc" or "gvisor".
|
2442
2442
|
optional string runtime = 28;
|
2443
|
+
|
2444
|
+
// If set, the sandbox will be created with verbose logging enabled.
|
2445
|
+
bool verbose = 29;
|
2443
2446
|
}
|
2444
2447
|
|
2445
2448
|
message SandboxCreateRequest {
|
@@ -2793,6 +2796,7 @@ message TaskInfo {
|
|
2793
2796
|
modal.client.GenericResult result = 4;
|
2794
2797
|
double enqueued_at = 5;
|
2795
2798
|
string gpu_type = 6;
|
2799
|
+
string sandbox_id = 7;
|
2796
2800
|
}
|
2797
2801
|
|
2798
2802
|
message TaskListRequest {
|