modal 1.1.5.dev78__py3-none-any.whl → 1.1.5.dev81__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 CHANGED
@@ -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.5.dev78",
36
+ version: str = "1.1.5.dev81",
37
37
  ):
38
38
  """mdmd:hidden
39
39
  The Modal client object is not intended to be instantiated directly by users.
@@ -164,7 +164,7 @@ class Client:
164
164
  server_url: str,
165
165
  client_type: int,
166
166
  credentials: typing.Optional[tuple[str, str]],
167
- version: str = "1.1.5.dev78",
167
+ version: str = "1.1.5.dev81",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.5.dev78
3
+ Version: 1.1.5.dev81
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -22,7 +22,7 @@ modal/app.py,sha256=0yiON6FWi3fP9dD4B06DfxMLvp8tyE3ISPq0joX-HuE,51222
22
22
  modal/app.pyi,sha256=bJyY4iOdG7M3b1-viRM-VHC4JyJuR3IoBgjqf9UjkFg,47204
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=kyAIVB3Ay-XKJizQ_1ufUFB__EagV0MLmHJpyYyJ7J0,18636
25
- modal/client.pyi,sha256=bRLTEAC_EXw_8pgqMh-H0tgMaAHo4ixLRfJJa9xjBlA,15831
25
+ modal/client.pyi,sha256=ChF3c8RZCiGtnySRXwrE1jUXt2wUYzXODEnLymtsI9I,15831
26
26
  modal/cloud_bucket_mount.py,sha256=I2GRXYhOWLIz2kJZjXu75jAm9EJkBNcutGc6jR2ReUw,5928
27
27
  modal/cloud_bucket_mount.pyi,sha256=VuUOipMIHqFXMkD-3g2bsoqpSxV5qswlFHDOqPQzYAo,7405
28
28
  modal/cls.py,sha256=IZG9gLlssbhTgIn6iSEmBSKkbbkst3skASMae-59FII,40239
@@ -153,7 +153,7 @@ modal/experimental/__init__.py,sha256=9gkVuDmu3m4TlKoU3MzEtTOemUSs8EEOWba40s7Aa0
153
153
  modal/experimental/flash.py,sha256=C4sef08rARYFllsgtqukFmYL18SZW0_JpMS0BejDcUs,28552
154
154
  modal/experimental/flash.pyi,sha256=vV_OQhtdrPn8SW0XrBK-aLLHHIvxAzLzwFbWrke-m74,15463
155
155
  modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
156
- modal-1.1.5.dev78.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.5.dev81.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
157
157
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
158
158
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
159
159
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
@@ -176,16 +176,16 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
176
176
  modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
177
177
  modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
178
178
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
- modal_proto/sandbox_router.proto,sha256=JJn25XfP3Wp1GVYBzxgKxmRNDbjH-3V4F6mqVQfeOU8,4506
180
- modal_proto/sandbox_router_grpc.py,sha256=tz1bqLamxHqnInwhEMzM78EOd27U_ZKnFIGh2s2UyO0,4139
181
- modal_proto/sandbox_router_pb2.py,sha256=INd9izYaIYqllESQt4MSv2Rj9Hf5bMjAvtCc9b4QomM,9300
182
- modal_proto/sandbox_router_pb2.pyi,sha256=YCK0WnCgRos3-p7t4USQQ7x6WAuM278yeQX2IeU5mLg,13295
183
- modal_proto/sandbox_router_pb2_grpc.py,sha256=zonC5flvCwxeZYJPENj1IJo2Mr0J58DpoC1_8IdPYik,8243
184
- modal_proto/sandbox_router_pb2_grpc.pyi,sha256=4QgCB9b7_ykvH8YD-hfnogVH9CLyHVDC5QNb03l4_X8,2735
185
- modal_version/__init__.py,sha256=pKVma3bQcpqr2Yci6ujfQYJPvhqZ3zAQLdBB6HaXMZk,121
179
+ modal_proto/sandbox_router.proto,sha256=NWmNYbxgcGoV3XlR-pp8cQEgyVNn43U83e4gyWjKtmQ,5296
180
+ modal_proto/sandbox_router_grpc.py,sha256=27daOTX2N5hADDG-5Qnn4Yj3VfekyJwrDUkrQ12mPuU,5004
181
+ modal_proto/sandbox_router_pb2.py,sha256=QTT32WuusbyZwciNo-UUa6wl9-juOE2xRlv0JrB6WYw,10743
182
+ modal_proto/sandbox_router_pb2.pyi,sha256=Ihf7LHmh0V5XfMHwYQobZiQ1_3xPoDJgIueyUxC4fMQ,15088
183
+ modal_proto/sandbox_router_pb2_grpc.py,sha256=8kPFo84rpRHfeRdZuHyoWuuIAphGmjM0s3ygGJSBVck,10006
184
+ modal_proto/sandbox_router_pb2_grpc.pyi,sha256=iAr1ornlIEYP7pfrFMrw91-F3PNs7amH6z6J2oCwYxk,3276
185
+ modal_version/__init__.py,sha256=qDiIDaas927wv5Z3IVv2Tz0B6l49dqsZU4CyobA1Lfo,121
186
186
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
187
- modal-1.1.5.dev78.dist-info/METADATA,sha256=rw1d0l5XOAGgCc24QrL_fS3IPxylytBDk6QuBUHf8Ug,2481
188
- modal-1.1.5.dev78.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
189
- modal-1.1.5.dev78.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
190
- modal-1.1.5.dev78.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
191
- modal-1.1.5.dev78.dist-info/RECORD,,
187
+ modal-1.1.5.dev81.dist-info/METADATA,sha256=70GBqBeBUiYLKHgQiovyNIOHvAjz2Mtc_91SjQRQ21M,2481
188
+ modal-1.1.5.dev81.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
189
+ modal-1.1.5.dev81.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
190
+ modal-1.1.5.dev81.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
191
+ modal-1.1.5.dev81.dist-info/RECORD,,
@@ -28,6 +28,26 @@ enum SandboxExecStdoutConfig {
28
28
  SANDBOX_EXEC_STDOUT_CONFIG_PIPE = 1;
29
29
  }
30
30
 
31
+ message SandboxExecPollRequest {
32
+ // The task ID of the sandbox running the exec'd command.
33
+ string task_id = 1;
34
+ // The execution ID of the command to wait on.
35
+ string exec_id = 2;
36
+ }
37
+
38
+ // The response to a SandboxExecPollRequest. If the exec'd command has not
39
+ // completed, exit_status will be unset.
40
+ message SandboxExecPollResponse {
41
+ oneof exit_status {
42
+ // The exit code of the command.
43
+ int32 code = 1;
44
+ // The signal that terminated the command.
45
+ int32 signal = 2;
46
+ }
47
+ // TODO(saltzm): Give a way for the user to distinguish between normal exit
48
+ // and termination by Modal (due to sandbox timeout, exec exceeded deadline, etc.)
49
+ }
50
+
31
51
  message SandboxExecStartRequest {
32
52
  // The task ID of the sandbox to execute the command in.
33
53
  string task_id = 1;
@@ -105,15 +125,17 @@ message SandboxExecWaitRequest {
105
125
  message SandboxExecWaitResponse {
106
126
  oneof exit_status {
107
127
  // The exit code of the command.
108
- int32 code = 3;
128
+ int32 code = 1;
109
129
  // The signal that terminated the command.
110
- int32 signal = 4;
130
+ int32 signal = 2;
111
131
  }
112
132
  // TODO(saltzm): Give a way for the user to distinguish between normal exit
113
133
  // and termination by Modal (due to sandbox timeout, exec exceeded deadline, etc.)
114
134
  }
115
135
 
116
136
  service SandboxRouter {
137
+ // Poll for the exit status of an exec'd command.
138
+ rpc SandboxExecPoll(SandboxExecPollRequest) returns (SandboxExecPollResponse);
117
139
  // Execute a command in the sandbox.
118
140
  rpc SandboxExecStart(SandboxExecStartRequest) returns (SandboxExecStartResponse);
119
141
  // Write to the stdin stream of an exec'd command.
@@ -15,6 +15,10 @@ import modal_proto.sandbox_router_pb2
15
15
 
16
16
  class SandboxRouterBase(abc.ABC):
17
17
 
18
+ @abc.abstractmethod
19
+ async def SandboxExecPoll(self, stream: 'grpclib.server.Stream[modal_proto.sandbox_router_pb2.SandboxExecPollRequest, modal_proto.sandbox_router_pb2.SandboxExecPollResponse]') -> None:
20
+ pass
21
+
18
22
  @abc.abstractmethod
19
23
  async def SandboxExecStart(self, stream: 'grpclib.server.Stream[modal_proto.sandbox_router_pb2.SandboxExecStartRequest, modal_proto.sandbox_router_pb2.SandboxExecStartResponse]') -> None:
20
24
  pass
@@ -33,6 +37,12 @@ class SandboxRouterBase(abc.ABC):
33
37
 
34
38
  def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]:
35
39
  return {
40
+ '/modal.sandbox_router.SandboxRouter/SandboxExecPoll': grpclib.const.Handler(
41
+ self.SandboxExecPoll,
42
+ grpclib.const.Cardinality.UNARY_UNARY,
43
+ modal_proto.sandbox_router_pb2.SandboxExecPollRequest,
44
+ modal_proto.sandbox_router_pb2.SandboxExecPollResponse,
45
+ ),
36
46
  '/modal.sandbox_router.SandboxRouter/SandboxExecStart': grpclib.const.Handler(
37
47
  self.SandboxExecStart,
38
48
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -63,6 +73,12 @@ class SandboxRouterBase(abc.ABC):
63
73
  class SandboxRouterStub:
64
74
 
65
75
  def __init__(self, channel: grpclib.client.Channel) -> None:
76
+ self.SandboxExecPoll = grpclib.client.UnaryUnaryMethod(
77
+ channel,
78
+ '/modal.sandbox_router.SandboxRouter/SandboxExecPoll',
79
+ modal_proto.sandbox_router_pb2.SandboxExecPollRequest,
80
+ modal_proto.sandbox_router_pb2.SandboxExecPollResponse,
81
+ )
66
82
  self.SandboxExecStart = grpclib.client.UnaryUnaryMethod(
67
83
  channel,
68
84
  '/modal.sandbox_router.SandboxRouter/SandboxExecStart',
@@ -16,7 +16,7 @@ _sym_db = _symbol_database.Default()
16
16
  from modal_proto import api_pb2 as modal__proto_dot_api__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n modal_proto/sandbox_router.proto\x12\x14modal.sandbox_router\x1a\x15modal_proto/api.proto\"\x91\x03\n\x17SandboxExecStartRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x14\n\x0c\x63ommand_args\x18\x03 \x03(\t\x12\x44\n\rstdout_config\x18\x04 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStdoutConfig\x12\x44\n\rstderr_config\x18\x05 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStderrConfig\x12\x19\n\x0ctimeout_secs\x18\x06 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07workdir\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x12\n\nsecret_ids\x18\x08 \x03(\t\x12,\n\x08pty_info\x18\t \x01(\x0b\x32\x15.modal.client.PTYInfoH\x02\x88\x01\x01\x12\x15\n\rruntime_debug\x18\n \x01(\x08\x42\x0f\n\r_timeout_secsB\n\n\x08_workdirB\x0b\n\t_pty_info\"\x1a\n\x18SandboxExecStartResponse\"k\n\x1cSandboxExecStdinWriteRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0b\n\x03\x65of\x18\x05 \x01(\x08\"\x1f\n\x1dSandboxExecStdinWriteResponse\"\x9e\x01\n\x1bSandboxExecStdioReadRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12M\n\x0f\x66ile_descriptor\x18\x04 \x01(\x0e\x32\x34.modal.sandbox_router.SandboxExecStdioFileDescriptor\",\n\x1cSandboxExecStdioReadResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\":\n\x16SandboxExecWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"J\n\x17SandboxExecWaitResponse\x12\x0e\n\x04\x63ode\x18\x03 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x04 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status*\x8d\x01\n\x17SandboxExecStderrConfig\x12&\n\"SANDBOX_EXEC_STDERR_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDERR_CONFIG_PIPE\x10\x01\x12%\n!SANDBOX_EXEC_STDERR_CONFIG_STDOUT\x10\x02*~\n\x1eSandboxExecStdioFileDescriptor\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*f\n\x17SandboxExecStdoutConfig\x12&\n\"SANDBOX_EXEC_STDOUT_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDOUT_CONFIG_PIPE\x10\x01\x32\xf6\x03\n\rSandboxRouter\x12q\n\x10SandboxExecStart\x12-.modal.sandbox_router.SandboxExecStartRequest\x1a..modal.sandbox_router.SandboxExecStartResponse\x12\x80\x01\n\x15SandboxExecStdinWrite\x12\x32.modal.sandbox_router.SandboxExecStdinWriteRequest\x1a\x33.modal.sandbox_router.SandboxExecStdinWriteResponse\x12\x7f\n\x14SandboxExecStdioRead\x12\x31.modal.sandbox_router.SandboxExecStdioReadRequest\x1a\x32.modal.sandbox_router.SandboxExecStdioReadResponse0\x01\x12n\n\x0fSandboxExecWait\x12,.modal.sandbox_router.SandboxExecWaitRequest\x1a-.modal.sandbox_router.SandboxExecWaitResponseb\x06proto3')
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n modal_proto/sandbox_router.proto\x12\x14modal.sandbox_router\x1a\x15modal_proto/api.proto\":\n\x16SandboxExecPollRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"J\n\x17SandboxExecPollResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status\"\x91\x03\n\x17SandboxExecStartRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x14\n\x0c\x63ommand_args\x18\x03 \x03(\t\x12\x44\n\rstdout_config\x18\x04 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStdoutConfig\x12\x44\n\rstderr_config\x18\x05 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStderrConfig\x12\x19\n\x0ctimeout_secs\x18\x06 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07workdir\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x12\n\nsecret_ids\x18\x08 \x03(\t\x12,\n\x08pty_info\x18\t \x01(\x0b\x32\x15.modal.client.PTYInfoH\x02\x88\x01\x01\x12\x15\n\rruntime_debug\x18\n \x01(\x08\x42\x0f\n\r_timeout_secsB\n\n\x08_workdirB\x0b\n\t_pty_info\"\x1a\n\x18SandboxExecStartResponse\"k\n\x1cSandboxExecStdinWriteRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0b\n\x03\x65of\x18\x05 \x01(\x08\"\x1f\n\x1dSandboxExecStdinWriteResponse\"\x9e\x01\n\x1bSandboxExecStdioReadRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12M\n\x0f\x66ile_descriptor\x18\x04 \x01(\x0e\x32\x34.modal.sandbox_router.SandboxExecStdioFileDescriptor\",\n\x1cSandboxExecStdioReadResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\":\n\x16SandboxExecWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"J\n\x17SandboxExecWaitResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status*\x8d\x01\n\x17SandboxExecStderrConfig\x12&\n\"SANDBOX_EXEC_STDERR_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDERR_CONFIG_PIPE\x10\x01\x12%\n!SANDBOX_EXEC_STDERR_CONFIG_STDOUT\x10\x02*~\n\x1eSandboxExecStdioFileDescriptor\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*f\n\x17SandboxExecStdoutConfig\x12&\n\"SANDBOX_EXEC_STDOUT_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDOUT_CONFIG_PIPE\x10\x01\x32\xe6\x04\n\rSandboxRouter\x12n\n\x0fSandboxExecPoll\x12,.modal.sandbox_router.SandboxExecPollRequest\x1a-.modal.sandbox_router.SandboxExecPollResponse\x12q\n\x10SandboxExecStart\x12-.modal.sandbox_router.SandboxExecStartRequest\x1a..modal.sandbox_router.SandboxExecStartResponse\x12\x80\x01\n\x15SandboxExecStdinWrite\x12\x32.modal.sandbox_router.SandboxExecStdinWriteRequest\x1a\x33.modal.sandbox_router.SandboxExecStdinWriteResponse\x12\x7f\n\x14SandboxExecStdioRead\x12\x31.modal.sandbox_router.SandboxExecStdioReadRequest\x1a\x32.modal.sandbox_router.SandboxExecStdioReadResponse0\x01\x12n\n\x0fSandboxExecWait\x12,.modal.sandbox_router.SandboxExecWaitRequest\x1a-.modal.sandbox_router.SandboxExecWaitResponseb\x06proto3')
20
20
 
21
21
  _SANDBOXEXECSTDERRCONFIG = DESCRIPTOR.enum_types_by_name['SandboxExecStderrConfig']
22
22
  SandboxExecStderrConfig = enum_type_wrapper.EnumTypeWrapper(_SANDBOXEXECSTDERRCONFIG)
@@ -33,6 +33,8 @@ SANDBOX_EXEC_STDOUT_CONFIG_DEVNULL = 0
33
33
  SANDBOX_EXEC_STDOUT_CONFIG_PIPE = 1
34
34
 
35
35
 
36
+ _SANDBOXEXECPOLLREQUEST = DESCRIPTOR.message_types_by_name['SandboxExecPollRequest']
37
+ _SANDBOXEXECPOLLRESPONSE = DESCRIPTOR.message_types_by_name['SandboxExecPollResponse']
36
38
  _SANDBOXEXECSTARTREQUEST = DESCRIPTOR.message_types_by_name['SandboxExecStartRequest']
37
39
  _SANDBOXEXECSTARTRESPONSE = DESCRIPTOR.message_types_by_name['SandboxExecStartResponse']
38
40
  _SANDBOXEXECSTDINWRITEREQUEST = DESCRIPTOR.message_types_by_name['SandboxExecStdinWriteRequest']
@@ -41,6 +43,20 @@ _SANDBOXEXECSTDIOREADREQUEST = DESCRIPTOR.message_types_by_name['SandboxExecStdi
41
43
  _SANDBOXEXECSTDIOREADRESPONSE = DESCRIPTOR.message_types_by_name['SandboxExecStdioReadResponse']
42
44
  _SANDBOXEXECWAITREQUEST = DESCRIPTOR.message_types_by_name['SandboxExecWaitRequest']
43
45
  _SANDBOXEXECWAITRESPONSE = DESCRIPTOR.message_types_by_name['SandboxExecWaitResponse']
46
+ SandboxExecPollRequest = _reflection.GeneratedProtocolMessageType('SandboxExecPollRequest', (_message.Message,), {
47
+ 'DESCRIPTOR' : _SANDBOXEXECPOLLREQUEST,
48
+ '__module__' : 'modal_proto.sandbox_router_pb2'
49
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecPollRequest)
50
+ })
51
+ _sym_db.RegisterMessage(SandboxExecPollRequest)
52
+
53
+ SandboxExecPollResponse = _reflection.GeneratedProtocolMessageType('SandboxExecPollResponse', (_message.Message,), {
54
+ 'DESCRIPTOR' : _SANDBOXEXECPOLLRESPONSE,
55
+ '__module__' : 'modal_proto.sandbox_router_pb2'
56
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecPollResponse)
57
+ })
58
+ _sym_db.RegisterMessage(SandboxExecPollResponse)
59
+
44
60
  SandboxExecStartRequest = _reflection.GeneratedProtocolMessageType('SandboxExecStartRequest', (_message.Message,), {
45
61
  'DESCRIPTOR' : _SANDBOXEXECSTARTREQUEST,
46
62
  '__module__' : 'modal_proto.sandbox_router_pb2'
@@ -101,28 +117,32 @@ _SANDBOXROUTER = DESCRIPTOR.services_by_name['SandboxRouter']
101
117
  if _descriptor._USE_C_DESCRIPTORS == False:
102
118
 
103
119
  DESCRIPTOR._options = None
104
- _SANDBOXEXECSTDERRCONFIG._serialized_start=999
105
- _SANDBOXEXECSTDERRCONFIG._serialized_end=1140
106
- _SANDBOXEXECSTDIOFILEDESCRIPTOR._serialized_start=1142
107
- _SANDBOXEXECSTDIOFILEDESCRIPTOR._serialized_end=1268
108
- _SANDBOXEXECSTDOUTCONFIG._serialized_start=1270
109
- _SANDBOXEXECSTDOUTCONFIG._serialized_end=1372
110
- _SANDBOXEXECSTARTREQUEST._serialized_start=82
111
- _SANDBOXEXECSTARTREQUEST._serialized_end=483
112
- _SANDBOXEXECSTARTRESPONSE._serialized_start=485
113
- _SANDBOXEXECSTARTRESPONSE._serialized_end=511
114
- _SANDBOXEXECSTDINWRITEREQUEST._serialized_start=513
115
- _SANDBOXEXECSTDINWRITEREQUEST._serialized_end=620
116
- _SANDBOXEXECSTDINWRITERESPONSE._serialized_start=622
117
- _SANDBOXEXECSTDINWRITERESPONSE._serialized_end=653
118
- _SANDBOXEXECSTDIOREADREQUEST._serialized_start=656
119
- _SANDBOXEXECSTDIOREADREQUEST._serialized_end=814
120
- _SANDBOXEXECSTDIOREADRESPONSE._serialized_start=816
121
- _SANDBOXEXECSTDIOREADRESPONSE._serialized_end=860
122
- _SANDBOXEXECWAITREQUEST._serialized_start=862
123
- _SANDBOXEXECWAITREQUEST._serialized_end=920
124
- _SANDBOXEXECWAITRESPONSE._serialized_start=922
125
- _SANDBOXEXECWAITRESPONSE._serialized_end=996
126
- _SANDBOXROUTER._serialized_start=1375
127
- _SANDBOXROUTER._serialized_end=1877
120
+ _SANDBOXEXECSTDERRCONFIG._serialized_start=1135
121
+ _SANDBOXEXECSTDERRCONFIG._serialized_end=1276
122
+ _SANDBOXEXECSTDIOFILEDESCRIPTOR._serialized_start=1278
123
+ _SANDBOXEXECSTDIOFILEDESCRIPTOR._serialized_end=1404
124
+ _SANDBOXEXECSTDOUTCONFIG._serialized_start=1406
125
+ _SANDBOXEXECSTDOUTCONFIG._serialized_end=1508
126
+ _SANDBOXEXECPOLLREQUEST._serialized_start=81
127
+ _SANDBOXEXECPOLLREQUEST._serialized_end=139
128
+ _SANDBOXEXECPOLLRESPONSE._serialized_start=141
129
+ _SANDBOXEXECPOLLRESPONSE._serialized_end=215
130
+ _SANDBOXEXECSTARTREQUEST._serialized_start=218
131
+ _SANDBOXEXECSTARTREQUEST._serialized_end=619
132
+ _SANDBOXEXECSTARTRESPONSE._serialized_start=621
133
+ _SANDBOXEXECSTARTRESPONSE._serialized_end=647
134
+ _SANDBOXEXECSTDINWRITEREQUEST._serialized_start=649
135
+ _SANDBOXEXECSTDINWRITEREQUEST._serialized_end=756
136
+ _SANDBOXEXECSTDINWRITERESPONSE._serialized_start=758
137
+ _SANDBOXEXECSTDINWRITERESPONSE._serialized_end=789
138
+ _SANDBOXEXECSTDIOREADREQUEST._serialized_start=792
139
+ _SANDBOXEXECSTDIOREADREQUEST._serialized_end=950
140
+ _SANDBOXEXECSTDIOREADRESPONSE._serialized_start=952
141
+ _SANDBOXEXECSTDIOREADRESPONSE._serialized_end=996
142
+ _SANDBOXEXECWAITREQUEST._serialized_start=998
143
+ _SANDBOXEXECWAITREQUEST._serialized_end=1056
144
+ _SANDBOXEXECWAITRESPONSE._serialized_start=1058
145
+ _SANDBOXEXECWAITRESPONSE._serialized_end=1132
146
+ _SANDBOXROUTER._serialized_start=1511
147
+ _SANDBOXROUTER._serialized_end=2125
128
148
  # @@protoc_insertion_point(module_scope)
@@ -84,6 +84,50 @@ SANDBOX_EXEC_STDOUT_CONFIG_PIPE: SandboxExecStdoutConfig.ValueType # 1
84
84
  """The output will be streamed to the client."""
85
85
  global___SandboxExecStdoutConfig = SandboxExecStdoutConfig
86
86
 
87
+ class SandboxExecPollRequest(google.protobuf.message.Message):
88
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
89
+
90
+ TASK_ID_FIELD_NUMBER: builtins.int
91
+ EXEC_ID_FIELD_NUMBER: builtins.int
92
+ task_id: builtins.str
93
+ """The task ID of the sandbox running the exec'd command."""
94
+ exec_id: builtins.str
95
+ """The execution ID of the command to wait on."""
96
+ def __init__(
97
+ self,
98
+ *,
99
+ task_id: builtins.str = ...,
100
+ exec_id: builtins.str = ...,
101
+ ) -> None: ...
102
+ def ClearField(self, field_name: typing_extensions.Literal["exec_id", b"exec_id", "task_id", b"task_id"]) -> None: ...
103
+
104
+ global___SandboxExecPollRequest = SandboxExecPollRequest
105
+
106
+ class SandboxExecPollResponse(google.protobuf.message.Message):
107
+ """The response to a SandboxExecPollRequest. If the exec'd command has not
108
+ completed, exit_status will be unset.
109
+ """
110
+
111
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
112
+
113
+ CODE_FIELD_NUMBER: builtins.int
114
+ SIGNAL_FIELD_NUMBER: builtins.int
115
+ code: builtins.int
116
+ """The exit code of the command."""
117
+ signal: builtins.int
118
+ """The signal that terminated the command."""
119
+ def __init__(
120
+ self,
121
+ *,
122
+ code: builtins.int = ...,
123
+ signal: builtins.int = ...,
124
+ ) -> None: ...
125
+ def HasField(self, field_name: typing_extensions.Literal["code", b"code", "exit_status", b"exit_status", "signal", b"signal"]) -> builtins.bool: ...
126
+ def ClearField(self, field_name: typing_extensions.Literal["code", b"code", "exit_status", b"exit_status", "signal", b"signal"]) -> None: ...
127
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["exit_status", b"exit_status"]) -> typing_extensions.Literal["code", "signal"] | None: ...
128
+
129
+ global___SandboxExecPollResponse = SandboxExecPollResponse
130
+
87
131
  class SandboxExecStartRequest(google.protobuf.message.Message):
