modal 1.1.2.dev14__py3-none-any.whl → 1.1.2.dev16__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/secret.py CHANGED
@@ -94,6 +94,39 @@ class _SecretManager:
94
94
  secrets = [_Secret._new_hydrated(item.secret_id, client, item.metadata, is_another_app=True) for item in items]
95
95
  return secrets[:max_objects] if max_objects is not None else secrets
96
96
 
97
+ @staticmethod
98
+ async def delete(
99
+ name: str, # Name of the Secret to delete
100
+ *,
101
+ allow_missing: bool = False, # If True, don't raise an error if the Secret doesn't exist
102
+ environment_name: Optional[str] = None, # Uses active environment if not specified
103
+ client: Optional[_Client] = None, # Optional client with Modal credentials
104
+ ):
105
+ """Delete a named Secret.
106
+
107
+ Warning: Deletion is irreversible and will affect any Apps currently using the Secret.
108
+
109
+ **Examples:**
110
+
111
+ ```python notest
112
+ await modal.Secret.objects.delete("my-secret")
113
+ ```
114
+
115
+ Secrets will be deleted from the active environment, or another one can be specified:
116
+
117
+ ```python notest
118
+ await modal.Secret.objects.delete("my-secret", environment_name="dev")
119
+ ```
120
+ """
121
+ try:
122
+ obj = await _Secret.from_name(name, environment_name=environment_name).hydrate(client)
123
+ except NotFoundError:
124
+ if not allow_missing:
125
+ raise
126
+ else:
127
+ req = api_pb2.SecretDeleteRequest(secret_id=obj.object_id)
128
+ await retry_transient_errors(obj._client.stub.SecretDelete, req)
129
+
97
130
 
98
131
  SecretManager = synchronize_api(_SecretManager)
99
132
 
modal/secret.pyi CHANGED
@@ -63,6 +63,32 @@ class _SecretManager:
63
63
  """
64
64
  ...
65
65
 
66
+ @staticmethod
67
+ async def delete(
68
+ name: str,
69
+ *,
70
+ allow_missing: bool = False,
71
+ environment_name: typing.Optional[str] = None,
72
+ client: typing.Optional[modal.client._Client] = None,
73
+ ):
74
+ """Delete a named Secret.
75
+
76
+ Warning: Deletion is irreversible and will affect any Apps currently using the Secret.
77
+
78
+ **Examples:**
79
+
80
+ ```python notest
81
+ await modal.Secret.objects.delete("my-secret")
82
+ ```
83
+
84
+ Secrets will be deleted from the active environment, or another one can be specified:
85
+
86
+ ```python notest
87
+ await modal.Secret.objects.delete("my-secret", environment_name="dev")
88
+ ```
89
+ """
90
+ ...
91
+
66
92
  class SecretManager:
67
93
  """Namespace with methods for managing named Secret objects."""
68
94
  def __init__(self, /, *args, **kwargs):
@@ -138,6 +164,63 @@ class SecretManager:
138
164
 
139
165
  list: __list_spec
140
166
 
167
+ class __delete_spec(typing_extensions.Protocol):
168
+ def __call__(
169
+ self,
170
+ /,
171
+ name: str,
172
+ *,
173
+ allow_missing: bool = False,
174
+ environment_name: typing.Optional[str] = None,
175
+ client: typing.Optional[modal.client.Client] = None,
176
+ ):
177
+ """Delete a named Secret.
178
+
179
+ Warning: Deletion is irreversible and will affect any Apps currently using the Secret.
180
+
181
+ **Examples:**
182
+
183
+ ```python notest
184
+ await modal.Secret.objects.delete("my-secret")
185
+ ```
186
+
187
+ Secrets will be deleted from the active environment, or another one can be specified:
188
+
189
+ ```python notest
190
+ await modal.Secret.objects.delete("my-secret", environment_name="dev")
191
+ ```
192
+ """
193
+ ...
194
+
195
+ async def aio(
196
+ self,
197
+ /,
198
+ name: str,
199
+ *,
200
+ allow_missing: bool = False,
201
+ environment_name: typing.Optional[str] = None,
202
+ client: typing.Optional[modal.client.Client] = None,
203
+ ):
204
+ """Delete a named Secret.
205
+
206
+ Warning: Deletion is irreversible and will affect any Apps currently using the Secret.
207
+
208
+ **Examples:**
209
+
210
+ ```python notest
211
+ await modal.Secret.objects.delete("my-secret")
212
+ ```
213
+
214
+ Secrets will be deleted from the active environment, or another one can be specified:
215
+
216
+ ```python notest
217
+ await modal.Secret.objects.delete("my-secret", environment_name="dev")
218
+ ```
219
+ """
220
+ ...
221
+
222
+ delete: __delete_spec
223
+
141
224
  class _Secret(modal._object._Object):
142
225
  """Secrets provide a dictionary of environment variables for images.
