modal 0.73.172__tar.gz → 0.74.0__tar.gz

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.
Files changed (183) hide show
  1. {modal-0.73.172 → modal-0.74.0}/PKG-INFO +1 -1
  2. {modal-0.73.172 → modal-0.74.0}/modal/_runtime/container_io_manager.py +11 -6
  3. {modal-0.73.172 → modal-0.74.0}/modal/client.pyi +2 -10
  4. {modal-0.73.172 → modal-0.74.0}/modal/cls.py +15 -0
  5. {modal-0.73.172 → modal-0.74.0}/modal/functions.pyi +6 -6
  6. {modal-0.73.172 → modal-0.74.0}/modal.egg-info/PKG-INFO +1 -1
  7. {modal-0.73.172 → modal-0.74.0}/modal_version/__init__.py +1 -1
  8. {modal-0.73.172 → modal-0.74.0}/modal_version/_version_generated.py +1 -1
  9. {modal-0.73.172 → modal-0.74.0}/LICENSE +0 -0
  10. {modal-0.73.172 → modal-0.74.0}/README.md +0 -0
  11. {modal-0.73.172 → modal-0.74.0}/modal/__init__.py +0 -0
  12. {modal-0.73.172 → modal-0.74.0}/modal/__main__.py +0 -0
  13. {modal-0.73.172 → modal-0.74.0}/modal/_clustered_functions.py +0 -0
  14. {modal-0.73.172 → modal-0.74.0}/modal/_clustered_functions.pyi +0 -0
  15. {modal-0.73.172 → modal-0.74.0}/modal/_container_entrypoint.py +0 -0
  16. {modal-0.73.172 → modal-0.74.0}/modal/_functions.py +0 -0
  17. {modal-0.73.172 → modal-0.74.0}/modal/_ipython.py +0 -0
  18. {modal-0.73.172 → modal-0.74.0}/modal/_location.py +0 -0
  19. {modal-0.73.172 → modal-0.74.0}/modal/_object.py +0 -0
  20. {modal-0.73.172 → modal-0.74.0}/modal/_output.py +0 -0
  21. {modal-0.73.172 → modal-0.74.0}/modal/_partial_function.py +0 -0
  22. {modal-0.73.172 → modal-0.74.0}/modal/_pty.py +0 -0
  23. {modal-0.73.172 → modal-0.74.0}/modal/_resolver.py +0 -0
  24. {modal-0.73.172 → modal-0.74.0}/modal/_resources.py +0 -0
  25. {modal-0.73.172 → modal-0.74.0}/modal/_runtime/__init__.py +0 -0
  26. {modal-0.73.172 → modal-0.74.0}/modal/_runtime/asgi.py +0 -0
  27. {modal-0.73.172 → modal-0.74.0}/modal/_runtime/container_io_manager.pyi +0 -0
  28. {modal-0.73.172 → modal-0.74.0}/modal/_runtime/execution_context.py +0 -0
  29. {modal-0.73.172 → modal-0.74.0}/modal/_runtime/execution_context.pyi +0 -0
  30. {modal-0.73.172 → modal-0.74.0}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  31. {modal-0.73.172 → modal-0.74.0}/modal/_runtime/telemetry.py +0 -0
  32. {modal-0.73.172 → modal-0.74.0}/modal/_runtime/user_code_imports.py +0 -0
  33. {modal-0.73.172 → modal-0.74.0}/modal/_serialization.py +0 -0
  34. {modal-0.73.172 → modal-0.74.0}/modal/_traceback.py +0 -0
  35. {modal-0.73.172 → modal-0.74.0}/modal/_tunnel.py +0 -0
  36. {modal-0.73.172 → modal-0.74.0}/modal/_tunnel.pyi +0 -0
  37. {modal-0.73.172 → modal-0.74.0}/modal/_type_manager.py +0 -0
  38. {modal-0.73.172 → modal-0.74.0}/modal/_utils/__init__.py +0 -0
  39. {modal-0.73.172 → modal-0.74.0}/modal/_utils/app_utils.py +0 -0
  40. {modal-0.73.172 → modal-0.74.0}/modal/_utils/async_utils.py +0 -0
  41. {modal-0.73.172 → modal-0.74.0}/modal/_utils/blob_utils.py +0 -0
  42. {modal-0.73.172 → modal-0.74.0}/modal/_utils/bytes_io_segment_payload.py +0 -0
  43. {modal-0.73.172 → modal-0.74.0}/modal/_utils/deprecation.py +0 -0
  44. {modal-0.73.172 → modal-0.74.0}/modal/_utils/docker_utils.py +0 -0
  45. {modal-0.73.172 → modal-0.74.0}/modal/_utils/function_utils.py +0 -0
  46. {modal-0.73.172 → modal-0.74.0}/modal/_utils/git_utils.py +0 -0
  47. {modal-0.73.172 → modal-0.74.0}/modal/_utils/grpc_testing.py +0 -0
  48. {modal-0.73.172 → modal-0.74.0}/modal/_utils/grpc_utils.py +0 -0
  49. {modal-0.73.172 → modal-0.74.0}/modal/_utils/hash_utils.py +0 -0
  50. {modal-0.73.172 → modal-0.74.0}/modal/_utils/http_utils.py +0 -0
  51. {modal-0.73.172 → modal-0.74.0}/modal/_utils/jwt_utils.py +0 -0
  52. {modal-0.73.172 → modal-0.74.0}/modal/_utils/logger.py +0 -0
  53. {modal-0.73.172 → modal-0.74.0}/modal/_utils/mount_utils.py +0 -0
  54. {modal-0.73.172 → modal-0.74.0}/modal/_utils/name_utils.py +0 -0
  55. {modal-0.73.172 → modal-0.74.0}/modal/_utils/package_utils.py +0 -0
  56. {modal-0.73.172 → modal-0.74.0}/modal/_utils/pattern_utils.py +0 -0
  57. {modal-0.73.172 → modal-0.74.0}/modal/_utils/rand_pb_testing.py +0 -0
  58. {modal-0.73.172 → modal-0.74.0}/modal/_utils/shell_utils.py +0 -0
  59. {modal-0.73.172 → modal-0.74.0}/modal/_vendor/__init__.py +0 -0
  60. {modal-0.73.172 → modal-0.74.0}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  61. {modal-0.73.172 → modal-0.74.0}/modal/_vendor/cloudpickle.py +0 -0
  62. {modal-0.73.172 → modal-0.74.0}/modal/_vendor/tblib.py +0 -0
  63. {modal-0.73.172 → modal-0.74.0}/modal/_watcher.py +0 -0
  64. {modal-0.73.172 → modal-0.74.0}/modal/app.py +0 -0
  65. {modal-0.73.172 → modal-0.74.0}/modal/app.pyi +0 -0
  66. {modal-0.73.172 → modal-0.74.0}/modal/call_graph.py +0 -0
  67. {modal-0.73.172 → modal-0.74.0}/modal/cli/__init__.py +0 -0
  68. {modal-0.73.172 → modal-0.74.0}/modal/cli/_download.py +0 -0
  69. {modal-0.73.172 → modal-0.74.0}/modal/cli/_traceback.py +0 -0
  70. {modal-0.73.172 → modal-0.74.0}/modal/cli/app.py +0 -0
  71. {modal-0.73.172 → modal-0.74.0}/modal/cli/config.py +0 -0
  72. {modal-0.73.172 → modal-0.74.0}/modal/cli/container.py +0 -0
  73. {modal-0.73.172 → modal-0.74.0}/modal/cli/dict.py +0 -0
  74. {modal-0.73.172 → modal-0.74.0}/modal/cli/entry_point.py +0 -0
  75. {modal-0.73.172 → modal-0.74.0}/modal/cli/environment.py +0 -0
  76. {modal-0.73.172 → modal-0.74.0}/modal/cli/import_refs.py +0 -0
  77. {modal-0.73.172 → modal-0.74.0}/modal/cli/launch.py +0 -0
  78. {modal-0.73.172 → modal-0.74.0}/modal/cli/network_file_system.py +0 -0
  79. {modal-0.73.172 → modal-0.74.0}/modal/cli/profile.py +0 -0
  80. {modal-0.73.172 → modal-0.74.0}/modal/cli/programs/__init__.py +0 -0
  81. {modal-0.73.172 → modal-0.74.0}/modal/cli/programs/run_jupyter.py +0 -0
  82. {modal-0.73.172 → modal-0.74.0}/modal/cli/programs/vscode.py +0 -0
  83. {modal-0.73.172 → modal-0.74.0}/modal/cli/queues.py +0 -0
  84. {modal-0.73.172 → modal-0.74.0}/modal/cli/run.py +0 -0
  85. {modal-0.73.172 → modal-0.74.0}/modal/cli/secret.py +0 -0
  86. {modal-0.73.172 → modal-0.74.0}/modal/cli/token.py +0 -0
  87. {modal-0.73.172 → modal-0.74.0}/modal/cli/utils.py +0 -0
  88. {modal-0.73.172 → modal-0.74.0}/modal/cli/volume.py +0 -0
  89. {modal-0.73.172 → modal-0.74.0}/modal/client.py +0 -0
  90. {modal-0.73.172 → modal-0.74.0}/modal/cloud_bucket_mount.py +0 -0
  91. {modal-0.73.172 → modal-0.74.0}/modal/cloud_bucket_mount.pyi +0 -0
  92. {modal-0.73.172 → modal-0.74.0}/modal/cls.pyi +0 -0
  93. {modal-0.73.172 → modal-0.74.0}/modal/config.py +0 -0
  94. {modal-0.73.172 → modal-0.74.0}/modal/container_process.py +0 -0
  95. {modal-0.73.172 → modal-0.74.0}/modal/container_process.pyi +0 -0
  96. {modal-0.73.172 → modal-0.74.0}/modal/dict.py +0 -0
  97. {modal-0.73.172 → modal-0.74.0}/modal/dict.pyi +0 -0
  98. {modal-0.73.172 → modal-0.74.0}/modal/environments.py +0 -0
  99. {modal-0.73.172 → modal-0.74.0}/modal/environments.pyi +0 -0
  100. {modal-0.73.172 → modal-0.74.0}/modal/exception.py +0 -0
  101. {modal-0.73.172 → modal-0.74.0}/modal/experimental/__init__.py +0 -0
  102. {modal-0.73.172 → modal-0.74.0}/modal/experimental/ipython.py +0 -0
  103. {modal-0.73.172 → modal-0.74.0}/modal/file_io.py +0 -0
  104. {modal-0.73.172 → modal-0.74.0}/modal/file_io.pyi +0 -0
  105. {modal-0.73.172 → modal-0.74.0}/modal/file_pattern_matcher.py +0 -0
  106. {modal-0.73.172 → modal-0.74.0}/modal/functions.py +0 -0
  107. {modal-0.73.172 → modal-0.74.0}/modal/gpu.py +0 -0
  108. {modal-0.73.172 → modal-0.74.0}/modal/image.py +0 -0
  109. {modal-0.73.172 → modal-0.74.0}/modal/image.pyi +0 -0
  110. {modal-0.73.172 → modal-0.74.0}/modal/io_streams.py +0 -0
  111. {modal-0.73.172 → modal-0.74.0}/modal/io_streams.pyi +0 -0
  112. {modal-0.73.172 → modal-0.74.0}/modal/mount.py +0 -0
  113. {modal-0.73.172 → modal-0.74.0}/modal/mount.pyi +0 -0
  114. {modal-0.73.172 → modal-0.74.0}/modal/network_file_system.py +0 -0
  115. {modal-0.73.172 → modal-0.74.0}/modal/network_file_system.pyi +0 -0
  116. {modal-0.73.172 → modal-0.74.0}/modal/object.py +0 -0
  117. {modal-0.73.172 → modal-0.74.0}/modal/object.pyi +0 -0
  118. {modal-0.73.172 → modal-0.74.0}/modal/output.py +0 -0
  119. {modal-0.73.172 → modal-0.74.0}/modal/parallel_map.py +0 -0
  120. {modal-0.73.172 → modal-0.74.0}/modal/parallel_map.pyi +0 -0
  121. {modal-0.73.172 → modal-0.74.0}/modal/partial_function.py +0 -0
  122. {modal-0.73.172 → modal-0.74.0}/modal/partial_function.pyi +0 -0
  123. {modal-0.73.172 → modal-0.74.0}/modal/proxy.py +0 -0
  124. {modal-0.73.172 → modal-0.74.0}/modal/proxy.pyi +0 -0
  125. {modal-0.73.172 → modal-0.74.0}/modal/py.typed +0 -0
  126. {modal-0.73.172 → modal-0.74.0}/modal/queue.py +0 -0
  127. {modal-0.73.172 → modal-0.74.0}/modal/queue.pyi +0 -0
  128. {modal-0.73.172 → modal-0.74.0}/modal/requirements/2023.12.312.txt +0 -0
  129. {modal-0.73.172 → modal-0.74.0}/modal/requirements/2023.12.txt +0 -0
  130. {modal-0.73.172 → modal-0.74.0}/modal/requirements/2024.04.txt +0 -0
  131. {modal-0.73.172 → modal-0.74.0}/modal/requirements/2024.10.txt +0 -0
  132. {modal-0.73.172 → modal-0.74.0}/modal/requirements/PREVIEW.txt +0 -0
  133. {modal-0.73.172 → modal-0.74.0}/modal/requirements/README.md +0 -0
  134. {modal-0.73.172 → modal-0.74.0}/modal/requirements/base-images.json +0 -0
  135. {modal-0.73.172 → modal-0.74.0}/modal/retries.py +0 -0
  136. {modal-0.73.172 → modal-0.74.0}/modal/runner.py +0 -0
  137. {modal-0.73.172 → modal-0.74.0}/modal/runner.pyi +0 -0
  138. {modal-0.73.172 → modal-0.74.0}/modal/running_app.py +0 -0
  139. {modal-0.73.172 → modal-0.74.0}/modal/sandbox.py +0 -0
  140. {modal-0.73.172 → modal-0.74.0}/modal/sandbox.pyi +0 -0
  141. {modal-0.73.172 → modal-0.74.0}/modal/schedule.py +0 -0
  142. {modal-0.73.172 → modal-0.74.0}/modal/scheduler_placement.py +0 -0
  143. {modal-0.73.172 → modal-0.74.0}/modal/secret.py +0 -0
  144. {modal-0.73.172 → modal-0.74.0}/modal/secret.pyi +0 -0
  145. {modal-0.73.172 → modal-0.74.0}/modal/serving.py +0 -0
  146. {modal-0.73.172 → modal-0.74.0}/modal/serving.pyi +0 -0
  147. {modal-0.73.172 → modal-0.74.0}/modal/snapshot.py +0 -0
  148. {modal-0.73.172 → modal-0.74.0}/modal/snapshot.pyi +0 -0
  149. {modal-0.73.172 → modal-0.74.0}/modal/stream_type.py +0 -0
  150. {modal-0.73.172 → modal-0.74.0}/modal/token_flow.py +0 -0
  151. {modal-0.73.172 → modal-0.74.0}/modal/token_flow.pyi +0 -0
  152. {modal-0.73.172 → modal-0.74.0}/modal/volume.py +0 -0
  153. {modal-0.73.172 → modal-0.74.0}/modal/volume.pyi +0 -0
  154. {modal-0.73.172 → modal-0.74.0}/modal.egg-info/SOURCES.txt +0 -0
  155. {modal-0.73.172 → modal-0.74.0}/modal.egg-info/dependency_links.txt +0 -0
  156. {modal-0.73.172 → modal-0.74.0}/modal.egg-info/entry_points.txt +0 -0
  157. {modal-0.73.172 → modal-0.74.0}/modal.egg-info/requires.txt +0 -0
  158. {modal-0.73.172 → modal-0.74.0}/modal.egg-info/top_level.txt +0 -0
  159. {modal-0.73.172 → modal-0.74.0}/modal_docs/__init__.py +0 -0
  160. {modal-0.73.172 → modal-0.74.0}/modal_docs/gen_cli_docs.py +0 -0
  161. {modal-0.73.172 → modal-0.74.0}/modal_docs/gen_reference_docs.py +0 -0
  162. {modal-0.73.172 → modal-0.74.0}/modal_docs/mdmd/__init__.py +0 -0
  163. {modal-0.73.172 → modal-0.74.0}/modal_docs/mdmd/mdmd.py +0 -0
  164. {modal-0.73.172 → modal-0.74.0}/modal_docs/mdmd/signatures.py +0 -0
  165. {modal-0.73.172 → modal-0.74.0}/modal_proto/__init__.py +0 -0
  166. {modal-0.73.172 → modal-0.74.0}/modal_proto/api.proto +0 -0
  167. {modal-0.73.172 → modal-0.74.0}/modal_proto/api_grpc.py +0 -0
  168. {modal-0.73.172 → modal-0.74.0}/modal_proto/api_pb2.py +0 -0
  169. {modal-0.73.172 → modal-0.74.0}/modal_proto/api_pb2.pyi +0 -0
  170. {modal-0.73.172 → modal-0.74.0}/modal_proto/api_pb2_grpc.py +0 -0
  171. {modal-0.73.172 → modal-0.74.0}/modal_proto/api_pb2_grpc.pyi +0 -0
  172. {modal-0.73.172 → modal-0.74.0}/modal_proto/modal_api_grpc.py +0 -0
  173. {modal-0.73.172 → modal-0.74.0}/modal_proto/modal_options_grpc.py +0 -0
  174. {modal-0.73.172 → modal-0.74.0}/modal_proto/options.proto +0 -0
  175. {modal-0.73.172 → modal-0.74.0}/modal_proto/options_grpc.py +0 -0
  176. {modal-0.73.172 → modal-0.74.0}/modal_proto/options_pb2.py +0 -0
  177. {modal-0.73.172 → modal-0.74.0}/modal_proto/options_pb2.pyi +0 -0
  178. {modal-0.73.172 → modal-0.74.0}/modal_proto/options_pb2_grpc.py +0 -0
  179. {modal-0.73.172 → modal-0.74.0}/modal_proto/options_pb2_grpc.pyi +0 -0
  180. {modal-0.73.172 → modal-0.74.0}/modal_proto/py.typed +0 -0
  181. {modal-0.73.172 → modal-0.74.0}/modal_version/__main__.py +0 -0
  182. {modal-0.73.172 → modal-0.74.0}/pyproject.toml +0 -0
  183. {modal-0.73.172 → modal-0.74.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 0.73.172
3
+ Version: 0.74.0
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -666,12 +666,17 @@ class _ContainerIOManager:
666
666
  )
