modal 0.74.31__tar.gz → 0.74.33__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.74.31 → modal-0.74.33}/PKG-INFO +1 -1
  2. {modal-0.74.31 → modal-0.74.33}/modal/_functions.py +2 -12
  3. {modal-0.74.31 → modal-0.74.33}/modal/_utils/function_utils.py +5 -1
  4. {modal-0.74.31 → modal-0.74.33}/modal/client.pyi +2 -2
  5. {modal-0.74.31 → modal-0.74.33}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-0.74.31 → modal-0.74.33}/modal_version/_version_generated.py +1 -1
  7. {modal-0.74.31 → modal-0.74.33}/LICENSE +0 -0
  8. {modal-0.74.31 → modal-0.74.33}/README.md +0 -0
  9. {modal-0.74.31 → modal-0.74.33}/modal/__init__.py +0 -0
  10. {modal-0.74.31 → modal-0.74.33}/modal/__main__.py +0 -0
  11. {modal-0.74.31 → modal-0.74.33}/modal/_clustered_functions.py +0 -0
  12. {modal-0.74.31 → modal-0.74.33}/modal/_clustered_functions.pyi +0 -0
  13. {modal-0.74.31 → modal-0.74.33}/modal/_container_entrypoint.py +0 -0
  14. {modal-0.74.31 → modal-0.74.33}/modal/_ipython.py +0 -0
  15. {modal-0.74.31 → modal-0.74.33}/modal/_location.py +0 -0
  16. {modal-0.74.31 → modal-0.74.33}/modal/_object.py +0 -0
  17. {modal-0.74.31 → modal-0.74.33}/modal/_output.py +0 -0
  18. {modal-0.74.31 → modal-0.74.33}/modal/_partial_function.py +0 -0
  19. {modal-0.74.31 → modal-0.74.33}/modal/_pty.py +0 -0
  20. {modal-0.74.31 → modal-0.74.33}/modal/_resolver.py +0 -0
  21. {modal-0.74.31 → modal-0.74.33}/modal/_resources.py +0 -0
  22. {modal-0.74.31 → modal-0.74.33}/modal/_runtime/__init__.py +0 -0
  23. {modal-0.74.31 → modal-0.74.33}/modal/_runtime/asgi.py +0 -0
  24. {modal-0.74.31 → modal-0.74.33}/modal/_runtime/container_io_manager.py +0 -0
  25. {modal-0.74.31 → modal-0.74.33}/modal/_runtime/container_io_manager.pyi +0 -0
  26. {modal-0.74.31 → modal-0.74.33}/modal/_runtime/execution_context.py +0 -0
  27. {modal-0.74.31 → modal-0.74.33}/modal/_runtime/execution_context.pyi +0 -0
  28. {modal-0.74.31 → modal-0.74.33}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  29. {modal-0.74.31 → modal-0.74.33}/modal/_runtime/telemetry.py +0 -0
  30. {modal-0.74.31 → modal-0.74.33}/modal/_runtime/user_code_imports.py +0 -0
  31. {modal-0.74.31 → modal-0.74.33}/modal/_serialization.py +0 -0
  32. {modal-0.74.31 → modal-0.74.33}/modal/_traceback.py +0 -0
  33. {modal-0.74.31 → modal-0.74.33}/modal/_tunnel.py +0 -0
  34. {modal-0.74.31 → modal-0.74.33}/modal/_tunnel.pyi +0 -0
  35. {modal-0.74.31 → modal-0.74.33}/modal/_type_manager.py +0 -0
  36. {modal-0.74.31 → modal-0.74.33}/modal/_utils/__init__.py +0 -0
  37. {modal-0.74.31 → modal-0.74.33}/modal/_utils/app_utils.py +0 -0
  38. {modal-0.74.31 → modal-0.74.33}/modal/_utils/async_utils.py +0 -0
  39. {modal-0.74.31 → modal-0.74.33}/modal/_utils/blob_utils.py +0 -0
  40. {modal-0.74.31 → modal-0.74.33}/modal/_utils/bytes_io_segment_payload.py +0 -0
  41. {modal-0.74.31 → modal-0.74.33}/modal/_utils/deprecation.py +0 -0
  42. {modal-0.74.31 → modal-0.74.33}/modal/_utils/docker_utils.py +0 -0
  43. {modal-0.74.31 → modal-0.74.33}/modal/_utils/git_utils.py +0 -0
  44. {modal-0.74.31 → modal-0.74.33}/modal/_utils/grpc_testing.py +0 -0
  45. {modal-0.74.31 → modal-0.74.33}/modal/_utils/grpc_utils.py +0 -0
  46. {modal-0.74.31 → modal-0.74.33}/modal/_utils/hash_utils.py +0 -0
  47. {modal-0.74.31 → modal-0.74.33}/modal/_utils/http_utils.py +0 -0
  48. {modal-0.74.31 → modal-0.74.33}/modal/_utils/jwt_utils.py +0 -0
  49. {modal-0.74.31 → modal-0.74.33}/modal/_utils/logger.py +0 -0
  50. {modal-0.74.31 → modal-0.74.33}/modal/_utils/mount_utils.py +0 -0
  51. {modal-0.74.31 → modal-0.74.33}/modal/_utils/name_utils.py +0 -0
  52. {modal-0.74.31 → modal-0.74.33}/modal/_utils/package_utils.py +0 -0
  53. {modal-0.74.31 → modal-0.74.33}/modal/_utils/pattern_utils.py +0 -0
  54. {modal-0.74.31 → modal-0.74.33}/modal/_utils/rand_pb_testing.py +0 -0
  55. {modal-0.74.31 → modal-0.74.33}/modal/_utils/shell_utils.py +0 -0
  56. {modal-0.74.31 → modal-0.74.33}/modal/_vendor/__init__.py +0 -0
  57. {modal-0.74.31 → modal-0.74.33}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  58. {modal-0.74.31 → modal-0.74.33}/modal/_vendor/cloudpickle.py +0 -0
  59. {modal-0.74.31 → modal-0.74.33}/modal/_vendor/tblib.py +0 -0
  60. {modal-0.74.31 → modal-0.74.33}/modal/_watcher.py +0 -0
  61. {modal-0.74.31 → modal-0.74.33}/modal/app.py +0 -0
  62. {modal-0.74.31 → modal-0.74.33}/modal/app.pyi +0 -0
  63. {modal-0.74.31 → modal-0.74.33}/modal/call_graph.py +0 -0
  64. {modal-0.74.31 → modal-0.74.33}/modal/cli/__init__.py +0 -0
  65. {modal-0.74.31 → modal-0.74.33}/modal/cli/_download.py +0 -0
  66. {modal-0.74.31 → modal-0.74.33}/modal/cli/_traceback.py +0 -0
  67. {modal-0.74.31 → modal-0.74.33}/modal/cli/app.py +0 -0
  68. {modal-0.74.31 → modal-0.74.33}/modal/cli/config.py +0 -0
  69. {modal-0.74.31 → modal-0.74.33}/modal/cli/container.py +0 -0
  70. {modal-0.74.31 → modal-0.74.33}/modal/cli/dict.py +0 -0
  71. {modal-0.74.31 → modal-0.74.33}/modal/cli/entry_point.py +0 -0
  72. {modal-0.74.31 → modal-0.74.33}/modal/cli/environment.py +0 -0
  73. {modal-0.74.31 → modal-0.74.33}/modal/cli/import_refs.py +0 -0
  74. {modal-0.74.31 → modal-0.74.33}/modal/cli/launch.py +0 -0
  75. {modal-0.74.31 → modal-0.74.33}/modal/cli/network_file_system.py +0 -0
  76. {modal-0.74.31 → modal-0.74.33}/modal/cli/profile.py +0 -0
  77. {modal-0.74.31 → modal-0.74.33}/modal/cli/programs/__init__.py +0 -0
  78. {modal-0.74.31 → modal-0.74.33}/modal/cli/programs/run_jupyter.py +0 -0
  79. {modal-0.74.31 → modal-0.74.33}/modal/cli/programs/vscode.py +0 -0
  80. {modal-0.74.31 → modal-0.74.33}/modal/cli/queues.py +0 -0
  81. {modal-0.74.31 → modal-0.74.33}/modal/cli/run.py +0 -0
  82. {modal-0.74.31 → modal-0.74.33}/modal/cli/secret.py +0 -0
  83. {modal-0.74.31 → modal-0.74.33}/modal/cli/token.py +0 -0
  84. {modal-0.74.31 → modal-0.74.33}/modal/cli/utils.py +0 -0
  85. {modal-0.74.31 → modal-0.74.33}/modal/cli/volume.py +0 -0
  86. {modal-0.74.31 → modal-0.74.33}/modal/client.py +0 -0
  87. {modal-0.74.31 → modal-0.74.33}/modal/cloud_bucket_mount.py +0 -0
  88. {modal-0.74.31 → modal-0.74.33}/modal/cloud_bucket_mount.pyi +0 -0
  89. {modal-0.74.31 → modal-0.74.33}/modal/cls.py +0 -0
  90. {modal-0.74.31 → modal-0.74.33}/modal/cls.pyi +0 -0
  91. {modal-0.74.31 → modal-0.74.33}/modal/config.py +0 -0
  92. {modal-0.74.31 → modal-0.74.33}/modal/container_process.py +0 -0
  93. {modal-0.74.31 → modal-0.74.33}/modal/container_process.pyi +0 -0
  94. {modal-0.74.31 → modal-0.74.33}/modal/dict.py +0 -0
  95. {modal-0.74.31 → modal-0.74.33}/modal/dict.pyi +0 -0
  96. {modal-0.74.31 → modal-0.74.33}/modal/environments.py +0 -0
  97. {modal-0.74.31 → modal-0.74.33}/modal/environments.pyi +0 -0
  98. {modal-0.74.31 → modal-0.74.33}/modal/exception.py +0 -0
  99. {modal-0.74.31 → modal-0.74.33}/modal/experimental/__init__.py +0 -0
  100. {modal-0.74.31 → modal-0.74.33}/modal/experimental/ipython.py +0 -0
  101. {modal-0.74.31 → modal-0.74.33}/modal/file_io.py +0 -0
  102. {modal-0.74.31 → modal-0.74.33}/modal/file_io.pyi +0 -0
  103. {modal-0.74.31 → modal-0.74.33}/modal/file_pattern_matcher.py +0 -0
  104. {modal-0.74.31 → modal-0.74.33}/modal/functions.py +0 -0
  105. {modal-0.74.31 → modal-0.74.33}/modal/functions.pyi +0 -0
  106. {modal-0.74.31 → modal-0.74.33}/modal/gpu.py +0 -0
  107. {modal-0.74.31 → modal-0.74.33}/modal/image.py +0 -0
  108. {modal-0.74.31 → modal-0.74.33}/modal/image.pyi +0 -0
  109. {modal-0.74.31 → modal-0.74.33}/modal/io_streams.py +0 -0
  110. {modal-0.74.31 → modal-0.74.33}/modal/io_streams.pyi +0 -0
  111. {modal-0.74.31 → modal-0.74.33}/modal/mount.py +0 -0
  112. {modal-0.74.31 → modal-0.74.33}/modal/mount.pyi +0 -0
  113. {modal-0.74.31 → modal-0.74.33}/modal/network_file_system.py +0 -0
  114. {modal-0.74.31 → modal-0.74.33}/modal/network_file_system.pyi +0 -0
  115. {modal-0.74.31 → modal-0.74.33}/modal/object.py +0 -0
  116. {modal-0.74.31 → modal-0.74.33}/modal/object.pyi +0 -0
  117. {modal-0.74.31 → modal-0.74.33}/modal/output.py +0 -0
  118. {modal-0.74.31 → modal-0.74.33}/modal/parallel_map.py +0 -0
  119. {modal-0.74.31 → modal-0.74.33}/modal/parallel_map.pyi +0 -0
  120. {modal-0.74.31 → modal-0.74.33}/modal/partial_function.py +0 -0
  121. {modal-0.74.31 → modal-0.74.33}/modal/partial_function.pyi +0 -0
  122. {modal-0.74.31 → modal-0.74.33}/modal/proxy.py +0 -0
  123. {modal-0.74.31 → modal-0.74.33}/modal/proxy.pyi +0 -0
  124. {modal-0.74.31 → modal-0.74.33}/modal/py.typed +0 -0
  125. {modal-0.74.31 → modal-0.74.33}/modal/queue.py +0 -0
  126. {modal-0.74.31 → modal-0.74.33}/modal/queue.pyi +0 -0
  127. {modal-0.74.31 → modal-0.74.33}/modal/requirements/2023.12.312.txt +0 -0
  128. {modal-0.74.31 → modal-0.74.33}/modal/requirements/2023.12.txt +0 -0
  129. {modal-0.74.31 → modal-0.74.33}/modal/requirements/2024.04.txt +0 -0
  130. {modal-0.74.31 → modal-0.74.33}/modal/requirements/2024.10.txt +0 -0
  131. {modal-0.74.31 → modal-0.74.33}/modal/requirements/PREVIEW.txt +0 -0
  132. {modal-0.74.31 → modal-0.74.33}/modal/requirements/README.md +0 -0
  133. {modal-0.74.31 → modal-0.74.33}/modal/requirements/base-images.json +0 -0
  134. {modal-0.74.31 → modal-0.74.33}/modal/retries.py +0 -0
  135. {modal-0.74.31 → modal-0.74.33}/modal/runner.py +0 -0
  136. {modal-0.74.31 → modal-0.74.33}/modal/runner.pyi +0 -0
  137. {modal-0.74.31 → modal-0.74.33}/modal/running_app.py +0 -0
  138. {modal-0.74.31 → modal-0.74.33}/modal/sandbox.py +0 -0
  139. {modal-0.74.31 → modal-0.74.33}/modal/sandbox.pyi +0 -0
  140. {modal-0.74.31 → modal-0.74.33}/modal/schedule.py +0 -0
  141. {modal-0.74.31 → modal-0.74.33}/modal/scheduler_placement.py +0 -0
  142. {modal-0.74.31 → modal-0.74.33}/modal/secret.py +0 -0
  143. {modal-0.74.31 → modal-0.74.33}/modal/secret.pyi +0 -0
  144. {modal-0.74.31 → modal-0.74.33}/modal/serving.py +0 -0
  145. {modal-0.74.31 → modal-0.74.33}/modal/serving.pyi +0 -0
  146. {modal-0.74.31 → modal-0.74.33}/modal/snapshot.py +0 -0
  147. {modal-0.74.31 → modal-0.74.33}/modal/snapshot.pyi +0 -0
  148. {modal-0.74.31 → modal-0.74.33}/modal/stream_type.py +0 -0
  149. {modal-0.74.31 → modal-0.74.33}/modal/token_flow.py +0 -0
  150. {modal-0.74.31 → modal-0.74.33}/modal/token_flow.pyi +0 -0
  151. {modal-0.74.31 → modal-0.74.33}/modal/volume.py +0 -0
  152. {modal-0.74.31 → modal-0.74.33}/modal/volume.pyi +0 -0
  153. {modal-0.74.31 → modal-0.74.33}/modal.egg-info/SOURCES.txt +0 -0
  154. {modal-0.74.31 → modal-0.74.33}/modal.egg-info/dependency_links.txt +0 -0
  155. {modal-0.74.31 → modal-0.74.33}/modal.egg-info/entry_points.txt +0 -0
  156. {modal-0.74.31 → modal-0.74.33}/modal.egg-info/requires.txt +0 -0
  157. {modal-0.74.31 → modal-0.74.33}/modal.egg-info/top_level.txt +0 -0
  158. {modal-0.74.31 → modal-0.74.33}/modal_docs/__init__.py +0 -0
  159. {modal-0.74.31 → modal-0.74.33}/modal_docs/gen_cli_docs.py +0 -0
  160. {modal-0.74.31 → modal-0.74.33}/modal_docs/gen_reference_docs.py +0 -0
  161. {modal-0.74.31 → modal-0.74.33}/modal_docs/mdmd/__init__.py +0 -0
  162. {modal-0.74.31 → modal-0.74.33}/modal_docs/mdmd/mdmd.py +0 -0
  163. {modal-0.74.31 → modal-0.74.33}/modal_docs/mdmd/signatures.py +0 -0
  164. {modal-0.74.31 → modal-0.74.33}/modal_proto/__init__.py +0 -0
  165. {modal-0.74.31 → modal-0.74.33}/modal_proto/api.proto +0 -0
  166. {modal-0.74.31 → modal-0.74.33}/modal_proto/api_grpc.py +0 -0
  167. {modal-0.74.31 → modal-0.74.33}/modal_proto/api_pb2.py +0 -0
  168. {modal-0.74.31 → modal-0.74.33}/modal_proto/api_pb2.pyi +0 -0
  169. {modal-0.74.31 → modal-0.74.33}/modal_proto/api_pb2_grpc.py +0 -0
  170. {modal-0.74.31 → modal-0.74.33}/modal_proto/api_pb2_grpc.pyi +0 -0
  171. {modal-0.74.31 → modal-0.74.33}/modal_proto/modal_api_grpc.py +0 -0
  172. {modal-0.74.31 → modal-0.74.33}/modal_proto/modal_options_grpc.py +0 -0
  173. {modal-0.74.31 → modal-0.74.33}/modal_proto/options.proto +0 -0
  174. {modal-0.74.31 → modal-0.74.33}/modal_proto/options_grpc.py +0 -0
  175. {modal-0.74.31 → modal-0.74.33}/modal_proto/options_pb2.py +0 -0
  176. {modal-0.74.31 → modal-0.74.33}/modal_proto/options_pb2.pyi +0 -0
  177. {modal-0.74.31 → modal-0.74.33}/modal_proto/options_pb2_grpc.py +0 -0
  178. {modal-0.74.31 → modal-0.74.33}/modal_proto/options_pb2_grpc.pyi +0 -0
  179. {modal-0.74.31 → modal-0.74.33}/modal_proto/py.typed +0 -0
  180. {modal-0.74.31 → modal-0.74.33}/modal_version/__init__.py +0 -0
  181. {modal-0.74.31 → modal-0.74.33}/modal_version/__main__.py +0 -0
  182. {modal-0.74.31 → modal-0.74.33}/pyproject.toml +0 -0
  183. {modal-0.74.31 → modal-0.74.33}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 0.74.31