143
226
 
modal/volume.py CHANGED
@@ -30,7 +30,7 @@ from synchronicity.async_wrap import asynccontextmanager
30
30
 
31
31
  import modal.exception
32
32
  import modal_proto.api_pb2
33
- from modal.exception import InvalidError, VolumeUploadTimeoutError
33
+ from modal.exception import InvalidError, NotFoundError, VolumeUploadTimeoutError
34
34
  from modal_proto import api_pb2
35
35
 
36
36
  from ._object import (
@@ -171,6 +171,40 @@ class _VolumeManager:
171
171
  volumes = [_Volume._new_hydrated(item.volume_id, client, item.metadata, is_another_app=True) for item in items]
172
172
  return volumes[:max_objects] if max_objects is not None else volumes
173
173
 
174
+ @staticmethod
175
+ async def delete(
176
+ name: str, # Name of the Volume to delete
177
+ *,
178
+ allow_missing: bool = False, # If True, don't raise an error if the Volume doesn't exist
179
+ environment_name: Optional[str] = None, # Uses active environment if not specified
180
+ client: Optional[_Client] = None, # Optional client with Modal credentials
181
+ ):
182
+ """Delete a named Volume.
183
+
184
+ Warning: This deletes an *entire Volume*, not just a specific file.
185
+ Deletion is irreversible and will affect any Apps currently using the Volume.
186
+
187
+ **Examples:**
188
+
189
+ ```python notest
190
+ await modal.Volume.objects.delete("my-volume")
191
+ ```
192
+
193
+ Volumes will be deleted from the active environment, or another one can be specified:
194
+
195
+ ```python notest
196
+ await modal.Volume.objects.delete("my-volume", environment_name="dev")
197
+ ```
198
+ """
199
+ try:
200
+ obj = await _Volume.from_name(name, environment_name=environment_name).hydrate(client)
201
+ except NotFoundError:
202
+ if not allow_missing:
203
+ raise
204
+ else:
205
+ req = api_pb2.VolumeDeleteRequest(volume_id=obj.object_id)
206
+ await retry_transient_errors(obj._client.stub.VolumeDelete, req)
207
+
174
208
 
175
209
  VolumeManager = synchronize_api(_VolumeManager)
176
210
 
@@ -719,9 +753,20 @@ class _Volume(_Object, type_prefix="vo"):
719
753
 
720
754
  @staticmethod
721
755
  async def delete(name: str, client: Optional[_Client] = None, environment_name: Optional[str] = None):
722
- obj = await _Volume.from_name(name, environment_name=environment_name).hydrate(client)
723
- req = api_pb2.VolumeDeleteRequest(volume_id=obj.object_id)
724
- await retry_transient_errors(obj._client.stub.VolumeDelete, req)
756
+ """mdmd:hidden
757
+ Delete a named Volume.
758
+
759
+ Warning: This deletes an *entire Volume*, not just a specific file.
760
+ Deletion is irreversible and will affect any Apps currently using the Volume.
761
+
762
+ DEPRECATED: This method is deprecated; we recommend using `modal.Volume.objects.delete` instead.
763
+
764
+ """
765
+ deprecation_warning(
766
+ (2025, 8, 6),
767
+ "`modal.Volume.delete` is deprecated; we recommend using `modal.Volume.objects.delete` instead.",
768
+ )
769
+ await _Volume.objects.delete(name, environment_name=environment_name, client=client)
725
770
 
726
771
  @staticmethod
727
772
  async def rename(
modal/volume.pyi CHANGED
@@ -114,6 +114,33 @@ class _VolumeManager:
114
114
  """
115
115
  ...
116
116
 
117
+ @staticmethod
118
+ async def delete(
119
+ name: str,
120
+ *,
121
+ allow_missing: bool = False,
122
+ environment_name: typing.Optional[str] = None,
123
+ client: typing.Optional[modal.client._Client] = None,
124
+ ):
125
+ """Delete a named Volume.
126
+
127
+ Warning: This deletes an *entire Volume*, not just a specific file.
128
+ Deletion is irreversible and will affect any Apps currently using the Volume.
129
+
130
+ **Examples:**
131
+
132
+ ```python notest
133
+ await modal.Volume.objects.delete("my-volume")
134
+ ```
135
+
136
+ Volumes will be deleted from the active environment, or another one can be specified:
137
+
138
+ ```python notest
139
+ await modal.Volume.objects.delete("my-volume", environment_name="dev")
140
+ ```
141
+ """
142
+ ...
143
+
117
144
  class VolumeManager:
118
145
  """Namespace with methods for managing named Volume objects."""
119
146
  def __init__(self, /, *args, **kwargs):
@@ -189,6 +216,65 @@ class VolumeManager:
189
216
 
190
217
  list: __list_spec
191
218
 
219
+ class __delete_spec(typing_extensions.Protocol):
220
+ def __call__(
221
+ self,
222
+ /,
223
+ name: str,
224
+ *,
225
+ allow_missing: bool = False,
226
+ environment_name: typing.Optional[str] = None,
227
+ client: typing.Optional[modal.client.Client] = None,
228
+ ):
229
+ """Delete a named Volume.
230
+
231
+ Warning: This deletes an *entire Volume*, not just a specific file.
232
+ Deletion is irreversible and will affect any Apps currently using the Volume.
233
+
234
+ **Examples:**
235
+
236
+ ```python notest
237
+ await modal.Volume.objects.delete("my-volume")
238
+ ```
239
+
240
+ Volumes will be deleted from the active environment, or another one can be specified:
241
+
242
+ ```python notest
243
+ await modal.Volume.objects.delete("my-volume", environment_name="dev")
244
+ ```
245
+ """
246
+ ...
247
+
248
+ async def aio(
249
+ self,
250
+ /,
251
+ name: str,
252
+ *,
253
+ allow_missing: bool = False,
254
+ environment_name: typing.Optional[str] = None,
255
+ client: typing.Optional[modal.client.Client] = None,
256
+ ):
257
+ """Delete a named Volume.
258
+
259
+ Warning: This deletes an *entire Volume*, not just a specific file.
260
+ Deletion is irreversible and will affect any Apps currently using the Volume.
261
+
262
+ **Examples:**
263
+
264
+ ```python notest
265
+ await modal.Volume.objects.delete("my-volume")
266
+ ```
267
+
268
+ Volumes will be deleted from the active environment, or another one can be specified:
269
+
270
+ ```python notest
271
+ await modal.Volume.objects.delete("my-volume", environment_name="dev")
272
+ ```
273
+ """
274
+ ...
275
+
276
+ delete: __delete_spec
277
+
192
278
  class _Volume(modal._object._Object):
193
279
  """A writeable volume that can be used to share files between one or more Modal functions.
194
280
 
@@ -479,7 +565,17 @@ class _Volume(modal._object._Object):
479
565
  @staticmethod
480
566
  async def delete(
481
567
  name: str, client: typing.Optional[modal.client._Client] = None, environment_name: typing.Optional[str] = None
482
- ): ...
568
+ ):
569
+ """mdmd:hidden
570
+ Delete a named Volume.
571
+
572
+ Warning: This deletes an *entire Volume*, not just a specific file.
573
+ Deletion is irreversible and will affect any Apps currently using the Volume.
574
+
575
+ DEPRECATED: This method is deprecated; we recommend using `modal.Volume.objects.delete` instead.
576
+ """
577
+ ...
578
+
483
579
  @staticmethod
484
580
  async def rename(
485
581
  old_name: str,
@@ -1000,14 +1096,33 @@ class Volume(modal.object.Object):
1000
1096
  name: str,
1001
1097
  client: typing.Optional[modal.client.Client] = None,
1002
1098
  environment_name: typing.Optional[str] = None,
1003
- ): ...
1099
+ ):
1100
+ """mdmd:hidden
1101
+ Delete a named Volume.
1102
+
1103
+ Warning: This deletes an *entire Volume*, not just a specific file.
1104
+ Deletion is irreversible and will affect any Apps currently using the Volume.
1105
+
1106
+ DEPRECATED: This method is deprecated; we recommend using `modal.Volume.objects.delete` instead.
1107
+ """
1108
+ ...
1109
+
1004
1110
  async def aio(
1005
1111
  self,
1006
1112
  /,
1007
1113
  name: str,
1008
1114
  client: typing.Optional[modal.client.Client] = None,
1009
1115
  environment_name: typing.Optional[str] = None,
1010
- ): ...
1116
+ ):
1117
+ """mdmd:hidden
1118
+ Delete a named Volume.
1119
+
1120
+ Warning: This deletes an *entire Volume*, not just a specific file.
1121
+ Deletion is irreversible and will affect any Apps currently using the Volume.
1122
+
1123
+ DEPRECATED: This method is deprecated; we recommend using `modal.Volume.objects.delete` instead.
1124
+ """
1125
+ ...
1011
1126
 
