modal 0.73.61__tar.gz → 0.73.63__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 (182) hide show
  1. {modal-0.73.61 → modal-0.73.63}/PKG-INFO +1 -1
  2. {modal-0.73.61 → modal-0.73.63}/modal/_functions.py +8 -18
  3. {modal-0.73.61 → modal-0.73.63}/modal/cli/profile.py +2 -0
  4. {modal-0.73.61 → modal-0.73.63}/modal/client.pyi +2 -2
  5. {modal-0.73.61 → modal-0.73.63}/modal/config.py +1 -1
  6. {modal-0.73.61 → modal-0.73.63}/modal.egg-info/PKG-INFO +1 -1
  7. {modal-0.73.61 → modal-0.73.63}/modal_version/_version_generated.py +1 -1
  8. {modal-0.73.61 → modal-0.73.63}/LICENSE +0 -0
  9. {modal-0.73.61 → modal-0.73.63}/README.md +0 -0
  10. {modal-0.73.61 → modal-0.73.63}/modal/__init__.py +0 -0
  11. {modal-0.73.61 → modal-0.73.63}/modal/__main__.py +0 -0
  12. {modal-0.73.61 → modal-0.73.63}/modal/_clustered_functions.py +0 -0
  13. {modal-0.73.61 → modal-0.73.63}/modal/_clustered_functions.pyi +0 -0
  14. {modal-0.73.61 → modal-0.73.63}/modal/_container_entrypoint.py +0 -0
  15. {modal-0.73.61 → modal-0.73.63}/modal/_ipython.py +0 -0
  16. {modal-0.73.61 → modal-0.73.63}/modal/_location.py +0 -0
  17. {modal-0.73.61 → modal-0.73.63}/modal/_object.py +0 -0
  18. {modal-0.73.61 → modal-0.73.63}/modal/_output.py +0 -0
  19. {modal-0.73.61 → modal-0.73.63}/modal/_partial_function.py +0 -0
  20. {modal-0.73.61 → modal-0.73.63}/modal/_proxy_tunnel.py +0 -0
  21. {modal-0.73.61 → modal-0.73.63}/modal/_pty.py +0 -0
  22. {modal-0.73.61 → modal-0.73.63}/modal/_resolver.py +0 -0
  23. {modal-0.73.61 → modal-0.73.63}/modal/_resources.py +0 -0
  24. {modal-0.73.61 → modal-0.73.63}/modal/_runtime/__init__.py +0 -0
  25. {modal-0.73.61 → modal-0.73.63}/modal/_runtime/asgi.py +0 -0
  26. {modal-0.73.61 → modal-0.73.63}/modal/_runtime/container_io_manager.py +0 -0
  27. {modal-0.73.61 → modal-0.73.63}/modal/_runtime/container_io_manager.pyi +0 -0
  28. {modal-0.73.61 → modal-0.73.63}/modal/_runtime/execution_context.py +0 -0
  29. {modal-0.73.61 → modal-0.73.63}/modal/_runtime/execution_context.pyi +0 -0
  30. {modal-0.73.61 → modal-0.73.63}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  31. {modal-0.73.61 → modal-0.73.63}/modal/_runtime/telemetry.py +0 -0
  32. {modal-0.73.61 → modal-0.73.63}/modal/_runtime/user_code_imports.py +0 -0
  33. {modal-0.73.61 → modal-0.73.63}/modal/_serialization.py +0 -0
  34. {modal-0.73.61 → modal-0.73.63}/modal/_traceback.py +0 -0
  35. {modal-0.73.61 → modal-0.73.63}/modal/_tunnel.py +0 -0
  36. {modal-0.73.61 → modal-0.73.63}/modal/_tunnel.pyi +0 -0
  37. {modal-0.73.61 → modal-0.73.63}/modal/_utils/__init__.py +0 -0
  38. {modal-0.73.61 → modal-0.73.63}/modal/_utils/app_utils.py +0 -0
  39. {modal-0.73.61 → modal-0.73.63}/modal/_utils/async_utils.py +0 -0
  40. {modal-0.73.61 → modal-0.73.63}/modal/_utils/blob_utils.py +0 -0
  41. {modal-0.73.61 → modal-0.73.63}/modal/_utils/bytes_io_segment_payload.py +0 -0
  42. {modal-0.73.61 → modal-0.73.63}/modal/_utils/deprecation.py +0 -0
  43. {modal-0.73.61 → modal-0.73.63}/modal/_utils/docker_utils.py +0 -0
  44. {modal-0.73.61 → modal-0.73.63}/modal/_utils/function_utils.py +0 -0
  45. {modal-0.73.61 → modal-0.73.63}/modal/_utils/grpc_testing.py +0 -0
  46. {modal-0.73.61 → modal-0.73.63}/modal/_utils/grpc_utils.py +0 -0
  47. {modal-0.73.61 → modal-0.73.63}/modal/_utils/hash_utils.py +0 -0
  48. {modal-0.73.61 → modal-0.73.63}/modal/_utils/http_utils.py +0 -0
  49. {modal-0.73.61 → modal-0.73.63}/modal/_utils/logger.py +0 -0
  50. {modal-0.73.61 → modal-0.73.63}/modal/_utils/mount_utils.py +0 -0
  51. {modal-0.73.61 → modal-0.73.63}/modal/_utils/name_utils.py +0 -0
  52. {modal-0.73.61 → modal-0.73.63}/modal/_utils/package_utils.py +0 -0
  53. {modal-0.73.61 → modal-0.73.63}/modal/_utils/pattern_utils.py +0 -0
  54. {modal-0.73.61 → modal-0.73.63}/modal/_utils/rand_pb_testing.py +0 -0
  55. {modal-0.73.61 → modal-0.73.63}/modal/_utils/shell_utils.py +0 -0
  56. {modal-0.73.61 → modal-0.73.63}/modal/_vendor/__init__.py +0 -0
  57. {modal-0.73.61 → modal-0.73.63}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  58. {modal-0.73.61 → modal-0.73.63}/modal/_vendor/cloudpickle.py +0 -0
  59. {modal-0.73.61 → modal-0.73.63}/modal/_vendor/tblib.py +0 -0
  60. {modal-0.73.61 → modal-0.73.63}/modal/_watcher.py +0 -0
  61. {modal-0.73.61 → modal-0.73.63}/modal/app.py +0 -0
  62. {modal-0.73.61 → modal-0.73.63}/modal/app.pyi +0 -0
  63. {modal-0.73.61 → modal-0.73.63}/modal/call_graph.py +0 -0
  64. {modal-0.73.61 → modal-0.73.63}/modal/cli/__init__.py +0 -0
  65. {modal-0.73.61 → modal-0.73.63}/modal/cli/_download.py +0 -0
  66. {modal-0.73.61 → modal-0.73.63}/modal/cli/_traceback.py +0 -0
  67. {modal-0.73.61 → modal-0.73.63}/modal/cli/app.py +0 -0
  68. {modal-0.73.61 → modal-0.73.63}/modal/cli/config.py +0 -0
  69. {modal-0.73.61 → modal-0.73.63}/modal/cli/container.py +0 -0
  70. {modal-0.73.61 → modal-0.73.63}/modal/cli/dict.py +0 -0
  71. {modal-0.73.61 → modal-0.73.63}/modal/cli/entry_point.py +0 -0
  72. {modal-0.73.61 → modal-0.73.63}/modal/cli/environment.py +0 -0
  73. {modal-0.73.61 → modal-0.73.63}/modal/cli/import_refs.py +0 -0
  74. {modal-0.73.61 → modal-0.73.63}/modal/cli/launch.py +0 -0
  75. {modal-0.73.61 → modal-0.73.63}/modal/cli/network_file_system.py +0 -0
  76. {modal-0.73.61 → modal-0.73.63}/modal/cli/programs/__init__.py +0 -0
  77. {modal-0.73.61 → modal-0.73.63}/modal/cli/programs/run_jupyter.py +0 -0
  78. {modal-0.73.61 → modal-0.73.63}/modal/cli/programs/vscode.py +0 -0
  79. {modal-0.73.61 → modal-0.73.63}/modal/cli/queues.py +0 -0
  80. {modal-0.73.61 → modal-0.73.63}/modal/cli/run.py +0 -0
  81. {modal-0.73.61 → modal-0.73.63}/modal/cli/secret.py +0 -0
  82. {modal-0.73.61 → modal-0.73.63}/modal/cli/token.py +0 -0
  83. {modal-0.73.61 → modal-0.73.63}/modal/cli/utils.py +0 -0
  84. {modal-0.73.61 → modal-0.73.63}/modal/cli/volume.py +0 -0
  85. {modal-0.73.61 → modal-0.73.63}/modal/client.py +0 -0
  86. {modal-0.73.61 → modal-0.73.63}/modal/cloud_bucket_mount.py +0 -0
  87. {modal-0.73.61 → modal-0.73.63}/modal/cloud_bucket_mount.pyi +0 -0
  88. {modal-0.73.61 → modal-0.73.63}/modal/cls.py +0 -0
  89. {modal-0.73.61 → modal-0.73.63}/modal/cls.pyi +0 -0
  90. {modal-0.73.61 → modal-0.73.63}/modal/container_process.py +0 -0
  91. {modal-0.73.61 → modal-0.73.63}/modal/container_process.pyi +0 -0
  92. {modal-0.73.61 → modal-0.73.63}/modal/dict.py +0 -0
  93. {modal-0.73.61 → modal-0.73.63}/modal/dict.pyi +0 -0
  94. {modal-0.73.61 → modal-0.73.63}/modal/environments.py +0 -0
  95. {modal-0.73.61 → modal-0.73.63}/modal/environments.pyi +0 -0
  96. {modal-0.73.61 → modal-0.73.63}/modal/exception.py +0 -0
  97. {modal-0.73.61 → modal-0.73.63}/modal/experimental.py +0 -0
  98. {modal-0.73.61 → modal-0.73.63}/modal/experimental.pyi +0 -0
  99. {modal-0.73.61 → modal-0.73.63}/modal/extensions/__init__.py +0 -0
  100. {modal-0.73.61 → modal-0.73.63}/modal/extensions/ipython.py +0 -0
  101. {modal-0.73.61 → modal-0.73.63}/modal/file_io.py +0 -0
  102. {modal-0.73.61 → modal-0.73.63}/modal/file_io.pyi +0 -0
  103. {modal-0.73.61 → modal-0.73.63}/modal/file_pattern_matcher.py +0 -0
  104. {modal-0.73.61 → modal-0.73.63}/modal/functions.py +0 -0
  105. {modal-0.73.61 → modal-0.73.63}/modal/functions.pyi +0 -0
  106. {modal-0.73.61 → modal-0.73.63}/modal/gpu.py +0 -0
  107. {modal-0.73.61 → modal-0.73.63}/modal/image.py +0 -0
  108. {modal-0.73.61 → modal-0.73.63}/modal/image.pyi +0 -0
  109. {modal-0.73.61 → modal-0.73.63}/modal/io_streams.py +0 -0
  110. {modal-0.73.61 → modal-0.73.63}/modal/io_streams.pyi +0 -0
  111. {modal-0.73.61 → modal-0.73.63}/modal/mount.py +0 -0
  112. {modal-0.73.61 → modal-0.73.63}/modal/mount.pyi +0 -0
  113. {modal-0.73.61 → modal-0.73.63}/modal/network_file_system.py +0 -0
  114. {modal-0.73.61 → modal-0.73.63}/modal/network_file_system.pyi +0 -0
  115. {modal-0.73.61 → modal-0.73.63}/modal/object.py +0 -0
  116. {modal-0.73.61 → modal-0.73.63}/modal/object.pyi +0 -0
  117. {modal-0.73.61 → modal-0.73.63}/modal/output.py +0 -0
  118. {modal-0.73.61 → modal-0.73.63}/modal/parallel_map.py +0 -0
  119. {modal-0.73.61 → modal-0.73.63}/modal/parallel_map.pyi +0 -0
  120. {modal-0.73.61 → modal-0.73.63}/modal/partial_function.py +0 -0
  121. {modal-0.73.61 → modal-0.73.63}/modal/partial_function.pyi +0 -0
  122. {modal-0.73.61 → modal-0.73.63}/modal/proxy.py +0 -0
  123. {modal-0.73.61 → modal-0.73.63}/modal/proxy.pyi +0 -0
  124. {modal-0.73.61 → modal-0.73.63}/modal/py.typed +0 -0
  125. {modal-0.73.61 → modal-0.73.63}/modal/queue.py +0 -0
  126. {modal-0.73.61 → modal-0.73.63}/modal/queue.pyi +0 -0
  127. {modal-0.73.61 → modal-0.73.63}/modal/requirements/2023.12.312.txt +0 -0
  128. {modal-0.73.61 → modal-0.73.63}/modal/requirements/2023.12.txt +0 -0
  129. {modal-0.73.61 → modal-0.73.63}/modal/requirements/2024.04.txt +0 -0
  130. {modal-0.73.61 → modal-0.73.63}/modal/requirements/2024.10.txt +0 -0
  131. {modal-0.73.61 → modal-0.73.63}/modal/requirements/README.md +0 -0
  132. {modal-0.73.61 → modal-0.73.63}/modal/requirements/base-images.json +0 -0
  133. {modal-0.73.61 → modal-0.73.63}/modal/retries.py +0 -0
  134. {modal-0.73.61 → modal-0.73.63}/modal/runner.py +0 -0
  135. {modal-0.73.61 → modal-0.73.63}/modal/runner.pyi +0 -0
  136. {modal-0.73.61 → modal-0.73.63}/modal/running_app.py +0 -0
  137. {modal-0.73.61 → modal-0.73.63}/modal/sandbox.py +0 -0
  138. {modal-0.73.61 → modal-0.73.63}/modal/sandbox.pyi +0 -0
  139. {modal-0.73.61 → modal-0.73.63}/modal/schedule.py +0 -0
  140. {modal-0.73.61 → modal-0.73.63}/modal/scheduler_placement.py +0 -0
  141. {modal-0.73.61 → modal-0.73.63}/modal/secret.py +0 -0
  142. {modal-0.73.61 → modal-0.73.63}/modal/secret.pyi +0 -0
  143. {modal-0.73.61 → modal-0.73.63}/modal/serving.py +0 -0
  144. {modal-0.73.61 → modal-0.73.63}/modal/serving.pyi +0 -0
  145. {modal-0.73.61 → modal-0.73.63}/modal/snapshot.py +0 -0
  146. {modal-0.73.61 → modal-0.73.63}/modal/snapshot.pyi +0 -0
  147. {modal-0.73.61 → modal-0.73.63}/modal/stream_type.py +0 -0
  148. {modal-0.73.61 → modal-0.73.63}/modal/token_flow.py +0 -0
  149. {modal-0.73.61 → modal-0.73.63}/modal/token_flow.pyi +0 -0
  150. {modal-0.73.61 → modal-0.73.63}/modal/volume.py +0 -0
  151. {modal-0.73.61 → modal-0.73.63}/modal/volume.pyi +0 -0
  152. {modal-0.73.61 → modal-0.73.63}/modal.egg-info/SOURCES.txt +0 -0
  153. {modal-0.73.61 → modal-0.73.63}/modal.egg-info/dependency_links.txt +0 -0
  154. {modal-0.73.61 → modal-0.73.63}/modal.egg-info/entry_points.txt +0 -0
  155. {modal-0.73.61 → modal-0.73.63}/modal.egg-info/requires.txt +0 -0
  156. {modal-0.73.61 → modal-0.73.63}/modal.egg-info/top_level.txt +0 -0
  157. {modal-0.73.61 → modal-0.73.63}/modal_docs/__init__.py +0 -0
  158. {modal-0.73.61 → modal-0.73.63}/modal_docs/gen_cli_docs.py +0 -0
  159. {modal-0.73.61 → modal-0.73.63}/modal_docs/gen_reference_docs.py +0 -0
  160. {modal-0.73.61 → modal-0.73.63}/modal_docs/mdmd/__init__.py +0 -0
  161. {modal-0.73.61 → modal-0.73.63}/modal_docs/mdmd/mdmd.py +0 -0
  162. {modal-0.73.61 → modal-0.73.63}/modal_docs/mdmd/signatures.py +0 -0
  163. {modal-0.73.61 → modal-0.73.63}/modal_proto/__init__.py +0 -0
  164. {modal-0.73.61 → modal-0.73.63}/modal_proto/api.proto +0 -0
  165. {modal-0.73.61 → modal-0.73.63}/modal_proto/api_grpc.py +0 -0
  166. {modal-0.73.61 → modal-0.73.63}/modal_proto/api_pb2.py +0 -0
  167. {modal-0.73.61 → modal-0.73.63}/modal_proto/api_pb2.pyi +0 -0
  168. {modal-0.73.61 → modal-0.73.63}/modal_proto/api_pb2_grpc.py +0 -0
  169. {modal-0.73.61 → modal-0.73.63}/modal_proto/api_pb2_grpc.pyi +0 -0
  170. {modal-0.73.61 → modal-0.73.63}/modal_proto/modal_api_grpc.py +0 -0
  171. {modal-0.73.61 → modal-0.73.63}/modal_proto/modal_options_grpc.py +0 -0
  172. {modal-0.73.61 → modal-0.73.63}/modal_proto/options.proto +0 -0
  173. {modal-0.73.61 → modal-0.73.63}/modal_proto/options_grpc.py +0 -0
  174. {modal-0.73.61 → modal-0.73.63}/modal_proto/options_pb2.py +0 -0
  175. {modal-0.73.61 → modal-0.73.63}/modal_proto/options_pb2.pyi +0 -0
  176. {modal-0.73.61 → modal-0.73.63}/modal_proto/options_pb2_grpc.py +0 -0
  177. {modal-0.73.61 → modal-0.73.63}/modal_proto/options_pb2_grpc.pyi +0 -0
  178. {modal-0.73.61 → modal-0.73.63}/modal_proto/py.typed +0 -0
  179. {modal-0.73.61 → modal-0.73.63}/modal_version/__init__.py +0 -0
  180. {modal-0.73.61 → modal-0.73.63}/modal_version/__main__.py +0 -0
  181. {modal-0.73.61 → modal-0.73.63}/pyproject.toml +0 -0
  182. {modal-0.73.61 → modal-0.73.63}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.61
