modal 1.2.1.dev10__py3-none-any.whl → 1.2.1.dev12__py3-none-any.whl
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/client.pyi +2 -2
- modal/container_process.py +9 -1
- modal/io_streams.py +290 -44
- modal/io_streams.pyi +166 -95
- {modal-1.2.1.dev10.dist-info → modal-1.2.1.dev12.dist-info}/METADATA +1 -1
- {modal-1.2.1.dev10.dist-info → modal-1.2.1.dev12.dist-info}/RECORD +18 -18
- modal_proto/api.proto +0 -15
- modal_proto/api_grpc.py +0 -16
- modal_proto/api_pb2.py +331 -351
- modal_proto/api_pb2.pyi +0 -38
- modal_proto/api_pb2_grpc.py +0 -33
- modal_proto/api_pb2_grpc.pyi +0 -10
- modal_proto/modal_api_grpc.py +0 -1
- modal_version/__init__.py +1 -1
- {modal-1.2.1.dev10.dist-info → modal-1.2.1.dev12.dist-info}/WHEEL +0 -0
- {modal-1.2.1.dev10.dist-info → modal-1.2.1.dev12.dist-info}/entry_points.txt +0 -0
- {modal-1.2.1.dev10.dist-info → modal-1.2.1.dev12.dist-info}/licenses/LICENSE +0 -0
- {modal-1.2.1.dev10.dist-info → modal-1.2.1.dev12.dist-info}/top_level.txt +0 -0
modal/io_streams.pyi
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import collections.abc
|
|
2
|
+
import modal._utils.task_command_router_client
|
|
2
3
|
import modal.client
|
|
3
4
|
import modal.stream_type
|
|
4
5
|
import typing
|
|
@@ -17,6 +18,167 @@ def _container_process_logs_iterator(
|
|
|
17
18
|
|
|
18
19
|
T = typing.TypeVar("T")
|
|
19
20
|
|
|
21
|
+
class _StreamReaderThroughServer(typing.Generic[T]):
|
|
22
|
+
"""A StreamReader implementation that reads from the server."""
|
|
23
|
+
|
|
24
|
+
_stream: typing.Optional[collections.abc.AsyncGenerator[typing.Optional[bytes], None]]
|
|
25
|
+
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
file_descriptor: int,
|
|
29
|
+
object_id: str,
|
|
30
|
+
object_type: typing.Literal["sandbox", "container_process"],
|
|
31
|
+
client: modal.client._Client,
|
|
32
|
+
stream_type: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
|
|
33
|
+
text: bool = True,
|
|
34
|
+
by_line: bool = False,
|
|
35
|
+
deadline: typing.Optional[float] = None,
|
|
36
|
+
) -> None:
|
|
37
|
+
"""mdmd:hidden"""
|
|
38
|
+
...
|
|
39
|
+
|
|
40
|
+
@property
|
|
41
|
+
def file_descriptor(self) -> int:
|
|
42
|
+
"""Possible values are `1` for stdout and `2` for stderr."""
|
|
43
|
+
...
|
|
44
|
+
|
|
45
|
+
async def read(self) -> T:
|
|
46
|
+
"""Fetch the entire contents of the stream until EOF."""
|
|
47
|
+
...
|
|
48
|
+
|
|
49
|
+
async def _consume_container_process_stream(self):
|
|
50
|
+
"""Consume the container process stream and store messages in the buffer."""
|
|
51
|
+
...
|
|
52
|
+
|
|
53
|
+
def _stream_container_process(self) -> collections.abc.AsyncGenerator[tuple[typing.Optional[bytes], str], None]:
|
|
54
|
+
"""Streams the container process buffer to the reader."""
|
|
55
|
+
...
|
|
56
|
+
|
|
57
|
+
def _get_logs(
|
|
58
|
+
self, skip_empty_messages: bool = True
|
|
59
|
+
) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]:
|
|
60
|
+
"""Streams sandbox or process logs from the server to the reader.
|
|
61
|
+
|
|
62
|
+
Logs returned by this method may contain partial or multiple lines at a time.
|
|
63
|
+
|
|
64
|
+
When the stream receives an EOF, it yields None. Once an EOF is received,
|
|
65
|
+
subsequent invocations will not yield logs.
|
|
66
|
+
"""
|
|
67
|
+
...
|
|
68
|
+
|
|
69
|
+
def _get_logs_by_line(self) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]:
|
|
70
|
+
"""Process logs from the server and yield complete lines only."""
|
|
71
|
+
...
|
|
72
|
+
|
|
73
|
+
def _ensure_stream(self) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]: ...
|
|
74
|
+
async def __anext__(self) -> T:
|
|
75
|
+
"""mdmd:hidden"""
|
|
76
|
+
...
|
|
77
|
+
|
|
78
|
+
async def aclose(self):
|
|
79
|
+
"""mdmd:hidden"""
|
|
80
|
+
...
|
|
81
|
+
|
|
82
|
+
def _decode_bytes_stream_to_str(
|
|
83
|
+
stream: collections.abc.AsyncGenerator[bytes, None],
|
|
84
|
+
) -> collections.abc.AsyncGenerator[str, None]:
|
|
85
|
+
"""Incrementally decode a bytes async generator as UTF-8 without breaking on chunk boundaries.
|
|
86
|
+
|
|
87
|
+
This function uses a streaming UTF-8 decoder so that multi-byte characters split across
|
|
88
|
+
chunks are handled correctly instead of raising ``UnicodeDecodeError``.
|
|
89
|
+
"""
|
|
90
|
+
...
|
|
91
|
+
|
|
92
|
+
def _stream_by_line(stream: collections.abc.AsyncGenerator[bytes, None]) -> collections.abc.AsyncGenerator[bytes, None]:
|
|
93
|
+
"""Yield complete lines only (ending with
|
|
94
|
+
), buffering partial lines until complete.
|
|
95
|
+
"""
|
|
96
|
+
...
|
|
97
|
+
|
|
98
|
+
class _StreamReaderThroughCommandRouterParams:
|
|
99
|
+
"""_StreamReaderThroughCommandRouterParams(file_descriptor: 'api_pb2.FileDescriptor.ValueType', task_id: str, object_id: str, command_router_client: modal._utils.task_command_router_client.TaskCommandRouterClient, deadline: Optional[float])"""
|
|
100
|
+
|
|
101
|
+
file_descriptor: int
|
|
102
|
+
task_id: str
|
|
103
|
+
object_id: str
|
|
104
|
+
command_router_client: modal._utils.task_command_router_client.TaskCommandRouterClient
|
|
105
|
+
deadline: typing.Optional[float]
|
|
106
|
+
|
|
107
|
+
def __init__(
|
|
108
|
+
self,
|
|
109
|
+
file_descriptor: int,
|
|
110
|
+
task_id: str,
|
|
111
|
+
object_id: str,
|
|
112
|
+
command_router_client: modal._utils.task_command_router_client.TaskCommandRouterClient,
|
|
113
|
+
deadline: typing.Optional[float],
|
|
114
|
+
) -> None:
|
|
115
|
+
"""Initialize self. See help(type(self)) for accurate signature."""
|
|
116
|
+
...
|
|
117
|
+
|
|
118
|
+
def __repr__(self):
|
|
119
|
+
"""Return repr(self)."""
|
|
120
|
+
...
|
|
121
|
+
|
|
122
|
+
def __eq__(self, other):
|
|
123
|
+
"""Return self==value."""
|
|
124
|
+
...
|
|
125
|
+
|
|
126
|
+
def _stdio_stream_from_command_router(
|
|
127
|
+
params: _StreamReaderThroughCommandRouterParams,
|
|
128
|
+
) -> collections.abc.AsyncGenerator[bytes, None]:
|
|
129
|
+
"""Stream raw bytes from the router client."""
|
|
130
|
+
...
|
|
131
|
+
|
|
132
|
+
class _BytesStreamReaderThroughCommandRouter(typing.Generic[T]):
|
|
133
|
+
"""StreamReader implementation that will read directly from the worker that
|
|
134
|
+
hosts the sandbox.
|
|
135
|
+
|
|
136
|
+
This implementation is used for non-text streams.
|
|
137
|
+
"""
|
|
138
|
+
def __init__(self, params: _StreamReaderThroughCommandRouterParams) -> None:
|
|
139
|
+
"""Initialize self. See help(type(self)) for accurate signature."""
|
|
140
|
+
...
|
|
141
|
+
|
|
142
|
+
@property
|
|
143
|
+
def file_descriptor(self) -> int: ...
|
|
144
|
+
async def read(self) -> T: ...
|
|
145
|
+
def __aiter__(self) -> collections.abc.AsyncIterator[T]: ...
|
|
146
|
+
async def __anext__(self) -> T: ...
|
|
147
|
+
async def aclose(self): ...
|
|
148
|
+
|
|
149
|
+
class _TextStreamReaderThroughCommandRouter(typing.Generic[T]):
|
|
150
|
+
"""StreamReader implementation that will read directly from the worker
|
|
151
|
+
that hosts the sandbox.
|
|
152
|
+
|
|
153
|
+
This implementation is used for text streams.
|
|
154
|
+
"""
|
|
155
|
+
def __init__(self, params: _StreamReaderThroughCommandRouterParams, by_line: bool) -> None:
|
|
156
|
+
"""Initialize self. See help(type(self)) for accurate signature."""
|
|
157
|
+
...
|
|
158
|
+
|
|
159
|
+
@property
|
|
160
|
+
def file_descriptor(self) -> int: ...
|
|
161
|
+
async def read(self) -> T: ...
|
|
162
|
+
def __aiter__(self) -> collections.abc.AsyncIterator[T]: ...
|
|
163
|
+
async def __anext__(self) -> T: ...
|
|
164
|
+
async def aclose(self): ...
|
|
165
|
+
|
|
166
|
+
class _DevnullStreamReader(typing.Generic[T]):
|
|
167
|
+
"""StreamReader implementation for a stream configured with
|
|
168
|
+
StreamType.DEVNULL. Throws an error if read or any other method is
|
|
169
|
+
called.
|
|
170
|
+
"""
|
|
171
|
+
def __init__(self, file_descriptor: int) -> None:
|
|
172
|
+
"""Initialize self. See help(type(self)) for accurate signature."""
|
|
173
|
+
...
|
|
174
|
+
|
|
175
|
+
@property
|
|
176
|
+
def file_descriptor(self) -> int: ...
|
|
177
|
+
async def read(self) -> T: ...
|
|
178
|
+
def __aiter__(self) -> collections.abc.AsyncIterator[T]: ...
|
|
179
|
+
async def __anext__(self) -> T: ...
|
|
180
|
+
async def aclose(self): ...
|
|
181
|
+
|
|
20
182
|
class _StreamReader(typing.Generic[T]):
|
|
21
183
|
"""Retrieve logs from a stream (`stdout` or `stderr`).
|
|
22
184
|
|
|
@@ -38,9 +200,6 @@ class _StreamReader(typing.Generic[T]):
|
|
|
38
200
|
print(f"Message: {message}")
|
|
39
201
|
```
|
|
40
202
|
"""
|
|
41
|
-
|
|
42
|
-
_stream: typing.Optional[collections.abc.AsyncGenerator[typing.Optional[bytes], None]]
|
|
43
|
-
|
|
44
203
|
def __init__(
|
|
45
204
|
self,
|
|
46
205
|
file_descriptor: int,
|
|
@@ -51,6 +210,8 @@ class _StreamReader(typing.Generic[T]):
|
|
|
51
210
|
text: bool = True,
|
|
52
211
|
by_line: bool = False,
|
|
53
212
|
deadline: typing.Optional[float] = None,
|
|
213
|
+
command_router_client: typing.Optional[modal._utils.task_command_router_client.TaskCommandRouterClient] = None,
|
|
214
|
+
task_id: typing.Optional[str] = None,
|
|
54
215
|
) -> None:
|
|
55
216
|
"""mdmd:hidden"""
|
|
56
217
|
...
|
|
@@ -76,31 +237,6 @@ class _StreamReader(typing.Generic[T]):
|
|
|
76
237
|
"""
|
|
77
238
|
...
|
|
78
239
|
|
|
79
|
-
async def _consume_container_process_stream(self):
|
|
80
|
-
"""Consume the container process stream and store messages in the buffer."""
|
|
81
|
-
...
|
|
82
|
-
|
|
83
|
-
def _stream_container_process(self) -> collections.abc.AsyncGenerator[tuple[typing.Optional[bytes], str], None]:
|
|
84
|
-
"""Streams the container process buffer to the reader."""
|
|
85
|
-
...
|
|
86
|
-
|
|
87
|
-
def _get_logs(
|
|
88
|
-
self, skip_empty_messages: bool = True
|
|
89
|
-
) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]:
|
|
90
|
-
"""Streams sandbox or process logs from the server to the reader.
|
|
91
|
-
|
|
92
|
-
Logs returned by this method may contain partial or multiple lines at a time.
|
|
93
|
-
|
|
94
|
-
When the stream receives an EOF, it yields None. Once an EOF is received,
|
|
95
|
-
subsequent invocations will not yield logs.
|
|
96
|
-
"""
|
|
97
|
-
...
|
|
98
|
-
|
|
99
|
-
def _get_logs_by_line(self) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]:
|
|
100
|
-
"""Process logs from the server and yield complete lines only."""
|
|
101
|
-
...
|
|
102
|
-
|
|
103
|
-
def _ensure_stream(self) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]: ...
|
|
104
240
|
def __aiter__(self) -> collections.abc.AsyncIterator[T]:
|
|
105
241
|
"""mdmd:hidden"""
|
|
106
242
|
...
|
|
@@ -204,9 +340,6 @@ class StreamReader(typing.Generic[T]):
|
|
|
204
340
|
print(f"Message: {message}")
|
|
205
341
|
```
|
|
206
342
|
"""
|
|
207
|
-
|
|
208
|
-
_stream: typing.Optional[collections.abc.AsyncGenerator[typing.Optional[bytes], None]]
|
|
209
|
-
|
|
210
343
|
def __init__(
|
|
211
344
|
self,
|
|
212
345
|
file_descriptor: int,
|
|
@@ -217,6 +350,8 @@ class StreamReader(typing.Generic[T]):
|
|
|
217
350
|
text: bool = True,
|
|
218
351
|
by_line: bool = False,
|
|
219
352
|
deadline: typing.Optional[float] = None,
|
|
353
|
+
command_router_client: typing.Optional[modal._utils.task_command_router_client.TaskCommandRouterClient] = None,
|
|
354
|
+
task_id: typing.Optional[str] = None,
|
|
220
355
|
) -> None:
|
|
221
356
|
"""mdmd:hidden"""
|
|
222
357
|
...
|
|
@@ -261,70 +396,6 @@ class StreamReader(typing.Generic[T]):
|
|
|
261
396
|
|
|
262
397
|
read: __read_spec[T, typing_extensions.Self]
|
|
263
398
|
|
|
264
|
-
class ___consume_container_process_stream_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
265
|
-
def __call__(self, /):
|
|
266
|
-
"""Consume the container process stream and store messages in the buffer."""
|
|
267
|
-
...
|
|
268
|
-
|
|
269
|
-
async def aio(self, /):
|
|
270
|
-
"""Consume the container process stream and store messages in the buffer."""
|
|
271
|
-
...
|
|
272
|
-
|
|
273
|
-
_consume_container_process_stream: ___consume_container_process_stream_spec[typing_extensions.Self]
|
|
274
|
-
|
|
275
|
-
class ___stream_container_process_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
276
|
-
def __call__(self, /) -> typing.Generator[tuple[typing.Optional[bytes], str], None, None]:
|
|
277
|
-
"""Streams the container process buffer to the reader."""
|
|
278
|
-
...
|
|
279
|
-
|
|
280
|
-
def aio(self, /) -> collections.abc.AsyncGenerator[tuple[typing.Optional[bytes], str], None]:
|
|
281
|
-
"""Streams the container process buffer to the reader."""
|
|
282
|
-
...
|
|
283
|
-
|
|
284
|
-
_stream_container_process: ___stream_container_process_spec[typing_extensions.Self]
|
|
285
|
-
|
|
286
|
-
class ___get_logs_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
287
|
-
def __call__(self, /, skip_empty_messages: bool = True) -> typing.Generator[typing.Optional[bytes], None, None]:
|
|
288
|
-
"""Streams sandbox or process logs from the server to the reader.
|
|
289
|
-
|
|
290
|
-
Logs returned by this method may contain partial or multiple lines at a time.
|
|
291
|
-
|
|
292
|
-
When the stream receives an EOF, it yields None. Once an EOF is received,
|
|
293
|
-
subsequent invocations will not yield logs.
|
|
294
|
-
"""
|
|
295
|
-
...
|
|
296
|
-
|
|
297
|
-
def aio(
|
|
298
|
-
self, /, skip_empty_messages: bool = True
|
|
299
|
-
) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]:
|
|
300
|
-
"""Streams sandbox or process logs from the server to the reader.
|
|
301
|
-
|
|
302
|
-
Logs returned by this method may contain partial or multiple lines at a time.
|
|
303
|
-
|
|
304
|
-
When the stream receives an EOF, it yields None. Once an EOF is received,
|
|
305
|
-
subsequent invocations will not yield logs.
|
|
306
|
-
"""
|
|
307
|
-
...
|
|
308
|
-
|
|
309
|
-
_get_logs: ___get_logs_spec[typing_extensions.Self]
|
|
310
|
-
|
|
311
|
-
class ___get_logs_by_line_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
312
|
-
def __call__(self, /) -> typing.Generator[typing.Optional[bytes], None, None]:
|
|
313
|
-
"""Process logs from the server and yield complete lines only."""
|
|
314
|
-
...
|
|
315
|
-
|
|
316
|
-
def aio(self, /) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]:
|
|
317
|
-
"""Process logs from the server and yield complete lines only."""
|
|
318
|
-
...
|
|
319
|
-
|
|
320
|
-
_get_logs_by_line: ___get_logs_by_line_spec[typing_extensions.Self]
|
|
321
|
-
|
|
322
|
-
class ___ensure_stream_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
323
|
-
def __call__(self, /) -> typing.Generator[typing.Optional[bytes], None, None]: ...
|
|
324
|
-
def aio(self, /) -> collections.abc.AsyncGenerator[typing.Optional[bytes], None]: ...
|
|
325
|
-
|
|
326
|
-
_ensure_stream: ___ensure_stream_spec[typing_extensions.Self]
|
|
327
|
-
|
|
328
399
|
def __iter__(self) -> typing.Iterator[T]:
|
|
329
400
|
"""mdmd:hidden"""
|
|
330
401
|
...
|
|
@@ -24,13 +24,13 @@ modal/app.pyi,sha256=AUV5Rp8qQrZJTP2waoKHFY7rYgsXNMYibMcCAQKuSeo,50544
|
|
|
24
24
|
modal/billing.py,sha256=zmQ3bcCJlwa4KD1IA_QgdWpm1pn13c-7qfy79iEauYI,195
|
|
25
25
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
|
26
26
|
modal/client.py,sha256=kyAIVB3Ay-XKJizQ_1ufUFB__EagV0MLmHJpyYyJ7J0,18636
|
|
27
|
-
modal/client.pyi,sha256=
|
|
27
|
+
modal/client.pyi,sha256=46-sOq2ZFWLaRP_M6tYYyxhIpAggNOg8AD2JAAzevN4,15831
|
|
28
28
|
modal/cloud_bucket_mount.py,sha256=I2GRXYhOWLIz2kJZjXu75jAm9EJkBNcutGc6jR2ReUw,5928
|
|
29
29
|
modal/cloud_bucket_mount.pyi,sha256=VuUOipMIHqFXMkD-3g2bsoqpSxV5qswlFHDOqPQzYAo,7405
|
|
30
30
|
modal/cls.py,sha256=ZxzivE3fNci4-A5uyBYNAzXMXtdqDg3gnYvgbdy5fhg,40384
|
|
31
31
|
modal/cls.pyi,sha256=jJsDPFoqzM4ht-V-e-xEJKJ5TINLF0fYtoBm_UeAW5Y,27281
|
|
32
32
|
modal/config.py,sha256=hpgkgQKbjzo6gVbRzXQrky72_KpdSEm65RNi1M2iNjc,13038
|
|
33
|
-
modal/container_process.py,sha256=
|
|
33
|
+
modal/container_process.py,sha256=DnqlgHiM-7rgVdJNcaXyZlXFD6DFLxEgMSFkieQ6Oj0,7452
|
|
34
34
|
modal/container_process.pyi,sha256=9m-st3hCUlNN1GOTctfPPvIvoLtEl7FbuGWwif5-7YU,6037
|
|
35
35
|
modal/dict.py,sha256=XkaxuojMVtcc4bZvCjJcd6DedU5xxfF8H4w-mDzFPCo,21580
|
|
36
36
|
modal/dict.pyi,sha256=deOiwuwZtwXqedC3h19SwoQIWc4mUnDTBM5XkONt48Y,31712
|
|
@@ -45,8 +45,8 @@ modal/functions.pyi,sha256=Z6VuukLrjASAgf0kV9I6c09WvP_b2gCujX6f9j2bBaw,37988
|
|
|
45
45
|
modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
|
|
46
46
|
modal/image.py,sha256=HDkOnhIAN8g63a8LTN4J5SjC9ciReFQQJIxTS2z5KFM,107216
|
|
47
47
|
modal/image.pyi,sha256=dMvMwAuvWkNN2BRYJFijkEy2m_xtEXgCKK0T7FVldsc,77514
|
|
48
|
-
modal/io_streams.py,sha256=
|
|
49
|
-
modal/io_streams.pyi,sha256=
|
|
48
|
+
modal/io_streams.py,sha256=APkECBiP1-D7xeBdFLuWKYOZq6MZFNAhVwuiO1ymcNE,25835
|
|
49
|
+
modal/io_streams.pyi,sha256=dnuWjJrkQsMla_twPTe05NnixsYtT2gjWYjVFnyff5I,15960
|
|
50
50
|
modal/mount.py,sha256=G7_xhQMZqokgfsaFLMch0YR3fs-OUNqYUm3f4jHTSMQ,33161
|
|
51
51
|
modal/mount.pyi,sha256=MD_zV2M7eCWxbOpQRjU60aHevN-bmbiywaCX82QoFlw,15380
|
|
52
52
|
modal/network_file_system.py,sha256=ZdEIRgdcR-p_ILyw_AecEtPOhhrSWJeADYCtFnhtaHM,13509
|
|
@@ -156,7 +156,7 @@ modal/experimental/__init__.py,sha256=9gkVuDmu3m4TlKoU3MzEtTOemUSs8EEOWba40s7Aa0
|
|
|
156
156
|
modal/experimental/flash.py,sha256=C4sef08rARYFllsgtqukFmYL18SZW0_JpMS0BejDcUs,28552
|
|
157
157
|
modal/experimental/flash.pyi,sha256=vV_OQhtdrPn8SW0XrBK-aLLHHIvxAzLzwFbWrke-m74,15463
|
|
158
158
|
modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
|
|
159
|
-
modal-1.2.1.
|
|
159
|
+
modal-1.2.1.dev12.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
|
160
160
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
|
161
161
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
|
162
162
|
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
|
@@ -164,13 +164,13 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
|
|
|
164
164
|
modal_docs/mdmd/mdmd.py,sha256=tUTImNd4UMFk1opkaw8J672gX8AkBO5gbY2S_NMxsxs,7140
|
|
165
165
|
modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
|
|
166
166
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
|
167
|
-
modal_proto/api.proto,sha256=
|
|
168
|
-
modal_proto/api_grpc.py,sha256=
|
|
169
|
-
modal_proto/api_pb2.py,sha256=
|
|
170
|
-
modal_proto/api_pb2.pyi,sha256=
|
|
171
|
-
modal_proto/api_pb2_grpc.py,sha256=
|
|
172
|
-
modal_proto/api_pb2_grpc.pyi,sha256=
|
|
173
|
-
modal_proto/modal_api_grpc.py,sha256=
|
|
167
|
+
modal_proto/api.proto,sha256=yYsIf0_6hfT98xBHfad82fBDAfW7Wcip5g74MZMNNwE,108935
|
|
168
|
+
modal_proto/api_grpc.py,sha256=JYmHBCRazCqwFsSpNMK2kKk8UCGVXi2E9XHJvT6NpSI,135300
|
|
169
|
+
modal_proto/api_pb2.py,sha256=h31c6JqkcvmuFVebu5oEa2FbZTlbOSCanTZdD0yeubU,381165
|
|
170
|
+
modal_proto/api_pb2.pyi,sha256=w8xScmbhxUDCV6yTk9baT6u9h7WLyeTktFqASoyHSb0,532300
|
|
171
|
+
modal_proto/api_pb2_grpc.py,sha256=AIj7DOISi5pKqmXm9APOyrFSW1-8-V5peGebtnMHCeo,291495
|
|
172
|
+
modal_proto/api_pb2_grpc.pyi,sha256=1TXj_sL24TSMit0wL5ScIytnHoD5RI0DT5O1vqOLLYM,68293
|
|
173
|
+
modal_proto/modal_api_grpc.py,sha256=qbz7Ssx_kvfy28aeFLLXLFdoS5dY4OHVrgLcS5rDXKc,20388
|
|
174
174
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
175
175
|
modal_proto/sandbox_router.proto,sha256=o6LZWekz2h7uAhBlHcu_EqXnc5ptxm-4j_ZUFVGAJFk,5161
|
|
176
176
|
modal_proto/sandbox_router_grpc.py,sha256=27daOTX2N5hADDG-5Qnn4Yj3VfekyJwrDUkrQ12mPuU,5004
|
|
@@ -184,10 +184,10 @@ modal_proto/task_command_router_pb2.py,sha256=_pD2ZpU0bNzhwBdzmLoLyLtAtftI_Agxwn
|
|
|
184
184
|
modal_proto/task_command_router_pb2.pyi,sha256=EyDgXPLr7alqjXYERV8w_MPuO404x0uCppmSkrfE9IE,14589
|
|
185
185
|
modal_proto/task_command_router_pb2_grpc.py,sha256=uEQ0HdrCp8v-9bB5yIic9muA8spCShLHY6Bz9cCgOUE,10114
|
|
186
186
|
modal_proto/task_command_router_pb2_grpc.pyi,sha256=s3Yxsrawdj4nr8vqQqsAxyX6ilWaGbdECy425KKbLIA,3301
|
|
187
|
-
modal_version/__init__.py,sha256=
|
|
187
|
+
modal_version/__init__.py,sha256=OYOaillNG-YG3dph7s36QFNeIzc-mCx6s7KPhjISWzY,121
|
|
188
188
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
|
189
|
-
modal-1.2.1.
|
|
190
|
-
modal-1.2.1.
|
|
191
|
-
modal-1.2.1.
|
|
192
|
-
modal-1.2.1.
|
|
193
|
-
modal-1.2.1.
|
|
189
|
+
modal-1.2.1.dev12.dist-info/METADATA,sha256=aGlYkorlrlPY8h1THL2Ece76Z2PspqkANMRmy_F8xQk,2484
|
|
190
|
+
modal-1.2.1.dev12.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
|
191
|
+
modal-1.2.1.dev12.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
|
192
|
+
modal-1.2.1.dev12.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
|
193
|
+
modal-1.2.1.dev12.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
|
@@ -2757,20 +2757,6 @@ message SandboxCreateResponse {
|
|
|
2757
2757
|
string sandbox_id = 1;
|
|
2758
2758
|
}
|
|
2759
2759
|
|
|
2760
|
-
// Used to get a JWT and URL for direct access to a sandbox router server
|
|
2761
|
-
// running on the modal-worker, so the client can issue exec commands (and other
|
|
2762
|
-
// operations as they become available) directly to the worker.
|
|
2763
|
-
// DEPRECATED: Use TaskGetCommandRouterAccessRequest instead.
|
|
2764
|
-
// TODO(saltzm): Remove this.
|
|
2765
|
-
message SandboxGetCommandRouterAccessRequest {
|
|
2766
|
-
string sandbox_id = 1;
|
|
2767
|
-
}
|
|
2768
|
-
|
|
2769
|
-
message SandboxGetCommandRouterAccessResponse {
|
|
2770
|
-
string jwt = 1;
|
|
2771
|
-
string url = 2;
|
|
2772
|
-
}
|
|
2773
|
-
|
|
2774
2760
|
message SandboxGetFromNameRequest {
|
|
2775
2761
|
string sandbox_name = 1;
|
|
2776
2762
|
string environment_name = 2;
|
|
@@ -3754,7 +3740,6 @@ service ModalClient {
|
|
|
3754
3740
|
// Sandboxes
|
|
3755
3741
|
rpc SandboxCreate(SandboxCreateRequest) returns (SandboxCreateResponse);
|
|
3756
3742
|
rpc SandboxCreateConnectToken(SandboxCreateConnectTokenRequest) returns (SandboxCreateConnectTokenResponse);
|
|
3757
|
-
rpc SandboxGetCommandRouterAccess(SandboxGetCommandRouterAccessRequest) returns (SandboxGetCommandRouterAccessResponse);
|
|
3758
3743
|
rpc SandboxGetFromName(SandboxGetFromNameRequest) returns (SandboxGetFromNameResponse);
|
|
3759
3744
|
rpc SandboxGetLogs(SandboxGetLogsRequest) returns (stream TaskLogsBatch);
|
|
3760
3745
|
rpc SandboxGetResourceUsage(SandboxGetResourceUsageRequest) returns (SandboxGetResourceUsageResponse);
|
modal_proto/api_grpc.py
CHANGED
|
@@ -482,10 +482,6 @@ class ModalClientBase(abc.ABC):
|
|
|
482
482
|
async def SandboxCreateConnectToken(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxCreateConnectTokenRequest, modal_proto.api_pb2.SandboxCreateConnectTokenResponse]') -> None:
|
|
483
483
|
pass
|
|
484
484
|
|
|
485
|
-
@abc.abstractmethod
|
|
486
|
-
async def SandboxGetCommandRouterAccess(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxGetCommandRouterAccessRequest, modal_proto.api_pb2.SandboxGetCommandRouterAccessResponse]') -> None:
|
|
487
|
-
pass
|
|
488
|
-
|
|
489
485
|
@abc.abstractmethod
|
|
490
486
|
async def SandboxGetFromName(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxGetFromNameRequest, modal_proto.api_pb2.SandboxGetFromNameResponse]') -> None:
|
|
491
487
|
pass
|
|
@@ -1420,12 +1416,6 @@ class ModalClientBase(abc.ABC):
|
|
|
1420
1416
|
modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
|
|
1421
1417
|
modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
|
|
1422
1418
|
),
|
|
1423
|
-
'/modal.client.ModalClient/SandboxGetCommandRouterAccess': grpclib.const.Handler(
|
|
1424
|
-
self.SandboxGetCommandRouterAccess,
|
|
1425
|
-
grpclib.const.Cardinality.UNARY_UNARY,
|
|
1426
|
-
modal_proto.api_pb2.SandboxGetCommandRouterAccessRequest,
|
|
1427
|
-
modal_proto.api_pb2.SandboxGetCommandRouterAccessResponse,
|
|
1428
|
-
),
|
|
1429
1419
|
'/modal.client.ModalClient/SandboxGetFromName': grpclib.const.Handler(
|
|
1430
1420
|
self.SandboxGetFromName,
|
|
1431
1421
|
grpclib.const.Cardinality.UNARY_UNARY,
|
|
@@ -2482,12 +2472,6 @@ class ModalClientStub:
|
|
|
2482
2472
|
modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
|
|
2483
2473
|
modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
|
|
2484
2474
|
)
|
|
2485
|
-
self.SandboxGetCommandRouterAccess = grpclib.client.UnaryUnaryMethod(
|
|
2486
|
-
channel,
|
|
2487
|
-
'/modal.client.ModalClient/SandboxGetCommandRouterAccess',
|
|
2488
|
-
modal_proto.api_pb2.SandboxGetCommandRouterAccessRequest,
|
|
2489
|
-
modal_proto.api_pb2.SandboxGetCommandRouterAccessResponse,
|
|
2490
|
-
)
|
|
2491
2475
|
self.SandboxGetFromName = grpclib.client.UnaryUnaryMethod(
|
|
2492
2476
|
channel,
|
|
2493
2477
|
'/modal.client.ModalClient/SandboxGetFromName',
|