modal 0.62.115__py3-none-any.whl → 0.72.13__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.
- modal/__init__.py +13 -9
- modal/__main__.py +41 -3
- modal/_clustered_functions.py +80 -0
- modal/_clustered_functions.pyi +22 -0
- modal/_container_entrypoint.py +402 -398
- modal/_ipython.py +3 -13
- modal/_location.py +17 -10
- modal/_output.py +243 -99
- modal/_pty.py +2 -2
- modal/_resolver.py +55 -60
- modal/_resources.py +26 -7
- modal/_runtime/__init__.py +1 -0
- modal/_runtime/asgi.py +519 -0
- modal/_runtime/container_io_manager.py +1025 -0
- modal/{execution_context.py → _runtime/execution_context.py} +11 -2
- modal/_runtime/telemetry.py +169 -0
- modal/_runtime/user_code_imports.py +356 -0
- modal/_serialization.py +123 -6
- modal/_traceback.py +47 -187
- modal/_tunnel.py +50 -14
- modal/_tunnel.pyi +19 -36
- modal/_utils/app_utils.py +3 -17
- modal/_utils/async_utils.py +386 -104
- modal/_utils/blob_utils.py +157 -186
- modal/_utils/bytes_io_segment_payload.py +97 -0
- modal/_utils/deprecation.py +89 -0
- modal/_utils/docker_utils.py +98 -0
- modal/_utils/function_utils.py +299 -98
- modal/_utils/grpc_testing.py +47 -34
- modal/_utils/grpc_utils.py +54 -21
- modal/_utils/hash_utils.py +51 -10
- modal/_utils/http_utils.py +39 -9
- modal/_utils/logger.py +2 -1
- modal/_utils/mount_utils.py +34 -16
- modal/_utils/name_utils.py +58 -0
- modal/_utils/package_utils.py +14 -1
- modal/_utils/pattern_utils.py +205 -0
- modal/_utils/rand_pb_testing.py +3 -3
- modal/_utils/shell_utils.py +15 -49
- modal/_vendor/a2wsgi_wsgi.py +62 -72
- modal/_vendor/cloudpickle.py +1 -1
- modal/_watcher.py +12 -10
- modal/app.py +561 -323
- modal/app.pyi +474 -262
- modal/call_graph.py +7 -6
- modal/cli/_download.py +22 -6
- modal/cli/_traceback.py +200 -0
- modal/cli/app.py +203 -42
- modal/cli/config.py +12 -5
- modal/cli/container.py +61 -13
- modal/cli/dict.py +128 -0
- modal/cli/entry_point.py +26 -13
- modal/cli/environment.py +40 -9
- modal/cli/import_refs.py +21 -48
- modal/cli/launch.py +28 -14
- modal/cli/network_file_system.py +57 -21
- modal/cli/profile.py +1 -1
- modal/cli/programs/run_jupyter.py +34 -9
- modal/cli/programs/vscode.py +58 -8
- modal/cli/queues.py +131 -0
- modal/cli/run.py +199 -96
- modal/cli/secret.py +5 -4
- modal/cli/token.py +7 -2
- modal/cli/utils.py +74 -8
- modal/cli/volume.py +97 -56
- modal/client.py +248 -144
- modal/client.pyi +156 -124
- modal/cloud_bucket_mount.py +43 -30
- modal/cloud_bucket_mount.pyi +32 -25
- modal/cls.py +528 -141
- modal/cls.pyi +189 -145
- modal/config.py +32 -15
- modal/container_process.py +177 -0
- modal/container_process.pyi +82 -0
- modal/dict.py +50 -54
- modal/dict.pyi +120 -164
- modal/environments.py +106 -5
- modal/environments.pyi +77 -25
- modal/exception.py +30 -43
- modal/experimental.py +62 -2
- modal/file_io.py +537 -0
- modal/file_io.pyi +235 -0
- modal/file_pattern_matcher.py +196 -0
- modal/functions.py +846 -428
- modal/functions.pyi +446 -387
- modal/gpu.py +57 -44
- modal/image.py +943 -417
- modal/image.pyi +584 -245
- modal/io_streams.py +434 -0
- modal/io_streams.pyi +122 -0
- modal/mount.py +223 -90
- modal/mount.pyi +241 -243
- modal/network_file_system.py +85 -86
- modal/network_file_system.pyi +151 -110
- modal/object.py +66 -36
- modal/object.pyi +166 -143
- modal/output.py +63 -0
- modal/parallel_map.py +73 -47
- modal/parallel_map.pyi +51 -63
- modal/partial_function.py +272 -107
- modal/partial_function.pyi +219 -120
- modal/proxy.py +15 -12
- modal/proxy.pyi +3 -8
- modal/queue.py +96 -72
- modal/queue.pyi +210 -135
- modal/requirements/2024.04.txt +2 -1
- modal/requirements/2024.10.txt +16 -0
- modal/requirements/README.md +21 -0
- modal/requirements/base-images.json +22 -0
- modal/retries.py +45 -4
- modal/runner.py +325 -203
- modal/runner.pyi +124 -110
- modal/running_app.py +27 -4
- modal/sandbox.py +509 -231
- modal/sandbox.pyi +396 -169
- modal/schedule.py +2 -2
- modal/scheduler_placement.py +20 -3
- modal/secret.py +41 -25
- modal/secret.pyi +62 -42
- modal/serving.py +39 -49
- modal/serving.pyi +37 -43
- modal/stream_type.py +15 -0
- modal/token_flow.py +5 -3
- modal/token_flow.pyi +37 -32
- modal/volume.py +123 -137
- modal/volume.pyi +228 -221
- {modal-0.62.115.dist-info → modal-0.72.13.dist-info}/METADATA +5 -5
- modal-0.72.13.dist-info/RECORD +174 -0
- {modal-0.62.115.dist-info → modal-0.72.13.dist-info}/top_level.txt +0 -1
- modal_docs/gen_reference_docs.py +3 -1
- modal_docs/mdmd/mdmd.py +0 -1
- modal_docs/mdmd/signatures.py +1 -2
- modal_global_objects/images/base_images.py +28 -0
- modal_global_objects/mounts/python_standalone.py +2 -2
- modal_proto/__init__.py +1 -1
- modal_proto/api.proto +1231 -531
- modal_proto/api_grpc.py +750 -430
- modal_proto/api_pb2.py +2102 -1176
- modal_proto/api_pb2.pyi +8859 -0
- modal_proto/api_pb2_grpc.py +1329 -675
- modal_proto/api_pb2_grpc.pyi +1416 -0
- modal_proto/modal_api_grpc.py +149 -0
- modal_proto/modal_options_grpc.py +3 -0
- modal_proto/options_pb2.pyi +20 -0
- modal_proto/options_pb2_grpc.pyi +7 -0
- modal_proto/py.typed +0 -0
- modal_version/__init__.py +1 -1
- modal_version/_version_generated.py +2 -2
- modal/_asgi.py +0 -370
- modal/_container_exec.py +0 -128
- modal/_container_io_manager.py +0 -646
- modal/_container_io_manager.pyi +0 -412
- modal/_sandbox_shell.py +0 -49
- modal/app_utils.py +0 -20
- modal/app_utils.pyi +0 -17
- modal/execution_context.pyi +0 -37
- modal/shared_volume.py +0 -23
- modal/shared_volume.pyi +0 -24
- modal-0.62.115.dist-info/RECORD +0 -207
- modal_global_objects/images/conda.py +0 -15
- modal_global_objects/images/debian_slim.py +0 -15
- modal_global_objects/images/micromamba.py +0 -15
- test/__init__.py +0 -1
- test/aio_test.py +0 -12
- test/async_utils_test.py +0 -279
- test/blob_test.py +0 -67
- test/cli_imports_test.py +0 -149
- test/cli_test.py +0 -674
- test/client_test.py +0 -203
- test/cloud_bucket_mount_test.py +0 -22
- test/cls_test.py +0 -636
- test/config_test.py +0 -149
- test/conftest.py +0 -1485
- test/container_app_test.py +0 -50
- test/container_test.py +0 -1405
- test/cpu_test.py +0 -23
- test/decorator_test.py +0 -85
- test/deprecation_test.py +0 -34
- test/dict_test.py +0 -51
- test/e2e_test.py +0 -68
- test/error_test.py +0 -7
- test/function_serialization_test.py +0 -32
- test/function_test.py +0 -791
- test/function_utils_test.py +0 -101
- test/gpu_test.py +0 -159
- test/grpc_utils_test.py +0 -82
- test/helpers.py +0 -47
- test/image_test.py +0 -814
- test/live_reload_test.py +0 -80
- test/lookup_test.py +0 -70
- test/mdmd_test.py +0 -329
- test/mount_test.py +0 -162
- test/mounted_files_test.py +0 -327
- test/network_file_system_test.py +0 -188
- test/notebook_test.py +0 -66
- test/object_test.py +0 -41
- test/package_utils_test.py +0 -25
- test/queue_test.py +0 -115
- test/resolver_test.py +0 -59
- test/retries_test.py +0 -67
- test/runner_test.py +0 -85
- test/sandbox_test.py +0 -191
- test/schedule_test.py +0 -15
- test/scheduler_placement_test.py +0 -57
- test/secret_test.py +0 -89
- test/serialization_test.py +0 -50
- test/stub_composition_test.py +0 -10
- test/stub_test.py +0 -361
- test/test_asgi_wrapper.py +0 -234
- test/token_flow_test.py +0 -18
- test/traceback_test.py +0 -135
- test/tunnel_test.py +0 -29
- test/utils_test.py +0 -88
- test/version_test.py +0 -14
- test/volume_test.py +0 -397
- test/watcher_test.py +0 -58
- test/webhook_test.py +0 -145
- {modal-0.62.115.dist-info → modal-0.72.13.dist-info}/LICENSE +0 -0
- {modal-0.62.115.dist-info → modal-0.72.13.dist-info}/WHEEL +0 -0
- {modal-0.62.115.dist-info → modal-0.72.13.dist-info}/entry_points.txt +0 -0
modal/mount.pyi
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import collections.abc
|
1
2
|
import google.protobuf.message
|
2
3
|
import modal._resolver
|
3
4
|
import modal._utils.blob_utils
|
@@ -8,305 +9,302 @@ import pathlib
|
|
8
9
|
import typing
|
9
10
|
import typing_extensions
|
10
11
|
|
11
|
-
def client_mount_name() -> str:
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
def python_standalone_mount_name(version: str) -> str:
|
16
|
-
...
|
17
|
-
|
12
|
+
def client_mount_name() -> str: ...
|
13
|
+
def python_standalone_mount_name(version: str) -> str: ...
|
18
14
|
|
19
15
|
class _MountEntry:
|
20
|
-
def description(self) -> str:
|
21
|
-
|
22
|
-
|
23
|
-
def
|
24
|
-
...
|
25
|
-
|
26
|
-
def watch_entry(self) -> typing.Tuple[pathlib.Path, pathlib.Path]:
|
27
|
-
...
|
28
|
-
|
29
|
-
def top_level_paths(self) -> typing.List[typing.Tuple[pathlib.Path, pathlib.PurePosixPath]]:
|
30
|
-
...
|
31
|
-
|
32
|
-
|
33
|
-
def _select_files(entries: typing.List[_MountEntry]) -> typing.List[typing.Tuple[pathlib.Path, pathlib.PurePosixPath]]:
|
34
|
-
...
|
16
|
+
def description(self) -> str: ...
|
17
|
+
def get_files_to_upload(self) -> typing.Iterator[tuple[pathlib.Path, str]]: ...
|
18
|
+
def watch_entry(self) -> tuple[pathlib.Path, pathlib.Path]: ...
|
19
|
+
def top_level_paths(self) -> list[tuple[pathlib.Path, pathlib.PurePosixPath]]: ...
|
35
20
|
|
21
|
+
def _select_files(entries: list[_MountEntry]) -> list[tuple[pathlib.Path, pathlib.PurePosixPath]]: ...
|
36
22
|
|
37
23
|
class _MountFile(_MountEntry):
|
38
24
|
local_file: pathlib.Path
|
39
25
|
remote_path: pathlib.PurePosixPath
|
40
26
|
|
41
|
-
def description(self) -> str:
|
42
|
-
|
43
|
-
|
44
|
-
def
|
45
|
-
|
46
|
-
|
47
|
-
def
|
48
|
-
...
|
49
|
-
|
50
|
-
def top_level_paths(self) -> typing.List[typing.Tuple[pathlib.Path, pathlib.PurePosixPath]]:
|
51
|
-
...
|
52
|
-
|
53
|
-
def __init__(self, local_file: pathlib.Path, remote_path: pathlib.PurePosixPath) -> None:
|
54
|
-
...
|
55
|
-
|
56
|
-
def __repr__(self):
|
57
|
-
...
|
58
|
-
|
59
|
-
def __eq__(self, other):
|
60
|
-
...
|
61
|
-
|
27
|
+
def description(self) -> str: ...
|
28
|
+
def get_files_to_upload(self): ...
|
29
|
+
def watch_entry(self): ...
|
30
|
+
def top_level_paths(self) -> list[tuple[pathlib.Path, pathlib.PurePosixPath]]: ...
|
31
|
+
def __init__(self, local_file: pathlib.Path, remote_path: pathlib.PurePosixPath) -> None: ...
|
32
|
+
def __repr__(self): ...
|
33
|
+
def __eq__(self, other): ...
|
62
34
|
|
63
35
|
class _MountDir(_MountEntry):
|
64
36
|
local_dir: pathlib.Path
|
65
37
|
remote_path: pathlib.PurePosixPath
|
66
|
-
|
38
|
+
ignore: typing.Callable[[pathlib.Path], bool]
|
67
39
|
recursive: bool
|
68
40
|
|
69
|
-
def description(self):
|
70
|
-
|
71
|
-
|
72
|
-
def
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
def
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
...
|
86
|
-
|
87
|
-
def __eq__(self, other):
|
88
|
-
...
|
89
|
-
|
90
|
-
|
91
|
-
def module_mount_condition(f: str):
|
92
|
-
...
|
93
|
-
|
41
|
+
def description(self): ...
|
42
|
+
def get_files_to_upload(self): ...
|
43
|
+
def watch_entry(self): ...
|
44
|
+
def top_level_paths(self) -> list[tuple[pathlib.Path, pathlib.PurePosixPath]]: ...
|
45
|
+
def __init__(
|
46
|
+
self,
|
47
|
+
local_dir: pathlib.Path,
|
48
|
+
remote_path: pathlib.PurePosixPath,
|
49
|
+
ignore: typing.Callable[[pathlib.Path], bool],
|
50
|
+
recursive: bool,
|
51
|
+
) -> None: ...
|
52
|
+
def __repr__(self): ...
|
53
|
+
def __eq__(self, other): ...
|
54
|
+
|
55
|
+
def module_mount_condition(module_base: pathlib.Path): ...
|
56
|
+
def module_mount_ignore_condition(module_base: pathlib.Path): ...
|
94
57
|
|
95
58
|
class _MountedPythonModule(_MountEntry):
|
96
59
|
module_name: str
|
97
60
|
remote_dir: typing.Union[pathlib.PurePosixPath, str]
|
98
|
-
|
99
|
-
|
100
|
-
def description(self) -> str:
|
101
|
-
|
102
|
-
|
103
|
-
def
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
def
|
113
|
-
|
114
|
-
|
115
|
-
def __init__(self, module_name: str, remote_dir: typing.Union[pathlib.PurePosixPath, str] = '/root', condition: typing.Union[typing.Callable[[str], bool], None] = None) -> None:
|
116
|
-
...
|
117
|
-
|
118
|
-
def __repr__(self):
|
119
|
-
...
|
120
|
-
|
121
|
-
def __eq__(self, other):
|
122
|
-
...
|
123
|
-
|
124
|
-
|
125
|
-
class NonLocalMountError(Exception):
|
126
|
-
...
|
61
|
+
ignore: typing.Optional[typing.Callable[[pathlib.Path], bool]]
|
62
|
+
|
63
|
+
def description(self) -> str: ...
|
64
|
+
def _proxy_entries(self) -> list[_MountEntry]: ...
|
65
|
+
def get_files_to_upload(self) -> typing.Iterator[tuple[pathlib.Path, str]]: ...
|
66
|
+
def watch_entry(self) -> tuple[pathlib.Path, pathlib.Path]: ...
|
67
|
+
def top_level_paths(self) -> list[tuple[pathlib.Path, pathlib.PurePosixPath]]: ...
|
68
|
+
def __init__(
|
69
|
+
self,
|
70
|
+
module_name: str,
|
71
|
+
remote_dir: typing.Union[pathlib.PurePosixPath, str] = "/root",
|
72
|
+
ignore: typing.Optional[typing.Callable[[pathlib.Path], bool]] = None,
|
73
|
+
) -> None: ...
|
74
|
+
def __repr__(self): ...
|
75
|
+
def __eq__(self, other): ...
|
76
|
+
|
77
|
+
class NonLocalMountError(Exception): ...
|
127
78
|
|
128
79
|
class _Mount(modal.object._Object):
|
129
|
-
_entries: typing.
|
130
|
-
_deployment_name: typing.
|
131
|
-
_namespace: typing.
|
132
|
-
_environment_name: typing.
|
133
|
-
_content_checksum_sha256_hex: typing.
|
80
|
+
_entries: typing.Optional[list[_MountEntry]]
|
81
|
+
_deployment_name: typing.Optional[str]
|
82
|
+
_namespace: typing.Optional[int]
|
83
|
+
_environment_name: typing.Optional[str]
|
84
|
+
_content_checksum_sha256_hex: typing.Optional[str]
|
134
85
|
|
135
86
|
@staticmethod
|
136
|
-
def _new(entries:
|
137
|
-
|
138
|
-
|
139
|
-
def _extend(self, entry: _MountEntry) -> _Mount:
|
140
|
-
...
|
141
|
-
|
87
|
+
def _new(entries: list[_MountEntry] = []) -> _Mount: ...
|
88
|
+
def _extend(self, entry: _MountEntry) -> _Mount: ...
|
142
89
|
@property
|
143
|
-
def entries(self):
|
144
|
-
|
145
|
-
|
146
|
-
def
|
147
|
-
...
|
148
|
-
|
149
|
-
def _top_level_paths(self) -> typing.List[typing.Tuple[pathlib.Path, pathlib.PurePosixPath]]:
|
150
|
-
...
|
151
|
-
|
152
|
-
def is_local(self) -> bool:
|
153
|
-
...
|
154
|
-
|
155
|
-
def add_local_dir(self, local_path: typing.Union[str, pathlib.Path], *, remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None, condition: typing.Union[typing.Callable[[str], bool], None] = None, recursive: bool = True) -> _Mount:
|
156
|
-
...
|
157
|
-
|
90
|
+
def entries(self): ...
|
91
|
+
def _hydrate_metadata(self, handle_metadata: typing.Optional[google.protobuf.message.Message]): ...
|
92
|
+
def _top_level_paths(self) -> list[tuple[pathlib.Path, pathlib.PurePosixPath]]: ...
|
93
|
+
def is_local(self) -> bool: ...
|
158
94
|
@staticmethod
|
159
|
-
def
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
95
|
+
def _add_local_dir(
|
96
|
+
local_path: pathlib.Path,
|
97
|
+
remote_path: pathlib.PurePosixPath,
|
98
|
+
ignore: typing.Callable[[pathlib.Path], bool] = modal.file_pattern_matcher._NOTHING,
|
99
|
+
): ...
|
100
|
+
def add_local_dir(
|
101
|
+
self,
|
102
|
+
local_path: typing.Union[str, pathlib.Path],
|
103
|
+
*,
|
104
|
+
remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None,
|
105
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
106
|
+
recursive: bool = True,
|
107
|
+
) -> _Mount: ...
|
165
108
|
@staticmethod
|
166
|
-
def
|
167
|
-
|
168
|
-
|
109
|
+
def from_local_dir(
|
110
|
+
local_path: typing.Union[str, pathlib.Path],
|
111
|
+
*,
|
112
|
+
remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None,
|
113
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
114
|
+
recursive: bool = True,
|
115
|
+
) -> _Mount: ...
|
169
116
|
@staticmethod
|
170
|
-
def
|
171
|
-
|
172
|
-
|
117
|
+
def _from_local_dir(
|
118
|
+
local_path: typing.Union[str, pathlib.Path],
|
119
|
+
*,
|
120
|
+
remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None,
|
121
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
122
|
+
recursive: bool = True,
|
123
|
+
) -> _Mount: ...
|
124
|
+
def add_local_file(
|
125
|
+
self,
|
126
|
+
local_path: typing.Union[str, pathlib.Path],
|
127
|
+
remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None,
|
128
|
+
) -> _Mount: ...
|
173
129
|
@staticmethod
|
174
|
-
def
|
175
|
-
|
176
|
-
|
177
|
-
async def _load_mount(self: _Mount, resolver: modal._resolver.Resolver, existing_object_id: typing.Union[str, None]):
|
178
|
-
...
|
179
|
-
|
130
|
+
def from_local_file(
|
131
|
+
local_path: typing.Union[str, pathlib.Path], remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None
|
132
|
+
) -> _Mount: ...
|
180
133
|
@staticmethod
|
181
|
-
def
|
182
|
-
|
183
|
-
|
134
|
+
def _from_local_file(
|
135
|
+
local_path: typing.Union[str, pathlib.Path], remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None
|
136
|
+
) -> _Mount: ...
|
184
137
|
@staticmethod
|
185
|
-
def
|
186
|
-
|
187
|
-
|
138
|
+
def _description(entries: list[_MountEntry]) -> str: ...
|
139
|
+
@staticmethod
|
140
|
+
def _get_files(
|
141
|
+
entries: list[_MountEntry],
|
142
|
+
) -> collections.abc.AsyncGenerator[modal._utils.blob_utils.FileUploadSpec, None]: ...
|
143
|
+
async def _load_mount(
|
144
|
+
self: _Mount, resolver: modal._resolver.Resolver, existing_object_id: typing.Optional[str]
|
145
|
+
): ...
|
146
|
+
@staticmethod
|
147
|
+
def from_local_python_packages(
|
148
|
+
*module_names: str,
|
149
|
+
remote_dir: typing.Union[str, pathlib.PurePosixPath] = "/root",
|
150
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
151
|
+
ignore: typing.Union[typing.Sequence[str], typing.Callable[[pathlib.Path], bool], None] = None,
|
152
|
+
) -> _Mount: ...
|
153
|
+
@staticmethod
|
154
|
+
def _from_local_python_packages(
|
155
|
+
*module_names: str,
|
156
|
+
remote_dir: typing.Union[str, pathlib.PurePosixPath] = "/root",
|
157
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
158
|
+
ignore: typing.Union[typing.Sequence[str], typing.Callable[[pathlib.Path], bool], None] = None,
|
159
|
+
) -> _Mount: ...
|
160
|
+
@staticmethod
|
161
|
+
def from_name(name: str, namespace=1, environment_name: typing.Optional[str] = None) -> _Mount: ...
|
188
162
|
@classmethod
|
189
|
-
async def lookup(
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
163
|
+
async def lookup(
|
164
|
+
cls: type[_Mount],
|
165
|
+
name: str,
|
166
|
+
namespace=1,
|
167
|
+
client: typing.Optional[modal.client._Client] = None,
|
168
|
+
environment_name: typing.Optional[str] = None,
|
169
|
+
) -> _Mount: ...
|
170
|
+
async def _deploy(
|
171
|
+
self: _Mount,
|
172
|
+
deployment_name: typing.Optional[str] = None,
|
173
|
+
namespace=1,
|
174
|
+
environment_name: typing.Optional[str] = None,
|
175
|
+
client: typing.Optional[modal.client._Client] = None,
|
176
|
+
) -> None: ...
|
177
|
+
def _get_metadata(self) -> modal_proto.api_pb2.MountHandleMetadata: ...
|
198
178
|
|
199
179
|
class Mount(modal.object.Object):
|
200
|
-
_entries: typing.
|
201
|
-
_deployment_name: typing.
|
202
|
-
_namespace: typing.
|
203
|
-
_environment_name: typing.
|
204
|
-
_content_checksum_sha256_hex: typing.
|
205
|
-
|
206
|
-
def __init__(self, *args, **kwargs):
|
207
|
-
...
|
180
|
+
_entries: typing.Optional[list[_MountEntry]]
|
181
|
+
_deployment_name: typing.Optional[str]
|
182
|
+
_namespace: typing.Optional[int]
|
183
|
+
_environment_name: typing.Optional[str]
|
184
|
+
_content_checksum_sha256_hex: typing.Optional[str]
|
208
185
|
|
186
|
+
def __init__(self, *args, **kwargs): ...
|
209
187
|
@staticmethod
|
210
|
-
def _new(entries:
|
211
|
-
|
212
|
-
|
213
|
-
def _extend(self, entry: _MountEntry) -> Mount:
|
214
|
-
...
|
215
|
-
|
188
|
+
def _new(entries: list[_MountEntry] = []) -> Mount: ...
|
189
|
+
def _extend(self, entry: _MountEntry) -> Mount: ...
|
216
190
|
@property
|
217
|
-
def entries(self):
|
218
|
-
|
219
|
-
|
220
|
-
def
|
221
|
-
...
|
222
|
-
|
223
|
-
def _top_level_paths(self) -> typing.List[typing.Tuple[pathlib.Path, pathlib.PurePosixPath]]:
|
224
|
-
...
|
225
|
-
|
226
|
-
def is_local(self) -> bool:
|
227
|
-
...
|
228
|
-
|
229
|
-
def add_local_dir(self, local_path: typing.Union[str, pathlib.Path], *, remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None, condition: typing.Union[typing.Callable[[str], bool], None] = None, recursive: bool = True) -> Mount:
|
230
|
-
...
|
231
|
-
|
191
|
+
def entries(self): ...
|
192
|
+
def _hydrate_metadata(self, handle_metadata: typing.Optional[google.protobuf.message.Message]): ...
|
193
|
+
def _top_level_paths(self) -> list[tuple[pathlib.Path, pathlib.PurePosixPath]]: ...
|
194
|
+
def is_local(self) -> bool: ...
|
232
195
|
@staticmethod
|
233
|
-
def
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
196
|
+
def _add_local_dir(
|
197
|
+
local_path: pathlib.Path,
|
198
|
+
remote_path: pathlib.PurePosixPath,
|
199
|
+
ignore: typing.Callable[[pathlib.Path], bool] = modal.file_pattern_matcher._NOTHING,
|
200
|
+
): ...
|
201
|
+
def add_local_dir(
|
202
|
+
self,
|
203
|
+
local_path: typing.Union[str, pathlib.Path],
|
204
|
+
*,
|
205
|
+
remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None,
|
206
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
207
|
+
recursive: bool = True,
|
208
|
+
) -> Mount: ...
|
239
209
|
@staticmethod
|
240
|
-
def
|
241
|
-
|
242
|
-
|
210
|
+
def from_local_dir(
|
211
|
+
local_path: typing.Union[str, pathlib.Path],
|
212
|
+
*,
|
213
|
+
remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None,
|
214
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
215
|
+
recursive: bool = True,
|
216
|
+
) -> Mount: ...
|
217
|
+
@staticmethod
|
218
|
+
def _from_local_dir(
|
219
|
+
local_path: typing.Union[str, pathlib.Path],
|
220
|
+
*,
|
221
|
+
remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None,
|
222
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
223
|
+
recursive: bool = True,
|
224
|
+
) -> Mount: ...
|
225
|
+
def add_local_file(
|
226
|
+
self,
|
227
|
+
local_path: typing.Union[str, pathlib.Path],
|
228
|
+
remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None,
|
229
|
+
) -> Mount: ...
|
243
230
|
@staticmethod
|
244
|
-
def
|
245
|
-
|
231
|
+
def from_local_file(
|
232
|
+
local_path: typing.Union[str, pathlib.Path], remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None
|
233
|
+
) -> Mount: ...
|
234
|
+
@staticmethod
|
235
|
+
def _from_local_file(
|
236
|
+
local_path: typing.Union[str, pathlib.Path], remote_path: typing.Union[str, pathlib.PurePosixPath, None] = None
|
237
|
+
) -> Mount: ...
|
238
|
+
@staticmethod
|
239
|
+
def _description(entries: list[_MountEntry]) -> str: ...
|
246
240
|
|
247
241
|
class ___get_files_spec(typing_extensions.Protocol):
|
248
|
-
def __call__(
|
249
|
-
|
250
|
-
|
251
|
-
def aio(
|
252
|
-
|
242
|
+
def __call__(
|
243
|
+
self, entries: list[_MountEntry]
|
244
|
+
) -> typing.Generator[modal._utils.blob_utils.FileUploadSpec, None, None]: ...
|
245
|
+
def aio(
|
246
|
+
self, entries: list[_MountEntry]
|
247
|
+
) -> collections.abc.AsyncGenerator[modal._utils.blob_utils.FileUploadSpec, None]: ...
|
253
248
|
|
254
249
|
_get_files: ___get_files_spec
|
255
250
|
|
256
251
|
class ___load_mount_spec(typing_extensions.Protocol):
|
257
|
-
def __call__(self, resolver: modal._resolver.Resolver, existing_object_id: typing.
|
258
|
-
|
259
|
-
|
260
|
-
async def aio(self, *args, **kwargs):
|
261
|
-
...
|
252
|
+
def __call__(self, resolver: modal._resolver.Resolver, existing_object_id: typing.Optional[str]): ...
|
253
|
+
async def aio(self, resolver: modal._resolver.Resolver, existing_object_id: typing.Optional[str]): ...
|
262
254
|
|
263
255
|
_load_mount: ___load_mount_spec
|
264
256
|
|
265
257
|
@staticmethod
|
266
|
-
def from_local_python_packages(
|
267
|
-
|
268
|
-
|
258
|
+
def from_local_python_packages(
|
259
|
+
*module_names: str,
|
260
|
+
remote_dir: typing.Union[str, pathlib.PurePosixPath] = "/root",
|
261
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
262
|
+
ignore: typing.Union[typing.Sequence[str], typing.Callable[[pathlib.Path], bool], None] = None,
|
263
|
+
) -> Mount: ...
|
269
264
|
@staticmethod
|
270
|
-
def
|
271
|
-
|
272
|
-
|
265
|
+
def _from_local_python_packages(
|
266
|
+
*module_names: str,
|
267
|
+
remote_dir: typing.Union[str, pathlib.PurePosixPath] = "/root",
|
268
|
+
condition: typing.Optional[typing.Callable[[str], bool]] = None,
|
269
|
+
ignore: typing.Union[typing.Sequence[str], typing.Callable[[pathlib.Path], bool], None] = None,
|
270
|
+
) -> Mount: ...
|
271
|
+
@staticmethod
|
272
|
+
def from_name(name: str, namespace=1, environment_name: typing.Optional[str] = None) -> Mount: ...
|
273
273
|
@classmethod
|
274
|
-
def lookup(
|
275
|
-
|
274
|
+
def lookup(
|
275
|
+
cls: type[Mount],
|
276
|
+
name: str,
|
277
|
+
namespace=1,
|
278
|
+
client: typing.Optional[modal.client.Client] = None,
|
279
|
+
environment_name: typing.Optional[str] = None,
|
280
|
+
) -> Mount: ...
|
276
281
|
|
277
282
|
class ___deploy_spec(typing_extensions.Protocol):
|
278
|
-
def __call__(
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
+
def __call__(
|
284
|
+
self,
|
285
|
+
deployment_name: typing.Optional[str] = None,
|
286
|
+
namespace=1,
|
287
|
+
environment_name: typing.Optional[str] = None,
|
288
|
+
client: typing.Optional[modal.client.Client] = None,
|
289
|
+
) -> None: ...
|
290
|
+
async def aio(
|
291
|
+
self,
|
292
|
+
deployment_name: typing.Optional[str] = None,
|
293
|
+
namespace=1,
|
294
|
+
environment_name: typing.Optional[str] = None,
|
295
|
+
client: typing.Optional[modal.client.Client] = None,
|
296
|
+
) -> None: ...
|
283
297
|
|
284
298
|
_deploy: ___deploy_spec
|
285
299
|
|
286
|
-
def _get_metadata(self) -> modal_proto.api_pb2.MountHandleMetadata:
|
287
|
-
...
|
288
|
-
|
289
|
-
|
290
|
-
def _create_client_mount():
|
291
|
-
...
|
292
|
-
|
293
|
-
|
294
|
-
def create_client_mount():
|
295
|
-
...
|
296
|
-
|
297
|
-
|
298
|
-
def _get_client_mount():
|
299
|
-
...
|
300
|
-
|
301
|
-
|
302
|
-
def _is_modal_path(remote_path: pathlib.PurePosixPath):
|
303
|
-
...
|
304
|
-
|
305
|
-
|
306
|
-
def get_auto_mounts() -> typing.List[_Mount]:
|
307
|
-
...
|
300
|
+
def _get_metadata(self) -> modal_proto.api_pb2.MountHandleMetadata: ...
|
308
301
|
|
302
|
+
def _create_client_mount(): ...
|
303
|
+
def create_client_mount(): ...
|
304
|
+
def _get_client_mount(): ...
|
305
|
+
def _is_modal_path(remote_path: pathlib.PurePosixPath): ...
|
306
|
+
def get_auto_mounts() -> list[_Mount]: ...
|
309
307
|
|
310
308
|
ROOT_DIR: pathlib.PurePosixPath
|
311
309
|
|
312
|
-
PYTHON_STANDALONE_VERSIONS:
|
310
|
+
PYTHON_STANDALONE_VERSIONS: dict[str, tuple[str, str]]
|