modal 0.74.7__tar.gz → 0.74.8__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.7 → modal-0.74.8}/PKG-INFO +1 -1
  2. {modal-0.74.7 → modal-0.74.8}/modal/client.pyi +2 -2
  3. {modal-0.74.7 → modal-0.74.8}/modal/experimental/__init__.py +42 -0
  4. {modal-0.74.7 → modal-0.74.8}/modal.egg-info/PKG-INFO +1 -1
  5. {modal-0.74.7 → modal-0.74.8}/modal_version/_version_generated.py +1 -1
  6. {modal-0.74.7 → modal-0.74.8}/LICENSE +0 -0
  7. {modal-0.74.7 → modal-0.74.8}/README.md +0 -0
  8. {modal-0.74.7 → modal-0.74.8}/modal/__init__.py +0 -0
  9. {modal-0.74.7 → modal-0.74.8}/modal/__main__.py +0 -0
  10. {modal-0.74.7 → modal-0.74.8}/modal/_clustered_functions.py +0 -0
  11. {modal-0.74.7 → modal-0.74.8}/modal/_clustered_functions.pyi +0 -0
  12. {modal-0.74.7 → modal-0.74.8}/modal/_container_entrypoint.py +0 -0
  13. {modal-0.74.7 → modal-0.74.8}/modal/_functions.py +0 -0
  14. {modal-0.74.7 → modal-0.74.8}/modal/_ipython.py +0 -0
  15. {modal-0.74.7 → modal-0.74.8}/modal/_location.py +0 -0
  16. {modal-0.74.7 → modal-0.74.8}/modal/_object.py +0 -0
  17. {modal-0.74.7 → modal-0.74.8}/modal/_output.py +0 -0
  18. {modal-0.74.7 → modal-0.74.8}/modal/_partial_function.py +0 -0
  19. {modal-0.74.7 → modal-0.74.8}/modal/_pty.py +0 -0
  20. {modal-0.74.7 → modal-0.74.8}/modal/_resolver.py +0 -0
  21. {modal-0.74.7 → modal-0.74.8}/modal/_resources.py +0 -0
  22. {modal-0.74.7 → modal-0.74.8}/modal/_runtime/__init__.py +0 -0
  23. {modal-0.74.7 → modal-0.74.8}/modal/_runtime/asgi.py +0 -0
  24. {modal-0.74.7 → modal-0.74.8}/modal/_runtime/container_io_manager.py +0 -0
  25. {modal-0.74.7 → modal-0.74.8}/modal/_runtime/container_io_manager.pyi +0 -0
  26. {modal-0.74.7 → modal-0.74.8}/modal/_runtime/execution_context.py +0 -0
  27. {modal-0.74.7 → modal-0.74.8}/modal/_runtime/execution_context.pyi +0 -0
  28. {modal-0.74.7 → modal-0.74.8}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  29. {modal-0.74.7 → modal-0.74.8}/modal/_runtime/telemetry.py +0 -0
  30. {modal-0.74.7 → modal-0.74.8}/modal/_runtime/user_code_imports.py +0 -0
  31. {modal-0.74.7 → modal-0.74.8}/modal/_serialization.py +0 -0
  32. {modal-0.74.7 → modal-0.74.8}/modal/_traceback.py +0 -0
  33. {modal-0.74.7 → modal-0.74.8}/modal/_tunnel.py +0 -0
  34. {modal-0.74.7 → modal-0.74.8}/modal/_tunnel.pyi +0 -0
  35. {modal-0.74.7 → modal-0.74.8}/modal/_type_manager.py +0 -0
  36. {modal-0.74.7 → modal-0.74.8}/modal/_utils/__init__.py +0 -0
  37. {modal-0.74.7 → modal-0.74.8}/modal/_utils/app_utils.py +0 -0
  38. {modal-0.74.7 → modal-0.74.8}/modal/_utils/async_utils.py +0 -0
  39. {modal-0.74.7 → modal-0.74.8}/modal/_utils/blob_utils.py +0 -0
  40. {modal-0.74.7 → modal-0.74.8}/modal/_utils/bytes_io_segment_payload.py +0 -0
  41. {modal-0.74.7 → modal-0.74.8}/modal/_utils/deprecation.py +0 -0
  42. {modal-0.74.7 → modal-0.74.8}/modal/_utils/docker_utils.py +0 -0
  43. {modal-0.74.7 → modal-0.74.8}/modal/_utils/function_utils.py +0 -0
  44. {modal-0.74.7 → modal-0.74.8}/modal/_utils/git_utils.py +0 -0
  45. {modal-0.74.7 → modal-0.74.8}/modal/_utils/grpc_testing.py +0 -0
  46. {modal-0.74.7 → modal-0.74.8}/modal/_utils/grpc_utils.py +0 -0
  47. {modal-0.74.7 → modal-0.74.8}/modal/_utils/hash_utils.py +0 -0
  48. {modal-0.74.7 → modal-0.74.8}/modal/_utils/http_utils.py +0 -0
  49. {modal-0.74.7 → modal-0.74.8}/modal/_utils/jwt_utils.py +0 -0
  50. {modal-0.74.7 → modal-0.74.8}/modal/_utils/logger.py +0 -0
  51. {modal-0.74.7 → modal-0.74.8}/modal/_utils/mount_utils.py +0 -0
  52. {modal-0.74.7 → modal-0.74.8}/modal/_utils/name_utils.py +0 -0
  53. {modal-0.74.7 → modal-0.74.8}/modal/_utils/package_utils.py +0 -0
  54. {modal-0.74.7 → modal-0.74.8}/modal/_utils/pattern_utils.py +0 -0
  55. {modal-0.74.7 → modal-0.74.8}/modal/_utils/rand_pb_testing.py +0 -0
  56. {modal-0.74.7 → modal-0.74.8}/modal/_utils/shell_utils.py +0 -0
  57. {modal-0.74.7 → modal-0.74.8}/modal/_vendor/__init__.py +0 -0
  58. {modal-0.74.7 → modal-0.74.8}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  59. {modal-0.74.7 → modal-0.74.8}/modal/_vendor/cloudpickle.py +0 -0
  60. {modal-0.74.7 → modal-0.74.8}/modal/_vendor/tblib.py +0 -0
  61. {modal-0.74.7 → modal-0.74.8}/modal/_watcher.py +0 -0
  62. {modal-0.74.7 → modal-0.74.8}/modal/app.py +0 -0
  63. {modal-0.74.7 → modal-0.74.8}/modal/app.pyi +0 -0
  64. {modal-0.74.7 → modal-0.74.8}/modal/call_graph.py +0 -0
  65. {modal-0.74.7 → modal-0.74.8}/modal/cli/__init__.py +0 -0
  66. {modal-0.74.7 → modal-0.74.8}/modal/cli/_download.py +0 -0
  67. {modal-0.74.7 → modal-0.74.8}/modal/cli/_traceback.py +0 -0
  68. {modal-0.74.7 → modal-0.74.8}/modal/cli/app.py +0 -0
  69. {modal-0.74.7 → modal-0.74.8}/modal/cli/config.py +0 -0
  70. {modal-0.74.7 → modal-0.74.8}/modal/cli/container.py +0 -0
  71. {modal-0.74.7 → modal-0.74.8}/modal/cli/dict.py +0 -0
  72. {modal-0.74.7 → modal-0.74.8}/modal/cli/entry_point.py +0 -0
  73. {modal-0.74.7 → modal-0.74.8}/modal/cli/environment.py +0 -0
  74. {modal-0.74.7 → modal-0.74.8}/modal/cli/import_refs.py +0 -0
  75. {modal-0.74.7 → modal-0.74.8}/modal/cli/launch.py +0 -0
  76. {modal-0.74.7 → modal-0.74.8}/modal/cli/network_file_system.py +0 -0
  77. {modal-0.74.7 → modal-0.74.8}/modal/cli/profile.py +0 -0
  78. {modal-0.74.7 → modal-0.74.8}/modal/cli/programs/__init__.py +0 -0
  79. {modal-0.74.7 → modal-0.74.8}/modal/cli/programs/run_jupyter.py +0 -0
  80. {modal-0.74.7 → modal-0.74.8}/modal/cli/programs/vscode.py +0 -0
  81. {modal-0.74.7 → modal-0.74.8}/modal/cli/queues.py +0 -0
  82. {modal-0.74.7 → modal-0.74.8}/modal/cli/run.py +0 -0
  83. {modal-0.74.7 → modal-0.74.8}/modal/cli/secret.py +0 -0
  84. {modal-0.74.7 → modal-0.74.8}/modal/cli/token.py +0 -0
  85. {modal-0.74.7 → modal-0.74.8}/modal/cli/utils.py +0 -0
  86. {modal-0.74.7 → modal-0.74.8}/modal/cli/volume.py +0 -0
  87. {modal-0.74.7 → modal-0.74.8}/modal/client.py +0 -0
  88. {modal-0.74.7 → modal-0.74.8}/modal/cloud_bucket_mount.py +0 -0
  89. {modal-0.74.7 → modal-0.74.8}/modal/cloud_bucket_mount.pyi +0 -0
  90. {modal-0.74.7 → modal-0.74.8}/modal/cls.py +0 -0
  91. {modal-0.74.7 → modal-0.74.8}/modal/cls.pyi +0 -0
  92. {modal-0.74.7 → modal-0.74.8}/modal/config.py +0 -0
  93. {modal-0.74.7 → modal-0.74.8}/modal/container_process.py +0 -0
  94. {modal-0.74.7 → modal-0.74.8}/modal/container_process.pyi +0 -0
  95. {modal-0.74.7 → modal-0.74.8}/modal/dict.py +0 -0
  96. {modal-0.74.7 → modal-0.74.8}/modal/dict.pyi +0 -0
  97. {modal-0.74.7 → modal-0.74.8}/modal/environments.py +0 -0
  98. {modal-0.74.7 → modal-0.74.8}/modal/environments.pyi +0 -0
  99. {modal-0.74.7 → modal-0.74.8}/modal/exception.py +0 -0
  100. {modal-0.74.7 → modal-0.74.8}/modal/experimental/ipython.py +0 -0
  101. {modal-0.74.7 → modal-0.74.8}/modal/file_io.py +0 -0
  102. {modal-0.74.7 → modal-0.74.8}/modal/file_io.pyi +0 -0
  103. {modal-0.74.7 → modal-0.74.8}/modal/file_pattern_matcher.py +0 -0
  104. {modal-0.74.7 → modal-0.74.8}/modal/functions.py +0 -0
  105. {modal-0.74.7 → modal-0.74.8}/modal/functions.pyi +0 -0
  106. {modal-0.74.7 → modal-0.74.8}/modal/gpu.py +0 -0
  107. {modal-0.74.7 → modal-0.74.8}/modal/image.py +0 -0
  108. {modal-0.74.7 → modal-0.74.8}/modal/image.pyi +0 -0
  109. {modal-0.74.7 → modal-0.74.8}/modal/io_streams.py +0 -0
  110. {modal-0.74.7 → modal-0.74.8}/modal/io_streams.pyi +0 -0
  111. {modal-0.74.7 → modal-0.74.8}/modal/mount.py +0 -0
  112. {modal-0.74.7 → modal-0.74.8}/modal/mount.pyi +0 -0
  113. {modal-0.74.7 → modal-0.74.8}/modal/network_file_system.py +0 -0
  114. {modal-0.74.7 → modal-0.74.8}/modal/network_file_system.pyi +0 -0
  115. {modal-0.74.7 → modal-0.74.8}/modal/object.py +0 -0
  116. {modal-0.74.7 → modal-0.74.8}/modal/object.pyi +0 -0
  117. {modal-0.74.7 → modal-0.74.8}/modal/output.py +0 -0
  118. {modal-0.74.7 → modal-0.74.8}/modal/parallel_map.py +0 -0
  119. {modal-0.74.7 → modal-0.74.8}/modal/parallel_map.pyi +0 -0
  120. {modal-0.74.7 → modal-0.74.8}/modal/partial_function.py +0 -0
  121. {modal-0.74.7 → modal-0.74.8}/modal/partial_function.pyi +0 -0
  122. {modal-0.74.7 → modal-0.74.8}/modal/proxy.py +0 -0
  123. {modal-0.74.7 → modal-0.74.8}/modal/proxy.pyi +0 -0
  124. {modal-0.74.7 → modal-0.74.8}/modal/py.typed +0 -0
  125. {modal-0.74.7 → modal-0.74.8}/modal/queue.py +0 -0
  126. {modal-0.74.7 → modal-0.74.8}/modal/queue.pyi +0 -0
  127. {modal-0.74.7 → modal-0.74.8}/modal/requirements/2023.12.312.txt +0 -0
  128. {modal-0.74.7 → modal-0.74.8}/modal/requirements/2023.12.txt +0 -0
  129. {modal-0.74.7 → modal-0.74.8}/modal/requirements/2024.04.txt +0 -0
  130. {modal-0.74.7 → modal-0.74.8}/modal/requirements/2024.10.txt +0 -0
  131. {modal-0.74.7 → modal-0.74.8}/modal/requirements/PREVIEW.txt +0 -0
  132. {modal-0.74.7 → modal-0.74.8}/modal/requirements/README.md +0 -0
  133. {modal-0.74.7 → modal-0.74.8}/modal/requirements/base-images.json +0 -0
  134. {modal-0.74.7 → modal-0.74.8}/modal/retries.py +0 -0
  135. {modal-0.74.7 → modal-0.74.8}/modal/runner.py +0 -0
  136. {modal-0.74.7 → modal-0.74.8}/modal/runner.pyi +0 -0
  137. {modal-0.74.7 → modal-0.74.8}/modal/running_app.py +0 -0
  138. {modal-0.74.7 → modal-0.74.8}/modal/sandbox.py +0 -0
  139. {modal-0.74.7 → modal-0.74.8}/modal/sandbox.pyi +0 -0
  140. {modal-0.74.7 → modal-0.74.8}/modal/schedule.py +0 -0
  141. {modal-0.74.7 → modal-0.74.8}/modal/scheduler_placement.py +0 -0
  142. {modal-0.74.7 → modal-0.74.8}/modal/secret.py +0 -0
  143. {modal-0.74.7 → modal-0.74.8}/modal/secret.pyi +0 -0
  144. {modal-0.74.7 → modal-0.74.8}/modal/serving.py +0 -0
  145. {modal-0.74.7 → modal-0.74.8}/modal/serving.pyi +0 -0
  146. {modal-0.74.7 → modal-0.74.8}/modal/snapshot.py +0 -0
  147. {modal-0.74.7 → modal-0.74.8}/modal/snapshot.pyi +0 -0
  148. {modal-0.74.7 → modal-0.74.8}/modal/stream_type.py +0 -0
  149. {modal-0.74.7 → modal-0.74.8}/modal/token_flow.py +0 -0
  150. {modal-0.74.7 → modal-0.74.8}/modal/token_flow.pyi +0 -0
  151. {modal-0.74.7 → modal-0.74.8}/modal/volume.py +0 -0
  152. {modal-0.74.7 → modal-0.74.8}/modal/volume.pyi +0 -0
  153. {modal-0.74.7 → modal-0.74.8}/modal.egg-info/SOURCES.txt +0 -0
  154. {modal-0.74.7 → modal-0.74.8}/modal.egg-info/dependency_links.txt +0 -0
  155. {modal-0.74.7 → modal-0.74.8}/modal.egg-info/entry_points.txt +0 -0
  156. {modal-0.74.7 → modal-0.74.8}/modal.egg-info/requires.txt +0 -0
  157. {modal-0.74.7 → modal-0.74.8}/modal.egg-info/top_level.txt +0 -0
  158. {modal-0.74.7 → modal-0.74.8}/modal_docs/__init__.py +0 -0
  159. {modal-0.74.7 → modal-0.74.8}/modal_docs/gen_cli_docs.py +0 -0
  160. {modal-0.74.7 → modal-0.74.8}/modal_docs/gen_reference_docs.py +0 -0
  161. {modal-0.74.7 → modal-0.74.8}/modal_docs/mdmd/__init__.py +0 -0
  162. {modal-0.74.7 → modal-0.74.8}/modal_docs/mdmd/mdmd.py +0 -0
  163. {modal-0.74.7 → modal-0.74.8}/modal_docs/mdmd/signatures.py +0 -0
  164. {modal-0.74.7 → modal-0.74.8}/modal_proto/__init__.py +0 -0
  165. {modal-0.74.7 → modal-0.74.8}/modal_proto/api.proto +0 -0
  166. {modal-0.74.7 → modal-0.74.8}/modal_proto/api_grpc.py +0 -0
  167. {modal-0.74.7 → modal-0.74.8}/modal_proto/api_pb2.py +0 -0
  168. {modal-0.74.7 → modal-0.74.8}/modal_proto/api_pb2.pyi +0 -0
  169. {modal-0.74.7 → modal-0.74.8}/modal_proto/api_pb2_grpc.py +0 -0
  170. {modal-0.74.7 → modal-0.74.8}/modal_proto/api_pb2_grpc.pyi +0 -0
  171. {modal-0.74.7 → modal-0.74.8}/modal_proto/modal_api_grpc.py +0 -0
  172. {modal-0.74.7 → modal-0.74.8}/modal_proto/modal_options_grpc.py +0 -0
  173. {modal-0.74.7 → modal-0.74.8}/modal_proto/options.proto +0 -0
  174. {modal-0.74.7 → modal-0.74.8}/modal_proto/options_grpc.py +0 -0
  175. {modal-0.74.7 → modal-0.74.8}/modal_proto/options_pb2.py +0 -0
  176. {modal-0.74.7 → modal-0.74.8}/modal_proto/options_pb2.pyi +0 -0
  177. {modal-0.74.7 → modal-0.74.8}/modal_proto/options_pb2_grpc.py +0 -0
  178. {modal-0.74.7 → modal-0.74.8}/modal_proto/options_pb2_grpc.pyi +0 -0
  179. {modal-0.74.7 → modal-0.74.8}/modal_proto/py.typed +0 -0
  180. {modal-0.74.7 → modal-0.74.8}/modal_version/__init__.py +0 -0
  181. {modal-0.74.7 → modal-0.74.8}/modal_version/__main__.py +0 -0
  182. {modal-0.74.7 → modal-0.74.8}/pyproject.toml +0 -0
  183. {modal-0.74.7 → modal-0.74.8}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 0.74.7
