modal 1.2.2.dev24__tar.gz → 1.2.2.dev26__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.2.dev24 → modal-1.2.2.dev26}/PKG-INFO +1 -1
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/client.pyi +2 -2
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/experimental/flash.py +2 -3
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/functions.pyi +6 -6
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/runner.py +13 -5
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/runner.pyi +2 -1
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_version/__init__.py +1 -1
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/LICENSE +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/README.md +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/__main__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_billing.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_clustered_functions.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_clustered_functions.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_container_entrypoint.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_functions.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_grpc_client.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_ipython.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_location.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_object.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_output.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_partial_function.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_pty.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_resolver.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_resources.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_runtime/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_runtime/asgi.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_runtime/execution_context.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_runtime/telemetry.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_serialization.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_traceback.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_tunnel.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_tunnel.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_type_manager.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/app_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/async_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/blob_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/deprecation.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/docker_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/function_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/git_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/hash_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/http_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/logger.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/mount_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/name_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/package_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/shell_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_utils/time_utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_vendor/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_vendor/tblib.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/_watcher.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/app.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/app.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/billing.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/builder/2023.12.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/builder/2024.04.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/builder/2024.10.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/builder/2025.06.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/builder/README.md +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/builder/base-images.json +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/call_graph.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/_download.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/_traceback.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/app.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/cluster.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/config.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/container.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/dict.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/entry_point.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/environment.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/import_refs.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/launch.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/network_file_system.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/profile.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/programs/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/programs/vscode.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/queues.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/run.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/secret.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/token.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/utils.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cli/volume.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/client.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cls.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/cls.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/config.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/container_process.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/container_process.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/dict.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/dict.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/environments.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/environments.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/exception.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/experimental/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/experimental/flash.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/experimental/ipython.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/file_io.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/file_io.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/file_pattern_matcher.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/functions.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/gpu.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/image.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/image.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/io_streams.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/io_streams.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/mount.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/mount.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/network_file_system.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/network_file_system.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/object.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/object.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/output.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/parallel_map.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/parallel_map.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/partial_function.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/partial_function.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/proxy.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/proxy.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/py.typed +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/queue.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/queue.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/retries.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/running_app.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/sandbox.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/sandbox.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/schedule.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/scheduler_placement.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/secret.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/secret.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/serving.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/serving.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/snapshot.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/snapshot.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/stream_type.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/token_flow.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/token_flow.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/volume.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal/volume.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal.egg-info/requires.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal.egg-info/top_level.txt +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_docs/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/__init__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/api.proto +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/api_grpc.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/api_pb2.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/py.typed +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/sandbox_router.proto +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/sandbox_router_grpc.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/sandbox_router_pb2.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/sandbox_router_pb2.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/task_command_router.proto +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/modal_version/__main__.py +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/pyproject.toml +0 -0
- {modal-1.2.2.dev24 → modal-1.2.2.dev26}/setup.cfg +0 -0
|
@@ -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.2.2.
|
|
36
|
+
version: str = "1.2.2.dev26",
|
|
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.2.2.
|
|
167
|
+
version: str = "1.2.2.dev26",
|
|
168
168
|
):
|
|
169
169
|
"""mdmd:hidden
|
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -112,6 +112,7 @@ class _FlashManager:
|
|
|
112
112
|
port=port,
|
|
113
113
|
),
|
|
114
114
|
timeout=10,
|
|
115
|
+
retry=None,
|
|
115
116
|
)
|
|
116
117
|
self.num_failures = 0
|
|
117
118
|
if first_registration:
|
|
@@ -145,9 +146,7 @@ class _FlashManager:
|
|
|
145
146
|
|
|
146
147
|
async def stop(self):
|
|
147
148
|
self.heartbeat_task.cancel()
|
|
148
|
-
await self.client.stub.FlashContainerDeregister(
|
|
149
|
-
api_pb2.FlashContainerDeregisterRequest(),
|
|
150
|
-
)
|
|
149
|
+
await self.client.stub.FlashContainerDeregister(api_pb2.FlashContainerDeregisterRequest())
|
|
151
150
|
|
|
152
151
|
self.stopped = True
|
|
153
152
|
logger.warning(f"[Modal Flash] No longer accepting new requests on {self.tunnel.url}.")
|
|
@@ -401,7 +401,7 @@ class Function(
|
|
|
401
401
|
|
|
402
402
|
_call_generator: ___call_generator_spec[typing_extensions.Self]
|
|
403
403
|
|
|
404
|
-
class __remote_spec(typing_extensions.Protocol[
|
|
404
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
405
405
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
|
|
406
406
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
407
407
|
...
|
|
@@ -410,7 +410,7 @@ class Function(
|
|
|
410
410
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
411
411
|
...
|
|
412
412
|
|
|
413
|
-
remote: __remote_spec[modal._functions.
|
|
413
|
+
remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
414
414
|
|
|
415
415
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
416
416
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
|
|
@@ -437,7 +437,7 @@ class Function(
|
|
|
437
437
|
"""
|
|
438
438
|
...
|
|
439
439
|
|
|
440
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
|
440
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
441
441
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
442
442
|
"""[Experimental] Calls the function with the given arguments, without waiting for the results.
|
|
443
443
|
|
|
@@ -461,7 +461,7 @@ class Function(
|
|
|
461
461
|
...
|
|
462
462
|
|
|
463
463
|
_experimental_spawn: ___experimental_spawn_spec[
|
|
464
|
-
modal._functions.
|
|
464
|
+
modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
|
|
465
465
|
]
|
|
466
466
|
|
|
467
467
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
|
|
@@ -470,7 +470,7 @@ class Function(
|
|
|
470
470
|
|
|
471
471
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
|
|
472
472
|
|
|
473
|
-
class __spawn_spec(typing_extensions.Protocol[
|
|
473
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
474
474
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
475
475
|
"""Calls the function with the given arguments, without waiting for the results.
|
|
476
476
|
|
|
@@ -491,7 +491,7 @@ class Function(
|
|
|
491
491
|
"""
|
|
492
492
|
...
|
|
493
493
|
|
|
494
|
-
spawn: __spawn_spec[modal._functions.
|
|
494
|
+
spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
495
495
|
|
|
496
496
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
|
|
497
497
|
"""Return the inner Python object wrapped by this Modal Function."""
|
|
@@ -76,6 +76,7 @@ async def _init_local_app_existing(client: _Client, existing_app_id: str, enviro
|
|
|
76
76
|
async def _init_local_app_new(
|
|
77
77
|
client: _Client,
|
|
78
78
|
description: str,
|
|
79
|
+
tags: dict[str, str],
|
|
79
80
|
app_state: int, # ValueType
|
|
80
81
|
environment_name: str = "",
|
|
81
82
|
interactive: bool = False,
|
|
@@ -84,6 +85,7 @@ async def _init_local_app_new(
|
|
|
84
85
|
description=description,
|
|
85
86
|
environment_name=environment_name,
|
|
86
87
|
app_state=app_state, # type: ignore
|
|
88
|
+
tags=tags,
|
|
87
89
|
)
|
|
88
90
|
app_resp, _ = await gather_cancel_on_exc( # TODO: use TaskGroup?
|
|
89
91
|
client.stub.AppCreate(app_req),
|
|
@@ -102,6 +104,7 @@ async def _init_local_app_new(
|
|
|
102
104
|
async def _init_local_app_from_name(
|
|
103
105
|
client: _Client,
|
|
104
106
|
name: str,
|
|
107
|
+
tags: dict[str, str],
|
|
105
108
|
environment_name: str = "",
|
|
106
109
|
) -> RunningApp:
|
|
107
110
|
# Look up any existing deployment
|
|
@@ -117,7 +120,7 @@ async def _init_local_app_from_name(
|
|
|
117
120
|
return await _init_local_app_existing(client, existing_app_id, environment_name)
|
|
118
121
|
else:
|
|
119
122
|
return await _init_local_app_new(
|
|
120
|
-
client, name, api_pb2.APP_STATE_INITIALIZING, environment_name=environment_name
|
|
123
|
+
client, name, tags, api_pb2.APP_STATE_INITIALIZING, environment_name=environment_name
|
|
121
124
|
)
|
|
122
125
|
|
|
123
126
|
|
|
@@ -295,9 +298,12 @@ async def _run_app(
|
|
|
295
298
|
msg = "Interactive mode requires output to be enabled. (Use the the `modal.enable_output()` context manager.)"
|
|
296
299
|
raise InvalidError(msg)
|
|
297
300
|
|
|
301
|
+
local_app_state = app._local_state
|
|
302
|
+
|
|
298
303
|
running_app: RunningApp = await _init_local_app_new(
|
|
299
304
|
client,
|
|
300
305
|
app.description or "",
|
|
306
|
+
local_app_state.tags,
|
|
301
307
|
environment_name=environment_name or "",
|
|
302
308
|
app_state=app_state,
|
|
303
309
|
interactive=interactive,
|
|
@@ -333,7 +339,6 @@ async def _run_app(
|
|
|
333
339
|
get_app_logs_loop(client, output_mgr, app_id=running_app.app_id, app_logs_url=running_app.app_logs_url)
|
|
334
340
|
)
|
|
335
341
|
|
|
336
|
-
local_app_state = app._local_state
|
|
337
342
|
try:
|
|
338
343
|
# Create all members
|
|
339
344
|
await _create_all_objects(client, running_app, local_app_state, environment_name)
|
|
@@ -521,12 +526,15 @@ async def _deploy_app(
|
|
|
521
526
|
if client is None:
|
|
522
527
|
client = await _Client.from_env()
|
|
523
528
|
|
|
529
|
+
local_app_state = app._local_state
|
|
524
530
|
t0 = time.time()
|
|
525
531
|
|
|
526
532
|
# Get git information to track deployment history
|
|
527
533
|
commit_info_task = asyncio.create_task(get_git_commit_info())
|
|
528
534
|
|
|
529
|
-
running_app: RunningApp = await _init_local_app_from_name(
|
|
535
|
+
running_app: RunningApp = await _init_local_app_from_name(
|
|
536
|
+
client, name, local_app_state.tags, environment_name=environment_name
|
|
537
|
+
)
|
|
530
538
|
|
|
531
539
|
async with TaskContext(0) as tc:
|
|
532
540
|
# Start heartbeats loop to keep the client alive
|
|
@@ -540,7 +548,7 @@ async def _deploy_app(
|
|
|
540
548
|
await _create_all_objects(
|
|
541
549
|
client,
|
|
542
550
|
running_app,
|
|
543
|
-
|
|
551
|
+
local_app_state,
|
|
544
552
|
environment_name=environment_name,
|
|
545
553
|
)
|
|
546
554
|
|
|
@@ -554,7 +562,7 @@ async def _deploy_app(
|
|
|
554
562
|
client,
|
|
555
563
|
running_app,
|
|
556
564
|
api_pb2.APP_STATE_DEPLOYED,
|
|
557
|
-
|
|
565
|
+
local_app_state,
|
|
558
566
|
name=name,
|
|
559
567
|
deployment_tag=tag,
|
|
560
568
|
commit_info=commit_info,
|
|
@@ -16,12 +16,13 @@ async def _init_local_app_existing(
|
|
|
16
16
|
async def _init_local_app_new(
|
|
17
17
|
client: modal.client._Client,
|
|
18
18
|
description: str,
|
|
19
|
+
tags: dict[str, str],
|
|
19
20
|
app_state: int,
|
|
20
21
|
environment_name: str = "",
|
|
21
22
|
interactive: bool = False,
|
|
22
23
|
) -> modal.running_app.RunningApp: ...
|
|
23
24
|
async def _init_local_app_from_name(
|
|
24
|
-
client: modal.client._Client, name: str, environment_name: str = ""
|
|
25
|
+
client: modal.client._Client, name: str, tags: dict[str, str], environment_name: str = ""
|
|
25
26
|
) -> modal.running_app.RunningApp: ...
|
|
26
27
|
async def _create_all_objects(
|
|
27
28
|
client: modal.client._Client,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|