1012
1127
  delete: __delete_spec
1013
1128
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.2.dev14
3
+ Version: 1.1.2.dev16
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -22,7 +22,7 @@ modal/app.py,sha256=kpq4kXp7pch688y6g55QYAC10wqPTU5FXKoWPMirA3E,47899
22
22
  modal/app.pyi,sha256=-jKXlGDBWRPVsuenBhdMRqawK-L2eiJ7gHbmSblhltg,43525
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=73umEtw_ulRsibY8KXiL5QkOnJthbqTwdgnDZQI_0Xo,15831
25
+ modal/client.pyi,sha256=IwXcU0POnalVA3djJSCg_k5csRk3QaWhLOAF5OjT6xo,15831
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=7A0xGnugQzm8dOfnKMjLjtqekRlRtQ0jPFRYgq6xdUM,40018
@@ -30,8 +30,8 @@ modal/cls.pyi,sha256=_tZ5qrlL-ZDEcD-mf9BZkkNH5XPr4SmGTEQ-RVmqF3I,27772
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=w_AnV724XE2gF7cx5FqeR6SaGN4nFRhGSbZxrCTK2i0,18551
34
- modal/dict.pyi,sha256=AXQFTk99oj_0om5mvUmhBbFve2u3ZIpxniervijGKFg,26280
33
+ modal/dict.py,sha256=Xhc26Zl4LFjEsz32u36qbfvc70mlZ_VDAd_QsKOrNCY,20173
34
+ modal/dict.pyi,sha256=zHj9XK1uv8PR8Vvd9-RmMMd52002SxoNjNsrK2Bn1OE,29914
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,7 +39,7 @@ modal/file_io.py,sha256=BVqAJ0sgPUfN8QsYztWiGB4j56he60TncM02KsylnCw,21449
39
39
  modal/file_io.pyi,sha256=cPT_hsplE5iLCXhYOLn1Sp9eDdk7DxdFmicQHanJZyg,15918
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=65HxorqpspknohUdxFYzKIdL1-P3JYSQLQEhcmhWgpw,36161
42
+ modal/functions.pyi,sha256=s3PQtacOfSeHukLR7Xz3qGD2sVh-CEgfpjgimv2gCCo,36161
43
43
  modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
