modal 0.73.71__py3-none-any.whl → 0.73.73__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/_runtime/asgi.py CHANGED
@@ -471,6 +471,10 @@ async def _proxy_lifespan_request(base_url, scope, receive, send) -> None:
471
471
  timeout=aiohttp.ClientTimeout(total=3600),
472
472
  auto_decompress=False,
473
473
  read_bufsize=1024 * 1024, # 1 MiB
474
+ connector=aiohttp.TCPConnector(
475
+ limit=1000
476
+ ), # 100 is the default max, but 1000 is the max for `allow_concurrent_inputs`.
477
+ # Note: these values will need to be kept in sync.
474
478
  **(
475
479
  # These options were introduced in aiohttp 3.9, and we can remove the
476
480
  # conditional after deprecating image builder version 2023.12.
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.71"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.73"
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.71"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.73"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
modal/cls.py CHANGED
@@ -504,7 +504,7 @@ class _Cls(_Object, type_prefix="cs"):
504
504
  name: str,
505
505
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
506
506
  environment_name: Optional[str] = None,
507
- workspace: Optional[str] = None,
507
+ workspace: Optional[str] = None, # Deprecated and unused
508
508
  ) -> "_Cls":
509
509
  """Reference a Cls from a deployed App by its name.
510
510
 
@@ -518,6 +518,11 @@ class _Cls(_Object, type_prefix="cs"):
518
518
  """
519
519
  _environment_name = environment_name or config.get("environment")
520
520
 
521
+ if workspace is not None:
522
+ deprecation_warning(
523
+ (2025, 1, 27), "The `workspace` argument is no longer used and will be removed in a future release."
524
+ )
525
+
521
526
  async def _load_remote(self: _Cls, resolver: Resolver, existing_object_id: Optional[str]):
522
527
  request = api_pb2.ClassGetRequest(
523
528
  app_name=app_name,
@@ -525,7 +530,6 @@ class _Cls(_Object, type_prefix="cs"):
525
530
  namespace=namespace,
526
531
  environment_name=_environment_name,
527
532
  lookup_published=workspace is not None,
528
- workspace_name=workspace,
529
533
  only_class_function=True,
530
534
  )
531
535
  try:
@@ -621,7 +625,7 @@ class _Cls(_Object, type_prefix="cs"):
621
625
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
622
626
  client: Optional[_Client] = None,
623
627
  environment_name: Optional[str] = None,
624
- workspace: Optional[str] = None,
628
+ workspace: Optional[str] = None, # Deprecated and unused
625
629
  ) -> "_Cls":
