modal 1.1.2.dev43__py3-none-any.whl → 1.1.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/_functions.py +116 -26
- modal/app.py +2 -2
- modal/client.pyi +2 -10
- modal/dict.py +7 -0
- modal/dict.pyi +18 -0
- modal/functions.pyi +57 -7
- modal/image.py +2 -1
- modal/image.pyi +4 -2
- modal/parallel_map.py +29 -8
- modal/parallel_map.pyi +11 -7
- modal/queue.py +7 -0
- modal/queue.pyi +18 -0
- modal/secret.py +7 -0
- modal/secret.pyi +18 -0
- modal/volume.py +10 -0
- modal/volume.pyi +21 -0
- {modal-1.1.2.dev43.dist-info → modal-1.1.3.dist-info}/METADATA +1 -1
- {modal-1.1.2.dev43.dist-info → modal-1.1.3.dist-info}/RECORD +26 -26
- modal_proto/api.proto +8 -3
- modal_proto/api_pb2.py +493 -493
- modal_proto/api_pb2.pyi +15 -6
- modal_version/__init__.py +1 -1
- {modal-1.1.2.dev43.dist-info → modal-1.1.3.dist-info}/WHEEL +0 -0
- {modal-1.1.2.dev43.dist-info → modal-1.1.3.dist-info}/entry_points.txt +0 -0
- {modal-1.1.2.dev43.dist-info → modal-1.1.3.dist-info}/licenses/LICENSE +0 -0
- {modal-1.1.2.dev43.dist-info → modal-1.1.3.dist-info}/top_level.txt +0 -0
modal/queue.pyi
CHANGED
@@ -64,6 +64,8 @@ class _QueueManager:
|
|
64
64
|
|
65
65
|
Note that this method does not return a local instance of the Queue. You can use
|
66
66
|
`modal.Queue.from_name` to perform a lookup after creation.
|
67
|
+
|
68
|
+
Added in v1.1.2.
|
67
69
|
"""
|
68
70
|
...
|
69
71
|
|
@@ -96,6 +98,8 @@ class _QueueManager:
|
|
96
98
|
```python
|
97
99
|
queues = modal.Queue.objects.list(max_objects=10, created_before="2025-01-01")
|
98
100
|
```
|
101
|
+
|
102
|
+
Added in v1.1.2.
|
99
103
|
"""
|
100
104
|
...
|
101
105
|
|
@@ -123,6 +127,8 @@ class _QueueManager:
|
|
123
127
|
```python notest
|
124
128
|
await modal.Queue.objects.delete("my-queue", environment_name="dev")
|
125
129
|
```
|
130
|
+
|
131
|
+
Added in v1.1.2.
|
126
132
|
"""
|
127
133
|
...
|
128
134
|
|
@@ -165,6 +171,8 @@ class QueueManager:
|
|
165
171
|
|
166
172
|
Note that this method does not return a local instance of the Queue. You can use
|
167
173
|
`modal.Queue.from_name` to perform a lookup after creation.
|
174
|
+
|
175
|
+
Added in v1.1.2.
|
168
176
|
"""
|
169
177
|
...
|
170
178
|
|
@@ -200,6 +208,8 @@ class QueueManager:
|
|
200
208
|
|
201
209
|
Note that this method does not return a local instance of the Queue. You can use
|
202
210
|
`modal.Queue.from_name` to perform a lookup after creation.
|
211
|
+
|
212
|
+
Added in v1.1.2.
|
203
213
|
"""
|
204
214
|
...
|
205
215
|
|
@@ -236,6 +246,8 @@ class QueueManager:
|
|
236
246
|
```python
|
237
247
|
queues = modal.Queue.objects.list(max_objects=10, created_before="2025-01-01")
|
238
248
|
```
|
249
|
+
|
250
|
+
Added in v1.1.2.
|
239
251
|
"""
|
240
252
|
...
|
241
253
|
|
@@ -269,6 +281,8 @@ class QueueManager:
|
|
269
281
|
```python
|
270
282
|
queues = modal.Queue.objects.list(max_objects=10, created_before="2025-01-01")
|
271
283
|
```
|
284
|
+
|
285
|
+
Added in v1.1.2.
|
272
286
|
"""
|
273
287
|
...
|
274
288
|
|
@@ -300,6 +314,8 @@ class QueueManager:
|
|
300
314
|
```python notest
|
301
315
|
await modal.Queue.objects.delete("my-queue", environment_name="dev")
|
302
316
|
```
|
317
|
+
|
318
|
+
Added in v1.1.2.
|
303
319
|
"""
|
304
320
|
...
|
305
321
|
|
@@ -328,6 +344,8 @@ class QueueManager:
|
|
328
344
|
```python notest
|
329
345
|
await modal.Queue.objects.delete("my-queue", environment_name="dev")
|
330
346
|
```
|
347
|
+
|
348
|
+
Added in v1.1.2.
|
331
349
|
"""
|
332
350
|
...
|
333
351
|
|
modal/secret.py
CHANGED
@@ -74,6 +74,8 @@ class _SecretManager:
|
|
74
74
|
Note that this method does not return a local instance of the Secret. You can use
|
75
75
|
`modal.Secret.from_name` to perform a lookup after creation.
|
76
76
|
|
77
|
+
Added in v1.1.2.
|
78
|
+
|
77
79
|
"""
|
78
80
|
check_object_name(name, "Secret")
|
79
81
|
client = await _Client.from_env() if client is None else client
|
@@ -126,6 +128,8 @@ class _SecretManager:
|
|
126
128
|
secrets = modal.Secret.objects.list(max_objects=10, created_before="2025-01-01")
|
127
129
|
```
|
128
130
|
|
131
|
+
Added in v1.1.2.
|
132
|
+
|
129
133
|
"""
|
130
134
|
client = await _Client.from_env() if client is None else client
|
131
135
|
if max_objects is not None and max_objects < 0:
|
@@ -185,6 +189,9 @@ class _SecretManager:
|
|
185
189
|
```python notest
|
186
190
|
await modal.Secret.objects.delete("my-secret", environment_name="dev")
|
187
191
|
```
|
192
|
+
|
193
|
+
Added in v1.1.2.
|
194
|
+
|
188
195
|
"""
|
189
196
|
try:
|
190
197
|
obj = await _Secret.from_name(name, environment_name=environment_name).hydrate(client)
|
modal/secret.pyi
CHANGED
@@ -65,6 +65,8 @@ class _SecretManager:
|
|
65
65
|
|
66
66
|
Note that this method does not return a local instance of the Secret. You can use
|
67
67
|
`modal.Secret.from_name` to perform a lookup after creation.
|
68
|
+
|
69
|
+
Added in v1.1.2.
|
68
70
|
"""
|
69
71
|
...
|
70
72
|
|
@@ -97,6 +99,8 @@ class _SecretManager:
|
|
97
99
|
```python
|
98
100
|
secrets = modal.Secret.objects.list(max_objects=10, created_before="2025-01-01")
|
99
101
|
```
|
102
|
+
|
103
|
+
Added in v1.1.2.
|
100
104
|
"""
|
101
105
|
...
|
102
106
|
|
@@ -123,6 +127,8 @@ class _SecretManager:
|
|
123
127
|
```python notest
|
124
128
|
await modal.Secret.objects.delete("my-secret", environment_name="dev")
|
125
129
|
```
|
130
|
+
|
131
|
+
Added in v1.1.2.
|
126
132
|
"""
|
127
133
|
...
|
128
134
|
|
@@ -168,6 +174,8 @@ class SecretManager:
|
|
168
174
|
|
169
175
|
Note that this method does not return a local instance of the Secret. You can use
|
170
176
|
`modal.Secret.from_name` to perform a lookup after creation.
|
177
|
+
|
178
|
+
Added in v1.1.2.
|
171
179
|
"""
|
172
180
|
...
|
173
181
|
|
@@ -206,6 +214,8 @@ class SecretManager:
|
|
206
214
|
|
207
215
|
Note that this method does not return a local instance of the Secret. You can use
|
208
216
|
`modal.Secret.from_name` to perform a lookup after creation.
|
217
|
+
|
218
|
+
Added in v1.1.2.
|
209
219
|
"""
|
210
220
|
...
|
211
221
|
|
@@ -242,6 +252,8 @@ class SecretManager:
|
|
242
252
|
```python
|
243
253
|
secrets = modal.Secret.objects.list(max_objects=10, created_before="2025-01-01")
|
244
254
|
```
|
255
|
+
|
256
|
+
Added in v1.1.2.
|
245
257
|
"""
|
246
258
|
...
|
247
259
|
|
@@ -275,6 +287,8 @@ class SecretManager:
|
|
275
287
|
```python
|
276
288
|
secrets = modal.Secret.objects.list(max_objects=10, created_before="2025-01-01")
|
277
289
|
```
|
290
|
+
|
291
|
+
Added in v1.1.2.
|
278
292
|
"""
|
279
293
|
...
|
280
294
|
|
@@ -305,6 +319,8 @@ class SecretManager:
|
|
305
319
|
```python notest
|
306
320
|
await modal.Secret.objects.delete("my-secret", environment_name="dev")
|
307
321
|
```
|
322
|
+
|
323
|
+
Added in v1.1.2.
|
308
324
|
"""
|
309
325
|
...
|
310
326
|
|
@@ -332,6 +348,8 @@ class SecretManager:
|
|
332
348
|
```python notest
|
333
349
|
await modal.Secret.objects.delete("my-secret", environment_name="dev")
|
334
350
|
```
|
351
|
+
|
352
|
+
Added in v1.1.2.
|
335
353
|
"""
|
336
354
|
...
|
337
355
|
|
modal/volume.py
CHANGED
@@ -139,6 +139,7 @@ class _VolumeManager:
|
|
139
139
|
modal.Volume.objects.create("my-volume", environment_name="dev")
|
140
140
|
```
|
141
141
|
|
142
|
+
By default, an error will be raised if the Volume already exists, but passing
|
142
143
|
`allow_existing=True` will make the creation attempt a no-op in this case.
|
143
144
|
|
144
145
|
```python notest
|
@@ -148,6 +149,8 @@ class _VolumeManager:
|
|
148
149
|
Note that this method does not return a local instance of the Volume. You can use
|
149
150
|
`modal.Volume.from_name` to perform a lookup after creation.
|
150
151
|
|
152
|
+
Added in v1.1.2.
|
153
|
+
|
151
154
|
"""
|
152
155
|
check_object_name(name, "Volume")
|
153
156
|
client = await _Client.from_env() if client is None else client
|
@@ -204,6 +207,8 @@ class _VolumeManager:
|
|
204
207
|
volumes = modal.Volume.objects.list(max_objects=10, created_before="2025-01-01")
|
205
208
|
```
|
206
209
|
|
210
|
+
Added in v1.1.2.
|
211
|
+
|
207
212
|
"""
|
208
213
|
client = await _Client.from_env() if client is None else client
|
209
214
|
if max_objects is not None and max_objects < 0:
|
@@ -264,6 +269,9 @@ class _VolumeManager:
|
|
264
269
|
```python notest
|
265
270
|
await modal.Volume.objects.delete("my-volume", environment_name="dev")
|
266
271
|
```
|
272
|
+
|
273
|
+
Added in v1.1.2.
|
274
|
+
|
267
275
|
"""
|
268
276
|
try:
|
269
277
|
obj = await _Volume.from_name(name, environment_name=environment_name).hydrate(client)
|
@@ -685,6 +693,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
685
693
|
except modal.exception.NotFoundError as exc:
|
686
694
|
raise FileNotFoundError(exc.args[0])
|
687
695
|
|
696
|
+
@retry(n_attempts=5, base_delay=0.1, timeout=None)
|
688
697
|
async def read_block(block_url: str) -> bytes:
|
689
698
|
async with ClientSessionRegistry.get_session().get(block_url) as get_response:
|
690
699
|
return await get_response.content.read()
|
@@ -724,6 +733,7 @@ class _Volume(_Object, type_prefix="vo"):
|
|
724
733
|
write_lock = asyncio.Lock()
|
725
734
|
start_pos = fileobj.tell()
|
726
735
|
|
736
|
+
@retry(n_attempts=5, base_delay=0.1, timeout=None)
|
727
737
|
async def download_block(idx, url) -> int:
|
728
738
|
block_start_pos = start_pos + idx * BLOCK_SIZE
|
729
739
|
num_bytes_written = 0
|
modal/volume.pyi
CHANGED
@@ -105,6 +105,7 @@ class _VolumeManager:
|
|
105
105
|
modal.Volume.objects.create("my-volume", environment_name="dev")
|
106
106
|
```
|
107
107
|
|
108
|
+
By default, an error will be raised if the Volume already exists, but passing
|
108
109
|
`allow_existing=True` will make the creation attempt a no-op in this case.
|
109
110
|
|
110
111
|
```python notest
|
@@ -113,6 +114,8 @@ class _VolumeManager:
|
|
113
114
|
|
114
115
|
Note that this method does not return a local instance of the Volume. You can use
|
115
116
|
`modal.Volume.from_name` to perform a lookup after creation.
|
117
|
+
|
118
|
+
Added in v1.1.2.
|
116
119
|
"""
|
117
120
|
...
|
118
121
|
|
@@ -145,6 +148,8 @@ class _VolumeManager:
|
|
145
148
|
```python
|
146
149
|
volumes = modal.Volume.objects.list(max_objects=10, created_before="2025-01-01")
|
147
150
|
```
|
151
|
+
|
152
|
+
Added in v1.1.2.
|
148
153
|
"""
|
149
154
|
...
|
150
155
|
|
@@ -172,6 +177,8 @@ class _VolumeManager:
|
|
172
177
|
```python notest
|
173
178
|
await modal.Volume.objects.delete("my-volume", environment_name="dev")
|
174
179
|
```
|
180
|
+
|
181
|
+
Added in v1.1.2.
|
175
182
|
"""
|
176
183
|
...
|
177
184
|
|
@@ -206,6 +213,7 @@ class VolumeManager:
|
|
206
213
|
modal.Volume.objects.create("my-volume", environment_name="dev")
|
207
214
|
```
|
208
215
|
|
216
|
+
By default, an error will be raised if the Volume already exists, but passing
|
209
217
|
`allow_existing=True` will make the creation attempt a no-op in this case.
|
210
218
|
|
211
219
|
```python notest
|
@@ -214,6 +222,8 @@ class VolumeManager:
|
|
214
222
|
|
215
223
|
Note that this method does not return a local instance of the Volume. You can use
|
216
224
|
`modal.Volume.from_name` to perform a lookup after creation.
|
225
|
+
|
226
|
+
Added in v1.1.2.
|
217
227
|
"""
|
218
228
|
...
|
219
229
|
|
@@ -241,6 +251,7 @@ class VolumeManager:
|
|
241
251
|
modal.Volume.objects.create("my-volume", environment_name="dev")
|
242
252
|
```
|
243
253
|
|
254
|
+
By default, an error will be raised if the Volume already exists, but passing
|
244
255
|
`allow_existing=True` will make the creation attempt a no-op in this case.
|
245
256
|
|
246
257
|
```python notest
|
@@ -249,6 +260,8 @@ class VolumeManager:
|
|
249
260
|
|
250
261
|
Note that this method does not return a local instance of the Volume. You can use
|
251
262
|
`modal.Volume.from_name` to perform a lookup after creation.
|
263
|
+
|
264
|
+
Added in v1.1.2.
|
252
265
|
"""
|
253
266
|
...
|
254
267
|
|
@@ -285,6 +298,8 @@ class VolumeManager:
|
|
285
298
|
```python
|
286
299
|
volumes = modal.Volume.objects.list(max_objects=10, created_before="2025-01-01")
|
287
300
|
```
|
301
|
+
|
302
|
+
Added in v1.1.2.
|
288
303
|
"""
|
289
304
|
...
|
290
305
|
|
@@ -318,6 +333,8 @@ class VolumeManager:
|
|
318
333
|
```python
|
319
334
|
volumes = modal.Volume.objects.list(max_objects=10, created_before="2025-01-01")
|
320
335
|
```
|
336
|
+
|
337
|
+
Added in v1.1.2.
|
321
338
|
"""
|
322
339
|
...
|
323
340
|
|
@@ -349,6 +366,8 @@ class VolumeManager:
|
|
349
366
|
```python notest
|
350
367
|
await modal.Volume.objects.delete("my-volume", environment_name="dev")
|
351
368
|
```
|
369
|
+
|
370
|
+
Added in v1.1.2.
|
352
371
|
"""
|
353
372
|
...
|
354
373
|
|
@@ -377,6 +396,8 @@ class VolumeManager:
|
|
377
396
|
```python notest
|
378
397
|
await modal.Volume.objects.delete("my-volume", environment_name="dev")
|
379
398
|
```
|
399
|
+
|
400
|
+
Added in v1.1.2.
|
380
401
|
"""
|
381
402
|
...
|
382
403
|
|
@@ -3,7 +3,7 @@ modal/__main__.py,sha256=45H-GtwzaDfN-1nP4_HYvzN3s7AG_HXR4-ynrsjO_OI,2803
|
|
3
3
|
modal/_clustered_functions.py,sha256=zmrKbptRbqp4euS3LWncKaLXb8Kjj4YreusOzpEpRMk,2856
|
4
4
|
modal/_clustered_functions.pyi,sha256=_wtFjWocGf1WgI-qYBpbJPArNkg2H9JV7BVaGgMesEQ,1103
|
5
5
|
modal/_container_entrypoint.py,sha256=a1HAQYh1gGpqHuhSw6AW7XDYHztbeYr5a8iNnfCnoks,29023
|
6
|
-
modal/_functions.py,sha256=
|
6
|
+
modal/_functions.py,sha256=wDpUpxX_K5lLRQQ5wJWq2E4UjBo9uEvuv9QSqfboplo,88890
|
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=gwsLdXb-Ecd8nH8LVCo8oVZPzzdyo9BrN1DjgQmsSuM,11967
|
@@ -18,11 +18,11 @@ modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
|
|
18
18
|
modal/_tunnel.pyi,sha256=rvC7USR2BcKkbZIeCJXwf7-UfGE-LPLjKsGNiK7Lxa4,13366
|
19
19
|
modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
|
20
20
|
modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
|
21
|
-
modal/app.py,sha256=
|
21
|
+
modal/app.py,sha256=hJU3DGzP5GwYRmBj57XajljkQtLxkKftxXih2TYRcKo,48047
|
22
22
|
modal/app.pyi,sha256=0U2xVKD3yfHe5l2bcihTDjPl__tzOvx1AIYOTebu-5o,43375
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
24
24
|
modal/client.py,sha256=kyAIVB3Ay-XKJizQ_1ufUFB__EagV0MLmHJpyYyJ7J0,18636
|
25
|
-
modal/client.pyi,sha256=
|
25
|
+
modal/client.pyi,sha256=mzkcDgf9oLXWMHNA6RzlK1quCnNjFr1ICBDpuUZ88oA,15753
|
26
26
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
27
27
|
modal/cloud_bucket_mount.pyi,sha256=-qSfYAQvIoO_l2wsCCGTG5ZUwQieNKXdAO00yP1-LYU,7394
|
28
28
|
modal/cls.py,sha256=1mBcExFrLDTZwkD3Dzu8F26_CL0CGktOV9pE60Y8g_E,40689
|
@@ -30,8 +30,8 @@ modal/cls.pyi,sha256=TevKBrBez2R0_4Epsx5GB5gyQX_kQV-uVHPxpqEokhQ,28357
|
|
30
30
|
modal/config.py,sha256=tW-SEGjVvAt3D_MNi3LhxXnFKIA9fjLd3UIgbW8uSJE,12121
|
31
31
|
modal/container_process.py,sha256=XkPwNIW-iD_GB9u9yqv9q8y-i5cQ8eBbLZZ_GvEw9t8,6858
|
32
32
|
modal/container_process.pyi,sha256=9m-st3hCUlNN1GOTctfPPvIvoLtEl7FbuGWwif5-7YU,6037
|
33
|
-
modal/dict.py,sha256=
|
34
|
-
modal/dict.pyi,sha256=
|
33
|
+
modal/dict.py,sha256=azL6WHOAR49OsqB33Rqyd1j9ljbbW7blHZDuRV8xPrA,22676
|
34
|
+
modal/dict.pyi,sha256=x0PxEqfC8wNGe5u4Y1GI5W1J0H51e3ZG9kHdYFRVLvQ,33575
|
35
35
|
modal/environments.py,sha256=gHFNLG78bqgizpQ4w_elz27QOqmcgAonFsmLs7NjUJ4,6804
|
36
36
|
modal/environments.pyi,sha256=9-KtrzAcUe55cCP4020lSUD7-fWS7OPakAHssq4-bro,4219
|
37
37
|
modal/exception.py,sha256=o0V93PK8Hcg2YQ2aeOB1Y-qWBw4Gz5ATfyokR8GapuQ,5634
|
@@ -39,10 +39,10 @@ modal/file_io.py,sha256=OSKr77TujcXGJW1iikzYiHckLSmv07QBgBHcxxYEkoI,21456
|
|
39
39
|
modal/file_io.pyi,sha256=xtO6Glf_BFwDE7QiQQo24QqcMf_Vv-iz7WojcGVlLBU,15932
|
40
40
|
modal/file_pattern_matcher.py,sha256=A_Kdkej6q7YQyhM_2-BvpFmPqJ0oHb54B6yf9VqvPVE,8116
|
41
41
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
42
|
-
modal/functions.pyi,sha256=
|
42
|
+
modal/functions.pyi,sha256=vXmQ5-tlrxSV8E8eI0yEF2HUeF0Bd6VyQVxMCW3SpBE,38890
|
43
43
|
modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
|
44
|
-
modal/image.py,sha256=
|
45
|
-
modal/image.pyi,sha256=
|
44
|
+
modal/image.py,sha256=wEtojqiLDHSFinuIlAzCieGYPPAYh9iEBtY3wOSF6js,103236
|
45
|
+
modal/image.pyi,sha256=vdxGAddVYpQNqpxM-XSzKkTtrajD74Nelgt8-IB5RAU,68711
|
46
46
|
modal/io_streams.py,sha256=ut9tY_yEtiBsgQ40u_72Ns87IZHfbMxfnh8t6U9RSGA,16204
|
47
47
|
modal/io_streams.pyi,sha256=aOun_jUFKHSJyUY6-7gKvNoxzcULsa8_hxdtEO7v-gk,13980
|
48
48
|
modal/mount.py,sha256=AObt5puO-jgtH5EtUfgAkz130bR-8Qvo5Am1_4tg3mE,37215
|
@@ -52,15 +52,15 @@ modal/network_file_system.pyi,sha256=Td_IobHr84iLo_9LZKQ4tNdUB60yjX8QWBaFiUvhfi8
|
|
52
52
|
modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
|
53
53
|
modal/object.pyi,sha256=qlyVVMezW3XgJe_iqhtzWRSki3Nuk-KrpXc1g-r8ujA,6944
|
54
54
|
modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
|
55
|
-
modal/parallel_map.py,sha256=
|
56
|
-
modal/parallel_map.pyi,sha256=
|
55
|
+
modal/parallel_map.py,sha256=lgCtqWlBAfpVm0fw7RxoYnqTq9tDUZ6wtcPBakLRDzo,68544
|
56
|
+
modal/parallel_map.pyi,sha256=MjVotblObpEDRyKcMd2qFALC1emKpbC9Cdu-gkdewT4,15809
|
57
57
|
modal/partial_function.py,sha256=aIdlGfTjjgqY6Fpr-biCjvRU9W542_S5N2xkNN_rYGM,1127
|
58
58
|
modal/partial_function.pyi,sha256=lqqOzZ9-QvHTDWKQ_oAYYOvsXgTOBKhO9u-RI98JbUk,13986
|
59
59
|
modal/proxy.py,sha256=CQydu_NPDgApN2GLdd7rrcg8PM-pXyFdVYcTaGMBRCQ,1491
|
60
60
|
modal/proxy.pyi,sha256=yWGWwADCRGrC2w81B7671UTH4Uv3HMZKy5vVqlJUZoA,1417
|
61
61
|
modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
|
-
modal/queue.py,sha256=
|
63
|
-
modal/queue.pyi,sha256=
|
62
|
+
modal/queue.py,sha256=ooD_-z3gthje_kxBZQ_xDfwyTy_cxtyn5oM9wt2sXTo,27133
|
63
|
+
modal/queue.pyi,sha256=EJ6extEFKclbEUBXk-PuRJ4bkUYRwWgAAUNofQBbBmo,39509
|
64
64
|
modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
|
65
65
|
modal/runner.py,sha256=ostdzYpQb-20tlD6dIq7bpWTkZkOhjJBNuMNektqnJA,24068
|
66
66
|
modal/runner.pyi,sha256=lbwLljm1cC8d6PcNvmYQhkE8501V9fg0bYqqKX6G4r4,8489
|
@@ -69,8 +69,8 @@ modal/sandbox.py,sha256=O_vB-VgJ2ZMw2yyT2-ATYIWHdeDXCPf4cFcc-3JSB5Q,40895
|
|
69
69
|
modal/sandbox.pyi,sha256=HoHgwb167i83qiGhUE7UAy79l45wqfXKfOA9hZ5HiEo,41572
|
70
70
|
modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
|
71
71
|
modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
|
72
|
-
modal/secret.py,sha256=
|
73
|
-
modal/secret.pyi,sha256=
|
72
|
+
modal/secret.py,sha256=jcNJKc4ZB2nvAn7HJFawInqE-_7sbB43IWLZwyLBQ28,19308
|
73
|
+
modal/secret.pyi,sha256=7EzD7nZGSZHQR-Hf5aRi0ooZGxvy1-G8A4ul-M04Qs4,21552
|
74
74
|
modal/serving.py,sha256=3I3WBeVbzZY258u9PXBCW_dZBgypq3OhwBuTVvlgubE,4423
|
75
75
|
modal/serving.pyi,sha256=YfixTaWikyYpwhnNxCHMZnDDQiPmV1xJ87QF91U_WGU,1924
|
76
76
|
modal/snapshot.py,sha256=E3oxYQkYVRB_LeFBfmUV1Y6vHz8-azXJfC4x7A1QKnI,1455
|
@@ -78,8 +78,8 @@ modal/snapshot.pyi,sha256=0q83hlmWxAhDu8xwZyL5VmYh0i8Tigf7S60or2k30L8,1682
|
|
78
78
|
modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
|
79
79
|
modal/token_flow.py,sha256=GWpar0gANs71vm9Bd_Cj87UG1K3ljTURbkEjG3JLsrY,7616
|
80
80
|
modal/token_flow.pyi,sha256=eirYjyqbRiT3GCKMIPHJPpkvBTu8WxDKqSHehWaJI_4,2533
|
81
|
-
modal/volume.py,sha256=
|
82
|
-
modal/volume.pyi,sha256=
|
81
|
+
modal/volume.py,sha256=bPC8632-LyeLOjJu2fKOFyod0QG7Hd5bb-UIJ5syCjo,53303
|
82
|
+
modal/volume.pyi,sha256=5VppIgoqoJqpivESYt5_oWgVTL__zlmpNZkOPk43JF8,54443
|
83
83
|
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
84
84
|
modal/_runtime/asgi.py,sha256=yewQjvqPdXQ9SeEMMM53-h3Y22WlJNe28tFvPrrwguk,22607
|
85
85
|
modal/_runtime/container_io_manager.py,sha256=iiFxPfnJjnZd_l2Aj5TCR_O1dQwBcrvHccq0LSIJGZY,45719
|
@@ -153,7 +153,7 @@ modal/experimental/__init__.py,sha256=dPBPpxsmjZMLF3YjRrXoTvT01pl65wxi4UdFZsOem3
|
|
153
153
|
modal/experimental/flash.py,sha256=viXQumCIFp5VFsPFURdFTBTjP_QnsAi8nSWXAMmfjeQ,19744
|
154
154
|
modal/experimental/flash.pyi,sha256=A8_qJGtGoXEzKDdHbvhmCw7oqfneFEvJQK3ZdTOvUdU,10830
|
155
155
|
modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
|
156
|
-
modal-1.1.
|
156
|
+
modal-1.1.3.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
157
157
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
158
158
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
159
159
|
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
@@ -161,10 +161,10 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
|
|
161
161
|
modal_docs/mdmd/mdmd.py,sha256=tUTImNd4UMFk1opkaw8J672gX8AkBO5gbY2S_NMxsxs,7140
|
162
162
|
modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
|
163
163
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
164
|
-
modal_proto/api.proto,sha256=
|
164
|
+
modal_proto/api.proto,sha256=l1uCuGuzRoZi8o6lG7qJ0x5F8A9SJtOEVipXqsioEwc,104771
|
165
165
|
modal_proto/api_grpc.py,sha256=AWsKZFdXr_T6LpWGlMM6BDY30RdOPjqgoPMijR-R1lI,127964
|
166
|
-
modal_proto/api_pb2.py,sha256=
|
167
|
-
modal_proto/api_pb2.pyi,sha256=
|
166
|
+
modal_proto/api_pb2.py,sha256=VTmkiJYDvP78OFQGFTqwHVafjvm8hq6-P8-e5uSeb-c,366852
|
167
|
+
modal_proto/api_pb2.pyi,sha256=NnuXK-JedDcBLMONS11sORu-e_oLrDT8V7ze1nh0vFE,506245
|
168
168
|
modal_proto/api_pb2_grpc.py,sha256=kDZBX6i1KdRpm4P3c2wdRbGe3XOFtqGHSbWE0vOe4F4,276062
|
169
169
|
modal_proto/api_pb2_grpc.pyi,sha256=s1hjXmqaB3jGCSgnOouzncdfMVX0umPZd4TC1zObhgU,64579
|
170
170
|
modal_proto/modal_api_grpc.py,sha256=faBxtXAqoz6ei8ntNu1MQTL859FFHH_LZww_FP9wubw,19311
|
@@ -176,10 +176,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
|
|
176
176
|
modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
177
177
|
modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
|
178
178
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
179
|
-
modal_version/__init__.py,sha256=
|
179
|
+
modal_version/__init__.py,sha256=PnHiiARIEKc8I0wy6HTgG_EkVKEYVRtF3ooHs2Woeyo,115
|
180
180
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
181
|
-
modal-1.1.
|
182
|
-
modal-1.1.
|
183
|
-
modal-1.1.
|
184
|
-
modal-1.1.
|
185
|
-
modal-1.1.
|
181
|
+
modal-1.1.3.dist-info/METADATA,sha256=VZ76xAxemMY5P4AmA6rtq1JWElsqwYjcFrG3WCFjjM0,2454
|
182
|
+
modal-1.1.3.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
183
|
+
modal-1.1.3.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
184
|
+
modal-1.1.3.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
185
|
+
modal-1.1.3.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
@@ -618,7 +618,7 @@ message AttemptStartRequest {
|
|
618
618
|
|
619
619
|
message AttemptStartResponse {
|
620
620
|
string attempt_token = 1;
|
621
|
-
FunctionRetryPolicy retry_policy = 2;
|
621
|
+
FunctionRetryPolicy retry_policy = 2;
|
622
622
|
}
|
623
623
|
|
624
624
|
message AuthTokenGetRequest {
|
@@ -1976,6 +1976,8 @@ message GenericResult { // Used for both tasks and function outputs
|
|
1976
1976
|
// Terminates the function and all remaining inputs.
|
1977
1977
|
GENERIC_STATUS_INIT_FAILURE = 5;
|
1978
1978
|
GENERIC_STATUS_INTERNAL_FAILURE = 6;
|
1979
|
+
// Used when sandboxes are terminated due to idle_timeout
|
1980
|
+
GENERIC_STATUS_IDLE_TIMEOUT = 7;
|
1979
1981
|
}
|
1980
1982
|
|
1981
1983
|
GenericStatus status = 1; // Status of the task or function output.
|
@@ -2167,7 +2169,7 @@ message MapStartOrContinueResponse {
|
|
2167
2169
|
string function_call_id = 2;
|
2168
2170
|
uint32 max_inputs_outstanding = 3;
|
2169
2171
|
repeated string attempt_tokens = 4;
|
2170
|
-
FunctionRetryPolicy retry_policy = 5;
|
2172
|
+
FunctionRetryPolicy retry_policy = 5;
|
2171
2173
|
}
|
2172
2174
|
|
2173
2175
|
message MethodDefinition {
|
@@ -2573,7 +2575,7 @@ message Sandbox {
|
|
2573
2575
|
Resources resources = 5;
|
2574
2576
|
CloudProvider cloud_provider = 6; // Deprecated at some point
|
2575
2577
|
|
2576
|
-
uint32 timeout_secs = 7;
|
2578
|
+
uint32 timeout_secs = 7; // The max lifetime of a sandbox in seconds.
|
2577
2579
|
|
2578
2580
|
optional string workdir = 8;
|
2579
2581
|
|
@@ -2635,6 +2637,9 @@ message Sandbox {
|
|
2635
2637
|
map<string, bool> experimental_options = 31;
|
2636
2638
|
|
2637
2639
|
repeated string preload_path_prefixes = 32; // Internal use only.
|
2640
|
+
|
2641
|
+
// Optional idle timeout in seconds. If set, the sandbox will be terminated after being idle for this duration.
|
2642
|
+
optional uint32 idle_timeout_secs = 33;
|
2638
2643
|
}
|
2639
2644
|
|
2640
2645
|
message SandboxCreateRequest {
|