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.
- {modal-0.74.7 → modal-0.74.8}/PKG-INFO +1 -1
- {modal-0.74.7 → modal-0.74.8}/modal/client.pyi +2 -2
- {modal-0.74.7 → modal-0.74.8}/modal/experimental/__init__.py +42 -0
- {modal-0.74.7 → modal-0.74.8}/modal.egg-info/PKG-INFO +1 -1
- {modal-0.74.7 → modal-0.74.8}/modal_version/_version_generated.py +1 -1
- {modal-0.74.7 → modal-0.74.8}/LICENSE +0 -0
- {modal-0.74.7 → modal-0.74.8}/README.md +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/__main__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_clustered_functions.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_clustered_functions.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_container_entrypoint.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_functions.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_ipython.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_location.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_object.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_output.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_partial_function.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_pty.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_resolver.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_resources.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_runtime/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_runtime/asgi.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_runtime/container_io_manager.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_runtime/execution_context.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_runtime/execution_context.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_runtime/telemetry.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_runtime/user_code_imports.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_serialization.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_traceback.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_tunnel.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_tunnel.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_type_manager.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/app_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/async_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/blob_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/deprecation.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/docker_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/function_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/git_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/grpc_testing.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/grpc_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/hash_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/http_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/jwt_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/logger.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/mount_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/name_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/package_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/pattern_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_utils/shell_utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_vendor/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_vendor/cloudpickle.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_vendor/tblib.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/_watcher.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/app.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/app.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/call_graph.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/_download.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/_traceback.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/app.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/config.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/container.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/dict.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/entry_point.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/environment.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/import_refs.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/launch.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/network_file_system.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/profile.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/programs/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/programs/vscode.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/queues.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/run.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/secret.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/token.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/utils.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cli/volume.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/client.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cloud_bucket_mount.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cls.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/cls.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/config.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/container_process.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/container_process.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/dict.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/dict.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/environments.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/environments.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/exception.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/experimental/ipython.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/file_io.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/file_io.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/file_pattern_matcher.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/functions.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/functions.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/gpu.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/image.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/image.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/io_streams.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/io_streams.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/mount.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/mount.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/network_file_system.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/network_file_system.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/object.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/object.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/output.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/parallel_map.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/parallel_map.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/partial_function.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/partial_function.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/proxy.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/proxy.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/py.typed +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/queue.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/queue.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/requirements/2023.12.312.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/requirements/2023.12.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/requirements/2024.04.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/requirements/2024.10.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/requirements/PREVIEW.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/requirements/README.md +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/requirements/base-images.json +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/retries.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/runner.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/runner.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/running_app.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/sandbox.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/sandbox.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/schedule.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/scheduler_placement.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/secret.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/secret.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/serving.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/serving.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/snapshot.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/snapshot.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/stream_type.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/token_flow.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/token_flow.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/volume.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal/volume.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal.egg-info/SOURCES.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal.egg-info/dependency_links.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal.egg-info/entry_points.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal.egg-info/requires.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal.egg-info/top_level.txt +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_docs/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_docs/gen_cli_docs.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_docs/gen_reference_docs.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_docs/mdmd/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_docs/mdmd/signatures.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/api.proto +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/api_grpc.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/api_pb2.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/api_pb2.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/modal_api_grpc.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/modal_options_grpc.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/options.proto +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/options_grpc.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/options_pb2.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/options_pb2.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_proto/py.typed +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_version/__init__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/modal_version/__main__.py +0 -0
- {modal-0.74.7 → modal-0.74.8}/pyproject.toml +0 -0
- {modal-0.74.7 → modal-0.74.8}/setup.cfg +0 -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.
|
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.
|
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)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|