3
+ Version: 0.74.33
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -966,19 +966,9 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
966
966
  parent = self
967
967
 
968
968
  async def _load(param_bound_func: _Function, resolver: Resolver, existing_object_id: Optional[str]):
969
- try:
970
- identity = f"{parent.info.function_name} class service function"
971
- except Exception:
972
- # Can't always look up the function name that way, so fall back to generic message
973
- identity = "class service function for a parametrized class"
974
969
  if not parent.is_hydrated:
975
- if parent.app._running_app is None:
976
- reason = ", because the App it is defined on is not running"
977
- else:
978
- reason = ""
979
- raise ExecutionError(
980
- f"The {identity} has not been hydrated with the metadata it needs to run on Modal{reason}."
981
- )
970
+ # While the base Object.hydrate() method appears to be idempotent, it's not always safe
971
+ await parent.hydrate()
982
972
 
983
973
  assert parent._client and parent._client.stub
984
974
 
@@ -140,7 +140,7 @@ class FunctionInfo:
140
140
  def __init__(
141
141
  self,
142
142
  f: Optional[Callable[..., Any]],
143
- serialized=False,
143
+ serialized: bool = False,
144
144
  name_override: Optional[str] = None,
145
145
  user_cls: Optional[type] = None,
146
146
  ):
@@ -148,6 +148,10 @@ class FunctionInfo:
148
148
  self.user_cls = user_cls
149
149
 
150
150
  if name_override is not None:
151
+ if not serialized:
152
+ # We may relax this constraint in the future, but currently we don't track the distinction between
153
+ # the Function's name inside modal and the name of the object that we need to import in a container.
154
+ raise InvalidError("Setting a custom `name=` also requires setting `serialized=True`")
151
155
  self.function_name = name_override
152
156
  elif f is None and user_cls:
153
157
  # "service function" for running all methods of a class
@@ -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.74.31"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.33"
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.74.31"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.33"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 0.74.31
3
+ Version: 0.74.33
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.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 = 31 # git: 6ab0ec1
4
+ build_number = 33 # git: 0f5cbf2
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
File without changes