modal 0.74.20__py3-none-any.whl → 0.74.22__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/_functions.py +1 -4
- modal/app.py +6 -4
- modal/app.pyi +4 -4
- modal/cli/secret.py +26 -3
- modal/client.pyi +2 -2
- modal/functions.pyi +0 -1
- modal/network_file_system.py +0 -2
- modal/network_file_system.pyi +1 -1
- modal/sandbox.py +1 -1
- {modal-0.74.20.dist-info → modal-0.74.22.dist-info}/METADATA +1 -1
- {modal-0.74.20.dist-info → modal-0.74.22.dist-info}/RECORD +16 -16
- modal_version/_version_generated.py +1 -1
- {modal-0.74.20.dist-info → modal-0.74.22.dist-info}/WHEEL +0 -0
- {modal-0.74.20.dist-info → modal-0.74.22.dist-info}/entry_points.txt +0 -0
- {modal-0.74.20.dist-info → modal-0.74.22.dist-info}/licenses/LICENSE +0 -0
- {modal-0.74.20.dist-info → modal-0.74.22.dist-info}/top_level.txt +0 -0
modal/_functions.py
CHANGED
@@ -430,7 +430,6 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
430
430
|
# TODO: maybe break this out into a separate decorator for notebooks.
|
431
431
|
mounts: Collection[_Mount] = (),
|
432
432
|
network_file_systems: dict[Union[str, PurePosixPath], _NetworkFileSystem] = {},
|
433
|
-
allow_cross_region_volumes: bool = False,
|
434
433
|
volumes: dict[Union[str, PurePosixPath], Union[_Volume, _CloudBucketMount]] = {},
|
435
434
|
webhook_config: Optional[api_pb2.WebhookConfig] = None,
|
436
435
|
cpu: Optional[Union[float, tuple[float, float]]] = None,
|
@@ -788,9 +787,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
788
787
|
autoscaler_settings=autoscaler_settings,
|
789
788
|
method_definitions=method_definitions,
|
790
789
|
method_definitions_set=True,
|
791
|
-
shared_volume_mounts=network_file_system_mount_protos(
|
792
|
-
validated_network_file_systems, allow_cross_region_volumes
|
793
|
-
),
|
790
|
+
shared_volume_mounts=network_file_system_mount_protos(validated_network_file_systems),
|
794
791
|
volume_mounts=volume_mounts,
|
795
792
|
proxy_id=(proxy.object_id if proxy else None),
|
796
793
|
retry_policy=retry_policy,
|
modal/app.py
CHANGED
@@ -645,7 +645,6 @@ class _App:
|
|
645
645
|
volumes: dict[
|
646
646
|
Union[str, PurePosixPath], Union[_Volume, _CloudBucketMount]
|
647
647
|
] = {}, # Mount points for Modal Volumes & CloudBucketMounts
|
648
|
-
allow_cross_region_volumes: bool = False, # Whether using network file systems from other regions is allowed.
|
649
648
|
# Specify, in fractional CPU cores, how many CPU cores to request.
|
650
649
|
# Or, pass (request, limit) to additionally specify a hard limit in fractional CPU cores.
|
651
650
|
# CPU throttling will prevent a container from exceeding its specified limit.
|
@@ -689,6 +688,7 @@ class _App:
|
|
689
688
|
container_idle_timeout: Optional[int] = None, # Replaced with `scaledown_window`
|
690
689
|
allow_concurrent_inputs: Optional[int] = None, # Replaced with the `@modal.concurrent` decorator
|
691
690
|
_experimental_buffer_containers: Optional[int] = None, # Now stable API with `buffer_containers`
|
691
|
+
allow_cross_region_volumes: Optional[bool] = None, # Always True on the Modal backend now
|
692
692
|
) -> _FunctionDecoratorType:
|
693
693
|
"""Decorator to register a new Modal [Function](/docs/reference/modal.Function) with this App."""
|
694
694
|
if isinstance(_warn_parentheses_missing, _Image):
|
@@ -707,6 +707,8 @@ class _App:
|
|
707
707
|
" Please use the `@modal.concurrent` decorator instead."
|
708
708
|
"\n\nSee https://modal.com/docs/guide/modal-1-0-migration for more information.",
|
709
709
|
)
|
710
|
+
if allow_cross_region_volumes is not None:
|
711
|
+
deprecation_warning((2025, 4, 23), "The `allow_cross_region_volumes` parameter no longer has any effect.")
|
710
712
|
|
711
713
|
secrets = [*self._secrets, *secrets]
|
712
714
|
|
@@ -821,7 +823,6 @@ class _App:
|
|
821
823
|
gpu=gpu,
|
822
824
|
mounts=[*self._mounts, *mounts],
|
823
825
|
network_file_systems=network_file_systems,
|
824
|
-
allow_cross_region_volumes=allow_cross_region_volumes,
|
825
826
|
volumes={**self._volumes, **volumes},
|
826
827
|
cpu=cpu,
|
827
828
|
memory=memory,
|
@@ -876,7 +877,6 @@ class _App:
|
|
876
877
|
volumes: dict[
|
877
878
|
Union[str, PurePosixPath], Union[_Volume, _CloudBucketMount]
|
878
879
|
] = {}, # Mount points for Modal Volumes & CloudBucketMounts
|
879
|
-
allow_cross_region_volumes: bool = False, # Whether using network file systems from other regions is allowed.
|
880
880
|
# Specify, in fractional CPU cores, how many CPU cores to request.
|
881
881
|
# Or, pass (request, limit) to additionally specify a hard limit in fractional CPU cores.
|
882
882
|
# CPU throttling will prevent a container from exceeding its specified limit.
|
@@ -914,6 +914,7 @@ class _App:
|
|
914
914
|
container_idle_timeout: Optional[int] = None, # Replaced with `scaledown_window`
|
915
915
|
allow_concurrent_inputs: Optional[int] = None, # Replaced with the `@modal.concurrent` decorator
|
916
916
|
_experimental_buffer_containers: Optional[int] = None, # Now stable API with `buffer_containers`
|
917
|
+
allow_cross_region_volumes: Optional[bool] = None, # Always True on the Modal backend now
|
917
918
|
) -> Callable[[Union[CLS_T, _PartialFunction]], CLS_T]:
|
918
919
|
"""
|
919
920
|
Decorator to register a new Modal [Cls](/docs/reference/modal.Cls) with this App.
|
@@ -934,6 +935,8 @@ class _App:
|
|
934
935
|
" Please use the `@modal.concurrent` decorator instead."
|
935
936
|
"\n\nSee https://modal.com/docs/guide/modal-1-0-migration for more information.",
|
936
937
|
)
|
938
|
+
if allow_cross_region_volumes is not None:
|
939
|
+
deprecation_warning((2025, 4, 23), "The `allow_cross_region_volumes` parameter no longer has any effect.")
|
937
940
|
|
938
941
|
def wrapper(wrapped_cls: Union[CLS_T, _PartialFunction]) -> CLS_T:
|
939
942
|
# Check if the decorated object is a class
|
@@ -990,7 +993,6 @@ class _App:
|
|
990
993
|
gpu=gpu,
|
991
994
|
mounts=[*self._mounts, *mounts],
|
992
995
|
network_file_systems=network_file_systems,
|
993
|
-
allow_cross_region_volumes=allow_cross_region_volumes,
|
994
996
|
volumes={**self._volumes, **volumes},
|
995
997
|
cpu=cpu,
|
996
998
|
memory=memory,
|
modal/app.pyi
CHANGED
@@ -180,7 +180,6 @@ class _App:
|
|
180
180
|
typing.Union[str, pathlib.PurePosixPath],
|
181
181
|
typing.Union[modal.volume._Volume, modal.cloud_bucket_mount._CloudBucketMount],
|
182
182
|
] = {},
|
183
|
-
allow_cross_region_volumes: bool = False,
|
184
183
|
cpu: typing.Union[float, tuple[float, float], None] = None,
|
185
184
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
186
185
|
ephemeral_disk: typing.Optional[int] = None,
|
@@ -210,6 +209,7 @@ class _App:
|
|
210
209
|
container_idle_timeout: typing.Optional[int] = None,
|
211
210
|
allow_concurrent_inputs: typing.Optional[int] = None,
|
212
211
|
_experimental_buffer_containers: typing.Optional[int] = None,
|
212
|
+
allow_cross_region_volumes: typing.Optional[bool] = None,
|
213
213
|
) -> _FunctionDecoratorType: ...
|
214
214
|
@typing_extensions.dataclass_transform(
|
215
215
|
field_specifiers=(modal.cls.parameter,),
|
@@ -231,7 +231,6 @@ class _App:
|
|
231
231
|
typing.Union[str, pathlib.PurePosixPath],
|
232
232
|
typing.Union[modal.volume._Volume, modal.cloud_bucket_mount._CloudBucketMount],
|
233
233
|
] = {},
|
234
|
-
allow_cross_region_volumes: bool = False,
|
235
234
|
cpu: typing.Union[float, tuple[float, float], None] = None,
|
236
235
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
237
236
|
ephemeral_disk: typing.Optional[int] = None,
|
@@ -258,6 +257,7 @@ class _App:
|
|
258
257
|
container_idle_timeout: typing.Optional[int] = None,
|
259
258
|
allow_concurrent_inputs: typing.Optional[int] = None,
|
260
259
|
_experimental_buffer_containers: typing.Optional[int] = None,
|
260
|
+
allow_cross_region_volumes: typing.Optional[bool] = None,
|
261
261
|
) -> collections.abc.Callable[[typing.Union[CLS_T, modal._partial_function._PartialFunction]], CLS_T]: ...
|
262
262
|
async def spawn_sandbox(
|
263
263
|
self,
|
@@ -442,7 +442,6 @@ class App:
|
|
442
442
|
typing.Union[str, pathlib.PurePosixPath],
|
443
443
|
typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
|
444
444
|
] = {},
|
445
|
-
allow_cross_region_volumes: bool = False,
|
446
445
|
cpu: typing.Union[float, tuple[float, float], None] = None,
|
447
446
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
448
447
|
ephemeral_disk: typing.Optional[int] = None,
|
@@ -472,6 +471,7 @@ class App:
|
|
472
471
|
container_idle_timeout: typing.Optional[int] = None,
|
473
472
|
allow_concurrent_inputs: typing.Optional[int] = None,
|
474
473
|
_experimental_buffer_containers: typing.Optional[int] = None,
|
474
|
+
allow_cross_region_volumes: typing.Optional[bool] = None,
|
475
475
|
) -> _FunctionDecoratorType: ...
|
476
476
|
@typing_extensions.dataclass_transform(
|
477
477
|
field_specifiers=(modal.cls.parameter,),
|
@@ -493,7 +493,6 @@ class App:
|
|
493
493
|
typing.Union[str, pathlib.PurePosixPath],
|
494
494
|
typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
|
495
495
|
] = {},
|
496
|
-
allow_cross_region_volumes: bool = False,
|
497
496
|
cpu: typing.Union[float, tuple[float, float], None] = None,
|
498
497
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
499
498
|
ephemeral_disk: typing.Optional[int] = None,
|
@@ -520,6 +519,7 @@ class App:
|
|
520
519
|
container_idle_timeout: typing.Optional[int] = None,
|
521
520
|
allow_concurrent_inputs: typing.Optional[int] = None,
|
522
521
|
_experimental_buffer_containers: typing.Optional[int] = None,
|
522
|
+
allow_cross_region_volumes: typing.Optional[bool] = None,
|
523
523
|
) -> collections.abc.Callable[[typing.Union[CLS_T, modal.partial_function.PartialFunction]], CLS_T]: ...
|
524
524
|
|
525
525
|
class __spawn_sandbox_spec(typing_extensions.Protocol[SUPERSELF]):
|
modal/cli/secret.py
CHANGED
@@ -9,10 +9,11 @@ import click
|
|
9
9
|
import typer
|
10
10
|
from rich.console import Console
|
11
11
|
from rich.syntax import Syntax
|
12
|
+
from typer import Argument
|
12
13
|
|
13
14
|
from modal._utils.async_utils import synchronizer
|
14
15
|
from modal._utils.grpc_utils import retry_transient_errors
|
15
|
-
from modal.cli.utils import ENV_OPTION, display_table, timestamp_to_local
|
16
|
+
from modal.cli.utils import ENV_OPTION, YES_OPTION, display_table, timestamp_to_local
|
16
17
|
from modal.client import _Client
|
17
18
|
from modal.environments import ensure_env
|
18
19
|
from modal.secret import _Secret
|
@@ -23,7 +24,7 @@ secret_cli = typer.Typer(name="secret", help="Manage secrets.", no_args_is_help=
|
|
23
24
|
|
24
25
|
@secret_cli.command("list", help="List your published secrets.")
|
25
26
|
@synchronizer.create_blocking
|
26
|
-
async def list_(env: Optional[str] = ENV_OPTION, json:
|
27
|
+
async def list_(env: Optional[str] = ENV_OPTION, json: bool = False):
|
27
28
|
env = ensure_env(env)
|
28
29
|
client = await _Client.from_env()
|
29
30
|
response = await retry_transient_errors(client.stub.SecretList, api_pb2.SecretListRequest(environment_name=env))
|
@@ -43,7 +44,7 @@ async def list_(env: Optional[str] = ENV_OPTION, json: Optional[bool] = False):
|
|
43
44
|
display_table(column_names, rows, json, title=f"Secrets{env_part}")
|
44
45
|
|
45
46
|
|
46
|
-
@secret_cli.command("create", help="Create a new secret.
|
47
|
+
@secret_cli.command("create", help="Create a new secret.")
|
47
48
|
@synchronizer.create_blocking
|
48
49
|
async def create(
|
49
50
|
secret_name,
|
@@ -91,6 +92,28 @@ def some_function():
|
|
91
92
|
console.print(Syntax(example_code, "python"))
|
92
93
|
|
93
94
|
|
95
|
+
@secret_cli.command("delete", help="Delete a named secret.")
|
96
|
+
@synchronizer.create_blocking
|
97
|
+
async def delete(
|
98
|
+
secret_name: str = Argument(help="Name of the modal.Secret to be deleted. Case sensitive"),
|
99
|
+
yes: bool = YES_OPTION,
|
100
|
+
env: Optional[str] = ENV_OPTION,
|
101
|
+
):
|
102
|
+
"""TODO"""
|
103
|
+
env = ensure_env(env)
|
104
|
+
secret = await _Secret.from_name(secret_name, environment_name=env).hydrate()
|
105
|
+
if not yes:
|
106
|
+
typer.confirm(
|
107
|
+
f"Are you sure you want to irrevocably delete the modal.Secret '{secret_name}'?",
|
108
|
+
default=False,
|
109
|
+
abort=True,
|
110
|
+
)
|
111
|
+
client = await _Client.from_env()
|
112
|
+
|
113
|
+
# TODO: replace with API on `modal.Secret` when we add it
|
114
|
+
await client.stub.SecretDelete(api_pb2.SecretDeleteRequest(secret_id=secret.object_id))
|
115
|
+
|
116
|
+
|
94
117
|
def get_text_from_editor(key) -> str:
|
95
118
|
with NamedTemporaryFile("w+", prefix="secret_buffer", suffix=".txt") as bufferfile:
|
96
119
|
if platform.system() != "Windows":
|
modal/client.pyi
CHANGED
@@ -27,7 +27,7 @@ class _Client:
|
|
27
27
|
_snapshotted: bool
|
28
28
|
|
29
29
|
def __init__(
|
30
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.22"
|
31
31
|
): ...
|
32
32
|
def is_closed(self) -> bool: ...
|
33
33
|
@property
|
@@ -85,7 +85,7 @@ class Client:
|
|
85
85
|
_snapshotted: bool
|
86
86
|
|
87
87
|
def __init__(
|
88
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.
|
88
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.22"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
modal/functions.pyi
CHANGED
@@ -68,7 +68,6 @@ class Function(
|
|
68
68
|
network_file_systems: dict[
|
69
69
|
typing.Union[str, pathlib.PurePosixPath], modal.network_file_system.NetworkFileSystem
|
70
70
|
] = {},
|
71
|
-
allow_cross_region_volumes: bool = False,
|
72
71
|
volumes: dict[
|
73
72
|
typing.Union[str, pathlib.PurePosixPath],
|
74
73
|
typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
|
modal/network_file_system.py
CHANGED
@@ -37,7 +37,6 @@ NETWORK_FILE_SYSTEM_PUT_FILE_CLIENT_TIMEOUT = (
|
|
37
37
|
|
38
38
|
def network_file_system_mount_protos(
|
39
39
|
validated_network_file_systems: list[tuple[str, "_NetworkFileSystem"]],
|
40
|
-
allow_cross_region_volumes: bool,
|
41
40
|
) -> list[api_pb2.SharedVolumeMount]:
|
42
41
|
network_file_system_mounts = []
|
43
42
|
# Relies on dicts being ordered (true as of Python 3.6).
|
@@ -46,7 +45,6 @@ def network_file_system_mount_protos(
|
|
46
45
|
api_pb2.SharedVolumeMount(
|
47
46
|
mount_path=path,
|
48
47
|
shared_volume_id=volume.object_id,
|
49
|
-
allow_cross_region=allow_cross_region_volumes,
|
50
48
|
)
|
51
49
|
)
|
52
50
|
return network_file_system_mounts
|
modal/network_file_system.pyi
CHANGED
@@ -10,7 +10,7 @@ import typing
|
|
10
10
|
import typing_extensions
|
11
11
|
|
12
12
|
def network_file_system_mount_protos(
|
13
|
-
validated_network_file_systems: list[tuple[str, _NetworkFileSystem]],
|
13
|
+
validated_network_file_systems: list[tuple[str, _NetworkFileSystem]],
|
14
14
|
) -> list[modal_proto.api_pb2.SharedVolumeMount]: ...
|
15
15
|
|
16
16
|
class _NetworkFileSystem(modal._object._Object):
|
modal/sandbox.py
CHANGED
@@ -187,7 +187,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
187
187
|
cpu=cpu, memory=memory, gpu=gpu, ephemeral_disk=ephemeral_disk
|
188
188
|
),
|
189
189
|
cloud_provider_str=cloud if cloud else None, # Supersedes cloud_provider
|
190
|
-
nfs_mounts=network_file_system_mount_protos(validated_network_file_systems
|
190
|
+
nfs_mounts=network_file_system_mount_protos(validated_network_file_systems),
|
191
191
|
runtime=config.get("function_runtime"),
|
192
192
|
runtime_debug=config.get("function_runtime_debug"),
|
193
193
|
cloud_bucket_mounts=cloud_bucket_mounts_to_proto(cloud_bucket_mounts),
|
@@ -3,7 +3,7 @@ modal/__main__.py,sha256=sTJcc9EbDuCKSwg3tL6ZckFw9WWdlkXW8mId1IvJCNc,2846
|
|
3
3
|
modal/_clustered_functions.py,sha256=kTf-9YBXY88NutC1akI-gCbvf01RhMPCw-zoOI_YIUE,2700
|
4
4
|
modal/_clustered_functions.pyi,sha256=vllkegc99A0jrUOWa8mdlSbdp6uz36TsHhGxysAOpaQ,771
|
5
5
|
modal/_container_entrypoint.py,sha256=DymOImhc3uGRkIq_qXmBsEbWMB4EBMpfuXzz2S4BcGg,29404
|
6
|
-
modal/_functions.py,sha256=
|
6
|
+
modal/_functions.py,sha256=XFBnzOUc4MZlJWarnw8iC2za0QciePdnu0yxCW5q5DY,74776
|
7
7
|
modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
|
8
8
|
modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
|
9
9
|
modal/_object.py,sha256=JBIECWdfpRKCaCxVWZbC3Q1kF5Whk_EKvY9f4Y6AFyg,11446
|
@@ -18,11 +18,11 @@ modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
|
|
18
18
|
modal/_tunnel.pyi,sha256=JmmDYAy9F1FpgJ_hWx0xkom2nTOFQjn4mTPYlU3PFo4,1245
|
19
19
|
modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
|
20
20
|
modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
|
21
|
-
modal/app.py,sha256=
|
22
|
-
modal/app.pyi,sha256=
|
21
|
+
modal/app.py,sha256=pfVe8VH56foho4uqdQJCbn0HST_ihh0qUGqmAMNrfWw,50822
|
22
|
+
modal/app.pyi,sha256=xM5u8WuGRRAWAQ0m2cd2PowJOgqI3M87hcq-AAM6XBQ,28286
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
24
24
|
modal/client.py,sha256=U-YKSw0n7J1ZLREt9cbEJCtmHe5YoPKFxl0xlkan2yc,15565
|
25
|
-
modal/client.pyi,sha256=
|
25
|
+
modal/client.pyi,sha256=NnTxo1sF21qWO_wYJKpT1ISjiX75dL0P4E4o-JomYaw,7593
|
26
26
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
27
27
|
modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
|
28
28
|
modal/cls.py,sha256=GvaNl8R5UsH7Vg88WEOyerdjvZEPK7xxi3nqHlyOW_c,33497
|
@@ -39,7 +39,7 @@ modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
|
|
39
39
|
modal/file_io.pyi,sha256=NTRft1tbPSWf9TlWVeZmTlgB5AZ_Zhu2srWIrWr7brk,9445
|
40
40
|
modal/file_pattern_matcher.py,sha256=trosX-Bp7dOubudN1bLLhRAoidWy1TcoaR4Pv8CedWw,6497
|
41
41
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
42
|
-
modal/functions.pyi,sha256=
|
42
|
+
modal/functions.pyi,sha256=xmxnIyhkNJk7VZdAVJnWpP9CVIvi9X5w8t-WrPOJnDc,14805
|
43
43
|
modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
|
44
44
|
modal/image.py,sha256=I-9_YZL0SSfnuGPywa3-4PlxDmJ-53p7ce3gP74SrOA,92877
|
45
45
|
modal/image.pyi,sha256=89zv12C1sFrJs7Es9SnX23_m208ASAdeNGCVTrhjzHI,25632
|
@@ -47,8 +47,8 @@ modal/io_streams.py,sha256=YDZVQSDv05DeXg5TwcucC9Rj5hQBx2GXdluan9rIUpw,15467
|
|
47
47
|
modal/io_streams.pyi,sha256=RpXIWFm6fQkLJRc1uxd0KkQ2wTLCB65jRlyGplU6CQE,5100
|
48
48
|
modal/mount.py,sha256=VruBgKrCXD_mmv7iXEfSYERQ3CwH7iqymA3v-5xLGMc,32685
|
49
49
|
modal/mount.pyi,sha256=CmHa7zKSxHA_7-vMQLnGfw_ZXvAvHlafvUEVJcQ1LQA,12535
|
50
|
-
modal/network_file_system.py,sha256=
|
51
|
-
modal/network_file_system.pyi,sha256=
|
50
|
+
modal/network_file_system.py,sha256=YjSv2j-pP4mTtAbxq26OO01xgOzuTy4ZNfMCG6K8k3M,14768
|
51
|
+
modal/network_file_system.pyi,sha256=fkSIj27UVkQtd7-msWQ-4y1Cvqp2XXq9MX_FzOCKHyk,8123
|
52
52
|
modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
|
53
53
|
modal/object.pyi,sha256=kyJkRQcVv3ct7zSAxvvXcuhBVeH914v80uSlqeS7cA4,5632
|
54
54
|
modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
|
@@ -65,7 +65,7 @@ modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
|
|
65
65
|
modal/runner.py,sha256=yK1mBkX1_ZKvvWLoe1e2mGehJSWs97Mpyglo9Oj5rQw,24783
|
66
66
|
modal/runner.pyi,sha256=HW2pvC_PLwg1Es_EkrfQgMZsktIr9zzVEtmjOVFG6Dw,5351
|
67
67
|
modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
|
68
|
-
modal/sandbox.py,sha256=
|
68
|
+
modal/sandbox.py,sha256=wM0-AWRJKwwREdUSLaSMn9yTbiWz5VAX9ahpVy0K0nU,32155
|
69
69
|
modal/sandbox.pyi,sha256=cLmSwI1ab-2DgEuXNf6S1PiK63wfUR9dHtxlZtSOuX8,22719
|
70
70
|
modal/schedule.py,sha256=0ZFpKs1bOxeo5n3HZjoL7OE2ktsb-_oGtq-WJEPO4tY,2615
|
71
71
|
modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
|
@@ -129,7 +129,7 @@ modal/cli/network_file_system.py,sha256=eq3JnwjbfFNsJodIyANHL06ByYc3BSavzdmu8C96
|
|
129
129
|
modal/cli/profile.py,sha256=0TYhgRSGUvQZ5LH9nkl6iZllEvAjDniES264dE57wOM,3201
|
130
130
|
modal/cli/queues.py,sha256=6gTu76dzBtPN5eQVsLrvQpuru5jI9ZCWK5Eh8J8XhaM,4498
|
131
131
|
modal/cli/run.py,sha256=DPa-yQ9o7vjqwvs_TAOvVJxS51yVn__ZGCnbkORL37g,23972
|
132
|
-
modal/cli/secret.py,sha256=
|
132
|
+
modal/cli/secret.py,sha256=Zfscah1gLi8vyMCxYgy1z9lpI-0xfVI_EjyV5ElkL8Q,4967
|
133
133
|
modal/cli/token.py,sha256=mxSgOWakXG6N71hQb1ko61XAR9ZGkTMZD-Txn7gmTac,1924
|
134
134
|
modal/cli/utils.py,sha256=hZmjyzcPjDnQSkLvycZD2LhGdcsfdZshs_rOU78EpvI,3717
|
135
135
|
modal/cli/volume.py,sha256=_PJ5Vn_prkLk_x1Lksx4kZySlKWqIn36T2Edd1-h7Mg,10497
|
@@ -145,7 +145,7 @@ modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddR
|
|
145
145
|
modal/requirements/PREVIEW.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
|
146
146
|
modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
|
147
147
|
modal/requirements/base-images.json,sha256=57vMSqzMbLBxw5tFWSaMiIkkVEps4JfX5PAtXGnkS4U,740
|
148
|
-
modal-0.74.
|
148
|
+
modal-0.74.22.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
149
149
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
150
150
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
151
151
|
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
@@ -170,9 +170,9 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
170
170
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
171
171
|
modal_version/__init__.py,sha256=m94xZNWIjH8oUtJk4l9xfovzDJede2o7X-q0MHVECtM,470
|
172
172
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
173
|
-
modal_version/_version_generated.py,sha256=
|
174
|
-
modal-0.74.
|
175
|
-
modal-0.74.
|
176
|
-
modal-0.74.
|
177
|
-
modal-0.74.
|
178
|
-
modal-0.74.
|
173
|
+
modal_version/_version_generated.py,sha256=_YHkedzYAaMz7etjva8YLF62tjGqxAGjl_wAiMAl640,149
|
174
|
+
modal-0.74.22.dist-info/METADATA,sha256=MssMtDGV-b1r-3_CVID4rkteD8bttMxjko4-RSH4XJs,2474
|
175
|
+
modal-0.74.22.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
176
|
+
modal-0.74.22.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
177
|
+
modal-0.74.22.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
178
|
+
modal-0.74.22.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|