modal 0.73.0__py3-none-any.whl → 0.73.2__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/_container_entrypoint.py +1 -1
- modal/_utils/function_utils.py +2 -2
- modal/_vendor/cloudpickle.py +1 -1
- modal/cli/import_refs.py +33 -11
- modal/client.pyi +2 -2
- modal/cls.py +3 -3
- modal/functions.py +1 -1
- modal/functions.pyi +6 -6
- modal/partial_function.py +1 -1
- {modal-0.73.0.dist-info → modal-0.73.2.dist-info}/METADATA +1 -1
- {modal-0.73.0.dist-info → modal-0.73.2.dist-info}/RECORD +16 -16
- modal_version/_version_generated.py +1 -1
- {modal-0.73.0.dist-info → modal-0.73.2.dist-info}/LICENSE +0 -0
- {modal-0.73.0.dist-info → modal-0.73.2.dist-info}/WHEEL +0 -0
- {modal-0.73.0.dist-info → modal-0.73.2.dist-info}/entry_points.txt +0 -0
- {modal-0.73.0.dist-info → modal-0.73.2.dist-info}/top_level.txt +0 -0
modal/_container_entrypoint.py
CHANGED
@@ -373,7 +373,7 @@ def call_lifecycle_functions(
|
|
373
373
|
"""Call function(s), can be sync or async, but any return values are ignored."""
|
374
374
|
with container_io_manager.handle_user_exception():
|
375
375
|
for func in funcs:
|
376
|
-
# We are deprecating
|
376
|
+
# We are deprecating parametrized exit methods but want to gracefully handle old code.
|
377
377
|
# We can remove this once the deprecation in the actual @exit decorator is enforced.
|
378
378
|
args = (None, None, None) if callable_has_non_self_params(func) else ()
|
379
379
|
# in case func is non-async, it's executed here and sigint will by default
|
modal/_utils/function_utils.py
CHANGED
@@ -289,8 +289,8 @@ class FunctionInfo:
|
|
289
289
|
if not _use_annotation_parameters(self.user_cls):
|
290
290
|
return api_pb2.ClassParameterInfo(format=api_pb2.ClassParameterInfo.PARAM_SERIALIZATION_FORMAT_PICKLE)
|
291
291
|
|
292
|
-
# annotation parameters trigger strictly typed
|
293
|
-
# which enables web endpoint for
|
292
|
+
# annotation parameters trigger strictly typed parametrization
|
293
|
+
# which enables web endpoint for parametrized classes
|
294
294
|
|
295
295
|
modal_parameters: list[api_pb2.ClassParameterSpec] = []
|
296
296
|
signature = _get_class_constructor_signature(self.user_cls)
|
modal/_vendor/cloudpickle.py
CHANGED
@@ -597,7 +597,7 @@ def _get_bases(typ):
|
|
597
597
|
if "__orig_bases__" in getattr(typ, "__dict__", {}):
|
598
598
|
# For generic types (see PEP 560)
|
599
599
|
# Note that simply checking `hasattr(typ, '__orig_bases__')` is not
|
600
|
-
# correct. Subclasses of a fully-
|
600
|
+
# correct. Subclasses of a fully-parametrized generic class does not
|
601
601
|
# have `__orig_bases__` defined, but `hasattr(typ, '__orig_bases__')`
|
602
602
|
# will return True because it's defined in the base class.
|
603
603
|
bases_attr = "__orig_bases__"
|
modal/cli/import_refs.py
CHANGED
@@ -109,6 +109,14 @@ class CLICommand:
|
|
109
109
|
names: list[str]
|
110
110
|
runnable: Runnable
|
111
111
|
is_web_endpoint: bool
|
112
|
+
priority: int
|
113
|
+
|
114
|
+
|
115
|
+
class AutoRunPriority:
|
116
|
+
MODULE_LOCAL_ENTRYPOINT = 0
|
117
|
+
MODULE_FUNCTION = 1
|
118
|
+
APP_LOCAL_ENTRYPOINT = 2
|
119
|
+
APP_FUNCTION = 3
|
112
120
|
|
113
121
|
|
114
122
|
def list_cli_commands(
|
@@ -127,17 +135,21 @@ def list_cli_commands(
|
|
127
135
|
apps = cast(list[tuple[str, App]], inspect.getmembers(module, lambda x: isinstance(x, App)))
|
128
136
|
|
129
137
|
all_runnables: dict[Runnable, list[str]] = defaultdict(list)
|
138
|
+
priorities: dict[Runnable, int] = defaultdict(lambda: AutoRunPriority.APP_FUNCTION)
|
130
139
|
for app_name, app in apps:
|
131
140
|
for name, local_entrypoint in app.registered_entrypoints.items():
|
132
141
|
all_runnables[local_entrypoint].append(f"{app_name}.{name}")
|
142
|
+
priorities[local_entrypoint] = AutoRunPriority.APP_LOCAL_ENTRYPOINT
|
133
143
|
for name, function in app.registered_functions.items():
|
134
144
|
if name.endswith(".*"):
|
135
145
|
continue
|
136
146
|
all_runnables[function].append(f"{app_name}.{name}")
|
147
|
+
priorities[function] = AutoRunPriority.APP_FUNCTION
|
137
148
|
for cls_name, cls in app.registered_classes.items():
|
138
149
|
for method_name in cls._get_method_names():
|
139
150
|
method_ref = MethodReference(cls, method_name)
|
140
151
|
all_runnables[method_ref].append(f"{app_name}.{cls_name}.{method_name}")
|
152
|
+
priorities[method_ref] = AutoRunPriority.APP_FUNCTION
|
141
153
|
|
142
154
|
# If any class or function is exported as a module level object, use that
|
143
155
|
# as the preferred name by putting it first in the list
|
@@ -150,8 +162,13 @@ def list_cli_commands(
|
|
150
162
|
for method_name in entity._get_method_names():
|
151
163
|
method_ref = MethodReference(entity, method_name)
|
152
164
|
all_runnables.setdefault(method_ref, []).insert(0, f"{name}.{method_name}")
|
153
|
-
|
165
|
+
priorities[method_ref] = AutoRunPriority.MODULE_FUNCTION
|
166
|
+
elif isinstance(entity, Function) and entity._is_local():
|
154
167
|
all_runnables.setdefault(entity, []).insert(0, name)
|
168
|
+
priorities[entity] = AutoRunPriority.MODULE_FUNCTION
|
169
|
+
elif isinstance(entity, LocalEntrypoint):
|
170
|
+
all_runnables.setdefault(entity, []).insert(0, name)
|
171
|
+
priorities[entity] = AutoRunPriority.MODULE_LOCAL_ENTRYPOINT
|
155
172
|
|
156
173
|
def _is_web_endpoint(runnable: Runnable) -> bool:
|
157
174
|
if isinstance(runnable, Function) and runnable._is_web_endpoint():
|
@@ -164,7 +181,10 @@ def list_cli_commands(
|
|
164
181
|
|
165
182
|
return False
|
166
183
|
|
167
|
-
return [
|
184
|
+
return [
|
185
|
+
CLICommand(names, runnable, _is_web_endpoint(runnable), priority=priorities[runnable])
|
186
|
+
for runnable, names in all_runnables.items()
|
187
|
+
]
|
168
188
|
|
169
189
|
|
170
190
|
def filter_cli_commands(
|
@@ -308,17 +328,19 @@ def import_and_filter(
|
|
308
328
|
filtered_commands = filter_cli_commands(
|
309
329
|
cli_commands, import_ref.object_path, accept_local_entrypoint, accept_webhook
|
310
330
|
)
|
331
|
+
|
311
332
|
all_usable_commands = filter_cli_commands(cli_commands, "", accept_local_entrypoint, accept_webhook)
|
312
333
|
|
313
|
-
if
|
314
|
-
|
315
|
-
|
334
|
+
if filtered_commands:
|
335
|
+
# if there is a single command with "highest run prio" - use that
|
336
|
+
filtered_commands_by_prio = defaultdict(list)
|
337
|
+
for cmd in filtered_commands:
|
338
|
+
filtered_commands_by_prio[cmd.priority].append(cmd)
|
316
339
|
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
# if there is a single local entrypoint - use that
|
322
|
-
return local_entrypoint_cmds[0].runnable, all_usable_commands
|
340
|
+
_, highest_prio_commands = min(filtered_commands_by_prio.items())
|
341
|
+
if len(highest_prio_commands) == 1:
|
342
|
+
cli_command = highest_prio_commands[0]
|
343
|
+
return cli_command.runnable, all_usable_commands
|
323
344
|
|
345
|
+
# otherwise, just return the list of all commands
|
324
346
|
return None, all_usable_commands
|
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.73.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.2"
|
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.73.
|
88
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.2"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
modal/cls.py
CHANGED
@@ -75,7 +75,7 @@ def _bind_instance_method(service_function: _Function, class_bound_method: _Func
|
|
75
75
|
"""Binds an "instance service function" to a specific method name.
|
76
76
|
This "dummy" _Function gets no unique object_id and isn't backend-backed at the moment, since all
|
77
77
|
it does it forward invocations to the underlying instance_service_function with the specified method,
|
78
|
-
and we don't support web_config for
|
78
|
+
and we don't support web_config for parametrized methods at the moment.
|
79
79
|
"""
|
80
80
|
# TODO(elias): refactor to not use `_from_loader()` as a crutch for lazy-loading the
|
81
81
|
# underlying instance_service_function. It's currently used in order to take advantage
|
@@ -90,7 +90,7 @@ def _bind_instance_method(service_function: _Function, class_bound_method: _Func
|
|
90
90
|
method_placeholder_fun._web_url = (
|
91
91
|
class_bound_method._web_url
|
92
92
|
) # TODO: this shouldn't be set when actual parameters are used
|
93
|
-
method_placeholder_fun._function_name = f"{class_bound_method._function_name}[
|
93
|
+
method_placeholder_fun._function_name = f"{class_bound_method._function_name}[parametrized]"
|
94
94
|
method_placeholder_fun._is_generator = class_bound_method._is_generator
|
95
95
|
method_placeholder_fun._cluster_size = class_bound_method._cluster_size
|
96
96
|
method_placeholder_fun._use_method_name = method_name
|
@@ -98,7 +98,7 @@ def _bind_instance_method(service_function: _Function, class_bound_method: _Func
|
|
98
98
|
|
99
99
|
async def _load(fun: "_Function", resolver: Resolver, existing_object_id: Optional[str]):
|
100
100
|
# there is currently no actual loading logic executed to create each method on
|
101
|
-
# the *
|
101
|
+
# the *parametrized* instance of a class - it uses the parameter-bound service-function
|
102
102
|
# for the instance. This load method just makes sure to set all attributes after the
|
103
103
|
# `service_function` has been loaded (it's in the `_deps`)
|
104
104
|
hydrate_from_instance_service_function(fun)
|
modal/functions.py
CHANGED
@@ -960,7 +960,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
960
960
|
identity = f"{parent.info.function_name} class service function"
|
961
961
|
except Exception:
|
962
962
|
# Can't always look up the function name that way, so fall back to generic message
|
963
|
-
identity = "class service function for a
|
963
|
+
identity = "class service function for a parametrized class"
|
964
964
|
if not parent.is_hydrated:
|
965
965
|
if parent.app._running_app is None:
|
966
966
|
reason = ", because the App it is defined on is not running"
|
modal/functions.pyi
CHANGED
@@ -471,11 +471,11 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
|
|
471
471
|
|
472
472
|
_call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
|
473
473
|
|
474
|
-
class __remote_spec(typing_extensions.Protocol[
|
474
|
+
class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
475
475
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
476
476
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
477
477
|
|
478
|
-
remote: __remote_spec[
|
478
|
+
remote: __remote_spec[ReturnType, P, typing_extensions.Self]
|
479
479
|
|
480
480
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
481
481
|
def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
|
@@ -488,17 +488,17 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
|
|
488
488
|
def _get_obj(self) -> typing.Optional[modal.cls.Obj]: ...
|
489
489
|
def local(self, *args: P.args, **kwargs: P.kwargs) -> OriginalReturnType: ...
|
490
490
|
|
491
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
491
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
492
492
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
493
493
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
494
494
|
|
495
|
-
_experimental_spawn: ___experimental_spawn_spec[
|
495
|
+
_experimental_spawn: ___experimental_spawn_spec[ReturnType, P, typing_extensions.Self]
|
496
496
|
|
497
|
-
class __spawn_spec(typing_extensions.Protocol[
|
497
|
+
class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
498
498
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
499
499
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
500
500
|
|
501
|
-
spawn: __spawn_spec[
|
501
|
+
spawn: __spawn_spec[ReturnType, P, typing_extensions.Self]
|
502
502
|
|
503
503
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
|
504
504
|
|
modal/partial_function.py
CHANGED
@@ -614,7 +614,7 @@ ExitHandlerType = Union[
|
|
614
614
|
# synchronicity type stubs would strip Awaitable so we use Any for now
|
615
615
|
# Original, __exit__ style method signature (now deprecated)
|
616
616
|
Callable[[Any, Optional[type[BaseException]], Optional[BaseException], Any], Any],
|
617
|
-
# Forward-looking
|
617
|
+
# Forward-looking unparametrized method
|
618
618
|
Callable[[Any], Any],
|
619
619
|
]
|
620
620
|
|
@@ -2,7 +2,7 @@ modal/__init__.py,sha256=df6aKAigSPFXnmIohWySf_1zZ9Gzgrb7-oprSbopD4w,2299
|
|
2
2
|
modal/__main__.py,sha256=scYhGFqh8OJcVDo-VOxIT6CCwxOgzgflYWMnIZiMRqE,2871
|
3
3
|
modal/_clustered_functions.py,sha256=kTf-9YBXY88NutC1akI-gCbvf01RhMPCw-zoOI_YIUE,2700
|
4
4
|
modal/_clustered_functions.pyi,sha256=vllkegc99A0jrUOWa8mdlSbdp6uz36TsHhGxysAOpaQ,771
|
5
|
-
modal/_container_entrypoint.py,sha256=
|
5
|
+
modal/_container_entrypoint.py,sha256=qahIuJvaMmWG85N5vNS1yuAQ9XZoo1ftzfatkos_q7I,29553
|
6
6
|
modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
|
7
7
|
modal/_location.py,sha256=S3lSxIU3h9HkWpkJ3Pwo0pqjIOSB1fjeSgUsY3x7eec,1202
|
8
8
|
modal/_object.py,sha256=ItQcsMNkz9Y3kdTsvfNarbW-paJ2qabDyQ7njaqY0XI,11359
|
@@ -20,10 +20,10 @@ modal/app.py,sha256=BEl90AuVlcrVlXKhM0wDFn1E8hewvbia9Qdq6SiT-FE,44225
|
|
20
20
|
modal/app.pyi,sha256=NnUpnKq5y5fM45F5cXLMZK5zVJZA9T_UKawloOXCVXE,25858
|
21
21
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
22
22
|
modal/client.py,sha256=8SQawr7P1PNUCq1UmJMUQXG2jIo4Nmdcs311XqrNLRE,15276
|
23
|
-
modal/client.pyi,sha256=
|
23
|
+
modal/client.pyi,sha256=FvwjAiLmNZM1wrVrCIuXxlm3PeZiQ3I980lWvf9yfnI,7591
|
24
24
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
25
25
|
modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
|
26
|
-
modal/cls.py,sha256=
|
26
|
+
modal/cls.py,sha256=DLgFTEAWUlIdhqOoF3cb1yzru3FiVpFTvEnPuwD5AQI,32680
|
27
27
|
modal/cls.pyi,sha256=LIoQrf96E2eZXTsO-o87jf2ppGAnYwQ8nVxsDmx7QHs,9040
|
28
28
|
modal/config.py,sha256=BzhZYUUwOmvVwf6x5kf0ywMC257s648dmuhsnB6g3gk,11041
|
29
29
|
modal/container_process.py,sha256=WTqLn01dJPVkPpwR_0w_JH96ceN5mV4TGtiu1ZR2RRA,6108
|
@@ -38,8 +38,8 @@ modal/experimental.pyi,sha256=24tIYu_w9RLwFrz1cIsgYuqmDCtV8eg6-bQNz3zjhDo,939
|
|
38
38
|
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=1cZ4V2wSLiaXqAqStETSwp3bzDD6QZOt6pmmjk3Okz4,6505
|
41
|
-
modal/functions.py,sha256=
|
42
|
-
modal/functions.pyi,sha256=
|
41
|
+
modal/functions.py,sha256=SCdDaPKzG6xZAXjzulXMENyfFD11Tq1KgefqqC_ADJY,69950
|
42
|
+
modal/functions.pyi,sha256=eHwUCC7wt_DkCWDnNKuL8LBc4JIRm-rzCOtdmdUgGKY,26641
|
43
43
|
modal/gpu.py,sha256=2qZMNnoMrjU-5Bu7fx68pANUAKTtZq0EWEEeBA9OUVQ,7426
|
44
44
|
modal/image.py,sha256=c6-RsdVDCscmfOoZI26gj8GvBBw1oVC18n8WaYKBWAw,90949
|
45
45
|
modal/image.pyi,sha256=QMKS6E3CsZr5DoyNqGpcJPBYJTJZSvtAQIsAhPVd_E4,26347
|
@@ -54,7 +54,7 @@ modal/object.pyi,sha256=kyJkRQcVv3ct7zSAxvvXcuhBVeH914v80uSlqeS7cA4,5632
|
|
54
54
|
modal/output.py,sha256=N0xf4qeudEaYrslzdAl35VKV8rapstgIM2e9wO8_iy0,1967
|
55
55
|
modal/parallel_map.py,sha256=POBTyiWabe2e4qBNlsjjksiu1AAPEsNqI-mM8cgNFco,16042
|
56
56
|
modal/parallel_map.pyi,sha256=0ltjcIpPUqPGGOWmHqzCfBu5y3ISjRZDrqOJhiNhfYk,2522
|
57
|
-
modal/partial_function.py,sha256=
|
57
|
+
modal/partial_function.py,sha256=_rPSY8glSN-pAdMfIfcfo2GE9rrydzDTrYUQGBVmXi0,28710
|
58
58
|
modal/partial_function.pyi,sha256=Dj4WDxbGkXjxAbucSBSqr2_vrNbEWEAwdXnMzh2d80Y,9905
|
59
59
|
modal/proxy.py,sha256=NrOevrWxG3G7-zlyRzG6BcIvop7AWLeyahZxitbBaOk,1418
|
60
60
|
modal/proxy.pyi,sha256=1OEKIVUyC-xb7fHMzngakQso0nTsK60TVhXtlcMj6Wk,390
|
@@ -93,7 +93,7 @@ modal/_utils/blob_utils.py,sha256=N66LtZI8PpCkZ7maA7GLW5CAmYUoNJdG-GjaAUR4_NQ,14
|
|
93
93
|
modal/_utils/bytes_io_segment_payload.py,sha256=uunxVJS4PE1LojF_UpURMzVK9GuvmYWRqQo_bxEj5TU,3385
|
94
94
|
modal/_utils/deprecation.py,sha256=dycySRBxyZf3ITzEqPNM6MxXTk9-0VVLA8oCPQ5j_Os,3426
|
95
95
|
modal/_utils/docker_utils.py,sha256=h1uETghR40mp_y3fSWuZAfbIASH1HMzuphJHghAL6DU,3722
|
96
|
-
modal/_utils/function_utils.py,sha256=
|
96
|
+
modal/_utils/function_utils.py,sha256=ue15TIvHiSSuuLQaGb3gJ5YmxdaFBhfE3Rt5frqIWhM,27185
|
97
97
|
modal/_utils/grpc_testing.py,sha256=H1zHqthv19eGPJz2HKXDyWXWGSqO4BRsxah3L5Xaa8A,8619
|
98
98
|
modal/_utils/grpc_utils.py,sha256=PPB5ay-vXencXNIWPVw5modr3EH7gfq2QPcO5YJ1lMU,7737
|
99
99
|
modal/_utils/hash_utils.py,sha256=zg3J6OGxTFGSFri1qQ12giDz90lWk8bzaxCTUCRtiX4,3034
|
@@ -107,7 +107,7 @@ modal/_utils/rand_pb_testing.py,sha256=mmVPk1rZldHwHZx0DnHTuHQlRLAiiAYdxjwEJpxvT
|
|
107
107
|
modal/_utils/shell_utils.py,sha256=hWHzv730Br2Xyj6cGPiMZ-198Z3RZuOu3pDXhFSZ22c,2157
|
108
108
|
modal/_vendor/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
109
109
|
modal/_vendor/a2wsgi_wsgi.py,sha256=Q1AsjpV_Q_vzQsz_cSqmP9jWzsGsB-ARFU6vpQYml8k,21878
|
110
|
-
modal/_vendor/cloudpickle.py,sha256=
|
110
|
+
modal/_vendor/cloudpickle.py,sha256=avxOIgNKqL9KyPNuIOVQzBm0D1l9ipeB4RrcUMUGmeQ,55216
|
111
111
|
modal/_vendor/tblib.py,sha256=g1O7QUDd3sDoLd8YPFltkXkih7r_fyZOjgmGuligv3s,9722
|
112
112
|
modal/cli/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
|
113
113
|
modal/cli/_download.py,sha256=t6BXZwjTd9MgznDvbsV8rp0FZWggdzC-lUAGZU4xx1g,3984
|
@@ -118,7 +118,7 @@ modal/cli/container.py,sha256=FYwEgjf93j4NMorAjGbSV98i1wpebqdAeNU1wfrFp1k,3668
|
|
118
118
|
modal/cli/dict.py,sha256=8Wq3w-UDaywk8EVNdj-ECCNV9TYHqh4kzhUqhhulatM,4593
|
119
119
|
modal/cli/entry_point.py,sha256=aaNxFAqZcmtSjwzkYIA_Ba9CkL4cL4_i2gy5VjoXxkM,4228
|
120
120
|
modal/cli/environment.py,sha256=Ayddkiq9jdj3XYDJ8ZmUqFpPPH8xajYlbexRkzGtUcg,4334
|
121
|
-
modal/cli/import_refs.py,sha256=
|
121
|
+
modal/cli/import_refs.py,sha256=YYseLJ6cU_wln7DjVWfKPgEhv77hxfA0klWAkTK_1HA,12672
|
122
122
|
modal/cli/launch.py,sha256=pzQt2QlcrbIUU0MVzWWPAvMQ6MCyqsHZ0X9JcV-sY04,3242
|
123
123
|
modal/cli/network_file_system.py,sha256=eq3JnwjbfFNsJodIyANHL06ByYc3BSavzdmu8C96cHA,7948
|
124
124
|
modal/cli/profile.py,sha256=rLXfjJObfPNjaZvNfHGIKqs7y9bGYyGe-K7V0w-Ni0M,3110
|
@@ -169,10 +169,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
169
169
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
170
170
|
modal_version/__init__.py,sha256=wiJQ53c-OMs0Xf1UeXOxQ7FwlV1VzIjnX6o-pRYZ_Pk,470
|
171
171
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
172
|
-
modal_version/_version_generated.py,sha256=
|
173
|
-
modal-0.73.
|
174
|
-
modal-0.73.
|
175
|
-
modal-0.73.
|
176
|
-
modal-0.73.
|
177
|
-
modal-0.73.
|
178
|
-
modal-0.73.
|
172
|
+
modal_version/_version_generated.py,sha256=C7SCtsGrjUfPyAf7v_S93_caxnusk8RliITZG0S9S48,148
|
173
|
+
modal-0.73.2.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
174
|
+
modal-0.73.2.dist-info/METADATA,sha256=fOtBQBc1qAuX2n9IN_MM4OPe4JkuIW0b5QyDHJlJQ4M,2328
|
175
|
+
modal-0.73.2.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
176
|
+
modal-0.73.2.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
177
|
+
modal-0.73.2.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
|
178
|
+
modal-0.73.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|