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/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
  ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.2.1.dev10
3
+ Version: 1.2.1.dev12
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -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=CBKhDePQczYLb_rMFrRbCe7fpcGlOHiEjipOWGiv8xY,15831
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=Mutkl7sg_WR5zP4oJiWSC-3UdYRqp0zdKi1shZbi-bk,6996
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=hZOVc5beOAm8S_VQQmmKUbk_BJ9OltN83RY0yMPqUDo,16545
49
- modal/io_streams.pyi,sha256=aOun_jUFKHSJyUY6-7gKvNoxzcULsa8_hxdtEO7v-gk,13980
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.dev10.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
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=cq6aCHQ0P2oP4zMBytzc95n_l3W4ahysMd3OSgPuHhk,109531
168
- modal_proto/api_grpc.py,sha256=Kgv6E88imUNNWyOA0foC1NEzgPWTXW4mJ3IKg_f0Dek,136233
169
- modal_proto/api_pb2.py,sha256=5pHQKBLPP8yFHffqeYBwRrF1y9bB4G5M07HDQtpVPps,382801
170
- modal_proto/api_pb2.pyi,sha256=n09823GzmM3S8SWjWCmXMPgoqfXPRNOSTpIujVwNznc,533697
171
- modal_proto/api_pb2_grpc.py,sha256=_M7mQCqZ3BhuCgL4vRrinA2oOjWeJSMXeb5iOFKHi2g,293349
172
- modal_proto/api_pb2_grpc.pyi,sha256=4Jub1tY9CWdUXRvC7LxAiTCWuu-tuLTLBAEcpoDQMDw,68760
173
- modal_proto/modal_api_grpc.py,sha256=6w-9wV6QLE3KFSzPerMtSjzbsunVEfCjOOmplKudjuw,20528
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=AgzaaAr9vEBcLVar9hmH6Cj56zTlVvSiQujImHPIKrY,121
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.dev10.dist-info/METADATA,sha256=P7LNrl6vjKmDVGxhi7CaCEN0wbF7tw5XjfPYyW6GlIU,2484
190
- modal-1.2.1.dev10.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
191
- modal-1.2.1.dev10.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
192
- modal-1.2.1.dev10.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
193
- modal-1.2.1.dev10.dist-info/RECORD,,
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',