modal 0.73.104__py3-none-any.whl → 0.73.106__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- modal/_functions.py +2 -1
- modal/client.pyi +2 -2
- modal/image.py +27 -0
- modal/image.pyi +2 -0
- {modal-0.73.104.dist-info → modal-0.73.106.dist-info}/METADATA +1 -1
- {modal-0.73.104.dist-info → modal-0.73.106.dist-info}/RECORD +11 -11
- modal_version/_version_generated.py +1 -1
- {modal-0.73.104.dist-info → modal-0.73.106.dist-info}/LICENSE +0 -0
- {modal-0.73.104.dist-info → modal-0.73.106.dist-info}/WHEEL +0 -0
- {modal-0.73.104.dist-info → modal-0.73.106.dist-info}/entry_points.txt +0 -0
- {modal-0.73.104.dist-info → modal-0.73.106.dist-info}/top_level.txt +0 -0
modal/_functions.py
CHANGED
@@ -245,7 +245,8 @@ class _Invocation:
|
|
245
245
|
or not ctx.retry_policy
|
246
246
|
or ctx.retry_policy.retries == 0
|
247
247
|
or ctx.function_call_invocation_type != api_pb2.FUNCTION_CALL_INVOCATION_TYPE_SYNC
|
248
|
-
|
248
|
+
# TODO: Eventually we want to honor this flag. For now, we ignore it.
|
249
|
+
# or not ctx.sync_client_retries_enabled
|
249
250
|
):
|
250
251
|
return await self._get_single_output()
|
251
252
|
|
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 = "0.73.
|
34
|
+
version: str = "0.73.106",
|
35
35
|
): ...
|
36
36
|
def is_closed(self) -> bool: ...
|
37
37
|
@property
|
@@ -93,7 +93,7 @@ class Client:
|
|
93
93
|
server_url: str,
|
94
94
|
client_type: int,
|
95
95
|
credentials: typing.Optional[tuple[str, str]],
|
96
|
-
version: str = "0.73.
|
96
|
+
version: str = "0.73.106",
|
97
97
|
): ...
|
98
98
|
def is_closed(self) -> bool: ...
|
99
99
|
@property
|
modal/image.py
CHANGED
@@ -1444,6 +1444,9 @@ class _Image(_Object, type_prefix="im"):
|
|
1444
1444
|
f"RUN micromamba install -n base -y python={validated_python_version} pip -c conda-forge",
|
1445
1445
|
]
|
1446
1446
|
commands = _Image._registry_setup_commands(tag, version, setup_commands)
|
1447
|
+
if version > "2024.10":
|
1448
|
+
# for convenience when launching in a sandbox: sleep for 48h
|
1449
|
+
commands.append(f'CMD ["sleep", "{48 * 3600}"]')
|
1447
1450
|
context_files = {CONTAINER_REQUIREMENTS_PATH: _get_modal_requirements_path(version, python_version)}
|
1448
1451
|
return DockerfileSpec(commands=commands, context_files=context_files)
|
1449
1452
|
|
@@ -1833,6 +1836,9 @@ class _Image(_Object, type_prefix="im"):
|
|
1833
1836
|
]
|
1834
1837
|
if version > "2023.12":
|
1835
1838
|
commands.append(f"RUN rm {CONTAINER_REQUIREMENTS_PATH}")
|
1839
|
+
if version > "2024.10":
|
1840
|
+
# for convenience when launching in a sandbox: sleep for 48h
|
1841
|
+
commands.append(f'CMD ["sleep", "{48 * 3600}"]')
|
1836
1842
|
return DockerfileSpec(commands=commands, context_files=context_files)
|
1837
1843
|
|
1838
1844
|
return _Image._from_args(
|
@@ -2021,6 +2027,27 @@ class _Image(_Object, type_prefix="im"):
|
|
2021
2027
|
dockerfile_function=build_dockerfile,
|
2022
2028
|
)
|
2023
2029
|
|
2030
|
+
def cmd(self, cmd: list[str]) -> "_Image":
|
2031
|
+
"""Set the default entrypoint argument (`CMD`) for the image.
|
2032
|
+
|
2033
|
+
**Example**
|
2034
|
+
|
2035
|
+
```python
|
2036
|
+
image = (
|
2037
|
+
modal.Image.debian_slim().cmd(["python", "app.py"])
|
2038
|
+
)
|
2039
|
+
```
|
2040
|
+
"""
|
2041
|
+
|
2042
|
+
if not isinstance(cmd, list) or not all(isinstance(x, str) for x in cmd):
|
2043
|
+
raise InvalidError("Image CMD must be a list of strings.")
|
2044
|
+
|
2045
|
+
cmd_str = _flatten_str_args("cmd", "cmd", cmd)
|
2046
|
+
cmd_str = '"' + '", "'.join(cmd_str) + '"' if cmd_str else ""
|
2047
|
+
dockerfile_cmd = f"CMD [{cmd_str}]"
|
2048
|
+
|
2049
|
+
return self.dockerfile_commands(dockerfile_cmd)
|
2050
|
+
|
2024
2051
|
# Live handle methods
|
2025
2052
|
|
2026
2053
|
@contextlib.contextmanager
|
modal/image.pyi
CHANGED
@@ -332,6 +332,7 @@ class _Image(modal._object._Object):
|
|
332
332
|
) -> _Image: ...
|
333
333
|
def env(self, vars: dict[str, str]) -> _Image: ...
|
334
334
|
def workdir(self, path: typing.Union[str, pathlib.PurePosixPath]) -> _Image: ...
|
335
|
+
def cmd(self, cmd: list[str]) -> _Image: ...
|
335
336
|
def imports(self): ...
|
336
337
|
def _logs(self) -> typing.AsyncGenerator[str, None]: ...
|
337
338
|
|
@@ -591,6 +592,7 @@ class Image(modal.object.Object):
|
|
591
592
|
) -> Image: ...
|
592
593
|
def env(self, vars: dict[str, str]) -> Image: ...
|
593
594
|
def workdir(self, path: typing.Union[str, pathlib.PurePosixPath]) -> Image: ...
|
595
|
+
def cmd(self, cmd: list[str]) -> Image: ...
|
594
596
|
def imports(self): ...
|
595
597
|
|
596
598
|
class ___logs_spec(typing_extensions.Protocol[SUPERSELF]):
|
@@ -3,7 +3,7 @@ modal/__main__.py,sha256=CgIjP8m1xJjjd4AXc-delmR6LdBCZclw2A_V38CFIio,2870
|
|
3
3
|
modal/_clustered_functions.py,sha256=kTf-9YBXY88NutC1akI-gCbvf01RhMPCw-zoOI_YIUE,2700
|
4
4
|
modal/_clustered_functions.pyi,sha256=vllkegc99A0jrUOWa8mdlSbdp6uz36TsHhGxysAOpaQ,771
|
5
5
|
modal/_container_entrypoint.py,sha256=arhkIoF8nQNfa4iwYGSoqN3QMDg5M38QNAODXC8TlKc,29301
|
6
|
-
modal/_functions.py,sha256=
|
6
|
+
modal/_functions.py,sha256=SrgTst7GCYcj1IVCaW126T6wfZLWeF_VJYyLVcgBaVc,73133
|
7
7
|
modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
|
8
8
|
modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
|
9
9
|
modal/_object.py,sha256=JBIECWdfpRKCaCxVWZbC3Q1kF5Whk_EKvY9f4Y6AFyg,11446
|
@@ -22,7 +22,7 @@ modal/app.py,sha256=ojhuLZuNZAQ1OsbDH0k6G4pm1W7bOIvZfXbaKlvQ-Ao,45622
|
|
22
22
|
modal/app.pyi,sha256=tZFbcsu20SuvfB2puxCyuXLFNJ9bQulzag55rVpgZmc,26827
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
24
24
|
modal/client.py,sha256=j9D3hNis1lfhnz9lVFGgJgowbH3PaGUzNKgHPWYG778,15372
|
25
|
-
modal/client.pyi,sha256=
|
25
|
+
modal/client.pyi,sha256=kTCqdHcf_pCO2ELg7v7uxaCnGJjAxH5-EJXA90yimbI,7661
|
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=JhDbaZZHN52lqA_roY1BCbcN9BvbkUcdXiM2Kg9lIc0,31717
|
@@ -43,8 +43,8 @@ modal/file_pattern_matcher.py,sha256=trosX-Bp7dOubudN1bLLhRAoidWy1TcoaR4Pv8CedWw
|
|
43
43
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
44
44
|
modal/functions.pyi,sha256=ujc6eIYyNmMn__4dpxEy85-vZmAniZv56D2A4uBgs6U,14377
|
45
45
|
modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
|
46
|
-
modal/image.py,sha256=
|
47
|
-
modal/image.pyi,sha256=
|
46
|
+
modal/image.py,sha256=o9wnpB03agSoErzh-odrKU2BprROxRZOWGJidjZeeds,91811
|
47
|
+
modal/image.pyi,sha256=DQ4DLOCPr6_yV7z4LS0bTY0rOyvQP9-dQOrzaW7pPG8,25260
|
48
48
|
modal/io_streams.py,sha256=h5O2LmbRoT9l777z3TQhCAm-JF1r7avZ2ykXlejztDs,15163
|
49
49
|
modal/io_streams.pyi,sha256=bJ7ZLmSmJ0nKoa6r4FJpbqvzdUVa0lEe0Fa-MMpMezU,5071
|
50
50
|
modal/mount.py,sha256=JII0zTS1fPCcCbZgO18okkOuTDqYCxY1DIVa6i1E9cI,32196
|
@@ -169,10 +169,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
169
169
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
170
170
|
modal_version/__init__.py,sha256=wiJQ53c-OMs0Xf1UeXOxQ7FwlV1VzIjnX6o-pRYZ_Pk,470
|
171
171
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
172
|
-
modal_version/_version_generated.py,sha256=
|
173
|
-
modal-0.73.
|
174
|
-
modal-0.73.
|
175
|
-
modal-0.73.
|
176
|
-
modal-0.73.
|
177
|
-
modal-0.73.
|
178
|
-
modal-0.73.
|
172
|
+
modal_version/_version_generated.py,sha256=6gmddUoETCE2rVPQH83wYghpFuNpnKSHUheKCIXM2Vk,150
|
173
|
+
modal-0.73.106.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
174
|
+
modal-0.73.106.dist-info/METADATA,sha256=0vj17m8hM1gmNyGB3y2hmzXRR0I-qKncrbxRB0dsRBE,2453
|
175
|
+
modal-0.73.106.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
176
|
+
modal-0.73.106.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
177
|
+
modal-0.73.106.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
178
|
+
modal-0.73.106.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|