modal 1.5.1.dev0__tar.gz → 1.5.1.dev2__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.5.1.dev0 → modal-1.5.1.dev2}/PKG-INFO +1 -1
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_server.py +10 -8
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/shell.py +6 -13
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/client.pyi +2 -2
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/sandbox.py +16 -7
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/sandbox.pyi +20 -14
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/server.pyi +6 -4
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/api_pb2.py +1034 -1034
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/api_pb2.pyi +7 -7
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/task_command_router_grpc.py +16 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/task_command_router_pb2.py +99 -79
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/task_command_router_pb2.pyi +31 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/task_command_router_pb2_grpc.py +33 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/task_command_router_pb2_grpc.pyi +10 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_version/__init__.py +1 -1
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/pyproject.toml +1 -5
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/LICENSE +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/README.md +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/__main__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_billing.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_clustered_functions.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_clustered_functions.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_container_entrypoint.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_environments.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_function_variants.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_functions.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_grpc_client.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_image.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_ipython.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_load_context.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_location.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_logs.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_object.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_output/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_output/manager.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_output/pty.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_output/rich.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_output/status.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_partial_function.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_resolver.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_resources.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/asgi.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/execution_context.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/task_lifecycle_manager.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/telemetry.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_serialization.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_traceback.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_tunnel.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_tunnel.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_type_manager.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/app_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/async_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/blob_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/browser_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/deprecation.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/docker_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/function_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/git_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/hash_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/http_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/logger.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/mount_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/name_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/package_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/sandbox_fs_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/shell_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_utils/time_utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_vendor/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_vendor/tblib.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_vendor/version.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_watcher.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/_workspace.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/app.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/app.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/billing.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/builder/2023.12.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/builder/2024.04.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/builder/2024.10.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/builder/2025.06.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/builder/README.md +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/builder/base-images.json +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/call_graph.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/_download.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/_help.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/_traceback.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/app.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/billing.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/bootstrap.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/changelog.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/cluster.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/config.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/container.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/dashboard.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/dict.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/entry_point.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/environment.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/image.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/import_refs.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/launch.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/logo.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/network_file_system.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/profile.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/programs/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/programs/vscode.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/queues.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/run.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/secret.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/selector.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/skills.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/token.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/utils.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cli/volume.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/client.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cls.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/cls.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/config.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/container_process.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/container_process.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/dict.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/dict.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/environments.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/environments.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/exception.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/experimental/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/experimental/flash.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/experimental/flash.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/experimental/ipython.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/file_io.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/file_io.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/file_pattern_matcher.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/functions.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/functions.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/image.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/image.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/io_streams.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/io_streams.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/mount.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/mount.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/network_file_system.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/network_file_system.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/object.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/object.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/output.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/parallel_map.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/parallel_map.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/partial_function.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/partial_function.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/proxy.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/proxy.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/py.typed +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/queue.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/queue.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/retries.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/runner.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/runner.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/running_app.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/sandbox_fs.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/sandbox_fs.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/schedule.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/scheduler_placement.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/secret.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/secret.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/server.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/serving.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/serving.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/skills/modal/SKILL.md +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/snapshot.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/snapshot.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/stream_type.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/token_flow.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/token_flow.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/volume.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/volume.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/workspace.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal/workspace.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal.egg-info/requires.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal.egg-info/top_level.txt +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_docs/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_docs/gen_cli_docs_main.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_docs/gen_reference_docs_main.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_docs/mdmd/types.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/__init__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/api_grpc.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_proto/py.typed +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/modal_version/__main__.py +0 -0
- {modal-1.5.1.dev0 → modal-1.5.1.dev2}/setup.cfg +0 -0
|
@@ -72,6 +72,10 @@ class _Server:
|
|
|
72
72
|
def _get_service_function(self) -> _Function:
|
|
73
73
|
return self._service_function
|
|
74
74
|
|
|
75
|
+
@property
|
|
76
|
+
def object_id(self) -> str:
|
|
77
|
+
return self._service_function.object_id
|
|
78
|
+
|
|
75
79
|
@staticmethod
|
|
76
80
|
def _extract_user_cls(wrapped_user_cls: "type | _PartialFunction") -> type:
|
|
77
81
|
if isinstance(wrapped_user_cls, _PartialFunction):
|
|
@@ -83,14 +87,12 @@ class _Server:
|
|
|
83
87
|
# ============ Live Methods ============
|
|
84
88
|
|
|
85
89
|
@live_method
|
|
86
|
-
async def
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
for url in await self._get_service_function()._experimental_get_flash_urls() or []
|
|
93
|
-
}
|
|
90
|
+
async def get_url(self) -> str | None:
|
|
91
|
+
urls = await self._get_service_function()._experimental_get_flash_urls()
|
|
92
|
+
# Return the first URL if it exists. Servers should only have one URL
|
|
93
|
+
# since they only have one region.
|
|
94
|
+
url = urls[0] if urls else None
|
|
95
|
+
return url
|
|
94
96
|
|
|
95
97
|
@live_method
|
|
96
98
|
async def update_autoscaler(
|
|
@@ -60,20 +60,13 @@ def _passed_forbidden_args(
|
|
|
60
60
|
return passed_forbidden
|
|
61
61
|
|
|
62
62
|
|
|
63
|
-
def _parse_experimental_options(options: Iterable[str]) -> dict[str,
|
|
64
|
-
parsed: dict[str,
|
|
63
|
+
def _parse_experimental_options(options: Iterable[str]) -> dict[str, str]:
|
|
64
|
+
parsed: dict[str, str] = {}
|
|
65
65
|
for option in options:
|
|
66
66
|
key, sep, raw_value = option.partition("=")
|
|
67
67
|
if not key or not sep:
|
|
68
68
|
raise click.BadParameter("must use KEY=VALUE")
|
|
69
|
-
|
|
70
|
-
value = raw_value.lower()
|
|
71
|
-
if value in {"1", "true"}:
|
|
72
|
-
parsed[key] = True
|
|
73
|
-
elif value in {"0", "false"}:
|
|
74
|
-
parsed[key] = False
|
|
75
|
-
else:
|
|
76
|
-
raise click.BadParameter("BOOL must be one of true, false, 1, or 0")
|
|
69
|
+
parsed[key] = raw_value
|
|
77
70
|
return parsed
|
|
78
71
|
|
|
79
72
|
|
|
@@ -85,7 +78,7 @@ def _is_valid_modal_id(ref: str, prefix: str) -> bool:
|
|
|
85
78
|
def _parse_sandbox_container_ref(ref: str) -> tuple[str, str | None]:
|
|
86
79
|
"""Parse a sandbox:container reference into (sandbox_id, container_name).
|
|
87
80
|
|
|
88
|
-
Supports the pattern `sb-xyz:container_name` for accessing sandbox
|
|
81
|
+
Supports the pattern `sb-xyz:container_name` for accessing sandbox sidecars.
|
|
89
82
|
Returns (ref, None) if no container name is specified.
|
|
90
83
|
"""
|
|
91
84
|
if _is_valid_modal_id(ref, "sb-"):
|
|
@@ -200,7 +193,7 @@ def _start_shell_from_function_spec(
|
|
|
200
193
|
timeout: int,
|
|
201
194
|
function_spec: _FunctionSpec,
|
|
202
195
|
pty: bool,
|
|
203
|
-
experimental_options: dict[str,
|
|
196
|
+
experimental_options: dict[str, str],
|
|
204
197
|
) -> None:
|
|
205
198
|
interactive_shell(
|
|
206
199
|
app,
|
|
@@ -238,7 +231,7 @@ def _start_shell_from_image(
|
|
|
238
231
|
cloud: str | None,
|
|
239
232
|
region: str | None,
|
|
240
233
|
pty: bool,
|
|
241
|
-
experimental_options: dict[str,
|
|
234
|
+
experimental_options: dict[str, str],
|
|
242
235
|
) -> None:
|
|
243
236
|
volumes = {f"/mnt/{vol}": Volume.from_name(vol) for vol in volume}
|
|
244
237
|
secrets = [Secret.from_name(s) for s in secret]
|
|
@@ -35,7 +35,7 @@ class _Client:
|
|
|
35
35
|
server_url: str,
|
|
36
36
|
client_type: int,
|
|
37
37
|
credentials: typing.Optional[tuple[str, str]],
|
|
38
|
-
version: str = "1.5.1.
|
|
38
|
+
version: str = "1.5.1.dev2",
|
|
39
39
|
):
|
|
40
40
|
"""mdmd:hidden
|
|
41
41
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -205,7 +205,7 @@ class Client:
|
|
|
205
205
|
server_url: str,
|
|
206
206
|
client_type: int,
|
|
207
207
|
credentials: typing.Optional[tuple[str, str]],
|
|
208
|
-
version: str = "1.5.1.
|
|
208
|
+
version: str = "1.5.1.dev2",
|
|
209
209
|
):
|
|
210
210
|
"""mdmd:hidden
|
|
211
211
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -352,7 +352,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
352
352
|
unencrypted_ports: Sequence[int] = [],
|
|
353
353
|
proxy: _Proxy | None = None,
|
|
354
354
|
readiness_probe: Probe | None = None,
|
|
355
|
-
experimental_options: dict[str,
|
|
355
|
+
experimental_options: dict[str, Any] | None = None,
|
|
356
356
|
tags: dict[str, str] | None = None,
|
|
357
357
|
enable_snapshot: bool = False,
|
|
358
358
|
verbose: bool = False,
|
|
@@ -470,7 +470,9 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
470
470
|
enable_snapshot=enable_snapshot,
|
|
471
471
|
verbose=verbose,
|
|
472
472
|
name=name,
|
|
473
|
-
|
|
473
|
+
experimental_options_v2=(
|
|
474
|
+
{k: str(v) for k, v in experimental_options.items()} if experimental_options else None
|
|
475
|
+
),
|
|
474
476
|
custom_domain=custom_domain,
|
|
475
477
|
include_oidc_identity_token=include_oidc_identity_token,
|
|
476
478
|
inbound_cidr_allowlist=list(inbound_cidr_allowlist) if inbound_cidr_allowlist is not None else [],
|
|
@@ -525,7 +527,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
525
527
|
include_oidc_identity_token: bool = False,
|
|
526
528
|
readiness_probe: Probe | None = None,
|
|
527
529
|
verbose: bool = False,
|
|
528
|
-
experimental_options: dict[str,
|
|
530
|
+
experimental_options: dict[str, Any] | None = None,
|
|
529
531
|
_experimental_enable_snapshot: bool = False,
|
|
530
532
|
client: _Client | None = None,
|
|
531
533
|
environment_name: str | None = None, # *DEPRECATED*
|
|
@@ -696,7 +698,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
696
698
|
proxy: _Proxy | None = None,
|
|
697
699
|
include_oidc_identity_token: bool = False,
|
|
698
700
|
readiness_probe: Probe | None = None,
|
|
699
|
-
experimental_options: dict[str,
|
|
701
|
+
experimental_options: dict[str, Any] | None = None,
|
|
700
702
|
_experimental_enable_snapshot: bool = False,
|
|
701
703
|
client: _Client | None = None,
|
|
702
704
|
verbose: bool = False,
|
|
@@ -1517,15 +1519,17 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1517
1519
|
return self._tunnels
|
|
1518
1520
|
|
|
1519
1521
|
async def create_connect_token(
|
|
1520
|
-
self, user_metadata: str | dict[str, Any] | None = None
|
|
1522
|
+
self, user_metadata: str | dict[str, Any] | None = None, port: int = 8080
|
|
1521
1523
|
) -> SandboxConnectCredentials:
|
|
1522
1524
|
"""Create a token for making HTTP connections to the Sandbox.
|
|
1523
1525
|
|
|
1524
|
-
|
|
1526
|
+
Accepts an optional user_metadata string or dict to associate with the token. This metadata
|
|
1525
1527
|
will be added to the headers by the proxy when forwarding requests to the Sandbox.
|
|
1528
|
+
Also accepts a port that requests will be routed to.
|
|
1526
1529
|
|
|
1527
1530
|
Args:
|
|
1528
1531
|
user_metadata: Optional JSON-serializable metadata or string stored with the connect token.
|
|
1532
|
+
port: Optional container port that requests are routed to when using this token.
|
|
1529
1533
|
|
|
1530
1534
|
Returns:
|
|
1531
1535
|
URL and token credentials for connecting to the sandbox over HTTP.
|
|
@@ -1537,7 +1541,12 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1537
1541
|
except Exception as e:
|
|
1538
1542
|
raise InvalidError(f"Failed to serialize user_metadata: {e}")
|
|
1539
1543
|
|
|
1540
|
-
|
|
1544
|
+
if not isinstance(port, int) or not (1 <= port <= 65535):
|
|
1545
|
+
raise InvalidError("port must be between 1 and 65535")
|
|
1546
|
+
|
|
1547
|
+
req = api_pb2.SandboxCreateConnectTokenRequest(
|
|
1548
|
+
sandbox_id=self.object_id, user_metadata=user_metadata, port=port
|
|
1549
|
+
)
|
|
1541
1550
|
resp = await self._client.stub.SandboxCreateConnectToken(req)
|
|
1542
1551
|
return SandboxConnectCredentials(resp.url, resp.token)
|
|
1543
1552
|
|
|
@@ -212,7 +212,7 @@ class _Sandbox(modal._object._Object):
|
|
|
212
212
|
unencrypted_ports: collections.abc.Sequence[int] = [],
|
|
213
213
|
proxy: typing.Optional[modal.proxy._Proxy] = None,
|
|
214
214
|
readiness_probe: typing.Optional[Probe] = None,
|
|
215
|
-
experimental_options: typing.Optional[dict[str,
|
|
215
|
+
experimental_options: typing.Optional[dict[str, typing.Any]] = None,
|
|
216
216
|
tags: typing.Optional[dict[str, str]] = None,
|
|
217
217
|
enable_snapshot: bool = False,
|
|
218
218
|
verbose: bool = False,
|
|
@@ -257,7 +257,7 @@ class _Sandbox(modal._object._Object):
|
|
|
257
257
|
include_oidc_identity_token: bool = False,
|
|
258
258
|
readiness_probe: typing.Optional[Probe] = None,
|
|
259
259
|
verbose: bool = False,
|
|
260
|
-
experimental_options: typing.Optional[dict[str,
|
|
260
|
+
experimental_options: typing.Optional[dict[str, typing.Any]] = None,
|
|
261
261
|
_experimental_enable_snapshot: bool = False,
|
|
262
262
|
client: typing.Optional[modal.client._Client] = None,
|
|
263
263
|
environment_name: typing.Optional[str] = None,
|
|
@@ -368,7 +368,7 @@ class _Sandbox(modal._object._Object):
|
|
|
368
368
|
proxy: typing.Optional[modal.proxy._Proxy] = None,
|
|
369
369
|
include_oidc_identity_token: bool = False,
|
|
370
370
|
readiness_probe: typing.Optional[Probe] = None,
|
|
371
|
-
experimental_options: typing.Optional[dict[str,
|
|
371
|
+
experimental_options: typing.Optional[dict[str, typing.Any]] = None,
|
|
372
372
|
_experimental_enable_snapshot: bool = False,
|
|
373
373
|
client: typing.Optional[modal.client._Client] = None,
|
|
374
374
|
verbose: bool = False,
|
|
@@ -662,15 +662,17 @@ class _Sandbox(modal._object._Object):
|
|
|
662
662
|
...
|
|
663
663
|
|
|
664
664
|
async def create_connect_token(
|
|
665
|
-
self, user_metadata: typing.Union[str, dict[str, typing.Any], None] = None
|
|
665
|
+
self, user_metadata: typing.Union[str, dict[str, typing.Any], None] = None, port: int = 8080
|
|
666
666
|
) -> SandboxConnectCredentials:
|
|
667
667
|
"""Create a token for making HTTP connections to the Sandbox.
|
|
668
668
|
|
|
669
|
-
|
|
669
|
+
Accepts an optional user_metadata string or dict to associate with the token. This metadata
|
|
670
670
|
will be added to the headers by the proxy when forwarding requests to the Sandbox.
|
|
671
|
+
Also accepts a port that requests will be routed to.
|
|
671
672
|
|
|
672
673
|
Args:
|
|
673
674
|
user_metadata: Optional JSON-serializable metadata or string stored with the connect token.
|
|
675
|
+
port: Optional container port that requests are routed to when using this token.
|
|
674
676
|
|
|
675
677
|
Returns:
|
|
676
678
|
URL and token credentials for connecting to the sandbox over HTTP.
|
|
@@ -1230,7 +1232,7 @@ class Sandbox(modal.object.Object):
|
|
|
1230
1232
|
unencrypted_ports: collections.abc.Sequence[int] = [],
|
|
1231
1233
|
proxy: typing.Optional[modal.proxy.Proxy] = None,
|
|
1232
1234
|
readiness_probe: typing.Optional[Probe] = None,
|
|
1233
|
-
experimental_options: typing.Optional[dict[str,
|
|
1235
|
+
experimental_options: typing.Optional[dict[str, typing.Any]] = None,
|
|
1234
1236
|
tags: typing.Optional[dict[str, str]] = None,
|
|
1235
1237
|
enable_snapshot: bool = False,
|
|
1236
1238
|
verbose: bool = False,
|
|
@@ -1279,7 +1281,7 @@ class Sandbox(modal.object.Object):
|
|
|
1279
1281
|
include_oidc_identity_token: bool = False,
|
|
1280
1282
|
readiness_probe: typing.Optional[Probe] = None,
|
|
1281
1283
|
verbose: bool = False,
|
|
1282
|
-
experimental_options: typing.Optional[dict[str,
|
|
1284
|
+
experimental_options: typing.Optional[dict[str, typing.Any]] = None,
|
|
1283
1285
|
_experimental_enable_snapshot: bool = False,
|
|
1284
1286
|
client: typing.Optional[modal.client.Client] = None,
|
|
1285
1287
|
environment_name: typing.Optional[str] = None,
|
|
@@ -1394,7 +1396,7 @@ class Sandbox(modal.object.Object):
|
|
|
1394
1396
|
include_oidc_identity_token: bool = False,
|
|
1395
1397
|
readiness_probe: typing.Optional[Probe] = None,
|
|
1396
1398
|
verbose: bool = False,
|
|
1397
|
-
experimental_options: typing.Optional[dict[str,
|
|
1399
|
+
experimental_options: typing.Optional[dict[str, typing.Any]] = None,
|
|
1398
1400
|
_experimental_enable_snapshot: bool = False,
|
|
1399
1401
|
client: typing.Optional[modal.client.Client] = None,
|
|
1400
1402
|
environment_name: typing.Optional[str] = None,
|
|
@@ -1511,7 +1513,7 @@ class Sandbox(modal.object.Object):
|
|
|
1511
1513
|
proxy: typing.Optional[modal.proxy.Proxy] = None,
|
|
1512
1514
|
include_oidc_identity_token: bool = False,
|
|
1513
1515
|
readiness_probe: typing.Optional[Probe] = None,
|
|
1514
|
-
experimental_options: typing.Optional[dict[str,
|
|
1516
|
+
experimental_options: typing.Optional[dict[str, typing.Any]] = None,
|
|
1515
1517
|
_experimental_enable_snapshot: bool = False,
|
|
1516
1518
|
client: typing.Optional[modal.client.Client] = None,
|
|
1517
1519
|
verbose: bool = False,
|
|
@@ -1563,7 +1565,7 @@ class Sandbox(modal.object.Object):
|
|
|
1563
1565
|
proxy: typing.Optional[modal.proxy.Proxy] = None,
|
|
1564
1566
|
include_oidc_identity_token: bool = False,
|
|
1565
1567
|
readiness_probe: typing.Optional[Probe] = None,
|
|
1566
|
-
experimental_options: typing.Optional[dict[str,
|
|
1568
|
+
experimental_options: typing.Optional[dict[str, typing.Any]] = None,
|
|
1567
1569
|
_experimental_enable_snapshot: bool = False,
|
|
1568
1570
|
client: typing.Optional[modal.client.Client] = None,
|
|
1569
1571
|
verbose: bool = False,
|
|
@@ -2170,15 +2172,17 @@ class Sandbox(modal.object.Object):
|
|
|
2170
2172
|
|
|
2171
2173
|
class __create_connect_token_spec(typing_extensions.Protocol):
|
|
2172
2174
|
def __call__(
|
|
2173
|
-
self, /, user_metadata: typing.Union[str, dict[str, typing.Any], None] = None
|
|
2175
|
+
self, /, user_metadata: typing.Union[str, dict[str, typing.Any], None] = None, port: int = 8080
|
|
2174
2176
|
) -> SandboxConnectCredentials:
|
|
2175
2177
|
"""Create a token for making HTTP connections to the Sandbox.
|
|
2176
2178
|
|
|
2177
|
-
|
|
2179
|
+
Accepts an optional user_metadata string or dict to associate with the token. This metadata
|
|
2178
2180
|
will be added to the headers by the proxy when forwarding requests to the Sandbox.
|
|
2181
|
+
Also accepts a port that requests will be routed to.
|
|
2179
2182
|
|
|
2180
2183
|
Args:
|
|
2181
2184
|
user_metadata: Optional JSON-serializable metadata or string stored with the connect token.
|
|
2185
|
+
port: Optional container port that requests are routed to when using this token.
|
|
2182
2186
|
|
|
2183
2187
|
Returns:
|
|
2184
2188
|
URL and token credentials for connecting to the sandbox over HTTP.
|
|
@@ -2186,15 +2190,17 @@ class Sandbox(modal.object.Object):
|
|
|
2186
2190
|
...
|
|
2187
2191
|
|
|
2188
2192
|
async def aio(
|
|
2189
|
-
self, /, user_metadata: typing.Union[str, dict[str, typing.Any], None] = None
|
|
2193
|
+
self, /, user_metadata: typing.Union[str, dict[str, typing.Any], None] = None, port: int = 8080
|
|
2190
2194
|
) -> SandboxConnectCredentials:
|
|
2191
2195
|
"""Create a token for making HTTP connections to the Sandbox.
|
|
2192
2196
|
|
|
2193
|
-
|
|
2197
|
+
Accepts an optional user_metadata string or dict to associate with the token. This metadata
|
|
2194
2198
|
will be added to the headers by the proxy when forwarding requests to the Sandbox.
|
|
2199
|
+
Also accepts a port that requests will be routed to.
|
|
2195
2200
|
|
|
2196
2201
|
Args:
|
|
2197
2202
|
user_metadata: Optional JSON-serializable metadata or string stored with the connect token.
|
|
2203
|
+
port: Optional container port that requests are routed to when using this token.
|
|
2198
2204
|
|
|
2199
2205
|
Returns:
|
|
2200
2206
|
URL and token credentials for connecting to the sandbox over HTTP.
|
|
@@ -33,14 +33,16 @@ class Server:
|
|
|
33
33
|
def _get_user_cls(self) -> type: ...
|
|
34
34
|
def _get_app(self) -> modal.app.App: ...
|
|
35
35
|
def _get_service_function(self) -> modal.functions.Function: ...
|
|
36
|
+
@property
|
|
37
|
+
def object_id(self) -> str: ...
|
|
36
38
|
@staticmethod
|
|
37
39
|
def _extract_user_cls(wrapped_user_cls: typing.Union[type, modal.partial_function.PartialFunction]) -> type: ...
|
|
38
40
|
|
|
39
|
-
class
|
|
40
|
-
def __call__(self, /) -> typing.Optional[
|
|
41
|
-
async def aio(self, /) -> typing.Optional[
|
|
41
|
+
class __get_url_spec(typing_extensions.Protocol):
|
|
42
|
+
def __call__(self, /) -> typing.Optional[str]: ...
|
|
43
|
+
async def aio(self, /) -> typing.Optional[str]: ...
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
get_url: __get_url_spec
|
|
44
46
|
|
|
45
47
|
class __update_autoscaler_spec(typing_extensions.Protocol):
|
|
46
48
|
def __call__(
|