modal 0.73.80__py3-none-any.whl → 0.73.81__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.
@@ -16,7 +16,7 @@ from modal_proto import api_pb2
16
16
 
17
17
  from ._functions import _Function
18
18
  from ._utils.async_utils import synchronizer
19
- from ._utils.deprecation import deprecation_error, deprecation_warning
19
+ from ._utils.deprecation import deprecation_warning
20
20
  from ._utils.function_utils import callable_has_non_self_non_default_params, callable_has_non_self_params
21
21
  from .config import logger
22
22
  from .exception import InvalidError
@@ -266,7 +266,6 @@ def _web_endpoint(
266
266
  Iterable[str]
267
267
  ] = None, # Create an endpoint using a custom domain fully-qualified domain name (FQDN).
268
268
  requires_proxy_auth: bool = False, # Require Modal-Key and Modal-Secret HTTP Headers on requests.
269
- wait_for_response: bool = True, # DEPRECATED: this must always be True now
270
269
  ) -> Callable[[Callable[P, ReturnType]], _PartialFunction[P, ReturnType, ReturnType]]:
271
270
  """Register a basic web endpoint with this application.
272
271
 
@@ -297,14 +296,6 @@ def _web_endpoint(
297
296
  f"Applying decorators for {raw_f} in the wrong order!\nUsage:\n\n"
298
297
  "@app.function()\n@app.web_endpoint()\ndef my_webhook():\n ..."
299
298
  )
300
- if not wait_for_response:
301
- deprecation_error(
302
- (2024, 5, 13),
303
- "wait_for_response=False has been deprecated on web endpoints. See "
304
- "https://modal.com/docs/guide/webhook-timeouts#polling-solutions for alternatives.",
305
- )
306
-
307
- # self._loose_webhook_configs.add(raw_f)
308
299
 
309
300
  return _PartialFunction(
310
301
  raw_f,
@@ -329,7 +320,6 @@ def _asgi_app(
329
320
  label: Optional[str] = None, # Label for created endpoint. Final subdomain will be <workspace>--<label>.modal.run.
330
321
  custom_domains: Optional[Iterable[str]] = None, # Deploy this endpoint on a custom domain.
331
322
  requires_proxy_auth: bool = False, # Require Modal-Key and Modal-Secret HTTP Headers on requests.
332
- wait_for_response: bool = True, # DEPRECATED: this must always be True now
333
323
  ) -> Callable[[Callable[..., Any]], _PartialFunction]:
334
324
  """Decorator for registering an ASGI app with a Modal function.
335
325
 
@@ -377,13 +367,6 @@ def _asgi_app(
377
367
  f"ASGI app function {raw_f.__name__} is an async function. Only sync Python functions are supported."
378
368
  )
379
369
 