3
+ Version: 0.73.63
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -34,7 +34,7 @@ from ._utils.async_utils import (
34
34
  synchronizer,
35
35
  warn_if_generator_is_not_consumed,
36
36
  )
37
- from ._utils.deprecation import deprecation_warning, renamed_parameter
37
+ from ._utils.deprecation import deprecation_error, deprecation_warning, renamed_parameter
38
38
  from ._utils.function_utils import (
39
39
  ATTEMPT_TIMEOUT_GRACE_PERIOD,
40
40
  OUTPUTS_TIMEOUT,
@@ -309,13 +309,8 @@ class FunctionStats:
309
309
 
310
310
  def __getattr__(self, name):
311
311
  if name == "num_active_runners":
312
- msg = (
313
- "'FunctionStats.num_active_runners' is deprecated."
314
- " It currently always has a value of 0,"
315
- " but it will be removed in a future release."
316
- )
317
- deprecation_warning((2024, 6, 14), msg)
318
- return 0
312
+ msg = "'FunctionStats.num_active_runners' is no longer available."
313
+ deprecation_error((2024, 6, 14), msg)
319
314
  raise AttributeError(f"'FunctionStats' object has no attribute '{name}'")
320
315
 
321
316
 
@@ -513,16 +508,11 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
513
508
  retries, f"Function '{info.get_tag()}'" if info.raw_f else f"Class '{info.get_tag()}'"
514
509
  )
