modal 1.0.6.dev58__py3-none-any.whl → 1.2.3.dev7__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 (147) hide show
  1. modal/__main__.py +3 -4
  2. modal/_billing.py +80 -0
  3. modal/_clustered_functions.py +7 -3
  4. modal/_clustered_functions.pyi +4 -2
  5. modal/_container_entrypoint.py +41 -49
  6. modal/_functions.py +424 -195
  7. modal/_grpc_client.py +171 -0
  8. modal/_load_context.py +105 -0
  9. modal/_object.py +68 -20
  10. modal/_output.py +58 -45
  11. modal/_partial_function.py +36 -11
  12. modal/_pty.py +7 -3
  13. modal/_resolver.py +21 -35
  14. modal/_runtime/asgi.py +4 -3
  15. modal/_runtime/container_io_manager.py +301 -186
  16. modal/_runtime/container_io_manager.pyi +70 -61
  17. modal/_runtime/execution_context.py +18 -2
  18. modal/_runtime/execution_context.pyi +4 -1
  19. modal/_runtime/gpu_memory_snapshot.py +170 -63
  20. modal/_runtime/user_code_imports.py +28 -58
  21. modal/_serialization.py +57 -1
  22. modal/_utils/async_utils.py +33 -12
  23. modal/_utils/auth_token_manager.py +2 -5
  24. modal/_utils/blob_utils.py +110 -53
  25. modal/_utils/function_utils.py +49 -42
  26. modal/_utils/grpc_utils.py +80 -50
  27. modal/_utils/mount_utils.py +26 -1
  28. modal/_utils/name_utils.py +17 -3
  29. modal/_utils/task_command_router_client.py +536 -0
  30. modal/_utils/time_utils.py +34 -6
  31. modal/app.py +219 -83
  32. modal/app.pyi +229 -56
  33. modal/billing.py +5 -0
  34. modal/{requirements → builder}/2025.06.txt +1 -0
  35. modal/{requirements → builder}/PREVIEW.txt +1 -0
  36. modal/cli/_download.py +19 -3
  37. modal/cli/_traceback.py +3 -2
  38. modal/cli/app.py +4 -4
  39. modal/cli/cluster.py +15 -7
  40. modal/cli/config.py +5 -3
  41. modal/cli/container.py +7 -6
  42. modal/cli/dict.py +22 -16
  43. modal/cli/entry_point.py +12 -5
  44. modal/cli/environment.py +5 -4
  45. modal/cli/import_refs.py +3 -3
  46. modal/cli/launch.py +102 -5
  47. modal/cli/network_file_system.py +9 -13
  48. modal/cli/profile.py +3 -2
  49. modal/cli/programs/launch_instance_ssh.py +94 -0
  50. modal/cli/programs/run_jupyter.py +1 -1
  51. modal/cli/programs/run_marimo.py +95 -0
  52. modal/cli/programs/vscode.py +1 -1
  53. modal/cli/queues.py +57 -26
  54. modal/cli/run.py +58 -16
  55. modal/cli/secret.py +48 -22
  56. modal/cli/utils.py +3 -4
  57. modal/cli/volume.py +28 -25
  58. modal/client.py +13 -116
  59. modal/client.pyi +9 -91
  60. modal/cloud_bucket_mount.py +5 -3
  61. modal/cloud_bucket_mount.pyi +5 -1
  62. modal/cls.py +130 -102
  63. modal/cls.pyi +45 -85
  64. modal/config.py +29 -10
  65. modal/container_process.py +291 -13
  66. modal/container_process.pyi +95 -32
  67. modal/dict.py +282 -63
  68. modal/dict.pyi +423 -73
  69. modal/environments.py +15 -27
  70. modal/environments.pyi +5 -15
  71. modal/exception.py +8 -0
  72. modal/experimental/__init__.py +143 -38
  73. modal/experimental/flash.py +247 -78
  74. modal/experimental/flash.pyi +137 -9
  75. modal/file_io.py +14 -28
  76. modal/file_io.pyi +2 -2
  77. modal/file_pattern_matcher.py +25 -16
  78. modal/functions.pyi +134 -61
  79. modal/image.py +255 -86
  80. modal/image.pyi +300 -62
  81. modal/io_streams.py +436 -126
  82. modal/io_streams.pyi +236 -171
  83. modal/mount.py +62 -157
  84. modal/mount.pyi +45 -172
  85. modal/network_file_system.py +30 -53
  86. modal/network_file_system.pyi +16 -76
  87. modal/object.pyi +42 -8
  88. modal/parallel_map.py +821 -113
  89. modal/parallel_map.pyi +134 -0
  90. modal/partial_function.pyi +4 -1
  91. modal/proxy.py +16 -7
  92. modal/proxy.pyi +10 -2
  93. modal/queue.py +263 -61
  94. modal/queue.pyi +409 -66
  95. modal/runner.py +112 -92
  96. modal/runner.pyi +45 -27
  97. modal/sandbox.py +451 -124
  98. modal/sandbox.pyi +513 -67
  99. modal/secret.py +291 -67
  100. modal/secret.pyi +425 -19
  101. modal/serving.py +7 -11
  102. modal/serving.pyi +7 -8
  103. modal/snapshot.py +11 -8
  104. modal/token_flow.py +4 -4
  105. modal/volume.py +344 -98
  106. modal/volume.pyi +464 -68
  107. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/METADATA +9 -8
  108. modal-1.2.3.dev7.dist-info/RECORD +195 -0
  109. modal_docs/mdmd/mdmd.py +11 -1
  110. modal_proto/api.proto +399 -67
  111. modal_proto/api_grpc.py +241 -1
  112. modal_proto/api_pb2.py +1395 -1000
  113. modal_proto/api_pb2.pyi +1239 -79
  114. modal_proto/api_pb2_grpc.py +499 -4
  115. modal_proto/api_pb2_grpc.pyi +162 -14
  116. modal_proto/modal_api_grpc.py +175 -160
  117. modal_proto/sandbox_router.proto +145 -0
  118. modal_proto/sandbox_router_grpc.py +105 -0
  119. modal_proto/sandbox_router_pb2.py +149 -0
  120. modal_proto/sandbox_router_pb2.pyi +333 -0
  121. modal_proto/sandbox_router_pb2_grpc.py +203 -0
  122. modal_proto/sandbox_router_pb2_grpc.pyi +75 -0
  123. modal_proto/task_command_router.proto +144 -0
  124. modal_proto/task_command_router_grpc.py +105 -0
  125. modal_proto/task_command_router_pb2.py +149 -0
  126. modal_proto/task_command_router_pb2.pyi +333 -0
  127. modal_proto/task_command_router_pb2_grpc.py +203 -0
  128. modal_proto/task_command_router_pb2_grpc.pyi +75 -0
  129. modal_version/__init__.py +1 -1
  130. modal-1.0.6.dev58.dist-info/RECORD +0 -183
  131. modal_proto/modal_options_grpc.py +0 -3
  132. modal_proto/options.proto +0 -19
  133. modal_proto/options_grpc.py +0 -3
  134. modal_proto/options_pb2.py +0 -35
  135. modal_proto/options_pb2.pyi +0 -20
  136. modal_proto/options_pb2_grpc.py +0 -4
  137. modal_proto/options_pb2_grpc.pyi +0 -7
  138. /modal/{requirements → builder}/2023.12.312.txt +0 -0
  139. /modal/{requirements → builder}/2023.12.txt +0 -0
  140. /modal/{requirements → builder}/2024.04.txt +0 -0
  141. /modal/{requirements → builder}/2024.10.txt +0 -0
  142. /modal/{requirements → builder}/README.md +0 -0
  143. /modal/{requirements → builder}/base-images.json +0 -0
  144. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/WHEEL +0 -0
  145. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/entry_points.txt +0 -0
  146. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/licenses/LICENSE +0 -0
  147. {modal-1.0.6.dev58.dist-info → modal-1.2.3.dev7.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,149 @@
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 modal_proto import api_pb2 as modal__proto_dot_api__pb2
17
+
18
+
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%modal_proto/task_command_router.proto\x12\x19modal.task_command_router\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*\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\xf0\x04\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.TaskExecWaitResponseB&Z$github.com/modal-labs/modal/go/protob\x06proto3')
20
+
21
+ _TASKEXECSTDERRCONFIG = DESCRIPTOR.enum_types_by_name['TaskExecStderrConfig']
22
+ TaskExecStderrConfig = enum_type_wrapper.EnumTypeWrapper(_TASKEXECSTDERRCONFIG)
23
+ _TASKEXECSTDIOFILEDESCRIPTOR = DESCRIPTOR.enum_types_by_name['TaskExecStdioFileDescriptor']
24
+ TaskExecStdioFileDescriptor = enum_type_wrapper.EnumTypeWrapper(_TASKEXECSTDIOFILEDESCRIPTOR)
25
+ _TASKEXECSTDOUTCONFIG = DESCRIPTOR.enum_types_by_name['TaskExecStdoutConfig']
26
+ TaskExecStdoutConfig = enum_type_wrapper.EnumTypeWrapper(_TASKEXECSTDOUTCONFIG)
27
+ TASK_EXEC_STDERR_CONFIG_DEVNULL = 0
28
+ TASK_EXEC_STDERR_CONFIG_PIPE = 1
29
+ TASK_EXEC_STDERR_CONFIG_STDOUT = 2
30
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT = 0
31
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDERR = 1
32
+ TASK_EXEC_STDOUT_CONFIG_DEVNULL = 0
33
+ TASK_EXEC_STDOUT_CONFIG_PIPE = 1
34
+
35
+
36
+ _TASKEXECPOLLREQUEST = DESCRIPTOR.message_types_by_name['TaskExecPollRequest']
37
+ _TASKEXECPOLLRESPONSE = DESCRIPTOR.message_types_by_name['TaskExecPollResponse']
38
+ _TASKEXECSTARTREQUEST = DESCRIPTOR.message_types_by_name['TaskExecStartRequest']
39
+ _TASKEXECSTARTRESPONSE = DESCRIPTOR.message_types_by_name['TaskExecStartResponse']
40
+ _TASKEXECSTDINWRITEREQUEST = DESCRIPTOR.message_types_by_name['TaskExecStdinWriteRequest']
41
+ _TASKEXECSTDINWRITERESPONSE = DESCRIPTOR.message_types_by_name['TaskExecStdinWriteResponse']
42
+ _TASKEXECSTDIOREADREQUEST = DESCRIPTOR.message_types_by_name['TaskExecStdioReadRequest']
43
+ _TASKEXECSTDIOREADRESPONSE = DESCRIPTOR.message_types_by_name['TaskExecStdioReadResponse']
44
+ _TASKEXECWAITREQUEST = DESCRIPTOR.message_types_by_name['TaskExecWaitRequest']
45
+ _TASKEXECWAITRESPONSE = DESCRIPTOR.message_types_by_name['TaskExecWaitResponse']
46
+ TaskExecPollRequest = _reflection.GeneratedProtocolMessageType('TaskExecPollRequest', (_message.Message,), {
47
+ 'DESCRIPTOR' : _TASKEXECPOLLREQUEST,
48
+ '__module__' : 'modal_proto.task_command_router_pb2'
49
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecPollRequest)
50
+ })
51
+ _sym_db.RegisterMessage(TaskExecPollRequest)
52
+
53
+ TaskExecPollResponse = _reflection.GeneratedProtocolMessageType('TaskExecPollResponse', (_message.Message,), {
54
+ 'DESCRIPTOR' : _TASKEXECPOLLRESPONSE,
55
+ '__module__' : 'modal_proto.task_command_router_pb2'
56
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecPollResponse)
57
+ })
58
+ _sym_db.RegisterMessage(TaskExecPollResponse)
59
+
60
+ TaskExecStartRequest = _reflection.GeneratedProtocolMessageType('TaskExecStartRequest', (_message.Message,), {
61
+ 'DESCRIPTOR' : _TASKEXECSTARTREQUEST,
62
+ '__module__' : 'modal_proto.task_command_router_pb2'
63
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStartRequest)
64
+ })
65
+ _sym_db.RegisterMessage(TaskExecStartRequest)
66
+
67
+ TaskExecStartResponse = _reflection.GeneratedProtocolMessageType('TaskExecStartResponse', (_message.Message,), {
68
+ 'DESCRIPTOR' : _TASKEXECSTARTRESPONSE,
69
+ '__module__' : 'modal_proto.task_command_router_pb2'
70
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStartResponse)
71
+ })
72
+ _sym_db.RegisterMessage(TaskExecStartResponse)
73
+
74
+ TaskExecStdinWriteRequest = _reflection.GeneratedProtocolMessageType('TaskExecStdinWriteRequest', (_message.Message,), {
75
+ 'DESCRIPTOR' : _TASKEXECSTDINWRITEREQUEST,
76
+ '__module__' : 'modal_proto.task_command_router_pb2'
77
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStdinWriteRequest)
78
+ })
79
+ _sym_db.RegisterMessage(TaskExecStdinWriteRequest)
80
+
81
+ TaskExecStdinWriteResponse = _reflection.GeneratedProtocolMessageType('TaskExecStdinWriteResponse', (_message.Message,), {
82
+ 'DESCRIPTOR' : _TASKEXECSTDINWRITERESPONSE,
83
+ '__module__' : 'modal_proto.task_command_router_pb2'
84
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStdinWriteResponse)
85
+ })
86
+ _sym_db.RegisterMessage(TaskExecStdinWriteResponse)
87
+
88
+ TaskExecStdioReadRequest = _reflection.GeneratedProtocolMessageType('TaskExecStdioReadRequest', (_message.Message,), {
89
+ 'DESCRIPTOR' : _TASKEXECSTDIOREADREQUEST,
90
+ '__module__' : 'modal_proto.task_command_router_pb2'
91
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStdioReadRequest)
92
+ })
93
+ _sym_db.RegisterMessage(TaskExecStdioReadRequest)
94
+
95
+ TaskExecStdioReadResponse = _reflection.GeneratedProtocolMessageType('TaskExecStdioReadResponse', (_message.Message,), {
96
+ 'DESCRIPTOR' : _TASKEXECSTDIOREADRESPONSE,
97
+ '__module__' : 'modal_proto.task_command_router_pb2'
98
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecStdioReadResponse)
99
+ })
100
+ _sym_db.RegisterMessage(TaskExecStdioReadResponse)
101
+
102
+ TaskExecWaitRequest = _reflection.GeneratedProtocolMessageType('TaskExecWaitRequest', (_message.Message,), {
103
+ 'DESCRIPTOR' : _TASKEXECWAITREQUEST,
104
+ '__module__' : 'modal_proto.task_command_router_pb2'
105
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecWaitRequest)
106
+ })
107
+ _sym_db.RegisterMessage(TaskExecWaitRequest)
108
+
109
+ TaskExecWaitResponse = _reflection.GeneratedProtocolMessageType('TaskExecWaitResponse', (_message.Message,), {
110
+ 'DESCRIPTOR' : _TASKEXECWAITRESPONSE,
111
+ '__module__' : 'modal_proto.task_command_router_pb2'
112
+ # @@protoc_insertion_point(class_scope:modal.task_command_router.TaskExecWaitResponse)
113
+ })
114
+ _sym_db.RegisterMessage(TaskExecWaitResponse)
115
+
116
+ _TASKCOMMANDROUTER = DESCRIPTOR.services_by_name['TaskCommandRouter']
117
+ if _descriptor._USE_C_DESCRIPTORS == False:
118
+
119
+ DESCRIPTOR._options = None
120
+ DESCRIPTOR._serialized_options = b'Z$github.com/modal-labs/modal/go/proto'
121
+ _TASKEXECSTDERRCONFIG._serialized_start=1121
122
+ _TASKEXECSTDERRCONFIG._serialized_end=1250
123
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_start=1252
124
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_end=1369
125
+ _TASKEXECSTDOUTCONFIG._serialized_start=1371
126
+ _TASKEXECSTDOUTCONFIG._serialized_end=1464
127
+ _TASKEXECPOLLREQUEST._serialized_start=91
128
+ _TASKEXECPOLLREQUEST._serialized_end=146
129
+ _TASKEXECPOLLRESPONSE._serialized_start=148
130
+ _TASKEXECPOLLRESPONSE._serialized_end=219
131
+ _TASKEXECSTARTREQUEST._serialized_start=222
132
+ _TASKEXECSTARTREQUEST._serialized_end=624
133
+ _TASKEXECSTARTRESPONSE._serialized_start=626
134
+ _TASKEXECSTARTRESPONSE._serialized_end=649
135
+ _TASKEXECSTDINWRITEREQUEST._serialized_start=651
136
+ _TASKEXECSTDINWRITEREQUEST._serialized_end=755
137
+ _TASKEXECSTDINWRITERESPONSE._serialized_start=757
138
+ _TASKEXECSTDINWRITERESPONSE._serialized_end=785
139
+ _TASKEXECSTDIOREADREQUEST._serialized_start=788
140
+ _TASKEXECSTDIOREADREQUEST._serialized_end=945
141
+ _TASKEXECSTDIOREADRESPONSE._serialized_start=947
142
+ _TASKEXECSTDIOREADRESPONSE._serialized_end=988
143
+ _TASKEXECWAITREQUEST._serialized_start=990
144
+ _TASKEXECWAITREQUEST._serialized_end=1045
145
+ _TASKEXECWAITRESPONSE._serialized_start=1047
146
+ _TASKEXECWAITRESPONSE._serialized_end=1118
147
+ _TASKCOMMANDROUTER._serialized_start=1467
148
+ _TASKCOMMANDROUTER._serialized_end=2091
149
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,333 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+ import builtins
6
+ import collections.abc
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.internal.containers
9
+ import google.protobuf.internal.enum_type_wrapper
10
+ import google.protobuf.message
11
+ import modal_proto.api_pb2
12
+ import sys
13
+ import typing
14
+
15
+ if sys.version_info >= (3, 10):
16
+ import typing as typing_extensions
17
+ else:
18
+ import typing_extensions
19
+
20
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
21
+
22
+ class _TaskExecStderrConfig:
23
+ ValueType = typing.NewType("ValueType", builtins.int)
24
+ V: typing_extensions.TypeAlias = ValueType
25
+
26
+ class _TaskExecStderrConfigEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TaskExecStderrConfig.ValueType], builtins.type): # noqa: F821
27
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
28
+ TASK_EXEC_STDERR_CONFIG_DEVNULL: _TaskExecStderrConfig.ValueType # 0
29
+ """The output will be discarded."""
30
+ TASK_EXEC_STDERR_CONFIG_PIPE: _TaskExecStderrConfig.ValueType # 1
31
+ """The output will be streamed to the client."""
32
+ TASK_EXEC_STDERR_CONFIG_STDOUT: _TaskExecStderrConfig.ValueType # 2
33
+ """A special value that can be used to indicate that the stderr stream should
34
+ be merged with the stdout stream.
35
+ """
36
+
37
+ class TaskExecStderrConfig(_TaskExecStderrConfig, metaclass=_TaskExecStderrConfigEnumTypeWrapper): ...
38
+
39
+ TASK_EXEC_STDERR_CONFIG_DEVNULL: TaskExecStderrConfig.ValueType # 0
40
+ """The output will be discarded."""
41
+ TASK_EXEC_STDERR_CONFIG_PIPE: TaskExecStderrConfig.ValueType # 1
42
+ """The output will be streamed to the client."""
43
+ TASK_EXEC_STDERR_CONFIG_STDOUT: TaskExecStderrConfig.ValueType # 2
44
+ """A special value that can be used to indicate that the stderr stream should
45
+ be merged with the stdout stream.
46
+ """
47
+ global___TaskExecStderrConfig = TaskExecStderrConfig
48
+
49
+ class _TaskExecStdioFileDescriptor:
50
+ ValueType = typing.NewType("ValueType", builtins.int)
51
+ V: typing_extensions.TypeAlias = ValueType
52
+
53
+ class _TaskExecStdioFileDescriptorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TaskExecStdioFileDescriptor.ValueType], builtins.type): # noqa: F821
54
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
55
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT: _TaskExecStdioFileDescriptor.ValueType # 0
56
+ """Read from stdout."""
57
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDERR: _TaskExecStdioFileDescriptor.ValueType # 1
58
+ """Read from stderr."""
59
+
60
+ class TaskExecStdioFileDescriptor(_TaskExecStdioFileDescriptor, metaclass=_TaskExecStdioFileDescriptorEnumTypeWrapper): ...
61
+
62
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT: TaskExecStdioFileDescriptor.ValueType # 0
63
+ """Read from stdout."""
64
+ TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDERR: TaskExecStdioFileDescriptor.ValueType # 1
65
+ """Read from stderr."""
66
+ global___TaskExecStdioFileDescriptor = TaskExecStdioFileDescriptor
67
+
68
+ class _TaskExecStdoutConfig:
69
+ ValueType = typing.NewType("ValueType", builtins.int)
70
+ V: typing_extensions.TypeAlias = ValueType
71
+
72
+ class _TaskExecStdoutConfigEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TaskExecStdoutConfig.ValueType], builtins.type): # noqa: F821
73
+ DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
74
+ TASK_EXEC_STDOUT_CONFIG_DEVNULL: _TaskExecStdoutConfig.ValueType # 0
75
+ """The output will be discarded."""
76
+ TASK_EXEC_STDOUT_CONFIG_PIPE: _TaskExecStdoutConfig.ValueType # 1
77
+ """The output will be streamed to the client."""
78
+
79
+ class TaskExecStdoutConfig(_TaskExecStdoutConfig, metaclass=_TaskExecStdoutConfigEnumTypeWrapper): ...
80
+
81
+ TASK_EXEC_STDOUT_CONFIG_DEVNULL: TaskExecStdoutConfig.ValueType # 0
82
+ """The output will be discarded."""
83
+ TASK_EXEC_STDOUT_CONFIG_PIPE: TaskExecStdoutConfig.ValueType # 1
84
+ """The output will be streamed to the client."""
85
+ global___TaskExecStdoutConfig = TaskExecStdoutConfig
86
+
87
+ class TaskExecPollRequest(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 ID of the task 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___TaskExecPollRequest = TaskExecPollRequest
105
+
106
+ class TaskExecPollResponse(google.protobuf.message.Message):
107
+ """The response to a TaskExecPollRequest. 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___TaskExecPollResponse = TaskExecPollResponse
130
+
131
+ class TaskExecStartRequest(google.protobuf.message.Message):
132
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
133
+
134
+ TASK_ID_FIELD_NUMBER: builtins.int
135
+ EXEC_ID_FIELD_NUMBER: builtins.int
136
+ COMMAND_ARGS_FIELD_NUMBER: builtins.int
137
+ STDOUT_CONFIG_FIELD_NUMBER: builtins.int
138
+ STDERR_CONFIG_FIELD_NUMBER: builtins.int
139
+ TIMEOUT_SECS_FIELD_NUMBER: builtins.int
140
+ WORKDIR_FIELD_NUMBER: builtins.int
141
+ SECRET_IDS_FIELD_NUMBER: builtins.int
142
+ PTY_INFO_FIELD_NUMBER: builtins.int
143
+ RUNTIME_DEBUG_FIELD_NUMBER: builtins.int
144
+ task_id: builtins.str
145
+ """The ID of the task to execute the command in."""
146
+ exec_id: builtins.str
147
+ """Execution ID. This ID will be used to identify the execution for other
148
+ requests and ensure exec commands are idempotent.
149
+ """
150
+ @property
151
+ def command_args(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
152
+ """Command arguments to execute."""
153
+ stdout_config: global___TaskExecStdoutConfig.ValueType
154
+ """Configures how the stdout of the command will be handled."""
155
+ stderr_config: global___TaskExecStderrConfig.ValueType
156
+ """Configures how the stderr of the command will be handled."""
157
+ timeout_secs: builtins.int
158
+ """Timeout in seconds for the exec'd command to exit. If the command does not
159
+ exit within this duration, the command will be killed. This is NOT the
160
+ timeout for the ExecStartRequest RPC to complete.
161
+ """
162
+ workdir: builtins.str
163
+ """Working directory for the command."""
164
+ @property
165
+ def secret_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
166
+ """Secret IDs to mount into the task."""
167
+ @property
168
+ def pty_info(self) -> modal_proto.api_pb2.PTYInfo:
169
+ """PTY info for the command."""
170
+ runtime_debug: builtins.bool
171
+ """Enable debugging capabilities on the container runtime. Used only for
172
+ internal debugging.
173
+ """
174
+ def __init__(
175
+ self,
176
+ *,
177
+ task_id: builtins.str = ...,
178
+ exec_id: builtins.str = ...,
179
+ command_args: collections.abc.Iterable[builtins.str] | None = ...,
180
+ stdout_config: global___TaskExecStdoutConfig.ValueType = ...,
181
+ stderr_config: global___TaskExecStderrConfig.ValueType = ...,
182
+ timeout_secs: builtins.int | None = ...,
183
+ workdir: builtins.str | None = ...,
184
+ secret_ids: collections.abc.Iterable[builtins.str] | None = ...,
185
+ pty_info: modal_proto.api_pb2.PTYInfo | None = ...,
186
+ runtime_debug: builtins.bool = ...,
187
+ ) -> None: ...
188
+ def HasField(self, field_name: typing_extensions.Literal["_pty_info", b"_pty_info", "_timeout_secs", b"_timeout_secs", "_workdir", b"_workdir", "pty_info", b"pty_info", "timeout_secs", b"timeout_secs", "workdir", b"workdir"]) -> builtins.bool: ...
189
+ def ClearField(self, field_name: typing_extensions.Literal["_pty_info", b"_pty_info", "_timeout_secs", b"_timeout_secs", "_workdir", b"_workdir", "command_args", b"command_args", "exec_id", b"exec_id", "pty_info", b"pty_info", "runtime_debug", b"runtime_debug", "secret_ids", b"secret_ids", "stderr_config", b"stderr_config", "stdout_config", b"stdout_config", "task_id", b"task_id", "timeout_secs", b"timeout_secs", "workdir", b"workdir"]) -> None: ...
190
+ @typing.overload
191
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_pty_info", b"_pty_info"]) -> typing_extensions.Literal["pty_info"] | None: ...
192
+ @typing.overload
193
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_timeout_secs", b"_timeout_secs"]) -> typing_extensions.Literal["timeout_secs"] | None: ...
194
+ @typing.overload
195
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_workdir", b"_workdir"]) -> typing_extensions.Literal["workdir"] | None: ...
196
+
197
+ global___TaskExecStartRequest = TaskExecStartRequest
198
+
199
+ class TaskExecStartResponse(google.protobuf.message.Message):
200
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
201
+
202
+ def __init__(
203
+ self,
204
+ ) -> None: ...
205
+
206
+ global___TaskExecStartResponse = TaskExecStartResponse
207
+
208
+ class TaskExecStdinWriteRequest(google.protobuf.message.Message):
209
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
210
+
211
+ TASK_ID_FIELD_NUMBER: builtins.int
212
+ EXEC_ID_FIELD_NUMBER: builtins.int
213
+ OFFSET_FIELD_NUMBER: builtins.int
214
+ DATA_FIELD_NUMBER: builtins.int
215
+ EOF_FIELD_NUMBER: builtins.int
216
+ task_id: builtins.str
217
+ """The ID of the task running the exec'd command."""
218
+ exec_id: builtins.str
219
+ """The execution ID of the command to write to."""
220
+ offset: builtins.int
221
+ """The offset to start writing to. This is used to resume writing from the
222
+ last write position if the connection is closed and reopened.
223
+ """
224
+ data: builtins.bytes
225
+ eof: builtins.bool
226
+ """If true, close the stdin stream after writing any provided data.
227
+ This signals EOF to the exec'd process.
228
+ """
229
+ def __init__(
230
+ self,
231
+ *,
232
+ task_id: builtins.str = ...,
233
+ exec_id: builtins.str = ...,
234
+ offset: builtins.int = ...,
235
+ data: builtins.bytes = ...,
236
+ eof: builtins.bool = ...,
237
+ ) -> None: ...
238
+ def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "eof", b"eof", "exec_id", b"exec_id", "offset", b"offset", "task_id", b"task_id"]) -> None: ...
239
+
240
+ global___TaskExecStdinWriteRequest = TaskExecStdinWriteRequest
241
+
242
+ class TaskExecStdinWriteResponse(google.protobuf.message.Message):
243
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
244
+
245
+ def __init__(
246
+ self,
247
+ ) -> None: ...
248
+
249
+ global___TaskExecStdinWriteResponse = TaskExecStdinWriteResponse
250
+
251
+ class TaskExecStdioReadRequest(google.protobuf.message.Message):
252
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
253
+
254
+ TASK_ID_FIELD_NUMBER: builtins.int
255
+ EXEC_ID_FIELD_NUMBER: builtins.int
256
+ OFFSET_FIELD_NUMBER: builtins.int
257
+ FILE_DESCRIPTOR_FIELD_NUMBER: builtins.int
258
+ task_id: builtins.str
259
+ """The ID of the task running the exec'd command."""
260
+ exec_id: builtins.str
261
+ """The execution ID of the command to read from."""
262
+ offset: builtins.int
263
+ """The offset to start reading from. This is used to resume reading from the
264
+ last read position if the connection is closed and reopened.
265
+ """
266
+ file_descriptor: global___TaskExecStdioFileDescriptor.ValueType
267
+ """Which file descriptor to read from."""
268
+ def __init__(
269
+ self,
270
+ *,
271
+ task_id: builtins.str = ...,
272
+ exec_id: builtins.str = ...,
273
+ offset: builtins.int = ...,
274
+ file_descriptor: global___TaskExecStdioFileDescriptor.ValueType = ...,
275
+ ) -> None: ...
276
+ def ClearField(self, field_name: typing_extensions.Literal["exec_id", b"exec_id", "file_descriptor", b"file_descriptor", "offset", b"offset", "task_id", b"task_id"]) -> None: ...
277
+
278
+ global___TaskExecStdioReadRequest = TaskExecStdioReadRequest
279
+
280
+ class TaskExecStdioReadResponse(google.protobuf.message.Message):
281
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
282
+
283
+ DATA_FIELD_NUMBER: builtins.int
284
+ data: builtins.bytes
285
+ """The data read from the file descriptor."""
286
+ def __init__(
287
+ self,
288
+ *,
289
+ data: builtins.bytes = ...,
290
+ ) -> None: ...
291
+ def ClearField(self, field_name: typing_extensions.Literal["data", b"data"]) -> None: ...
292
+
293
+ global___TaskExecStdioReadResponse = TaskExecStdioReadResponse
294
+
295
+ class TaskExecWaitRequest(google.protobuf.message.Message):
296
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
297
+
298
+ TASK_ID_FIELD_NUMBER: builtins.int
299
+ EXEC_ID_FIELD_NUMBER: builtins.int
300
+ task_id: builtins.str
301
+ """The ID of the task running the exec'd command."""
302
+ exec_id: builtins.str
303
+ """The execution ID of the command to wait on."""
304
+ def __init__(
305
+ self,
306
+ *,
307
+ task_id: builtins.str = ...,
308
+ exec_id: builtins.str = ...,
309
+ ) -> None: ...
310
+ def ClearField(self, field_name: typing_extensions.Literal["exec_id", b"exec_id", "task_id", b"task_id"]) -> None: ...
311
+
312
+ global___TaskExecWaitRequest = TaskExecWaitRequest
313
+
314
+ class TaskExecWaitResponse(google.protobuf.message.Message):
315
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
316
+
317
+ CODE_FIELD_NUMBER: builtins.int
318
+ SIGNAL_FIELD_NUMBER: builtins.int
319
+ code: builtins.int
320
+ """The exit code of the command."""
321
+ signal: builtins.int
322
+ """The signal that terminated the command."""
323
+ def __init__(
324
+ self,
325
+ *,
326
+ code: builtins.int = ...,
327
+ signal: builtins.int = ...,
328
+ ) -> None: ...
329
+ def HasField(self, field_name: typing_extensions.Literal["code", b"code", "exit_status", b"exit_status", "signal", b"signal"]) -> builtins.bool: ...
330
+ def ClearField(self, field_name: typing_extensions.Literal["code", b"code", "exit_status", b"exit_status", "signal", b"signal"]) -> None: ...
331
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["exit_status", b"exit_status"]) -> typing_extensions.Literal["code", "signal"] | None: ...
332
+
333
+ global___TaskExecWaitResponse = TaskExecWaitResponse