380
- if not wait_for_response:
381
- deprecation_error(
382
- (2024, 5, 13),
383
- "wait_for_response=False has been deprecated on web endpoints. See "
384
- "https://modal.com/docs/guide/webhook-timeouts#polling-solutions for alternatives",
385
- )
386
-
387
370
  return _PartialFunction(
388
371
  raw_f,
389
372
  _PartialFunctionFlags.FUNCTION,
@@ -405,7 +388,6 @@ def _wsgi_app(
405
388
  label: Optional[str] = None, # Label for created endpoint. Final subdomain will be <workspace>--<label>.modal.run.
406
389
  custom_domains: Optional[Iterable[str]] = None, # Deploy this endpoint on a custom domain.
407
390
  requires_proxy_auth: bool = False, # Require Modal-Key and Modal-Secret HTTP Headers on requests.
408
- wait_for_response: bool = True, # DEPRECATED: this must always be True now
409
391
  ) -> Callable[[Callable[..., Any]], _PartialFunction]:
410
392
  """Decorator for registering a WSGI app with a Modal function.
411
393
 
@@ -453,13 +435,6 @@ def _wsgi_app(
453
435
  f"WSGI app function {raw_f.__name__} is an async function. Only sync Python functions are supported."
454
436
  )
455
437
 
456
- if not wait_for_response:
457
- deprecation_error(
458
- (2024, 5, 13),
459
- "wait_for_response=False has been deprecated on web endpoints. See "
460
- "https://modal.com/docs/guide/webhook-timeouts#polling-solutions for alternatives",
461
- )
462
-
463
438
  return _PartialFunction(
464
439
  raw_f,
465
440
  _PartialFunctionFlags.FUNCTION,
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.73.80"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.81"
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.73.80"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.81"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
modal/functions.pyi CHANGED
@@ -198,11 +198,11 @@ class Function(
198
198
 
199
199
  _call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
200
200
 
201
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
201
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
202
202
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
203
203
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
204
204
 
205
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
205
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
206
206
 
207
207
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
208
208
  def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
@@ -217,19 +217,19 @@ class Function(
217
217
  self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
218
218
  ) -> modal._functions.OriginalReturnType: ...
219
219
 
220
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
220
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
221
221
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
222
222
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
223
223
 
224
224
  _experimental_spawn: ___experimental_spawn_spec[
225
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
225
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
226
226
  ]
227
227
 
228
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
228
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
229
229
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
230
230
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
231
231
 
232
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
232
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
233
233
 
234
234
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
235
235
 
@@ -57,7 +57,6 @@ def web_endpoint(
57
57
  docs: bool = False,
58
58
  custom_domains: typing.Optional[collections.abc.Iterable[str]] = None,
59
59
  requires_proxy_auth: bool = False,
60
- wait_for_response: bool = True,
61
60
  ) -> collections.abc.Callable[
62
61
  [collections.abc.Callable[modal._partial_function.P, modal._partial_function.ReturnType]],
63
62
  PartialFunction[modal._partial_function.P, modal._partial_function.ReturnType, modal._partial_function.ReturnType],
@@ -68,7 +67,6 @@ def asgi_app(
68
67
  label: typing.Optional[str] = None,
69
68
  custom_domains: typing.Optional[collections.abc.Iterable[str]] = None,
70
69
  requires_proxy_auth: bool = False,
71
- wait_for_response: bool = True,
72
70
  ) -> collections.abc.Callable[[collections.abc.Callable[..., typing.Any]], PartialFunction]: ...
73
71
  def wsgi_app(
74
72
  _warn_parentheses_missing=None,
@@ -76,7 +74,6 @@ def wsgi_app(
76
74
  label: typing.Optional[str] = None,
77
75
  custom_domains: typing.Optional[collections.abc.Iterable[str]] = None,
78
76
  requires_proxy_auth: bool = False,
79
- wait_for_response: bool = True,
80
77
  ) -> collections.abc.Callable[[collections.abc.Callable[..., typing.Any]], PartialFunction]: ...
81
78
  def web_server(
82
79
  port: int,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.80
3
+ Version: 0.73.81
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -8,7 +8,7 @@ modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
8
8
  modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
9
9
  modal/_object.py,sha256=ItQcsMNkz9Y3kdTsvfNarbW-paJ2qabDyQ7njaqY0XI,11359
10
10
  modal/_output.py,sha256=Z0nngPh2mKHMQc4MQ92YjVPc3ewOLa3I4dFBlL9nvQY,25656
11
- modal/_partial_function.py,sha256=KGv4hWXBboiWFxC733jfOHKdvShTPjF75lVv866Lgyc,29078
11
+ modal/_partial_function.py,sha256=5MKkd66aKB6NlFjnLCNidY4E6L2SDjmChp0ByYYV6sU,27881
12
12
  modal/_proxy_tunnel.py,sha256=gnKyCfmVB7x2d1A6c-JDysNIP3kEFxmXzhcXhPrzPn0,1906
13
13
  modal/_pty.py,sha256=JZfPDDpzqICZqtyPI_oMJf_9w-p_lLNuzHhwhodUXio,1329
14
14
  modal/_resolver.py,sha256=RtoXoYzSllPlFu0D1vel_FWiEmDO7RyToiC2bxeN8ZY,6917
@@ -22,7 +22,7 @@ modal/app.py,sha256=kF3frIt4eRKVYYCjusMMhKJpO_lDdm2z37HOXPwpjT8,45506
22
22
  modal/app.pyi,sha256=tZFbcsu20SuvfB2puxCyuXLFNJ9bQulzag55rVpgZmc,26827
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=8SQawr7P1PNUCq1UmJMUQXG2jIo4Nmdcs311XqrNLRE,15276
25
- modal/client.pyi,sha256=zuGrC2lyWFhWYaptAOfEqZsDUOKT7U9gQyQwH2h2SLg,7593
25
+ modal/client.pyi,sha256=nTyGF9yDiFVLdzSX_DFF5LGAH-PqxoY_6ZRX6hN4ODw,7593
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=5DjpSBP1IyROKZm5ItDiEGdbRnfTT6K1Ul0jEvEKw_Q,31695
@@ -41,7 +41,7 @@ modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
41
41
  modal/file_io.pyi,sha256=NTRft1tbPSWf9TlWVeZmTlgB5AZ_Zhu2srWIrWr7brk,9445
42
42
  modal/file_pattern_matcher.py,sha256=trosX-Bp7dOubudN1bLLhRAoidWy1TcoaR4Pv8CedWw,6497
43
43
  modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
44
- modal/functions.pyi,sha256=ujc6eIYyNmMn__4dpxEy85-vZmAniZv56D2A4uBgs6U,14377
44
+ modal/functions.pyi,sha256=D-PDJfSbwqMDXdq7Bxu2ErZRENo-tRgu_zPoB-jl0OU,14377
45
45
  modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
46
46
  modal/image.py,sha256=adMUpS7WrCu-M78BWslz2r6GPviy4qPvd5Dh-dBIrrk,90257
47
47
  modal/image.pyi,sha256=L7aZUOElSGtNHmFHz1RgKP1cG5paiXt_EzylrwBwzVk,25004
@@ -57,7 +57,7 @@ modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
57
57
  modal/parallel_map.py,sha256=POBTyiWabe2e4qBNlsjjksiu1AAPEsNqI-mM8cgNFco,16042
58
58
  modal/parallel_map.pyi,sha256=-YKY_bVuQv8B4gtFrHnXtuNV0_JpmU9vqMJzR7beeCU,2524
59
59
  modal/partial_function.py,sha256=KkATL56zEe_Kzp4hDX0c0e6BrXeO8V8mZBjfIs_ldqI,1016
60
- modal/partial_function.pyi,sha256=SwjQHTqjdRqoPxIsfNFeiMt-E_IfFECPGlGZPEcDB7E,4649
60
+ modal/partial_function.pyi,sha256=RO76Hg9DAYHd1gW3ntPMucbUpvu19ZLZTRjtBSIwIV0,4541
61
61
  modal/proxy.py,sha256=NrOevrWxG3G7-zlyRzG6BcIvop7AWLeyahZxitbBaOk,1418
62
62
  modal/proxy.pyi,sha256=1OEKIVUyC-xb7fHMzngakQso0nTsK60TVhXtlcMj6Wk,390
63
63
  modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -168,10 +168,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
168
168
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
169
  modal_version/__init__.py,sha256=wiJQ53c-OMs0Xf1UeXOxQ7FwlV1VzIjnX6o-pRYZ_Pk,470
170
170
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
171
- modal_version/_version_generated.py,sha256=irKrTBuzilBy-GgG9FOSb2czsoDgyecCRpcIAV-3ZDA,149
172
- modal-0.73.80.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
173
- modal-0.73.80.dist-info/METADATA,sha256=fUaJNriMkeouL9WMnEg6CuwynMS4VNzkv9X_9UWhxPM,2452
174
- modal-0.73.80.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
175
- modal-0.73.80.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
176
- modal-0.73.80.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
177
- modal-0.73.80.dist-info/RECORD,,
171
+ modal_version/_version_generated.py,sha256=6ZSRrr6DXex_JOkeoVsVZjwFK4LTYXrAZvlvZT0uolE,149
172
+ modal-0.73.81.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
173
+ modal-0.73.81.dist-info/METADATA,sha256=yxfDvZoNZuehaLqU2nFgYWGTZRQdTVSIpzUr8rehM0I,2452
174
+ modal-0.73.81.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
175
+ modal-0.73.81.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
176
+ modal-0.73.81.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
177
+ modal-0.73.81.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 = 80 # git: ba0bed2
4
+ build_number = 81 # git: fa53b89