515
510
 
516
- if webhook_config is not None and retry_policy is not None:
517
- raise InvalidError(
518
- "Web endpoints do not support retries.",
519
- )
520
-
521
- if is_generator and retry_policy is not None:
522
- deprecation_warning(
523
- (2024, 6, 25),
524
- "Retries for generator functions are deprecated and will soon be removed.",
525
- )
511
+ if retry_policy is not None:
512
+ if webhook_config is not None:
513
+ raise InvalidError("Web endpoints do not support retries.")
514
+ if is_generator:
515
+ raise InvalidError("Generator functions do not support retries.")
526
516
 
527
517
  if proxy:
528
518
  # HACK: remove this once we stop using ssh tunnels for this.
@@ -46,6 +46,8 @@ async def list_(json: Optional[bool] = False):
46
46
  active = profile == _profile
47
47
  if isinstance(resp, AuthError):
48
48
  workspace = "Unknown (authentication failure)"
49
+ elif isinstance(resp, TimeoutError):
50
+ workspace = "Unknown (timed out)"
49
51
  elif isinstance(resp, Exception):
50
52
  # Catch-all for other exceptions, like incorrect server url
51
53
  workspace = "Unknown (profile misconfigured)"
@@ -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.61"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.63"
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.61"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.63"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
@@ -133,7 +133,7 @@ async def _lookup_workspace(server_url: str, token_id: str, token_secret: str) -
133
133
 
134
134
  credentials = (token_id, token_secret)
135
135
  async with _Client(server_url, api_pb2.CLIENT_TYPE_CLIENT, credentials) as client:
136
- return await client.stub.WorkspaceNameLookup(Empty())
136
+ return await client.stub.WorkspaceNameLookup(Empty(), timeout=3)
137
137
 
138
138
 
139
139
  def config_profiles():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.61
3
+ Version: 0.73.63
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 = 61 # git: 48df650
4
+ build_number = 63 # git: 67a38ca
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