modal 1.2.2.dev25__tar.gz → 1.2.2.dev27__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.dev25 → modal-1.2.2.dev27}/PKG-INFO +1 -1
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/client.pyi +2 -2
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/runner.py +13 -5
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/runner.pyi +2 -1
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/api.proto +10 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/api_pb2.py +841 -838
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/api_pb2.pyi +25 -2
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_version/__init__.py +1 -1
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/LICENSE +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/README.md +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/__main__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_billing.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_clustered_functions.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_clustered_functions.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_container_entrypoint.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_functions.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_grpc_client.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_ipython.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_location.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_object.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_output.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_partial_function.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_pty.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_resolver.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_resources.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_runtime/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_runtime/asgi.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_runtime/execution_context.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_runtime/telemetry.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_serialization.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_traceback.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_tunnel.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_tunnel.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_type_manager.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/app_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/async_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/blob_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/deprecation.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/docker_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/function_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/git_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/hash_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/http_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/logger.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/mount_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/name_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/package_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/shell_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_utils/time_utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_vendor/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_vendor/tblib.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/_watcher.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/app.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/app.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/billing.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/builder/2023.12.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/builder/2024.04.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/builder/2024.10.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/builder/2025.06.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/builder/README.md +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/builder/base-images.json +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/call_graph.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/_download.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/_traceback.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/app.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/cluster.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/config.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/container.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/dict.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/entry_point.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/environment.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/import_refs.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/launch.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/network_file_system.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/profile.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/programs/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/programs/vscode.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/queues.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/run.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/secret.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/token.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/utils.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cli/volume.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/client.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cls.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/cls.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/config.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/container_process.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/container_process.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/dict.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/dict.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/environments.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/environments.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/exception.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/experimental/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/experimental/flash.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/experimental/flash.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/experimental/ipython.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/file_io.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/file_io.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/file_pattern_matcher.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/functions.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/functions.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/gpu.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/image.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/image.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/io_streams.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/io_streams.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/mount.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/mount.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/network_file_system.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/network_file_system.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/object.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/object.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/output.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/parallel_map.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/parallel_map.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/partial_function.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/partial_function.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/proxy.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/proxy.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/py.typed +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/queue.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/queue.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/retries.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/running_app.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/sandbox.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/sandbox.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/schedule.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/scheduler_placement.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/secret.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/secret.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/serving.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/serving.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/snapshot.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/snapshot.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/stream_type.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/token_flow.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/token_flow.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/volume.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal/volume.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal.egg-info/requires.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal.egg-info/top_level.txt +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_docs/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/__init__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/api_grpc.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/py.typed +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/sandbox_router.proto +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/sandbox_router_grpc.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/sandbox_router_pb2.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/sandbox_router_pb2.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/task_command_router.proto +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/modal_version/__main__.py +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/pyproject.toml +0 -0
- {modal-1.2.2.dev25 → modal-1.2.2.dev27}/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.dev27",
|
|
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.dev27",
|
|
168
168
|
):
|
|
169
169
|
"""mdmd:hidden
|
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -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,
|
|
@@ -849,6 +849,12 @@ message CloudBucketMount {
|
|
|
849
849
|
GCP = 3;
|
|
850
850
|
}
|
|
851
851
|
|
|
852
|
+
enum MetadataTTLType {
|
|
853
|
+
METADATA_TTL_TYPE_UNSPECIFIED = 0;
|
|
854
|
+
METADATA_TTL_TYPE_MINIMAL = 1;
|
|
855
|
+
METADATA_TTL_TYPE_INDEFINITE = 2;
|
|
856
|
+
}
|
|
857
|
+
|
|
852
858
|
string bucket_name = 1;
|
|
853
859
|
string mount_path = 2;
|
|
854
860
|
string credentials_secret_id = 3;
|
|
@@ -859,6 +865,10 @@ message CloudBucketMount {
|
|
|
859
865
|
optional string key_prefix = 8;
|
|
860
866
|
optional string oidc_auth_role_arn = 9;
|
|
861
867
|
bool force_path_style = 10;
|
|
868
|
+
oneof metadata_ttl_oneof {
|
|
869
|
+
MetadataTTLType metadata_ttl_type = 11;
|
|
870
|
+
uint64 metadata_ttl_seconds = 12;
|
|
871
|
+
}
|
|
862
872
|
}
|
|
863
873
|
|
|
864
874
|
message ClusterGetRequest {
|