667
667
  for input_id, retry_count, result in zip(io_context.input_ids, io_context.retry_counts, results)
668
668
  ]
669
- await retry_transient_errors(
670
- self._client.stub.FunctionPutOutputs,
671
- api_pb2.FunctionPutOutputsRequest(outputs=outputs),
672
- additional_status_codes=[Status.RESOURCE_EXHAUSTED],
673
- max_retries=None, # Retry indefinitely, trying every 1s.
674
- )
669
+
670
+ # There are multiple outputs for a single IOContext in the case of @modal.batched.
671
+ # Limit the batch size to 20 to stay within message size limits and buffer size limits.
672
+ output_batch_size = 20
673
+ for i in range(0, len(outputs), output_batch_size):
674
+ await retry_transient_errors(
675
+ self._client.stub.FunctionPutOutputs,
676
+ api_pb2.FunctionPutOutputsRequest(outputs=outputs[i : i + output_batch_size]),
677
+ additional_status_codes=[Status.RESOURCE_EXHAUSTED],
678
+ max_retries=None, # Retry indefinitely, trying every 1s.
679
+ )
675
680
 
676
681
  def serialize_exception(self, exc: BaseException) -> bytes:
677
682
  try:
@@ -27,11 +27,7 @@ class _Client:
27
27
  _snapshotted: bool