3
+ Version: 0.74.8
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -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.7"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.8"
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.7"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.8"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
@@ -7,11 +7,14 @@ from typing import Literal, Optional, Union
7
7
  from modal_proto import api_pb2
8
8
 
9
9
  from .._clustered_functions import ClusterInfo, get_cluster_info as _get_cluster_info
10
+ from .._functions import _Function
10
11
  from .._object import _get_environment_name
11
12
  from .._partial_function import _clustered
12
13
  from .._runtime.container_io_manager import _ContainerIOManager
13
14
  from .._utils.async_utils import synchronize_api, synchronizer
15
+ from .._utils.grpc_utils import retry_transient_errors
14
16
  from ..client import _Client
17
+ from ..cls import _Obj
15
18
  from ..exception import InvalidError
16
19
  from ..image import DockerfileSpec, ImageBuilderVersion, _Image, _ImageRegistryConfig
17
20
  from ..secret import _Secret
@@ -157,3 +160,42 @@ async def raw_registry_image(
157
160
  image_registry_config=registry_config,
158
161
  force_build=force_build,
159
162
  )
163
+
164
+
165
+ @synchronizer.create_blocking
166
+ async def update_autoscaler(
167
+ obj: Union[_Function, _Obj],
168
+ *,
169
+ min_containers: Optional[int] = None,
170
+ max_containers: Optional[int] = None,
171
+ buffer_containers: Optional[int] = None,
172
+ scaledown_window: Optional[int] = None,
173
+ client: Optional[_Client] = None,
174
+ ) -> None:
175
+ """Update the autoscaler settings for a Function or Obj (instance of a Cls).
176
+
177
+ This is an experimental interface for a feature that we will be adding to
178
+ replace the existing `.keep_warm()` method. The stable form of this interface
179
+ may look different (i.e., it may be a standalone function or a method).
180
+
181
+ """
182
+ settings = api_pb2.AutoscalerSettings(
183
+ min_containers=min_containers,
184
+ max_containers=max_containers,
185
+ buffer_containers=buffer_containers,
186
+ scaledown_window=scaledown_window,
187
+ )
188
+
189
+ if client is None:
190
+ client = await _Client.from_env()
191
+
192
+ if isinstance(obj, _Function):
193
+ f = obj
194
+ else:
195
+ assert obj._cls._class_service_function is not None
196
+ await obj._cls._class_service_function.hydrate(client=client)
197
+ f = obj._cached_service_function()
198
+ await f.hydrate(client=client)
199
+
200
+ request = api_pb2.FunctionUpdateSchedulingParamsRequest(function_id=f.object_id, settings=settings)
201
+ await retry_transient_errors(client.stub.FunctionUpdateSchedulingParams, request)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 0.74.7
3
+ Version: 0.74.8
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 = 7 # git: 52311ba
4
+ build_number = 8 # git: ea2b838
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes