modal 0.72.43__py3-none-any.whl → 0.72.45__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/app.py +3 -3
- modal/client.pyi +2 -2
- modal/functions.pyi +6 -6
- modal/gpu.py +6 -8
- {modal-0.72.43.dist-info → modal-0.72.45.dist-info}/METADATA +1 -1
- {modal-0.72.43.dist-info → modal-0.72.45.dist-info}/RECORD +11 -11
- modal_version/_version_generated.py +1 -1
- {modal-0.72.43.dist-info → modal-0.72.45.dist-info}/LICENSE +0 -0
- {modal-0.72.43.dist-info → modal-0.72.45.dist-info}/WHEEL +0 -0
- {modal-0.72.43.dist-info → modal-0.72.45.dist-info}/entry_points.txt +0 -0
- {modal-0.72.43.dist-info → modal-0.72.45.dist-info}/top_level.txt +0 -0
modal/app.py
CHANGED
@@ -211,12 +211,12 @@ class _App:
|
|
211
211
|
self._name = name
|
212
212
|
self._description = name
|
213
213
|
|
214
|
-
check_sequence(mounts, _Mount, "`mounts=` has to be a list or tuple of Mount objects")
|
215
|
-
check_sequence(secrets, _Secret, "`secrets=` has to be a list or tuple of Secret objects")
|
214
|
+
check_sequence(mounts, _Mount, "`mounts=` has to be a list or tuple of `modal.Mount` objects")
|
215
|
+
check_sequence(secrets, _Secret, "`secrets=` has to be a list or tuple of `modal.Secret` objects")
|
216
216
|
validate_volumes(volumes)
|
217
217
|
|
218
218
|
if image is not None and not isinstance(image, _Image):
|
219
|
-
raise InvalidError("image has to be a modal
|
219
|
+
raise InvalidError("`image=` has to be a `modal.Image` object")
|
220
220
|
|
221
221
|
self._functions = {}
|
222
222
|
self._classes = {}
|
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.72.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.72.45"
|
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.72.
|
88
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.72.45"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
modal/functions.pyi
CHANGED
@@ -465,11 +465,11 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
|
|
465
465
|
|
466
466
|
_call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
|
467
467
|
|
468
|
-
class __remote_spec(typing_extensions.Protocol[
|
468
|
+
class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
469
469
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
470
470
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
471
471
|
|
472
|
-
remote: __remote_spec[
|
472
|
+
remote: __remote_spec[ReturnType, P, typing_extensions.Self]
|
473
473
|
|
474
474
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
475
475
|
def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
|
@@ -482,17 +482,17 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
|
|
482
482
|
def _get_obj(self) -> typing.Optional[modal.cls.Obj]: ...
|
483
483
|
def local(self, *args: P.args, **kwargs: P.kwargs) -> OriginalReturnType: ...
|
484
484
|
|
485
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
485
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
486
486
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
487
487
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
488
488
|
|
489
|
-
_experimental_spawn: ___experimental_spawn_spec[
|
489
|
+
_experimental_spawn: ___experimental_spawn_spec[ReturnType, P, typing_extensions.Self]
|
490
490
|
|
491
|
-
class __spawn_spec(typing_extensions.Protocol[
|
491
|
+
class __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
|
-
spawn: __spawn_spec[
|
495
|
+
spawn: __spawn_spec[ReturnType, P, typing_extensions.Self]
|
496
496
|
|
497
497
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
|
498
498
|
|
modal/gpu.py
CHANGED
@@ -28,7 +28,7 @@ class T4(_GPUConfig):
|
|
28
28
|
"""
|
29
29
|
[NVIDIA T4 Tensor Core](https://www.nvidia.com/en-us/data-center/tesla-t4/) GPU class.
|
30
30
|
|
31
|
-
A low-cost data center GPU based on the Turing architecture, providing
|
31
|
+
A low-cost data center GPU based on the Turing architecture, providing 16GB of GPU memory.
|
32
32
|
"""
|
33
33
|
|
34
34
|
def __init__(
|
@@ -45,7 +45,7 @@ class L4(_GPUConfig):
|
|
45
45
|
"""
|
46
46
|
[NVIDIA L4 Tensor Core](https://www.nvidia.com/en-us/data-center/l4/) GPU class.
|
47
47
|
|
48
|
-
A mid-tier data center GPU based on the Ada Lovelace architecture, providing
|
48
|
+
A mid-tier data center GPU based on the Ada Lovelace architecture, providing 24GB of GPU memory.
|
49
49
|
Includes RTX (ray tracing) support.
|
50
50
|
"""
|
51
51
|
|
@@ -63,23 +63,21 @@ class A100(_GPUConfig):
|
|
63
63
|
"""
|
64
64
|
[NVIDIA A100 Tensor Core](https://www.nvidia.com/en-us/data-center/a100/) GPU class.
|
65
65
|
|
66
|
-
The flagship data center GPU of the Ampere architecture. Available in
|
66
|
+
The flagship data center GPU of the Ampere architecture. Available in 40GB and 80GB GPU memory configurations.
|
67
67
|
"""
|
68
68
|
|
69
69
|
def __init__(
|
70
70
|
self,
|
71
71
|
*,
|
72
72
|
count: int = 1, # Number of GPUs per container. Defaults to 1.
|
73
|
-
size: Union[str, None] = None, # Select
|
73
|
+
size: Union[str, None] = None, # Select GB configuration of GPU device: "40GB" or "80GB". Defaults to "40GB".
|
74
74
|
):
|
75
75
|
if size == "40GB" or not size:
|
76
76
|
super().__init__(api_pb2.GPU_TYPE_A100, count, "A100-40GB", 40)
|
77
77
|
elif size == "80GB":
|
78
78
|
super().__init__(api_pb2.GPU_TYPE_A100_80GB, count, "A100-80GB", 80)
|
79
79
|
else:
|
80
|
-
raise ValueError(
|
81
|
-
f"size='{size}' is invalid. A100s can only have memory values of 40GB or 80GB."
|
82
|
-
)
|
80
|
+
raise ValueError(f"size='{size}' is invalid. A100s can only have memory values of 40GB or 80GB.")
|
83
81
|
|
84
82
|
def __repr__(self):
|
85
83
|
if self.memory == 80:
|
@@ -92,7 +90,7 @@ class A10G(_GPUConfig):
|
|
92
90
|
"""
|
93
91
|
[NVIDIA A10G Tensor Core](https://www.nvidia.com/en-us/data-center/products/a10-gpu/) GPU class.
|
94
92
|
|
95
|
-
A mid-tier data center GPU based on the Ampere architecture, providing 24
|
93
|
+
A mid-tier data center GPU based on the Ampere architecture, providing 24 GB of memory.
|
96
94
|
A10G GPUs deliver up to 3.3x better ML training performance, 3x better ML inference performance,
|
97
95
|
and 3x better graphics performance, in comparison to NVIDIA T4 GPUs.
|
98
96
|
"""
|
@@ -16,11 +16,11 @@ modal/_traceback.py,sha256=IZQzB3fVlUfMHOSyKUgw0H6qv4yHnpyq-XVCNZKfUdA,5023
|
|
16
16
|
modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
|
17
17
|
modal/_tunnel.pyi,sha256=JmmDYAy9F1FpgJ_hWx0xkom2nTOFQjn4mTPYlU3PFo4,1245
|
18
18
|
modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
|
19
|
-
modal/app.py,sha256=
|
19
|
+
modal/app.py,sha256=mz-fmvaL4ND616rqGOi-ikAuQWCv2CKeR_HpviIurYc,45353
|
20
20
|
modal/app.pyi,sha256=aZJkeqsnsv72R7OTLXcifom0c-NBU6xgVhRc9yEt9nE,25760
|
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=-Oqla5V-DnYOk6N9Jf-fIMxKEXsAtNhL3ePQ4vQuRQo,7593
|
24
24
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
25
25
|
modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
|
26
26
|
modal/cls.py,sha256=xHgZZAmymplw0I2YZGAA8raBboixdNKKTrnsxQZI7G8,32159
|
@@ -39,8 +39,8 @@ 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=dSo7BMQGZBAuoBFOX-e_72HxmF3FLzjQlEtnGtJiaD4,6506
|
41
41
|
modal/functions.py,sha256=dUzTocLsL-Huw5dwqs8HCksiOqvGHSTiwnZJOlAluAA,68601
|
42
|
-
modal/functions.pyi,sha256=
|
43
|
-
modal/gpu.py,sha256=
|
42
|
+
modal/functions.pyi,sha256=X696JUlAbGTjxYIoHd0ga0V1_TsyIHxVvBUe-BQvzRo,26301
|
43
|
+
modal/gpu.py,sha256=2qZMNnoMrjU-5Bu7fx68pANUAKTtZq0EWEEeBA9OUVQ,7426
|
44
44
|
modal/image.py,sha256=leeY7fLfFjS0IqTi3D4cRxIDOb80BPtb3jsQfqvVJ8c,90912
|
45
45
|
modal/image.pyi,sha256=QMKS6E3CsZr5DoyNqGpcJPBYJTJZSvtAQIsAhPVd_E4,26347
|
46
46
|
modal/io_streams.py,sha256=QkQiizKRzd5bnbKQsap31LJgBYlAnj4-XkV_50xPYX0,15079
|
@@ -167,10 +167,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
167
167
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
168
168
|
modal_version/__init__.py,sha256=kGya2ZlItX2zB7oHORs-wvP4PG8lg_mtbi1QIK3G6SQ,470
|
169
169
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
170
|
-
modal_version/_version_generated.py,sha256=
|
171
|
-
modal-0.72.
|
172
|
-
modal-0.72.
|
173
|
-
modal-0.72.
|
174
|
-
modal-0.72.
|
175
|
-
modal-0.72.
|
176
|
-
modal-0.72.
|
170
|
+
modal_version/_version_generated.py,sha256=w3FizzJf6S6yRuy7BrJwEDWOlFdTpxh2EDn2a0q_02U,149
|
171
|
+
modal-0.72.45.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
172
|
+
modal-0.72.45.dist-info/METADATA,sha256=W3ku7Hjc8BGZPz8E1Ck1hS8aqIbu_0grQWHIxTM5QZA,2329
|
173
|
+
modal-0.72.45.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
174
|
+
modal-0.72.45.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
175
|
+
modal-0.72.45.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
|
176
|
+
modal-0.72.45.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|