modal 0.75.2__py3-none-any.whl → 0.75.3__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/dict.py +15 -8
- modal/dict.pyi +3 -3
- {modal-0.75.2.dist-info → modal-0.75.3.dist-info}/METADATA +1 -1
- {modal-0.75.2.dist-info → modal-0.75.3.dist-info}/RECORD +10 -10
- modal_version/_version_generated.py +1 -1
- {modal-0.75.2.dist-info → modal-0.75.3.dist-info}/WHEEL +0 -0
- {modal-0.75.2.dist-info → modal-0.75.3.dist-info}/entry_points.txt +0 -0
- {modal-0.75.2.dist-info → modal-0.75.3.dist-info}/licenses/LICENSE +0 -0
- {modal-0.75.2.dist-info → modal-0.75.3.dist-info}/top_level.txt +0 -0
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.75.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.75.3"
|
31
31
|
): ...
|
32
32
|
def is_closed(self) -> bool: ...
|
33
33
|
@property
|
@@ -86,7 +86,7 @@ class Client:
|
|
86
86
|
_snapshotted: bool
|
87
87
|
|
88
88
|
def __init__(
|
89
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.75.
|
89
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.75.3"
|
90
90
|
): ...
|
91
91
|
def is_closed(self) -> bool: ...
|
92
92
|
@property
|
modal/dict.py
CHANGED
@@ -35,10 +35,12 @@ class _Dict(_Object, type_prefix="di"):
|
|
35
35
|
|
36
36
|
**Lifetime of a Dict and its items**
|
37
37
|
|
38
|
-
An individual
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
An individual Dict entry will expire after 7 days of inactivity (no reads or writes). The
|
39
|
+
Dict entries are written to durable storage.
|
40
|
+
|
41
|
+
Legacy Dicts (created before 2025-05-20) will still have entries expire 30 days after being
|
42
|
+
last added. Additionally, data are stored in memory on the Modal server and could be lost due to
|
43
|
+
unexpected server restarts. Eventually, these Dicts will be fully sunset.
|
42
44
|
|
43
45
|
**Usage**
|
44
46
|
|
@@ -275,13 +277,18 @@ class _Dict(_Object, type_prefix="di"):
|
|
275
277
|
raise exc
|
276
278
|
|
277
279
|
@live_method
|
278
|
-
async def put(self, key: Any, value: Any) ->
|
279
|
-
"""Add a specific key-value pair to the dictionary.
|
280
|
+
async def put(self, key: Any, value: Any, *, skip_if_exists: bool = False) -> bool:
|
281
|
+
"""Add a specific key-value pair to the dictionary.
|
282
|
+
|
283
|
+
Returns True if the key-value pair was added and False if it wasn't because the key already existed and
|
284
|
+
`skip_if_exists` was set.
|
285
|
+
"""
|
280
286
|
updates = {key: value}
|
281
287
|
serialized = _serialize_dict(updates)
|
282
|
-
req = api_pb2.DictUpdateRequest(dict_id=self.object_id, updates=serialized)
|
288
|
+
req = api_pb2.DictUpdateRequest(dict_id=self.object_id, updates=serialized, if_not_exists=skip_if_exists)
|
283
289
|
try:
|
284
|
-
await retry_transient_errors(self._client.stub.DictUpdate, req)
|
290
|
+
resp = await retry_transient_errors(self._client.stub.DictUpdate, req)
|
291
|
+
return resp.created
|
285
292
|
except GRPCError as exc:
|
286
293
|
if "status = '413'" in exc.message:
|
287
294
|
raise RequestSizeError("Dict.put request is too large") from exc
|
modal/dict.pyi
CHANGED
@@ -49,7 +49,7 @@ class _Dict(modal._object._Object):
|
|
49
49
|
async def len(self) -> int: ...
|
50
50
|
async def __getitem__(self, key: typing.Any) -> typing.Any: ...
|
51
51
|
async def update(self, other: typing.Optional[collections.abc.Mapping] = None, /, **kwargs) -> None: ...
|
52
|
-
async def put(self, key: typing.Any, value: typing.Any) ->
|
52
|
+
async def put(self, key: typing.Any, value: typing.Any, *, skip_if_exists: bool = False) -> bool: ...
|
53
53
|
async def __setitem__(self, key: typing.Any, value: typing.Any) -> None: ...
|
54
54
|
async def pop(self, key: typing.Any) -> typing.Any: ...
|
55
55
|
async def __delitem__(self, key: typing.Any) -> typing.Any: ...
|
@@ -161,8 +161,8 @@ class Dict(modal.object.Object):
|
|
161
161
|
update: __update_spec[typing_extensions.Self]
|
162
162
|
|
163
163
|
class __put_spec(typing_extensions.Protocol[SUPERSELF]):
|
164
|
-
def __call__(self, /, key: typing.Any, value: typing.Any) ->
|
165
|
-
async def aio(self, /, key: typing.Any, value: typing.Any) ->
|
164
|
+
def __call__(self, /, key: typing.Any, value: typing.Any, *, skip_if_exists: bool = False) -> bool: ...
|
165
|
+
async def aio(self, /, key: typing.Any, value: typing.Any, *, skip_if_exists: bool = False) -> bool: ...
|
166
166
|
|
167
167
|
put: __put_spec[typing_extensions.Self]
|
168
168
|
|
@@ -22,7 +22,7 @@ modal/app.py,sha256=xojuGZv4LaQwZU5ntj7WbmMjeNuB9Gll8Mzqe2LyiEs,51323
|
|
22
22
|
modal/app.pyi,sha256=zNwR1_2LpmQc9AhemuAeVdk90XNYDw9keOkXAwAATeA,28732
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
24
24
|
modal/client.py,sha256=o-aQThHpvDHUzg_kUafyhWzACViUBhY2WLZ2EitnSHA,16787
|
25
|
-
modal/client.pyi,sha256=
|
25
|
+
modal/client.pyi,sha256=6gdjIEcvM8cVSKHfdpfQfQj6aqI5HWxDEbcpSavE5Ls,8383
|
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=aHoMEWMZUN7bOezs3tRPxzS1FP3gTxZBORVjbPmtxyg,35338
|
@@ -30,8 +30,8 @@ modal/cls.pyi,sha256=klQkXHXhl5gTjRo_XDV6PGecnJeFOudSMXid_kanumI,12090
|
|
30
30
|
modal/config.py,sha256=OOMEJ5LHNFbHRW5wUpuhl0TH6EPW8D1XV9I3OJXrZrk,12668
|
31
31
|
modal/container_process.py,sha256=vvyK3DVPUMsuqvkKdUiQ49cDLF9JawGrxpglLk5vfgI,6208
|
32
32
|
modal/container_process.pyi,sha256=cR4aRHTbcVvmxGCc1_k2Ey8JllJIAQYq9PBKx0_1TuI,2916
|
33
|
-
modal/dict.py,sha256=
|
34
|
-
modal/dict.pyi,sha256=
|
33
|
+
modal/dict.py,sha256=wOifmVwJS-X6FS0JcvJCfL9mrny6zWxk3EHmp-2MDpU,14481
|
34
|
+
modal/dict.pyi,sha256=RBaQyOd1ABRNN7vIf5L_rv94y7Kq5Qn9IlKHSr4j8N0,8120
|
35
35
|
modal/environments.py,sha256=t_TdUyORfIjlEAOS7I4My1qHi0cVsjPxwKloLmAAZMc,6935
|
36
36
|
modal/environments.pyi,sha256=4HbI0kywveaUVI7HqDtZ4HphCTGXYi_wie2hz87up5A,3425
|
37
37
|
modal/exception.py,sha256=4JyO-SACaLNDe2QC48EjsK8GMkZ8AgEurZ8j1YdRu8E,5263
|
@@ -146,7 +146,7 @@ modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddR
|
|
146
146
|
modal/requirements/PREVIEW.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
|
147
147
|
modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
|
148
148
|
modal/requirements/base-images.json,sha256=57vMSqzMbLBxw5tFWSaMiIkkVEps4JfX5PAtXGnkS4U,740
|
149
|
-
modal-0.75.
|
149
|
+
modal-0.75.3.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
150
150
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
151
151
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
152
152
|
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
@@ -171,9 +171,9 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
171
171
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
172
172
|
modal_version/__init__.py,sha256=PenIvZdwt-HVdbetAyxuPoyZTtzx2moKZoJLK8iZ804,470
|
173
173
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
174
|
-
modal_version/_version_generated.py,sha256=
|
175
|
-
modal-0.75.
|
176
|
-
modal-0.75.
|
177
|
-
modal-0.75.
|
178
|
-
modal-0.75.
|
179
|
-
modal-0.75.
|
174
|
+
modal_version/_version_generated.py,sha256=k8TneCpSkVGQTxxbVJf-7dhd8Izlr_51vflyqUsT-sk,148
|
175
|
+
modal-0.75.3.dist-info/METADATA,sha256=JHDZFqFdzeLOo5uYaICidpvckcdVc815cE9FRsyou7I,2450
|
176
|
+
modal-0.75.3.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
177
|
+
modal-0.75.3.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
178
|
+
modal-0.75.3.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
179
|
+
modal-0.75.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|