44
44
  modal/image.py,sha256=A83nmo0zfCUwgvJh0LZ7Yc1sYvDnZLl_phbKxN-9HIw,103144
45
45
  modal/image.pyi,sha256=oH-GCHVEwD5fOX0K_IaWN5RKZlYwX82z-K4wxx8aN3c,68541
@@ -59,8 +59,8 @@ modal/partial_function.pyi,sha256=lqqOzZ9-QvHTDWKQ_oAYYOvsXgTOBKhO9u-RI98JbUk,13
59
59
  modal/proxy.py,sha256=NQJJMGo-D2IfmeU0vb10WWaE4oTLcuf9jTeEJvactOg,1446
60
60
  modal/proxy.pyi,sha256=yWGWwADCRGrC2w81B7671UTH4Uv3HMZKy5vVqlJUZoA,1417
61
61
  modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- modal/queue.py,sha256=zEMCW_nDsROQ6mn6cVPmJCYnGxBMX2N2UfZy36klVNc,23071
63
- modal/queue.pyi,sha256=nWxvJ6hVMgI1HGu9jLuUne122uD-MQVDHdGzUcse-ng,32076
62
+ modal/queue.py,sha256=bmfEEMzkQHeMhCoxQj2DEGLlrBq2pe1n6JloLU_LuT4,24747
63
+ modal/queue.pyi,sha256=cnnd5ZxZA3X0xT-igJbLC3p0TXATNwkJaXC8qCeFphQ,35815
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=eQd0Cf9yTFCNshnj7oH8WvecbhVIwsEsmuXB9O-REis,40927
69
69
  modal/sandbox.pyi,sha256=_ddnvZGauSRG-WelsMB5oPil8KVWb0PSvmuAzAzrLIw,41713
