modal 1.5.2.dev0__tar.gz → 1.5.2.dev1__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.2.dev0 → modal-1.5.2.dev1}/PKG-INFO +1 -1
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/client.pyi +2 -2
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/functions.pyi +6 -6
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/sandbox.py +24 -5
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/sandbox.pyi +36 -9
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/api_pb2.py +386 -386
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/api_pb2.pyi +8 -1
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_version/__init__.py +1 -1
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/LICENSE +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/README.md +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/__main__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_billing.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_clustered_functions.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_clustered_functions.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_container_entrypoint.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_environments.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_function_variants.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_functions.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_grpc_client.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_image.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_ipython.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_load_context.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_location.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_logs.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_object.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_output/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_output/manager.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_output/pty.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_output/rich.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_output/status.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_partial_function.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_resolver.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_resources.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/asgi.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/execution_context.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/task_lifecycle_manager.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/telemetry.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_serialization.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_server.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_traceback.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_tunnel.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_tunnel.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_type_manager.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/app_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/async_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/blob_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/browser_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/curl_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/deprecation.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/docker_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/function_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/git_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/hash_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/http_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/logger.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/mount_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/name_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/package_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/proxy_support.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/sandbox_fs_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/shell_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_utils/time_utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_vendor/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_vendor/tblib.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_vendor/version.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_watcher.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/_workspace.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/app.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/app.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/billing.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/billing.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/builder/2023.12.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/builder/2024.04.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/builder/2024.10.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/builder/2025.06.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/builder/README.md +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/builder/base-images.json +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/call_graph.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/_download.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/_help.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/_traceback.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/app.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/billing.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/bootstrap.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/changelog.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/cluster.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/config.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/container.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/curl.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/dashboard.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/dict.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/endpoint.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/entry_point.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/environment.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/image.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/import_refs.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/launch.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/logo.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/network_file_system.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/profile.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/programs/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/programs/vscode.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/queues.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/run.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/secret.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/selector.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/shell.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/skills.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/token.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/utils.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/volume.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cli/workspace.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/client.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cls.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/cls.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/config.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/container_process.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/container_process.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/dict.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/dict.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/environments.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/environments.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/exception.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/experimental/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/experimental/flash.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/experimental/flash.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/experimental/ipython.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/file_io.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/file_io.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/file_pattern_matcher.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/functions.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/image.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/image.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/io_streams.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/io_streams.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/mount.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/mount.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/network_file_system.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/network_file_system.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/object.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/object.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/output.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/parallel_map.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/parallel_map.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/partial_function.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/partial_function.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/proxy.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/proxy.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/py.typed +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/queue.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/queue.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/retries.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/runner.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/runner.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/running_app.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/sandbox_fs.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/sandbox_fs.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/schedule.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/scheduler_placement.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/secret.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/secret.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/server.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/server.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/serving.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/serving.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/skills/modal/SKILL.md +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/snapshot.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/snapshot.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/stream_type.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/token_flow.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/token_flow.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/volume.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/volume.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/workspace.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal/workspace.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal.egg-info/requires.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal.egg-info/top_level.txt +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_docs/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_docs/gen_cli_docs_main.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_docs/gen_reference_docs_main.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_docs/mdmd/types.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/__init__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/api_grpc.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/py.typed +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/modal_version/__main__.py +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/pyproject.toml +0 -0
- {modal-1.5.2.dev0 → modal-1.5.2.dev1}/setup.cfg +0 -0
|
@@ -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.2.
|
|
38
|
+
version: str = "1.5.2.dev1",
|
|
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.2.
|
|
208
|
+
version: str = "1.5.2.dev1",
|
|
209
209
|
):
|
|
210
210
|
"""mdmd:hidden
|
|
211
211
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -490,7 +490,7 @@ class Function(
|
|
|
490
490
|
|
|
491
491
|
_call_generator: ___call_generator_spec
|
|
492
492
|
|
|
493
|
-
class __remote_spec(typing_extensions.Protocol[
|
|
493
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
|
|
494
494
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
|
|
495
495
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result.
|
|
496
496
|
|
|
@@ -515,7 +515,7 @@ class Function(
|
|
|
515
515
|
"""
|
|
516
516
|
...
|
|
517
517
|
|
|
518
|
-
remote: __remote_spec[modal._functions.
|
|
518
|
+
remote: __remote_spec[modal._functions.P, modal._functions.ReturnType]
|
|
519
519
|
|
|
520
520
|
class __remote_gen_spec(typing_extensions.Protocol):
|
|
521
521
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
|
|
@@ -565,7 +565,7 @@ class Function(
|
|
|
565
565
|
"""
|
|
566
566
|
...
|
|
567
567
|
|
|
568
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
|
568
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
|
|
569
569
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
570
570
|
"""[Experimental] Calls the function with the given arguments, without waiting for the results.
|
|
571
571
|
|
|
@@ -598,7 +598,7 @@ class Function(
|
|
|
598
598
|
"""
|
|
599
599
|
...
|
|
600
600
|
|
|
601
|
-
_experimental_spawn: ___experimental_spawn_spec[modal._functions.
|
|
601
|
+
_experimental_spawn: ___experimental_spawn_spec[modal._functions.P, modal._functions.ReturnType]
|
|
602
602
|
|
|
603
603
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER]):
|
|
604
604
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> None: ...
|
|
@@ -606,7 +606,7 @@ class Function(
|
|
|
606
606
|
|
|
607
607
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P]
|
|
608
608
|
|
|
609
|
-
class __spawn_spec(typing_extensions.Protocol[
|
|
609
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
|
|
610
610
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
611
611
|
"""Calls the function with the given arguments, without waiting for the results.
|
|
612
612
|
|
|
@@ -639,7 +639,7 @@ class Function(
|
|
|
639
639
|
"""
|
|
640
640
|
...
|
|
641
641
|
|
|
642
|
-
spawn: __spawn_spec[modal._functions.
|
|
642
|
+
spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType]
|
|
643
643
|
|
|
644
644
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
|
|
645
645
|
"""Return the inner Python object wrapped by this Modal Function.
|
|
@@ -839,7 +839,9 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
839
839
|
region: str | Sequence[str] | None = None,
|
|
840
840
|
block_network: bool = False,
|
|
841
841
|
outbound_cidr_allowlist: Sequence[str] | None = None,
|
|
842
|
+
outbound_domain_allowlist: Sequence[str] | None = None,
|
|
842
843
|
inbound_cidr_allowlist: Sequence[str] | None = None,
|
|
844
|
+
i6pn: bool = False,
|
|
843
845
|
volumes: dict[str | os.PathLike, _Volume | _CloudBucketMount] = {},
|
|
844
846
|
pty: bool = False,
|
|
845
847
|
encrypted_ports: Sequence[int] = [],
|
|
@@ -854,13 +856,20 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
854
856
|
"""Create a sandbox using the V2 backend.
|
|
855
857
|
|
|
856
858
|
Supported features include exec, encrypted tunnels, wait/poll/terminate,
|
|
857
|
-
CPU and memory configuration, region placement,
|
|
858
|
-
(with static credentials via
|
|
859
|
-
identity tokens, proxies, and
|
|
859
|
+
CPU and memory configuration, region placement, private IPv6 networking
|
|
860
|
+
(i6pn), volumes, cloud bucket mounts (with static credentials via
|
|
861
|
+
`secret=...` or `oidc_auth_role_arn`), OIDC identity tokens, proxies, and
|
|
862
|
+
filesystem snapshots.
|
|
860
863
|
|
|
861
864
|
Features like tags, memory snapshots, network file systems, GPUs, and custom
|
|
862
865
|
domains are not supported.
|
|
863
866
|
|
|
867
|
+
Set `i6pn=True` to enable private IPv6 networking so sandboxes in the same
|
|
868
|
+
workspace can address each other directly at their `i6pn.modal.local`
|
|
869
|
+
address. i6pn only connects sandboxes co-located on the same routable
|
|
870
|
+
network, so pin every sandbox in the group to the same specific region
|
|
871
|
+
(e.g. `region="us-east-1"`).
|
|
872
|
+
|
|
864
873
|
V2 sandboxes created with this method are not currently returned by
|
|
865
874
|
`Sandbox.list()` and cannot be looked up with `Sandbox.from_name()`.
|
|
866
875
|
Store `sandbox.object_id` if you need to retrieve the sandbox later, and
|
|
@@ -878,6 +887,12 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
878
887
|
if block_network and (encrypted_ports or h2_ports or unencrypted_ports):
|
|
879
888
|
raise InvalidError("Cannot specify open ports when `block_network` is enabled")
|
|
880
889
|
|
|
890
|
+
if block_network and i6pn:
|
|
891
|
+
raise InvalidError(
|
|
892
|
+
"`block_network` disables all networking, including i6pn. To keep i6pn while blocking "
|
|
893
|
+
"public egress, use an empty outbound allowlist (`outbound_cidr_allowlist=[]`) instead."
|
|
894
|
+
)
|
|
895
|
+
|
|
881
896
|
validated_volumes = validate_volumes(volumes)
|
|
882
897
|
cloud_bucket_mounts = [(k, v) for k, v in validated_volumes if isinstance(v, _CloudBucketMount)]
|
|
883
898
|
validated_volumes = [(k, v) for k, v in validated_volumes if isinstance(v, _Volume)]
|
|
@@ -915,19 +930,22 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
915
930
|
if block_network:
|
|
916
931
|
if outbound_cidr_allowlist is not None:
|
|
917
932
|
raise InvalidError("`outbound_cidr_allowlist` cannot be used when `block_network` is enabled")
|
|
933
|
+
if outbound_domain_allowlist is not None:
|
|
934
|
+
raise InvalidError("`outbound_domain_allowlist` cannot be used when `block_network` is enabled")
|
|
918
935
|
if inbound_cidr_allowlist is not None:
|
|
919
936
|
raise InvalidError("`inbound_cidr_allowlist` cannot be used when `block_network` is enabled")
|
|
920
937
|
network_access = api_pb2.NetworkAccess(
|
|
921
938
|
network_access_type=api_pb2.NetworkAccess.NetworkAccessType.BLOCKED,
|
|
922
939
|
)
|
|
923
|
-
elif outbound_cidr_allowlist is None:
|
|
940
|
+
elif outbound_domain_allowlist is None and outbound_cidr_allowlist is None:
|
|
924
941
|
network_access = api_pb2.NetworkAccess(
|
|
925
942
|
network_access_type=api_pb2.NetworkAccess.NetworkAccessType.OPEN,
|
|
926
943
|
)
|
|
927
944
|
else:
|
|
928
945
|
network_access = api_pb2.NetworkAccess(
|
|
929
946
|
network_access_type=api_pb2.NetworkAccess.NetworkAccessType.ALLOWLIST,
|
|
930
|
-
allowed_cidrs=outbound_cidr_allowlist,
|
|
947
|
+
allowed_cidrs=list(outbound_cidr_allowlist or []),
|
|
948
|
+
allowed_domains=list(outbound_domain_allowlist or []),
|
|
931
949
|
)
|
|
932
950
|
|
|
933
951
|
async def _load(self: _Sandbox, resolver: Resolver, load_context: LoadContext, _existing_object_id: str | None):
|
|
@@ -972,6 +990,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
972
990
|
name=name,
|
|
973
991
|
include_oidc_identity_token=include_oidc_identity_token,
|
|
974
992
|
inbound_cidr_allowlist=list(inbound_cidr_allowlist) if inbound_cidr_allowlist is not None else [],
|
|
993
|
+
i6pn_enabled=i6pn,
|
|
975
994
|
volume_mounts=volume_mounts,
|
|
976
995
|
cloud_bucket_mounts=cloud_bucket_mounts_to_proto(cloud_bucket_mounts),
|
|
977
996
|
readiness_probe=(readiness_probe._to_proto() if readiness_probe else None),
|
|
@@ -402,7 +402,9 @@ class _Sandbox(modal._object._Object):
|
|
|
402
402
|
region: typing.Union[str, collections.abc.Sequence[str], None] = None,
|
|
403
403
|
block_network: bool = False,
|
|
404
404
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
405
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
405
406
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
407
|
+
i6pn: bool = False,
|
|
406
408
|
volumes: dict[
|
|
407
409
|
typing.Union[str, os.PathLike],
|
|
408
410
|
typing.Union[modal.volume._Volume, modal.cloud_bucket_mount._CloudBucketMount],
|
|
@@ -420,13 +422,20 @@ class _Sandbox(modal._object._Object):
|
|
|
420
422
|
"""Create a sandbox using the V2 backend.
|
|
421
423
|
|
|
422
424
|
Supported features include exec, encrypted tunnels, wait/poll/terminate,
|
|
423
|
-
CPU and memory configuration, region placement,
|
|
424
|
-
(with static credentials via
|
|
425
|
-
identity tokens, proxies, and
|
|
425
|
+
CPU and memory configuration, region placement, private IPv6 networking
|
|
426
|
+
(i6pn), volumes, cloud bucket mounts (with static credentials via
|
|
427
|
+
`secret=...` or `oidc_auth_role_arn`), OIDC identity tokens, proxies, and
|
|
428
|
+
filesystem snapshots.
|
|
426
429
|
|
|
427
430
|
Features like tags, memory snapshots, network file systems, GPUs, and custom
|
|
428
431
|
domains are not supported.
|
|
429
432
|
|
|
433
|
+
Set `i6pn=True` to enable private IPv6 networking so sandboxes in the same
|
|
434
|
+
workspace can address each other directly at their `i6pn.modal.local`
|
|
435
|
+
address. i6pn only connects sandboxes co-located on the same routable
|
|
436
|
+
network, so pin every sandbox in the group to the same specific region
|
|
437
|
+
(e.g. `region="us-east-1"`).
|
|
438
|
+
|
|
430
439
|
V2 sandboxes created with this method are not currently returned by
|
|
431
440
|
`Sandbox.list()` and cannot be looked up with `Sandbox.from_name()`.
|
|
432
441
|
Store `sandbox.object_id` if you need to retrieve the sandbox later, and
|
|
@@ -1625,7 +1634,9 @@ class Sandbox(modal.object.Object):
|
|
|
1625
1634
|
region: typing.Union[str, collections.abc.Sequence[str], None] = None,
|
|
1626
1635
|
block_network: bool = False,
|
|
1627
1636
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1637
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1628
1638
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1639
|
+
i6pn: bool = False,
|
|
1629
1640
|
volumes: dict[
|
|
1630
1641
|
typing.Union[str, os.PathLike],
|
|
1631
1642
|
typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
|
|
@@ -1643,13 +1654,20 @@ class Sandbox(modal.object.Object):
|
|
|
1643
1654
|
"""Create a sandbox using the V2 backend.
|
|
1644
1655
|
|
|
1645
1656
|
Supported features include exec, encrypted tunnels, wait/poll/terminate,
|
|
1646
|
-
CPU and memory configuration, region placement,
|
|
1647
|
-
(with static credentials via
|
|
1648
|
-
identity tokens, proxies, and
|
|
1657
|
+
CPU and memory configuration, region placement, private IPv6 networking
|
|
1658
|
+
(i6pn), volumes, cloud bucket mounts (with static credentials via
|
|
1659
|
+
`secret=...` or `oidc_auth_role_arn`), OIDC identity tokens, proxies, and
|
|
1660
|
+
filesystem snapshots.
|
|
1649
1661
|
|
|
1650
1662
|
Features like tags, memory snapshots, network file systems, GPUs, and custom
|
|
1651
1663
|
domains are not supported.
|
|
1652
1664
|
|
|
1665
|
+
Set `i6pn=True` to enable private IPv6 networking so sandboxes in the same
|
|
1666
|
+
workspace can address each other directly at their `i6pn.modal.local`
|
|
1667
|
+
address. i6pn only connects sandboxes co-located on the same routable
|
|
1668
|
+
network, so pin every sandbox in the group to the same specific region
|
|
1669
|
+
(e.g. `region="us-east-1"`).
|
|
1670
|
+
|
|
1653
1671
|
V2 sandboxes created with this method are not currently returned by
|
|
1654
1672
|
`Sandbox.list()` and cannot be looked up with `Sandbox.from_name()`.
|
|
1655
1673
|
Store `sandbox.object_id` if you need to retrieve the sandbox later, and
|
|
@@ -1675,7 +1693,9 @@ class Sandbox(modal.object.Object):
|
|
|
1675
1693
|
region: typing.Union[str, collections.abc.Sequence[str], None] = None,
|
|
1676
1694
|
block_network: bool = False,
|
|
1677
1695
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1696
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1678
1697
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1698
|
+
i6pn: bool = False,
|
|
1679
1699
|
volumes: dict[
|
|
1680
1700
|
typing.Union[str, os.PathLike],
|
|
1681
1701
|
typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
|
|
@@ -1693,13 +1713,20 @@ class Sandbox(modal.object.Object):
|
|
|
1693
1713
|
"""Create a sandbox using the V2 backend.
|
|
1694
1714
|
|
|
1695
1715
|
Supported features include exec, encrypted tunnels, wait/poll/terminate,
|
|
1696
|
-
CPU and memory configuration, region placement,
|
|
1697
|
-
(with static credentials via
|
|
1698
|
-
identity tokens, proxies, and
|
|
1716
|
+
CPU and memory configuration, region placement, private IPv6 networking
|
|
1717
|
+
(i6pn), volumes, cloud bucket mounts (with static credentials via
|
|
1718
|
+
`secret=...` or `oidc_auth_role_arn`), OIDC identity tokens, proxies, and
|
|
1719
|
+
filesystem snapshots.
|
|
1699
1720
|
|
|
1700
1721
|
Features like tags, memory snapshots, network file systems, GPUs, and custom
|
|
1701
1722
|
domains are not supported.
|
|
1702
1723
|
|
|
1724
|
+
Set `i6pn=True` to enable private IPv6 networking so sandboxes in the same
|
|
1725
|
+
workspace can address each other directly at their `i6pn.modal.local`
|
|
1726
|
+
address. i6pn only connects sandboxes co-located on the same routable
|
|
1727
|
+
network, so pin every sandbox in the group to the same specific region
|
|
1728
|
+
(e.g. `region="us-east-1"`).
|
|
1729
|
+
|
|
1703
1730
|
V2 sandboxes created with this method are not currently returned by
|
|
1704
1731
|
`Sandbox.list()` and cannot be looked up with `Sandbox.from_name()`.
|
|
1705
1732
|
Store `sandbox.object_id` if you need to retrieve the sandbox later, and
|