modal 1.0.0.dev13__tar.gz → 1.0.0.dev15__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.0.0.dev13 → modal-1.0.0.dev15}/PKG-INFO +1 -1
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_functions.py +3 -35
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/client.pyi +2 -2
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/functions.pyi +2 -22
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/api.proto +19 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/api_grpc.py +32 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/api_pb2.py +135 -103
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/api_pb2.pyi +60 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/api_pb2_grpc.py +66 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/api_pb2_grpc.pyi +20 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/modal_api_grpc.py +2 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_version/__init__.py +1 -1
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/LICENSE +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/README.md +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/__main__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_clustered_functions.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_clustered_functions.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_container_entrypoint.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_ipython.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_location.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_object.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_output.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_partial_function.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_pty.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_resolver.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_resources.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_runtime/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_runtime/asgi.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_runtime/execution_context.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_runtime/telemetry.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_serialization.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_traceback.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_tunnel.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_tunnel.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_type_manager.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/app_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/async_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/blob_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/deprecation.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/docker_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/function_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/git_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/hash_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/http_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/logger.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/mount_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/name_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/package_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_utils/shell_utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_vendor/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_vendor/tblib.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/_watcher.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/app.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/app.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/call_graph.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/_download.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/_traceback.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/app.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/cluster.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/config.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/container.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/dict.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/entry_point.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/environment.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/import_refs.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/launch.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/network_file_system.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/profile.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/programs/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/programs/vscode.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/queues.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/run.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/secret.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/token.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/utils.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cli/volume.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/client.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cls.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/cls.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/config.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/container_process.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/container_process.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/dict.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/dict.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/environments.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/environments.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/exception.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/experimental/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/experimental/ipython.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/file_io.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/file_io.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/file_pattern_matcher.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/functions.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/gpu.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/image.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/image.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/io_streams.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/io_streams.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/mount.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/mount.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/network_file_system.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/network_file_system.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/object.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/object.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/output.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/parallel_map.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/parallel_map.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/partial_function.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/partial_function.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/proxy.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/proxy.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/py.typed +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/queue.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/queue.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/requirements/2023.12.312.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/requirements/2023.12.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/requirements/2024.04.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/requirements/2024.10.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/requirements/PREVIEW.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/requirements/README.md +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/requirements/base-images.json +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/retries.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/runner.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/runner.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/running_app.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/sandbox.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/sandbox.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/schedule.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/scheduler_placement.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/secret.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/secret.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/serving.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/serving.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/snapshot.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/snapshot.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/stream_type.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/token_flow.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/token_flow.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/volume.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal/volume.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal.egg-info/requires.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal.egg-info/top_level.txt +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_docs/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/__init__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/options.proto +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/options_grpc.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/options_pb2.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_proto/py.typed +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/modal_version/__main__.py +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/pyproject.toml +0 -0
- {modal-1.0.0.dev13 → modal-1.0.0.dev15}/setup.cfg +0 -0
@@ -1508,20 +1508,6 @@ Use the `Function.get_web_url()` method instead.
|
|
1508
1508
|
async for res in invocation.run_generator():
|
1509
1509
|
yield res
|
1510
1510
|
|
1511
|
-
@synchronizer.no_io_translation
|
1512
|
-
async def _call_generator_nowait(self, args, kwargs):
|
1513
|
-
deprecation_warning(
|
1514
|
-
(2024, 12, 11),
|
1515
|
-
"Calling spawn on a generator function is deprecated and will soon raise an exception.",
|
1516
|
-
)
|
1517
|
-
return await _Invocation.create(
|
1518
|
-
self,
|
1519
|
-
args,
|
1520
|
-
kwargs,
|
1521
|
-
client=self.client,
|
1522
|
-
function_call_invocation_type=api_pb2.FUNCTION_CALL_INVOCATION_TYPE_ASYNC,
|
1523
|
-
)
|
1524
|
-
|
1525
1511
|
@synchronizer.no_io_translation
|
1526
1512
|
@live_method
|
1527
1513
|
async def remote(self, *args: P.args, **kwargs: P.kwargs) -> ReturnType:
|
@@ -1634,7 +1620,7 @@ Use the `Function.get_web_url()` method instead.
|
|
1634
1620
|
"""
|
1635
1621
|
self._check_no_web_url("_experimental_spawn")
|
1636
1622
|
if self._is_generator:
|
1637
|
-
|
1623
|
+
raise InvalidError("Cannot `spawn` a generator function.")
|
1638
1624
|
else:
|
1639
1625
|
invocation = await self._call_function_nowait(
|
1640
1626
|
args, kwargs, function_call_invocation_type=api_pb2.FUNCTION_CALL_INVOCATION_TYPE_ASYNC
|
@@ -1666,14 +1652,13 @@ Use the `Function.get_web_url()` method instead.
|
|
1666
1652
|
"""
|
1667
1653
|
self._check_no_web_url("spawn")
|
1668
1654
|
if self._is_generator:
|
1669
|
-
|
1655
|
+
raise InvalidError("Cannot `spawn` a generator function.")
|
1670
1656
|
else:
|
1671
1657
|
invocation = await self._call_function_nowait(args, kwargs, api_pb2.FUNCTION_CALL_INVOCATION_TYPE_ASYNC)
|
1672
1658
|
|
1673
1659
|
fc: _FunctionCall[ReturnType] = _FunctionCall._new_hydrated(
|
1674
1660
|
invocation.function_call_id, invocation.client, None
|
1675
1661
|
)
|
1676
|
-
fc._is_generator = self._is_generator if self._is_generator else False
|
1677
1662
|
return fc
|
1678
1663
|
|
1679
1664
|
def get_raw_f(self) -> Callable[..., Any]:
|
@@ -1732,22 +1717,8 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
|
|
1732
1717
|
|
1733
1718
|
The returned coroutine is not cancellation-safe.
|
1734
1719
|
"""
|
1735
|
-
|
1736
|
-
if self._is_generator:
|
1737
|
-
raise Exception("Cannot get the result of a generator function call. Use `get_gen` instead.")
|
1738
|
-
|
1739
1720
|
return await self._invocation().poll_function(timeout=timeout)
|
1740
1721
|
|
1741
|
-
async def get_gen(self) -> AsyncGenerator[Any, None]:
|
1742
|
-
"""
|
1743
|
-
Calls the generator remotely, executing it with the given arguments and returning the execution's result.
|
1744
|
-
"""
|
1745
|
-
if not self._is_generator:
|
1746
|
-
raise Exception("Cannot iterate over a non-generator function call. Use `get` instead.")
|
1747
|
-
|
1748
|
-
async for res in self._invocation().run_generator():
|
1749
|
-
yield res
|
1750
|
-
|
1751
1722
|
async def get_call_graph(self) -> list[InputInfo]:
|
1752
1723
|
"""Returns a structure representing the call graph from a given root
|
1753
1724
|
call ID, along with the status of execution for each node.
|
@@ -1778,9 +1749,7 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
|
|
1778
1749
|
await retry_transient_errors(self._client.stub.FunctionCallCancel, request)
|
1779
1750
|
|
1780
1751
|
@staticmethod
|
1781
|
-
async def from_id(
|
1782
|
-
function_call_id: str, client: Optional[_Client] = None, is_generator: bool = False
|
1783
|
-
) -> "_FunctionCall[Any]":
|
1752
|
+
async def from_id(function_call_id: str, client: Optional[_Client] = None) -> "_FunctionCall[Any]":
|
1784
1753
|
"""Instantiate a FunctionCall object from an existing ID.
|
1785
1754
|
|
1786
1755
|
Examples:
|
@@ -1803,7 +1772,6 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
|
|
1803
1772
|
client = await _Client.from_env()
|
1804
1773
|
|
1805
1774
|
fc: _FunctionCall[Any] = _FunctionCall._new_hydrated(function_call_id, client, None)
|
1806
|
-
fc._is_generator = is_generator
|
1807
1775
|
return fc
|
1808
1776
|
|
1809
1777
|
@staticmethod
|
@@ -31,7 +31,7 @@ class _Client:
|
|
31
31
|
server_url: str,
|
32
32
|
client_type: int,
|
33
33
|
credentials: typing.Optional[tuple[str, str]],
|
34
|
-
version: str = "1.0.0.
|
34
|
+
version: str = "1.0.0.dev15",
|
35
35
|
): ...
|
36
36
|
def is_closed(self) -> bool: ...
|
37
37
|
@property
|
@@ -94,7 +94,7 @@ class Client:
|
|
94
94
|
server_url: str,
|
95
95
|
client_type: int,
|
96
96
|
credentials: typing.Optional[tuple[str, str]],
|
97
|
-
version: str = "1.0.0.
|
97
|
+
version: str = "1.0.0.dev15",
|
98
98
|
): ...
|
99
99
|
def is_closed(self) -> bool: ...
|
100
100
|
@property
|
@@ -228,12 +228,6 @@ class Function(
|
|
228
228
|
|
229
229
|
_call_generator: ___call_generator_spec[typing_extensions.Self]
|
230
230
|
|
231
|
-
class ___call_generator_nowait_spec(typing_extensions.Protocol[SUPERSELF]):
|
232
|
-
def __call__(self, /, args, kwargs): ...
|
233
|
-
async def aio(self, /, args, kwargs): ...
|
234
|
-
|
235
|
-
_call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
|
236
|
-
|
237
231
|
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
238
232
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
239
233
|
async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
@@ -350,12 +344,6 @@ class FunctionCall(typing.Generic[modal._functions.ReturnType], modal.object.Obj
|
|
350
344
|
|
351
345
|
get: __get_spec[modal._functions.ReturnType, typing_extensions.Self]
|
352
346
|
|
353
|
-
class __get_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
354
|
-
def __call__(self, /) -> typing.Generator[typing.Any, None, None]: ...
|
355
|
-
def aio(self, /) -> collections.abc.AsyncGenerator[typing.Any, None]: ...
|
356
|
-
|
357
|
-
get_gen: __get_gen_spec[typing_extensions.Self]
|
358
|
-
|
359
347
|
class __get_call_graph_spec(typing_extensions.Protocol[SUPERSELF]):
|
360
348
|
def __call__(self, /) -> list[modal.call_graph.InputInfo]: ...
|
361
349
|
async def aio(self, /) -> list[modal.call_graph.InputInfo]: ...
|
@@ -370,18 +358,10 @@ class FunctionCall(typing.Generic[modal._functions.ReturnType], modal.object.Obj
|
|
370
358
|
|
371
359
|
class __from_id_spec(typing_extensions.Protocol):
|
372
360
|
def __call__(
|
373
|
-
self,
|
374
|
-
/,
|
375
|
-
function_call_id: str,
|
376
|
-
client: typing.Optional[modal.client.Client] = None,
|
377
|
-
is_generator: bool = False,
|
361
|
+
self, /, function_call_id: str, client: typing.Optional[modal.client.Client] = None
|
378
362
|
) -> FunctionCall[typing.Any]: ...
|
379
363
|
async def aio(
|
380
|
-
self,
|
381
|
-
/,
|
382
|
-
function_call_id: str,
|
383
|
-
client: typing.Optional[modal.client.Client] = None,
|
384
|
-
is_generator: bool = False,
|
364
|
+
self, /, function_call_id: str, client: typing.Optional[modal.client.Client] = None
|
385
365
|
) -> FunctionCall[typing.Any]: ...
|
386
366
|
|
387
367
|
from_id: __from_id_spec
|
@@ -2972,6 +2972,17 @@ message VolumeHeartbeatRequest {
|
|
2972
2972
|
string volume_id = 1;
|
2973
2973
|
}
|
2974
2974
|
|
2975
|
+
message VolumeListFiles2Request {
|
2976
|
+
string volume_id = 1;
|
2977
|
+
string path = 2;
|
2978
|
+
bool recursive = 4;
|
2979
|
+
optional uint32 max_entries = 3;
|
2980
|
+
}
|
2981
|
+
|
2982
|
+
message VolumeListFiles2Response {
|
2983
|
+
repeated FileEntry entries = 1;
|
2984
|
+
}
|
2985
|
+
|
2975
2986
|
message VolumeListFilesRequest {
|
2976
2987
|
string volume_id = 1;
|
2977
2988
|
string path = 2;
|
@@ -3090,6 +3101,12 @@ message VolumeReloadRequest {
|
|
3090
3101
|
string volume_id = 1;
|
3091
3102
|
}
|
3092
3103
|
|
3104
|
+
message VolumeRemoveFile2Request {
|
3105
|
+
string volume_id = 1 [ (modal.options.audit_target_attr) = true ];
|
3106
|
+
string path = 2;
|
3107
|
+
bool recursive = 3;
|
3108
|
+
}
|
3109
|
+
|
3093
3110
|
message VolumeRemoveFileRequest {
|
3094
3111
|
string volume_id = 1 [ (modal.options.audit_target_attr) = true ];
|
3095
3112
|
string path = 2;
|
@@ -3329,10 +3346,12 @@ service ModalClient {
|
|
3329
3346
|
rpc VolumeHeartbeat(VolumeHeartbeatRequest) returns (google.protobuf.Empty);
|
3330
3347
|
rpc VolumeList(VolumeListRequest) returns (VolumeListResponse);
|
3331
3348
|
rpc VolumeListFiles(VolumeListFilesRequest) returns (stream VolumeListFilesResponse);
|
3349
|
+
rpc VolumeListFiles2(VolumeListFiles2Request) returns (stream VolumeListFiles2Response);
|
3332
3350
|
rpc VolumePutFiles(VolumePutFilesRequest) returns (google.protobuf.Empty);
|
3333
3351
|
rpc VolumePutFiles2(VolumePutFiles2Request) returns (VolumePutFiles2Response);
|
3334
3352
|
rpc VolumeReload(VolumeReloadRequest) returns (google.protobuf.Empty);
|
3335
3353
|
rpc VolumeRemoveFile(VolumeRemoveFileRequest) returns (google.protobuf.Empty);
|
3354
|
+
rpc VolumeRemoveFile2(VolumeRemoveFile2Request) returns (google.protobuf.Empty);
|
3336
3355
|
rpc VolumeRename(VolumeRenameRequest) returns (google.protobuf.Empty);
|
3337
3356
|
|
3338
3357
|
// Workspaces
|
@@ -598,6 +598,10 @@ class ModalClientBase(abc.ABC):
|
|
598
598
|
async def VolumeListFiles(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.VolumeListFilesRequest, modal_proto.api_pb2.VolumeListFilesResponse]') -> None:
|
599
599
|
pass
|
600
600
|
|
601
|
+
@abc.abstractmethod
|
602
|
+
async def VolumeListFiles2(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.VolumeListFiles2Request, modal_proto.api_pb2.VolumeListFiles2Response]') -> None:
|
603
|
+
pass
|
604
|
+
|
601
605
|
@abc.abstractmethod
|
602
606
|
async def VolumePutFiles(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.VolumePutFilesRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
603
607
|
pass
|
@@ -614,6 +618,10 @@ class ModalClientBase(abc.ABC):
|
|
614
618
|
async def VolumeRemoveFile(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.VolumeRemoveFileRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
615
619
|
pass
|
616
620
|
|
621
|
+
@abc.abstractmethod
|
622
|
+
async def VolumeRemoveFile2(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.VolumeRemoveFile2Request, google.protobuf.empty_pb2.Empty]') -> None:
|
623
|
+
pass
|
624
|
+
|
617
625
|
@abc.abstractmethod
|
618
626
|
async def VolumeRename(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.VolumeRenameRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
619
627
|
pass
|
@@ -1494,6 +1502,12 @@ class ModalClientBase(abc.ABC):
|
|
1494
1502
|
modal_proto.api_pb2.VolumeListFilesRequest,
|
1495
1503
|
modal_proto.api_pb2.VolumeListFilesResponse,
|
1496
1504
|
),
|
1505
|
+
'/modal.client.ModalClient/VolumeListFiles2': grpclib.const.Handler(
|
1506
|
+
self.VolumeListFiles2,
|
1507
|
+
grpclib.const.Cardinality.UNARY_STREAM,
|
1508
|
+
modal_proto.api_pb2.VolumeListFiles2Request,
|
1509
|
+
modal_proto.api_pb2.VolumeListFiles2Response,
|
1510
|
+
),
|
1497
1511
|
'/modal.client.ModalClient/VolumePutFiles': grpclib.const.Handler(
|
1498
1512
|
self.VolumePutFiles,
|
1499
1513
|
grpclib.const.Cardinality.UNARY_UNARY,
|
@@ -1518,6 +1532,12 @@ class ModalClientBase(abc.ABC):
|
|
1518
1532
|
modal_proto.api_pb2.VolumeRemoveFileRequest,
|
1519
1533
|
google.protobuf.empty_pb2.Empty,
|
1520
1534
|
),
|
1535
|
+
'/modal.client.ModalClient/VolumeRemoveFile2': grpclib.const.Handler(
|
1536
|
+
self.VolumeRemoveFile2,
|
1537
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
1538
|
+
modal_proto.api_pb2.VolumeRemoveFile2Request,
|
1539
|
+
google.protobuf.empty_pb2.Empty,
|
1540
|
+
),
|
1521
1541
|
'/modal.client.ModalClient/VolumeRename': grpclib.const.Handler(
|
1522
1542
|
self.VolumeRename,
|
1523
1543
|
grpclib.const.Cardinality.UNARY_UNARY,
|
@@ -2406,6 +2426,12 @@ class ModalClientStub:
|
|
2406
2426
|
modal_proto.api_pb2.VolumeListFilesRequest,
|
2407
2427
|
modal_proto.api_pb2.VolumeListFilesResponse,
|
2408
2428
|
)
|
2429
|
+
self.VolumeListFiles2 = grpclib.client.UnaryStreamMethod(
|
2430
|
+
channel,
|
2431
|
+
'/modal.client.ModalClient/VolumeListFiles2',
|
2432
|
+
modal_proto.api_pb2.VolumeListFiles2Request,
|
2433
|
+
modal_proto.api_pb2.VolumeListFiles2Response,
|
2434
|
+
)
|
2409
2435
|
self.VolumePutFiles = grpclib.client.UnaryUnaryMethod(
|
2410
2436
|
channel,
|
2411
2437
|
'/modal.client.ModalClient/VolumePutFiles',
|
@@ -2430,6 +2456,12 @@ class ModalClientStub:
|
|
2430
2456
|
modal_proto.api_pb2.VolumeRemoveFileRequest,
|
2431
2457
|
google.protobuf.empty_pb2.Empty,
|
2432
2458
|
)
|
2459
|
+
self.VolumeRemoveFile2 = grpclib.client.UnaryUnaryMethod(
|
2460
|
+
channel,
|
2461
|
+
'/modal.client.ModalClient/VolumeRemoveFile2',
|
2462
|
+
modal_proto.api_pb2.VolumeRemoveFile2Request,
|
2463
|
+
google.protobuf.empty_pb2.Empty,
|
2464
|
+
)
|
2433
2465
|
self.VolumeRename = grpclib.client.UnaryUnaryMethod(
|
2434
2466
|
channel,
|
2435
2467
|
'/modal.client.ModalClient/VolumeRename',
|