modal 0.68.24__py3-none-any.whl → 0.68.31__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/_utils/deprecation.py +44 -0
- modal/app.py +11 -31
- modal/app.pyi +3 -4
- modal/cli/app.py +1 -1
- modal/client.pyi +2 -2
- modal/config.py +2 -1
- modal/container_process.py +2 -1
- modal/dict.py +2 -1
- modal/exception.py +0 -54
- modal/file_io.py +54 -7
- modal/file_io.pyi +18 -8
- modal/file_pattern_matcher.py +48 -15
- modal/functions.py +2 -8
- modal/functions.pyi +11 -7
- modal/image.py +21 -5
- modal/image.pyi +16 -2
- modal/network_file_system.py +2 -1
- modal/partial_function.py +2 -1
- modal/queue.py +2 -1
- modal/runner.py +2 -7
- modal/sandbox.py +23 -13
- modal/sandbox.pyi +21 -0
- modal/serving.py +1 -1
- modal/volume.py +2 -1
- {modal-0.68.24.dist-info → modal-0.68.31.dist-info}/METADATA +1 -1
- {modal-0.68.24.dist-info → modal-0.68.31.dist-info}/RECORD +34 -33
- modal_proto/api.proto +1 -1
- modal_proto/api_pb2.py +750 -750
- modal_proto/api_pb2.pyi +4 -4
- modal_version/_version_generated.py +1 -1
- {modal-0.68.24.dist-info → modal-0.68.31.dist-info}/LICENSE +0 -0
- {modal-0.68.24.dist-info → modal-0.68.31.dist-info}/WHEEL +0 -0
- {modal-0.68.24.dist-info → modal-0.68.31.dist-info}/entry_points.txt +0 -0
- {modal-0.68.24.dist-info → modal-0.68.31.dist-info}/top_level.txt +0 -0
modal/image.pyi
CHANGED
@@ -120,7 +120,14 @@ class _Image(modal.object._Object):
|
|
120
120
|
def copy_local_file(
|
121
121
|
self, local_path: typing.Union[str, pathlib.Path], remote_path: typing.Union[str, pathlib.Path] = "./"
|
122
122
|
) -> _Image: ...
|
123
|
-
def add_local_python_source(
|
123
|
+
def add_local_python_source(
|
124
|
+
self,
|
125
|
+
*module_names: str,
|
126
|
+
copy: bool = False,
|
127
|
+
ignore: typing.Union[
|
128
|
+
collections.abc.Sequence[str], typing.Callable[[pathlib.Path], bool]
|
129
|
+
] = modal.file_pattern_matcher.NON_PYTHON_FILES,
|
130
|
+
) -> _Image: ...
|
124
131
|
def copy_local_dir(
|
125
132
|
self,
|
126
133
|
local_path: typing.Union[str, pathlib.Path],
|
@@ -385,7 +392,14 @@ class Image(modal.object.Object):
|
|
385
392
|
def copy_local_file(
|
386
393
|
self, local_path: typing.Union[str, pathlib.Path], remote_path: typing.Union[str, pathlib.Path] = "./"
|
387
394
|
) -> Image: ...
|
388
|
-
def add_local_python_source(
|
395
|
+
def add_local_python_source(
|
396
|
+
self,
|
397
|
+
*module_names: str,
|
398
|
+
copy: bool = False,
|
399
|
+
ignore: typing.Union[
|
400
|
+
collections.abc.Sequence[str], typing.Callable[[pathlib.Path], bool]
|
401
|
+
] = modal.file_pattern_matcher.NON_PYTHON_FILES,
|
402
|
+
) -> Image: ...
|
389
403
|
def copy_local_dir(
|
390
404
|
self,
|
391
405
|
local_path: typing.Union[str, pathlib.Path],
|
modal/network_file_system.py
CHANGED
@@ -15,11 +15,12 @@ from modal_proto import api_pb2
|
|
15
15
|
from ._resolver import Resolver
|
16
16
|
from ._utils.async_utils import TaskContext, aclosing, async_map, sync_or_async_iter, synchronize_api
|
17
17
|
from ._utils.blob_utils import LARGE_FILE_LIMIT, blob_iter, blob_upload_file
|
18
|
+
from ._utils.deprecation import deprecation_error
|
18
19
|
from ._utils.grpc_utils import retry_transient_errors
|
19
20
|
from ._utils.hash_utils import get_sha256_hex
|
20
21
|
from ._utils.name_utils import check_object_name
|
21
22
|
from .client import _Client
|
22
|
-
from .exception import InvalidError
|
23
|
+
from .exception import InvalidError
|
23
24
|
from .object import (
|
24
25
|
EPHEMERAL_OBJECT_HEARTBEAT_SLEEP,
|
25
26
|
_get_environment_name,
|
modal/partial_function.py
CHANGED
@@ -15,9 +15,10 @@ import typing_extensions
|
|
15
15
|
from modal_proto import api_pb2
|
16
16
|
|
17
17
|
from ._utils.async_utils import synchronize_api, synchronizer
|
18
|
+
from ._utils.deprecation import deprecation_error, deprecation_warning
|
18
19
|
from ._utils.function_utils import callable_has_non_self_non_default_params, callable_has_non_self_params
|
19
20
|
from .config import logger
|
20
|
-
from .exception import InvalidError
|
21
|
+
from .exception import InvalidError
|
21
22
|
from .functions import _Function
|
22
23
|
|
23
24
|
MAX_MAX_BATCH_SIZE = 1000
|
modal/queue.py
CHANGED
@@ -13,10 +13,11 @@ from modal_proto import api_pb2
|
|
13
13
|
from ._resolver import Resolver
|
14
14
|
from ._serialization import deserialize, serialize
|
15
15
|
from ._utils.async_utils import TaskContext, synchronize_api, warn_if_generator_is_not_consumed
|
16
|
+
from ._utils.deprecation import deprecation_error
|
16
17
|
from ._utils.grpc_utils import retry_transient_errors
|
17
18
|
from ._utils.name_utils import check_object_name
|
18
19
|
from .client import _Client
|
19
|
-
from .exception import InvalidError, RequestSizeError
|
20
|
+
from .exception import InvalidError, RequestSizeError
|
20
21
|
from .object import EPHEMERAL_OBJECT_HEARTBEAT_SLEEP, _get_environment_name, _Object, live_method, live_method_gen
|
21
22
|
|
22
23
|
|
modal/runner.py
CHANGED
@@ -19,19 +19,14 @@ from ._resolver import Resolver
|
|
19
19
|
from ._runtime.execution_context import is_local
|
20
20
|
from ._traceback import print_server_warnings, traceback_contains_remote_call
|
21
21
|
from ._utils.async_utils import TaskContext, gather_cancel_on_exc, synchronize_api
|
22
|
+
from ._utils.deprecation import deprecation_error
|
22
23
|
from ._utils.grpc_utils import retry_transient_errors
|
23
24
|
from ._utils.name_utils import check_object_name, is_valid_tag
|
24
25
|
from .client import HEARTBEAT_INTERVAL, HEARTBEAT_TIMEOUT, _Client
|
25
26
|
from .cls import _Cls
|
26
27
|
from .config import config, logger
|
27
28
|
from .environments import _get_environment_cached
|
28
|
-
from .exception import
|
29
|
-
InteractiveTimeoutError,
|
30
|
-
InvalidError,
|
31
|
-
RemoteError,
|
32
|
-
_CliUserExecutionError,
|
33
|
-
deprecation_error,
|
34
|
-
)
|
29
|
+
from .exception import InteractiveTimeoutError, InvalidError, RemoteError, _CliUserExecutionError
|
35
30
|
from .functions import _Function
|
36
31
|
from .object import _get_environment_name, _Object
|
37
32
|
from .output import _get_output_manager, enable_output
|
modal/sandbox.py
CHANGED
@@ -19,19 +19,13 @@ from ._location import parse_cloud_provider
|
|
19
19
|
from ._resolver import Resolver
|
20
20
|
from ._resources import convert_fn_config_to_resources_config
|
21
21
|
from ._utils.async_utils import synchronize_api
|
22
|
+
from ._utils.deprecation import deprecation_error
|
22
23
|
from ._utils.grpc_utils import retry_transient_errors
|
23
24
|
from ._utils.mount_utils import validate_network_file_systems, validate_volumes
|
24
25
|
from .client import _Client
|
25
26
|
from .config import config
|
26
27
|
from .container_process import _ContainerProcess
|
27
|
-
from .exception import
|
28
|
-
ExecutionError,
|
29
|
-
InvalidError,
|
30
|
-
SandboxTerminatedError,
|
31
|
-
SandboxTimeoutError,
|
32
|
-
deprecation_error,
|
33
|
-
deprecation_warning,
|
34
|
-
)
|
28
|
+
from .exception import ExecutionError, InvalidError, SandboxTerminatedError, SandboxTimeoutError
|
35
29
|
from .file_io import _FileIO
|
36
30
|
from .gpu import GPU_T
|
37
31
|
from .image import _Image
|
@@ -284,13 +278,14 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
284
278
|
app_id = _App._container_app.app_id
|
285
279
|
app_client = _App._container_app.client
|
286
280
|
else:
|
287
|
-
|
281
|
+
arglist = ", ".join(repr(s) for s in entrypoint_args)
|
282
|
+
deprecation_error(
|
288
283
|
(2024, 9, 14),
|
289
|
-
"Creating a `Sandbox` without an `App` is deprecated.\n"
|
290
|
-
"You may pass in an `App` object, or reference one by name with `App.lookup`:\n"
|
284
|
+
"Creating a `Sandbox` without an `App` is deprecated.\n\n"
|
285
|
+
"You may pass in an `App` object, or reference one by name with `App.lookup`:\n\n"
|
291
286
|
"```\n"
|
292
|
-
"app = modal.App.lookup('
|
293
|
-
"modal.Sandbox.create(
|
287
|
+
"app = modal.App.lookup('sandbox-app', create_if_missing=True)\n"
|
288
|
+
f"sb = modal.Sandbox.create({arglist}, app=app)\n"
|
294
289
|
"```",
|
295
290
|
)
|
296
291
|
|
@@ -567,6 +562,21 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
567
562
|
task_id = await self._get_task_id()
|
568
563
|
return await _FileIO.create(path, mode, self._client, task_id)
|
569
564
|
|
565
|
+
async def ls(self, path: str) -> list[str]:
|
566
|
+
"""List the contents of a directory in the Sandbox."""
|
567
|
+
task_id = await self._get_task_id()
|
568
|
+
return await _FileIO.ls(path, self._client, task_id)
|
569
|
+
|
570
|
+
async def mkdir(self, path: str, parents: bool = False) -> None:
|
571
|
+
"""Create a new directory in the Sandbox."""
|
572
|
+
task_id = await self._get_task_id()
|
573
|
+
return await _FileIO.mkdir(path, self._client, task_id, parents)
|
574
|
+
|
575
|
+
async def rm(self, path: str, recursive: bool = False) -> None:
|
576
|
+
"""Remove a file or directory in the Sandbox."""
|
577
|
+
task_id = await self._get_task_id()
|
578
|
+
return await _FileIO.rm(path, self._client, task_id, recursive)
|
579
|
+
|
570
580
|
@property
|
571
581
|
def stdout(self) -> _StreamReader[str]:
|
572
582
|
"""
|
modal/sandbox.pyi
CHANGED
@@ -128,6 +128,9 @@ class _Sandbox(modal.object._Object):
|
|
128
128
|
async def open(self, path: str, mode: _typeshed.OpenTextMode) -> modal.file_io._FileIO[str]: ...
|
129
129
|
@typing.overload
|
130
130
|
async def open(self, path: str, mode: _typeshed.OpenBinaryMode) -> modal.file_io._FileIO[bytes]: ...
|
131
|
+
async def ls(self, path: str) -> list[str]: ...
|
132
|
+
async def mkdir(self, path: str, parents: bool = False) -> None: ...
|
133
|
+
async def rm(self, path: str, recursive: bool = False) -> None: ...
|
131
134
|
@property
|
132
135
|
def stdout(self) -> modal.io_streams._StreamReader[str]: ...
|
133
136
|
@property
|
@@ -367,6 +370,24 @@ class Sandbox(modal.object.Object):
|
|
367
370
|
|
368
371
|
open: __open_spec
|
369
372
|
|
373
|
+
class __ls_spec(typing_extensions.Protocol):
|
374
|
+
def __call__(self, path: str) -> list[str]: ...
|
375
|
+
async def aio(self, path: str) -> list[str]: ...
|
376
|
+
|
377
|
+
ls: __ls_spec
|
378
|
+
|
379
|
+
class __mkdir_spec(typing_extensions.Protocol):
|
380
|
+
def __call__(self, path: str, parents: bool = False) -> None: ...
|
381
|
+
async def aio(self, path: str, parents: bool = False) -> None: ...
|
382
|
+
|
383
|
+
mkdir: __mkdir_spec
|
384
|
+
|
385
|
+
class __rm_spec(typing_extensions.Protocol):
|
386
|
+
def __call__(self, path: str, recursive: bool = False) -> None: ...
|
387
|
+
async def aio(self, path: str, recursive: bool = False) -> None: ...
|
388
|
+
|
389
|
+
rm: __rm_spec
|
390
|
+
|
370
391
|
@property
|
371
392
|
def stdout(self) -> modal.io_streams.StreamReader[str]: ...
|
372
393
|
@property
|
modal/serving.py
CHANGED
@@ -11,12 +11,12 @@ from synchronicity.async_wrap import asynccontextmanager
|
|
11
11
|
from modal._output import OutputManager
|
12
12
|
|
13
13
|
from ._utils.async_utils import TaskContext, asyncify, synchronize_api, synchronizer
|
14
|
+
from ._utils.deprecation import deprecation_error
|
14
15
|
from ._utils.logger import logger
|
15
16
|
from ._watcher import watch
|
16
17
|
from .cli.import_refs import import_app
|
17
18
|
from .client import _Client
|
18
19
|
from .config import config
|
19
|
-
from .exception import deprecation_error
|
20
20
|
from .output import _get_output_manager, enable_output
|
21
21
|
from .runner import _run_app, serve_update
|
22
22
|
|
modal/volume.py
CHANGED
@@ -24,7 +24,7 @@ from grpclib import GRPCError, Status
|
|
24
24
|
from synchronicity.async_wrap import asynccontextmanager
|
25
25
|
|
26
26
|
import modal_proto.api_pb2
|
27
|
-
from modal.exception import VolumeUploadTimeoutError
|
27
|
+
from modal.exception import VolumeUploadTimeoutError
|
28
28
|
from modal_proto import api_pb2
|
29
29
|
|
30
30
|
from ._resolver import Resolver
|
@@ -36,6 +36,7 @@ from ._utils.blob_utils import (
|
|
36
36
|
get_file_upload_spec_from_fileobj,
|
37
37
|
get_file_upload_spec_from_path,
|
38
38
|
)
|
39
|
+
from ._utils.deprecation import deprecation_error, deprecation_warning
|
39
40
|
from ._utils.grpc_utils import retry_transient_errors
|
40
41
|
from ._utils.name_utils import check_object_name
|
41
42
|
from .client import _Client
|
@@ -15,66 +15,66 @@ modal/_traceback.py,sha256=orZ7rsCk9ekV7ZoFjZTH_H00azCypwRKaLh0MZb1dR8,4898
|
|
15
15
|
modal/_tunnel.py,sha256=o-jJhS4vQ6-XswDhHcJWGMZZmD03SC0e9i8fEu1JTjo,6310
|
16
16
|
modal/_tunnel.pyi,sha256=JmmDYAy9F1FpgJ_hWx0xkom2nTOFQjn4mTPYlU3PFo4,1245
|
17
17
|
modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
|
18
|
-
modal/app.py,sha256=
|
19
|
-
modal/app.pyi,sha256=
|
18
|
+
modal/app.py,sha256=nt25_TXlzG4Kw_Ev4cgGaQnJaMnXN9-23tUh8dtR5xk,45454
|
19
|
+
modal/app.pyi,sha256=3h538rJ0Z2opldsKLuQhDnvop05TfzNG-Uw_n9rEHa4,25197
|
20
20
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
21
21
|
modal/client.py,sha256=JAnd4-GCN093BwkvOFAK5a6iy5ycxofjpUncMxlrIMw,15253
|
22
|
-
modal/client.pyi,sha256=
|
22
|
+
modal/client.pyi,sha256=qaus2Fah5EEsfJGBXrjVzb-fCwJ459fjrWGkXVDQQGs,7280
|
23
23
|
modal/cloud_bucket_mount.py,sha256=G7T7jWLD0QkmrfKR75mSTwdUZ2xNfj7pkVqb4ipmxmI,5735
|
24
24
|
modal/cloud_bucket_mount.pyi,sha256=CEi7vrH3kDUF4LAy4qP6tfImy2UJuFRcRbsgRNM1wo8,1403
|
25
25
|
modal/cls.py,sha256=ONnrfZ2vPcaY2JuKypPiBA9eTiyg8Qfg-Ull40nn9zs,30956
|
26
26
|
modal/cls.pyi,sha256=uoOEANXgCFT9Au3e-_bU98M6ZfAgQWF5ngj8f4c6qpY,8225
|
27
|
-
modal/config.py,sha256=
|
28
|
-
modal/container_process.py,sha256=
|
27
|
+
modal/config.py,sha256=BzhZYUUwOmvVwf6x5kf0ywMC257s648dmuhsnB6g3gk,11041
|
28
|
+
modal/container_process.py,sha256=WTqLn01dJPVkPpwR_0w_JH96ceN5mV4TGtiu1ZR2RRA,6108
|
29
29
|
modal/container_process.pyi,sha256=dqtqBmyRpXXpRrDooESL6WBVU_1Rh6OG-66P2Hk9E5U,2666
|
30
|
-
modal/dict.py,sha256=
|
30
|
+
modal/dict.py,sha256=put8iNVOoifRa7vOvMThZ2_NeHiDc474xBCsGCOZ8I4,12653
|
31
31
|
modal/dict.pyi,sha256=2cYgOqBxYZih4BYgMV0c3rNPuxYR6-cB1GBXzFkHA5c,7265
|
32
32
|
modal/environments.py,sha256=5cgA-zbm6ngKLsRA19zSOgtgo9-BarJK3FJK0BiF2Lo,6505
|
33
33
|
modal/environments.pyi,sha256=XalNpiPkAtHWAvOU2Cotq0ozmtl-Jv0FDsR8h9mr27Q,3521
|
34
|
-
modal/exception.py,sha256=
|
34
|
+
modal/exception.py,sha256=GEV6xMnVnkle0gsFZVLB4B7cUMyw8HzVDvAvPr34ZV4,5185
|
35
35
|
modal/experimental.py,sha256=jFuNbwrNHos47viMB9q-cHJSvf2RDxDdoEcss9plaZE,2302
|
36
|
-
modal/file_io.py,sha256=
|
37
|
-
modal/file_io.pyi,sha256=
|
38
|
-
modal/file_pattern_matcher.py,sha256=
|
39
|
-
modal/functions.py,sha256=
|
40
|
-
modal/functions.pyi,sha256=
|
36
|
+
modal/file_io.py,sha256=pDOFNQU5m-x-k3oJauck4fOp3bZ55Vc-_LvSaN5_Bow,16465
|
37
|
+
modal/file_io.pyi,sha256=GMhCCRyMftXYI3HqI9EdGPOx70CbCNi-VC5Sfy5TYnc,7631
|
38
|
+
modal/file_pattern_matcher.py,sha256=V6P74Vc7LAuBFe_uepIaZmoDJiuAvqjFibe0GcMJwxo,5119
|
39
|
+
modal/functions.py,sha256=ig7FjNHrzsYzIgpagLGphQYLybvtx_4m0Exp0ribO1c,67669
|
40
|
+
modal/functions.pyi,sha256=dsA-f4Jc-VvXWaKcPyzUSgDCBQ5ujKv55AL7rtkSCT4,25213
|
41
41
|
modal/gpu.py,sha256=r4rL6uH3UJIQthzYvfWauXNyh01WqCPtKZCmmSX1fd4,6881
|
42
|
-
modal/image.py,sha256
|
43
|
-
modal/image.pyi,sha256=
|
42
|
+
modal/image.py,sha256=-swOPK80OXnFuhxoG3tT2zmJhas8yO-lr0jkOebBdKQ,82858
|
43
|
+
modal/image.pyi,sha256=Ryd3x_Bic7j40DPe0MveGqqwvNtum2qA-6lUd5lnHvk,25503
|
44
44
|
modal/io_streams.py,sha256=QkQiizKRzd5bnbKQsap31LJgBYlAnj4-XkV_50xPYX0,15079
|
45
45
|
modal/io_streams.pyi,sha256=bCCVSxkMcosYd8O3PQDDwJw7TQ8JEcnYonLJ5t27TQs,4804
|
46
46
|
modal/mount.py,sha256=QKvrgpS_FMqrGdoyVZWeWnkNpQeDSLpuiwZFSGgRp_Y,29017
|
47
47
|
modal/mount.pyi,sha256=a0WAFmT7kZvoq_ZAu6R6fwxiEUR6QSmeC_avUpJKGWM,10495
|
48
|
-
modal/network_file_system.py,sha256=
|
48
|
+
modal/network_file_system.py,sha256=6H-TMvU5pet448aSnqzmOOFOgv-IVjjEiVFeYT68Qc4,14631
|
49
49
|
modal/network_file_system.pyi,sha256=8mHKXuRkxHPazF6ljIW7g4M5aVqLSl6eKUPLgDCug5c,7901
|
50
50
|
modal/object.py,sha256=HZs3N59C6JxlMuPQWJYvrWV1FEEkH9txUovVDorVUbs,9763
|
51
51
|
modal/object.pyi,sha256=MO78H9yFSE5i1gExPEwyyQzLdlshkcGHN1aQ0ylyvq0,8802
|
52
52
|
modal/output.py,sha256=N0xf4qeudEaYrslzdAl35VKV8rapstgIM2e9wO8_iy0,1967
|
53
53
|
modal/parallel_map.py,sha256=4aoMXIrlG3wl5Ifk2YDNOQkXsGRsm6Xbfm6WtJ2t3WY,16002
|
54
54
|
modal/parallel_map.pyi,sha256=pOhT0P3DDYlwLx0fR3PTsecA7DI8uOdXC1N8i-ZkyOY,2328
|
55
|
-
modal/partial_function.py,sha256=
|
55
|
+
modal/partial_function.py,sha256=s87ILMvIfQY0gwGzRcdfLog-nqeyrl04kaQpj-w1gmg,29232
|
56
56
|
modal/partial_function.pyi,sha256=pO6kf8i5HVsZ7CF0z_KkzLk4Aeq7NJhFJ_VNIycRXaU,9260
|
57
57
|
modal/proxy.py,sha256=ZrOsuQP7dSZFq1OrIxalNnt0Zvsnp1h86Th679sSL40,1417
|
58
58
|
modal/proxy.pyi,sha256=UvygdOYneLTuoDY6hVaMNCyZ947Tmx93IdLjErUqkvM,368
|
59
59
|
modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60
|
-
modal/queue.py,sha256=
|
60
|
+
modal/queue.py,sha256=KJmY2kakfZZWwkYqTJ5maUwCty-Ijo3co1P5gHuzFDg,18689
|
61
61
|
modal/queue.pyi,sha256=di3ownBw4jc6d4X7ygXtbpjlUMOK69qyaD3lVsJbpoM,9900
|
62
62
|
modal/retries.py,sha256=HKR2Q9aNPWkMjQ5nwobqYTuZaSuw0a8lI2zrtY5IW98,5230
|
63
|
-
modal/runner.py,sha256=
|
63
|
+
modal/runner.py,sha256=qfkB0OM97kb_-oP-D5KPj_jUwfd8ePUA3R_zLkjSTBQ,24586
|
64
64
|
modal/runner.pyi,sha256=BvMS1ZVzWSn8B8q0KnIZOJKPkN5L-i5b-USbV6SWWHQ,5177
|
65
65
|
modal/running_app.py,sha256=CshNvGDJtagOdKW54uYjY8HY73j2TpnsL9jkPFZAsfA,560
|
66
|
-
modal/sandbox.py,sha256=
|
67
|
-
modal/sandbox.pyi,sha256=
|
66
|
+
modal/sandbox.py,sha256=YJaAeeBiyf3k1loHpLyJ3kwobEhS0Jnr7voC9venNJA,28049
|
67
|
+
modal/sandbox.pyi,sha256=k8_vHjN3oigxSCF13Cm2HfcSHuliGuSb8ryd3CGqwoA,19815
|
68
68
|
modal/schedule.py,sha256=0ZFpKs1bOxeo5n3HZjoL7OE2ktsb-_oGtq-WJEPO4tY,2615
|
69
69
|
modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
|
70
70
|
modal/secret.py,sha256=Y1WgybQIkfkxdzH9CQ1h-Wd1DJJpzipigMhyyvSxTww,10007
|
71
71
|
modal/secret.pyi,sha256=B_9QWiLvTwSopLsAHre-qSB2VS74cqfhtbA4GS8faQY,2957
|
72
|
-
modal/serving.py,sha256=
|
72
|
+
modal/serving.py,sha256=MnVuTsimN05LfNPxuJZ4sr5s1_BPUkIsOP_VC-bkp78,4464
|
73
73
|
modal/serving.pyi,sha256=ncV-9jY_vZYFnGs5ZnMb3ffrX8LmcLdIMHBC56xRbtE,1711
|
74
74
|
modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
|
75
75
|
modal/token_flow.py,sha256=LcgSce_MSQ2p7j55DPwpVRpiAtCDe8GRSEwzO7muNR8,6774
|
76
76
|
modal/token_flow.pyi,sha256=gOYtYujrWt_JFZeiI8EmfahXPx5GCR5Na-VaPQcWgEY,1937
|
77
|
-
modal/volume.py,sha256=
|
77
|
+
modal/volume.py,sha256=m25hZctl3zV5EMRM5BTd8mVDe66Scysbt__z6IXXa5g,29347
|
78
78
|
modal/volume.pyi,sha256=St0mDiaojfep6Bs4sBbkRJmeacYHF6lh6FKOWGmheHA,11182
|
79
79
|
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
80
80
|
modal/_runtime/asgi.py,sha256=H68KAN8bz8Zp7EcRl2c_ite1Y3kP1MHvjQAf-uUpCx8,21691
|
@@ -87,6 +87,7 @@ modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
|
|
87
87
|
modal/_utils/async_utils.py,sha256=9ubwMkwiDB4gzOYG2jL9j7Fs-5dxHjcifZe3r7JRg-k,25091
|
88
88
|
modal/_utils/blob_utils.py,sha256=N66LtZI8PpCkZ7maA7GLW5CAmYUoNJdG-GjaAUR4_NQ,14509
|
89
89
|
modal/_utils/bytes_io_segment_payload.py,sha256=uunxVJS4PE1LojF_UpURMzVK9GuvmYWRqQo_bxEj5TU,3385
|
90
|
+
modal/_utils/deprecation.py,sha256=9yHc2_bIuvivx-oYOzg-kj6JIolPdxXBlEkOVgnZcFA,1556
|
90
91
|
modal/_utils/function_utils.py,sha256=LgcveUUb4XU_dWxtqgK_3ujZBvS3cGVzcDOkljyFZ2w,25066
|
91
92
|
modal/_utils/grpc_testing.py,sha256=H1zHqthv19eGPJz2HKXDyWXWGSqO4BRsxah3L5Xaa8A,8619
|
92
93
|
modal/_utils/grpc_utils.py,sha256=PPB5ay-vXencXNIWPVw5modr3EH7gfq2QPcO5YJ1lMU,7737
|
@@ -106,7 +107,7 @@ modal/_vendor/tblib.py,sha256=g1O7QUDd3sDoLd8YPFltkXkih7r_fyZOjgmGuligv3s,9722
|
|
106
107
|
modal/cli/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
|
107
108
|
modal/cli/_download.py,sha256=t6BXZwjTd9MgznDvbsV8rp0FZWggdzC-lUAGZU4xx1g,3984
|
108
109
|
modal/cli/_traceback.py,sha256=QlLa_iw3fAOA-mqCqjS8qAxvNT48J3YY3errtVVc2cw,7316
|
109
|
-
modal/cli/app.py,sha256=
|
110
|
+
modal/cli/app.py,sha256=HkwI38FZxx66jxiur4o_DRN3uwyO3L8hqgyo8oXKZxc,7726
|
110
111
|
modal/cli/config.py,sha256=pXPLmX0bIoV57rQNqIPK7V-yllj-GPRY4jiBO_EklGg,1667
|
111
112
|
modal/cli/container.py,sha256=nCySVD10VJPzmX3ghTsGmpxdYeVYYMW6ofjsyt2gQcM,3667
|
112
113
|
modal/cli/dict.py,sha256=gwX4ZBsrr0dpWf_B5_5GN_ealcVzpcGyvY24dEY4y3Y,4455
|
@@ -146,10 +147,10 @@ modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0
|
|
146
147
|
modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
|
147
148
|
modal_global_objects/mounts/python_standalone.py,sha256=SL_riIxpd8mP4i4CLDCWiFFNj0Ltknm9c_UIGfX5d60,1836
|
148
149
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
149
|
-
modal_proto/api.proto,sha256=
|
150
|
+
modal_proto/api.proto,sha256=Fdc1QR9kxirCiZW7o8fslrYd8vk-gR2dWOWj2uCbkHk,79553
|
150
151
|
modal_proto/api_grpc.py,sha256=DveC4ejFYEhCLiWbQShnmY31_FWGYU675Bmr7nHhsgs,101342
|
151
|
-
modal_proto/api_pb2.py,sha256=
|
152
|
-
modal_proto/api_pb2.pyi,sha256=
|
152
|
+
modal_proto/api_pb2.py,sha256=EwN_R_HDiLP0s61rpSRQ5r6Kwof_XiPtH-lqeX6gC9I,292335
|
153
|
+
modal_proto/api_pb2.pyi,sha256=Ggl_mfNlUQWPQaxDUMqeC4Rglf1xXSf4Kx8vIFPiXp8,390741
|
153
154
|
modal_proto/api_pb2_grpc.py,sha256=2PEP6JPOoTw2rDC5qYjLNuumP68ZwAouRhCoayisAhY,219162
|
154
155
|
modal_proto/api_pb2_grpc.pyi,sha256=uWtCxVEd0cFpOZ1oOGfZNO7Dv45OP4kp09jMnNyx9D4,51098
|
155
156
|
modal_proto/modal_api_grpc.py,sha256=-8mLby_om5MYo6yu1zA_hqhz0yLsQW7k2YWBVZW1iVs,13546
|
@@ -163,10 +164,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
163
164
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
164
165
|
modal_version/__init__.py,sha256=RT6zPoOdFO99u5Wcxxaoir4ZCuPTbQ22cvzFAXl3vUY,470
|
165
166
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
166
|
-
modal_version/_version_generated.py,sha256=
|
167
|
-
modal-0.68.
|
168
|
-
modal-0.68.
|
169
|
-
modal-0.68.
|
170
|
-
modal-0.68.
|
171
|
-
modal-0.68.
|
172
|
-
modal-0.68.
|
167
|
+
modal_version/_version_generated.py,sha256=C9Vb_Q2jwc4JqXMWby_tAoXXSlH3UtNjbodotQ6GwxI,149
|
168
|
+
modal-0.68.31.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
169
|
+
modal-0.68.31.dist-info/METADATA,sha256=DBQM-eDw-6sWtFeC6cVRZvEPULWr_Grn0eYDBEcUmaM,2329
|
170
|
+
modal-0.68.31.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
171
|
+
modal-0.68.31.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
172
|
+
modal-0.68.31.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
|
173
|
+
modal-0.68.31.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
@@ -361,7 +361,7 @@ message AppHeartbeatRequest {
|
|
361
361
|
}
|
362
362
|
|
363
363
|
message AppLayout {
|
364
|
-
repeated Object
|
364
|
+
repeated Object objects = 1;
|
365
365
|
map<string, string> function_ids = 2; // tag -> function id
|
366
366
|
map<string, string> class_ids = 3; // tag -> class id
|
367
367
|
}
|