modal 1.0.3.dev28__py3-none-any.whl → 1.0.4.dev2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- modal/client.pyi +2 -2
- modal/functions.pyi +6 -6
- 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-1.0.3.dev28.dist-info → modal-1.0.4.dev2.dist-info}/METADATA +1 -1
- {modal-1.0.3.dev28.dist-info → modal-1.0.4.dev2.dist-info}/RECORD +14 -14
- modal_version/__init__.py +1 -1
- {modal-1.0.3.dev28.dist-info → modal-1.0.4.dev2.dist-info}/WHEEL +0 -0
- {modal-1.0.3.dev28.dist-info → modal-1.0.4.dev2.dist-info}/entry_points.txt +0 -0
- {modal-1.0.3.dev28.dist-info → modal-1.0.4.dev2.dist-info}/licenses/LICENSE +0 -0
- {modal-1.0.3.dev28.dist-info → modal-1.0.4.dev2.dist-info}/top_level.txt +0 -0
modal/client.pyi
CHANGED
@@ -31,7 +31,7 @@ class _Client:
|
|
31
31
|
server_url: str,
|
32
32
|
client_type: int,
|
33
33
|
credentials: typing.Optional[tuple[str, str]],
|
34
|
-
version: str = "1.0.
|
34
|
+
version: str = "1.0.4.dev2",
|
35
35
|
): ...
|
36
36
|
def is_closed(self) -> bool: ...
|
37
37
|
@property
|
@@ -94,7 +94,7 @@ class Client:
|
|
94
94
|
server_url: str,
|
95
95
|
client_type: int,
|
96
96
|
credentials: typing.Optional[tuple[str, str]],
|
97
|
-
version: str = "1.0.
|
97
|
+
version: str = "1.0.4.dev2",
|
98
98
|
): ...
|
99
99
|
def is_closed(self) -> bool: ...
|
100
100
|
@property
|
modal/functions.pyi
CHANGED
@@ -227,11 +227,11 @@ class Function(
|
|
227
227
|
|
228
228
|
_call_generator: ___call_generator_spec[typing_extensions.Self]
|
229
229
|
|
230
|
-
class __remote_spec(typing_extensions.Protocol[
|
230
|
+
class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
231
231
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
232
232
|
async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
233
233
|
|
234
|
-
remote: __remote_spec[modal._functions.
|
234
|
+
remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
|
235
235
|
|
236
236
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
237
237
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
|
@@ -246,12 +246,12 @@ class Function(
|
|
246
246
|
self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
|
247
247
|
) -> modal._functions.OriginalReturnType: ...
|
248
248
|
|
249
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
249
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
250
250
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
251
251
|
async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
252
252
|
|
253
253
|
_experimental_spawn: ___experimental_spawn_spec[
|
254
|
-
modal._functions.
|
254
|
+
modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
|
255
255
|
]
|
256
256
|
|
257
257
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
|
@@ -260,11 +260,11 @@ class Function(
|
|
260
260
|
|
261
261
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
|
262
262
|
|
263
|
-
class __spawn_spec(typing_extensions.Protocol[
|
263
|
+
class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
264
264
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
265
265
|
async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
266
266
|
|
267
|
-
spawn: __spawn_spec[modal._functions.
|
267
|
+
spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
|
268
268
|
|
269
269
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
|
270
270
|
|
modal/mount.py
CHANGED
@@ -290,6 +290,7 @@ class _Mount(_Object, type_prefix="mo"):
|
|
290
290
|
_deployment_name: Optional[str] = None
|
291
291
|
_namespace: Optional[int] = None
|
292
292
|
_environment_name: Optional[str] = None
|
293
|
+
_allow_overwrite: bool = False
|
293
294
|
_content_checksum_sha256_hex: Optional[str] = None
|
294
295
|
|
295
296
|
@staticmethod
|
@@ -600,11 +601,16 @@ class _Mount(_Object, type_prefix="mo"):
|
|
600
601
|
# Build the mount.
|
601
602
|
status_row.message(f"Creating mount {message_label}: Finalizing index of {len(files)} files")
|
602
603
|
if self._deployment_name:
|
604
|
+
creation_type = (
|
605
|
+
api_pb2.OBJECT_CREATION_TYPE_CREATE_IF_MISSING
|
606
|
+
if self._allow_overwrite
|
607
|
+
else api_pb2.OBJECT_CREATION_TYPE_CREATE_FAIL_IF_EXISTS
|
608
|
+
)
|
603
609
|
req = api_pb2.MountGetOrCreateRequest(
|
604
610
|
deployment_name=self._deployment_name,
|
605
611
|
namespace=self._namespace,
|
606
612
|
environment_name=self._environment_name,
|
607
|
-
object_creation_type=
|
613
|
+
object_creation_type=creation_type,
|
608
614
|
files=files,
|
609
615
|
)
|
610
616
|
elif resolver.app_id is not None:
|
@@ -736,7 +742,9 @@ class _Mount(_Object, type_prefix="mo"):
|
|
736
742
|
self: "_Mount",
|
737
743
|
deployment_name: Optional[str] = None,
|
738
744
|
namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
|
745
|
+
*,
|
739
746
|
environment_name: Optional[str] = None,
|
747
|
+
allow_overwrite: bool = False,
|
740
748
|
client: Optional[_Client] = None,
|
741
749
|
) -> None:
|
742
750
|
check_object_name(deployment_name, "Mount")
|
@@ -744,6 +752,7 @@ class _Mount(_Object, type_prefix="mo"):
|
|
744
752
|
self._deployment_name = deployment_name
|
745
753
|
self._namespace = namespace
|
746
754
|
self._environment_name = environment_name
|
755
|
+
self._allow_overwrite = allow_overwrite
|
747
756
|
if client is None:
|
748
757
|
client = await _Client.from_env()
|
749
758
|
resolver = Resolver(client=client, environment_name=environment_name)
|
@@ -826,35 +835,34 @@ import sys; sys.path.append('{REMOTE_PACKAGES_PATH}')
|
|
826
835
|
""".strip()
|
827
836
|
|
828
837
|
|
829
|
-
async def
|
838
|
+
async def _create_single_client_dependency_mount(
|
830
839
|
client: _Client,
|
831
840
|
builder_version: str,
|
832
841
|
python_version: str,
|
833
|
-
platform: str,
|
834
842
|
arch: str,
|
835
|
-
|
843
|
+
platform: str,
|
844
|
+
uv_python_platform: str,
|
836
845
|
check_if_exists: bool = True,
|
846
|
+
allow_overwrite: bool = False,
|
837
847
|
):
|
838
|
-
import subprocess
|
839
848
|
import tempfile
|
840
849
|
|
841
850
|
profile_environment = config.get("environment")
|
842
851
|
abi_tag = "cp" + python_version.replace(".", "")
|
843
852
|
mount_name = f"{builder_version}-{abi_tag}-{platform}-{arch}"
|
844
|
-
uv_python_platform = uv_python_platform or f"{arch}-{platform}"
|
845
853
|
|
846
854
|
if check_if_exists:
|
847
855
|
try:
|
848
856
|
await Mount.from_name(mount_name, namespace=api_pb2.DEPLOYMENT_NAMESPACE_GLOBAL).hydrate.aio(client)
|
849
|
-
print(f"
|
857
|
+
print(f"➖ Found existing mount {mount_name} in global namespace.")
|
850
858
|
return
|
851
859
|
except modal.exception.NotFoundError:
|
852
860
|
pass
|
853
861
|
|
854
|
-
with tempfile.TemporaryDirectory() as tmpd:
|
862
|
+
with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as tmpd:
|
855
863
|
print(f"📦 Building {mount_name}.")
|
856
864
|
requirements = os.path.join(os.path.dirname(__file__), f"requirements/{builder_version}.txt")
|
857
|
-
|
865
|
+
cmd = " ".join(
|
858
866
|
[
|
859
867
|
"uv",
|
860
868
|
"pip",
|
@@ -871,12 +879,21 @@ async def _create_single_mount(
|
|
871
879
|
uv_python_platform,
|
872
880
|
"--python-version",
|
873
881
|
python_version,
|
874
|
-
]
|
875
|
-
check=True,
|
876
|
-
capture_output=True,
|
882
|
+
]
|
877
883
|
)
|
884
|
+
proc = await asyncio.create_subprocess_shell(
|
885
|
+
cmd,
|
886
|
+
stdout=asyncio.subprocess.PIPE,
|
887
|
+
stderr=asyncio.subprocess.PIPE,
|
888
|
+
)
|
889
|
+
await proc.wait()
|
890
|
+
if proc.returncode:
|
891
|
+
stdout, stderr = await proc.communicate()
|
892
|
+
print(stdout.decode("utf-8"))
|
893
|
+
print(stderr.decode("utf-8"))
|
894
|
+
raise RuntimeError(f"Subprocess failed with {proc.returncode}", proc.args)
|
878
895
|
|
879
|
-
print(f"🌐 Downloaded and unpacked packages to {tmpd}.")
|
896
|
+
print(f"🌐 Downloaded and unpacked {mount_name} packages to {tmpd}.")
|
880
897
|
|
881
898
|
python_mount = Mount._from_local_dir(tmpd, remote_path=REMOTE_PACKAGES_PATH)
|
882
899
|
|
@@ -895,6 +912,7 @@ async def _create_single_mount(
|
|
895
912
|
mount_name,
|
896
913
|
api_pb2.DEPLOYMENT_NAMESPACE_GLOBAL,
|
897
914
|
environment_name=profile_environment,
|
915
|
+
allow_overwrite=allow_overwrite,
|
898
916
|
client=client,
|
899
917
|
)
|
900
918
|
print(f"✅ Deployed mount {mount_name} to global namespace.")
|
@@ -902,34 +920,30 @@ async def _create_single_mount(
|
|
902
920
|
|
903
921
|
async def _create_client_dependency_mounts(
|
904
922
|
client=None,
|
905
|
-
check_if_exists=True,
|
906
923
|
python_versions: list[str] = list(PYTHON_STANDALONE_VERSIONS),
|
924
|
+
check_if_exists=True,
|
907
925
|
):
|
926
|
+
arch = "x86_64"
|
927
|
+
platform_tags = [
|
928
|
+
("manylinux_2_17", f"{arch}-manylinux_2_17"), # glibc >= 2.17
|
929
|
+
("musllinux_1_2", f"{arch}-unknown-linux-musl"), # musl >= 1.2
|
930
|
+
]
|
908
931
|
coros = []
|
909
|
-
for
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
client,
|
925
|
-
"PREVIEW",
|
926
|
-
python_version,
|
927
|
-
"musllinux_1_2",
|
928
|
-
"x86_64",
|
929
|
-
uv_python_platform="x86_64-unknown-linux-musl",
|
930
|
-
check_if_exists=check_if_exists,
|
931
|
-
)
|
932
|
-
)
|
932
|
+
for builder_version in ["PREVIEW"]:
|
933
|
+
for python_version in python_versions:
|
934
|
+
for platform, uv_python_platform in platform_tags:
|
935
|
+
coros.append(
|
936
|
+
_create_single_client_dependency_mount(
|
937
|
+
client,
|
938
|
+
builder_version,
|
939
|
+
python_version,
|
940
|
+
arch,
|
941
|
+
platform,
|
942
|
+
uv_python_platform,
|
943
|
+
check_if_exists=builder_version != "PREVIEW",
|
944
|
+
allow_overwrite=builder_version == "PREVIEW",
|
945
|
+
)
|
946
|
+
)
|
933
947
|
await TaskContext.gather(*coros)
|
934
948
|
|
935
949
|
|
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
|
+
}
|
@@ -22,7 +22,7 @@ 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=1HBP9c3U7huNsBnj9mq1qb-HRYvXK8joPasI8oz5jbA,8457
|
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=dBbeARwOWftlKd1cwtM0cHFtQWSWkwVXwVmOV4w0SyI,37907
|
@@ -39,20 +39,20 @@ modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
|
|
39
39
|
modal/file_io.pyi,sha256=oB7x-rKq7bmm8cA7Z7W9C9yeko7KK9m9i5GidFnkGK4,9569
|
40
40
|
modal/file_pattern_matcher.py,sha256=wov-otB5M1oTdrYDtR2_VgacYin2srdtAP4McA1Cqzw,6516
|
41
41
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
42
|
-
modal/functions.pyi,sha256=
|
42
|
+
modal/functions.pyi,sha256=5T58OucdNU4I-LqhBdwsWSAGka-Wa8nP2GcZ5K1bOL0,16236
|
43
43
|
modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
|
44
44
|
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
|
@@ -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.dev2.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
|
@@ -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=V0H2rDQGDIFsvMdzsaZ5eWhMcq0sZQCcl_IN-4nGP6o,120
|
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.dev2.dist-info/METADATA,sha256=9xR5HKpkbBYeh-9gvGJSSFRRHW8Ku-mARd767YC_Ys8,2454
|
176
|
+
modal-1.0.4.dev2.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
177
|
+
modal-1.0.4.dev2.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
178
|
+
modal-1.0.4.dev2.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
179
|
+
modal-1.0.4.dev2.dist-info/RECORD,,
|
modal_version/__init__.py
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|