modal 0.74.57__py3-none-any.whl → 0.74.58__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/snapshot.pyi CHANGED
@@ -12,7 +12,7 @@ class SandboxSnapshot(modal.object.Object):
12
12
  def __init__(self, *args, **kwargs): ...
13
13
 
14
14
  class __from_id_spec(typing_extensions.Protocol):
15
- def __call__(self, sandbox_snapshot_id: str, client: typing.Optional[modal.client.Client] = None): ...
16
- async def aio(self, sandbox_snapshot_id: str, client: typing.Optional[modal.client.Client] = None): ...
15
+ def __call__(self, /, sandbox_snapshot_id: str, client: typing.Optional[modal.client.Client] = None): ...
16
+ async def aio(self, /, sandbox_snapshot_id: str, client: typing.Optional[modal.client.Client] = None): ...
17
17
 
18
18
  from_id: __from_id_spec
modal/token_flow.pyi CHANGED
@@ -20,20 +20,20 @@ class TokenFlow:
20
20
 
21
21
  class __start_spec(typing_extensions.Protocol[SUPERSELF]):
22
22
  def __call__(
23
- self, utm_source: typing.Optional[str] = None, next_url: typing.Optional[str] = None
23
+ self, /, utm_source: typing.Optional[str] = None, next_url: typing.Optional[str] = None
24
24
  ) -> synchronicity.combined_types.AsyncAndBlockingContextManager[tuple[str, str, str]]: ...
25
25
  def aio(
26
- self, utm_source: typing.Optional[str] = None, next_url: typing.Optional[str] = None
26
+ self, /, utm_source: typing.Optional[str] = None, next_url: typing.Optional[str] = None
27
27
  ) -> typing.AsyncContextManager[tuple[str, str, str]]: ...
28
28
 
29
29
  start: __start_spec[typing_extensions.Self]
30
30
 
31
31
  class __finish_spec(typing_extensions.Protocol[SUPERSELF]):
32
32
  def __call__(
33
- self, timeout: float = 40.0, grpc_extra_timeout: float = 5.0
33
+ self, /, timeout: float = 40.0, grpc_extra_timeout: float = 5.0
34
34
  ) -> typing.Optional[modal_proto.api_pb2.TokenFlowWaitResponse]: ...
35
35
  async def aio(
36
- self, timeout: float = 40.0, grpc_extra_timeout: float = 5.0
36
+ self, /, timeout: float = 40.0, grpc_extra_timeout: float = 5.0
37
37
  ) -> typing.Optional[modal_proto.api_pb2.TokenFlowWaitResponse]: ...
38
38
 
39
39
  finish: __finish_spec[typing_extensions.Self]
modal/volume.py CHANGED
@@ -32,7 +32,14 @@ from modal_proto import api_pb2
32
32
 
33
33
  from ._object import EPHEMERAL_OBJECT_HEARTBEAT_SLEEP, _get_environment_name, _Object, live_method, live_method_gen
34
34
  from ._resolver import Resolver