28
28
 
29
29
  def __init__(
30
- self,
31
- server_url: str,
32
- client_type: int,
33
- credentials: typing.Optional[tuple[str, str]],
34
- version: str = "0.73.172",
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.0"
35
31
  ): ...
36
32
  def is_closed(self) -> bool: ...
37
33
  @property
@@ -89,11 +85,7 @@ class Client:
89
85
  _snapshotted: bool
90
86
 
91
87
  def __init__(
92
- self,
93
- server_url: str,
94
- client_type: int,
95
- credentials: typing.Optional[tuple[str, str]],
96
- version: str = "0.73.172",
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.0"
97
89
  ): ...
98
90
  def is_closed(self) -> bool: ...
99
91
  @property
@@ -455,7 +455,22 @@ class _Cls(_Object, type_prefix="cs"):
455
455
  "A class can't have both a custom __init__ constructor "
456
456
  "and dataclass-style modal.parameter() annotations"
457
457
  )
458
+ elif has_custom_constructor:
459
+ deprecation_warning(
460
+ (2025, 4, 15),
461
+ f"""
462
+ {user_cls} uses a non-default constructor (__init__) method.
463
+ Custom constructors will not be supported in a a future version of Modal.
464
+
465
+ To parameterize classes, use dataclass-style modal.parameter() declarations instead,
466
+ e.g.:\n
458
467
 
468
+ class {user_cls.__name__}:
469
+ model_name: str = modal.parameter()
470
+
471
+ More information on class parameterization can be found here: https://modal.com/docs/guide/parametrized-functions
472
+ """,
473
+ )
459
474
  annotations = user_cls.__dict__.get("__annotations__", {}) # compatible with older pythons