70
70
  modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
- modal/secret.py,sha256=v6KCSsSVuUVPsblpvP6b27aaDLHLt5xAVJsTzuymE48,14709
73
- modal/secret.pyi,sha256=J641LaHIWGSBH5HbC1hGFJnkk_MECSIAwVKufegGBq8,13517
72
+ modal/secret.py,sha256=uJUms_p7HtWFME8maVHSoHEGB_serWHTHM-z6oJb5cM,15923
73
+ modal/secret.pyi,sha256=5YTMzaybIoBtOFhK2T2SuhhvHBbo4lDm8sBqH-rITtk,15912
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=PipdiVxMpk5Fbhpq6cKI9cEsQNdCHUTFLb9YME07L_Q,48131
82
- modal/volume.pyi,sha256=_SPWRDH7u-UUSIgz5GnolgqDenU-wgYVtWE60oTKoFU,45736
81
+ modal/volume.py,sha256=l_hBz7xpfbXCIhY3KSrgwLHzvHQk-w9lLHoEPrXGzLU,49796
82
+ modal/volume.pyi,sha256=fnHhR152qCh5St7XT-PReQK_tPAQ0hmcXKoezOulEl4,49427
83
83
  modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
84
84
  modal/_runtime/asgi.py,sha256=_2xSTsDD27Cit7xnMs4lzkJA2wzer2_N4Oa3BkXFzVA,22521
85
85
  modal/_runtime/container_io_manager.py,sha256=9oqlKKPuLZjE7rYw3zTK30XUZighT3s4ZlA-9oxXOVI,45206