88
132
  DESCRIPTOR: google.protobuf.descriptor.Descriptor
89
133
 
@@ -14,6 +14,11 @@ class SandboxRouterStub(object):
14
14
  Args:
15
15
  channel: A grpc.Channel.
16
16
  """
17
+ self.SandboxExecPoll = channel.unary_unary(
18
+ '/modal.sandbox_router.SandboxRouter/SandboxExecPoll',
19
+ request_serializer=modal__proto_dot_sandbox__router__pb2.SandboxExecPollRequest.SerializeToString,
20
+ response_deserializer=modal__proto_dot_sandbox__router__pb2.SandboxExecPollResponse.FromString,
21
+ )
17
22
  self.SandboxExecStart = channel.unary_unary(
18
23
  '/modal.sandbox_router.SandboxRouter/SandboxExecStart',
19
24
  request_serializer=modal__proto_dot_sandbox__router__pb2.SandboxExecStartRequest.SerializeToString,
@@ -39,6 +44,13 @@ class SandboxRouterStub(object):
39
44
  class SandboxRouterServicer(object):
40
45
  """Missing associated documentation comment in .proto file."""
41
46
 
47
+ def SandboxExecPoll(self, request, context):
48
+ """Poll for the exit status of an exec'd command.
49
+ """
50
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
51
+ context.set_details('Method not implemented!')
52
+ raise NotImplementedError('Method not implemented!')
53
+
42
54
  def SandboxExecStart(self, request, context):
43
55
  """Execute a command in the sandbox.