626
630
  """Lookup a Cls from a deployed App by its name.
627
631
 
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[ReturnType_INNER, P_INNER, SUPERSELF]):
201
+ class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_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.ReturnType, modal._functions.P, typing_extensions.Self]
205
+ remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, 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[ReturnType_INNER, P_INNER, SUPERSELF]):
220
+ class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_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.ReturnType, modal._functions.P, typing_extensions.Self
225
+ modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
226
226
  ]
227
227
 
228
- class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
228
+ class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_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.ReturnType, modal._functions.P, typing_extensions.Self]
232
+ spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
233
233
 
234
234
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
235
235
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.71
3
+ Version: 0.73.73
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -22,10 +22,10 @@ modal/app.py,sha256=o5mHoHtn41nkvskX_ekJkyfG6MXwj5rqerRi_nnPd0w,44725
22
22
  modal/app.pyi,sha256=0MMCgskIL4r3eq8oBcfm2lLyeao2gXjS3iXaIfmaJ-o,25959
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=8SQawr7P1PNUCq1UmJMUQXG2jIo4Nmdcs311XqrNLRE,15276
25
- modal/client.pyi,sha256=3oiz7QLu7Gh4ZeRKMpUKsZ5WX500UMOiVMTWjM2GSds,7593
25
+ modal/client.pyi,sha256=2xMfp2debgg80eJT3hvhXG0Hq43bl97lIKzxM1ZG1BQ,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
- modal/cls.py,sha256=wztMTYkhJyW9iUVqx4_Gga4bJJpUiPgGsS6iacUqy-A,30001
28
+ modal/cls.py,sha256=nx3mFniMw_b0tKqmY5smbi39xSpwmu_Mnb6_h1OFIBM,30208
29
29
  modal/cls.pyi,sha256=4Ms1i4Wty1qe49Dh_wsGhJDCiJz7t-XGqXLcpzwhUqs,9084
30
30
  modal/config.py,sha256=E1bCdwNziBorqXal6Cble7gfLNzGqSuEgprRJwzYqg4,11160
31
31
  modal/container_process.py,sha256=WTqLn01dJPVkPpwR_0w_JH96ceN5mV4TGtiu1ZR2RRA,6108
@@ -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=lDfxeLy6KbnGrrf0PXvNAKG6Rmz61rFNiuMIQSsy2Zc,14405
44
+ modal/functions.pyi,sha256=2z5Vt2U3KfmTWyC55hPVEgc4i83BiqAK0faJgumpe04,14405
45
45
  modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
46
46
  modal/image.py,sha256=Bs1ND2WkLr9CBtj0heO7e3w9uGCnijKU8owiQSRQXv0,90200
47
47
  modal/image.pyi,sha256=L7aZUOElSGtNHmFHz1RgKP1cG5paiXt_EzylrwBwzVk,25004
@@ -83,7 +83,7 @@ modal/token_flow.pyi,sha256=0XV3d-9CGQL3qjPdw3RgwIFVqqxo8Z-u044_mkgAM3o,2064
83
83
  modal/volume.py,sha256=JAWeDvoAG95tMBv-fYIERyHsJPS_X_xGpxRRmYtb6j0,30096
84
84
  modal/volume.pyi,sha256=kTsXarphjZILXci84LQy7EyC84eXUs5-7D62IM5q3eE,12491
85
85
  modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
86
- modal/_runtime/asgi.py,sha256=vIxpGrCZhdeThwazQckmrqoNKgDQYOyv8emzBHr8CiU,22154
86
+ modal/_runtime/asgi.py,sha256=_B0151dcbSllR2zPh7IeDO-LDhntymMMJyyu7oTqS_g,22413
87
87
  modal/_runtime/container_io_manager.py,sha256=3VPj0RWtSdvVZD96l5ZpO8MjhLRjAi_P_ZtpNK3nGn0,43593
88
88
  modal/_runtime/container_io_manager.pyi,sha256=sEGpOvlDOQCwUiJn4CAyE8TT2lCBKNBEqGWExfvVKsY,16661
89
89
  modal/_runtime/execution_context.py,sha256=E6ofm6j1POXGPxS841X3V7JU6NheVb8OkQc7JpLq4Kg,2712
@@ -151,10 +151,10 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
151
151
  modal_docs/mdmd/mdmd.py,sha256=Irx49MCCTlBOP4FBdLR--JrpA3-WhsVeriq0LGgsRic,6232
152
152
  modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
153
153
  modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
154
- modal_proto/api.proto,sha256=nFlRuuLZ1YrVY49pN1wyX8uppxVAV7BTMDOstxZswv4,86841
154
+ modal_proto/api.proto,sha256=SsLe59y_FMI6PEg5_HCZTqTFGOVy5kiJ3F-GEMXG4fQ,86844
155
155
  modal_proto/api_grpc.py,sha256=FYGqDegM_w_qxdtlxum8k31mDibKoMvmNxv_p9cKdKs,109056
156
- modal_proto/api_pb2.py,sha256=uyhASXE3Q9XJjXEupAdR4dcNV1z_bb2nPAYj4sysnns,312448
157
- modal_proto/api_pb2.pyi,sha256=kzTqhvulPVDL3M4J5sk5J5PadLSzhga9GE7plV73y_Q,421116
156
+ modal_proto/api_pb2.py,sha256=uTeDg9bdFQUbTz667aWNGeqbLVvAMp2JfAHBuWkb2mA,312421
157
+ modal_proto/api_pb2.pyi,sha256=o-vol4fCoaA9dsoMotJtBmpayxcLp5pKrSoPW6w_sEM,420956
158
158
  modal_proto/api_pb2_grpc.py,sha256=DNp0Et5i_Ey4dKx_1o1LRtYhyWYyT0NzTcAY4EcHn-c,235765
159
159
  modal_proto/api_pb2_grpc.pyi,sha256=RI6tWC3L8EIN4-izFSEGPPJl5Ta0lXPNuHUJaWAr35s,54892
160
160
  modal_proto/modal_api_grpc.py,sha256=UG8WJU81afrWPwItWB4Ag64E9EpyREMpBbAVGVEYJiM,14550
@@ -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=Oep0v2_Xt-dtY4_u9gYDTc1JXueE408kFzHTxHZGDBk,149
172
- modal-0.73.71.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
173
- modal-0.73.71.dist-info/METADATA,sha256=Xx419QehojWLaT0x5mz3B6Dh1ho8sJOmCfRu295QlFs,2452
174
- modal-0.73.71.dist-info/WHEEL,sha256=nn6H5-ilmfVryoAQl3ZQ2l8SH5imPWFpm1A5FgEuFV4,91
175
- modal-0.73.71.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
176
- modal-0.73.71.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
177
- modal-0.73.71.dist-info/RECORD,,
171
+ modal_version/_version_generated.py,sha256=i6SoBCWxbUbOs9k6xJ3aTQ8Z7gf2X--MwxZYwKeoMnA,149
172
+ modal-0.73.73.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
173
+ modal-0.73.73.dist-info/METADATA,sha256=M7reuCiadDQseVoveasWxhP5RUOBc667l6Z9nbOAMzM,2452
174
+ modal-0.73.73.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
175
+ modal-0.73.73.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
176
+ modal-0.73.73.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
177
+ modal-0.73.73.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.1)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
modal_proto/api.proto CHANGED
@@ -652,7 +652,7 @@ message ClassGetRequest {
652
652
  string environment_name = 4;
653
653
 
654
654
  bool lookup_published = 8; // Lookup class on app published by another workspace
655
- string workspace_name = 9;
655
+ reserved 9; // workspace_name
656
656
  bool only_class_function = 10; // True starting with 0.67.x clients, which don't create method placeholder functions
657
657
  }
658
658