modal 1.4.3.dev18__tar.gz → 1.4.3.dev20__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.4.3.dev18 → modal-1.4.3.dev20}/PKG-INFO +1 -1
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_output/rich.py +4 -4
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/deprecation.py +5 -8
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/app.py +0 -2
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/client.pyi +2 -2
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/exception.py +0 -5
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/file_io.py +0 -3
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/sandbox.py +5 -9
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/sandbox.pyi +9 -18
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/api_pb2.pyi +1 -1
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_version/__init__.py +1 -1
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/LICENSE +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/README.md +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/__main__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_billing.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_clustered_functions.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_clustered_functions.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_container_entrypoint.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_environments.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_functions.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_grpc_client.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_ipython.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_load_context.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_location.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_logs.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_object.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_output/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_output/manager.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_output/pty.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_output/status.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_partial_function.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_resolver.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_resources.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/asgi.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/execution_context.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/telemetry.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_serialization.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_server.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_traceback.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_tunnel.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_tunnel.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_type_manager.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/app_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/async_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/blob_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/browser_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/docker_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/function_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/git_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/hash_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/http_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/logger.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/mount_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/name_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/package_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/sandbox_fs_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/shell_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_utils/time_utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_vendor/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_vendor/tblib.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_vendor/version.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/_watcher.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/app.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/billing.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/builder/2023.12.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/builder/2024.04.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/builder/2024.10.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/builder/2025.06.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/builder/README.md +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/builder/base-images.json +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/call_graph.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/_download.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/_help.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/_traceback.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/app.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/billing.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/bootstrap.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/changelog.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/cluster.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/config.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/container.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/dashboard.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/dict.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/entry_point.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/environment.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/import_refs.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/launch.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/logo.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/network_file_system.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/profile.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/programs/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/programs/vscode.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/queues.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/run.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/secret.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/selector.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/shell.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/token.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/utils.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cli/volume.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/client.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cls.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/cls.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/config.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/container_process.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/container_process.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/dict.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/dict.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/environments.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/environments.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/experimental/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/experimental/flash.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/experimental/flash.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/experimental/ipython.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/file_io.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/file_pattern_matcher.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/functions.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/functions.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/image.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/image.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/io_streams.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/io_streams.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/mount.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/mount.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/network_file_system.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/network_file_system.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/object.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/object.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/output.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/parallel_map.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/parallel_map.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/partial_function.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/partial_function.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/proxy.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/proxy.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/py.typed +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/queue.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/queue.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/retries.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/runner.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/runner.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/running_app.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/sandbox_fs.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/sandbox_fs.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/schedule.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/scheduler_placement.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/secret.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/secret.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/server.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/server.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/serving.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/serving.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/snapshot.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/snapshot.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/stream_type.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/token_flow.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/token_flow.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/volume.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal/volume.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal.egg-info/requires.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal.egg-info/top_level.txt +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_docs/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_docs/gen_cli_docs_main.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_docs/gen_reference_docs_main.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/__init__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/api_grpc.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/api_pb2.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/py.typed +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/modal_version/__main__.py +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/pyproject.toml +0 -0
- {modal-1.4.3.dev18 → modal-1.4.3.dev20}/setup.cfg +0 -0
|
@@ -49,7 +49,7 @@ from modal._output.manager import (
|
|
|
49
49
|
)
|
|
50
50
|
from modal._utils.time_utils import timestamp_to_localized_str
|
|
51
51
|
from modal.config import logger
|
|
52
|
-
from modal.exception import DeprecationError,
|
|
52
|
+
from modal.exception import DeprecationError, ServerWarning
|
|
53
53
|
from modal_proto import api_pb2
|
|
54
54
|
|
|
55
55
|
if platform.system() == "Windows":
|
|
@@ -359,14 +359,14 @@ class RichOutputManager(OutputManager):
|
|
|
359
359
|
) -> None:
|
|
360
360
|
"""Display a warning, using rich formatting for Modal-specific warnings.
|
|
361
361
|
|
|
362
|
-
Modal warnings (DeprecationError,
|
|
362
|
+
Modal warnings (DeprecationError, ServerWarning) are shown
|
|
363
363
|
in a yellow-bordered panel with source context. Other warnings fall back to the
|
|
364
364
|
default Python warning display.
|
|
365
365
|
"""
|
|
366
366
|
# For non-Modal warnings, fall back to the default display
|
|
367
367
|
import modal
|
|
368
368
|
|
|
369
|
-
is_modal_warning = issubclass(category, (DeprecationError,
|
|
369
|
+
is_modal_warning = issubclass(category, (DeprecationError, ServerWarning))
|
|
370
370
|
filename_in_modal = modal.__path__ and Path(filename).is_relative_to(modal.__path__[0])
|
|
371
371
|
if not is_modal_warning and not filename_in_modal:
|
|
372
372
|
base_showwarning(warning, category, filename, lineno, file=None, line=None)
|
|
@@ -392,7 +392,7 @@ class RichOutputManager(OutputManager):
|
|
|
392
392
|
pass
|
|
393
393
|
|
|
394
394
|
# Build title
|
|
395
|
-
if issubclass(category,
|
|
395
|
+
if issubclass(category, DeprecationError):
|
|
396
396
|
title = "Modal Deprecation Warning"
|
|
397
397
|
else:
|
|
398
398
|
title = "Modal Warning"
|
|
@@ -7,7 +7,7 @@ from typing import Any, Callable, TypeVar
|
|
|
7
7
|
|
|
8
8
|
from typing_extensions import ParamSpec # Needed for Python 3.9
|
|
9
9
|
|
|
10
|
-
from ..exception import DeprecationError
|
|
10
|
+
from ..exception import DeprecationError
|
|
11
11
|
|
|
12
12
|
_INTERNAL_MODULES = ["modal", "synchronicity"]
|
|
13
13
|
|
|
@@ -21,12 +21,11 @@ def deprecation_error(deprecated_on: tuple[int, int, int], msg: str):
|
|
|
21
21
|
raise DeprecationError(f"Deprecated on {date(*deprecated_on)}: {msg}")
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
def deprecation_warning(
|
|
25
|
-
deprecated_on: tuple[int, int, int], msg: str, *, pending: bool = False, show_source: bool = True
|
|
26
|
-
) -> None:
|
|
24
|
+
def deprecation_warning(deprecated_on: tuple[int, int, int], msg: str, *, show_source: bool = True) -> None:
|
|
27
25
|
"""Issue a Modal deprecation warning with source optionally attributed to user code.
|
|
28
26
|
|
|
29
|
-
See the implementation of the built-in
|
|
27
|
+
See the implementation of the built-in warnings.warn:
|
|
28
|
+
https://docs.python.org/3/library/warnings.html#available-functions.
|
|
30
29
|
"""
|
|
31
30
|
filename, lineno = "<unknown>", 0
|
|
32
31
|
if show_source:
|
|
@@ -42,10 +41,8 @@ def deprecation_warning(
|
|
|
42
41
|
# Use the defaults from above
|
|
43
42
|
pass
|
|
44
43
|
|
|
45
|
-
warning_cls = PendingDeprecationError if pending else DeprecationError
|
|
46
|
-
|
|
47
44
|
# This is a lower-level function that warnings.warn uses
|
|
48
|
-
warnings.warn_explicit(f"{date(*deprecated_on)}: {msg}",
|
|
45
|
+
warnings.warn_explicit(f"{date(*deprecated_on)}: {msg}", DeprecationError, filename, lineno)
|
|
49
46
|
|
|
50
47
|
|
|
51
48
|
P = ParamSpec("P")
|
|
@@ -778,7 +778,6 @@ class _App:
|
|
|
778
778
|
deprecation_warning(
|
|
779
779
|
(2025, 12, 16),
|
|
780
780
|
"The `max_inputs` parameter is deprecated. Please set `single_use_containers=True` instead.",
|
|
781
|
-
pending=True,
|
|
782
781
|
)
|
|
783
782
|
single_use_containers = max_inputs == 1
|
|
784
783
|
|
|
@@ -987,7 +986,6 @@ class _App:
|
|
|
987
986
|
deprecation_warning(
|
|
988
987
|
(2025, 12, 16),
|
|
989
988
|
"The `max_inputs` parameter is deprecated. Please set `single_use_containers=True` instead.",
|
|
990
|
-
pending=True,
|
|
991
989
|
)
|
|
992
990
|
single_use_containers = max_inputs == 1
|
|
993
991
|
|
|
@@ -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.4.3.
|
|
38
|
+
version: str = "1.4.3.dev20",
|
|
39
39
|
):
|
|
40
40
|
"""mdmd:hidden
|
|
41
41
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -175,7 +175,7 @@ class Client:
|
|
|
175
175
|
server_url: str,
|
|
176
176
|
client_type: int,
|
|
177
177
|
credentials: typing.Optional[tuple[str, str]],
|
|
178
|
-
version: str = "1.4.3.
|
|
178
|
+
version: str = "1.4.3.dev20",
|
|
179
179
|
):
|
|
180
180
|
"""mdmd:hidden
|
|
181
181
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -99,7 +99,6 @@ class _GRPCErrorWrapper(grpclib.GRPCError):
|
|
|
99
99
|
"Modal will stop propagating the `grpclib.GRPCError` type in the future. "
|
|
100
100
|
f"Update your code so that it catches `modal.exception.{exc_type}` directly "
|
|
101
101
|
"to avoid changes to error handling behavior in the future.",
|
|
102
|
-
pending=True,
|
|
103
102
|
)
|
|
104
103
|
|
|
105
104
|
@property
|
|
@@ -252,10 +251,6 @@ class DeprecationError(UserWarning):
|
|
|
252
251
|
# Overloading it to evade the default filter, which excludes __main__.
|
|
253
252
|
|
|
254
253
|
|
|
255
|
-
class PendingDeprecationError(UserWarning):
|
|
256
|
-
"""Soon to be deprecated feature. Only used intermittently because of multi-repo concerns."""
|
|
257
|
-
|
|
258
|
-
|
|
259
254
|
class ServerWarning(UserWarning):
|
|
260
255
|
"""Warning originating from the Modal server and re-issued in client code."""
|
|
261
256
|
|
|
@@ -371,7 +371,6 @@ class _FileIO(Generic[T]):
|
|
|
371
371
|
"`FileIO.seek()` is deprecated. Use the `Sandbox.filesystem` APIs instead."
|
|
372
372
|
" If you specifically need the ability to write to specific offsets in a file,"
|
|
373
373
|
" please contact support@modal.com.",
|
|
374
|
-
pending=True,
|
|
375
374
|
)
|
|
376
375
|
self._check_closed()
|
|
377
376
|
resp = await self._client.stub.ContainerFilesystemExec(
|
|
@@ -392,7 +391,6 @@ class _FileIO(Generic[T]):
|
|
|
392
391
|
deprecation_warning(
|
|
393
392
|
(2026, 3, 9),
|
|
394
393
|
"`FileIO.ls()` is deprecated. Use `Sandbox.filesystem.list_files()` instead.",
|
|
395
|
-
pending=True,
|
|
396
394
|
)
|
|
397
395
|
return await ls(path, client, task_id)
|
|
398
396
|
|
|
@@ -427,7 +425,6 @@ class _FileIO(Generic[T]):
|
|
|
427
425
|
deprecation_warning(
|
|
428
426
|
(2026, 3, 9),
|
|
429
427
|
"`FileIO.watch()` is deprecated. Use `Sandbox.watch()` instead.",
|
|
430
|
-
pending=True,
|
|
431
428
|
)
|
|
432
429
|
async for event in watch(path, client, task_id, filter, recursive, timeout):
|
|
433
430
|
yield event
|
|
@@ -1617,8 +1617,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1617
1617
|
):
|
|
1618
1618
|
"""[Alpha] Open a file in the Sandbox and return a FileIO handle.
|
|
1619
1619
|
|
|
1620
|
-
|
|
1621
|
-
Use the `Sandbox.filesystem` APIs instead.
|
|
1620
|
+
**Deprecated (2026-03-09):** Use the `Sandbox.filesystem` APIs instead.
|
|
1622
1621
|
|
|
1623
1622
|
See the [`FileIO`](https://modal.com/docs/reference/modal.file_io#modalfile_iofileio) docs for more information.
|
|
1624
1623
|
|
|
@@ -1642,13 +1641,12 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1642
1641
|
async def ls(self, path: str) -> builtins.list[str]:
|
|
1643
1642
|
"""[Alpha] List the contents of a directory in the Sandbox.
|
|
1644
1643
|
|
|
1645
|
-
|
|
1646
|
-
|
|
1644
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.list_files()` instead.
|
|
1645
|
+
"""
|
|
1647
1646
|
self._ensure_v1("ls")
|
|
1648
1647
|
deprecation_warning(
|
|
1649
1648
|
(2026, 4, 15),
|
|
1650
1649
|
"`Sandbox.ls()` is deprecated. Use `Sandbox.filesystem.list_files()` instead.",
|
|
1651
|
-
pending=True,
|
|
1652
1650
|
)
|
|
1653
1651
|
task_id = await self._get_task_id()
|
|
1654
1652
|
return await ls(path, self._client, task_id)
|
|
@@ -1656,8 +1654,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1656
1654
|
async def mkdir(self, path: str, parents: bool = False) -> None:
|
|
1657
1655
|
"""[Alpha] Create a new directory in the Sandbox.
|
|
1658
1656
|
|
|
1659
|
-
|
|
1660
|
-
Use `Sandbox.filesystem.make_directory()` instead.
|
|
1657
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.make_directory()` instead.
|
|
1661
1658
|
"""
|
|
1662
1659
|
self._ensure_v1("mkdir")
|
|
1663
1660
|
deprecation_warning(
|
|
@@ -1670,8 +1667,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1670
1667
|
async def rm(self, path: str, recursive: bool = False) -> None:
|
|
1671
1668
|
"""[Alpha] Remove a file or directory in the Sandbox.
|
|
1672
1669
|
|
|
1673
|
-
|
|
1674
|
-
Use `Sandbox.filesystem.remove()` instead.
|
|
1670
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.remove()` instead.
|
|
1675
1671
|
"""
|
|
1676
1672
|
self._ensure_v1("rm")
|
|
1677
1673
|
deprecation_warning(
|
|
@@ -615,24 +615,21 @@ class _Sandbox(modal._object._Object):
|
|
|
615
615
|
async def ls(self, path: str) -> list[str]:
|
|
616
616
|
"""[Alpha] List the contents of a directory in the Sandbox.
|
|
617
617
|
|
|
618
|
-
|
|
619
|
-
Use `Sandbox.filesystem.list_files()` instead.
|
|
618
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.list_files()` instead.
|
|
620
619
|
"""
|
|
621
620
|
...
|
|
622
621
|
|
|
623
622
|
async def mkdir(self, path: str, parents: bool = False) -> None:
|
|
624
623
|
"""[Alpha] Create a new directory in the Sandbox.
|
|
625
624
|
|
|
626
|
-
|
|
627
|
-
Use `Sandbox.filesystem.make_directory()` instead.
|
|
625
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.make_directory()` instead.
|
|
628
626
|
"""
|
|
629
627
|
...
|
|
630
628
|
|
|
631
629
|
async def rm(self, path: str, recursive: bool = False) -> None:
|
|
632
630
|
"""[Alpha] Remove a file or directory in the Sandbox.
|
|
633
631
|
|
|
634
|
-
|
|
635
|
-
Use `Sandbox.filesystem.remove()` instead.
|
|
632
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.remove()` instead.
|
|
636
633
|
"""
|
|
637
634
|
...
|
|
638
635
|
|
|
@@ -1914,16 +1911,14 @@ class Sandbox(modal.object.Object):
|
|
|
1914
1911
|
def __call__(self, /, path: str) -> list[str]:
|
|
1915
1912
|
"""[Alpha] List the contents of a directory in the Sandbox.
|
|
1916
1913
|
|
|
1917
|
-
|
|
1918
|
-
Use `Sandbox.filesystem.list_files()` instead.
|
|
1914
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.list_files()` instead.
|
|
1919
1915
|
"""
|
|
1920
1916
|
...
|
|
1921
1917
|
|
|
1922
1918
|
async def aio(self, /, path: str) -> list[str]:
|
|
1923
1919
|
"""[Alpha] List the contents of a directory in the Sandbox.
|
|
1924
1920
|
|
|
1925
|
-
|
|
1926
|
-
Use `Sandbox.filesystem.list_files()` instead.
|
|
1921
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.list_files()` instead.
|
|
1927
1922
|
"""
|
|
1928
1923
|
...
|
|
1929
1924
|
|
|
@@ -1933,16 +1928,14 @@ class Sandbox(modal.object.Object):
|
|
|
1933
1928
|
def __call__(self, /, path: str, parents: bool = False) -> None:
|
|
1934
1929
|
"""[Alpha] Create a new directory in the Sandbox.
|
|
1935
1930
|
|
|
1936
|
-
|
|
1937
|
-
Use `Sandbox.filesystem.make_directory()` instead.
|
|
1931
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.make_directory()` instead.
|
|
1938
1932
|
"""
|
|
1939
1933
|
...
|
|
1940
1934
|
|
|
1941
1935
|
async def aio(self, /, path: str, parents: bool = False) -> None:
|
|
1942
1936
|
"""[Alpha] Create a new directory in the Sandbox.
|
|
1943
1937
|
|
|
1944
|
-
|
|
1945
|
-
Use `Sandbox.filesystem.make_directory()` instead.
|
|
1938
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.make_directory()` instead.
|
|
1946
1939
|
"""
|
|
1947
1940
|
...
|
|
1948
1941
|
|
|
@@ -1952,16 +1945,14 @@ class Sandbox(modal.object.Object):
|
|
|
1952
1945
|
def __call__(self, /, path: str, recursive: bool = False) -> None:
|
|
1953
1946
|
"""[Alpha] Remove a file or directory in the Sandbox.
|
|
1954
1947
|
|
|
1955
|
-
|
|
1956
|
-
Use `Sandbox.filesystem.remove()` instead.
|
|
1948
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.remove()` instead.
|
|
1957
1949
|
"""
|
|
1958
1950
|
...
|
|
1959
1951
|
|
|
1960
1952
|
async def aio(self, /, path: str, recursive: bool = False) -> None:
|
|
1961
1953
|
"""[Alpha] Remove a file or directory in the Sandbox.
|
|
1962
1954
|
|
|
1963
|
-
|
|
1964
|
-
Use `Sandbox.filesystem.remove()` instead.
|
|
1955
|
+
**Deprecated (2026-04-15):** Use `Sandbox.filesystem.remove()` instead.
|
|
1965
1956
|
"""
|
|
1966
1957
|
...
|
|
1967
1958
|
|
|
@@ -5304,7 +5304,7 @@ class Function(google.protobuf.message.Message):
|
|
|
5304
5304
|
def object_dependencies(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ObjectDependency]: ...
|
|
5305
5305
|
block_network: builtins.bool
|
|
5306
5306
|
max_inputs: builtins.int
|
|
5307
|
-
"""In the SDK, we've deprecated `max_inputs` (which only
|
|
5307
|
+
"""In the SDK, we've deprecated `max_inputs` (which only ever implemented `max_inputs=1`)
|
|
5308
5308
|
in favor of a boolean `single_use_containers` parameter.
|
|
5309
5309
|
"""
|
|
5310
5310
|
@property
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|