@@ -131,19 +131,19 @@ modal/cli/app.py,sha256=rbuAG92my-1eZN0olk6p2eD4oBnyBliUsrCOUW-U-9k,7832
131
131
  modal/cli/cluster.py,sha256=8pQurDUvLP_HdSeHH5ZB6WIoDh48FR8qP9vGOtSsFXI,3168
132
132
  modal/cli/config.py,sha256=lhp2Pq4RbTDhaZJ-ZJvhrMqJj8c-WjuRX6gjE3TrvXc,1691
133
133
  modal/cli/container.py,sha256=9Ti-TIZ6vjDSmn9mk9h6SRwyhkQjtwirBN18LjpLyvE,3719
134
- modal/cli/dict.py,sha256=qClZPzaWvv8dm2bDaD6jYHkmJoooMzUHxKCd69whrb0,4551
134
+ modal/cli/dict.py,sha256=YAJtiv41YcCd5Fqam3hXCNTs4Y0yOgGR_i6RfQNSAFM,4572
135
135
  modal/cli/entry_point.py,sha256=M9ZeIsYx7rxdc6XP2iOIptVzmpj39D3rU8nfW7Dc3CQ,4388
136
136
  modal/cli/environment.py,sha256=Ayddkiq9jdj3XYDJ8ZmUqFpPPH8xajYlbexRkzGtUcg,4334
137
137
  modal/cli/import_refs.py,sha256=X59Z5JwgliRO6C-cIFto2Pr7o3SwlZMKQPKA0aI4ZK4,13927
138
138
  modal/cli/launch.py,sha256=A5NtAgVDnTMlVFNfTlGS4p4Hbhpub8jZL_T9wvCkK5k,6155
139
139
  modal/cli/network_file_system.py,sha256=I9IqTpVfk32uKYwGd8LTldkQx6UKYrQYNZ26q7Ab5Oo,8126
140
140
  modal/cli/profile.py,sha256=g8X6tFFK9ccKyu2he9Yu19WLSLNdztzECgmIV__XJFs,3257
141
- modal/cli/queues.py,sha256=RkSxO4zgB5Mk7nZzN9GAJ-oRdmVzTig3o7a7U1HKh7M,6093
141
+ modal/cli/queues.py,sha256=5vKtKQ7YExdaxNPYZ0g5suU9sX0-F5h0zy0qBV-hN80,6140
142
142
  modal/cli/run.py,sha256=96m6fpJKbjtva4xzJut0pxS36Z5WCMq0umpAry96im0,24946
143
- modal/cli/secret.py,sha256=AmtXi8HFIph2cHy3z6U0qBEMzQ49Cr3MYgkJad3tWY8,8062
143
+ modal/cli/secret.py,sha256=joJkA78-jKyGHx6VkpgCYvyWqmPa_BnU_GBMhpwsgTQ,7972
144
144
  modal/cli/token.py,sha256=NAmQzKBfEHkcldWKeFxAVIqQBoo1RTp7_A4yc7-8qM0,1911
145
145
  modal/cli/utils.py,sha256=aUXDU9_VgcJrGaGRy4bGf4dqwKYXHCpoO27x4m_bpuo,3293
146
- modal/cli/volume.py,sha256=xKjNixun7nIKQkqqZZDsKx756V0AFUx0D6RVXHQOEYA,10751
146
+ modal/cli/volume.py,sha256=73u0wj3xXGb2sGG6sR9StY4rE8OG7Ec_3_iPnXRUgPo,10760
147
147
  modal/cli/programs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
148
148
  modal/cli/programs/launch_instance_ssh.py,sha256=GrwK_Vy8-7B4x5a6AqFaF7lqNVgu75JYZ2BtFV0_DOw,2660
149
149
  modal/cli/programs/run_jupyter.py,sha256=44Lpvqk2l3hH-uOkmAOzw60NEsfB5uaRDWDKVshvQhs,2682
