modal 0.73.63__py3-none-any.whl → 0.73.65__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 +18 -0
- modal/client.pyi +2 -2
- modal/image.py +5 -2
- {modal-0.73.63.dist-info → modal-0.73.65.dist-info}/METADATA +1 -1
- {modal-0.73.63.dist-info → modal-0.73.65.dist-info}/RECORD +10 -10
- modal_version/_version_generated.py +1 -1
- {modal-0.73.63.dist-info → modal-0.73.65.dist-info}/LICENSE +0 -0
- {modal-0.73.63.dist-info → modal-0.73.65.dist-info}/WHEEL +0 -0
- {modal-0.73.63.dist-info → modal-0.73.65.dist-info}/entry_points.txt +0 -0
- {modal-0.73.63.dist-info → modal-0.73.65.dist-info}/top_level.txt +0 -0
modal/_functions.py
CHANGED
@@ -1572,6 +1572,24 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
|
|
1572
1572
|
async def from_id(
|
1573
1573
|
function_call_id: str, client: Optional[_Client] = None, is_generator: bool = False
|
1574
1574
|
) -> "_FunctionCall[Any]":
|
1575
|
+
"""Instantiate a FunctionCall object from an existing ID.
|
1576
|
+
|
1577
|
+
Examples:
|
1578
|
+
|
1579
|
+
```python notest
|
1580
|
+
# Spawn a FunctionCall and keep track of its object ID
|
1581
|
+
fc = my_func.spawn()
|
1582
|
+
fc_id = fc.object_id
|
1583
|
+
|
1584
|
+
# Later, use the ID to re-instantiate the FunctionCall object
|
1585
|
+
fc = _FunctionCall.from_id(fc_id)
|
1586
|
+
result = fc.get()
|
1587
|
+
```
|
1588
|
+
|
1589
|
+
Note that it's only necessary to re-instantiate the `FunctionCall` with this method
|
1590
|
+
if you no longer have access to the original object returned from `Function.spawn`.
|
1591
|
+
|
1592
|
+
"""
|
1575
1593
|
if client is None:
|
1576
1594
|
client = await _Client.from_env()
|
1577
1595
|
|
modal/client.pyi
CHANGED
@@ -27,7 +27,7 @@ class _Client:
|
|
27
27
|
_snapshotted: bool
|
28
28
|
|
29
29
|
def __init__(
|
30
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.65"
|
31
31
|
): ...
|
32
32
|
def is_closed(self) -> bool: ...
|
33
33
|
@property
|
@@ -85,7 +85,7 @@ class Client:
|
|
85
85
|
_snapshotted: bool
|
86
86
|
|
87
87
|
def __init__(
|
88
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.
|
88
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.65"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
modal/image.py
CHANGED
@@ -2013,10 +2013,13 @@ class _Image(_Object, type_prefix="im"):
|
|
2013
2013
|
)
|
2014
2014
|
```
|
2015
2015
|
"""
|
2016
|
+
non_str_keys = [key for key, val in vars.items() if not isinstance(val, str)]
|
2017
|
+
if non_str_keys:
|
2018
|
+
raise InvalidError(f"Image ENV variables must be strings. Invalid keys: {non_str_keys}")
|
2016
2019
|
|
2017
2020
|
def build_dockerfile(version: ImageBuilderVersion) -> DockerfileSpec:
|
2018
|
-
|
2019
|
-
return DockerfileSpec(commands=
|
2021
|
+
env_commands = [f"ENV {key}={shlex.quote(val)}" for (key, val) in vars.items()]
|
2022
|
+
return DockerfileSpec(commands=["FROM base"] + env_commands, context_files={})
|
2020
2023
|
|
2021
2024
|
return _Image._from_args(
|
2022
2025
|
base_images={"base": self},
|
@@ -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=2TcHq8h7vpsWUnzIGo7cL_wK2QbSog3vYNiDV68IqN4,70989
|
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=ItQcsMNkz9Y3kdTsvfNarbW-paJ2qabDyQ7njaqY0XI,11359
|
@@ -22,7 +22,7 @@ modal/app.py,sha256=o5mHoHtn41nkvskX_ekJkyfG6MXwj5rqerRi_nnPd0w,44725
|
|
22
22
|
modal/app.pyi,sha256=0MMCgskIL4r3eq8oBcfm2lLyeao2gXjS3iXaIfmaJ-o,25959
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
24
24
|
modal/client.py,sha256=8SQawr7P1PNUCq1UmJMUQXG2jIo4Nmdcs311XqrNLRE,15276
|
25
|
-
modal/client.pyi,sha256=
|
25
|
+
modal/client.pyi,sha256=aUMZk1FgWQLwzqrgJrp16rtBPN1aP2uL_F8_9dr5bMI,7593
|
26
26
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
27
27
|
modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
|
28
28
|
modal/cls.py,sha256=wztMTYkhJyW9iUVqx4_Gga4bJJpUiPgGsS6iacUqy-A,30001
|
@@ -43,7 +43,7 @@ modal/file_pattern_matcher.py,sha256=trosX-Bp7dOubudN1bLLhRAoidWy1TcoaR4Pv8CedWw
|
|
43
43
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
44
44
|
modal/functions.pyi,sha256=p9H14D_n2lAjeVvymu74wDWsL_BnpBrT0BunbAlwviw,14247
|
45
45
|
modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
|
46
|
-
modal/image.py,sha256=
|
46
|
+
modal/image.py,sha256=gch5FEINVW9rswjTrSP4lquO8tTPd8lVBPtaRjoWZNA,91762
|
47
47
|
modal/image.pyi,sha256=Oc2ndYHSdQTcRpZKHSfTdj-m_2oQAsnc2EWTthbNn-s,26380
|
48
48
|
modal/io_streams.py,sha256=QkQiizKRzd5bnbKQsap31LJgBYlAnj4-XkV_50xPYX0,15079
|
49
49
|
modal/io_streams.pyi,sha256=bJ7ZLmSmJ0nKoa6r4FJpbqvzdUVa0lEe0Fa-MMpMezU,5071
|
@@ -168,10 +168,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
168
168
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
169
169
|
modal_version/__init__.py,sha256=wiJQ53c-OMs0Xf1UeXOxQ7FwlV1VzIjnX6o-pRYZ_Pk,470
|
170
170
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
171
|
-
modal_version/_version_generated.py,sha256=
|
172
|
-
modal-0.73.
|
173
|
-
modal-0.73.
|
174
|
-
modal-0.73.
|
175
|
-
modal-0.73.
|
176
|
-
modal-0.73.
|
177
|
-
modal-0.73.
|
171
|
+
modal_version/_version_generated.py,sha256=VlTxREkXcenRUIJD4wW5OoLuueial6Jo240XWqiKypE,149
|
172
|
+
modal-0.73.65.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
173
|
+
modal-0.73.65.dist-info/METADATA,sha256=XK258uKIgYV71Y0p-ZnZYZrZhxieeGPMiJO261TnOY0,2452
|
174
|
+
modal-0.73.65.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
175
|
+
modal-0.73.65.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
176
|
+
modal-0.73.65.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
177
|
+
modal-0.73.65.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|