modal 1.1.5.dev83__py3-none-any.whl → 1.3.1.dev8__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.

Files changed (139) hide show
  1. modal/__init__.py +4 -4
  2. modal/__main__.py +4 -29
  3. modal/_billing.py +84 -0
  4. modal/_clustered_functions.py +1 -3
  5. modal/_container_entrypoint.py +33 -208
  6. modal/_functions.py +146 -121
  7. modal/_grpc_client.py +191 -0
  8. modal/_ipython.py +16 -6
  9. modal/_load_context.py +106 -0
  10. modal/_object.py +72 -21
  11. modal/_output.py +12 -14
  12. modal/_partial_function.py +31 -4
  13. modal/_resolver.py +44 -57
  14. modal/_runtime/container_io_manager.py +26 -28
  15. modal/_runtime/container_io_manager.pyi +42 -44
  16. modal/_runtime/gpu_memory_snapshot.py +9 -7
  17. modal/_runtime/user_code_event_loop.py +80 -0
  18. modal/_runtime/user_code_imports.py +236 -10
  19. modal/_serialization.py +2 -1
  20. modal/_traceback.py +4 -13
  21. modal/_tunnel.py +16 -11
  22. modal/_tunnel.pyi +25 -3
  23. modal/_utils/async_utils.py +337 -10
  24. modal/_utils/auth_token_manager.py +1 -4
  25. modal/_utils/blob_utils.py +29 -22
  26. modal/_utils/function_utils.py +20 -21
  27. modal/_utils/grpc_testing.py +6 -3
  28. modal/_utils/grpc_utils.py +223 -64
  29. modal/_utils/mount_utils.py +26 -1
  30. modal/_utils/package_utils.py +0 -1
  31. modal/_utils/rand_pb_testing.py +8 -1
  32. modal/_utils/task_command_router_client.py +524 -0
  33. modal/_vendor/cloudpickle.py +144 -48
  34. modal/app.py +215 -96
  35. modal/app.pyi +78 -37
  36. modal/billing.py +5 -0
  37. modal/builder/2025.06.txt +6 -3
  38. modal/builder/PREVIEW.txt +2 -1
  39. modal/builder/base-images.json +4 -2
  40. modal/cli/_download.py +19 -3
  41. modal/cli/cluster.py +4 -2
  42. modal/cli/config.py +3 -1
  43. modal/cli/container.py +5 -4
  44. modal/cli/dict.py +5 -2
  45. modal/cli/entry_point.py +26 -2
  46. modal/cli/environment.py +2 -16
  47. modal/cli/launch.py +1 -76
  48. modal/cli/network_file_system.py +5 -20
  49. modal/cli/queues.py +5 -4
  50. modal/cli/run.py +24 -204
  51. modal/cli/secret.py +1 -2
  52. modal/cli/shell.py +375 -0
  53. modal/cli/utils.py +1 -13
  54. modal/cli/volume.py +11 -17
  55. modal/client.py +16 -125
  56. modal/client.pyi +94 -144
  57. modal/cloud_bucket_mount.py +3 -1
  58. modal/cloud_bucket_mount.pyi +4 -0
  59. modal/cls.py +101 -64
  60. modal/cls.pyi +9 -8
  61. modal/config.py +21 -1
  62. modal/container_process.py +288 -12
  63. modal/container_process.pyi +99 -38
  64. modal/dict.py +72 -33
  65. modal/dict.pyi +88 -57
  66. modal/environments.py +16 -8
  67. modal/environments.pyi +6 -2
  68. modal/exception.py +154 -16
  69. modal/experimental/__init__.py +23 -5
  70. modal/experimental/flash.py +161 -74
  71. modal/experimental/flash.pyi +97 -49
  72. modal/file_io.py +50 -92
  73. modal/file_io.pyi +117 -89
  74. modal/functions.pyi +70 -87
  75. modal/image.py +73 -47
  76. modal/image.pyi +33 -30
  77. modal/io_streams.py +500 -149
  78. modal/io_streams.pyi +279 -189
  79. modal/mount.py +60 -45
  80. modal/mount.pyi +41 -17
  81. modal/network_file_system.py +19 -11
  82. modal/network_file_system.pyi +72 -39
  83. modal/object.pyi +114 -22
  84. modal/parallel_map.py +42 -44
  85. modal/parallel_map.pyi +9 -17
  86. modal/partial_function.pyi +4 -2
  87. modal/proxy.py +14 -6
  88. modal/proxy.pyi +10 -2
  89. modal/queue.py +45 -38
  90. modal/queue.pyi +88 -52
  91. modal/runner.py +96 -96
  92. modal/runner.pyi +44 -27
  93. modal/sandbox.py +225 -108
  94. modal/sandbox.pyi +226 -63
  95. modal/secret.py +58 -56
  96. modal/secret.pyi +28 -13
  97. modal/serving.py +7 -11
  98. modal/serving.pyi +7 -8
  99. modal/snapshot.py +29 -15
  100. modal/snapshot.pyi +18 -10
  101. modal/token_flow.py +1 -1
  102. modal/token_flow.pyi +4 -6
  103. modal/volume.py +102 -55
  104. modal/volume.pyi +125 -66
  105. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/METADATA +10 -9
  106. modal-1.3.1.dev8.dist-info/RECORD +189 -0
  107. modal_proto/api.proto +86 -30
  108. modal_proto/api_grpc.py +10 -25
  109. modal_proto/api_pb2.py +1080 -1047
  110. modal_proto/api_pb2.pyi +253 -79
  111. modal_proto/api_pb2_grpc.py +14 -48
  112. modal_proto/api_pb2_grpc.pyi +6 -18
  113. modal_proto/modal_api_grpc.py +175 -176
  114. modal_proto/{sandbox_router.proto → task_command_router.proto} +62 -45
  115. modal_proto/task_command_router_grpc.py +138 -0
  116. modal_proto/task_command_router_pb2.py +180 -0
  117. modal_proto/{sandbox_router_pb2.pyi → task_command_router_pb2.pyi} +110 -63
  118. modal_proto/task_command_router_pb2_grpc.py +272 -0
  119. modal_proto/task_command_router_pb2_grpc.pyi +100 -0
  120. modal_version/__init__.py +1 -1
  121. modal_version/__main__.py +1 -1
  122. modal/cli/programs/launch_instance_ssh.py +0 -94
  123. modal/cli/programs/run_marimo.py +0 -95
  124. modal-1.1.5.dev83.dist-info/RECORD +0 -191
  125. modal_proto/modal_options_grpc.py +0 -3
  126. modal_proto/options.proto +0 -19
  127. modal_proto/options_grpc.py +0 -3
  128. modal_proto/options_pb2.py +0 -35
  129. modal_proto/options_pb2.pyi +0 -20
  130. modal_proto/options_pb2_grpc.py +0 -4
  131. modal_proto/options_pb2_grpc.pyi +0 -7
  132. modal_proto/sandbox_router_grpc.py +0 -105
  133. modal_proto/sandbox_router_pb2.py +0 -148
  134. modal_proto/sandbox_router_pb2_grpc.py +0 -203
  135. modal_proto/sandbox_router_pb2_grpc.pyi +0 -75
  136. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/WHEEL +0 -0
  137. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/entry_points.txt +0 -0
  138. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/licenses/LICENSE +0 -0
  139. {modal-1.1.5.dev83.dist-info → modal-1.3.1.dev8.dist-info}/top_level.txt +0 -0