44
56
  """
@@ -70,6 +82,11 @@ class SandboxRouterServicer(object):
70
82
 
71
83
  def add_SandboxRouterServicer_to_server(servicer, server):
72
84
  rpc_method_handlers = {
85
+ 'SandboxExecPoll': grpc.unary_unary_rpc_method_handler(
86
+ servicer.SandboxExecPoll,
87
+ request_deserializer=modal__proto_dot_sandbox__router__pb2.SandboxExecPollRequest.FromString,
88
+ response_serializer=modal__proto_dot_sandbox__router__pb2.SandboxExecPollResponse.SerializeToString,
89
+ ),
73
90
  'SandboxExecStart': grpc.unary_unary_rpc_method_handler(
74
91
  servicer.SandboxExecStart,
75
92
  request_deserializer=modal__proto_dot_sandbox__router__pb2.SandboxExecStartRequest.FromString,
@@ -100,6 +117,23 @@ def add_SandboxRouterServicer_to_server(servicer, server):
100
117
  class SandboxRouter(object):
101
118
  """Missing associated documentation comment in .proto file."""
102
119
 
120
+ @staticmethod
121
+ def SandboxExecPoll(request,
122
+ target,
123
+ options=(),
124
+ channel_credentials=None,
125
+ call_credentials=None,
126
+ insecure=False,
127
+ compression=None,
128
+ wait_for_ready=None,
129
+ timeout=None,
130
+ metadata=None):
131
+ return grpc.experimental.unary_unary(request, target, '/modal.sandbox_router.SandboxRouter/SandboxExecPoll',
132
+ modal__proto_dot_sandbox__router__pb2.SandboxExecPollRequest.SerializeToString,
133
+ modal__proto_dot_sandbox__router__pb2.SandboxExecPollResponse.FromString,
134
+ options, channel_credentials,
135
+ insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
136
+
103
137
  @staticmethod
104
138
  def SandboxExecStart(request,
105
139
  target,
@@ -9,6 +9,11 @@ import modal_proto.sandbox_router_pb2
9
9
 
10
10
  class SandboxRouterStub:
11
11
  def __init__(self, channel: grpc.Channel) -> None: ...
12
+ SandboxExecPoll: grpc.UnaryUnaryMultiCallable[
13
+ modal_proto.sandbox_router_pb2.SandboxExecPollRequest,
14
+ modal_proto.sandbox_router_pb2.SandboxExecPollResponse,
15
+ ]
16
+ """Poll for the exit status of an exec'd command."""
12
17
  SandboxExecStart: grpc.UnaryUnaryMultiCallable[
13
18
  modal_proto.sandbox_router_pb2.SandboxExecStartRequest,
14
19
  modal_proto.sandbox_router_pb2.SandboxExecStartResponse,
@@ -32,6 +37,13 @@ class SandboxRouterStub:
32
37
 
33
38
  class SandboxRouterServicer(metaclass=abc.ABCMeta):
34
39
  @abc.abstractmethod
40
+ def SandboxExecPoll(
41
+ self,
42
+ request: modal_proto.sandbox_router_pb2.SandboxExecPollRequest,
43
+ context: grpc.ServicerContext,
44
+ ) -> modal_proto.sandbox_router_pb2.SandboxExecPollResponse:
45
+ """Poll for the exit status of an exec'd command."""
46
+ @abc.abstractmethod
35
47
  def SandboxExecStart(
36
48
  self,
37
49
  request: modal_proto.sandbox_router_pb2.SandboxExecStartRequest,
modal_version/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.1.5.dev78"
4
+ __version__ = "1.1.5.dev81"