modal 1.1.5.dev89__tar.gz → 1.1.5.dev91__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.
Potentially problematic release.
This version of modal might be problematic. Click here for more details.
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/PKG-INFO +1 -1
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/client.pyi +2 -2
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cls.py +21 -11
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/sandbox_router.proto +2 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/sandbox_router_pb2.py +2 -1
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_version/__init__.py +1 -1
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/LICENSE +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/README.md +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/__main__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_billing.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_clustered_functions.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_clustered_functions.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_container_entrypoint.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_functions.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_ipython.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_location.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_object.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_output.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_partial_function.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_pty.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_resolver.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_resources.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_runtime/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_runtime/asgi.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_runtime/execution_context.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_runtime/telemetry.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_serialization.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_traceback.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_tunnel.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_tunnel.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_type_manager.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/app_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/async_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/blob_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/deprecation.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/docker_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/function_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/git_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/hash_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/http_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/logger.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/mount_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/name_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/package_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/shell_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_utils/time_utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_vendor/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_vendor/tblib.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/_watcher.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/app.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/app.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/billing.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/builder/2023.12.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/builder/2024.04.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/builder/2024.10.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/builder/2025.06.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/builder/README.md +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/builder/base-images.json +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/call_graph.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/_download.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/_traceback.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/app.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/cluster.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/config.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/container.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/dict.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/entry_point.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/environment.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/import_refs.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/launch.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/network_file_system.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/profile.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/programs/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/programs/vscode.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/queues.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/run.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/secret.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/token.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/utils.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cli/volume.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/client.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/cls.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/config.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/container_process.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/container_process.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/dict.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/dict.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/environments.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/environments.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/exception.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/experimental/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/experimental/flash.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/experimental/flash.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/experimental/ipython.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/file_io.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/file_io.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/file_pattern_matcher.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/functions.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/functions.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/gpu.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/image.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/image.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/io_streams.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/io_streams.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/mount.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/mount.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/network_file_system.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/network_file_system.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/object.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/object.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/output.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/parallel_map.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/parallel_map.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/partial_function.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/partial_function.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/proxy.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/proxy.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/py.typed +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/queue.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/queue.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/retries.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/runner.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/runner.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/running_app.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/sandbox.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/sandbox.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/schedule.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/scheduler_placement.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/secret.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/secret.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/serving.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/serving.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/snapshot.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/snapshot.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/stream_type.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/token_flow.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/token_flow.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/volume.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal/volume.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal.egg-info/requires.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal.egg-info/top_level.txt +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_docs/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/__init__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/api.proto +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/api_grpc.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/api_pb2.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/py.typed +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/sandbox_router_grpc.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/sandbox_router_pb2.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/task_command_router.proto +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/modal_version/__main__.py +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/pyproject.toml +0 -0
- {modal-1.1.5.dev89 → modal-1.1.5.dev91}/setup.cfg +0 -0
|
@@ -33,7 +33,7 @@ class _Client:
|
|
|
33
33
|
server_url: str,
|
|
34
34
|
client_type: int,
|
|
35
35
|
credentials: typing.Optional[tuple[str, str]],
|
|
36
|
-
version: str = "1.1.5.
|
|
36
|
+
version: str = "1.1.5.dev91",
|
|
37
37
|
):
|
|
38
38
|
"""mdmd:hidden
|
|
39
39
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -164,7 +164,7 @@ class Client:
|
|
|
164
164
|
server_url: str,
|
|
165
165
|
client_type: int,
|
|
166
166
|
credentials: typing.Optional[tuple[str, str]],
|
|
167
|
-
version: str = "1.1.5.
|
|
167
|
+
version: str = "1.1.5.dev91",
|
|
168
168
|
):
|
|
169
169
|
"""mdmd:hidden
|
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -863,18 +863,28 @@ More information on class parameterization can be found here: https://modal.com/
|
|
|
863
863
|
)
|
|
864
864
|
|
|
865
865
|
def __getattr__(self, k):
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
# if
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
866
|
+
if self._user_cls is not None:
|
|
867
|
+
# local class, we can check if there are static attributes and let the user access them
|
|
868
|
+
# except if they are PartialFunction (i.e. methods)
|
|
869
|
+
v = getattr(self._user_cls, k)
|
|
870
|
+
if not isinstance(v, modal.partial_function.PartialFunction):
|
|
871
|
+
return v
|
|
872
|
+
|
|
873
|
+
# We create a synthetic dummy Function that is guaranteed to raise an AttributeError when
|
|
874
|
+
# a user tries to use any of its "live methods" - this lets us raise exceptions for users
|
|
875
|
+
# only if they try to access methods on a Cls as if they were methods on the instance.
|
|
876
|
+
async def method_loader(fun: _Function, resolver: Resolver, existing_object_id: Optional[str]):
|
|
877
|
+
raise AttributeError(
|
|
878
|
+
"You can't access methods on a Cls directly - Did you forget to instantiate the class first?\n"
|
|
879
|
+
"e.g. instead of MyClass.method.remote(), do MyClass().method.remote()"
|
|
874
880
|
)
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
881
|
+
|
|
882
|
+
return _Function._from_loader(
|
|
883
|
+
method_loader,
|
|
884
|
+
rep=f"UnboundMethod({self._name}.{k})",
|
|
885
|
+
deps=lambda: [],
|
|
886
|
+
hydrate_lazily=True,
|
|
887
|
+
)
|
|
878
888
|
|
|
879
889
|
def _is_local(self) -> bool:
|
|
880
890
|
return self._user_cls is not None
|
|
@@ -16,7 +16,7 @@ _sym_db = _symbol_database.Default()
|
|
|
16
16
|
from modal_proto import api_pb2 as modal__proto_dot_api__pb2
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n modal_proto/sandbox_router.proto\x12\x14modal.sandbox_router\x1a\x15modal_proto/api.proto\":\n\x16SandboxExecPollRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"J\n\x17SandboxExecPollResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status\"\x91\x03\n\x17SandboxExecStartRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x14\n\x0c\x63ommand_args\x18\x03 \x03(\t\x12\x44\n\rstdout_config\x18\x04 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStdoutConfig\x12\x44\n\rstderr_config\x18\x05 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStderrConfig\x12\x19\n\x0ctimeout_secs\x18\x06 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07workdir\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x12\n\nsecret_ids\x18\x08 \x03(\t\x12,\n\x08pty_info\x18\t \x01(\x0b\x32\x15.modal.client.PTYInfoH\x02\x88\x01\x01\x12\x15\n\rruntime_debug\x18\n \x01(\x08\x42\x0f\n\r_timeout_secsB\n\n\x08_workdirB\x0b\n\t_pty_info\"\x1a\n\x18SandboxExecStartResponse\"k\n\x1cSandboxExecStdinWriteRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0b\n\x03\x65of\x18\x05 \x01(\x08\"\x1f\n\x1dSandboxExecStdinWriteResponse\"\x9e\x01\n\x1bSandboxExecStdioReadRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12M\n\x0f\x66ile_descriptor\x18\x04 \x01(\x0e\x32\x34.modal.sandbox_router.SandboxExecStdioFileDescriptor\",\n\x1cSandboxExecStdioReadResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\":\n\x16SandboxExecWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"J\n\x17SandboxExecWaitResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status*\x8d\x01\n\x17SandboxExecStderrConfig\x12&\n\"SANDBOX_EXEC_STDERR_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDERR_CONFIG_PIPE\x10\x01\x12%\n!SANDBOX_EXEC_STDERR_CONFIG_STDOUT\x10\x02*~\n\x1eSandboxExecStdioFileDescriptor\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*f\n\x17SandboxExecStdoutConfig\x12&\n\"SANDBOX_EXEC_STDOUT_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDOUT_CONFIG_PIPE\x10\x01\x32\xe6\x04\n\rSandboxRouter\x12n\n\x0fSandboxExecPoll\x12,.modal.sandbox_router.SandboxExecPollRequest\x1a-.modal.sandbox_router.SandboxExecPollResponse\x12q\n\x10SandboxExecStart\x12-.modal.sandbox_router.SandboxExecStartRequest\x1a..modal.sandbox_router.SandboxExecStartResponse\x12\x80\x01\n\x15SandboxExecStdinWrite\x12\x32.modal.sandbox_router.SandboxExecStdinWriteRequest\x1a\x33.modal.sandbox_router.SandboxExecStdinWriteResponse\x12\x7f\n\x14SandboxExecStdioRead\x12\x31.modal.sandbox_router.SandboxExecStdioReadRequest\x1a\x32.modal.sandbox_router.SandboxExecStdioReadResponse0\x01\x12n\n\x0fSandboxExecWait\x12,.modal.sandbox_router.SandboxExecWaitRequest\x1a-.modal.sandbox_router.
|
|
19
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n modal_proto/sandbox_router.proto\x12\x14modal.sandbox_router\x1a\x15modal_proto/api.proto\":\n\x16SandboxExecPollRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"J\n\x17SandboxExecPollResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status\"\x91\x03\n\x17SandboxExecStartRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x14\n\x0c\x63ommand_args\x18\x03 \x03(\t\x12\x44\n\rstdout_config\x18\x04 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStdoutConfig\x12\x44\n\rstderr_config\x18\x05 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStderrConfig\x12\x19\n\x0ctimeout_secs\x18\x06 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07workdir\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x12\n\nsecret_ids\x18\x08 \x03(\t\x12,\n\x08pty_info\x18\t \x01(\x0b\x32\x15.modal.client.PTYInfoH\x02\x88\x01\x01\x12\x15\n\rruntime_debug\x18\n \x01(\x08\x42\x0f\n\r_timeout_secsB\n\n\x08_workdirB\x0b\n\t_pty_info\"\x1a\n\x18SandboxExecStartResponse\"k\n\x1cSandboxExecStdinWriteRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0b\n\x03\x65of\x18\x05 \x01(\x08\"\x1f\n\x1dSandboxExecStdinWriteResponse\"\x9e\x01\n\x1bSandboxExecStdioReadRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12M\n\x0f\x66ile_descriptor\x18\x04 \x01(\x0e\x32\x34.modal.sandbox_router.SandboxExecStdioFileDescriptor\",\n\x1cSandboxExecStdioReadResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\":\n\x16SandboxExecWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"J\n\x17SandboxExecWaitResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status*\x8d\x01\n\x17SandboxExecStderrConfig\x12&\n\"SANDBOX_EXEC_STDERR_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDERR_CONFIG_PIPE\x10\x01\x12%\n!SANDBOX_EXEC_STDERR_CONFIG_STDOUT\x10\x02*~\n\x1eSandboxExecStdioFileDescriptor\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*f\n\x17SandboxExecStdoutConfig\x12&\n\"SANDBOX_EXEC_STDOUT_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDOUT_CONFIG_PIPE\x10\x01\x32\xe6\x04\n\rSandboxRouter\x12n\n\x0fSandboxExecPoll\x12,.modal.sandbox_router.SandboxExecPollRequest\x1a-.modal.sandbox_router.SandboxExecPollResponse\x12q\n\x10SandboxExecStart\x12-.modal.sandbox_router.SandboxExecStartRequest\x1a..modal.sandbox_router.SandboxExecStartResponse\x12\x80\x01\n\x15SandboxExecStdinWrite\x12\x32.modal.sandbox_router.SandboxExecStdinWriteRequest\x1a\x33.modal.sandbox_router.SandboxExecStdinWriteResponse\x12\x7f\n\x14SandboxExecStdioRead\x12\x31.modal.sandbox_router.SandboxExecStdioReadRequest\x1a\x32.modal.sandbox_router.SandboxExecStdioReadResponse0\x01\x12n\n\x0fSandboxExecWait\x12,.modal.sandbox_router.SandboxExecWaitRequest\x1a-.modal.sandbox_router.SandboxExecWaitResponseB&Z$github.com/modal-labs/modal/go/protob\x06proto3')
|
|
20
20
|
|
|
21
21
|
_SANDBOXEXECSTDERRCONFIG = DESCRIPTOR.enum_types_by_name['SandboxExecStderrConfig']
|
|
22
22
|
SandboxExecStderrConfig = enum_type_wrapper.EnumTypeWrapper(_SANDBOXEXECSTDERRCONFIG)
|
|
@@ -117,6 +117,7 @@ _SANDBOXROUTER = DESCRIPTOR.services_by_name['SandboxRouter']
|
|
|
117
117
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
118
118
|
|
|
119
119
|
DESCRIPTOR._options = None
|
|
120
|
+
DESCRIPTOR._serialized_options = b'Z$github.com/modal-labs/modal/go/proto'
|
|
120
121
|
_SANDBOXEXECSTDERRCONFIG._serialized_start=1135
|
|
121
122
|
_SANDBOXEXECSTDERRCONFIG._serialized_end=1276
|
|
122
123
|
_SANDBOXEXECSTDIOFILEDESCRIPTOR._serialized_start=1278
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|