@@ -1,43 +1,46 @@
1
1
  syntax = "proto3";
2
2
 
3
+ option go_package = "github.com/modal-labs/modal/go/proto";
4
+
5
+ import "google/protobuf/empty.proto";
3
6
  import "modal_proto/api.proto";
4
7
 
5
- package modal.sandbox_router;
8
+ package modal.task_command_router;
6
9
 
7
- enum SandboxExecStderrConfig {
10
+ enum TaskExecStderrConfig {
8
11
  // The output will be discarded.
9
- SANDBOX_EXEC_STDERR_CONFIG_DEVNULL = 0;
12
+ TASK_EXEC_STDERR_CONFIG_DEVNULL = 0;
10
13
  // The output will be streamed to the client.
11
- SANDBOX_EXEC_STDERR_CONFIG_PIPE = 1;
14
+ TASK_EXEC_STDERR_CONFIG_PIPE = 1;
12
15
  // A special value that can be used to indicate that the stderr stream should
13
16
  // be merged with the stdout stream.
14
- SANDBOX_EXEC_STDERR_CONFIG_STDOUT = 2;
17
+ TASK_EXEC_STDERR_CONFIG_STDOUT = 2;
15
18
  }
16
19
 
17
- enum SandboxExecStdioFileDescriptor {
20
+ enum TaskExecStdioFileDescriptor {
18
21
  // Read from stdout.
19
- SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT = 0;
22
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT = 0;
20
23
  // Read from stderr.
21
- SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDERR = 1;
24
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDERR = 1;
22
25
  }
23
26
 
24
- enum SandboxExecStdoutConfig {
27
+ enum TaskExecStdoutConfig {
25
28
  // The output will be discarded.
26
- SANDBOX_EXEC_STDOUT_CONFIG_DEVNULL = 0;
29
+ TASK_EXEC_STDOUT_CONFIG_DEVNULL = 0;
27
30
  // The output will be streamed to the client.
28
- SANDBOX_EXEC_STDOUT_CONFIG_PIPE = 1;
31
+ TASK_EXEC_STDOUT_CONFIG_PIPE = 1;
29
32
  }
30
33
 
31
- message SandboxExecPollRequest {
32
- // The task ID of the sandbox running the exec'd command.
34
+ message TaskExecPollRequest {
35
+ // The ID of the task running the exec'd command.
33
36
  string task_id = 1;
34
37
  // The execution ID of the command to wait on.
35
38
  string exec_id = 2;
36
39
  }
37
40
 
38
- // The response to a SandboxExecPollRequest. If the exec'd command has not
41
+ // The response to a TaskExecPollRequest. If the exec'd command has not
39
42
  // completed, exit_status will be unset.
40
- message SandboxExecPollResponse {
43
+ message TaskExecPollResponse {
41
44
  oneof exit_status {
42
45
  // The exit code of the command.
43
46
  int32 code = 1;
@@ -45,32 +48,28 @@ message SandboxExecPollResponse {
45
48
  int32 signal = 2;
46
49
  }
47
50
  // 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.)
51
+ // and termination by Modal (due to task timeout, exec exceeded deadline, etc.)
49
52
  }
50
53
 
51
- message SandboxExecStartRequest {
52
- // The task ID of the sandbox to execute the command in.
54
+ message TaskExecStartRequest {
55
+ // The ID of the task to execute the command in.
53
56
  string task_id = 1;
54
57
  // Execution ID. This ID will be used to identify the execution for other
55
58
  // requests and ensure exec commands are idempotent.
56
- //
57
- // TODO(saltzm): Could instead have a separate idempotency key from the exec_id
58
- // like present day, and have the server generate the exec_id and return it in
59
- // the ExecStartResponse.
60
59
  string exec_id = 2;
61
60
  // Command arguments to execute.
62
61
  repeated string command_args= 3;
63
62
  // Configures how the stdout of the command will be handled.
64
- SandboxExecStdoutConfig stdout_config = 4;
63
+ TaskExecStdoutConfig stdout_config = 4;
65
64
  // Configures how the stderr of the command will be handled.
66
- SandboxExecStderrConfig stderr_config = 5;
65
+ TaskExecStderrConfig stderr_config = 5;
67
66
  // Timeout in seconds for the exec'd command to exit. If the command does not
68
67
  // exit within this duration, the command will be killed. This is NOT the
69
68
  // timeout for the ExecStartRequest RPC to complete.
70
69
  optional uint32 timeout_secs = 6;
71
70
  // Working directory for the command.
72
71
  optional string workdir = 7;
73
- // Secret IDs to mount into the sandbox.
72
+ // Secret IDs to mount into the task.
74
73
  repeated string secret_ids = 8;
75
74
  // PTY info for the command.
76
75
  optional modal.client.PTYInfo pty_info = 9;
@@ -79,10 +78,10 @@ message SandboxExecStartRequest {
79
78
  bool runtime_debug = 10;
80
79
  }
81
80
 
82
- message SandboxExecStartResponse { }
81
+ message TaskExecStartResponse { }
83
82
 
84
- message SandboxExecStdinWriteRequest {
85
- // The task ID of the sandbox running the exec'd command.
83
+ message TaskExecStdinWriteRequest {
84
+ // The ID of the task running the exec'd command.
86
85
  string task_id = 1;
87
86
  // The execution ID of the command to write to.
88
87
  string exec_id = 2;
@@ -95,11 +94,10 @@ message SandboxExecStdinWriteRequest {
95
94
  bool eof = 5;
96
95
  }
97
96
 
98
- message SandboxExecStdinWriteResponse { }
99
-
97
+ message TaskExecStdinWriteResponse { }
100
98
 
101
- message SandboxExecStdioReadRequest {
102
- // The task ID of the sandbox running the exec'd command.
99
+ message TaskExecStdioReadRequest {
100
+ // The ID of the task running the exec'd command.
103
101
  string task_id = 1;
104
102
  // The execution ID of the command to read from.
105
103
  string exec_id = 2;
@@ -107,22 +105,22 @@ message SandboxExecStdioReadRequest {
107
105
  // last read position if the connection is closed and reopened.
108
106
  uint64 offset = 3;
109
107
  // Which file descriptor to read from.
110
- SandboxExecStdioFileDescriptor file_descriptor = 4;
108
+ TaskExecStdioFileDescriptor file_descriptor = 4;
111
109
  }
112
110
 
113
- message SandboxExecStdioReadResponse {
111
+ message TaskExecStdioReadResponse {
114
112
  // The data read from the file descriptor.
115
113
  bytes data = 1;
116
114
  }
117
115
 
118
- message SandboxExecWaitRequest {
119
- // The task ID of the sandbox running the exec'd command.
116
+ message TaskExecWaitRequest {
117
+ // The ID of the task running the exec'd command.
120
118
  string task_id = 1;
121
119
  // The execution ID of the command to wait on.
122
120
  string exec_id = 2;
123
121
  }
124
122
 
125
- message SandboxExecWaitResponse {
123
+ message TaskExecWaitResponse {
126
124
  oneof exit_status {
127
125
  // The exit code of the command.
128
126
  int32 code = 1;
@@ -130,18 +128,37 @@ message SandboxExecWaitResponse {
130
128
  int32 signal = 2;
131
129
  }
132
130
  // TODO(saltzm): Give a way for the user to distinguish between normal exit
133
- // and termination by Modal (due to sandbox timeout, exec exceeded deadline, etc.)
131
+ // and termination by Modal (due to task timeout, exec exceeded deadline, etc.)
132
+ }
133
+
134
+ message TaskMountDirectoryRequest {
135
+ string task_id = 1;
136
+ bytes path = 2;
137
+ string image_id = 3;
138
+ }
139
+
140
+ message TaskSnapshotDirectoryRequest {
141
+ string task_id = 1;
142
+ bytes path = 2;
143
+ }
144
+
145
+ message TaskSnapshotDirectoryResponse {
146
+ string image_id = 1;
134
147
  }
135
148
 
136
- service SandboxRouter {
149
+ service TaskCommandRouter {
137
150
  // Poll for the exit status of an exec'd command.
138
- rpc SandboxExecPoll(SandboxExecPollRequest) returns (SandboxExecPollResponse);
139
- // Execute a command in the sandbox.
140
- rpc SandboxExecStart(SandboxExecStartRequest) returns (SandboxExecStartResponse);
151
+ rpc TaskExecPoll(TaskExecPollRequest) returns (TaskExecPollResponse);
152
+ // Execute a command in the task.
153
+ rpc TaskExecStart(TaskExecStartRequest) returns (TaskExecStartResponse);
141
154
  // Write to the stdin stream of an exec'd command.
142
- rpc SandboxExecStdinWrite(SandboxExecStdinWriteRequest) returns (SandboxExecStdinWriteResponse);
155
+ rpc TaskExecStdinWrite(TaskExecStdinWriteRequest) returns (TaskExecStdinWriteResponse);
143
156
  // Get a stream of output from the stdout or stderr stream of an exec'd command.
144
- rpc SandboxExecStdioRead(SandboxExecStdioReadRequest) returns (stream SandboxExecStdioReadResponse);
157
+ rpc TaskExecStdioRead(TaskExecStdioReadRequest) returns (stream TaskExecStdioReadResponse);
145
158
  // Wait for an exec'd command to exit and return the exit code.
146
- rpc SandboxExecWait(SandboxExecWaitRequest) returns (SandboxExecWaitResponse);
159
+ rpc TaskExecWait(TaskExecWaitRequest) returns (TaskExecWaitResponse);
160
+ // Mount an image at a directory in the container.
161
+ rpc TaskMountDirectory(TaskMountDirectoryRequest) returns (google.protobuf.Empty);
162
+ // Snapshot a directory with a mounted image, including any local changes, into a new image.
163
+ rpc TaskSnapshotDirectory(TaskSnapshotDirectoryRequest) returns (TaskSnapshotDirectoryResponse);
147
164
  }
@@ -0,0 +1,138 @@
1
+ # Generated by the Protocol Buffers compiler. DO NOT EDIT!
2
+ # source: modal_proto/task_command_router.proto
3
+ # plugin: grpclib.plugin.main
4
+ import abc
5
+ import typing
6
+
7
+ import grpclib.const
8
+ import grpclib.client
9
+ if typing.TYPE_CHECKING:
10
+ import grpclib.server
11
+
12
+ import google.protobuf.empty_pb2
13
+ import modal_proto.api_pb2
14
+ import modal_proto.task_command_router_pb2
15
+
16
+
17
+ class TaskCommandRouterBase(abc.ABC):
18
+
19
+ @abc.abstractmethod
20
+ async def TaskExecPoll(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecPollRequest, modal_proto.task_command_router_pb2.TaskExecPollResponse]') -> None:
21
+ pass
22
+
23
+ @abc.abstractmethod
24
+ async def TaskExecStart(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecStartRequest, modal_proto.task_command_router_pb2.TaskExecStartResponse]') -> None:
25
+ pass
26
+
27
+ @abc.abstractmethod
28
+ async def TaskExecStdinWrite(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecStdinWriteRequest, modal_proto.task_command_router_pb2.TaskExecStdinWriteResponse]') -> None:
29
+ pass
30
+
31
+ @abc.abstractmethod
32
+ async def TaskExecStdioRead(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecStdioReadRequest, modal_proto.task_command_router_pb2.TaskExecStdioReadResponse]') -> None:
33
+ pass
34
+
35
+ @abc.abstractmethod
36
+ async def TaskExecWait(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskExecWaitRequest, modal_proto.task_command_router_pb2.TaskExecWaitResponse]') -> None:
37
+ pass
38
+
39
+ @abc.abstractmethod
40
+ async def TaskMountDirectory(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskMountDirectoryRequest, google.protobuf.empty_pb2.Empty]') -> None:
41
+ pass
42
+
43
+ @abc.abstractmethod
44
+ async def TaskSnapshotDirectory(self, stream: 'grpclib.server.Stream[modal_proto.task_command_router_pb2.TaskSnapshotDirectoryRequest, modal_proto.task_command_router_pb2.TaskSnapshotDirectoryResponse]') -> None:
45
+ pass
46
+
47
+ def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]:
48
+ return {
49
+ '/modal.task_command_router.TaskCommandRouter/TaskExecPoll': grpclib.const.Handler(
50
+ self.TaskExecPoll,
51
+ grpclib.const.Cardinality.UNARY_UNARY,
52
+ modal_proto.task_command_router_pb2.TaskExecPollRequest,
53
+ modal_proto.task_command_router_pb2.TaskExecPollResponse,
54
+ ),
55
+ '/modal.task_command_router.TaskCommandRouter/TaskExecStart': grpclib.const.Handler(
56
+ self.TaskExecStart,
57
+ grpclib.const.Cardinality.UNARY_UNARY,
58
+ modal_proto.task_command_router_pb2.TaskExecStartRequest,
59
+ modal_proto.task_command_router_pb2.TaskExecStartResponse,
60
+ ),
61
+ '/modal.task_command_router.TaskCommandRouter/TaskExecStdinWrite': grpclib.const.Handler(
62
+ self.TaskExecStdinWrite,
63
+ grpclib.const.Cardinality.UNARY_UNARY,
64
+ modal_proto.task_command_router_pb2.TaskExecStdinWriteRequest,
65
+ modal_proto.task_command_router_pb2.TaskExecStdinWriteResponse,
66
+ ),
67
+ '/modal.task_command_router.TaskCommandRouter/TaskExecStdioRead': grpclib.const.Handler(
68
+ self.TaskExecStdioRead,
69
+ grpclib.const.Cardinality.UNARY_STREAM,
70
+ modal_proto.task_command_router_pb2.TaskExecStdioReadRequest,
71
+ modal_proto.task_command_router_pb2.TaskExecStdioReadResponse,
72
+ ),
73
+ '/modal.task_command_router.TaskCommandRouter/TaskExecWait': grpclib.const.Handler(
74
+ self.TaskExecWait,
75
+ grpclib.const.Cardinality.UNARY_UNARY,
76
+ modal_proto.task_command_router_pb2.TaskExecWaitRequest,
77
+ modal_proto.task_command_router_pb2.TaskExecWaitResponse,
78
+ ),
79
+ '/modal.task_command_router.TaskCommandRouter/TaskMountDirectory': grpclib.const.Handler(
80
+ self.TaskMountDirectory,
81
+ grpclib.const.Cardinality.UNARY_UNARY,
82
+ modal_proto.task_command_router_pb2.TaskMountDirectoryRequest,
83
+ google.protobuf.empty_pb2.Empty,
84
+ ),
85
+ '/modal.task_command_router.TaskCommandRouter/TaskSnapshotDirectory': grpclib.const.Handler(
86
+ self.TaskSnapshotDirectory,
87
+ grpclib.const.Cardinality.UNARY_UNARY,
88
+ modal_proto.task_command_router_pb2.TaskSnapshotDirectoryRequest,
89
+ modal_proto.task_command_router_pb2.TaskSnapshotDirectoryResponse,
90
+ ),
91
+ }
92
+
93
+
94
+ class TaskCommandRouterStub:
95
+
96
+ def __init__(self, channel: grpclib.client.Channel) -> None:
97
+ self.TaskExecPoll = grpclib.client.UnaryUnaryMethod(
98
+ channel,
99
+ '/modal.task_command_router.TaskCommandRouter/TaskExecPoll',
100
+ modal_proto.task_command_router_pb2.TaskExecPollRequest,
101
+ modal_proto.task_command_router_pb2.TaskExecPollResponse,
102
+ )
103
+ self.TaskExecStart = grpclib.client.UnaryUnaryMethod(
104
+ channel,
105
+ '/modal.task_command_router.TaskCommandRouter/TaskExecStart',
106
+ modal_proto.task_command_router_pb2.TaskExecStartRequest,
107
+ modal_proto.task_command_router_pb2.TaskExecStartResponse,
108
+ )
109
+ self.TaskExecStdinWrite = grpclib.client.UnaryUnaryMethod(
110
+ channel,
111
+ '/modal.task_command_router.TaskCommandRouter/TaskExecStdinWrite',
112
+ modal_proto.task_command_router_pb2.TaskExecStdinWriteRequest,
113
+ modal_proto.task_command_router_pb2.TaskExecStdinWriteResponse,
114
+ )
115
+ self.TaskExecStdioRead = grpclib.client.UnaryStreamMethod(
116
+ channel,
117
+ '/modal.task_command_router.TaskCommandRouter/TaskExecStdioRead',
118
+ modal_proto.task_command_router_pb2.TaskExecStdioReadRequest,
119
+ modal_proto.task_command_router_pb2.TaskExecStdioReadResponse,
120
+ )
121
+ self.TaskExecWait = grpclib.client.UnaryUnaryMethod(
122
+ channel,
123
+ '/modal.task_command_router.TaskCommandRouter/TaskExecWait',
124
+ modal_proto.task_command_router_pb2.TaskExecWaitRequest,
125
+ modal_proto.task_command_router_pb2.TaskExecWaitResponse,
126
+ )
127
+ self.TaskMountDirectory = grpclib.client.UnaryUnaryMethod(
128
+ channel,
129
+ '/modal.task_command_router.TaskCommandRouter/TaskMountDirectory',
130
+ modal_proto.task_command_router_pb2.TaskMountDirectoryRequest,
131
+ google.protobuf.empty_pb2.Empty,
132
+ )
133
+ self.TaskSnapshotDirectory = grpclib.client.UnaryUnaryMethod(
134
+ channel,
135
+ '/modal.task_command_router.TaskCommandRouter/TaskSnapshotDirectory',
136
+ modal_proto.task_command_router_pb2.TaskSnapshotDirectoryRequest,
137
+ modal_proto.task_command_router_pb2.TaskSnapshotDirectoryResponse,
138
+ )
@@ -0,0 +1,180 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: modal_proto/task_command_router.proto
4
+ """Generated protocol buffer code."""
5
+ from google.protobuf.internal import enum_type_wrapper
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import message as _message
9
+ from google.protobuf import reflection as _reflection
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ # @@protoc_insertion_point(imports)
12
+
13
+ _sym_db = _symbol_database.Default()
14
+
15
+
16
+ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
17
+ from modal_proto import api_pb2 as modal__proto_dot_api__pb2
18
+
19
+
20
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%modal_proto/task_command_router.proto\x12\x19modal.task_command_router\x1a\x1bgoogle/protobuf/empty.proto\x1a\x15modal_proto/api.proto\"7\n\x13TaskExecPollRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"G\n\x14TaskExecPollResponse\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\"\x92\x03\n\x14TaskExecStartRequest\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\x46\n\rstdout_config\x18\x04 \x01(\x0e\x32/.modal.task_command_router.TaskExecStdoutConfig\x12\x46\n\rstderr_config\x18\x05 \x01(\x0e\x32/.modal.task_command_router.TaskExecStderrConfig\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\"\x17\n\x15TaskExecStartResponse\"h\n\x19TaskExecStdinWriteRequest\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\"\x1c\n\x1aTaskExecStdinWriteResponse\"\x9d\x01\n\x18TaskExecStdioReadRequest\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\x12O\n\x0f\x66ile_descriptor\x18\x04 \x01(\x0e\x32\x36.modal.task_command_router.TaskExecStdioFileDescriptor\")\n\x19TaskExecStdioReadResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"7\n\x13TaskExecWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"G\n\x14TaskExecWaitResponse\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\"L\n\x19TaskMountDirectoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\x0c\x12\x10\n\x08image_id\x18\x03 \x01(\t\"=\n\x1cTaskSnapshotDirectoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\x0c\"1\n\x1dTaskSnapshotDirectoryResponse\x12\x10\n\x08image_id\x18\x01 \x01(\t*\x81\x01\n\x14TaskExecStderrConfig\x12#\n\x1fTASK_EXEC_STDERR_CONFIG_DEVNULL\x10\x00\x12 \n\x1cTASK_EXEC_STDERR_CONFIG_PIPE\x10\x01\x12\"\n\x1eTASK_EXEC_STDERR_CONFIG_STDOUT\x10\x02*u\n\x1bTaskExecStdioFileDescriptor\x12*\n&TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12*\n&TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*]\n\x14TaskExecStdoutConfig\x12#\n\x1fTASK_EXEC_STDOUT_CONFIG_DEVNULL\x10\x00\x12 \n\x1cTASK_EXEC_STDOUT_CONFIG_PIPE\x10\x01\x32\xe1\x06\n\x11TaskCommandRouter\x12o\n\x0cTaskExecPoll\x12..modal.task_command_router.TaskExecPollRequest\x1a/.modal.task_command_router.TaskExecPollResponse\x12r\n\rTaskExecStart\x12/.modal.task_command_router.TaskExecStartRequest\x1a\x30.modal.task_command_router.TaskExecStartResponse\x12\x81\x01\n\x12TaskExecStdinWrite\x12\x34.modal.task_command_router.TaskExecStdinWriteRequest\x1a\x35.modal.task_command_router.TaskExecStdinWriteResponse\x12\x80\x01\n\x11TaskExecStdioRead\x12\x33.modal.task_command_router.TaskExecStdioReadRequest\x1a\x34.modal.task_command_router.TaskExecStdioReadResponse0\x01\x12o\n\x0cTaskExecWait\x12..modal.task_command_router.TaskExecWaitRequest\x1a/.modal.task_command_router.TaskExecWaitResponse\x12\x62\n\x12TaskMountDirectory\x12\x34.modal.task_command_router.TaskMountDirectoryRequest\x1a\x16.google.protobuf.Empty\x12\x8a\x01\n\x15TaskSnapshotDirectory\x12\x37.modal.task_command_router.TaskSnapshotDirectoryRequest\x1a\x38.modal.task_command_router.TaskSnapshotDirectoryResponseB&Z$github.com/modal-labs/modal/go/protob\x06proto3')
21
+
22
+ _TASKEXECSTDERRCONFIG = DESCRIPTOR.enum_types_by_name['TaskExecStderrConfig']
23
+ TaskExecStderrConfig = enum_type_wrapper.EnumTypeWrapper(_TASKEXECSTDERRCONFIG)
24
+ _TASKEXECSTDIOFILEDESCRIPTOR = DESCRIPTOR.enum_types_by_name['TaskExecStdioFileDescriptor']
25
+ TaskExecStdioFileDescriptor = enum_type_wrapper.EnumTypeWrapper(_TASKEXECSTDIOFILEDESCRIPTOR)
26
+ _TASKEXECSTDOUTCONFIG = DESCRIPTOR.enum_types_by_name['TaskExecStdoutConfig']
27
+ TaskExecStdoutConfig = enum_type_wrapper.EnumTypeWrapper(_TASKEXECSTDOUTCONFIG)
28
+ TASK_EXEC_STDERR_CONFIG_DEVNULL = 0
29
+ TASK_EXEC_STDERR_CONFIG_PIPE = 1
30
+ TASK_EXEC_STDERR_CONFIG_STDOUT = 2
31
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT = 0
32
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDERR = 1
33
+ TASK_EXEC_STDOUT_CONFIG_DEVNULL = 0
34
+ TASK_EXEC_STDOUT_CONFIG_PIPE = 1
35
+
36
+
37
+ _TASKEXECPOLLREQUEST = DESCRIPTOR.message_types_by_name['TaskExecPollRequest']
38
+ _TASKEXECPOLLRESPONSE = DESCRIPTOR.message_types_by_name['TaskExecPollResponse']
39
+ _TASKEXECSTARTREQUEST = DESCRIPTOR.message_types_by_name['TaskExecStartRequest']
40
+ _TASKEXECSTARTRESPONSE = DESCRIPTOR.message_types_by_name['TaskExecStartResponse']
41
+ _TASKEXECSTDINWRITEREQUEST = DESCRIPTOR.message_types_by_name['TaskExecStdinWriteRequest']
42
+ _TASKEXECSTDINWRITERESPONSE = DESCRIPTOR.message_types_by_name['TaskExecStdinWriteResponse']
43
+ _TASKEXECSTDIOREADREQUEST = DESCRIPTOR.message_types_by_name['TaskExecStdioReadRequest']
44
+ _TASKEXECSTDIOREADRESPONSE = DESCRIPTOR.message_types_by_name['TaskExecStdioReadResponse']
45
+ _TASKEXECWAITREQUEST = DESCRIPTOR.message_types_by_name['TaskExecWaitRequest']
46
+ _TASKEXECWAITRESPONSE = DESCRIPTOR.message_types_by_name['TaskExecWaitResponse']
47
+ _TASKMOUNTDIRECTORYREQUEST = DESCRIPTOR.message_types_by_name['TaskMountDirectoryRequest']
48
+ _TASKSNAPSHOTDIRECTORYREQUEST = DESCRIPTOR.message_types_by_name['TaskSnapshotDirectoryRequest']
49
+ _TASKSNAPSHOTDIRECTORYRESPONSE = DESCRIPTOR.message_types_by_name['TaskSnapshotDirectoryResponse']
50
+ TaskExecPollRequest = _reflection.GeneratedProtocolMessageType('TaskExecPollRequest', (_message.Message,), {
51
+ 'DESCRIPTOR' : _TASKEXECPOLLREQUEST,
52
+ '__module__' : 'modal_proto.task_command_router_pb2'
53
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecPollRequest)
54
+ })
55
+ _sym_db.RegisterMessage(TaskExecPollRequest)
56
+
57
+ TaskExecPollResponse = _reflection.GeneratedProtocolMessageType('TaskExecPollResponse', (_message.Message,), {
58
+ 'DESCRIPTOR' : _TASKEXECPOLLRESPONSE,
59
+ '__module__' : 'modal_proto.task_command_router_pb2'
60
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecPollResponse)
61
+ })
62
+ _sym_db.RegisterMessage(TaskExecPollResponse)
63
+
64
+ TaskExecStartRequest = _reflection.GeneratedProtocolMessageType('TaskExecStartRequest', (_message.Message,), {
65
+ 'DESCRIPTOR' : _TASKEXECSTARTREQUEST,
66
+ '__module__' : 'modal_proto.task_command_router_pb2'
67
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStartRequest)
68
+ })
69
+ _sym_db.RegisterMessage(TaskExecStartRequest)
70
+
71
+ TaskExecStartResponse = _reflection.GeneratedProtocolMessageType('TaskExecStartResponse', (_message.Message,), {
72
+ 'DESCRIPTOR' : _TASKEXECSTARTRESPONSE,
73
+ '__module__' : 'modal_proto.task_command_router_pb2'
74
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStartResponse)
75
+ })
76
+ _sym_db.RegisterMessage(TaskExecStartResponse)
77
+
78
+ TaskExecStdinWriteRequest = _reflection.GeneratedProtocolMessageType('TaskExecStdinWriteRequest', (_message.Message,), {
79
+ 'DESCRIPTOR' : _TASKEXECSTDINWRITEREQUEST,
80
+ '__module__' : 'modal_proto.task_command_router_pb2'
81
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStdinWriteRequest)
82
+ })
83
+ _sym_db.RegisterMessage(TaskExecStdinWriteRequest)
84
+
85
+ TaskExecStdinWriteResponse = _reflection.GeneratedProtocolMessageType('TaskExecStdinWriteResponse', (_message.Message,), {
86
+ 'DESCRIPTOR' : _TASKEXECSTDINWRITERESPONSE,
87
+ '__module__' : 'modal_proto.task_command_router_pb2'
88
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStdinWriteResponse)
89
+ })
90
+ _sym_db.RegisterMessage(TaskExecStdinWriteResponse)
91
+
92
+ TaskExecStdioReadRequest = _reflection.GeneratedProtocolMessageType('TaskExecStdioReadRequest', (_message.Message,), {
93
+ 'DESCRIPTOR' : _TASKEXECSTDIOREADREQUEST,
94
+ '__module__' : 'modal_proto.task_command_router_pb2'
95
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStdioReadRequest)
96
+ })
97
+ _sym_db.RegisterMessage(TaskExecStdioReadRequest)
98
+
99
+ TaskExecStdioReadResponse = _reflection.GeneratedProtocolMessageType('TaskExecStdioReadResponse', (_message.Message,), {
100
+ 'DESCRIPTOR' : _TASKEXECSTDIOREADRESPONSE,
101
+ '__module__' : 'modal_proto.task_command_router_pb2'
102
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStdioReadResponse)
103
+ })
104
+ _sym_db.RegisterMessage(TaskExecStdioReadResponse)
105
+
106
+ TaskExecWaitRequest = _reflection.GeneratedProtocolMessageType('TaskExecWaitRequest', (_message.Message,), {
107
+ 'DESCRIPTOR' : _TASKEXECWAITREQUEST,
108
+ '__module__' : 'modal_proto.task_command_router_pb2'
109
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecWaitRequest)
110
+ })
111
+ _sym_db.RegisterMessage(TaskExecWaitRequest)
112
+
113
+ TaskExecWaitResponse = _reflection.GeneratedProtocolMessageType('TaskExecWaitResponse', (_message.Message,), {
114
+ 'DESCRIPTOR' : _TASKEXECWAITRESPONSE,
115
+ '__module__' : 'modal_proto.task_command_router_pb2'
116
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecWaitResponse)
117
+ })
118
+ _sym_db.RegisterMessage(TaskExecWaitResponse)
119
+
120
+ TaskMountDirectoryRequest = _reflection.GeneratedProtocolMessageType('TaskMountDirectoryRequest', (_message.Message,), {
121
+ 'DESCRIPTOR' : _TASKMOUNTDIRECTORYREQUEST,
122
+ '__module__' : 'modal_proto.task_command_router_pb2'
123
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskMountDirectoryRequest)
124
+ })
125
+ _sym_db.RegisterMessage(TaskMountDirectoryRequest)
126
+
127
+ TaskSnapshotDirectoryRequest = _reflection.GeneratedProtocolMessageType('TaskSnapshotDirectoryRequest', (_message.Message,), {
128
+ 'DESCRIPTOR' : _TASKSNAPSHOTDIRECTORYREQUEST,
129
+ '__module__' : 'modal_proto.task_command_router_pb2'
130
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskSnapshotDirectoryRequest)
131
+ })
132
+ _sym_db.RegisterMessage(TaskSnapshotDirectoryRequest)
133
+
134
+ TaskSnapshotDirectoryResponse = _reflection.GeneratedProtocolMessageType('TaskSnapshotDirectoryResponse', (_message.Message,), {
135
+ 'DESCRIPTOR' : _TASKSNAPSHOTDIRECTORYRESPONSE,
136
+ '__module__' : 'modal_proto.task_command_router_pb2'
137
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskSnapshotDirectoryResponse)
138
+ })
139
+ _sym_db.RegisterMessage(TaskSnapshotDirectoryResponse)
140
+
141
+ _TASKCOMMANDROUTER = DESCRIPTOR.services_by_name['TaskCommandRouter']
142
+ if _descriptor._USE_C_DESCRIPTORS == False:
143
+
144
+ DESCRIPTOR._options = None
145
+ DESCRIPTOR._serialized_options = b'Z$github.com/modal-labs/modal/go/proto'
146
+ _TASKEXECSTDERRCONFIG._serialized_start=1342
147
+ _TASKEXECSTDERRCONFIG._serialized_end=1471
148
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_start=1473
149
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_end=1590
150
+ _TASKEXECSTDOUTCONFIG._serialized_start=1592
151
+ _TASKEXECSTDOUTCONFIG._serialized_end=1685
152
+ _TASKEXECPOLLREQUEST._serialized_start=120
153
+ _TASKEXECPOLLREQUEST._serialized_end=175
154
+ _TASKEXECPOLLRESPONSE._serialized_start=177
155
+ _TASKEXECPOLLRESPONSE._serialized_end=248
156
+ _TASKEXECSTARTREQUEST._serialized_start=251
157
+ _TASKEXECSTARTREQUEST._serialized_end=653
158
+ _TASKEXECSTARTRESPONSE._serialized_start=655
159
+ _TASKEXECSTARTRESPONSE._serialized_end=678
160
+ _TASKEXECSTDINWRITEREQUEST._serialized_start=680
161
+ _TASKEXECSTDINWRITEREQUEST._serialized_end=784
162
+ _TASKEXECSTDINWRITERESPONSE._serialized_start=786
163
+ _TASKEXECSTDINWRITERESPONSE._serialized_end=814
164
+ _TASKEXECSTDIOREADREQUEST._serialized_start=817
165
+ _TASKEXECSTDIOREADREQUEST._serialized_end=974
166
+ _TASKEXECSTDIOREADRESPONSE._serialized_start=976
167
+ _TASKEXECSTDIOREADRESPONSE._serialized_end=1017
168
+ _TASKEXECWAITREQUEST._serialized_start=1019
169
+ _TASKEXECWAITREQUEST._serialized_end=1074
170
+ _TASKEXECWAITRESPONSE._serialized_start=1076
171
+ _TASKEXECWAITRESPONSE._serialized_end=1147
172
+ _TASKMOUNTDIRECTORYREQUEST._serialized_start=1149
173
+ _TASKMOUNTDIRECTORYREQUEST._serialized_end=1225
174
+ _TASKSNAPSHOTDIRECTORYREQUEST._serialized_start=1227
175
+ _TASKSNAPSHOTDIRECTORYREQUEST._serialized_end=1288
176
+ _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_start=1290
177
+ _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_end=1339
178
+ _TASKCOMMANDROUTER._serialized_start=1688
179
+ _TASKCOMMANDROUTER._serialized_end=2553
180
+ # @@protoc_insertion_point(module_scope)