modal 1.1.5.dev83__tar.gz → 1.1.5.dev84__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.dev83 → modal-1.1.5.dev84}/PKG-INFO +1 -1
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/client.pyi +2 -2
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/functions.pyi +6 -6
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/parallel_map.py +13 -13
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_version/__init__.py +1 -1
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/LICENSE +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/README.md +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/__main__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_clustered_functions.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_clustered_functions.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_container_entrypoint.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_functions.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_ipython.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_location.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_object.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_output.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_partial_function.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_pty.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_resolver.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_resources.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_runtime/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_runtime/asgi.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_runtime/execution_context.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_runtime/telemetry.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_serialization.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_traceback.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_tunnel.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_tunnel.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_type_manager.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/app_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/async_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/blob_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/deprecation.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/docker_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/function_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/git_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/hash_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/http_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/logger.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/mount_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/name_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/package_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/shell_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_utils/time_utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_vendor/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_vendor/tblib.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/_watcher.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/app.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/app.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/builder/2023.12.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/builder/2024.04.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/builder/2024.10.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/builder/2025.06.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/builder/README.md +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/builder/base-images.json +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/call_graph.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/_download.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/_traceback.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/app.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/cluster.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/config.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/container.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/dict.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/entry_point.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/environment.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/import_refs.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/launch.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/network_file_system.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/profile.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/programs/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/programs/vscode.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/queues.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/run.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/secret.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/token.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/utils.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cli/volume.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/client.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cls.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/cls.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/config.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/container_process.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/container_process.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/dict.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/dict.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/environments.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/environments.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/exception.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/experimental/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/experimental/flash.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/experimental/flash.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/experimental/ipython.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/file_io.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/file_io.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/file_pattern_matcher.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/functions.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/gpu.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/image.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/image.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/io_streams.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/io_streams.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/mount.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/mount.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/network_file_system.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/network_file_system.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/object.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/object.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/output.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/parallel_map.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/partial_function.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/partial_function.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/proxy.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/proxy.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/py.typed +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/queue.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/queue.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/retries.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/runner.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/runner.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/running_app.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/sandbox.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/sandbox.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/schedule.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/scheduler_placement.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/secret.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/secret.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/serving.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/serving.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/snapshot.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/snapshot.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/stream_type.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/token_flow.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/token_flow.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/volume.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal/volume.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal.egg-info/requires.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal.egg-info/top_level.txt +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_docs/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/__init__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/api.proto +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/api_grpc.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/api_pb2.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/options.proto +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/options_grpc.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/options_pb2.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/py.typed +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/sandbox_router.proto +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/sandbox_router_grpc.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/sandbox_router_pb2.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/sandbox_router_pb2.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/modal_version/__main__.py +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/pyproject.toml +0 -0
- {modal-1.1.5.dev83 → modal-1.1.5.dev84}/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.dev84",
|
|
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.dev84",
|
|
168
168
|
):
|
|
169
169
|
"""mdmd:hidden
|
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -401,7 +401,7 @@ class Function(
|
|
|
401
401
|
|
|
402
402
|
_call_generator: ___call_generator_spec[typing_extensions.Self]
|
|
403
403
|
|
|
404
|
-
class __remote_spec(typing_extensions.Protocol[
|
|
404
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
405
405
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
|
|
406
406
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
407
407
|
...
|
|
@@ -410,7 +410,7 @@ class Function(
|
|
|
410
410
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
411
411
|
...
|
|
412
412
|
|
|
413
|
-
remote: __remote_spec[modal._functions.
|
|
413
|
+
remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
414
414
|
|
|
415
415
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
416
416
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
|
|
@@ -437,7 +437,7 @@ class Function(
|
|
|
437
437
|
"""
|
|
438
438
|
...
|
|
439
439
|
|
|
440
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
|
440
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
441
441
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
442
442
|
"""[Experimental] Calls the function with the given arguments, without waiting for the results.
|
|
443
443
|
|
|
@@ -461,7 +461,7 @@ class Function(
|
|
|
461
461
|
...
|
|
462
462
|
|
|
463
463
|
_experimental_spawn: ___experimental_spawn_spec[
|
|
464
|
-
modal._functions.
|
|
464
|
+
modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
|
|
465
465
|
]
|
|
466
466
|
|
|
467
467
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
|
|
@@ -470,7 +470,7 @@ class Function(
|
|
|
470
470
|
|
|
471
471
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
|
|
472
472
|
|
|
473
|
-
class __spawn_spec(typing_extensions.Protocol[
|
|
473
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
474
474
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
475
475
|
"""Calls the function with the given arguments, without waiting for the results.
|
|
476
476
|
|
|
@@ -491,7 +491,7 @@ class Function(
|
|
|
491
491
|
"""
|
|
492
492
|
...
|
|
493
493
|
|
|
494
|
-
spawn: __spawn_spec[modal._functions.
|
|
494
|
+
spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
495
495
|
|
|
496
496
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
|
|
497
497
|
"""Return the inner Python object wrapped by this Modal Function."""
|
|
@@ -671,8 +671,8 @@ async def _map_invocation_inputplane(
|
|
|
671
671
|
last_entry_id = ""
|
|
672
672
|
|
|
673
673
|
# The input-plane server returns this after the first request.
|
|
674
|
-
|
|
675
|
-
|
|
674
|
+
map_token = None
|
|
675
|
+
map_token_received = asyncio.Event()
|
|
676
676
|
|
|
677
677
|
# Single priority queue that holds *both* fresh inputs (timestamp == now)
|
|
678
678
|
# and future retries (timestamp > now).
|
|
@@ -751,7 +751,7 @@ async def _map_invocation_inputplane(
|
|
|
751
751
|
yield
|
|
752
752
|
|
|
753
753
|
async def pump_inputs():
|
|
754
|
-
nonlocal
|
|
754
|
+
nonlocal map_token, max_inputs_outstanding
|
|
755
755
|
async for batch in queue_batch_iterator(queue, max_batch_size=MAP_INVOCATION_CHUNK_SIZE):
|
|
756
756
|
# Convert the queued items into the proto format expected by the RPC.
|
|
757
757
|
request_items: list[api_pb2.MapStartOrContinueItem] = [
|
|
@@ -763,7 +763,7 @@ async def _map_invocation_inputplane(
|
|
|
763
763
|
# Build request
|
|
764
764
|
request = api_pb2.MapStartOrContinueRequest(
|
|
765
765
|
function_id=function.object_id,
|
|
766
|
-
|
|
766
|
+
map_token=map_token,
|
|
767
767
|
parent_input_id=current_input_id() or "",
|
|
768
768
|
items=request_items,
|
|
769
769
|
)
|
|
@@ -789,9 +789,9 @@ async def _map_invocation_inputplane(
|
|
|
789
789
|
|
|
790
790
|
# Set the function call id and actual retry policy with the data from the first response.
|
|
791
791
|
# This conditional is skipped for subsequent iterations of this for-loop.
|
|
792
|
-
if
|
|
793
|
-
|
|
794
|
-
|
|
792
|
+
if map_token is None:
|
|
793
|
+
map_token = response.map_token
|
|
794
|
+
map_token_received.set()
|
|
795
795
|
max_inputs_outstanding = response.max_inputs_outstanding or MAX_INPUTS_OUTSTANDING_DEFAULT
|
|
796
796
|
map_items_manager.set_retry_policy(response.retry_policy)
|
|
797
797
|
# Update the retry policy for the first batch of inputs.
|
|
@@ -804,8 +804,8 @@ async def _map_invocation_inputplane(
|
|
|
804
804
|
nonlocal last_entry_id # shared with get_all_outputs
|
|
805
805
|
try:
|
|
806
806
|
while not map_done_event.is_set():
|
|
807
|
-
if
|
|
808
|
-
await
|
|
807
|
+
if map_token is None:
|
|
808
|
+
await map_token_received.wait()
|
|
809
809
|
continue
|
|
810
810
|
|
|
811
811
|
sleep_task = asyncio.create_task(asyncio.sleep(1))
|
|
@@ -847,12 +847,12 @@ async def _map_invocation_inputplane(
|
|
|
847
847
|
last_entry_id
|
|
848
848
|
|
|
849
849
|
while not map_done_event.is_set():
|
|
850
|
-
if
|
|
851
|
-
await
|
|
850
|
+
if map_token is None:
|
|
851
|
+
await map_token_received.wait()
|
|
852
852
|
continue
|
|
853
853
|
|
|
854
854
|
request = api_pb2.MapAwaitRequest(
|
|
855
|
-
|
|
855
|
+
map_token=map_token,
|
|
856
856
|
last_entry_id=last_entry_id,
|
|
857
857
|
requested_at=time.time(),
|
|
858
858
|
timeout=OUTPUTS_TIMEOUT,
|
|
@@ -963,7 +963,7 @@ async def _map_invocation_inputplane(
|
|
|
963
963
|
f"Map stats:\nsuccessful_completions={successful_completions} failed_completions={failed_completions} "
|
|
964
964
|
f"no_context_duplicates={no_context_duplicates} stale_retry_duplicates={stale_retry_duplicates} "
|
|
965
965
|
f"already_complete_duplicates={already_complete_duplicates} retried_outputs={retried_outputs} "
|
|
966
|
-
f"
|
|
966
|
+
f"map_token={map_token} max_inputs_outstanding={max_inputs_outstanding} "
|
|
967
967
|
f"map_items_manager_size={len(map_items_manager)} input_queue_size={input_queue_size}"
|
|
968
968
|
)
|
|
969
969
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|