35
- from ._utils.async_utils import TaskContext, aclosing, async_map, asyncnullcontext, synchronize_api
35
+ from ._utils.async_utils import (
36
+ TaskContext,
37
+ aclosing,
38
+ async_map,
39
+ async_map_ordered,
40
+ asyncnullcontext,
41
+ synchronize_api,
42
+ )
36
43
  from ._utils.blob_utils import (
37
44
  BLOCK_SIZE,
38
45
  FileUploadSpec,
@@ -440,10 +447,20 @@ class _Volume(_Object, type_prefix="vo"):
440
447
  except GRPCError as exc:
441
448
  raise FileNotFoundError(exc.message) if exc.status == Status.NOT_FOUND else exc
442
449
 
443
- for url in response.get_urls:
444
- async with ClientSessionRegistry.get_session().get(url) as get_response:
445
- async for data in get_response.content.iter_any():
446
- yield data
450
+ async def read_block(block_url: str) -> bytes:
451
+ async with ClientSessionRegistry.get_session().get(block_url) as get_response:
452
+ return await get_response.content.read()
453
+
454
+ async def iter_urls() -> AsyncGenerator[str]:
455
+ for url in response.get_urls:
456
+ yield url
457
+
458
+ # TODO(dflemstr): Reasonable default? Make configurable?
459
+ prefetch_num_blocks = multiprocessing.cpu_count()
460
+
461
+ async with aclosing(async_map_ordered(iter_urls(), read_block, concurrency=prefetch_num_blocks)) as stream:
462
+ async for value in stream:
463
+ yield value
447
464
 
448
465
 
449
466
  @live_method
modal/volume.pyi CHANGED
@@ -113,8 +113,8 @@ class Volume(modal.object.Object):
113
113
  def __init__(self, *args, **kwargs): ...
114
114
 
115
115
  class ___get_lock_spec(typing_extensions.Protocol[SUPERSELF]):
116
- def __call__(self): ...
117
- async def aio(self): ...
116
+ def __call__(self, /): ...
117
+ async def aio(self, /): ...
118
118
 
119
119
  _get_lock: ___get_lock_spec[typing_extensions.Self]
120
120
 
@@ -143,6 +143,7 @@ class Volume(modal.object.Object):
143
143
  class __lookup_spec(typing_extensions.Protocol):
144
144
  def __call__(
145
145
  self,
146
+ /,
146
147
  name: str,
147
148
  namespace=1,
148
149
  client: typing.Optional[modal.client.Client] = None,
@@ -152,6 +153,7 @@ class Volume(modal.object.Object):
152
153
  ) -> Volume: ...
153
154
  async def aio(
154
155
  self,
156
+ /,
155
157
  name: str,
156
158
  namespace=1,
157
159
  client: typing.Optional[modal.client.Client] = None,
@@ -165,6 +167,7 @@ class Volume(modal.object.Object):
165
167
  class __create_deployed_spec(typing_extensions.Protocol):
166
168
  def __call__(
167
169
  self,
170
+ /,
168
171
  deployment_name: str,
169
172
  namespace=1,
170
173
  client: typing.Optional[modal.client.Client] = None,
@@ -173,6 +176,7 @@ class Volume(modal.object.Object):
173
176
  ) -> str: ...
174
177
  async def aio(
175
178
  self,
179
+ /,
176
180
  deployment_name: str,
177
181
  namespace=1,
178
182
  client: typing.Optional[modal.client.Client] = None,
@@ -183,86 +187,88 @@ class Volume(modal.object.Object):
183
187
  create_deployed: __create_deployed_spec
184
188
 
185
189
  class ___do_reload_spec(typing_extensions.Protocol[SUPERSELF]):
186
- def __call__(self, lock=True): ...
187
- async def aio(self, lock=True): ...
190
+ def __call__(self, /, lock=True): ...
191
+ async def aio(self, /, lock=True): ...
188
192
 
189
193
  _do_reload: ___do_reload_spec[typing_extensions.Self]
190
194
 
191
195
  class __commit_spec(typing_extensions.Protocol[SUPERSELF]):
192
- def __call__(self): ...
193
- async def aio(self): ...
196
+ def __call__(self, /): ...
197
+ async def aio(self, /): ...
194
198
 
195
199
  commit: __commit_spec[typing_extensions.Self]
196
200
 
197
201
  class __reload_spec(typing_extensions.Protocol[SUPERSELF]):
198
- def __call__(self): ...
199
- async def aio(self): ...
202
+ def __call__(self, /): ...
203
+ async def aio(self, /): ...
200
204
 
201
205
  reload: __reload_spec[typing_extensions.Self]
202
206
 
203
207
  class __iterdir_spec(typing_extensions.Protocol[SUPERSELF]):
204
- def __call__(self, path: str, *, recursive: bool = True) -> typing.Iterator[FileEntry]: ...
205
- def aio(self, path: str, *, recursive: bool = True) -> collections.abc.AsyncIterator[FileEntry]: ...
208
+ def __call__(self, /, path: str, *, recursive: bool = True) -> typing.Iterator[FileEntry]: ...
209
+ def aio(self, /, path: str, *, recursive: bool = True) -> collections.abc.AsyncIterator[FileEntry]: ...
206
210
 
207
211
  iterdir: __iterdir_spec[typing_extensions.Self]
208
212
 
209
213
  class __listdir_spec(typing_extensions.Protocol[SUPERSELF]):
210
- def __call__(self, path: str, *, recursive: bool = False) -> list[FileEntry]: ...
211
- async def aio(self, path: str, *, recursive: bool = False) -> list[FileEntry]: ...
214
+ def __call__(self, /, path: str, *, recursive: bool = False) -> list[FileEntry]: ...
215
+ async def aio(self, /, path: str, *, recursive: bool = False) -> list[FileEntry]: ...
212
216
 
213
217
  listdir: __listdir_spec[typing_extensions.Self]
214
218
 
215
219
  class __read_file_spec(typing_extensions.Protocol[SUPERSELF]):
216
- def __call__(self, path: str) -> typing.Iterator[bytes]: ...
217
- def aio(self, path: str) -> collections.abc.AsyncIterator[bytes]: ...
220
+ def __call__(self, /, path: str) -> typing.Iterator[bytes]: ...
221
+ def aio(self, /, path: str) -> collections.abc.AsyncIterator[bytes]: ...
218
222
 
219
223
  read_file: __read_file_spec[typing_extensions.Self]
220
224
 
221
225
  class ___read_file1_spec(typing_extensions.Protocol[SUPERSELF]):
222
- def __call__(self, path: str) -> typing.Iterator[bytes]: ...
223
- def aio(self, path: str) -> collections.abc.AsyncIterator[bytes]: ...
226
+ def __call__(self, /, path: str) -> typing.Iterator[bytes]: ...
227
+ def aio(self, /, path: str) -> collections.abc.AsyncIterator[bytes]: ...
224
228
 
225
229
  _read_file1: ___read_file1_spec[typing_extensions.Self]
226
230
 
227
231
  class ___read_file2_spec(typing_extensions.Protocol[SUPERSELF]):
228
- def __call__(self, path: str) -> typing.Iterator[bytes]: ...
229
- def aio(self, path: str) -> collections.abc.AsyncIterator[bytes]: ...
232
+ def __call__(self, /, path: str) -> typing.Iterator[bytes]: ...
233
+ def aio(self, /, path: str) -> collections.abc.AsyncIterator[bytes]: ...
230
234
 
231
235
  _read_file2: ___read_file2_spec[typing_extensions.Self]
232
236
 
233
237
  class __remove_file_spec(typing_extensions.Protocol[SUPERSELF]):
234
- def __call__(self, path: str, recursive: bool = False) -> None: ...
235
- async def aio(self, path: str, recursive: bool = False) -> None: ...
238
+ def __call__(self, /, path: str, recursive: bool = False) -> None: ...
239
+ async def aio(self, /, path: str, recursive: bool = False) -> None: ...
236
240
 
237
241
  remove_file: __remove_file_spec[typing_extensions.Self]
238
242
 
239
243
  class __copy_files_spec(typing_extensions.Protocol[SUPERSELF]):
240
- def __call__(self, src_paths: collections.abc.Sequence[str], dst_path: str) -> None: ...
241
- async def aio(self, src_paths: collections.abc.Sequence[str], dst_path: str) -> None: ...
244
+ def __call__(self, /, src_paths: collections.abc.Sequence[str], dst_path: str) -> None: ...
245
+ async def aio(self, /, src_paths: collections.abc.Sequence[str], dst_path: str) -> None: ...
242
246
 
243
247
  copy_files: __copy_files_spec[typing_extensions.Self]
244
248
 
245
249
  class __batch_upload_spec(typing_extensions.Protocol[SUPERSELF]):
246
- def __call__(self, force: bool = False) -> AbstractVolumeUploadContextManager: ...
247
- async def aio(self, force: bool = False) -> AbstractVolumeUploadContextManager: ...
250
+ def __call__(self, /, force: bool = False) -> AbstractVolumeUploadContextManager: ...
251
+ async def aio(self, /, force: bool = False) -> AbstractVolumeUploadContextManager: ...
248
252
 
249
253
  batch_upload: __batch_upload_spec[typing_extensions.Self]
250
254
 
251
255
  class ___instance_delete_spec(typing_extensions.Protocol[SUPERSELF]):
252
- def __call__(self): ...
253
- async def aio(self): ...
256
+ def __call__(self, /): ...
257
+ async def aio(self, /): ...
254
258
 
255
259
  _instance_delete: ___instance_delete_spec[typing_extensions.Self]
256
260
 
257
261
  class __delete_spec(typing_extensions.Protocol):
258
262
  def __call__(
259
263
  self,
264
+ /,
260
265
  name: str,
261
266
  client: typing.Optional[modal.client.Client] = None,
262
267
  environment_name: typing.Optional[str] = None,
263
268
  ): ...
264
269
  async def aio(
265
270
  self,
271
+ /,
266
272
  name: str,
267
273
  client: typing.Optional[modal.client.Client] = None,
268
274
  environment_name: typing.Optional[str] = None,
@@ -273,6 +279,7 @@ class Volume(modal.object.Object):
273
279
  class __rename_spec(typing_extensions.Protocol):
274
280
  def __call__(
275
281
  self,
282
+ /,
276
283
  old_name: str,
277
284
  new_name: str,
278
285
  *,
@@ -281,6 +288,7 @@ class Volume(modal.object.Object):
281
288
  ): ...
282
289
  async def aio(
283
290
  self,
291
+ /,
284
292
  old_name: str,
285
293
  new_name: str,
286
294
  *,
@@ -409,8 +417,8 @@ class VolumeUploadContextManager(AbstractVolumeUploadContextManager):
409
417
  ): ...
410
418
 
411
419
  class ___upload_file_spec(typing_extensions.Protocol[SUPERSELF]):
412
- def __call__(self, file_spec: modal._utils.blob_utils.FileUploadSpec) -> modal_proto.api_pb2.MountFile: ...
413
- async def aio(self, file_spec: modal._utils.blob_utils.FileUploadSpec) -> modal_proto.api_pb2.MountFile: ...
420
+ def __call__(self, /, file_spec: modal._utils.blob_utils.FileUploadSpec) -> modal_proto.api_pb2.MountFile: ...
421
+ async def aio(self, /, file_spec: modal._utils.blob_utils.FileUploadSpec) -> modal_proto.api_pb2.MountFile: ...
414
422
 
415
423
  _upload_file: ___upload_file_spec[typing_extensions.Self]
416
424
 
@@ -496,8 +504,8 @@ class VolumeUploadContextManager2(AbstractVolumeUploadContextManager):
496
504
  ): ...
497
505
 
498
506
  class ___put_file_specs_spec(typing_extensions.Protocol[SUPERSELF]):
499
- def __call__(self, file_specs: list[modal._utils.blob_utils.FileUploadSpec2]): ...
500
- async def aio(self, file_specs: list[modal._utils.blob_utils.FileUploadSpec2]): ...
507
+ def __call__(self, /, file_specs: list[modal._utils.blob_utils.FileUploadSpec2]): ...
508
+ async def aio(self, /, file_specs: list[modal._utils.blob_utils.FileUploadSpec2]): ...
501
509
 
502
510
  _put_file_specs: ___put_file_specs_spec[typing_extensions.Self]
503
511
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 0.74.57
3
+ Version: 0.74.58
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1,7 +1,7 @@
1
1
  modal/__init__.py,sha256=7wz1AT_bpWJJEzXsAo3QMb7i87y7UGXwfneb0bGDhRg,2502
2
2
  modal/__main__.py,sha256=sTJcc9EbDuCKSwg3tL6ZckFw9WWdlkXW8mId1IvJCNc,2846
3
3
  modal/_clustered_functions.py,sha256=kTf-9YBXY88NutC1akI-gCbvf01RhMPCw-zoOI_YIUE,2700
4
- modal/_clustered_functions.pyi,sha256=vllkegc99A0jrUOWa8mdlSbdp6uz36TsHhGxysAOpaQ,771
4
+ modal/_clustered_functions.pyi,sha256=2aWxN2v5WUnj-R-sk6BzJ-3AvggkQGQjwhtvbDH3pds,777
5
5
  modal/_container_entrypoint.py,sha256=2Zx9O_EMJg0H77EdnC2vGKs6uFMWwbP1NLFf-qYmWmU,28962
6
6
  modal/_functions.py,sha256=9vDIyDiAqW3TTpcda0mMDP62BgMd8kUjth16xSd4Nwc,77738
7
7
  modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
@@ -15,77 +15,77 @@ modal/_resources.py,sha256=NMAp0GCLutiZI4GuKSIVnRHVlstoD3hNGUabjTUtzf4,1794
15
15
  modal/_serialization.py,sha256=wAgaALThfr-DBV9LMhM4qY_PCH7SRhA9xgoHL2bapBk,22963
16
16
  modal/_traceback.py,sha256=IZQzB3fVlUfMHOSyKUgw0H6qv4yHnpyq-XVCNZKfUdA,5023
17
17
  modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
18
- modal/_tunnel.pyi,sha256=JmmDYAy9F1FpgJ_hWx0xkom2nTOFQjn4mTPYlU3PFo4,1245
18
+ modal/_tunnel.pyi,sha256=a4Ea0RQ5jaJB0A4LH9FANGB44ObqkHHGVDV4RwtokzU,1251
19
19
  modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
20
20
  modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
21
21
  modal/app.py,sha256=xojuGZv4LaQwZU5ntj7WbmMjeNuB9Gll8Mzqe2LyiEs,51323
22
- modal/app.pyi,sha256=0QNtnUpAFbOPcbwCt119ge7OmoBqMFw5SajLgdE5eOw,28600
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=_KIrJFw7x6MSUXAh5wFfVriJU-z0CH8NWtGkqEU__i8,8343
25
+ modal/client.pyi,sha256=s35e9PyIePi0LYczptJLzW634xvENbqmQwwyVmWGqqc,8385
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
29
- modal/cls.pyi,sha256=B--Y4xEOo3GRE3QiiFdIE8jnIKEeBcOtwAbXvg2Z8H4,12012
29
+ 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
- modal/container_process.pyi,sha256=bXs2KHe7nxVuLAm6RRBqXCvDKelANGX9gFY8qIuZYDs,2898
32
+ modal/container_process.pyi,sha256=cR4aRHTbcVvmxGCc1_k2Ey8JllJIAQYq9PBKx0_1TuI,2916
33
33
  modal/dict.py,sha256=7NJVI05hisF9gTuJMYestH9X0LIOaE9PPqbCeYtwSRs,13365
34
- modal/dict.pyi,sha256=BOeu6bAH0w_wLdYFiaEkSGNhFPBR2a97tQsnION6WAs,7706
34
+ modal/dict.pyi,sha256=X4BhtAYry2TOW6fEj2t3nklHLJJpoh8fQw77lXQvfB4,7850
35
35
  modal/environments.py,sha256=t_TdUyORfIjlEAOS7I4My1qHi0cVsjPxwKloLmAAZMc,6935
36
- modal/environments.pyi,sha256=RvO31JCujt3nTKaYQ7tMnKhMywQfISk542J04UUrcjI,3379
36
+ modal/environments.pyi,sha256=4HbI0kywveaUVI7HqDtZ4HphCTGXYi_wie2hz87up5A,3425
37
37
  modal/exception.py,sha256=4JyO-SACaLNDe2QC48EjsK8GMkZ8AgEurZ8j1YdRu8E,5263
38
38
  modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
39
- modal/file_io.pyi,sha256=NTRft1tbPSWf9TlWVeZmTlgB5AZ_Zhu2srWIrWr7brk,9445
39
+ modal/file_io.pyi,sha256=oB7x-rKq7bmm8cA7Z7W9C9yeko7KK9m9i5GidFnkGK4,9569
40
40
  modal/file_pattern_matcher.py,sha256=trosX-Bp7dOubudN1bLLhRAoidWy1TcoaR4Pv8CedWw,6497
41
41
  modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
42
- modal/functions.pyi,sha256=rZarGph8_sA_Zo0LUrMOgqbXzFmxrPznWwr_UJWLY7Q,16404
42
+ modal/functions.pyi,sha256=1GV493uk0Q7baSSPK4HtadK-1qSGMwM_OxlmgVvWP00,16742
43
43
  modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
44
44
  modal/image.py,sha256=ZCghS6l1O7pezXcdMHk6RoJpW3qWszfWGJTW38lNXaU,92797
45
- modal/image.pyi,sha256=ddbegF532pDLiVANOJdtJiYoDbbF3mAFrsCiyvIu7jU,25632
45
+ modal/image.pyi,sha256=MDq7tNJevElK78VxFYrZRe_00kz9gPdg98MN5c6fFoE,25644
46
46
  modal/io_streams.py,sha256=YDZVQSDv05DeXg5TwcucC9Rj5hQBx2GXdluan9rIUpw,15467
47
- modal/io_streams.pyi,sha256=RpXIWFm6fQkLJRc1uxd0KkQ2wTLCB65jRlyGplU6CQE,5100
47
+ modal/io_streams.pyi,sha256=1UK6kWLREASQfq-wL9wSp5iqjLU0egRZPDn4LXs1PZY,5136
48
48
  modal/mount.py,sha256=_YoJ1TYgttZYGCS-698e8XpExt-mYr994-cMBSOU6EE,32696
49
- modal/mount.pyi,sha256=GPg4pH1O7B4qH7o4VuX3FPCAnstbQd0h0kffDbjMIk8,12541
49
+ modal/mount.pyi,sha256=PHs-N9LGSDfYWw70UrhvGZW_6uWwyx-1GAieROzCNNs,12583
50
50
  modal/network_file_system.py,sha256=9_4EFTM1tKSTdwk0f4beSlWCiat6gC6ZjbsOWje07TM,14779
51
- modal/network_file_system.pyi,sha256=C_ZiXmpdkTObapVhAPlRmB4ofmM2D7SdKlUCZVg-1IQ,8129
51
+ modal/network_file_system.pyi,sha256=58DiUqHGlARmI3cz-Yo7IFObKKFIiGh5UIU5JxGNFfc,8333
52
52
  modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
53
- modal/object.pyi,sha256=kyJkRQcVv3ct7zSAxvvXcuhBVeH914v80uSlqeS7cA4,5632
53
+ modal/object.pyi,sha256=Nc6fCW8ViC8YQPbtJav9KNDCW296-VimRUh-v3AaaYY,5674
54
54
  modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
55
55
  modal/parallel_map.py,sha256=ZOzjgCBcXv4gyOmEsLPVRkji1r2yqPIsP4Diw7G0hWI,35694
56
- modal/parallel_map.pyi,sha256=bLh_D57e5KOIkmP4WW-C_rMSzfxRUNfdtpNJKj4jWA4,5865
56
+ modal/parallel_map.pyi,sha256=kwggW2Vqnarlr8yk7e7H-8KsLB2GEBUs4OrRz_tUBa0,5883
57
57
  modal/partial_function.py,sha256=SwuAAj2wj4SO6F6nkSnwNZrczEmm9w9YdlQTHh6hr04,1195
58
58
  modal/partial_function.pyi,sha256=NFWz1aCAs2B3-GnPf1cTatWRZOLnYpFKCnjP_X9iNRs,6411
59
59
  modal/proxy.py,sha256=XEjIHzZvbD3UW4YWyDzbDuNFq6hDUxyPPxupl2qwULY,1429
60
60
  modal/proxy.pyi,sha256=FTTK1g3La8oLf0oXWeoTp1jMVKghzN_2UmESJoLvsn0,396
61
61
  modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  modal/queue.py,sha256=6ZPwXhRftUTDfkioZNEZDjITihr3KK9PJ1lTOCA8NrE,18996
63
- modal/queue.pyi,sha256=_hsU43mInSwb0RtDh7ooPabDLZgGWda693NpxfwdQsA,10288
63
+ modal/queue.pyi,sha256=O0f0S5kM1P0GVgzUzgsN0XsI46B9cJem4kkWluFndjM,10632
64
64
  modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
65
65
  modal/runner.py,sha256=yK1mBkX1_ZKvvWLoe1e2mGehJSWs97Mpyglo9Oj5rQw,24783
66
- modal/runner.pyi,sha256=HW2pvC_PLwg1Es_EkrfQgMZsktIr9zzVEtmjOVFG6Dw,5351
66
+ modal/runner.pyi,sha256=VKy-92YSJWs_u5KqYO9HBxRwL2Ndi4xrlqiTIQPSvsM,5407
67
67
  modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
68
68
  modal/sandbox.py,sha256=aLW1hCMrk9ndfXaWjDcknS0U-ei-GhUpSjo-pURrnW8,32722
69
- modal/sandbox.pyi,sha256=cLmSwI1ab-2DgEuXNf6S1PiK63wfUR9dHtxlZtSOuX8,22719
69
+ modal/sandbox.pyi,sha256=_40Mjzj9iO8MrMqb5snlnQZ5FAy2bEv5-8BGbqqgxLk,22959
70
70
  modal/schedule.py,sha256=ewa7hb9NKYnoeSCW2PujZAbGGJL8btX6X3KalCFpc_M,2626
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
72
  modal/secret.py,sha256=oczsOxMDifDusYA6_w49bGTDujHbxefyWNGspq62LRE,10505
73
- modal/secret.pyi,sha256=b1jcMx9Z4bSIGOcrbyRPc68lzkFQBEauUP71gbnZeL4,3043
73
+ modal/secret.pyi,sha256=NY_dz0UjiYyn4u4LaBZwPP3Ji7SlTLpEyzrYK2sj9HQ,3103
74
74
  modal/serving.py,sha256=orZjhyikqk7U77My7GedbVKy65j0_CF7J7mqye86dRw,4650
75
- modal/serving.pyi,sha256=KGSaZhg0qwygLmDkhgJedUfWeNSkXsyoOipq10vYffU,1978
75
+ modal/serving.pyi,sha256=MVlw5aqe1rJPapB7f6GSAQn7GY00T617LZpqFq_1qsw,2000
76
76
  modal/snapshot.py,sha256=6rQvDP3iX9hdiAudKTy0-m0JESt4kk0q2gusXbaRA-8,1279
77
- modal/snapshot.pyi,sha256=Ypd4NKsjOTnnnqXyTGGLKq5lkocRrUURYjY5Pi67_qA,670
77
+ modal/snapshot.pyi,sha256=dIEBdTPb7O3VwkQ8TMPjfyU17RLuS9i0DnACxxHy8X4,676
78
78
  modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
79
79
  modal/token_flow.py,sha256=0_4KabXKsuE4OXTJ1OuLOtA-b1sesShztMZkkRFK7tA,7605
80
- modal/token_flow.pyi,sha256=7WBDuk9l_VNLxUwr6zDZg2gLyujTiGlAkjmjPV_7FWc,2109
81
- modal/volume.py,sha256=d8x6i2qJgacJQ5qbNMvzeNFrK7ap4jPtjxZEpWstpCw,40624
82
- modal/volume.pyi,sha256=rjlkEt9zuCy7GLe1TuVDSTiGJliFX9v6_KGKqL8HaeM,18760
80
+ modal/token_flow.pyi,sha256=ILbRv6JsZq-jK8jcJM7eB74e0PsbzwBm7hyPcV9lBlQ,2121
81
+ modal/volume.py,sha256=4njGgpmC7bVAxwDgn88XJNtaCk4mrz1qLcHBXXCXklg,41085
82
+ modal/volume.pyi,sha256=-rcgdhGCaQV5v--hgkABcuYH1VbtElKPUC4AnxonNtk,18970
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=6j0jO2-s9ShckM4SK45OapoQxWW9HQwQjFaBkXPJPwU,44763
86
- modal/_runtime/container_io_manager.pyi,sha256=3N9TOYa5hfufhJV5IiIhpvJYCeLZe-ne76-XuxcFLW0,16147
86
+ modal/_runtime/container_io_manager.pyi,sha256=OKvrccBxawjF0PHZuN5eXeh266fS7qZH8yAIG0P02cY,16349
87
87
  modal/_runtime/execution_context.py,sha256=73Y5zH_o-MhVCrkJXakYVlFkKqCa2CWvqoHjOfJrJGg,3034
88
- modal/_runtime/execution_context.pyi,sha256=TAxQq7uLj7i9r9XbXgFZiSVBWxObFWN-rkssS0I7Vkk,661
88
+ modal/_runtime/execution_context.pyi,sha256=AlRGyocfQlb4UpEuI_VmRRtvaBTbhjgyKSRFUePi8J0,667
89
89
  modal/_runtime/gpu_memory_snapshot.py,sha256=tA3m1d1cwnmHpvpCeN_WijDd6n8byn7LWlpicbIxiOI,3144
90
90
  modal/_runtime/telemetry.py,sha256=T1RoAGyjBDr1swiM6pPsGRSITm7LI5FDK18oNXxY08U,5163
91
91
  modal/_runtime/user_code_imports.py,sha256=78wJyleqY2RVibqcpbDQyfWVBVT9BjyHPeoV9WdwV5Y,17720
@@ -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.74.57.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
149
+ modal-0.74.58.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=m94xZNWIjH8oUtJk4l9xfovzDJede2o7X-q0MHVECtM,470
173
173
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
174
- modal_version/_version_generated.py,sha256=jDPOt0hc526e_geJkc67dSyGFBVRc-ypApzbMcc47yA,149
175
- modal-0.74.57.dist-info/METADATA,sha256=Kl0L5wgpuBfV2mQpPJJB8rKFKFeKRHGOAkcKEYsKijs,2451
176
- modal-0.74.57.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
177
- modal-0.74.57.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
178
- modal-0.74.57.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
179
- modal-0.74.57.dist-info/RECORD,,
174
+ modal_version/_version_generated.py,sha256=ty9vlBouwII9j47zM8FqtqP8f3FZEMvofJhfF5qojIY,149
175
+ modal-0.74.58.dist-info/METADATA,sha256=8v0JtnopQExL5NG0TFZwr7Q8NY9tYSsGUOH_XTYa-qU,2451
176
+ modal-0.74.58.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
177
+ modal-0.74.58.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
178
+ modal-0.74.58.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
179
+ modal-0.74.58.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
 
3
3
  # Note: Reset this value to -1 whenever you make a minor `0.X` release of the client.
4
- build_number = 57 # git: 747bcf5
4
+ build_number = 58 # git: ea8f826