modal 0.73.91__tar.gz → 0.73.93__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.91 → modal-0.73.93}/PKG-INFO +1 -1
  2. {modal-0.73.91 → modal-0.73.93}/modal/client.py +6 -5
  3. {modal-0.73.91 → modal-0.73.93}/modal/client.pyi +2 -2
  4. {modal-0.73.91 → modal-0.73.93}/modal/queue.py +1 -1
  5. {modal-0.73.91 → modal-0.73.93}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-0.73.91 → modal-0.73.93}/modal_version/_version_generated.py +1 -1
  7. {modal-0.73.91 → modal-0.73.93}/LICENSE +0 -0
  8. {modal-0.73.91 → modal-0.73.93}/README.md +0 -0
  9. {modal-0.73.91 → modal-0.73.93}/modal/__init__.py +0 -0
  10. {modal-0.73.91 → modal-0.73.93}/modal/__main__.py +0 -0
  11. {modal-0.73.91 → modal-0.73.93}/modal/_clustered_functions.py +0 -0
  12. {modal-0.73.91 → modal-0.73.93}/modal/_clustered_functions.pyi +0 -0
  13. {modal-0.73.91 → modal-0.73.93}/modal/_container_entrypoint.py +0 -0
  14. {modal-0.73.91 → modal-0.73.93}/modal/_functions.py +0 -0
  15. {modal-0.73.91 → modal-0.73.93}/modal/_ipython.py +0 -0
  16. {modal-0.73.91 → modal-0.73.93}/modal/_location.py +0 -0
  17. {modal-0.73.91 → modal-0.73.93}/modal/_object.py +0 -0
  18. {modal-0.73.91 → modal-0.73.93}/modal/_output.py +0 -0
  19. {modal-0.73.91 → modal-0.73.93}/modal/_partial_function.py +0 -0
  20. {modal-0.73.91 → modal-0.73.93}/modal/_proxy_tunnel.py +0 -0
  21. {modal-0.73.91 → modal-0.73.93}/modal/_pty.py +0 -0
  22. {modal-0.73.91 → modal-0.73.93}/modal/_resolver.py +0 -0
  23. {modal-0.73.91 → modal-0.73.93}/modal/_resources.py +0 -0
  24. {modal-0.73.91 → modal-0.73.93}/modal/_runtime/__init__.py +0 -0
  25. {modal-0.73.91 → modal-0.73.93}/modal/_runtime/asgi.py +0 -0
  26. {modal-0.73.91 → modal-0.73.93}/modal/_runtime/container_io_manager.py +0 -0
  27. {modal-0.73.91 → modal-0.73.93}/modal/_runtime/container_io_manager.pyi +0 -0
  28. {modal-0.73.91 → modal-0.73.93}/modal/_runtime/execution_context.py +0 -0
  29. {modal-0.73.91 → modal-0.73.93}/modal/_runtime/execution_context.pyi +0 -0
  30. {modal-0.73.91 → modal-0.73.93}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  31. {modal-0.73.91 → modal-0.73.93}/modal/_runtime/telemetry.py +0 -0
  32. {modal-0.73.91 → modal-0.73.93}/modal/_runtime/user_code_imports.py +0 -0
  33. {modal-0.73.91 → modal-0.73.93}/modal/_serialization.py +0 -0
  34. {modal-0.73.91 → modal-0.73.93}/modal/_traceback.py +0 -0
  35. {modal-0.73.91 → modal-0.73.93}/modal/_tunnel.py +0 -0
  36. {modal-0.73.91 → modal-0.73.93}/modal/_tunnel.pyi +0 -0
  37. {modal-0.73.91 → modal-0.73.93}/modal/_utils/__init__.py +0 -0
  38. {modal-0.73.91 → modal-0.73.93}/modal/_utils/app_utils.py +0 -0
  39. {modal-0.73.91 → modal-0.73.93}/modal/_utils/async_utils.py +0 -0
  40. {modal-0.73.91 → modal-0.73.93}/modal/_utils/blob_utils.py +0 -0
  41. {modal-0.73.91 → modal-0.73.93}/modal/_utils/bytes_io_segment_payload.py +0 -0
  42. {modal-0.73.91 → modal-0.73.93}/modal/_utils/deprecation.py +0 -0
  43. {modal-0.73.91 → modal-0.73.93}/modal/_utils/docker_utils.py +0 -0
  44. {modal-0.73.91 → modal-0.73.93}/modal/_utils/function_utils.py +0 -0
  45. {modal-0.73.91 → modal-0.73.93}/modal/_utils/grpc_testing.py +0 -0
  46. {modal-0.73.91 → modal-0.73.93}/modal/_utils/grpc_utils.py +0 -0
  47. {modal-0.73.91 → modal-0.73.93}/modal/_utils/hash_utils.py +0 -0
  48. {modal-0.73.91 → modal-0.73.93}/modal/_utils/http_utils.py +0 -0
  49. {modal-0.73.91 → modal-0.73.93}/modal/_utils/logger.py +0 -0
  50. {modal-0.73.91 → modal-0.73.93}/modal/_utils/mount_utils.py +0 -0
  51. {modal-0.73.91 → modal-0.73.93}/modal/_utils/name_utils.py +0 -0
  52. {modal-0.73.91 → modal-0.73.93}/modal/_utils/package_utils.py +0 -0
  53. {modal-0.73.91 → modal-0.73.93}/modal/_utils/pattern_utils.py +0 -0
  54. {modal-0.73.91 → modal-0.73.93}/modal/_utils/rand_pb_testing.py +0 -0
  55. {modal-0.73.91 → modal-0.73.93}/modal/_utils/shell_utils.py +0 -0
  56. {modal-0.73.91 → modal-0.73.93}/modal/_vendor/__init__.py +0 -0
  57. {modal-0.73.91 → modal-0.73.93}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  58. {modal-0.73.91 → modal-0.73.93}/modal/_vendor/cloudpickle.py +0 -0
  59. {modal-0.73.91 → modal-0.73.93}/modal/_vendor/tblib.py +0 -0
  60. {modal-0.73.91 → modal-0.73.93}/modal/_watcher.py +0 -0
  61. {modal-0.73.91 → modal-0.73.93}/modal/app.py +0 -0
  62. {modal-0.73.91 → modal-0.73.93}/modal/app.pyi +0 -0
  63. {modal-0.73.91 → modal-0.73.93}/modal/call_graph.py +0 -0
  64. {modal-0.73.91 → modal-0.73.93}/modal/cli/__init__.py +0 -0
  65. {modal-0.73.91 → modal-0.73.93}/modal/cli/_download.py +0 -0
  66. {modal-0.73.91 → modal-0.73.93}/modal/cli/_traceback.py +0 -0
  67. {modal-0.73.91 → modal-0.73.93}/modal/cli/app.py +0 -0
  68. {modal-0.73.91 → modal-0.73.93}/modal/cli/config.py +0 -0
  69. {modal-0.73.91 → modal-0.73.93}/modal/cli/container.py +0 -0
  70. {modal-0.73.91 → modal-0.73.93}/modal/cli/dict.py +0 -0
  71. {modal-0.73.91 → modal-0.73.93}/modal/cli/entry_point.py +0 -0
  72. {modal-0.73.91 → modal-0.73.93}/modal/cli/environment.py +0 -0
  73. {modal-0.73.91 → modal-0.73.93}/modal/cli/import_refs.py +0 -0
  74. {modal-0.73.91 → modal-0.73.93}/modal/cli/launch.py +0 -0
  75. {modal-0.73.91 → modal-0.73.93}/modal/cli/network_file_system.py +0 -0
  76. {modal-0.73.91 → modal-0.73.93}/modal/cli/profile.py +0 -0
  77. {modal-0.73.91 → modal-0.73.93}/modal/cli/programs/__init__.py +0 -0
  78. {modal-0.73.91 → modal-0.73.93}/modal/cli/programs/run_jupyter.py +0 -0
  79. {modal-0.73.91 → modal-0.73.93}/modal/cli/programs/vscode.py +0 -0
  80. {modal-0.73.91 → modal-0.73.93}/modal/cli/queues.py +0 -0
  81. {modal-0.73.91 → modal-0.73.93}/modal/cli/run.py +0 -0
  82. {modal-0.73.91 → modal-0.73.93}/modal/cli/secret.py +0 -0
  83. {modal-0.73.91 → modal-0.73.93}/modal/cli/token.py +0 -0
  84. {modal-0.73.91 → modal-0.73.93}/modal/cli/utils.py +0 -0
  85. {modal-0.73.91 → modal-0.73.93}/modal/cli/volume.py +0 -0
  86. {modal-0.73.91 → modal-0.73.93}/modal/cloud_bucket_mount.py +0 -0
  87. {modal-0.73.91 → modal-0.73.93}/modal/cloud_bucket_mount.pyi +0 -0
  88. {modal-0.73.91 → modal-0.73.93}/modal/cls.py +0 -0
  89. {modal-0.73.91 → modal-0.73.93}/modal/cls.pyi +0 -0
  90. {modal-0.73.91 → modal-0.73.93}/modal/config.py +0 -0
  91. {modal-0.73.91 → modal-0.73.93}/modal/container_process.py +0 -0
  92. {modal-0.73.91 → modal-0.73.93}/modal/container_process.pyi +0 -0
  93. {modal-0.73.91 → modal-0.73.93}/modal/dict.py +0 -0
  94. {modal-0.73.91 → modal-0.73.93}/modal/dict.pyi +0 -0
  95. {modal-0.73.91 → modal-0.73.93}/modal/environments.py +0 -0
  96. {modal-0.73.91 → modal-0.73.93}/modal/environments.pyi +0 -0
  97. {modal-0.73.91 → modal-0.73.93}/modal/exception.py +0 -0
  98. {modal-0.73.91 → modal-0.73.93}/modal/experimental.py +0 -0
  99. {modal-0.73.91 → modal-0.73.93}/modal/experimental.pyi +0 -0
  100. {modal-0.73.91 → modal-0.73.93}/modal/extensions/__init__.py +0 -0
  101. {modal-0.73.91 → modal-0.73.93}/modal/extensions/ipython.py +0 -0
  102. {modal-0.73.91 → modal-0.73.93}/modal/file_io.py +0 -0
  103. {modal-0.73.91 → modal-0.73.93}/modal/file_io.pyi +0 -0
  104. {modal-0.73.91 → modal-0.73.93}/modal/file_pattern_matcher.py +0 -0
  105. {modal-0.73.91 → modal-0.73.93}/modal/functions.py +0 -0
  106. {modal-0.73.91 → modal-0.73.93}/modal/functions.pyi +0 -0
  107. {modal-0.73.91 → modal-0.73.93}/modal/gpu.py +0 -0
  108. {modal-0.73.91 → modal-0.73.93}/modal/image.py +0 -0
  109. {modal-0.73.91 → modal-0.73.93}/modal/image.pyi +0 -0
  110. {modal-0.73.91 → modal-0.73.93}/modal/io_streams.py +0 -0
  111. {modal-0.73.91 → modal-0.73.93}/modal/io_streams.pyi +0 -0
  112. {modal-0.73.91 → modal-0.73.93}/modal/mount.py +0 -0
  113. {modal-0.73.91 → modal-0.73.93}/modal/mount.pyi +0 -0
  114. {modal-0.73.91 → modal-0.73.93}/modal/network_file_system.py +0 -0
  115. {modal-0.73.91 → modal-0.73.93}/modal/network_file_system.pyi +0 -0
  116. {modal-0.73.91 → modal-0.73.93}/modal/object.py +0 -0
  117. {modal-0.73.91 → modal-0.73.93}/modal/object.pyi +0 -0
  118. {modal-0.73.91 → modal-0.73.93}/modal/output.py +0 -0
  119. {modal-0.73.91 → modal-0.73.93}/modal/parallel_map.py +0 -0
  120. {modal-0.73.91 → modal-0.73.93}/modal/parallel_map.pyi +0 -0
  121. {modal-0.73.91 → modal-0.73.93}/modal/partial_function.py +0 -0
  122. {modal-0.73.91 → modal-0.73.93}/modal/partial_function.pyi +0 -0
  123. {modal-0.73.91 → modal-0.73.93}/modal/proxy.py +0 -0
  124. {modal-0.73.91 → modal-0.73.93}/modal/proxy.pyi +0 -0
  125. {modal-0.73.91 → modal-0.73.93}/modal/py.typed +0 -0
  126. {modal-0.73.91 → modal-0.73.93}/modal/queue.pyi +0 -0
  127. {modal-0.73.91 → modal-0.73.93}/modal/requirements/2023.12.312.txt +0 -0
  128. {modal-0.73.91 → modal-0.73.93}/modal/requirements/2023.12.txt +0 -0
  129. {modal-0.73.91 → modal-0.73.93}/modal/requirements/2024.04.txt +0 -0
  130. {modal-0.73.91 → modal-0.73.93}/modal/requirements/2024.10.txt +0 -0
  131. {modal-0.73.91 → modal-0.73.93}/modal/requirements/README.md +0 -0
  132. {modal-0.73.91 → modal-0.73.93}/modal/requirements/base-images.json +0 -0
  133. {modal-0.73.91 → modal-0.73.93}/modal/retries.py +0 -0
  134. {modal-0.73.91 → modal-0.73.93}/modal/runner.py +0 -0
  135. {modal-0.73.91 → modal-0.73.93}/modal/runner.pyi +0 -0
  136. {modal-0.73.91 → modal-0.73.93}/modal/running_app.py +0 -0
  137. {modal-0.73.91 → modal-0.73.93}/modal/sandbox.py +0 -0
  138. {modal-0.73.91 → modal-0.73.93}/modal/sandbox.pyi +0 -0
  139. {modal-0.73.91 → modal-0.73.93}/modal/schedule.py +0 -0
  140. {modal-0.73.91 → modal-0.73.93}/modal/scheduler_placement.py +0 -0
  141. {modal-0.73.91 → modal-0.73.93}/modal/secret.py +0 -0
  142. {modal-0.73.91 → modal-0.73.93}/modal/secret.pyi +0 -0
  143. {modal-0.73.91 → modal-0.73.93}/modal/serving.py +0 -0
  144. {modal-0.73.91 → modal-0.73.93}/modal/serving.pyi +0 -0
  145. {modal-0.73.91 → modal-0.73.93}/modal/snapshot.py +0 -0
  146. {modal-0.73.91 → modal-0.73.93}/modal/snapshot.pyi +0 -0
  147. {modal-0.73.91 → modal-0.73.93}/modal/stream_type.py +0 -0
  148. {modal-0.73.91 → modal-0.73.93}/modal/token_flow.py +0 -0
  149. {modal-0.73.91 → modal-0.73.93}/modal/token_flow.pyi +0 -0
  150. {modal-0.73.91 → modal-0.73.93}/modal/volume.py +0 -0
  151. {modal-0.73.91 → modal-0.73.93}/modal/volume.pyi +0 -0
  152. {modal-0.73.91 → modal-0.73.93}/modal.egg-info/SOURCES.txt +0 -0
  153. {modal-0.73.91 → modal-0.73.93}/modal.egg-info/dependency_links.txt +0 -0
  154. {modal-0.73.91 → modal-0.73.93}/modal.egg-info/entry_points.txt +0 -0
  155. {modal-0.73.91 → modal-0.73.93}/modal.egg-info/requires.txt +0 -0
  156. {modal-0.73.91 → modal-0.73.93}/modal.egg-info/top_level.txt +0 -0
  157. {modal-0.73.91 → modal-0.73.93}/modal_docs/__init__.py +0 -0
  158. {modal-0.73.91 → modal-0.73.93}/modal_docs/gen_cli_docs.py +0 -0
  159. {modal-0.73.91 → modal-0.73.93}/modal_docs/gen_reference_docs.py +0 -0
  160. {modal-0.73.91 → modal-0.73.93}/modal_docs/mdmd/__init__.py +0 -0
  161. {modal-0.73.91 → modal-0.73.93}/modal_docs/mdmd/mdmd.py +0 -0
  162. {modal-0.73.91 → modal-0.73.93}/modal_docs/mdmd/signatures.py +0 -0
  163. {modal-0.73.91 → modal-0.73.93}/modal_proto/__init__.py +0 -0
  164. {modal-0.73.91 → modal-0.73.93}/modal_proto/api.proto +0 -0
  165. {modal-0.73.91 → modal-0.73.93}/modal_proto/api_grpc.py +0 -0
  166. {modal-0.73.91 → modal-0.73.93}/modal_proto/api_pb2.py +0 -0
  167. {modal-0.73.91 → modal-0.73.93}/modal_proto/api_pb2.pyi +0 -0
  168. {modal-0.73.91 → modal-0.73.93}/modal_proto/api_pb2_grpc.py +0 -0
  169. {modal-0.73.91 → modal-0.73.93}/modal_proto/api_pb2_grpc.pyi +0 -0
  170. {modal-0.73.91 → modal-0.73.93}/modal_proto/modal_api_grpc.py +0 -0
  171. {modal-0.73.91 → modal-0.73.93}/modal_proto/modal_options_grpc.py +0 -0
  172. {modal-0.73.91 → modal-0.73.93}/modal_proto/options.proto +0 -0
  173. {modal-0.73.91 → modal-0.73.93}/modal_proto/options_grpc.py +0 -0
  174. {modal-0.73.91 → modal-0.73.93}/modal_proto/options_pb2.py +0 -0
  175. {modal-0.73.91 → modal-0.73.93}/modal_proto/options_pb2.pyi +0 -0
  176. {modal-0.73.91 → modal-0.73.93}/modal_proto/options_pb2_grpc.py +0 -0
  177. {modal-0.73.91 → modal-0.73.93}/modal_proto/options_pb2_grpc.pyi +0 -0
  178. {modal-0.73.91 → modal-0.73.93}/modal_proto/py.typed +0 -0
  179. {modal-0.73.91 → modal-0.73.93}/modal_version/__init__.py +0 -0
  180. {modal-0.73.91 → modal-0.73.93}/modal_version/__main__.py +0 -0
  181. {modal-0.73.91 → modal-0.73.93}/pyproject.toml +0 -0
  182. {modal-0.73.91 → modal-0.73.93}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.91
