modal 0.74.3__tar.gz → 0.74.5__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-0.74.3 → modal-0.74.5}/PKG-INFO +1 -1
- {modal-0.74.3 → modal-0.74.5}/modal/client.pyi +2 -2
- {modal-0.74.3 → modal-0.74.5}/modal/io_streams.py +20 -7
- {modal-0.74.3 → modal-0.74.5}/modal/io_streams.pyi +2 -2
- {modal-0.74.3 → modal-0.74.5}/modal.egg-info/PKG-INFO +1 -1
- {modal-0.74.3 → modal-0.74.5}/modal_proto/api.proto +3 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/api_pb2.py +87 -87
- {modal-0.74.3 → modal-0.74.5}/modal_proto/api_pb2.pyi +7 -1
- {modal-0.74.3 → modal-0.74.5}/modal_version/_version_generated.py +1 -1
- {modal-0.74.3 → modal-0.74.5}/LICENSE +0 -0
- {modal-0.74.3 → modal-0.74.5}/README.md +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/__main__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_clustered_functions.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_clustered_functions.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_container_entrypoint.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_functions.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_ipython.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_location.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_object.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_output.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_partial_function.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_pty.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_resolver.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_resources.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_runtime/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_runtime/asgi.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_runtime/container_io_manager.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_runtime/execution_context.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_runtime/execution_context.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_runtime/telemetry.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_runtime/user_code_imports.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_serialization.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_traceback.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_tunnel.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_tunnel.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_type_manager.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/app_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/async_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/blob_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/deprecation.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/docker_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/function_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/git_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/grpc_testing.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/grpc_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/hash_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/http_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/jwt_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/logger.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/mount_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/name_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/package_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/pattern_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_utils/shell_utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_vendor/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_vendor/cloudpickle.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_vendor/tblib.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/_watcher.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/app.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/app.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/call_graph.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/_download.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/_traceback.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/app.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/config.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/container.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/dict.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/entry_point.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/environment.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/import_refs.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/launch.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/network_file_system.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/profile.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/programs/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/programs/vscode.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/queues.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/run.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/secret.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/token.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/utils.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cli/volume.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/client.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cloud_bucket_mount.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cls.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/cls.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/config.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/container_process.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/container_process.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/dict.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/dict.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/environments.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/environments.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/exception.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/experimental/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/experimental/ipython.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/file_io.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/file_io.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/file_pattern_matcher.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/functions.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/functions.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/gpu.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/image.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/image.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/mount.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/mount.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/network_file_system.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/network_file_system.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/object.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/object.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/output.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/parallel_map.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/parallel_map.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/partial_function.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/partial_function.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/proxy.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/proxy.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/py.typed +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/queue.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/queue.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/requirements/2023.12.312.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/requirements/2023.12.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/requirements/2024.04.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/requirements/2024.10.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/requirements/PREVIEW.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/requirements/README.md +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/requirements/base-images.json +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/retries.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/runner.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/runner.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/running_app.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/sandbox.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/sandbox.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/schedule.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/scheduler_placement.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/secret.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/secret.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/serving.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/serving.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/snapshot.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/snapshot.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/stream_type.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/token_flow.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/token_flow.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/volume.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal/volume.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal.egg-info/SOURCES.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal.egg-info/dependency_links.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal.egg-info/entry_points.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal.egg-info/requires.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal.egg-info/top_level.txt +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_docs/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_docs/gen_cli_docs.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_docs/gen_reference_docs.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_docs/mdmd/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_docs/mdmd/signatures.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/api_grpc.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/modal_api_grpc.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/modal_options_grpc.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/options.proto +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/options_grpc.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/options_pb2.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/options_pb2.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_proto/py.typed +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_version/__init__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/modal_version/__main__.py +0 -0
- {modal-0.74.3 → modal-0.74.5}/pyproject.toml +0 -0
- {modal-0.74.3 → modal-0.74.5}/setup.cfg +0 -0
@@ -27,7 +27,7 @@ class _Client:
|
|
27
27
|
_snapshotted: bool
|
28
28
|
|
29
29
|
def __init__(
|
30
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.5"
|
31
31
|
): ...
|
32
32
|
def is_closed(self) -> bool: ...
|
33
33
|
@property
|
@@ -85,7 +85,7 @@ class Client:
|
|
85
85
|
_snapshotted: bool
|
86
86
|
|
87
87
|
def __init__(
|
88
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.
|
88
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.5"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
@@ -46,17 +46,24 @@ async def _sandbox_logs_iterator(
|
|
46
46
|
|
47
47
|
|
48
48
|
async def _container_process_logs_iterator(
|
49
|
-
process_id: str,
|
50
|
-
|
49
|
+
process_id: str,
|
50
|
+
file_descriptor: "api_pb2.FileDescriptor.ValueType",
|
51
|
+
client: _Client,
|
52
|
+
last_index: int,
|
53
|
+
) -> AsyncGenerator[tuple[Optional[bytes], int], None]:
|
51
54
|
req = api_pb2.ContainerExecGetOutputRequest(
|
52
|
-
exec_id=process_id,
|
55
|
+
exec_id=process_id,
|
56
|
+
timeout=55,
|
57
|
+
file_descriptor=file_descriptor,
|
58
|
+
get_raw_bytes=True,
|
59
|
+
last_batch_index=last_index,
|
53
60
|
)
|
54
61
|
async for batch in client.stub.ContainerExecGetOutput.unary_stream(req):
|
55
62
|
if batch.HasField("exit_code"):
|
56
|
-
yield None
|
63
|
+
yield None, batch.batch_index
|
57
64
|
break
|
58
65
|
for item in batch.items:
|
59
|
-
yield item.message_bytes
|
66
|
+
yield item.message_bytes, batch.batch_index
|
60
67
|
|
61
68
|
|
62
69
|
T = TypeVar("T", str, bytes)
|
@@ -178,18 +185,24 @@ class _StreamReader(Generic[T]):
|
|
178
185
|
|
179
186
|
completed = False
|
180
187
|
retries_remaining = 10
|
188
|
+
last_index = 0
|
181
189
|
while not completed:
|
182
190
|
try:
|
183
|
-
iterator = _container_process_logs_iterator(
|
191
|
+
iterator = _container_process_logs_iterator(
|
192
|
+
self._object_id, self._file_descriptor, self._client, last_index
|
193
|
+
)
|
184
194
|
|
185
|
-
async for message in iterator:
|
195
|
+
async for message, batch_index in iterator:
|
186
196
|
if self._stream_type == StreamType.STDOUT and message:
|
187
197
|
print(message.decode("utf-8"), end="")
|
188
198
|
elif self._stream_type == StreamType.PIPE:
|
189
199
|
self._container_process_buffer.append(message)
|
200
|
+
|
190
201
|
if message is None:
|
191
202
|
completed = True
|
192
203
|
break
|
204
|
+
else:
|
205
|
+
last_index = batch_index
|
193
206
|
|
194
207
|
except (GRPCError, StreamTerminatedError, ClientClosed) as exc:
|
195
208
|
if retries_remaining > 0:
|
@@ -8,8 +8,8 @@ def _sandbox_logs_iterator(
|
|
8
8
|
sandbox_id: str, file_descriptor: int, last_entry_id: str, client: modal.client._Client
|
9
9
|
) -> collections.abc.AsyncGenerator[tuple[typing.Optional[bytes], str], None]: ...
|
10
10
|
def _container_process_logs_iterator(
|
11
|
-
process_id: str, file_descriptor: int, client: modal.client._Client
|
12
|
-
) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]: ...
|
11
|
+
process_id: str, file_descriptor: int, client: modal.client._Client, last_index: int
|
12
|
+
) -> collections.abc.AsyncGenerator[tuple[typing.Optional[bytes], int], None]: ...
|
13
13
|
|
14
14
|
T = typing.TypeVar("T")
|
15
15
|
|
@@ -2946,6 +2946,9 @@ message VolumePutFiles2Request {
|
|
2946
2946
|
|
2947
2947
|
// The blocks, in units of 8MiB, that this file consists of.
|
2948
2948
|
repeated Block blocks = 3;
|
2949
|
+
|
2950
|
+
// Unix file permission bits `st_mode`.
|
2951
|
+
optional uint32 mode = 4;
|
2949
2952
|
}
|
2950
2953
|
|
2951
2954
|
message Block {
|