modal 0.66.14__py3-none-any.whl → 0.66.39__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 +1 -1
- modal/_container_entrypoint.py +27 -358
- modal/_runtime/__init__.py +1 -0
- modal/{_asgi.py → _runtime/asgi.py} +8 -7
- modal/{_container_io_manager.py → _runtime/container_io_manager.py} +18 -27
- modal/{execution_context.py → _runtime/execution_context.py} +2 -1
- modal/{_telemetry.py → _runtime/telemetry.py} +1 -1
- modal/_runtime/user_code_imports.py +361 -0
- modal/_serialization.py +1 -1
- modal/_utils/function_utils.py +28 -8
- modal/app.py +13 -46
- modal/cli/import_refs.py +4 -38
- modal/client.pyi +2 -2
- modal/dict.py +0 -6
- modal/dict.pyi +0 -4
- modal/experimental.py +1 -4
- modal/functions.py +11 -10
- modal/functions.pyi +8 -8
- modal/gpu.py +8 -6
- modal/image.py +93 -6
- modal/image.pyi +20 -2
- modal/io_streams.py +32 -12
- modal/io_streams.pyi +8 -4
- modal/mount.py +3 -2
- modal/network_file_system.py +0 -28
- modal/network_file_system.pyi +0 -14
- modal/parallel_map.py +1 -1
- modal/partial_function.py +11 -1
- modal/queue.py +0 -6
- modal/queue.pyi +0 -4
- modal/runner.py +1 -1
- modal/sandbox.py +1 -1
- modal/secret.py +1 -1
- modal/volume.py +0 -22
- modal/volume.pyi +0 -9
- {modal-0.66.14.dist-info → modal-0.66.39.dist-info}/METADATA +1 -2
- {modal-0.66.14.dist-info → modal-0.66.39.dist-info}/RECORD +49 -49
- modal_proto/api.proto +2 -21
- modal_proto/api_grpc.py +0 -16
- modal_proto/api_pb2.py +702 -726
- modal_proto/api_pb2.pyi +6 -60
- modal_proto/api_pb2_grpc.py +0 -33
- modal_proto/api_pb2_grpc.pyi +0 -10
- modal_proto/modal_api_grpc.py +0 -1
- modal_version/_version_generated.py +1 -1
- modal/_container_io_manager.pyi +0 -414
- modal/execution_context.pyi +0 -22
- {modal-0.66.14.dist-info → modal-0.66.39.dist-info}/LICENSE +0 -0
- {modal-0.66.14.dist-info → modal-0.66.39.dist-info}/WHEEL +0 -0
- {modal-0.66.14.dist-info → modal-0.66.39.dist-info}/entry_points.txt +0 -0
- {modal-0.66.14.dist-info → modal-0.66.39.dist-info}/top_level.txt +0 -0
modal/network_file_system.pyi
CHANGED
@@ -26,13 +26,6 @@ class _NetworkFileSystem(modal.object._Object):
|
|
26
26
|
_heartbeat_sleep: float = 300,
|
27
27
|
) -> typing.AsyncContextManager[_NetworkFileSystem]: ...
|
28
28
|
@staticmethod
|
29
|
-
def persisted(
|
30
|
-
label: str, namespace=1, environment_name: typing.Optional[str] = None, cloud: typing.Optional[str] = None
|
31
|
-
): ...
|
32
|
-
def persist(
|
33
|
-
self, label: str, namespace=1, environment_name: typing.Optional[str] = None, cloud: typing.Optional[str] = None
|
34
|
-
): ...
|
35
|
-
@staticmethod
|
36
29
|
async def lookup(
|
37
30
|
label: str,
|
38
31
|
namespace=1,
|
@@ -85,13 +78,6 @@ class NetworkFileSystem(modal.object.Object):
|
|
85
78
|
environment_name: typing.Optional[str] = None,
|
86
79
|
_heartbeat_sleep: float = 300,
|
87
80
|
) -> synchronicity.combined_types.AsyncAndBlockingContextManager[NetworkFileSystem]: ...
|
88
|
-
@staticmethod
|
89
|
-
def persisted(
|
90
|
-
label: str, namespace=1, environment_name: typing.Optional[str] = None, cloud: typing.Optional[str] = None
|
91
|
-
): ...
|
92
|
-
def persist(
|
93
|
-
self, label: str, namespace=1, environment_name: typing.Optional[str] = None, cloud: typing.Optional[str] = None
|
94
|
-
): ...
|
95
81
|
|
96
82
|
class __lookup_spec(typing_extensions.Protocol):
|
97
83
|
def __call__(
|
modal/parallel_map.py
CHANGED
@@ -7,6 +7,7 @@ from typing import Any, Callable, Dict, Optional, Set, Tuple
|
|
7
7
|
|
8
8
|
from grpclib import GRPCError, Status
|
9
9
|
|
10
|
+
from modal._runtime.execution_context import current_input_id
|
10
11
|
from modal._utils.async_utils import (
|
11
12
|
AsyncOrSyncIterable,
|
12
13
|
aclosing,
|
@@ -28,7 +29,6 @@ from modal._utils.function_utils import (
|
|
28
29
|
)
|
29
30
|
from modal._utils.grpc_utils import retry_transient_errors
|
30
31
|
from modal.config import logger
|
31
|
-
from modal.execution_context import current_input_id
|
32
32
|
from modal_proto import api_pb2
|
33
33
|
|
34
34
|
if typing.TYPE_CHECKING:
|
modal/partial_function.py
CHANGED
@@ -199,6 +199,7 @@ class _MethodDecoratorType:
|
|
199
199
|
...
|
200
200
|
|
201
201
|
|
202
|
+
# TODO(elias): fix support for coroutine type unwrapping for methods (static typing)
|
202
203
|
def _method(
|
203
204
|
_warn_parentheses_missing=None,
|
204
205
|
*,
|
@@ -207,7 +208,6 @@ def _method(
|
|
207
208
|
is_generator: Optional[bool] = None,
|
208
209
|
keep_warm: Optional[int] = None, # Deprecated: Use keep_warm on @app.cls() instead
|
209
210
|
) -> _MethodDecoratorType:
|
210
|
-
# TODO(elias): fix support for coroutine type unwrapping for methods (static typing)
|
211
211
|
"""Decorator for methods that should be transformed into a Modal Function registered against this class's App.
|
212
212
|
|
213
213
|
**Usage:**
|
@@ -379,6 +379,11 @@ def _asgi_app(
|
|
379
379
|
f"Modal will drop support for default parameters in a future release.",
|
380
380
|
)
|
381
381
|
|
382
|
+
if inspect.iscoroutinefunction(raw_f):
|
383
|
+
raise InvalidError(
|
384
|
+
f"ASGI app function {raw_f.__name__} is an async function. Only sync Python functions are supported."
|
385
|
+
)
|
386
|
+
|
382
387
|
if not wait_for_response:
|
383
388
|
deprecation_error(
|
384
389
|
(2024, 5, 13),
|
@@ -448,6 +453,11 @@ def _wsgi_app(
|
|
448
453
|
f"Modal will drop support for default parameters in a future release.",
|
449
454
|
)
|
450
455
|
|
456
|
+
if inspect.iscoroutinefunction(raw_f):
|
457
|
+
raise InvalidError(
|
458
|
+
f"WSGI app function {raw_f.__name__} is an async function. Only sync Python functions are supported."
|
459
|
+
)
|
460
|
+
|
451
461
|
if not wait_for_response:
|
452
462
|
deprecation_error(
|
453
463
|
(2024, 5, 13),
|
modal/queue.py
CHANGED
@@ -175,12 +175,6 @@ class _Queue(_Object, type_prefix="qu"):
|
|
175
175
|
|
176
176
|
return _Queue._from_loader(_load, "Queue()", is_another_app=True, hydrate_lazily=True)
|
177
177
|
|
178
|
-
@staticmethod
|
179
|
-
def persisted(label: str, namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE, environment_name: Optional[str] = None):
|
180
|
-
"""mdmd:hidden"""
|
181
|
-
message = "`Queue.persisted` is deprecated. Please use `Queue.from_name(name, create_if_missing=True)` instead."
|
182
|
-
deprecation_error((2024, 3, 1), message)
|
183
|
-
|
184
178
|
@staticmethod
|
185
179
|
async def lookup(
|
186
180
|
label: str,
|
modal/queue.pyi
CHANGED
@@ -22,8 +22,6 @@ class _Queue(modal.object._Object):
|
|
22
22
|
label: str, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
|
23
23
|
) -> _Queue: ...
|
24
24
|
@staticmethod
|
25
|
-
def persisted(label: str, namespace=1, environment_name: typing.Optional[str] = None): ...
|
26
|
-
@staticmethod
|
27
25
|
async def lookup(
|
28
26
|
label: str,
|
29
27
|
namespace=1,
|
@@ -104,8 +102,6 @@ class Queue(modal.object.Object):
|
|
104
102
|
def from_name(
|
105
103
|
label: str, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
|
106
104
|
) -> Queue: ...
|
107
|
-
@staticmethod
|
108
|
-
def persisted(label: str, namespace=1, environment_name: typing.Optional[str] = None): ...
|
109
105
|
|
110
106
|
class __lookup_spec(typing_extensions.Protocol):
|
111
107
|
def __call__(
|
modal/runner.py
CHANGED
@@ -15,6 +15,7 @@ from modal_proto import api_pb2
|
|
15
15
|
|
16
16
|
from ._pty import get_pty_info
|
17
17
|
from ._resolver import Resolver
|
18
|
+
from ._runtime.execution_context import is_local
|
18
19
|
from ._traceback import traceback_contains_remote_call
|
19
20
|
from ._utils.async_utils import TaskContext, gather_cancel_on_exc, synchronize_api
|
20
21
|
from ._utils.grpc_utils import retry_transient_errors
|
@@ -30,7 +31,6 @@ from .exception import (
|
|
30
31
|
_CliUserExecutionError,
|
31
32
|
deprecation_error,
|
32
33
|
)
|
33
|
-
from .execution_context import is_local
|
34
34
|
from .functions import _Function
|
35
35
|
from .object import _get_environment_name, _Object
|
36
36
|
from .output import _get_output_manager, enable_output
|
modal/sandbox.py
CHANGED
@@ -148,7 +148,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
148
148
|
definition = api_pb2.Sandbox(
|
149
149
|
entrypoint_args=entrypoint_args,
|
150
150
|
image_id=image.object_id,
|
151
|
-
mount_ids=[mount.object_id for mount in mounts],
|
151
|
+
mount_ids=[mount.object_id for mount in mounts] + [mount.object_id for mount in image._mount_layers],
|
152
152
|
secret_ids=[secret.object_id for secret in secrets],
|
153
153
|
timeout_secs=timeout,
|
154
154
|
workdir=workdir,
|
modal/secret.py
CHANGED
@@ -7,12 +7,12 @@ from grpclib import GRPCError, Status
|
|
7
7
|
from modal_proto import api_pb2
|
8
8
|
|
9
9
|
from ._resolver import Resolver
|
10
|
+
from ._runtime.execution_context import is_local
|
10
11
|
from ._utils.async_utils import synchronize_api
|
11
12
|
from ._utils.grpc_utils import retry_transient_errors
|
12
13
|
from ._utils.name_utils import check_object_name
|
13
14
|
from .client import _Client
|
14
15
|
from .exception import InvalidError, NotFoundError
|
15
|
-
from .execution_context import is_local
|
16
16
|
from .object import _get_environment_name, _Object
|
17
17
|
|
18
18
|
ENV_DICT_WRONG_TYPE_ERR = "the env_dict argument to Secret has to be a dict[str, Union[str, None]]"
|
modal/volume.py
CHANGED
@@ -79,15 +79,6 @@ class FileEntry:
|
|
79
79
|
size=proto.size,
|
80
80
|
)
|
81
81
|
|
82
|
-
def __getattr__(self, name: str):
|
83
|
-
deprecation_error(
|
84
|
-
(2024, 4, 15),
|
85
|
-
(
|
86
|
-
f"The FileEntry dataclass was introduced to replace a private Protobuf message. "
|
87
|
-
f"This dataclass does not have the {name} attribute."
|
88
|
-
),
|
89
|
-
)
|
90
|
-
|
91
82
|
|
92
83
|
class _Volume(_Object, type_prefix="vo"):
|
93
84
|
"""A writeable volume that can be used to share files between one or more Modal functions.
|
@@ -222,19 +213,6 @@ class _Volume(_Object, type_prefix="vo"):
|
|
222
213
|
tc.infinite_loop(lambda: client.stub.VolumeHeartbeat(request), sleep=_heartbeat_sleep)
|
223
214
|
yield cls._new_hydrated(response.volume_id, client, None, is_another_app=True)
|
224
215
|
|
225
|
-
@staticmethod
|
226
|
-
def persisted(
|
227
|
-
label: str,
|
228
|
-
namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
|
229
|
-
environment_name: Optional[str] = None,
|
230
|
-
cloud: Optional[str] = None,
|
231
|
-
):
|
232
|
-
"""mdmd:hidden"""
|
233
|
-
message = (
|
234
|
-
"`Volume.persisted` is deprecated. Please use `Volume.from_name(name, create_if_missing=True)` instead."
|
235
|
-
)
|
236
|
-
deprecation_error((2024, 3, 1), message)
|
237
|
-
|
238
216
|
@staticmethod
|
239
217
|
async def lookup(
|
240
218
|
label: str,
|
modal/volume.pyi
CHANGED
@@ -25,7 +25,6 @@ class FileEntry:
|
|
25
25
|
|
26
26
|
@classmethod
|
27
27
|
def _from_proto(cls, proto: modal_proto.api_pb2.FileEntry) -> FileEntry: ...
|
28
|
-
def __getattr__(self, name: str): ...
|
29
28
|
def __init__(self, path: str, type: FileEntryType, mtime: int, size: int) -> None: ...
|
30
29
|
def __repr__(self): ...
|
31
30
|
def __eq__(self, other): ...
|
@@ -56,10 +55,6 @@ class _Volume(modal.object._Object):
|
|
56
55
|
_heartbeat_sleep: float = 300,
|
57
56
|
) -> typing.AsyncContextManager[_Volume]: ...
|
58
57
|
@staticmethod
|
59
|
-
def persisted(
|
60
|
-
label: str, namespace=1, environment_name: typing.Optional[str] = None, cloud: typing.Optional[str] = None
|
61
|
-
): ...
|
62
|
-
@staticmethod
|
63
58
|
async def lookup(
|
64
59
|
label: str,
|
65
60
|
namespace=1,
|
@@ -149,10 +144,6 @@ class Volume(modal.object.Object):
|
|
149
144
|
version: typing.Optional[int] = None,
|
150
145
|
_heartbeat_sleep: float = 300,
|
151
146
|
) -> synchronicity.combined_types.AsyncAndBlockingContextManager[Volume]: ...
|
152
|
-
@staticmethod
|
153
|
-
def persisted(
|
154
|
-
label: str, namespace=1, environment_name: typing.Optional[str] = None, cloud: typing.Optional[str] = None
|
155
|
-
): ...
|
156
147
|
|
157
148
|
class __lookup_spec(typing_extensions.Protocol):
|
158
149
|
def __call__(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: modal
|
3
|
-
Version: 0.66.
|
3
|
+
Version: 0.66.39
|
4
4
|
Summary: Python client library for Modal
|
5
5
|
Author: Modal Labs
|
6
6
|
Author-email: support@modal.com
|
@@ -15,7 +15,6 @@ Requires-Python: >=3.9
|
|
15
15
|
Description-Content-Type: text/markdown
|
16
16
|
License-File: LICENSE
|
17
17
|
Requires-Dist: aiohttp
|
18
|
-
Requires-Dist: aiostream (~=0.5.2)
|
19
18
|
Requires-Dist: certifi
|
20
19
|
Requires-Dist: click (>=8.1.0)
|
21
20
|
Requires-Dist: fastapi
|
@@ -1,11 +1,8 @@
|
|
1
|
-
modal/__init__.py,sha256=
|
1
|
+
modal/__init__.py,sha256=Yn8zS7Jxl5uZjPM331Pc4FdSmp9Rt6VdE7TiE4ZKRc8,2151
|
2
2
|
modal/__main__.py,sha256=scYhGFqh8OJcVDo-VOxIT6CCwxOgzgflYWMnIZiMRqE,2871
|
3
|
-
modal/_asgi.py,sha256=tlWuK4fMiUtXvZutCsJ9b4dgcwXmdffR0UeFNiBiKYc,19807
|
4
3
|
modal/_clustered_functions.py,sha256=58spAmCbOk8eyjFKW-H21W-FGyYiJmfpEMK4BnTEUrk,2706
|
5
4
|
modal/_clustered_functions.pyi,sha256=UQ7DHiQFI3A2Z8kC3gltNHJkQfvgvPuSbFsse9lSPkw,785
|
6
|
-
modal/_container_entrypoint.py,sha256=
|
7
|
-
modal/_container_io_manager.py,sha256=OvsrLcTbmRhkoiWpzowp73Ucal_afcZ7cdMmaulZTNg,44132
|
8
|
-
modal/_container_io_manager.pyi,sha256=hBUcNQdXu2k9hZCIQlvxNRObH4CIHESgCmMRDhp7VUc,16448
|
5
|
+
modal/_container_entrypoint.py,sha256=T0Ql-oxgmj7PRVtdF4wYEGq-_a1ZACuCxe6u2XYj0nk,28671
|
9
6
|
modal/_ipython.py,sha256=HF_DYy0e0qM9WnGDmTY30s1RxzGya9GeORCauCEpRaE,450
|
10
7
|
modal/_location.py,sha256=S3lSxIU3h9HkWpkJ3Pwo0pqjIOSB1fjeSgUsY3x7eec,1202
|
11
8
|
modal/_output.py,sha256=SMaLrf1btBzHTV_tH5NzA8ZTWNJh5J0b31iG3sQU8_4,25494
|
@@ -13,17 +10,16 @@ modal/_proxy_tunnel.py,sha256=gnKyCfmVB7x2d1A6c-JDysNIP3kEFxmXzhcXhPrzPn0,1906
|
|
13
10
|
modal/_pty.py,sha256=GhzrHKZpoI-YHMDN7LoySlSYLpoJ4yGPSF-fqiNsFrM,1336
|
14
11
|
modal/_resolver.py,sha256=b8dHlCzQP7Xpagw5JfWdc1SqAQ5VbTaJmXnv3t-kX9k,6631
|
15
12
|
modal/_resources.py,sha256=zTCcXvmG1erERnTvUcN0r4IjjwVEs4N8fs7OnkpvbJQ,1740
|
16
|
-
modal/_serialization.py,sha256=
|
17
|
-
modal/_telemetry.py,sha256=ERG0Zc2L4Eo8bDrvtVIxuQUA5yJV8ToJfZ9Ea9NbELA,5186
|
13
|
+
modal/_serialization.py,sha256=b1X44hDP7WDTX3iz3HrPyFJJz51a69luq5Tyhnm1fK0,18762
|
18
14
|
modal/_traceback.py,sha256=1yNp1Dqq4qRIQp8idDp5PEqjwH4eA8MNI0FhFkCOFgo,4408
|
19
15
|
modal/_tunnel.py,sha256=SVmQxGbV7dcLwyY9eB2PIWmXw8QQmcKg2ppTcRQgZrU,6283
|
20
16
|
modal/_tunnel.pyi,sha256=SA_Q0UGB-D9skFjv6CqlTnCEWU67a2xJxfwVdXtar3Y,1259
|
21
17
|
modal/_watcher.py,sha256=STlDe73R7IS33a_GMW2HnDc3hCDKLdsBfMxRpVh-flA,3581
|
22
|
-
modal/app.py,sha256=
|
18
|
+
modal/app.py,sha256=QEBK8qYSrux36oi3iS3msBQmcUOS1r4s2nengzzynjQ,44658
|
23
19
|
modal/app.pyi,sha256=wHwBIDqkUb2CQzYVhxZafJ8xZ17TZ-8y-cRyOeZsEm0,25182
|
24
20
|
modal/call_graph.py,sha256=l-Wi6vM8aosCdHTWegcCyGeVJGFdZ_fzlCmbRVPBXFI,2593
|
25
21
|
modal/client.py,sha256=4SpWb4n0nolITR36kADZl1tYLOg6avukmzZU56UQjCo,16385
|
26
|
-
modal/client.pyi,sha256=
|
22
|
+
modal/client.pyi,sha256=Ei9L7Pu_SmAb5UB3r6E6GROF3HhJRCcsKYik5sMWG8s,7372
|
27
23
|
modal/cloud_bucket_mount.py,sha256=eWQhCtMIczpokjfTZEgNBCGO_s5ft46PqTSLfKBykq4,5748
|
28
24
|
modal/cloud_bucket_mount.pyi,sha256=tTF7M4FR9bTA30cFkz8qq3ZTlFL19NHU_36e_5GgAGA,1424
|
29
25
|
modal/cls.py,sha256=Ci7EtMrLm1LExfjZ9K2IXyj-SV9Syq8dAbZCEfddcmY,24234
|
@@ -31,59 +27,63 @@ modal/cls.pyi,sha256=Dr4kgq8cj7YGRf9ayInuogOxs6yHim5_562Om8Avu14,8332
|
|
31
27
|
modal/config.py,sha256=oVmvclQ2Qlt-VmL3wEp8DgDrnTPh_K5UBEYrSXv4C4s,10928
|
32
28
|
modal/container_process.py,sha256=c_jBPtyPeSxbIcbLfs_FzTrt-1eErtRSnsfxkDozFoY,5589
|
33
29
|
modal/container_process.pyi,sha256=k2kClwaSzz11eci1pzFZgCm-ptXapHAyHTOENorlazA,2594
|
34
|
-
modal/dict.py,sha256=
|
35
|
-
modal/dict.pyi,sha256=
|
30
|
+
modal/dict.py,sha256=axbUKiXhgOVvE1IrNMK3uHg3rp3N0Uji5elQNijnhH4,12571
|
31
|
+
modal/dict.pyi,sha256=4Rh5HNzXk99hotPUzoj1kYOHNlEgndZFfA-hlmBtBIc,7223
|
36
32
|
modal/environments.py,sha256=KwKdrWfSnz2XF5eYXZyd0kdac1x1PVw2uxPYsGy8cys,6517
|
37
33
|
modal/environments.pyi,sha256=oScvFAclF55-tL9UioLIL_SPBwgy_9O-BBvJ-PLbRgY,3542
|
38
34
|
modal/exception.py,sha256=K-czk1oK8wFvK8snWrytXSByo2WNb9SJAlgBVPGWZBs,6417
|
39
|
-
modal/
|
40
|
-
modal/
|
41
|
-
modal/
|
42
|
-
modal/
|
43
|
-
modal/
|
44
|
-
modal/
|
45
|
-
modal/
|
46
|
-
modal/
|
47
|
-
modal/
|
48
|
-
modal/io_streams.pyi,sha256=2HpXVhUN3BPpHCBCj3XZTB3abjLv2sN9WKga6LePwEg,4228
|
49
|
-
modal/mount.py,sha256=n_tsnv5c266GmEKewEvw7uxuz5HXcMkgSaD5ENjbybo,27607
|
35
|
+
modal/experimental.py,sha256=jFuNbwrNHos47viMB9q-cHJSvf2RDxDdoEcss9plaZE,2302
|
36
|
+
modal/functions.py,sha256=3iAonXDZ1OXgtUhL1LuTguNxlJi_PtGu-cBibd6Y464,71837
|
37
|
+
modal/functions.pyi,sha256=opYVDolZweBVZSfgT4t7OyQj4vBJ82B72IRoS8ZpoYw,24939
|
38
|
+
modal/gpu.py,sha256=r4rL6uH3UJIQthzYvfWauXNyh01WqCPtKZCmmSX1fd4,6881
|
39
|
+
modal/image.py,sha256=E6UVnhOdfkMnajiSpIm0iUEyE04yclkv9Y0BO6Vplrg,76043
|
40
|
+
modal/image.pyi,sha256=ZQpSN7XR16aug50sEcDE597CPssekeP1UZBtq0F1lRk,23847
|
41
|
+
modal/io_streams.py,sha256=kZ5o-aK0lPg4-NezYxpCFmjS2Vf_TbWn49S7c2xUQ6U,14255
|
42
|
+
modal/io_streams.pyi,sha256=pn6UnOjCUjQwukPYiHHdCv92CH9S9YRb_WekKGoPN94,4350
|
43
|
+
modal/mount.py,sha256=0BBp4aK2GABTwURlUO823IZ2eCODpz-SGuuNHs6-RUM,27733
|
50
44
|
modal/mount.pyi,sha256=nywUmeUELLY2OEnAc1NNBHmSxuEylTWBzkh6nuXkkuc,9965
|
51
|
-
modal/network_file_system.py,sha256=
|
52
|
-
modal/network_file_system.pyi,sha256=
|
45
|
+
modal/network_file_system.py,sha256=P_LsILecyda1SRHU76Hk4Lq3M1HSx9shFJbaLThzw0U,14071
|
46
|
+
modal/network_file_system.pyi,sha256=XLyUnDx55ExbJcF_xlKxRax_r06XTvSsQh-a-_EyCOU,7239
|
53
47
|
modal/object.py,sha256=zbRFZIt-Z3NQtgZPzlcEdy7u36ug4tKAuntYQBR3sDM,9625
|
54
48
|
modal/object.pyi,sha256=cwWg93H4rBk9evt1itLZAZXH5wUMyTJBZ_ADazgfjGg,8465
|
55
49
|
modal/output.py,sha256=FtPR7yvjZMgdSKD_KYkIcwYgCOiV9EKYjaj7K55Hjvg,1940
|
56
|
-
modal/parallel_map.py,sha256=
|
50
|
+
modal/parallel_map.py,sha256=lf8Wer6FAf8-dYqPqoL45cz7FYDU66-TF-h5CO2Kf5Q,16052
|
57
51
|
modal/parallel_map.pyi,sha256=pOhT0P3DDYlwLx0fR3PTsecA7DI8uOdXC1N8i-ZkyOY,2328
|
58
|
-
modal/partial_function.py,sha256=
|
52
|
+
modal/partial_function.py,sha256=1zAQZAxTaX8Nn7Rzm6fJ3mwybuVUF6OMQte76F0Vxz8,28206
|
59
53
|
modal/partial_function.pyi,sha256=BqKN7It5QLxS2yhhhDX0RgI8EyNMPBD6Duk21kN_fvA,8908
|
60
54
|
modal/proxy.py,sha256=ZrOsuQP7dSZFq1OrIxalNnt0Zvsnp1h86Th679sSL40,1417
|
61
55
|
modal/proxy.pyi,sha256=UvygdOYneLTuoDY6hVaMNCyZ947Tmx93IdLjErUqkvM,368
|
62
56
|
modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
63
|
-
modal/queue.py,sha256=
|
64
|
-
modal/queue.pyi,sha256=
|
57
|
+
modal/queue.py,sha256=qCBE-V2QRl_taSDUR5bDJL91J0A8xwbTxfEU3taA4Es,18338
|
58
|
+
modal/queue.pyi,sha256=t5yhDqXRtexy7AVraCexPyT6Xo3QA_H5OxVe_JLzTps,9999
|
65
59
|
modal/retries.py,sha256=z4dYXdksUcjkefM3vGLkhCQ_m_TUPLJgC4uSYDzWSOU,3750
|
66
|
-
modal/runner.py,sha256=
|
60
|
+
modal/runner.py,sha256=ZHHuPQ130pZzHdm8vOVQx6db4FiEg3SheDNyShVn9Jg,23805
|
67
61
|
modal/runner.pyi,sha256=b2qoID4HO-ww6Q0jdboR9iCTxVWTzGiC2taIx7kA-U0,5135
|
68
62
|
modal/running_app.py,sha256=AhWWCB16_k5R80oQxEVSNrmRq3fVInUCxtXKrAvcEPQ,566
|
69
|
-
modal/sandbox.py,sha256=
|
63
|
+
modal/sandbox.py,sha256=_7_sqTrEiC2zFo1XN7UCHA1L9NFXj6Kb6xu6Ecfancg,24878
|
70
64
|
modal/sandbox.pyi,sha256=LIh3cIs9Wm0x2WBpyLqmlOvqJYB2806sO4JCIJRQOi4,17231
|
71
65
|
modal/schedule.py,sha256=0ZFpKs1bOxeo5n3HZjoL7OE2ktsb-_oGtq-WJEPO4tY,2615
|
72
66
|
modal/scheduler_placement.py,sha256=2B7CAR4UMUu5AtFVWgwVFDjkKtppwKY6ek7gD0jzBYI,1208
|
73
|
-
modal/secret.py,sha256=
|
67
|
+
modal/secret.py,sha256=d65hZF-CQCccEP_6H97gqsLQCUfRetnbycLysbNy6VE,10019
|
74
68
|
modal/secret.pyi,sha256=lotQ8Z07jx9qP214K7LYU4spT9RGG7CWZcN3rwFIltU,3041
|
75
69
|
modal/serving.py,sha256=h9JJ2Y4BHwkCPb70UNuwxTNKMfDzcgkgRlXIzKvx6T4,4433
|
76
70
|
modal/serving.pyi,sha256=0KWUH5rdYnihSv1XB8bK9GokzpfzrCq8Sf6nYlUvQI8,1689
|
77
71
|
modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
|
78
72
|
modal/token_flow.py,sha256=lsVpJACut76AeJLw44vJKMSlpcqp8wcvxdUOoX6CIOc,6754
|
79
73
|
modal/token_flow.pyi,sha256=qEYP7grgqSA440w7kBREU9Ezeo_NxCT67OciIPgDzcc,1958
|
80
|
-
modal/volume.py,sha256=
|
81
|
-
modal/volume.pyi,sha256=
|
74
|
+
modal/volume.py,sha256=PfwXajTBuZdxwQv2lHRqzfchn39I77pRiC60Ga1EJo4,28914
|
75
|
+
modal/volume.pyi,sha256=JbeGYBda2mctzyK2psAen4nnfFB2v3jEB7S7Oyv_Vm0,10986
|
76
|
+
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
77
|
+
modal/_runtime/asgi.py,sha256=WoAwIiGKpk089MOca3_iA73h36v0uBuoPx0-87ajIDY,19843
|
78
|
+
modal/_runtime/container_io_manager.py,sha256=_MEhwyCSYeCaPQnztPxkm0anRXa3CPcwIKi403N53uo,44120
|
79
|
+
modal/_runtime/execution_context.py,sha256=cXEVY4wEK-oZJVJptyj1ZplZvVQ1HDzFsyHxhaY4o8M,2718
|
80
|
+
modal/_runtime/telemetry.py,sha256=3NbrfwYH6mvDckzdTppymmda2lQKX2oHGc2JwdFZdUc,5191
|
81
|
+
modal/_runtime/user_code_imports.py,sha256=R06r4e5Dwmes0bgmHClotBN_vd5Etss8Ml4vVtfW8wI,14542
|
82
82
|
modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
|
83
83
|
modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
|
84
84
|
modal/_utils/async_utils.py,sha256=3H4pBC4DW6rCA6hgRux6FMxGqPgHM-G-BTs7KXZiWz4,23958
|
85
85
|
modal/_utils/blob_utils.py,sha256=pAY22w0oVc6ujGfI7La7HPUMOf42FehIapuhSDeeqEs,15835
|
86
|
-
modal/_utils/function_utils.py,sha256=
|
86
|
+
modal/_utils/function_utils.py,sha256=28mxgg_-7JF1DDiNnp3iNVsFQkOzMFjORsetdvZZTHU,24475
|
87
87
|
modal/_utils/grpc_testing.py,sha256=PQyzEjHBveW7vdqu5Tpn-aNWPO5RPPcsRWzGvXDHCxY,7931
|
88
88
|
modal/_utils/grpc_utils.py,sha256=tM1Q32VOU2WG733IfVHTLZdiyCe8Ga0f0Dx0iDLLy_8,7724
|
89
89
|
modal/_utils/hash_utils.py,sha256=HefF7zPQPxFxyx3fpz-AdSm4QsHZNNvgL9-iQHY-_F4,1790
|
@@ -108,7 +108,7 @@ modal/cli/container.py,sha256=LGrF9iz8D3PGst6IUl0VB1Y1LJ0BWLrNRNFxWa4z-tg,3199
|
|
108
108
|
modal/cli/dict.py,sha256=lIEl6uxygFt3omC-oF6tHUxnFjVhy4d0InC_kZrlkvM,4454
|
109
109
|
modal/cli/entry_point.py,sha256=aaNxFAqZcmtSjwzkYIA_Ba9CkL4cL4_i2gy5VjoXxkM,4228
|
110
110
|
modal/cli/environment.py,sha256=eq8Rixbo8u-nJPvtGwW4-I1lXZPnevsFEv65WlSxFXY,4362
|
111
|
-
modal/cli/import_refs.py,sha256=
|
111
|
+
modal/cli/import_refs.py,sha256=0sYZLcgcnor_CECq-7yX3WBs1W55nz5y65sbysxxKzY,9267
|
112
112
|
modal/cli/launch.py,sha256=aY1fXxZyGn1Ih0lAzuAvzpXP6_OxvVCoZCgCIyV9Vos,2692
|
113
113
|
modal/cli/network_file_system.py,sha256=p_o3wu8rh2tjHXJYrjaad__pD8hv93ypeDtfSY2fSEU,7527
|
114
114
|
modal/cli/profile.py,sha256=s4jCYHwriOorEFCKxeGZoSWX8rXTR_hDTNFZhOA565s,3109
|
@@ -142,13 +142,13 @@ modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0
|
|
142
142
|
modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
|
143
143
|
modal_global_objects/mounts/python_standalone.py,sha256=_vTEX3PECUsatzhDs8lyJmDK0LbFetT1sJB6MIDfFAo,1870
|
144
144
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
145
|
-
modal_proto/api.proto,sha256=
|
146
|
-
modal_proto/api_grpc.py,sha256=
|
147
|
-
modal_proto/api_pb2.py,sha256=
|
148
|
-
modal_proto/api_pb2.pyi,sha256=
|
149
|
-
modal_proto/api_pb2_grpc.py,sha256=
|
150
|
-
modal_proto/api_pb2_grpc.pyi,sha256=
|
151
|
-
modal_proto/modal_api_grpc.py,sha256=
|
145
|
+
modal_proto/api.proto,sha256=5MPLgs49i-i_BcP19GyOUJ7hcpWuoegTKkjXJG0Eujg,77352
|
146
|
+
modal_proto/api_grpc.py,sha256=S7h8xe-msb3-Q8oSd7DUoB46z-dcRhsXGb6LjFCLNFI,99013
|
147
|
+
modal_proto/api_pb2.py,sha256=I8lNXEGFRHCPfpozfs2-7aVIG9edTokoJYv-wjYcmpg,282733
|
148
|
+
modal_proto/api_pb2.pyi,sha256=q6T8rJYt-V4UQ_Dr8xuqUMwJCMjs-iC1rHhycZrHUpo,377728
|
149
|
+
modal_proto/api_pb2_grpc.py,sha256=g7EfCSir3xStPPjJOU2U668zz6cGdN6u7SxvTTwU9aU,214126
|
150
|
+
modal_proto/api_pb2_grpc.pyi,sha256=9GhLZVRm69Qhyj_jmGqEGv1rD37Tzj6E6hGzKV08u48,49961
|
151
|
+
modal_proto/modal_api_grpc.py,sha256=en48QTR5fwA7x0twtlsqLKRjjDEAKVoh6EeSznQfQ3U,13236
|
152
152
|
modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
|
153
153
|
modal_proto/options.proto,sha256=a-siq4swVbZPfaFRXAipRZzGP2bq8OsdUvjlyzAeodQ,488
|
154
154
|
modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
|
@@ -159,10 +159,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
159
159
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
160
|
modal_version/__init__.py,sha256=UnAuHBPuPSstqgdCOx0SBVdfhpeJnMlY_oxEbu44Izg,470
|
161
161
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
162
|
-
modal_version/_version_generated.py,sha256=
|
163
|
-
modal-0.66.
|
164
|
-
modal-0.66.
|
165
|
-
modal-0.66.
|
166
|
-
modal-0.66.
|
167
|
-
modal-0.66.
|
168
|
-
modal-0.66.
|
162
|
+
modal_version/_version_generated.py,sha256=j1V8Em7PkypU_C92aeQH09lcTrvTj7EoeGH3SVtpfko,149
|
163
|
+
modal-0.66.39.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
164
|
+
modal-0.66.39.dist-info/METADATA,sha256=FSsdTyIIgZRS1iFneAJ15DH63G6YD8m0WcPScqiI6x8,2329
|
165
|
+
modal-0.66.39.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
166
|
+
modal-0.66.39.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
167
|
+
modal-0.66.39.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
|
168
|
+
modal-0.66.39.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
@@ -152,12 +152,6 @@ enum GPUType {
|
|
152
152
|
GPU_TYPE_L40S = 11;
|
153
153
|
}
|
154
154
|
|
155
|
-
enum InstrumentationType {
|
156
|
-
INSTRUMENTATION_TYPE_UNSPECIFIED = 0;
|
157
|
-
INSTRUMENTATION_TYPE_METRICS = 1;
|
158
|
-
INSTRUMENTATION_TYPE_TRACE = 2;
|
159
|
-
}
|
160
|
-
|
161
155
|
enum ObjectCreationType {
|
162
156
|
OBJECT_CREATION_TYPE_UNSPECIFIED = 0; // just lookup
|
163
157
|
OBJECT_CREATION_TYPE_CREATE_IF_MISSING = 1;
|
@@ -244,13 +238,6 @@ enum TaskState {
|
|
244
238
|
TASK_STATE_LOADING_CHECKPOINT_IMAGE = 11;
|
245
239
|
}
|
246
240
|
|
247
|
-
// Encoding type used for user telemetry data.
|
248
|
-
enum TelemetryEncodingType {
|
249
|
-
TELEMETRY_ENCODING_TYPE_UNSPECIFIED = 0;
|
250
|
-
TELEMETRY_ENCODING_TYPE_PROTOBUF = 1;
|
251
|
-
TELEMETRY_ENCODING_TYPE_JSON = 2;
|
252
|
-
}
|
253
|
-
|
254
241
|
enum VolumeFsVersion {
|
255
242
|
VOLUME_FS_VERSION_UNSPECIFIED = 0;
|
256
243
|
VOLUME_FS_VERSION_V1 = 1;
|
@@ -427,7 +414,7 @@ message AppSetObjectsRequest {
|
|
427
414
|
string client_id = 3;
|
428
415
|
repeated string unindexed_object_ids = 4;
|
429
416
|
AppState new_app_state = 5; // promotes an app from initializing to this new state
|
430
|
-
|
417
|
+
reserved 6;
|
431
418
|
}
|
432
419
|
|
433
420
|
message AppStopRequest {
|
@@ -1580,12 +1567,6 @@ message FunctionPutOutputsRequest {
|
|
1580
1567
|
double requested_at = 5; // Used for waypoints.
|
1581
1568
|
}
|
1582
1569
|
|
1583
|
-
message FunctionPutUserTelemetryRequest {
|
1584
|
-
bytes data = 1;
|
1585
|
-
TelemetryEncodingType encoding_type = 2;
|
1586
|
-
InstrumentationType instrumentation_type = 3;
|
1587
|
-
}
|
1588
|
-
|
1589
1570
|
message FunctionRetryInputsItem {
|
1590
1571
|
string input_jwt = 1;
|
1591
1572
|
FunctionInput input = 2;
|
@@ -1773,6 +1754,7 @@ message MethodDefinition {
|
|
1773
1754
|
WebhookConfig webhook_config = 3;
|
1774
1755
|
string web_url = 4;
|
1775
1756
|
WebUrlInfo web_url_info = 5;
|
1757
|
+
repeated CustomDomainInfo custom_domain_info = 6;
|
1776
1758
|
}
|
1777
1759
|
|
1778
1760
|
message MountFile {
|
@@ -2725,7 +2707,6 @@ service ModalClient {
|
|
2725
2707
|
rpc FunctionPrecreate(FunctionPrecreateRequest) returns (FunctionPrecreateResponse);
|
2726
2708
|
rpc FunctionPutInputs(FunctionPutInputsRequest) returns (FunctionPutInputsResponse);
|
2727
2709
|
rpc FunctionPutOutputs(FunctionPutOutputsRequest) returns (google.protobuf.Empty); // For containers to return result
|
2728
|
-
rpc FunctionPutUserTelemetry(FunctionPutUserTelemetryRequest) returns (google.protobuf.Empty);
|
2729
2710
|
rpc FunctionRetryInputs(FunctionRetryInputsRequest) returns (FunctionRetryInputsResponse);
|
2730
2711
|
rpc FunctionStartPtyShell(google.protobuf.Empty) returns (google.protobuf.Empty);
|
2731
2712
|
rpc FunctionUpdateSchedulingParams(FunctionUpdateSchedulingParamsRequest) returns (FunctionUpdateSchedulingParamsResponse);
|
modal_proto/api_grpc.py
CHANGED
@@ -285,10 +285,6 @@ class ModalClientBase(abc.ABC):
|
|
285
285
|
async def FunctionPutOutputs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionPutOutputsRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
286
286
|
pass
|
287
287
|
|
288
|
-
@abc.abstractmethod
|
289
|
-
async def FunctionPutUserTelemetry(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionPutUserTelemetryRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
290
|
-
pass
|
291
|
-
|
292
288
|
@abc.abstractmethod
|
293
289
|
async def FunctionRetryInputs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionRetryInputsRequest, modal_proto.api_pb2.FunctionRetryInputsResponse]') -> None:
|
294
290
|
pass
|
@@ -941,12 +937,6 @@ class ModalClientBase(abc.ABC):
|
|
941
937
|
modal_proto.api_pb2.FunctionPutOutputsRequest,
|
942
938
|
google.protobuf.empty_pb2.Empty,
|
943
939
|
),
|
944
|
-
'/modal.client.ModalClient/FunctionPutUserTelemetry': grpclib.const.Handler(
|
945
|
-
self.FunctionPutUserTelemetry,
|
946
|
-
grpclib.const.Cardinality.UNARY_UNARY,
|
947
|
-
modal_proto.api_pb2.FunctionPutUserTelemetryRequest,
|
948
|
-
google.protobuf.empty_pb2.Empty,
|
949
|
-
),
|
950
940
|
'/modal.client.ModalClient/FunctionRetryInputs': grpclib.const.Handler(
|
951
941
|
self.FunctionRetryInputs,
|
952
942
|
grpclib.const.Cardinality.UNARY_UNARY,
|
@@ -1727,12 +1717,6 @@ class ModalClientStub:
|
|
1727
1717
|
modal_proto.api_pb2.FunctionPutOutputsRequest,
|
1728
1718
|
google.protobuf.empty_pb2.Empty,
|
1729
1719
|
)
|
1730
|
-
self.FunctionPutUserTelemetry = grpclib.client.UnaryUnaryMethod(
|
1731
|
-
channel,
|
1732
|
-
'/modal.client.ModalClient/FunctionPutUserTelemetry',
|
1733
|
-
modal_proto.api_pb2.FunctionPutUserTelemetryRequest,
|
1734
|
-
google.protobuf.empty_pb2.Empty,
|
1735
|
-
)
|
1736
1720
|
self.FunctionRetryInputs = grpclib.client.UnaryUnaryMethod(
|
1737
1721
|
channel,
|
1738
1722
|
'/modal.client.ModalClient/FunctionRetryInputs',
|