modal 1.1.5.dev34__tar.gz → 1.1.5.dev36__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.
Potentially problematic release.
This version of modal might be problematic. Click here for more details.
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/PKG-INFO +1 -1
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/cluster.py +7 -1
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/client.pyi +2 -2
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/functions.pyi +6 -6
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/sandbox.py +6 -6
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/sandbox.pyi +6 -6
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/api.proto +1 -1
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/api_pb2.py +330 -330
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/api_pb2.pyi +4 -4
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_version/__init__.py +1 -1
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/LICENSE +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/README.md +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/__main__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_clustered_functions.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_clustered_functions.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_container_entrypoint.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_functions.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_ipython.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_location.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_object.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_output.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_partial_function.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_pty.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_resolver.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_resources.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_runtime/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_runtime/asgi.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_runtime/execution_context.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_runtime/telemetry.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_serialization.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_traceback.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_tunnel.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_tunnel.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_type_manager.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/app_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/async_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/blob_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/deprecation.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/docker_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/function_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/git_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/hash_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/http_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/logger.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/mount_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/name_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/package_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/shell_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_utils/time_utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_vendor/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_vendor/tblib.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/_watcher.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/app.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/app.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/builder/2023.12.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/builder/2024.04.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/builder/2024.10.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/builder/2025.06.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/builder/README.md +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/builder/base-images.json +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/call_graph.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/_download.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/_traceback.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/app.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/config.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/container.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/dict.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/entry_point.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/environment.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/import_refs.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/launch.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/network_file_system.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/profile.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/programs/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/programs/vscode.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/queues.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/run.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/secret.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/token.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/utils.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cli/volume.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/client.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cls.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/cls.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/config.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/container_process.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/container_process.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/dict.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/dict.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/environments.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/environments.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/exception.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/experimental/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/experimental/flash.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/experimental/flash.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/experimental/ipython.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/file_io.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/file_io.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/file_pattern_matcher.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/functions.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/gpu.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/image.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/image.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/io_streams.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/io_streams.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/mount.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/mount.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/network_file_system.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/network_file_system.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/object.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/object.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/output.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/parallel_map.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/parallel_map.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/partial_function.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/partial_function.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/proxy.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/proxy.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/py.typed +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/queue.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/queue.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/retries.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/runner.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/runner.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/running_app.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/schedule.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/scheduler_placement.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/secret.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/secret.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/serving.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/serving.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/snapshot.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/snapshot.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/stream_type.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/token_flow.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/token_flow.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/volume.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal/volume.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal.egg-info/requires.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal.egg-info/top_level.txt +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_docs/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/__init__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/api_grpc.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/options.proto +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/options_grpc.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/options_pb2.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_proto/py.typed +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/modal_version/__main__.py +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/pyproject.toml +0 -0
- {modal-1.1.5.dev34 → modal-1.1.5.dev36}/setup.cfg +0 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
from typing import Optional, Union
|
|
3
3
|
|
|
4
4
|
import typer
|
|
5
|
+
from rich.table import Column
|
|
5
6
|
from rich.text import Text
|
|
6
7
|
|
|
7
8
|
from modal._object import _get_environment_name
|
|
@@ -33,7 +34,12 @@ async def list_(env: Optional[str] = ENV_OPTION, json: bool = False):
|
|
|
33
34
|
api_pb2.ClusterListRequest(environment_name=environment_name)
|
|
34
35
|
)
|
|
35
36
|
|
|
36
|
-
column_names
|
|
37
|
+
column_names: list[Union[Column, str]] = [
|
|
38
|
+
Column("Cluster ID", min_width=25),
|
|
39
|
+
Column("App ID", min_width=25),
|
|
40
|
+
"Start Time",
|
|
41
|
+
"Nodes",
|
|
42
|
+
]
|
|
37
43
|
rows: list[list[Union[Text, str]]] = []
|
|
38
44
|
res.clusters.sort(key=lambda c: c.started_at, reverse=True)
|
|
39
45
|
|
|
@@ -33,7 +33,7 @@ class _Client:
|
|
|
33
33
|
server_url: str,
|
|
34
34
|
client_type: int,
|
|
35
35
|
credentials: typing.Optional[tuple[str, str]],
|
|
36
|
-
version: str = "1.1.5.
|
|
36
|
+
version: str = "1.1.5.dev36",
|
|
37
37
|
):
|
|
38
38
|
"""mdmd:hidden
|
|
39
39
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -164,7 +164,7 @@ class Client:
|
|
|
164
164
|
server_url: str,
|
|
165
165
|
client_type: int,
|
|
166
166
|
credentials: typing.Optional[tuple[str, str]],
|
|
167
|
-
version: str = "1.1.5.
|
|
167
|
+
version: str = "1.1.5.dev36",
|
|
168
168
|
):
|
|
169
169
|
"""mdmd:hidden
|
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -449,7 +449,7 @@ class Function(
|
|
|
449
449
|
|
|
450
450
|
_call_generator: ___call_generator_spec[typing_extensions.Self]
|
|
451
451
|
|
|
452
|
-
class __remote_spec(typing_extensions.Protocol[
|
|
452
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
453
453
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
|
|
454
454
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
455
455
|
...
|
|
@@ -458,7 +458,7 @@ class Function(
|
|
|
458
458
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
459
459
|
...
|
|
460
460
|
|
|
461
|
-
remote: __remote_spec[modal._functions.
|
|
461
|
+
remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
462
462
|
|
|
463
463
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
464
464
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
|
|
@@ -485,7 +485,7 @@ class Function(
|
|
|
485
485
|
"""
|
|
486
486
|
...
|
|
487
487
|
|
|
488
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
|
488
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
489
489
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
490
490
|
"""[Experimental] Calls the function with the given arguments, without waiting for the results.
|
|
491
491
|
|
|
@@ -509,7 +509,7 @@ class Function(
|
|
|
509
509
|
...
|
|
510
510
|
|
|
511
511
|
_experimental_spawn: ___experimental_spawn_spec[
|
|
512
|
-
modal._functions.
|
|
512
|
+
modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
|
|
513
513
|
]
|
|
514
514
|
|
|
515
515
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
|
|
@@ -518,7 +518,7 @@ class Function(
|
|
|
518
518
|
|
|
519
519
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
|
|
520
520
|
|
|
521
|
-
class __spawn_spec(typing_extensions.Protocol[
|
|
521
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
522
522
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
523
523
|
"""Calls the function with the given arguments, without waiting for the results.
|
|
524
524
|
|
|
@@ -539,7 +539,7 @@ class Function(
|
|
|
539
539
|
"""
|
|
540
540
|
...
|
|
541
541
|
|
|
542
|
-
spawn: __spawn_spec[modal._functions.
|
|
542
|
+
spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
543
543
|
|
|
544
544
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
|
|
545
545
|
"""Return the inner Python object wrapped by this Modal Function."""
|
|
@@ -667,19 +667,19 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
667
667
|
return self._tunnels
|
|
668
668
|
|
|
669
669
|
async def create_connect_token(
|
|
670
|
-
self,
|
|
670
|
+
self, user_metadata: Optional[Union[str, dict[str, Any]]] = None
|
|
671
671
|
) -> SandboxConnectCredentials:
|
|
672
672
|
"""Create a token for making HTTP connections to the sandbox.
|
|
673
673
|
|
|
674
|
-
Also accepts an optional
|
|
674
|
+
Also accepts an optional user_metadata string or dict to associate with the token. This metadata
|
|
675
675
|
will be added to the headers by the proxy when forwarding requests to the sandbox."""
|
|
676
|
-
if
|
|
676
|
+
if user_metadata is not None and isinstance(user_metadata, dict):
|
|
677
677
|
try:
|
|
678
|
-
|
|
678
|
+
user_metadata = json.dumps(user_metadata)
|
|
679
679
|
except Exception as e:
|
|
680
|
-
raise InvalidError(f"Failed to serialize
|
|
680
|
+
raise InvalidError(f"Failed to serialize user_metadata: {e}")
|
|
681
681
|
|
|
682
|
-
req = api_pb2.SandboxCreateConnectTokenRequest(sandbox_id=self.object_id,
|
|
682
|
+
req = api_pb2.SandboxCreateConnectTokenRequest(sandbox_id=self.object_id, user_metadata=user_metadata)
|
|
683
683
|
resp = await retry_transient_errors(self._client.stub.SandboxCreateConnectToken, req)
|
|
684
684
|
return SandboxConnectCredentials(resp.url, resp.token)
|
|
685
685
|
|
|
@@ -274,11 +274,11 @@ class _Sandbox(modal._object._Object):
|
|
|
274
274
|
...
|
|
275
275
|
|
|
276
276
|
async def create_connect_token(
|
|
277
|
-
self,
|
|
277
|
+
self, user_metadata: typing.Union[str, dict[str, typing.Any], None] = None
|
|
278
278
|
) -> SandboxConnectCredentials:
|
|
279
279
|
"""Create a token for making HTTP connections to the sandbox.
|
|
280
280
|
|
|
281
|
-
Also accepts an optional
|
|
281
|
+
Also accepts an optional user_metadata string or dict to associate with the token. This metadata
|
|
282
282
|
will be added to the headers by the proxy when forwarding requests to the sandbox.
|
|
283
283
|
"""
|
|
284
284
|
...
|
|
@@ -829,21 +829,21 @@ class Sandbox(modal.object.Object):
|
|
|
829
829
|
|
|
830
830
|
class __create_connect_token_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
831
831
|
def __call__(
|
|
832
|
-
self, /,
|
|
832
|
+
self, /, user_metadata: typing.Union[str, dict[str, typing.Any], None] = None
|
|
833
833
|
) -> SandboxConnectCredentials:
|
|
834
834
|
"""Create a token for making HTTP connections to the sandbox.
|
|
835
835
|
|
|
836
|
-
Also accepts an optional
|
|
836
|
+
Also accepts an optional user_metadata string or dict to associate with the token. This metadata
|
|
837
837
|
will be added to the headers by the proxy when forwarding requests to the sandbox.
|
|
838
838
|
"""
|
|
839
839
|
...
|
|
840
840
|
|
|
841
841
|
async def aio(
|
|
842
|
-
self, /,
|
|
842
|
+
self, /, user_metadata: typing.Union[str, dict[str, typing.Any], None] = None
|
|
843
843
|
) -> SandboxConnectCredentials:
|
|
844
844
|
"""Create a token for making HTTP connections to the sandbox.
|
|
845
845
|
|
|
846
|
-
Also accepts an optional
|
|
846
|
+
Also accepts an optional user_metadata string or dict to associate with the token. This metadata
|
|
847
847
|
will be added to the headers by the proxy when forwarding requests to the sandbox.
|
|
848
848
|
"""
|
|
849
849
|
...
|