modal 1.1.1.dev4__tar.gz → 1.1.1.dev6__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.1.dev4 → modal-1.1.1.dev6}/PKG-INFO +1 -1
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_functions.py +45 -7
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/function_utils.py +13 -2
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/client.pyi +2 -2
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_version/__init__.py +1 -1
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/LICENSE +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/README.md +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/__main__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_clustered_functions.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_clustered_functions.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_container_entrypoint.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_ipython.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_location.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_object.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_output.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_partial_function.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_pty.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_resolver.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_resources.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_runtime/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_runtime/asgi.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_runtime/execution_context.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_runtime/telemetry.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_serialization.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_traceback.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_tunnel.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_tunnel.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_type_manager.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/app_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/async_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/blob_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/deprecation.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/docker_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/git_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/hash_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/http_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/logger.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/mount_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/name_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/package_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/shell_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_utils/time_utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_vendor/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_vendor/tblib.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/_watcher.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/app.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/app.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/call_graph.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/_download.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/_traceback.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/app.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/cluster.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/config.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/container.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/dict.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/entry_point.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/environment.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/import_refs.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/launch.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/network_file_system.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/profile.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/programs/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/programs/vscode.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/queues.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/run.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/secret.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/token.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/utils.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cli/volume.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/client.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cls.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/cls.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/config.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/container_process.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/container_process.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/dict.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/dict.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/environments.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/environments.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/exception.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/experimental/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/experimental/flash.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/experimental/flash.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/experimental/ipython.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/file_io.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/file_io.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/file_pattern_matcher.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/functions.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/functions.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/gpu.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/image.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/image.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/io_streams.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/io_streams.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/mount.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/mount.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/network_file_system.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/network_file_system.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/object.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/object.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/output.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/parallel_map.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/parallel_map.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/partial_function.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/partial_function.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/proxy.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/proxy.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/py.typed +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/queue.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/queue.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/requirements/2023.12.312.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/requirements/2023.12.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/requirements/2024.04.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/requirements/2024.10.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/requirements/2025.06.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/requirements/PREVIEW.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/requirements/README.md +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/requirements/base-images.json +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/retries.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/runner.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/runner.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/running_app.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/sandbox.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/sandbox.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/schedule.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/scheduler_placement.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/secret.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/secret.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/serving.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/serving.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/snapshot.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/snapshot.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/stream_type.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/token_flow.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/token_flow.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/volume.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal/volume.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal.egg-info/requires.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal.egg-info/top_level.txt +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_docs/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/__init__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/api.proto +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/api_grpc.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/api_pb2.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/options.proto +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/options_grpc.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/options_pb2.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_proto/py.typed +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/modal_version/__main__.py +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/pyproject.toml +0 -0
- {modal-1.1.1.dev4 → modal-1.1.1.dev6}/setup.cfg +0 -0
|
@@ -451,6 +451,33 @@ class _InputPlaneInvocation:
|
|
|
451
451
|
await_response.output.result, await_response.output.data_format, control_plane_stub, self.client
|
|
452
452
|
)
|
|
453
453
|
|
|
454
|
+
async def run_generator(self):
|
|
455
|
+
items_received = 0
|
|
456
|
+
# populated when self.run_function() completes
|
|
457
|
+
items_total: Union[int, None] = None
|
|
458
|
+
async with aclosing(
|
|
459
|
+
async_merge(
|
|
460
|
+
_stream_function_call_data(
|
|
461
|
+
self.client,
|
|
462
|
+
self.stub,
|
|
463
|
+
"",
|
|
464
|
+
variant="data_out",
|
|
465
|
+
attempt_token=self.attempt_token,
|
|
466
|
+
),
|
|
467
|
+
callable_to_agen(self.run_function),
|
|
468
|
+
)
|
|
469
|
+
) as streamer:
|
|
470
|
+
async for item in streamer:
|
|
471
|
+
if isinstance(item, api_pb2.GeneratorDone):
|
|
472
|
+
items_total = item.items_total
|
|
473
|
+
else:
|
|
474
|
+
yield item
|
|
475
|
+
items_received += 1
|
|
476
|
+
# The comparison avoids infinite loops if a non-deterministic generator is retried
|
|
477
|
+
# and produces less data in the second run than what was already sent.
|
|
478
|
+
if items_total is not None and items_received >= items_total:
|
|
479
|
+
break
|
|
480
|
+
|
|
454
481
|
@staticmethod
|
|
455
482
|
async def _get_metadata(input_plane_region: str, client: _Client) -> list[tuple[str, str]]:
|
|
456
483
|
if not input_plane_region:
|
|
@@ -1544,13 +1571,24 @@ Use the `Function.get_web_url()` method instead.
|
|
|
1544
1571
|
@live_method_gen
|
|
1545
1572
|
@synchronizer.no_input_translation
|
|
1546
1573
|
async def _call_generator(self, args, kwargs):
|
|
1547
|
-
invocation
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1574
|
+
invocation: Union[_Invocation, _InputPlaneInvocation]
|
|
1575
|
+
if self._input_plane_url:
|
|
1576
|
+
invocation = await _InputPlaneInvocation.create(
|
|
1577
|
+
self,
|
|
1578
|
+
args,
|
|
1579
|
+
kwargs,
|
|
1580
|
+
client=self.client,
|
|
1581
|
+
input_plane_url=self._input_plane_url,
|
|
1582
|
+
input_plane_region=self._input_plane_region,
|
|
1583
|
+
)
|
|
1584
|
+
else:
|
|
1585
|
+
invocation = await _Invocation.create(
|
|
1586
|
+
self,
|
|
1587
|
+
args,
|
|
1588
|
+
kwargs,
|
|
1589
|
+
client=self.client,
|
|
1590
|
+
function_call_invocation_type=api_pb2.FUNCTION_CALL_INVOCATION_TYPE_SYNC_LEGACY,
|
|
1591
|
+
)
|
|
1554
1592
|
async for res in invocation.run_generator():
|
|
1555
1593
|
yield res
|
|
1556
1594
|
|
|
@@ -385,9 +385,16 @@ def callable_has_non_self_non_default_params(f: Callable[..., Any]) -> bool:
|
|
|
385
385
|
|
|
386
386
|
|
|
387
387
|
async def _stream_function_call_data(
|
|
388
|
-
client,
|
|
388
|
+
client,
|
|
389
|
+
stub,
|
|
390
|
+
function_call_id: Optional[str],
|
|
391
|
+
variant: Literal["data_in", "data_out"],
|
|
392
|
+
attempt_token: Optional[str] = None,
|
|
389
393
|
) -> AsyncGenerator[Any, None]:
|
|
390
394
|
"""Read from the `data_in` or `data_out` stream of a function call."""
|
|
395
|
+
if function_call_id is None and attempt_token is None:
|
|
396
|
+
raise ValueError("function_call_id or attempt_token is required for data_out stream")
|
|
397
|
+
|
|
391
398
|
if stub is None:
|
|
392
399
|
stub = client.stub
|
|
393
400
|
|
|
@@ -405,7 +412,11 @@ async def _stream_function_call_data(
|
|
|
405
412
|
raise ValueError(f"Invalid variant {variant}")
|
|
406
413
|
|
|
407
414
|
while True:
|
|
408
|
-
req = api_pb2.FunctionCallGetDataRequest(
|
|
415
|
+
req = api_pb2.FunctionCallGetDataRequest(
|
|
416
|
+
function_call_id=function_call_id,
|
|
417
|
+
last_index=last_index,
|
|
418
|
+
attempt_token=attempt_token,
|
|
419
|
+
)
|
|
409
420
|
try:
|
|
410
421
|
async for chunk in stub_fn.unary_stream(req):
|
|
411
422
|
if chunk.index <= last_index:
|
|
@@ -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.1.
|
|
36
|
+
version: str = "1.1.1.dev6",
|
|
37
37
|
):
|
|
38
38
|
"""mdmd:hidden
|
|
39
39
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -163,7 +163,7 @@ class Client:
|
|
|
163
163
|
server_url: str,
|
|
164
164
|
client_type: int,
|
|
165
165
|
credentials: typing.Optional[tuple[str, str]],
|
|
166
|
-
version: str = "1.1.1.
|
|
166
|
+
version: str = "1.1.1.dev6",
|
|
167
167
|
):
|
|
168
168
|
"""mdmd:hidden
|
|
169
169
|
The Modal client object is not intended to be instantiated directly by users.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|