modal 0.74.16__py3-none-any.whl → 0.74.18__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 -14
- modal/app.py +73 -11
- modal/app.pyi +28 -0
- modal/cli/run.py +11 -2
- modal/client.pyi +2 -2
- modal/functions.pyi +6 -6
- modal/runner.py +11 -24
- {modal-0.74.16.dist-info → modal-0.74.18.dist-info}/METADATA +1 -1
- {modal-0.74.16.dist-info → modal-0.74.18.dist-info}/RECORD +15 -15
- modal_docs/gen_reference_docs.py +0 -1
- modal_version/_version_generated.py +1 -1
- {modal-0.74.16.dist-info → modal-0.74.18.dist-info}/WHEEL +0 -0
- {modal-0.74.16.dist-info → modal-0.74.18.dist-info}/entry_points.txt +0 -0
- {modal-0.74.16.dist-info → modal-0.74.18.dist-info}/licenses/LICENSE +0 -0
- {modal-0.74.16.dist-info → modal-0.74.18.dist-info}/top_level.txt +0 -0
modal/_functions.py
CHANGED
@@ -970,20 +970,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
970
970
|
parent = self
|
971
971
|
|
972
972
|
async def _load(param_bound_func: _Function, resolver: Resolver, existing_object_id: Optional[str]):
|
973
|
-
|
974
|
-
identity = f"{parent.info.function_name} class service function"
|
975
|
-
except Exception:
|
976
|
-
# Can't always look up the function name that way, so fall back to generic message
|
977
|
-
identity = "class service function for a parametrized class"
|
978
|
-
if not parent.is_hydrated:
|
979
|
-
if parent.app._running_app is None:
|
980
|
-
reason = ", because the App it is defined on is not running"
|
981
|
-
else:
|
982
|
-
reason = ""
|
983
|
-
raise ExecutionError(
|
984
|
-
f"The {identity} has not been hydrated with the metadata it needs to run on Modal{reason}."
|
985
|
-
)
|
986
|
-
|
973
|
+
await parent.hydrate()
|
987
974
|
assert parent._client and parent._client.stub
|
988
975
|
|
989
976
|
if (
|
modal/app.py
CHANGED
@@ -333,11 +333,11 @@ class _App:
|
|
333
333
|
interactive: bool = False,
|
334
334
|
environment_name: Optional[str] = None,
|
335
335
|
) -> AsyncGenerator["_App", None]:
|
336
|
-
"""Context manager that runs an app on Modal.
|
336
|
+
"""Context manager that runs an ephemeral app on Modal.
|
337
337
|
|
338
338
|
Use this as the main entry point for your Modal application. All calls
|
339
|
-
to Modal
|
340
|
-
manager, and they will correspond to the current
|
339
|
+
to Modal Functions should be made within the scope of this context
|
340
|
+
manager, and they will correspond to the current App.
|
341
341
|
|
342
342
|
**Example**
|
343
343
|
|
@@ -346,7 +346,7 @@ class _App:
|
|
346
346
|
some_modal_function.remote()
|
347
347
|
```
|
348
348
|
|
349
|
-
To enable output printing, use `modal.enable_output()`:
|
349
|
+
To enable output printing (i.e., to see App logs), use `modal.enable_output()`:
|
350
350
|
|
351
351
|
```python notest
|
352
352
|
with modal.enable_output():
|
@@ -354,10 +354,10 @@ class _App:
|
|
354
354
|
some_modal_function.remote()
|
355
355
|
```
|
356
356
|
|
357
|
-
Note that you
|
358
|
-
Modal
|
359
|
-
or
|
360
|
-
|
357
|
+
Note that you should not invoke this in global scope of a file where you have
|
358
|
+
Modal Functions or Classes defined, since that would run the block when the Function
|
359
|
+
or Cls is imported in your containers as well. If you want to run it as your entrypoint,
|
360
|
+
consider protecting it:
|
361
361
|
|
362
362
|
```python
|
363
363
|
if __name__ == "__main__":
|
@@ -371,9 +371,6 @@ class _App:
|
|
371
371
|
python app_module.py
|
372
372
|
```
|
373
373
|
|
374
|
-
Note that this method used to return a separate "App" object. This is
|
375
|
-
no longer useful since you can use the app itself for access to all
|
376
|
-
objects. For backwards compatibility reasons, it returns the same app.
|
377
374
|
"""
|
378
375
|
from .runner import _run_app # Defer import of runner.py, which imports a lot from Rich
|
379
376
|
|
@@ -392,6 +389,71 @@ class _App:
|
|
392
389
|
):
|
393
390
|
yield self
|
394
391
|
|
392
|
+
async def deploy(
|
393
|
+
self,
|
394
|
+
*,
|
395
|
+
name: Optional[str] = None, # Name for the deployment, overriding any set on the App
|
396
|
+
environment_name: Optional[str] = None, # Environment to deploy the App in
|
397
|
+
tag: str = "", # Optional metadata that will be visible in the deployment history
|
398
|
+
client: Optional[_Client] = None, # Alternate client to use for RPCs
|
399
|
+
) -> typing_extensions.Self:
|
400
|
+
"""Deploy the App so that it is available persistently.
|
401
|
+
|
402
|
+
Deployed Apps will be avaible for lookup or web-based invocations until they are stopped.
|
403
|
+
Unlike with `App.run`, this method will return as soon as the deployment completes.
|
404
|
+
|
405
|
+
This method is a programmatic alternative to the `modal deploy` CLI command.
|
406
|
+
|
407
|
+
Examples:
|
408
|
+
|
409
|
+
```python notest
|
410
|
+
app = App("my-app")
|
411
|
+
app.deploy()
|
412
|
+
```
|
413
|
+
|
414
|
+
To enable output printing (i.e., to see build logs), use `modal.enable_output()`:
|
415
|
+
|
416
|
+
```python notest
|
417
|
+
app = App("my-app")
|
418
|
+
with modal.enable_output():
|
419
|
+
app.deploy()
|
420
|
+
```
|
421
|
+
|
422
|
+
Unlike with `App.run`, Function logs will not stream back to the local client after the
|
423
|
+
App is deployed.
|
424
|
+
|
425
|
+
Note that you should not invoke this method in global scope, as that would redeploy
|
426
|
+
the App every time the file is imported. If you want to write a programmatic deployment
|
427
|
+
script, protect this call so that it only runs when the file is executed directly:
|
428
|
+
|
429
|
+
```python notest
|
430
|
+
if __name__ == "__main__":
|
431
|
+
with modal.enable_output():
|
432
|
+
app.deploy()
|
433
|
+
```
|
434
|
+
|
435
|
+
Then you can deploy your app with:
|
436
|
+
|
437
|
+
```shell
|
438
|
+
python app_module.py
|
439
|
+
```
|
440
|
+
|
441
|
+
"""
|
442
|
+
from .runner import _deploy_app # Defer import of runner.py, which imports a lot from Rich
|
443
|
+
|
444
|
+
if name is None and self._name is None:
|
445
|
+
raise InvalidError(
|
446
|
+
"You need to either supply a deployment name or have a name set on the app.\n"
|
447
|
+
"\n"
|
448
|
+
"Examples:\n"
|
449
|
+
'app.deploy(name="some-name")\n\n'
|
450
|
+
"or\n"
|
451
|
+
'app = modal.App("some-name")'
|
452
|
+
)
|
453
|
+
result = await _deploy_app(self, name=name, environment_name=environment_name, tag=tag, client=client)
|
454
|
+
self._app_id = result.app_id
|
455
|
+
return self
|
456
|
+
|
395
457
|
def _get_default_image(self):
|
396
458
|
if self._image:
|
397
459
|
return self._image
|
modal/app.pyi
CHANGED
@@ -137,6 +137,14 @@ class _App:
|
|
137
137
|
interactive: bool = False,
|
138
138
|
environment_name: typing.Optional[str] = None,
|
139
139
|
) -> typing.AsyncContextManager[_App]: ...
|
140
|
+
async def deploy(
|
141
|
+
self,
|
142
|
+
*,
|
143
|
+
name: typing.Optional[str] = None,
|
144
|
+
environment_name: typing.Optional[str] = None,
|
145
|
+
tag: str = "",
|
146
|
+
client: typing.Optional[modal.client._Client] = None,
|
147
|
+
) -> typing_extensions.Self: ...
|
140
148
|
def _get_default_image(self): ...
|
141
149
|
def _get_watch_mounts(self): ...
|
142
150
|
def _add_function(self, function: modal._functions._Function, is_web_endpoint: bool): ...
|
@@ -379,6 +387,26 @@ class App:
|
|
379
387
|
|
380
388
|
run: __run_spec[typing_extensions.Self]
|
381
389
|
|
390
|
+
class __deploy_spec(typing_extensions.Protocol[SUPERSELF]):
|
391
|
+
def __call__(
|
392
|
+
self,
|
393
|
+
*,
|
394
|
+
name: typing.Optional[str] = None,
|
395
|
+
environment_name: typing.Optional[str] = None,
|
396
|
+
tag: str = "",
|
397
|
+
client: typing.Optional[modal.client.Client] = None,
|
398
|
+
) -> SUPERSELF: ...
|
399
|
+
async def aio(
|
400
|
+
self,
|
401
|
+
*,
|
402
|
+
name: typing.Optional[str] = None,
|
403
|
+
environment_name: typing.Optional[str] = None,
|
404
|
+
tag: str = "",
|
405
|
+
client: typing.Optional[modal.client.Client] = None,
|
406
|
+
) -> SUPERSELF: ...
|
407
|
+
|
408
|
+
deploy: __deploy_spec[typing_extensions.Self]
|
409
|
+
|
382
410
|
def _get_default_image(self): ...
|
383
411
|
def _get_watch_mounts(self): ...
|
384
412
|
def _add_function(self, function: modal.functions.Function, is_web_endpoint: bool): ...
|
modal/cli/run.py
CHANGED
@@ -444,8 +444,17 @@ def deploy(
|
|
444
444
|
import_ref = parse_import_ref(app_ref, use_module_mode=use_module_mode)
|
445
445
|
app = import_app_from_ref(import_ref, base_cmd="modal deploy")
|
446
446
|
|
447
|
-
|
448
|
-
|
447
|
+
name = name or app.name or ""
|
448
|
+
if not name:
|
449
|
+
raise ExecutionError(
|
450
|
+
"You need to either supply an explicit deployment name on the command line "
|
451
|
+
"or have a name set on the app.\n"
|
452
|
+
"\n"
|
453
|
+
"Examples:\n"
|
454
|
+
'app = modal.App("some-name")'
|
455
|
+
"or\n"
|
456
|
+
"modal deploy ... --name=some-name"
|
457
|
+
)
|
449
458
|
|
450
459
|
with enable_output():
|
451
460
|
res = deploy_app(app, name=name, environment_name=env or "", tag=tag)
|
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.18"
|
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.18"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
modal/functions.pyi
CHANGED
@@ -201,11 +201,11 @@ class Function(
|
|
201
201
|
|
202
202
|
_call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
|
203
203
|
|
204
|
-
class __remote_spec(typing_extensions.Protocol[
|
204
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
205
205
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
206
206
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
207
207
|
|
208
|
-
remote: __remote_spec[modal._functions.
|
208
|
+
remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
209
209
|
|
210
210
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
211
211
|
def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
|
@@ -220,19 +220,19 @@ class Function(
|
|
220
220
|
self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
|
221
221
|
) -> modal._functions.OriginalReturnType: ...
|
222
222
|
|
223
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
223
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
224
224
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
225
225
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
226
226
|
|
227
227
|
_experimental_spawn: ___experimental_spawn_spec[
|
228
|
-
modal._functions.
|
228
|
+
modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
|
229
229
|
]
|
230
230
|
|
231
|
-
class __spawn_spec(typing_extensions.Protocol[
|
231
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
232
232
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
233
233
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
234
234
|
|
235
|
-
spawn: __spawn_spec[modal._functions.
|
235
|
+
spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
236
236
|
|
237
237
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
|
238
238
|
|
modal/runner.py
CHANGED
@@ -1,4 +1,9 @@
|
|
1
1
|
# Copyright Modal Labs 2025
|
2
|
+
"""Internal module for building and running Apps."""
|
3
|
+
# Note: While this is mostly internal code, the `modal.runner.deploy_app` function was
|
4
|
+
# the only way to programmatically deploy Apps for some time, so users have reached into here.
|
5
|
+
# We may eventually deprecate it from the public API, but for now we should keep that in mind.
|
6
|
+
|
2
7
|
import asyncio
|
3
8
|
import dataclasses
|
4
9
|
import os
|
@@ -473,40 +478,22 @@ async def _deploy_app(
|
|
473
478
|
environment_name: Optional[str] = None,
|
474
479
|
tag: str = "",
|
475
480
|
) -> DeployResult:
|
476
|
-
"""
|
477
|
-
|
478
|
-
Typically, using the command-line tool `modal deploy <module or script>`
|
479
|
-
should be used, instead of this method.
|
480
|
-
|
481
|
-
**Usage:**
|
482
|
-
|
483
|
-
```python
|
484
|
-
if __name__ == "__main__":
|
485
|
-
deploy_app(app)
|
486
|
-
```
|
487
|
-
|
488
|
-
Deployment has two primary purposes:
|
481
|
+
"""Internal function for deploying an App.
|
489
482
|
|
490
|
-
|
491
|
-
current app run. For schedules this enables headless "cron"-like
|
492
|
-
functionality where scheduled functions continue to be invoked after
|
493
|
-
the client has disconnected.
|
494
|
-
* Allows for certain kinds of these objects, _deployment objects_, to be
|
495
|
-
referred to and used by other apps.
|
483
|
+
Users should prefer the `modal deploy` CLI or the `App.deploy` method.
|
496
484
|
"""
|
497
485
|
if environment_name is None:
|
498
486
|
environment_name = typing.cast(str, config.get("environment"))
|
499
487
|
|
500
|
-
name = name or app.name
|
488
|
+
name = name or app.name or ""
|
501
489
|
if not name:
|
502
490
|
raise InvalidError(
|
503
|
-
"You need to either supply
|
504
|
-
"or have a name set on the app.\n"
|
491
|
+
"You need to either supply a deployment name or have a name set on the app.\n"
|
505
492
|
"\n"
|
506
493
|
"Examples:\n"
|
507
|
-
'
|
494
|
+
'modal.runner.deploy_app(app, name="some_name")\n\n'
|
508
495
|
"or\n"
|
509
|
-
'app = App("some-name")'
|
496
|
+
'app = modal.App("some-name")'
|
510
497
|
)
|
511
498
|
else:
|
512
499
|
check_object_name(name, "App")
|
@@ -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=fvPz6oksYkPujA5Q9Lr13OM6pp3H5o4RfwenA-hYwsA,74236
|
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=TnXw6EaejqwyJNawbtp177mG87ufJZClPoiIxO41Ioc,50664
|
22
|
+
modal/app.pyi,sha256=8oj9DpTHySHymjy6aSat6IG-z2FF77mx_ls1dGbt3Qg,28222
|
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=V01HBD7Tc43waqJ7UFMAfM8DUqpQ1ykK6YFix40r2Tw,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=2J7jPa2tQWhuUy67wg-MWvEx0rwrBNjX6UTEJbAUq_A,14855
|
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
|
@@ -62,7 +62,7 @@ modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
62
|
modal/queue.py,sha256=OIYmve1a4GTP54Vj2CcLatLPIAWToU7hWBNeu7IJiBY,18985
|
63
63
|
modal/queue.pyi,sha256=sgvELCK4bJXMZIZw7gllooGFZNipGjI3BT4rmUuyD9M,10282
|
64
64
|
modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
|
65
|
-
modal/runner.py,sha256=
|
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
68
|
modal/sandbox.py,sha256=CX42Rrso7a_Gz6fWEEu-OYzFsWanWOyBy9iQ4nAfAkg,32162
|
@@ -128,7 +128,7 @@ modal/cli/launch.py,sha256=0_sBu6bv2xJEPWi-rbGS6Ri9ggnkWQvrGlgpYSUBMyY,3097
|
|
128
128
|
modal/cli/network_file_system.py,sha256=eq3JnwjbfFNsJodIyANHL06ByYc3BSavzdmu8C96cHA,7948
|
129
129
|
modal/cli/profile.py,sha256=0TYhgRSGUvQZ5LH9nkl6iZllEvAjDniES264dE57wOM,3201
|
130
130
|
modal/cli/queues.py,sha256=6gTu76dzBtPN5eQVsLrvQpuru5jI9ZCWK5Eh8J8XhaM,4498
|
131
|
-
modal/cli/run.py,sha256=
|
131
|
+
modal/cli/run.py,sha256=DPa-yQ9o7vjqwvs_TAOvVJxS51yVn__ZGCnbkORL37g,23972
|
132
132
|
modal/cli/secret.py,sha256=WB_c-LE9-eDqleLpJxsJ9rZw62Eeza8ZFQFR10vNMEk,4197
|
133
133
|
modal/cli/token.py,sha256=mxSgOWakXG6N71hQb1ko61XAR9ZGkTMZD-Txn7gmTac,1924
|
134
134
|
modal/cli/utils.py,sha256=hZmjyzcPjDnQSkLvycZD2LhGdcsfdZshs_rOU78EpvI,3717
|
@@ -145,10 +145,10 @@ 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.18.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
|
-
modal_docs/gen_reference_docs.py,sha256=
|
151
|
+
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
152
152
|
modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
153
153
|
modal_docs/mdmd/mdmd.py,sha256=Irx49MCCTlBOP4FBdLR--JrpA3-WhsVeriq0LGgsRic,6232
|
154
154
|
modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
|
@@ -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=sDEMGagYevBxtO8fkB4otAix4cPGy9fBDX0x4nrDUn4,149
|
174
|
+
modal-0.74.18.dist-info/METADATA,sha256=RFCfJBy1rbDaUA-r0Rr0ns1KG_2hZzAlvRqsvtSd2uo,2474
|
175
|
+
modal-0.74.18.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
176
|
+
modal-0.74.18.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
177
|
+
modal-0.74.18.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
178
|
+
modal-0.74.18.dist-info/RECORD,,
|
modal_docs/gen_reference_docs.py
CHANGED
@@ -79,7 +79,6 @@ def run(output_dir: str = None):
|
|
79
79
|
("modal.call_graph", "modal.call_graph"),
|
80
80
|
("modal.container_process", "modal.container_process"),
|
81
81
|
("modal.gpu", "modal.gpu"),
|
82
|
-
("modal.runner", "modal.runner"),
|
83
82
|
("modal.io_streams", "modal.io_streams"),
|
84
83
|
("modal.file_io", "modal.file_io"),
|
85
84
|
]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|