460
475
  missing_annotations = params.keys() - annotations.keys()
461
476
  if missing_annotations:
@@ -200,11 +200,11 @@ class Function(
200
200
 
201
201
  _call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
202
202
 
203
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
203
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
204
204
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
205
205
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
206
206
 
207
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
207
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
208
208
 
209
209
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
210
210
  def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
@@ -219,19 +219,19 @@ class Function(
219
219
  self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
220
220
  ) -> modal._functions.OriginalReturnType: ...
221
221
 
222
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
222
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
223
223
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
224
224
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
225
225
 
226
226
  _experimental_spawn: ___experimental_spawn_spec[
227
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
227
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
228
228
  ]
229
229
 
230
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
230
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
231
231
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
232
232
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
233
233
 
234
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
234
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
235
235
 
236
236
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
237
237
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 0.73.172
3
+ Version: 0.74.0
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -7,7 +7,7 @@ from ._version_generated import build_number
7
7
  major_number = 0
8
8
 
9
9
  # Bump this manually on breaking changes, then reset the number in _version_generated.py
10
- minor_number = 73
10
+ minor_number = 74
11
11
 
12
12
  # Right now, automatically increment the patch number in CI
13
13
  __version__ = f"{major_number}.{minor_number}.{max(build_number, 0)}"
@@ -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 = 172 # git: 69d64c4
4
+ build_number = 0 # git: 9deeea0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes