modal 0.62.16__py3-none-any.whl → 0.72.11__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.
Files changed (220) hide show
  1. modal/__init__.py +17 -13
  2. modal/__main__.py +41 -3
  3. modal/_clustered_functions.py +80 -0
  4. modal/_clustered_functions.pyi +22 -0
  5. modal/_container_entrypoint.py +420 -937
  6. modal/_ipython.py +3 -13
  7. modal/_location.py +17 -10
  8. modal/_output.py +243 -99
  9. modal/_pty.py +2 -2
  10. modal/_resolver.py +55 -59
  11. modal/_resources.py +51 -0
  12. modal/_runtime/__init__.py +1 -0
  13. modal/_runtime/asgi.py +519 -0
  14. modal/_runtime/container_io_manager.py +1036 -0
  15. modal/_runtime/execution_context.py +89 -0
  16. modal/_runtime/telemetry.py +169 -0
  17. modal/_runtime/user_code_imports.py +356 -0
  18. modal/_serialization.py +134 -9
  19. modal/_traceback.py +47 -187
  20. modal/_tunnel.py +52 -16
  21. modal/_tunnel.pyi +19 -36
  22. modal/_utils/app_utils.py +3 -17
  23. modal/_utils/async_utils.py +479 -100
  24. modal/_utils/blob_utils.py +157 -186
  25. modal/_utils/bytes_io_segment_payload.py +97 -0
  26. modal/_utils/deprecation.py +89 -0
  27. modal/_utils/docker_utils.py +98 -0
  28. modal/_utils/function_utils.py +460 -171
  29. modal/_utils/grpc_testing.py +47 -31
  30. modal/_utils/grpc_utils.py +62 -109
  31. modal/_utils/hash_utils.py +61 -19
  32. modal/_utils/http_utils.py +39 -9
  33. modal/_utils/logger.py +2 -1
  34. modal/_utils/mount_utils.py +34 -16
  35. modal/_utils/name_utils.py +58 -0
  36. modal/_utils/package_utils.py +14 -1
  37. modal/_utils/pattern_utils.py +205 -0
  38. modal/_utils/rand_pb_testing.py +5 -7
  39. modal/_utils/shell_utils.py +15 -49
  40. modal/_vendor/a2wsgi_wsgi.py +62 -72
  41. modal/_vendor/cloudpickle.py +1 -1
  42. modal/_watcher.py +14 -12
  43. modal/app.py +1003 -314
  44. modal/app.pyi +540 -264
  45. modal/call_graph.py +7 -6
  46. modal/cli/_download.py +63 -53
  47. modal/cli/_traceback.py +200 -0
  48. modal/cli/app.py +205 -45
  49. modal/cli/config.py +12 -5
  50. modal/cli/container.py +62 -14
  51. modal/cli/dict.py +128 -0
  52. modal/cli/entry_point.py +26 -13
  53. modal/cli/environment.py +40 -9
  54. modal/cli/import_refs.py +64 -58
  55. modal/cli/launch.py +32 -18
  56. modal/cli/network_file_system.py +64 -83
  57. modal/cli/profile.py +1 -1
  58. modal/cli/programs/run_jupyter.py +35 -10
  59. modal/cli/programs/vscode.py +60 -10
  60. modal/cli/queues.py +131 -0
  61. modal/cli/run.py +234 -131
  62. modal/cli/secret.py +8 -7
  63. modal/cli/token.py +7 -2
  64. modal/cli/utils.py +79 -10
  65. modal/cli/volume.py +110 -109
  66. modal/client.py +250 -144
  67. modal/client.pyi +157 -118
  68. modal/cloud_bucket_mount.py +108 -34
  69. modal/cloud_bucket_mount.pyi +32 -38
  70. modal/cls.py +535 -148
  71. modal/cls.pyi +190 -146
  72. modal/config.py +41 -19
  73. modal/container_process.py +177 -0
  74. modal/container_process.pyi +82 -0
  75. modal/dict.py +111 -65
  76. modal/dict.pyi +136 -131
  77. modal/environments.py +106 -5
  78. modal/environments.pyi +77 -25
  79. modal/exception.py +34 -43
  80. modal/experimental.py +61 -2
  81. modal/extensions/ipython.py +5 -5
  82. modal/file_io.py +537 -0
  83. modal/file_io.pyi +235 -0
  84. modal/file_pattern_matcher.py +197 -0
  85. modal/functions.py +906 -911
  86. modal/functions.pyi +466 -430
  87. modal/gpu.py +57 -44
  88. modal/image.py +1089 -479
  89. modal/image.pyi +584 -228
  90. modal/io_streams.py +434 -0
  91. modal/io_streams.pyi +122 -0
  92. modal/mount.py +314 -101
  93. modal/mount.pyi +241 -235
  94. modal/network_file_system.py +92 -92
  95. modal/network_file_system.pyi +152 -110
  96. modal/object.py +67 -36
  97. modal/object.pyi +166 -143
  98. modal/output.py +63 -0
  99. modal/parallel_map.py +434 -0
  100. modal/parallel_map.pyi +75 -0
  101. modal/partial_function.py +282 -117
  102. modal/partial_function.pyi +222 -129
  103. modal/proxy.py +15 -12
  104. modal/proxy.pyi +3 -8
  105. modal/queue.py +182 -65
  106. modal/queue.pyi +218 -118
  107. modal/requirements/2024.04.txt +29 -0
  108. modal/requirements/2024.10.txt +16 -0
  109. modal/requirements/README.md +21 -0
  110. modal/requirements/base-images.json +22 -0
  111. modal/retries.py +48 -7
  112. modal/runner.py +459 -156
  113. modal/runner.pyi +135 -71
  114. modal/running_app.py +38 -0
  115. modal/sandbox.py +514 -236
  116. modal/sandbox.pyi +397 -169
  117. modal/schedule.py +4 -4
  118. modal/scheduler_placement.py +20 -3
  119. modal/secret.py +56 -31
  120. modal/secret.pyi +62 -42
  121. modal/serving.py +51 -56
  122. modal/serving.pyi +44 -36
  123. modal/stream_type.py +15 -0
  124. modal/token_flow.py +5 -3
  125. modal/token_flow.pyi +37 -32
  126. modal/volume.py +285 -157
  127. modal/volume.pyi +249 -184
  128. {modal-0.62.16.dist-info → modal-0.72.11.dist-info}/METADATA +7 -7
  129. modal-0.72.11.dist-info/RECORD +174 -0
  130. {modal-0.62.16.dist-info → modal-0.72.11.dist-info}/top_level.txt +0 -1
  131. modal_docs/gen_reference_docs.py +3 -1
  132. modal_docs/mdmd/mdmd.py +0 -1
  133. modal_docs/mdmd/signatures.py +5 -2
  134. modal_global_objects/images/base_images.py +28 -0
  135. modal_global_objects/mounts/python_standalone.py +2 -2
  136. modal_proto/__init__.py +1 -1
  137. modal_proto/api.proto +1288 -533
  138. modal_proto/api_grpc.py +856 -456
  139. modal_proto/api_pb2.py +2165 -1157
  140. modal_proto/api_pb2.pyi +8859 -0
  141. modal_proto/api_pb2_grpc.py +1674 -855
  142. modal_proto/api_pb2_grpc.pyi +1416 -0
  143. modal_proto/modal_api_grpc.py +149 -0
  144. modal_proto/modal_options_grpc.py +3 -0
  145. modal_proto/options_pb2.pyi +20 -0
  146. modal_proto/options_pb2_grpc.pyi +7 -0
  147. modal_proto/py.typed +0 -0
  148. modal_version/__init__.py +1 -1
  149. modal_version/_version_generated.py +2 -2
  150. modal/_asgi.py +0 -370
  151. modal/_container_entrypoint.pyi +0 -378
  152. modal/_container_exec.py +0 -128
  153. modal/_sandbox_shell.py +0 -49
  154. modal/shared_volume.py +0 -23
  155. modal/shared_volume.pyi +0 -24
  156. modal/stub.py +0 -783
  157. modal/stub.pyi +0 -332
  158. modal-0.62.16.dist-info/RECORD +0 -198
  159. modal_global_objects/images/conda.py +0 -15
  160. modal_global_objects/images/debian_slim.py +0 -15
  161. modal_global_objects/images/micromamba.py +0 -15
  162. test/__init__.py +0 -1
  163. test/aio_test.py +0 -12
  164. test/async_utils_test.py +0 -262
  165. test/blob_test.py +0 -67
  166. test/cli_imports_test.py +0 -149
  167. test/cli_test.py +0 -659
  168. test/client_test.py +0 -194
  169. test/cls_test.py +0 -630
  170. test/config_test.py +0 -137
  171. test/conftest.py +0 -1420
  172. test/container_app_test.py +0 -32
  173. test/container_test.py +0 -1389
  174. test/cpu_test.py +0 -23
  175. test/decorator_test.py +0 -85
  176. test/deprecation_test.py +0 -34
  177. test/dict_test.py +0 -33
  178. test/e2e_test.py +0 -68
  179. test/error_test.py +0 -7
  180. test/function_serialization_test.py +0 -32
  181. test/function_test.py +0 -653
  182. test/function_utils_test.py +0 -101
  183. test/gpu_test.py +0 -159
  184. test/grpc_utils_test.py +0 -141
  185. test/helpers.py +0 -42
  186. test/image_test.py +0 -669
  187. test/live_reload_test.py +0 -80
  188. test/lookup_test.py +0 -70
  189. test/mdmd_test.py +0 -329
  190. test/mount_test.py +0 -162
  191. test/mounted_files_test.py +0 -329
  192. test/network_file_system_test.py +0 -181
  193. test/notebook_test.py +0 -66
  194. test/object_test.py +0 -41
  195. test/package_utils_test.py +0 -25
  196. test/queue_test.py +0 -97
  197. test/resolver_test.py +0 -58
  198. test/retries_test.py +0 -67
  199. test/runner_test.py +0 -85
  200. test/sandbox_test.py +0 -191
  201. test/schedule_test.py +0 -15
  202. test/scheduler_placement_test.py +0 -29
  203. test/secret_test.py +0 -78
  204. test/serialization_test.py +0 -42
  205. test/stub_composition_test.py +0 -10
  206. test/stub_test.py +0 -360
  207. test/test_asgi_wrapper.py +0 -234
  208. test/token_flow_test.py +0 -18
  209. test/traceback_test.py +0 -135
  210. test/tunnel_test.py +0 -29
  211. test/utils_test.py +0 -88
  212. test/version_test.py +0 -14
  213. test/volume_test.py +0 -341
  214. test/watcher_test.py +0 -30
  215. test/webhook_test.py +0 -146
  216. /modal/{requirements.312.txt → requirements/2023.12.312.txt} +0 -0
  217. /modal/{requirements.txt → requirements/2023.12.txt} +0 -0
  218. {modal-0.62.16.dist-info → modal-0.72.11.dist-info}/LICENSE +0 -0
  219. {modal-0.62.16.dist-info → modal-0.72.11.dist-info}/WHEEL +0 -0
  220. {modal-0.62.16.dist-info → modal-0.72.11.dist-info}/entry_points.txt +0 -0
modal/stub.pyi DELETED
@@ -1,332 +0,0 @@
1
- import modal._output
2
- import modal._utils.function_utils
3
- import modal.app
4
- import modal.client
5
- import modal.cls
6
- import modal.functions
7
- import modal.gpu
8
- import modal.image
9
- import modal.mount
10
- import modal.network_file_system
11
- import modal.object
12
- import modal.proxy
13
- import modal.retries
14
- import modal.sandbox
15
- import modal.schedule
16
- import modal.scheduler_placement
17
- import modal.secret
18
- import modal.volume
19
- import modal_proto.api_pb2
20
- import os
21
- import pathlib
22
- import synchronicity.combined_types
23
- import typing
24
- import typing_extensions
25
-
26
- class _LocalEntrypoint:
27
- _info: modal._utils.function_utils.FunctionInfo
28
- _stub: _Stub
29
-
30
- def __init__(self, info, stub):
31
- ...
32
-
33
- def __call__(self, *args, **kwargs):
34
- ...
35
-
36
- @property
37
- def info(self) -> modal._utils.function_utils.FunctionInfo:
38
- ...
39
-
40
- @property
41
- def stub(self) -> _Stub:
42
- ...
43
-
44
-
45
- class LocalEntrypoint:
46
- _info: modal._utils.function_utils.FunctionInfo
47
- _stub: Stub
48
-
49
- def __init__(self, info, stub):
50
- ...
51
-
52
- def __call__(self, *args, **kwargs):
53
- ...
54
-
55
- @property
56
- def info(self) -> modal._utils.function_utils.FunctionInfo:
57
- ...
58
-
59
- @property
60
- def stub(self) -> Stub:
61
- ...
62
-
63
-
64
- def check_sequence(items: typing.Sequence[typing.Any], item_type: typing.Type[typing.Any], error_msg: str):
65
- ...
66
-
67
-
68
- CLS_T = typing.TypeVar("CLS_T", bound="typing.Type")
69
-
70
- class _Stub:
71
- _name: typing.Union[str, None]
72
- _description: typing.Union[str, None]
73
- _indexed_objects: typing.Dict[str, modal.object._Object]
74
- _function_mounts: typing.Dict[str, modal.mount._Mount]
75
- _mounts: typing.Sequence[modal.mount._Mount]
76
- _secrets: typing.Sequence[modal.secret._Secret]
77
- _volumes: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.volume._Volume]
78
- _web_endpoints: typing.List[str]
79
- _local_entrypoints: typing.Dict[str, _LocalEntrypoint]
80
- _container_app: typing.Union[modal.app._ContainerApp, None]
81
- _local_app: typing.Union[modal.app._LocalApp, None]
82
- _all_stubs: typing.ClassVar[typing.Dict[typing.Union[str, None], typing.List[_Stub]]]
83
-
84
- def __init__(self, name: typing.Union[str, None] = None, *, image: typing.Union[modal.image._Image, None] = None, mounts: typing.Sequence[modal.mount._Mount] = [], secrets: typing.Sequence[modal.secret._Secret] = [], volumes: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.volume._Volume] = {}, **indexed_objects: modal.object._Object) -> None:
85
- ...
86
-
87
- @property
88
- def name(self) -> typing.Union[str, None]:
89
- ...
90
-
91
- @property
92
- def is_interactive(self) -> bool:
93
- ...
94
-
95
- @property
96
- def app_id(self) -> typing.Union[str, None]:
97
- ...
98
-
99
- @property
100
- def description(self) -> typing.Union[str, None]:
101
- ...
102
-
103
- def set_description(self, description: str):
104
- ...
105
-
106
- def _validate_blueprint_value(self, key: str, value: typing.Any):
107
- ...
108
-
109
- def _add_object(self, tag, obj):
110
- ...
111
-
112
- def __getitem__(self, tag: str):
113
- ...
114
-
115
- def __setitem__(self, tag: str, obj: modal.object._Object):
116
- ...
117
-
118
- def __getattr__(self, tag: str) -> modal.object._Object:
119
- ...
120
-
121
- def __setattr__(self, tag: str, obj: modal.object._Object):
122
- ...
123
-
124
- @property
125
- def image(self) -> modal.image._Image:
126
- ...
127
-
128
- @image.setter
129
- def image(self, value):
130
- ...
131
-
132
- def get_objects(self) -> typing.List[typing.Tuple[str, modal.object._Object]]:
133
- ...
134
-
135
- def _uncreate_all_objects(self):
136
- ...
137
-
138
- def is_inside(self, image: typing.Union[modal.image._Image, None] = None):
139
- ...
140
-
141
- def _set_local_app(self, app: modal.app._LocalApp) -> typing.AsyncContextManager[None]:
142
- ...
143
-
144
- def run(self, client: typing.Union[modal.client._Client, None] = None, stdout=None, show_progress: bool = True, detach: bool = False, output_mgr: typing.Union[modal._output.OutputManager, None] = None) -> typing.AsyncContextManager[_Stub]:
145
- ...
146
-
147
- def _get_default_image(self):
148
- ...
149
-
150
- def _get_watch_mounts(self):
151
- ...
152
-
153
- def _add_function(self, function: modal.functions._Function):
154
- ...
155
-
156
- @property
157
- def registered_functions(self) -> typing.Dict[str, modal.functions._Function]:
158
- ...
159
-
160
- @property
161
- def registered_classes(self) -> typing.Dict[str, modal.functions._Function]:
162
- ...
163
-
164
- @property
165
- def registered_entrypoints(self) -> typing.Dict[str, _LocalEntrypoint]:
166
- ...
167
-
168
- @property
169
- def indexed_objects(self) -> typing.Dict[str, modal.object._Object]:
170
- ...
171
-
172
- @property
173
- def registered_web_endpoints(self) -> typing.List[str]:
174
- ...
175
-
176
- def local_entrypoint(self, _warn_parentheses_missing=None, *, name: typing.Union[str, None] = None) -> typing.Callable[[typing.Callable[..., typing.Any]], None]:
177
- ...
178
-
179
- def function(self, _warn_parentheses_missing=None, *, image: typing.Union[modal.image._Image, None] = None, schedule: typing.Union[modal.schedule.Schedule, None] = None, secrets: typing.Sequence[modal.secret._Secret] = (), gpu: typing.Union[None, bool, str, modal.gpu._GPUConfig] = None, serialized: bool = False, mounts: typing.Sequence[modal.mount._Mount] = (), network_file_systems: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.network_file_system._NetworkFileSystem] = {}, volumes: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.volume._Volume] = {}, allow_cross_region_volumes: bool = False, cpu: typing.Union[float, None] = None, memory: typing.Union[int, None] = None, proxy: typing.Union[modal.proxy._Proxy, None] = None, retries: typing.Union[int, modal.retries.Retries, None] = None, concurrency_limit: typing.Union[int, None] = None, allow_concurrent_inputs: typing.Union[int, None] = None, container_idle_timeout: typing.Union[int, None] = None, timeout: typing.Union[int, None] = None, keep_warm: typing.Union[int, None] = None, name: typing.Union[str, None] = None, is_generator: typing.Union[bool, None] = None, cloud: typing.Union[str, None] = None, enable_memory_snapshot: bool = False, checkpointing_enabled: typing.Union[bool, None] = None, block_network: bool = False, max_inputs: typing.Union[int, None] = None, interactive: bool = False, secret: typing.Union[modal.secret._Secret, None] = None, _allow_background_volume_commits: bool = False, _experimental_boost: bool = False, _experimental_scheduler: bool = False, _experimental_scheduler_placement: typing.Union[modal.scheduler_placement.SchedulerPlacement, None] = None) -> typing.Callable[..., modal.functions._Function]:
180
- ...
181
-
182
- def cls(self, _warn_parentheses_missing=None, *, image: typing.Union[modal.image._Image, None] = None, secrets: typing.Sequence[modal.secret._Secret] = (), gpu: typing.Union[None, bool, str, modal.gpu._GPUConfig] = None, serialized: bool = False, mounts: typing.Sequence[modal.mount._Mount] = (), network_file_systems: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.network_file_system._NetworkFileSystem] = {}, volumes: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.volume._Volume] = {}, allow_cross_region_volumes: bool = False, cpu: typing.Union[float, None] = None, memory: typing.Union[int, None] = None, proxy: typing.Union[modal.proxy._Proxy, None] = None, retries: typing.Union[int, modal.retries.Retries, None] = None, concurrency_limit: typing.Union[int, None] = None, allow_concurrent_inputs: typing.Union[int, None] = None, container_idle_timeout: typing.Union[int, None] = None, timeout: typing.Union[int, None] = None, keep_warm: typing.Union[int, None] = None, cloud: typing.Union[str, None] = None, enable_memory_snapshot: bool = False, checkpointing_enabled: typing.Union[bool, None] = None, block_network: bool = False, _allow_background_volume_commits: bool = False, max_inputs: typing.Union[int, None] = None, interactive: bool = False, secret: typing.Union[modal.secret._Secret, None] = None, _experimental_boost: bool = False, _experimental_scheduler: bool = False, _experimental_scheduler_placement: typing.Union[modal.scheduler_placement.SchedulerPlacement, None] = None) -> typing.Callable[[CLS_T], modal.cls._Cls]:
183
- ...
184
-
185
- async def spawn_sandbox(self, *entrypoint_args: str, image: typing.Union[modal.image._Image, None] = None, mounts: typing.Sequence[modal.mount._Mount] = (), secrets: typing.Sequence[modal.secret._Secret] = (), network_file_systems: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.network_file_system._NetworkFileSystem] = {}, timeout: typing.Union[int, None] = None, workdir: typing.Union[str, None] = None, gpu: typing.Union[None, bool, str, modal.gpu._GPUConfig] = None, cloud: typing.Union[str, None] = None, cpu: typing.Union[float, None] = None, memory: typing.Union[int, None] = None, block_network: bool = False, volumes: typing.Dict[typing.Union[str, os.PathLike], modal.volume._Volume] = {}, _allow_background_volume_commits: bool = False, pty_info: typing.Union[modal_proto.api_pb2.PTYInfo, None] = None) -> modal.sandbox._Sandbox:
186
- ...
187
-
188
- def include(self, /, other_stub: _Stub):
189
- ...
190
-
191
-
192
- class Stub:
193
- _name: typing.Union[str, None]
194
- _description: typing.Union[str, None]
195
- _indexed_objects: typing.Dict[str, modal.object.Object]
196
- _function_mounts: typing.Dict[str, modal.mount.Mount]
197
- _mounts: typing.Sequence[modal.mount.Mount]
198
- _secrets: typing.Sequence[modal.secret.Secret]
199
- _volumes: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.volume.Volume]
200
- _web_endpoints: typing.List[str]
201
- _local_entrypoints: typing.Dict[str, LocalEntrypoint]
202
- _container_app: typing.Union[modal.app.ContainerApp, None]
203
- _local_app: typing.Union[modal.app.LocalApp, None]
204
- _all_stubs: typing.ClassVar[typing.Dict[typing.Union[str, None], typing.List[Stub]]]
205
-
206
- def __init__(self, name: typing.Union[str, None] = None, *, image: typing.Union[modal.image.Image, None] = None, mounts: typing.Sequence[modal.mount.Mount] = [], secrets: typing.Sequence[modal.secret.Secret] = [], volumes: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.volume.Volume] = {}, **indexed_objects: modal.object.Object) -> None:
207
- ...
208
-
209
- @property
210
- def name(self) -> typing.Union[str, None]:
211
- ...
212
-
213
- @property
214
- def is_interactive(self) -> bool:
215
- ...
216
-
217
- @property
218
- def app_id(self) -> typing.Union[str, None]:
219
- ...
220
-
221
- @property
222
- def description(self) -> typing.Union[str, None]:
223
- ...
224
-
225
- def set_description(self, description: str):
226
- ...
227
-
228
- def _validate_blueprint_value(self, key: str, value: typing.Any):
229
- ...
230
-
231
- def _add_object(self, tag, obj):
232
- ...
233
-
234
- def __getitem__(self, tag: str):
235
- ...
236
-
237
- def __setitem__(self, tag: str, obj: modal.object.Object):
238
- ...
239
-
240
- def __getattr__(self, tag: str) -> modal.object.Object:
241
- ...
242
-
243
- def __setattr__(self, tag: str, obj: modal.object.Object):
244
- ...
245
-
246
- @property
247
- def image(self) -> modal.image.Image:
248
- ...
249
-
250
- @image.setter
251
- def image(self, value):
252
- ...
253
-
254
- def get_objects(self) -> typing.List[typing.Tuple[str, modal.object.Object]]:
255
- ...
256
-
257
- def _uncreate_all_objects(self):
258
- ...
259
-
260
- def is_inside(self, image: typing.Union[modal.image.Image, None] = None):
261
- ...
262
-
263
- class ___set_local_app_spec(typing_extensions.Protocol):
264
- def __call__(self, app: modal.app.LocalApp) -> synchronicity.combined_types.AsyncAndBlockingContextManager[None]:
265
- ...
266
-
267
- def aio(self, app: modal.app.LocalApp) -> typing.AsyncContextManager[None]:
268
- ...
269
-
270
- _set_local_app: ___set_local_app_spec
271
-
272
- class __run_spec(typing_extensions.Protocol):
273
- def __call__(self, client: typing.Union[modal.client.Client, None] = None, stdout=None, show_progress: bool = True, detach: bool = False, output_mgr: typing.Union[modal._output.OutputManager, None] = None) -> synchronicity.combined_types.AsyncAndBlockingContextManager[Stub]:
274
- ...
275
-
276
- def aio(self, client: typing.Union[modal.client.Client, None] = None, stdout=None, show_progress: bool = True, detach: bool = False, output_mgr: typing.Union[modal._output.OutputManager, None] = None) -> typing.AsyncContextManager[Stub]:
277
- ...
278
-
279
- run: __run_spec
280
-
281
- def _get_default_image(self):
282
- ...
283
-
284
- def _get_watch_mounts(self):
285
- ...
286
-
287
- def _add_function(self, function: modal.functions.Function):
288
- ...
289
-
290
- @property
291
- def registered_functions(self) -> typing.Dict[str, modal.functions.Function]:
292
- ...
293
-
294
- @property
295
- def registered_classes(self) -> typing.Dict[str, modal.functions.Function]:
296
- ...
297
-
298
- @property
299
- def registered_entrypoints(self) -> typing.Dict[str, LocalEntrypoint]:
300
- ...
301
-
302
- @property
303
- def indexed_objects(self) -> typing.Dict[str, modal.object.Object]:
304
- ...
305
-
306
- @property
307
- def registered_web_endpoints(self) -> typing.List[str]:
308
- ...
309
-
310
- def local_entrypoint(self, _warn_parentheses_missing=None, *, name: typing.Union[str, None] = None) -> typing.Callable[[typing.Callable[..., typing.Any]], None]:
311
- ...
312
-
313
- def function(self, _warn_parentheses_missing=None, *, image: typing.Union[modal.image.Image, None] = None, schedule: typing.Union[modal.schedule.Schedule, None] = None, secrets: typing.Sequence[modal.secret.Secret] = (), gpu: typing.Union[None, bool, str, modal.gpu._GPUConfig] = None, serialized: bool = False, mounts: typing.Sequence[modal.mount.Mount] = (), network_file_systems: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.network_file_system.NetworkFileSystem] = {}, volumes: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.volume.Volume] = {}, allow_cross_region_volumes: bool = False, cpu: typing.Union[float, None] = None, memory: typing.Union[int, None] = None, proxy: typing.Union[modal.proxy.Proxy, None] = None, retries: typing.Union[int, modal.retries.Retries, None] = None, concurrency_limit: typing.Union[int, None] = None, allow_concurrent_inputs: typing.Union[int, None] = None, container_idle_timeout: typing.Union[int, None] = None, timeout: typing.Union[int, None] = None, keep_warm: typing.Union[int, None] = None, name: typing.Union[str, None] = None, is_generator: typing.Union[bool, None] = None, cloud: typing.Union[str, None] = None, enable_memory_snapshot: bool = False, checkpointing_enabled: typing.Union[bool, None] = None, block_network: bool = False, max_inputs: typing.Union[int, None] = None, interactive: bool = False, secret: typing.Union[modal.secret.Secret, None] = None, _allow_background_volume_commits: bool = False, _experimental_boost: bool = False, _experimental_scheduler: bool = False, _experimental_scheduler_placement: typing.Union[modal.scheduler_placement.SchedulerPlacement, None] = None) -> typing.Callable[..., modal.functions.Function]:
314
- ...
315
-
316
- def cls(self, _warn_parentheses_missing=None, *, image: typing.Union[modal.image.Image, None] = None, secrets: typing.Sequence[modal.secret.Secret] = (), gpu: typing.Union[None, bool, str, modal.gpu._GPUConfig] = None, serialized: bool = False, mounts: typing.Sequence[modal.mount.Mount] = (), network_file_systems: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.network_file_system.NetworkFileSystem] = {}, volumes: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.volume.Volume] = {}, allow_cross_region_volumes: bool = False, cpu: typing.Union[float, None] = None, memory: typing.Union[int, None] = None, proxy: typing.Union[modal.proxy.Proxy, None] = None, retries: typing.Union[int, modal.retries.Retries, None] = None, concurrency_limit: typing.Union[int, None] = None, allow_concurrent_inputs: typing.Union[int, None] = None, container_idle_timeout: typing.Union[int, None] = None, timeout: typing.Union[int, None] = None, keep_warm: typing.Union[int, None] = None, cloud: typing.Union[str, None] = None, enable_memory_snapshot: bool = False, checkpointing_enabled: typing.Union[bool, None] = None, block_network: bool = False, _allow_background_volume_commits: bool = False, max_inputs: typing.Union[int, None] = None, interactive: bool = False, secret: typing.Union[modal.secret.Secret, None] = None, _experimental_boost: bool = False, _experimental_scheduler: bool = False, _experimental_scheduler_placement: typing.Union[modal.scheduler_placement.SchedulerPlacement, None] = None) -> typing.Callable[[CLS_T], modal.cls.Cls]:
317
- ...
318
-
319
- class __spawn_sandbox_spec(typing_extensions.Protocol):
320
- def __call__(self, *entrypoint_args: str, image: typing.Union[modal.image.Image, None] = None, mounts: typing.Sequence[modal.mount.Mount] = (), secrets: typing.Sequence[modal.secret.Secret] = (), network_file_systems: typing.Dict[typing.Union[str, pathlib.PurePosixPath], modal.network_file_system.NetworkFileSystem] = {}, timeout: typing.Union[int, None] = None, workdir: typing.Union[str, None] = None, gpu: typing.Union[None, bool, str, modal.gpu._GPUConfig] = None, cloud: typing.Union[str, None] = None, cpu: typing.Union[float, None] = None, memory: typing.Union[int, None] = None, block_network: bool = False, volumes: typing.Dict[typing.Union[str, os.PathLike], modal.volume.Volume] = {}, _allow_background_volume_commits: bool = False, pty_info: typing.Union[modal_proto.api_pb2.PTYInfo, None] = None) -> modal.sandbox.Sandbox:
321
- ...
322
-
323
- async def aio(self, *args, **kwargs) -> modal.sandbox.Sandbox:
324
- ...
325
-
326
- spawn_sandbox: __spawn_sandbox_spec
327
-
328
- def include(self, other_stub: Stub):
329
- ...
330
-
331
-
332
- _default_image: modal.image._Image
@@ -1,198 +0,0 @@
1
- modal/__init__.py,sha256=IM8hIP9NlXodRITGUlnQDpnyGuOmmJEo7M6Ci7FVQY8,2102
2
- modal/__main__.py,sha256=EKalcwy_6N0L5iqIvlYpXihi3zxy9HNuUMvnbraoTrk,1141
3
- modal/_asgi.py,sha256=CEiJv4CBgJ30UtZ6KTlisNSwRJswV_ccDTMUDUn-g_8,15476
4
- modal/_container_entrypoint.py,sha256=llVFRvR9h3eEwn_bF0mVtueJyqswVWk3rewk7XDR9n4,52143
5
- modal/_container_entrypoint.pyi,sha256=pYKqWTac9q1VPQT6D62YOok6mwMIvgbGWv5wx5MYGek,11148
6
- modal/_container_exec.py,sha256=FiaSBUD0UkQRF8hW0AFf0rbqC8lb87f3EGeg7Mr5dx4,4349
7
- modal/_ipython.py,sha256=HF_DYy0e0qM9WnGDmTY30s1RxzGya9GeORCauCEpRaE,450
8
- modal/_location.py,sha256=_SdCPzVOl7HRwLWIxzTJjhdpOo1sIl4flfEJ-bAbiDE,929
9
- modal/_output.py,sha256=1GXKp-Qr-C5oe0e4A5epTgcIFhcp5Cko3HG_ircLFWg,20565
10
- modal/_proxy_tunnel.py,sha256=gnKyCfmVB7x2d1A6c-JDysNIP3kEFxmXzhcXhPrzPn0,1906
11
- modal/_pty.py,sha256=GhzrHKZpoI-YHMDN7LoySlSYLpoJ4yGPSF-fqiNsFrM,1336
12
- modal/_resolver.py,sha256=6UnL73FE4nvLX6uSATiUmhvf-1gb-8-kYcf9X6Vp3i8,7081
13
- modal/_sandbox_shell.py,sha256=OtkeMqOymFVqDBWt3kmT6_4mslPu0ZCfjqYjwUb6cGE,1658
14
- modal/_serialization.py,sha256=nC2-Wz4tyg1va_4l2SutdiLaW0glmONxxnf4er0E4eY,12329
15
- modal/_traceback.py,sha256=l6y-flU7rQK3YelSthHv4Paurw3rA5q9KofBRRVHCVM,10029
16
- modal/_tunnel.py,sha256=acWThUm-ct-Ry_nvytxEhCH-djdttGC_qbDdz2y4ddM,5073
17
- modal/_tunnel.pyi,sha256=MhcFhkpt-Fo9dA59qhXtoNA9ktyJzwtmGj0vWaUdFiM,1337
18
- modal/_watcher.py,sha256=RWkOgkg3FXpa1RgNr86ZrdrMpD9RB6I1_uuUMy7_yjY,3609
19
- modal/app.py,sha256=P_0BnKKEPZ1JJ4yjG1ovf9bSYAAbcwEBKO45ywRgU-s,15203
20
- modal/app.pyi,sha256=EZKG1bKIGHm6ALhOGTx-8tBo5_uMfezoof68DVStp0c,8046
21
- modal/call_graph.py,sha256=KhqmbJPlcpL-PO0N_lrK8VHoXK_xAHq5IhZ9A9rW9Zk,2524
22
- modal/client.py,sha256=gqgWznXUh_JLOBlIUCR2TmKSDe38CMw902E041QH2eA,10729
23
- modal/client.pyi,sha256=dpGbpW7xB8PbWmEc9t_qDfa6PVB877oAVRLSaD14xo4,3724
24
- modal/cloud_bucket_mount.py,sha256=gti25rJPIfeapokZixcsQ-f19l0gSDQrRAquSRQPd_I,2942
25
- modal/cloud_bucket_mount.pyi,sha256=8J673RncR2-JqjXnXA65O7PZe8VzfU46INEu6k8flkc,1418
26
- modal/cls.py,sha256=x-oGCqBZi45-zX1bNIvMsHKmrxOhkZZciwrB6B9g2IA,12799
27
- modal/cls.pyi,sha256=3cpx8HcGgRImPn6fsaq9GSWKicEc_p__2UK2q5xP_Z8,6482
28
- modal/config.py,sha256=8FfI-0LTPNa0kSz5lPLjQQBnlc27uOF30M-GRH1tRrM,9934
29
- modal/dict.py,sha256=hZsP-5rXnJ3CNKudKHYfhZwSjD8GqWlA8fxDf51Prck,10194
30
- modal/dict.pyi,sha256=6BZ8LU4NXrrA_amPbTf1tgPn0FgH64cr2oJnQ4Zr4i4,5809
31
- modal/environments.py,sha256=xOsBpVpjyBwA-0PVYAQAV_qUtEMxnYzu3Qpmkcqsbeo,2452
32
- modal/environments.pyi,sha256=HMSB6AeWCXeQcrsEyNiWwSzou3lD0G6h6R_4-AFU3gg,1439
33
- modal/exception.py,sha256=h-LDmGhdwViC_yxBulNQHJpwhuKnkh40fAbwX-Y4D0c,5865
34
- modal/experimental.py,sha256=R-3pEE_X_NB891MIaUxWMkqlW7FMjpmqp2IrI_Tds10,293
35
- modal/functions.py,sha256=vG8qmvdl0k1D-BdNmaEVZYsyIs6cUCBqOnQ2Ns1yxKc,63450
36
- modal/functions.pyi,sha256=biuQhH788mNh_0tGL3JhM_hkywFme6IuYhrW7tvYhk8,19548
37
- modal/gpu.py,sha256=QDfghe3SgOecMXAc8DRbUuGKhhaLeuG8pVEpO-rQvA0,8038
38
- modal/image.py,sha256=JWYROEpW1wuX7SO752yXkmTbBw12P4MV2YZHkPPF1jI,62658
39
- modal/image.pyi,sha256=0oF1q7sTr5ce2KZxNz5eVNXlP48P8fe8HmUUNsYKBmQ,17457
40
- modal/mount.py,sha256=FTsWO_IgcJXlq1tCIWNMH2CuFH-GJT5Tzrz3-zN7cj8,23182
41
- modal/mount.pyi,sha256=xhLXRhKkMmlBiSiNNtA03_4S8m1NzUW6TUhM2FpME2k,9588
42
- modal/network_file_system.py,sha256=iOj897r3SXbv4fnWiGjusYAyS8VQoIpjRGboFQ9Psds,14356
43
- modal/network_file_system.pyi,sha256=2Bp38k_zZsN8UhhsJ8dF3GpKEpXqhcsVNSLG1hIaxJw,6404
44
- modal/object.py,sha256=T5ORM_18kMSrVMy2wWsfefXzZbgaGdGdTFOl2c4LSgc,8258
45
- modal/object.pyi,sha256=NVYTuTldnB5j8724Qx-dd0R8tWeuXBfh9IGSBMaw2aw,7573
46
- modal/partial_function.py,sha256=n4qGXD_DdZlWJNNzjwXoh2ovX3Oxl4XhrfnmzAPBdw4,19988
47
- modal/partial_function.pyi,sha256=U-hSV_-KXRoaygOMGd6G3kBaMMbwrHqXctrbgH9t_WY,6270
48
- modal/proxy.py,sha256=ey5IlDkPfb0zHGSsIQjgtFsLZwdjCoCp-ecIJlbDo5w,1307
49
- modal/proxy.pyi,sha256=Db8boRetc0K7sAUuKw-mg4eoRAX0GB7vyHOHlwuCEs8,428
50
- modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- modal/queue.py,sha256=uWUC6I3bNhP0ZDPzZRiGA2o_GazzJ2-FwFEjo5SUnA0,13516
52
- modal/queue.pyi,sha256=_UgYVd4GoOWvMGlb4BVOGQwoAfM0PhJCLj-ob4lygg4,6637
53
- modal/requirements.312.txt,sha256=zWWUVgVQ92GXBKNYYr2-5vn9rlnXcmkqlwlX5u1eTYw,400
54
- modal/requirements.txt,sha256=OjsbXFkCSdkzzryZP82Q73osr5wxQ6EUzmGcK7twfkA,502
55
- modal/retries.py,sha256=bRDYRTUNFzmjRAggCcoMViqwu-PNnqbokc_QYCf_2nc,3730
56
- modal/runner.py,sha256=IAO4oyybCTDSQY-eZFY_VKjifSHz5CUCmKZ5a4bub2E,12295
57
- modal/runner.pyi,sha256=3BxRQ-P-5DRvzz_ufaQiu6hpuGbhaomha7JNdaYFEI8,3114
58
- modal/sandbox.py,sha256=QzqU08-_iF3W6yKuvzrP11mwvFs8j1zDRhu8EZt22u4,15301
59
- modal/sandbox.pyi,sha256=MDvAfhxeQckL6CDYo0ccDl_Dxv2MsdY3pLO06MXav8Y,6466
60
- modal/schedule.py,sha256=GjvGQxXhAf0oPvHlwyWsppanel7LrSBuarWEINB_xTY,2621
61
- modal/scheduler_placement.py,sha256=15NhfoI1W6qklc8BabM5t19oVNhx9ZbPByaQO7YWSYw,662
62
- modal/secret.py,sha256=GKyTm8Bo7DAvCyzG8nSr4bIaWyOf-egEp8CDHlgewe0,8898
63
- modal/secret.pyi,sha256=kh0LL3VkJpZHQc71c-6xE2HcnrgSsw9xOHMDWXMatwk,2225
64
- modal/serving.py,sha256=h0gPQYbLixn8qP64OLJjAGdcuCbbS2sCZqTn9-0etrA,4681
65
- modal/serving.pyi,sha256=S5yq9KgrC2ece1gBzPFlwas2XEFTqnfA6YSDf3bjl5U,1957
66
- modal/shared_volume.py,sha256=vB-QLl7EMeusFWT91bVxsmYhzlBNYYYJukLmbF_5Rgk,888
67
- modal/shared_volume.pyi,sha256=JSrQyY3M0nn6cbhEV_Xd8AqN7VdzWr2_jsHEGH7HYOQ,405
68
- modal/stub.py,sha256=heGve7FVwsnnv4Nn8QLgU_4rL2uEbEb4wKPYg9GlGuQ,33852
69
- modal/stub.pyi,sha256=egq2GR_n9FCtKwmb4FwHcQjb41VvarDmRzzy5E-EKhM,17567
70
- modal/token_flow.py,sha256=M28JpcN2KCeIaXmlGqtj6NBPcb8qvjEd59_ojR3tMDo,6742
71
- modal/token_flow.pyi,sha256=F5_ty7M18ulmLG9I-DJoqcg7CrbEgLDndEWvL_p9708,1890
72
- modal/volume.py,sha256=YrZ3bAN_YwXaEknXl-f9XSGGWktjQewewFKBJd6ui0c,24410
73
- modal/volume.pyi,sha256=OpJxb-xQX0gCnnfcX-etFwE1zNkF5O1LqpAbfaI59o4,9111
74
- modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
75
- modal/_utils/app_utils.py,sha256=Uf9oNKcC6wJg3wcHNygWxMlkXuIMVRYIE5nutDSafkQ,465
76
- modal/_utils/async_utils.py,sha256=XqGtqrgtOFsW-NBAIxBgKpGSRXWoBbHPlB-f4LSDN58,12930
77
- modal/_utils/blob_utils.py,sha256=oHWcx13W9NNXx0Das_x50jvVbA29jpGnLJM7c74WfxQ,15054
78
- modal/_utils/function_utils.py,sha256=Orkons1_SFHxfI7NIE3-O-FhQ9wA1CxjC_or4PR_bm8,13520
79
- modal/_utils/grpc_testing.py,sha256=LLwhZ4XJgnWSxnTEFd1OxgUjJ-z91xrMiWm9i44H54Q,7780
80
- modal/_utils/grpc_utils.py,sha256=OssGLNWGUpc8PHxd8UvTGvZAalW9BKgJ8phKeZlm_SM,9322
81
- modal/_utils/hash_utils.py,sha256=YOE1LZwyqaTQSZajrF-H_5_iJkjxMclJewC0SgH_8xA,1597
82
- modal/_utils/http_utils.py,sha256=DGKvrSQxAHjP_LNdM6EaL-TIQPGDX5vt3gcMGg2xkz4,1426
83
- modal/_utils/logger.py,sha256=0QvxZpyhhZwKZ5xOcMC9btS_XBE1wAKhtQmISU3gdd0,1311
84
- modal/_utils/mount_utils.py,sha256=oAbmYe3RT29EoysJou_NmmmQ5FwxkdWd2qbOK1cZgXA,2327
85
- modal/_utils/package_utils.py,sha256=mh5zRXmY9wSmvqaCqFBAdPntLP1EmSkDWJt3GB4ey4s,1640
86
- modal/_utils/rand_pb_testing.py,sha256=KESWmCi8lwmRNllknQKM2Y67bm7XwRIFZUW_X2mOesE,3871
87
- modal/_utils/shell_utils.py,sha256=_nQIZb4jbwcfjg-qCLgtlXEx2I9TCsmY1G0IQY8fFg4,3633
88
- modal/_vendor/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
89
- modal/_vendor/a2wsgi_wsgi.py,sha256=2AnQcS5VhLZxod0trVNxnIYGH1SRbzT3dmJ4owVXzxA,22144
90
- modal/_vendor/cloudpickle.py,sha256=CcpkVlNqP3rtFiPK1Ffpub_i0bc7EThN8kU7nC0WXlc,55225
91
- modal/_vendor/tblib.py,sha256=g1O7QUDd3sDoLd8YPFltkXkih7r_fyZOjgmGuligv3s,9722
92
- modal/cli/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
93
- modal/cli/_download.py,sha256=wPhkhENC24x2cZcdkeaKdAacncNXIhIZcrEUPpdhsEU,2601
94
- modal/cli/app.py,sha256=C-4a7FJY6-KbS-blwqHKfk0rKo2zYbcnm6KMwsS_9J4,3068
95
- modal/cli/config.py,sha256=cSTH2oy0HTT-8GgH0tMvjqMKk_zYi_UcRGqRXkqCH3w,1294
96
- modal/cli/container.py,sha256=LC9VnnidDmMF0lr-MclewJAqqByVdC-CQqi6kdlIwsE,1748
97
- modal/cli/entry_point.py,sha256=aUB_UYJeqbapCBN0bX4SyCagk1PIm94-oPan2PIsAwk,3538
98
- modal/cli/environment.py,sha256=Jgen64Wu6MUdvX8iDoqE3aJtiCD8PiHVjd3dfDOjT_U,3414
99
- modal/cli/import_refs.py,sha256=OEVxtlarpItVu9ifi8V_Lt3Fmr3MKrufnBz0pKH684c,9083
100
- modal/cli/launch.py,sha256=FuVWx81zygVwLoR9IAawVKq06r_Y_h8WJL7hibhbWnQ,2144
101
- modal/cli/network_file_system.py,sha256=wQDlACewu7ucYRAKvgW2r1SlhTJnXYhsT1tvEVbDf6I,8449
102
- modal/cli/profile.py,sha256=s4jCYHwriOorEFCKxeGZoSWX8rXTR_hDTNFZhOA565s,3109
103
- modal/cli/run.py,sha256=3Hbztt4nw5PrJdNpextY5jg-m9rON-G4BTZOWc2p0iE,13798
104
- modal/cli/secret.py,sha256=oylN52070uWS4NLT8bbHmt93KWV1DBmmuAWds677amE,4181
105
- modal/cli/token.py,sha256=Vsxy1ViEfuauWgPnpV8R3mRtKFQUtNmmTc2FYOY82Tg,1875
106
- modal/cli/utils.py,sha256=GUG0Vb_hYv6yEGm2Q9fM84PnRniFo2W2FygN7lyWm8c,1330
107
- modal/cli/volume.py,sha256=W8dMgYMJ3x7VDRpWJf1bI5lEnn4kNgWyQrVnxiRSMOQ,10871
108
- modal/cli/programs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
109
- modal/cli/programs/run_jupyter.py,sha256=UqUIE6PY6RfcdsRgwTRfAq3sLGDZhnwPwK5sxTUdol8,2143
110
- modal/cli/programs/vscode.py,sha256=EAmPQ3Q9eKojrvdIvawudNZevJt3IjcdfPTrfIVvSdE,1898
111
- modal/extensions/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
112
- modal/extensions/ipython.py,sha256=Q66tGs_PWzuL1M6zZ8yNplv25qHog_aXyy8NED0csh0,988
113
- modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
114
- modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
115
- modal_docs/gen_reference_docs.py,sha256=g37KpE5P5ZxZl-vj0ie3Ewx1waTRMKCGIXQ_iYSy0e0,6555
116
- modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
117
- modal_docs/mdmd/mdmd.py,sha256=F9J0KdYVz8WmdLDnInTIlm8SmNZJLAiu3ZAZcxVIZ0k,6268
118
- modal_docs/mdmd/signatures.py,sha256=cTum8S5ydixC_HaniltEoTwadtgQU9IJrE4FwF9XzQg,3095
119
- modal_global_objects/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
120
- modal_global_objects/images/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
121
- modal_global_objects/images/conda.py,sha256=5Tqd_62p7zGwVezJj1Qp2Vcxtt2WHWVBMzMNbjuNW-M,324
122
- modal_global_objects/images/debian_slim.py,sha256=9iB8L0tuEDWas3Mge1jyGvfBXiKsJpcjqJT5M1fWRos,330
123
- modal_global_objects/images/micromamba.py,sha256=k5m5P4xSBzliiTrdMITHx6iLhdQGIBuhPnP65JlBdG0,329
124
- modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
125
- modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
126
- modal_global_objects/mounts/python_standalone.py,sha256=_vTEX3PECUsatzhDs8lyJmDK0LbFetT1sJB6MIDfFAo,1870
127
- modal_proto/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
128
- modal_proto/api.proto,sha256=mqiQAdhf9Q_jzSHdMHGQ42ycmJNgfSyR_t-PHB1OD54,55933
129
- modal_proto/api_grpc.py,sha256=JCJBvDBr-xUOP6lPMnRxaHspStbnvyZy1B-Tbg0bV3g,84502
130
- modal_proto/api_pb2.py,sha256=dOYf3pZIahvyMMyXARz4mdSFjfw89ZDaheib39ry_pQ,217316
131
- modal_proto/api_pb2_grpc.py,sha256=mIorveMRLyaD6i64c4gVXs7nSRBTDaSwwIU-l-MdW78,182540
132
- modal_proto/options.proto,sha256=a-siq4swVbZPfaFRXAipRZzGP2bq8OsdUvjlyzAeodQ,488
133
- modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
134
- modal_proto/options_pb2.py,sha256=OC2Oob8Yz_3Gs58hwpS_jSFWpGsWMcxlgXbJCyw3gMk,1827
135
- modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
136
- modal_version/__init__.py,sha256=HTM4O90gT-ndgKJIFiD8JRMsdauRAWxc9TDGhBuhkYI,470
137
- modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
138
- modal_version/_version_generated.py,sha256=WW-yrEM7B6dPPz19g7cVK3Ph6mBZmyXSalxRivJZ1sQ,149
139
- test/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
140
- test/aio_test.py,sha256=YOmAEt1WaBh0VxlmCa7gzjM-VEvIQNQ6By959y2WwSk,203
141
- test/async_utils_test.py,sha256=1NGazu9XBc1YJYhKPB2vt49dJyDheisA1YDl3iYVlGc,6792
142
- test/blob_test.py,sha256=72LpqPJreb0mtLlkS14IN6rsvsQUWr1yrM97uTANUQo,2539
143
- test/cli_imports_test.py,sha256=hayUSViVXhY0Vxl-WJ1b3dapx8TGi76I8ql-Snm5bJI,4680
144
- test/cli_test.py,sha256=lqbjyOBMH-u_ixx646LUnpqrrDBPBKbGVW2lQn3x5to,26607
145
- test/client_test.py,sha256=E9lfLgW9EFnA_stbw0vX8vUA7djIiO5fW-x-JR7tKeM,6426
146
- test/cls_test.py,sha256=iiCNpSqmY2S6_tBKSkU2wYAv86u8cwoF0Mvx_hFOZho,15898
147
- test/config_test.py,sha256=mhacVtiOB5jAwLjoiDy_IUqP7z3n5DKzW6ugNtwmwnQ,4768
148
- test/conftest.py,sha256=dZL3RbDkgQyY1TlTLI_jRWIe0pZCCp8g7kay5DoC9w0,59766
149
- test/container_app_test.py,sha256=hWP6DZTZx6zJYudOfNq5386-rEvRGXSdU7XImaUtKYE,895
150
- test/container_test.py,sha256=-zS-Pf5ao9mwnTJEFBwT1wvyU4IBRxUiGkxXxBEwCEI,50061
151
- test/cpu_test.py,sha256=CoJhxhHH9ZjZh3wnpKFfPku2Vq6xIZJoB6j7O-v2278,405
152
- test/decorator_test.py,sha256=MS90m-9IiVzNgTMfr_2pVlemR3nwMQKAhuJktckq9Xo,1871
153
- test/deprecation_test.py,sha256=IS_pracoNgt0vuEdLThukZpBkPBX4LUCQP5sAUMhjiY,1055
154
- test/dict_test.py,sha256=FQyWl6ZZ0ktUExxh8xBEuu1LCKsworW6Io1bAD2z1Ug,851
155
- test/e2e_test.py,sha256=OBBTB8p422PBD0iCoOfNTQQsIs_sX6_SkT1dNv3DiY4,2152
156
- test/error_test.py,sha256=bDxKUwE4WJ1qwAfm0Jlzqkb3WetF0YLxplrgjevAv4U,165
157
- test/function_serialization_test.py,sha256=1rili8CT3bdOfIMabIAEBn699GTBWqc11xCe-wu5_bY,971
158
- test/function_test.py,sha256=pWtmXnVHSVWoSd9EUc37oA2q9HIPX2O-g-J-7NY3mYk,19697
159
- test/function_utils_test.py,sha256=AZr8ZPh2h152epv-kn0rWZXwhM8MbPcaVSsOa5thzhY,1892
160
- test/gpu_test.py,sha256=i8Zp0NRI6LhXAaPc1hATJJjQLlFtmxZ-RxUEDD6pTls,4611
161
- test/grpc_utils_test.py,sha256=me9sGIvRO3bmj4M4UmwU3dbHj5IpKCF7aKy6W5JaP3U,5048
162
- test/helpers.py,sha256=-kxMLEjyQeBj6K0AHLrGrzWGw_ZGj2ST4eJaLMX9Rbo,1443
163
- test/image_test.py,sha256=DsKT8hiZDnaxkrnzG2YeeLaYfeyz5EgqCpTNnmW79mk,25515
164
- test/live_reload_test.py,sha256=8bk6MAbrzUe9spuQ_-0zQE1p4fvLsbAOhL5g41qEJt4,2742
165
- test/lookup_test.py,sha256=jcjGt7lIf6iC_HOg0sQE06yg_KcgmHc2pvOYg956chw,2172
166
- test/mdmd_test.py,sha256=G3B0986QneKtIrui34hu95h09No9mM06O7mPp2sTm50,5118
167
- test/mount_test.py,sha256=-76FWFPCRDJpmG4UXdTWpOwG6YgoF6W94F6MAlFB578,5489
168
- test/mounted_files_test.py,sha256=Noasj7JaCVjVAyTEZIjq-MJkelnVES9FpbE2Ldhe8lQ,12471
169
- test/network_file_system_test.py,sha256=GxP0fklqOgcXFiqaPnpvN5ZJ8tlqT6e8vNwV9jB9KQI,6073
170
- test/notebook_test.py,sha256=IkOFP9Tat8pEazSOV73OU7QMGgOlw3sU_5vTzOigrZU,2157
171
- test/object_test.py,sha256=Ncv3B3-Sd78MeHnhmvuyBN1qXRICONW_qckzVndFWc4,1298
172
- test/package_utils_test.py,sha256=ic3cJqwVbe7p2jOwnnTuGTwP9aDduz9QueqVwcA8r9I,795
173
- test/queue_test.py,sha256=5a8RQMH6DBvm2BvUmbSRGy8JykDtmqOguYTlmvmyJcE,3270
174
- test/resolver_test.py,sha256=pmQeuSodsGd8tZg3Ja6bKB8lgg-HNxx6Q1aGn2BjQ0Q,1751
175
- test/retries_test.py,sha256=05W440EOUJ-aSNGyu46SgcwCCS-Gt3NkFnI_8m5aRCo,1817
176
- test/runner_test.py,sha256=bHI3Med7Vgysx3nic042TOKsQkWArP9uVS5iyIrelc8,2932
177
- test/sandbox_test.py,sha256=U2qFwmHmm4rnVDZOU_MP2irqbSx5dtf_pEIXjBdVODQ,5282
178
- test/schedule_test.py,sha256=lyj6pHchOg_CqyJNQY8NbRUTfh-RxwAugcX5-P4b-0k,359
179
- test/scheduler_placement_test.py,sha256=efdPOIy0MxrrioSzzEBTufM-ea5DXUbYiJ-UTdbj-fE,742
180
- test/secret_test.py,sha256=NGa3HrHvu97XlyOquf-ZanqV6s2gclC9lZarkYSu7O8,2527
181
- test/serialization_test.py,sha256=d_r5xDn85WkAK3ovMiNGtSxHC90_WM2kS2GSzhRjAnU,1867
182
- test/stub_composition_test.py,sha256=8JncwauejwbPM4ttm_IBhp6bQwabVdY7_hf6P_XCV44,558
183
- test/stub_test.py,sha256=CzKjxrKCRawOeWroKTq2wEvbhRcuukvgy154LeSMngQ,11284
184
- test/test_asgi_wrapper.py,sha256=NzhKYIVVQhL9mTGJh8AWBEv_cTZ1uT9W9ngoLufL09M,7320
185
- test/token_flow_test.py,sha256=tbxqsDFzRiMCkxfexDzxbbEomrmNlqJjOpPm8ndPE_c,614
186
- test/traceback_test.py,sha256=3FNfnb00ek1gMVj8xcT8veAcyF4j4Fdrz3G9_giljsc,4747
187
- test/tunnel_test.py,sha256=5v3FGmYS3VAcQB1xMjoXnmU1jLGvKu27TgFkH42N09w,768
188
- test/utils_test.py,sha256=VRBxxpIAl3TvvY8X_rumvqCR-5ZozV2tfm_1Gy4ok6M,2679
189
- test/version_test.py,sha256=lii24csueJzXzv0HM0fvHD83N_9FOOFRl-VRmDQZnDA,403
190
- test/volume_test.py,sha256=j7B6tKwvURCHAahaeaI-nFFItKXDihui5xWHeXmzSNw,12461
191
- test/watcher_test.py,sha256=RdtFZVsdQEdKo7WUy98SK6UJ795u8v--x3nuOTNEghc,1193
192
- test/webhook_test.py,sha256=wyG3nG93En4-tXyo3GMMX__0GKfKnH0ZpChssyKlTXI,4205
193
- modal-0.62.16.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
194
- modal-0.62.16.dist-info/METADATA,sha256=8lA5hTdu2L-T-qSiuo7Pk0bbd8uCdbXNnkUdvd4Sfi4,2302
195
- modal-0.62.16.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
196
- modal-0.62.16.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
197
- modal-0.62.16.dist-info/top_level.txt,sha256=AfUN7pr_AWNHp5av5c2h5ntw_83jrhQ2-ytzdC-S4Z0,69
198
- modal-0.62.16.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- # Copyright Modal Labs 2022
2
- import asyncio
3
- import sys
4
-
5
- from modal import Image, Stub
6
-
7
-
8
- async def main(client=None, python_version=None):
9
- stub = Stub(image=Image.conda(python_version))
10
- async with stub.run.aio(client=client):
11
- pass
12
-
13
-
14
- if __name__ == "__main__":
15
- asyncio.run(main(python_version=sys.argv[1]))
@@ -1,15 +0,0 @@
1
- # Copyright Modal Labs 2022
2
- import asyncio
3
- import sys
4
-
5
- from modal import Image, Stub
6
-
7
-
8
- async def main(client=None, python_version=None):
9
- stub = Stub(image=Image.debian_slim(python_version))
10
- async with stub.run.aio(client=client):
11
- pass
12
-
13
-
14
- if __name__ == "__main__":
15
- asyncio.run(main(python_version=sys.argv[1]))
@@ -1,15 +0,0 @@
1
- # Copyright Modal Labs 2022
2
- import asyncio
3
- import sys
4
-
5
- from modal import Image, Stub
6
-
7
-
8
- async def main(client=None, python_version=None):
9
- stub = Stub(image=Image.micromamba(python_version))
10
- async with stub.run.aio(client=client):
11
- pass
12
-
13
-
14
- if __name__ == "__main__":
15
- asyncio.run(main(python_version=sys.argv[1]))
test/__init__.py DELETED
@@ -1 +0,0 @@
1
- # Copyright Modal Labs 2022
test/aio_test.py DELETED
@@ -1,12 +0,0 @@
1
- # Copyright Modal Labs 2023
2
- import pytest
3
-
4
-
5
- @pytest.mark.asyncio
6
- async def test_new(servicer, client):
7
- from modal import Stub
8
-
9
- stub = Stub()
10
-
11
- async with stub.run(client=client):
12
- pass