@@ -153,7 +153,7 @@ modal/experimental/__init__.py,sha256=v5uDRPVr2BNEyeOo6YNWNF5yFUddr66habUvEAqOAG
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.2.dev14.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.2.dev16.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=W-2p7hOT0RRXDvSxBtBAeEzJv7L1OfynjfaW0yfjrLA,103770
164
+ modal_proto/api.proto,sha256=F4GTT-yAUTZcFrE1hn5wIRFda5EUSR89YEUZvnVSzoY,103814
165
165
  modal_proto/api_grpc.py,sha256=1mDcIexGtoVq0675-sqlYVr_M2ncGETpmKsOP7VwE3Y,126369
166
- modal_proto/api_pb2.py,sha256=FXKHIO869SLEKZ_6Kkt62mfHNNYOLzR3p0fw2CYgz3o,364206
167
- modal_proto/api_pb2.pyi,sha256=qdmGJfkcx0N_pk5YfHZvsHaWTRDu3BUZ3dCwTc_vYzw,501697
166
+ modal_proto/api_pb2.py,sha256=fiPCK5cxXaCc-t59iONnuBIp_bXjm0h4cS2kyEvB9Y0,364247
167
+ modal_proto/api_pb2.pyi,sha256=HMXw-aMogEC9UC1jU54zU_1lAcMsuq0dOWK_g-E87Vg,502260
168
168
  modal_proto/api_pb2_grpc.py,sha256=8TyCjBX-IvJaO_v7vkF_-J9h72wwLOe4MKL_jyXTK0g,272649
169
169
  modal_proto/api_pb2_grpc.pyi,sha256=SQtAD1GR57oJOjxohW_8XTHpRRCahy02FTq0IYWzTNs,63669
170
170
  modal_proto/modal_api_grpc.py,sha256=KL5Nw4AS9hJNxfL6VIeuxHz4jIUN7Unz7hYnoSsqyx0,19071
@@ -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=eEchCqAy2OZKW3Qo8xGLsuVGoHEhmGYP5sAK5x5W2gc,121
179
+ modal_version/__init__.py,sha256=991qiLp7Gaj7KDTnPn2cQZzYs3lPFPPiUFmLVtqUyCk,121
180
180
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
181
- modal-1.1.2.dev14.dist-info/METADATA,sha256=XHvAabUY6cdU3qDa3fkLNKRHytGIqqtdCfbiOpU1eS0,2460
182
- modal-1.1.2.dev14.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
- modal-1.1.2.dev14.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
- modal-1.1.2.dev14.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
- modal-1.1.2.dev14.dist-info/RECORD,,
181
+ modal-1.1.2.dev16.dist-info/METADATA,sha256=ebR80hnI4tOEH63GsXjKYPZ0sYbuGzjnsLiktsrGxDk,2460
182
+ modal-1.1.2.dev16.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
+ modal-1.1.2.dev16.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
+ modal-1.1.2.dev16.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
+ modal-1.1.2.dev16.dist-info/RECORD,,
modal_proto/api.proto CHANGED
@@ -1511,9 +1511,11 @@ message FunctionCallCancelRequest {
1511
1511
  }
1512
1512
 
1513
1513
  message FunctionCallGetDataRequest {
1514
- string function_call_id = 1;
1514
+ oneof call_info {
1515
+ string function_call_id = 1;
1516
+ string attempt_token = 3;
1517
+ }
1515
1518
  uint64 last_index = 2;
1516
- optional string attempt_token = 3;
1517
1519
  }
1518
1520
 
1519
1521
  message FunctionCallInfo {
@@ -1540,9 +1542,11 @@ message FunctionCallListResponse {
1540
1542
  }
1541
1543
 
1542
1544
  message FunctionCallPutDataRequest {
1543
- string function_call_id = 1;
1545
+ oneof call_info {
1546
+ string function_call_id = 1;
1547
+ string attempt_token = 3;
1548
+ }
1544
1549
  repeated DataChunk data_chunks = 2;
1545
- reserved 3; // attempt_token
1546
1550
  }
1547
1551
 
1548
1552
  message FunctionCreateRequest {