3
+ Version: 0.73.93
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -108,14 +108,14 @@ class _Client:
108
108
  self._closed = False
109
109
  assert self._stub is None
110
110
  metadata = _get_metadata(self.client_type, self._credentials, self.version)
111
+ self._cancellation_context = TaskContext(grace=0.5) # allow running rpcs to finish in 0.5s when closing client
112
+ self._cancellation_context_event_loop = asyncio.get_running_loop()
113
+ await self._cancellation_context.__aenter__()
111
114
  self._channel = create_channel(self.server_url, metadata=metadata)
112
115
  try:
113
116
  await connect_channel(self._channel)
114
117
  except OSError as exc:
115
- raise ConnectionError(str(exc))
116
- self._cancellation_context = TaskContext(grace=0.5) # allow running rpcs to finish in 0.5s when closing client
117
- self._cancellation_context_event_loop = asyncio.get_running_loop()
118
- await self._cancellation_context.__aenter__()
118
+ raise ConnectionError("Could not connect to the Modal server.") from exc
119
119
  self._grpclib_stub = api_grpc.ModalClientStub(self._channel)
120
120
  self._stub = modal_api_grpc.ModalClientModal(self._grpclib_stub, client=self)
121
121
  self._owner_pid = os.getpid()
@@ -123,7 +123,8 @@ class _Client:
123
123
  async def _close(self, prep_for_restore: bool = False):
124
124
  logger.debug(f"Client ({id(self)}): closing")
125
125
  self._closed = True
126
- await self._cancellation_context.__aexit__(None, None, None) # wait for all rpcs to be finished/cancelled
126
+ if hasattr(self, "_cancellation_context"):
127
+ await self._cancellation_context.__aexit__(None, None, None) # wait for all rpcs to be finished/cancelled
127
128
  if self._channel is not None:
128
129
  self._channel.close()
129
130
 
@@ -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.91"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.93"
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.91"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.93"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
@@ -89,7 +89,7 @@ class _Queue(_Object, type_prefix="qu"):
89
89
 
90
90
  **Limits**
91
91
 
92
- A single `Queue` can contain up to 100,000 partitions, each with up to 5,000 items. Each item can be up to 256 KiB.
92
+ A single `Queue` can contain up to 100,000 partitions, each with up to 5,000 items. Each item can be up to 1 MiB.
93
93
 
94
94
  Partition keys must be non-empty and must not exceed 64 bytes.
95
95
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: modal
3
- Version: 0.73.91
3
+ Version: 0.73.93
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 = 91 # git: 77578e0
4
+ build_number = 93 # git: 6b04a6d
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes