modal 1.2.5.dev10__tar.gz → 1.2.5.dev12__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-1.2.5.dev10 → modal-1.2.5.dev12}/PKG-INFO +1 -1
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/client.pyi +2 -2
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/dict.py +31 -6
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/dict.pyi +2 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/functions.pyi +6 -6
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_version/__init__.py +1 -1
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/LICENSE +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/README.md +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/__main__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_billing.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_clustered_functions.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_clustered_functions.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_container_entrypoint.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_functions.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_grpc_client.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_ipython.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_load_context.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_location.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_object.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_output.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_partial_function.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_pty.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_resolver.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_resources.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/asgi.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/execution_context.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/telemetry.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_serialization.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_traceback.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_tunnel.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_tunnel.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_type_manager.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/app_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/async_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/blob_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/deprecation.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/docker_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/function_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/git_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/hash_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/http_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/logger.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/mount_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/name_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/package_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/shell_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_utils/time_utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_vendor/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_vendor/tblib.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/_watcher.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/app.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/app.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/billing.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/builder/2023.12.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/builder/2024.04.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/builder/2024.10.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/builder/2025.06.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/builder/README.md +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/builder/base-images.json +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/call_graph.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/_download.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/_traceback.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/app.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/cluster.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/config.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/container.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/dict.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/entry_point.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/environment.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/import_refs.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/launch.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/network_file_system.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/profile.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/programs/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/programs/vscode.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/queues.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/run.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/secret.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/shell.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/token.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/utils.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cli/volume.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/client.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cls.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/cls.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/config.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/container_process.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/container_process.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/environments.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/environments.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/exception.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/experimental/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/experimental/flash.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/experimental/flash.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/experimental/ipython.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/file_io.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/file_io.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/file_pattern_matcher.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/functions.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/gpu.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/image.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/image.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/io_streams.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/io_streams.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/mount.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/mount.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/network_file_system.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/network_file_system.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/object.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/object.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/output.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/parallel_map.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/parallel_map.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/partial_function.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/partial_function.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/proxy.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/proxy.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/py.typed +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/queue.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/queue.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/retries.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/runner.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/runner.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/running_app.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/sandbox.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/sandbox.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/schedule.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/scheduler_placement.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/secret.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/secret.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/serving.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/serving.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/snapshot.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/snapshot.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/stream_type.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/token_flow.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/token_flow.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/volume.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal/volume.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal.egg-info/requires.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal.egg-info/top_level.txt +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_docs/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/__init__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/api.proto +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/api_grpc.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/api_pb2.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/py.typed +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/sandbox_router.proto +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/sandbox_router_grpc.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/sandbox_router_pb2.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/sandbox_router_pb2.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/task_command_router.proto +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/modal_version/__main__.py +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/pyproject.toml +0 -0
- {modal-1.2.5.dev10 → modal-1.2.5.dev12}/setup.cfg +0 -0
|
@@ -32,7 +32,7 @@ class _Client:
|
|
|
32
32
|
server_url: str,
|
|
33
33
|
client_type: int,
|
|
34
34
|
credentials: typing.Optional[tuple[str, str]],
|
|
35
|
-
version: str = "1.2.5.
|
|
35
|
+
version: str = "1.2.5.dev12",
|
|
36
36
|
):
|
|
37
37
|
"""mdmd:hidden
|
|
38
38
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -163,7 +163,7 @@ class Client:
|
|
|
163
163
|
server_url: str,
|
|
164
164
|
client_type: int,
|
|
165
165
|
credentials: typing.Optional[tuple[str, str]],
|
|
166
|
-
version: str = "1.2.5.
|
|
166
|
+
version: str = "1.2.5.dev12",
|
|
167
167
|
):
|
|
168
168
|
"""mdmd:hidden
|
|
169
169
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -28,7 +28,7 @@ from ._utils.name_utils import check_object_name
|
|
|
28
28
|
from ._utils.time_utils import as_timestamp, timestamp_to_localized_dt
|
|
29
29
|
from .client import _Client
|
|
30
30
|
from .config import logger
|
|
31
|
-
from .exception import AlreadyExistsError, InvalidError, NotFoundError, RequestSizeError
|
|
31
|
+
from .exception import AlreadyExistsError, DeserializationError, InvalidError, NotFoundError, RequestSizeError
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
class _NoDefaultSentinel:
|
|
@@ -43,6 +43,25 @@ def _serialize_dict(data):
|
|
|
43
43
|
return [api_pb2.DictEntry(key=serialize(k), value=serialize(v)) for k, v in data.items()]
|
|
44
44
|
|
|
45
45
|
|
|
46
|
+
def _deserialize_dict_key(dict: "_Dict", data: bytes) -> Any:
|
|
47
|
+
try:
|
|
48
|
+
return deserialize(data, dict._client)
|
|
49
|
+
except DeserializationError as exc:
|
|
50
|
+
dict_identifier = f"Dict '{dict.name}'" if dict.name else f"ephemeral Dict {dict.object_id}"
|
|
51
|
+
raise DeserializationError(f"Failed to deserialize a key from {dict_identifier}: {exc}") from exc
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _deserialize_dict_value(dict: "_Dict", data: bytes, key: Any = _NO_DEFAULT) -> Any:
|
|
55
|
+
try:
|
|
56
|
+
return deserialize(data, dict._client)
|
|
57
|
+
except DeserializationError as exc:
|
|
58
|
+
key_identifier = "" if key is _NO_DEFAULT else f" for key {key!r}"
|
|
59
|
+
dict_identifier = f"Dict '{dict.name}'" if dict.name else f"ephemeral Dict {dict.object_id}"
|
|
60
|
+
raise DeserializationError(
|
|
61
|
+
f"Failed to deserialize value{key_identifier} from {dict_identifier}: {exc}"
|
|
62
|
+
) from exc
|
|
63
|
+
|
|
64
|
+
|
|
46
65
|
@dataclass
|
|
47
66
|
class DictInfo:
|
|
48
67
|
"""Information about a Dict object."""
|
|
@@ -439,7 +458,7 @@ class _Dict(_Object, type_prefix="di"):
|
|
|
439
458
|
resp = await self._client.stub.DictGet(req)
|
|
440
459
|
if not resp.found:
|
|
441
460
|
return default
|
|
442
|
-
return
|
|
461
|
+
return _deserialize_dict_value(self, resp.value, key)
|
|
443
462
|
|
|
444
463
|
@live_method
|
|
445
464
|
async def contains(self, key: Any) -> bool:
|
|
@@ -530,7 +549,7 @@ class _Dict(_Object, type_prefix="di"):
|
|
|
530
549
|
if default is not _NO_DEFAULT:
|
|
531
550
|
return default
|
|
532
551
|
raise KeyError(f"{key} not in dict {self.object_id}")
|
|
533
|
-
return
|
|
552
|
+
return _deserialize_dict_value(self, resp.value, key)
|
|
534
553
|
|
|
535
554
|
@live_method
|
|
536
555
|
async def __delitem__(self, key: Any) -> Any:
|
|
@@ -557,7 +576,7 @@ class _Dict(_Object, type_prefix="di"):
|
|
|
557
576
|
"""
|
|
558
577
|
req = api_pb2.DictContentsRequest(dict_id=self.object_id, keys=True)
|
|
559
578
|
async for resp in self._client.stub.DictContents.unary_stream(req):
|
|
560
|
-
yield
|
|
579
|
+
yield _deserialize_dict_key(self, resp.key)
|
|
561
580
|
|
|
562
581
|
@live_method_gen
|
|
563
582
|
async def values(self) -> AsyncIterator[Any]:
|
|
@@ -568,7 +587,11 @@ class _Dict(_Object, type_prefix="di"):
|
|
|
568
587
|
"""
|
|
569
588
|
req = api_pb2.DictContentsRequest(dict_id=self.object_id, values=True)
|
|
570
589
|
async for resp in self._client.stub.DictContents.unary_stream(req):
|
|
571
|
-
|
|
590
|
+
try:
|
|
591
|
+
key_deser = _deserialize_dict_key(self, resp.key)
|
|
592
|
+
except DeserializationError:
|
|
593
|
+
key_deser = _NO_DEFAULT
|
|
594
|
+
yield _deserialize_dict_value(self, resp.value, key_deser)
|
|
572
595
|
|
|
573
596
|
@live_method_gen
|
|
574
597
|
async def items(self) -> AsyncIterator[tuple[Any, Any]]:
|
|
@@ -579,7 +602,9 @@ class _Dict(_Object, type_prefix="di"):
|
|
|
579
602
|
"""
|
|
580
603
|
req = api_pb2.DictContentsRequest(dict_id=self.object_id, keys=True, values=True)
|
|
581
604
|
async for resp in self._client.stub.DictContents.unary_stream(req):
|
|
582
|
-
|
|
605
|
+
key_deser = _deserialize_dict_key(self, resp.key)
|
|
606
|
+
value_deser = _deserialize_dict_value(self, resp.value, key_deser)
|
|
607
|
+
yield (key_deser, value_deser)
|
|
583
608
|
|
|
584
609
|
|
|
585
610
|
Dict = synchronize_api(_Dict)
|
|
@@ -18,6 +18,8 @@ class _NoDefaultSentinel:
|
|
|
18
18
|
_NO_DEFAULT: _NoDefaultSentinel
|
|
19
19
|
|
|
20
20
|
def _serialize_dict(data): ...
|
|
21
|
+
def _deserialize_dict_key(dict: _Dict, data: bytes) -> typing.Any: ...
|
|
22
|
+
def _deserialize_dict_value(dict: _Dict, data: bytes, key: typing.Any = ...) -> typing.Any: ...
|
|
21
23
|
|
|
22
24
|
class DictInfo:
|
|
23
25
|
"""Information about a Dict object."""
|
|
@@ -409,7 +409,7 @@ class Function(
|
|
|
409
409
|
|
|
410
410
|
_call_generator: ___call_generator_spec[typing_extensions.Self]
|
|
411
411
|
|
|
412
|
-
class __remote_spec(typing_extensions.Protocol[
|
|
412
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
413
413
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
|
|
414
414
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
415
415
|
...
|
|
@@ -418,7 +418,7 @@ class Function(
|
|
|
418
418
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
419
419
|
...
|
|
420
420
|
|
|
421
|
-
remote: __remote_spec[modal._functions.
|
|
421
|
+
remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
422
422
|
|
|
423
423
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
424
424
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
|
|
@@ -445,7 +445,7 @@ class Function(
|
|
|
445
445
|
"""
|
|
446
446
|
...
|
|
447
447
|
|
|
448
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
|
448
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
449
449
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
450
450
|
"""[Experimental] Calls the function with the given arguments, without waiting for the results.
|
|
451
451
|
|
|
@@ -469,7 +469,7 @@ class Function(
|
|
|
469
469
|
...
|
|
470
470
|
|
|
471
471
|
_experimental_spawn: ___experimental_spawn_spec[
|
|
472
|
-
modal._functions.
|
|
472
|
+
modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
|
|
473
473
|
]
|
|
474
474
|
|
|
475
475
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
|
|
@@ -478,7 +478,7 @@ class Function(
|
|
|
478
478
|
|
|
479
479
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
|
|
480
480
|
|
|
481
|
-
class __spawn_spec(typing_extensions.Protocol[
|
|
481
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
482
482
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
483
483
|
"""Calls the function with the given arguments, without waiting for the results.
|
|
484
484
|
|
|
@@ -499,7 +499,7 @@ class Function(
|
|
|
499
499
|
"""
|
|
500
500
|
...
|
|
501
501
|
|
|
502
|
-
spawn: __spawn_spec[modal._functions.
|
|
502
|
+
spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
503
503
|
|
|
504
504
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
|
|
505
505
|
"""Return the inner Python object wrapped by this Modal Function."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|