modal 0.72.44__py3-none-any.whl → 0.72.46__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/app.py CHANGED
@@ -211,12 +211,12 @@ class _App:
211
211
  self._name = name
212
212
  self._description = name
213
213
 
214
- check_sequence(mounts, _Mount, "`mounts=` has to be a list or tuple of Mount objects")
215
- check_sequence(secrets, _Secret, "`secrets=` has to be a list or tuple of Secret objects")
214
+ check_sequence(mounts, _Mount, "`mounts=` has to be a list or tuple of `modal.Mount` objects")
215
+ check_sequence(secrets, _Secret, "`secrets=` has to be a list or tuple of `modal.Secret` objects")
216
216
  validate_volumes(volumes)
217
217
 
218
218
  if image is not None and not isinstance(image, _Image):
219
- raise InvalidError("image has to be a modal Image or AioImage object")
219
+ raise InvalidError("`image=` has to be a `modal.Image` object")
220
220
 
221
221
  self._functions = {}
222
222
  self._classes = {}
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.72.44"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.72.46"
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.72.44"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.72.46"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
modal/sandbox.py CHANGED
@@ -19,7 +19,7 @@ from ._location import parse_cloud_provider
19
19
  from ._object import _get_environment_name, _Object
20
20
  from ._resolver import Resolver
21
21
  from ._resources import convert_fn_config_to_resources_config
22
- from ._utils.async_utils import synchronize_api
22
+ from ._utils.async_utils import TaskContext, synchronize_api
23
23
  from ._utils.deprecation import deprecation_error
24
24
  from ._utils.grpc_utils import retry_transient_errors
25
25
  from ._utils.mount_utils import validate_network_file_systems, validate_volumes
@@ -517,9 +517,8 @@ class _Sandbox(_Object, type_prefix="sb"):
517
517
  raise InvalidError(f"workdir must be an absolute path, got: {workdir}")
518
518
 
519
519
  # Force secret resolution so we can pass the secret IDs to the backend.
520
- # TODO should we parallelize this?
521
- for secret in secrets:
522
- await secret.hydrate(client=self._client)
520
+ secret_coros = [secret.hydrate(client=self._client) for secret in secrets]
521
+ await TaskContext.gather(*secret_coros)
523
522
 
524
523
  task_id = await self._get_task_id()
525
524
  req = api_pb2.ContainerExecRequest(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: modal
3
- Version: 0.72.44
3
+ Version: 0.72.46
4
4
  Summary: Python client library for Modal
5
5
  Author: Modal Labs
6
6
  Author-email: support@modal.com
@@ -16,11 +16,11 @@ modal/_traceback.py,sha256=IZQzB3fVlUfMHOSyKUgw0H6qv4yHnpyq-XVCNZKfUdA,5023
16
16
  modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
17
17
  modal/_tunnel.pyi,sha256=JmmDYAy9F1FpgJ_hWx0xkom2nTOFQjn4mTPYlU3PFo4,1245
18
18
  modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
19
- modal/app.py,sha256=UOuqlCKlFAjOXCacXmoEMM90FnqFwPRXUhLh0Gi6xzg,45344
19
+ modal/app.py,sha256=mz-fmvaL4ND616rqGOi-ikAuQWCv2CKeR_HpviIurYc,45353
20
20
  modal/app.pyi,sha256=aZJkeqsnsv72R7OTLXcifom0c-NBU6xgVhRc9yEt9nE,25760
21
21
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
22
22
  modal/client.py,sha256=8SQawr7P1PNUCq1UmJMUQXG2jIo4Nmdcs311XqrNLRE,15276
23
- modal/client.pyi,sha256=oEUr7fESr6EZOja1FBYamr7cvQEretVMYZe_oDrms4I,7593
23
+ modal/client.pyi,sha256=7ptrBrDCke8FgdEPSV2XLb1siWsqpQnScHJnB65BBnc,7593
24
24
  modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
25
25
  modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
26
26
  modal/cls.py,sha256=xHgZZAmymplw0I2YZGAA8raBboixdNKKTrnsxQZI7G8,32159
@@ -65,7 +65,7 @@ modal/retries.py,sha256=HKR2Q9aNPWkMjQ5nwobqYTuZaSuw0a8lI2zrtY5IW98,5230
65
65
  modal/runner.py,sha256=0SCMgKO8lZ9W1C7le1EcgViKERMXpi_-QBd6PF_MH0Q,24450
66
66
  modal/runner.pyi,sha256=YmP4EOCNjjkwSIPi2Gl6hF_ji_ytkxz9dw3iB9KXaOI,5275
67
67
  modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
68
- modal/sandbox.py,sha256=kxcYmCcxRBI1GIfThwWufdLXjusry9fXR6ee2czMtUI,28998
68
+ modal/sandbox.py,sha256=h5bgvt98iFmQs4aBu_d2aR6qP5UM5QVdP3wgm_P7RgE,29014
69
69
  modal/sandbox.pyi,sha256=XtiDHYa4HOooyuEPmKFwEqO58AJBJVTceO_1HQyDwII,21343
70
70
  modal/schedule.py,sha256=0ZFpKs1bOxeo5n3HZjoL7OE2ktsb-_oGtq-WJEPO4tY,2615
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
@@ -167,10 +167,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
167
167
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
168
  modal_version/__init__.py,sha256=kGya2ZlItX2zB7oHORs-wvP4PG8lg_mtbi1QIK3G6SQ,470
169
169
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
170
- modal_version/_version_generated.py,sha256=MMCvCHcq668rNXMeV1B29-hsCwFRgESfAsPDFi7WqkA,149
171
- modal-0.72.44.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
172
- modal-0.72.44.dist-info/METADATA,sha256=GagoHIWlIurRMkHcdIb0tMu-p57HtFwlC4-9PLOINLE,2329
173
- modal-0.72.44.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
174
- modal-0.72.44.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
175
- modal-0.72.44.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
176
- modal-0.72.44.dist-info/RECORD,,
170
+ modal_version/_version_generated.py,sha256=8ElQx-jZomR_sbt_edpcGW05gifcOd7NP7_PnBb5cnI,149
171
+ modal-0.72.46.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
172
+ modal-0.72.46.dist-info/METADATA,sha256=Su-wXPgM51Rxqz7FyS3N_OoDQWoNdmSRtl7_YPzLWQQ,2329
173
+ modal-0.72.46.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
174
+ modal-0.72.46.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
175
+ modal-0.72.46.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
176
+ modal-0.72.46.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 = 44 # git: f56afee
4
+ build_number = 46 # git: f715781