modal 0.73.96__py3-none-any.whl → 0.73.97__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/client.pyi +2 -2
- modal/functions.pyi +6 -6
- modal/image.py +5 -2
- modal/image.pyi +17 -13
- modal/requirements/PREVIEW.txt +16 -0
- modal/requirements/base-images.json +5 -1
- {modal-0.73.96.dist-info → modal-0.73.97.dist-info}/METADATA +1 -1
- {modal-0.73.96.dist-info → modal-0.73.97.dist-info}/RECORD +13 -12
- modal_version/_version_generated.py +1 -1
- {modal-0.73.96.dist-info → modal-0.73.97.dist-info}/LICENSE +0 -0
- {modal-0.73.96.dist-info → modal-0.73.97.dist-info}/WHEEL +0 -0
- {modal-0.73.96.dist-info → modal-0.73.97.dist-info}/entry_points.txt +0 -0
- {modal-0.73.96.dist-info → modal-0.73.97.dist-info}/top_level.txt +0 -0
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.97"
|
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.97"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
modal/functions.pyi
CHANGED
@@ -198,11 +198,11 @@ class Function(
|
|
198
198
|
|
199
199
|
_call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
|
200
200
|
|
201
|
-
class __remote_spec(typing_extensions.Protocol[
|
201
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
202
202
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
203
203
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
|
204
204
|
|
205
|
-
remote: __remote_spec[modal._functions.
|
205
|
+
remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
206
206
|
|
207
207
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
208
208
|
def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
|
@@ -217,19 +217,19 @@ class Function(
|
|
217
217
|
self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
|
218
218
|
) -> modal._functions.OriginalReturnType: ...
|
219
219
|
|
220
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
220
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
221
221
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
222
222
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
223
223
|
|
224
224
|
_experimental_spawn: ___experimental_spawn_spec[
|
225
|
-
modal._functions.
|
225
|
+
modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
|
226
226
|
]
|
227
227
|
|
228
|
-
class __spawn_spec(typing_extensions.Protocol[
|
228
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
229
229
|
def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
230
230
|
async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
|
231
231
|
|
232
|
-
spawn: __spawn_spec[modal._functions.
|
232
|
+
spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
233
233
|
|
234
234
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
|
235
235
|
|
modal/image.py
CHANGED
@@ -56,13 +56,14 @@ if typing.TYPE_CHECKING:
|
|
56
56
|
import modal._functions
|
57
57
|
|
58
58
|
# This is used for both type checking and runtime validation
|
59
|
-
ImageBuilderVersion = Literal["2023.12", "2024.04", "2024.10"]
|
59
|
+
ImageBuilderVersion = Literal["2023.12", "2024.04", "2024.10", "PREVIEW"]
|
60
60
|
|
61
61
|
# Note: we also define supported Python versions via logic at the top of the package __init__.py
|
62
62
|
# so that we fail fast / clearly in unsupported containers. Additionally, we enumerate the supported
|
63
63
|
# Python versions in mount.py where we specify the "standalone Python versions" we create mounts for.
|
64
64
|
# Consider consolidating these multiple sources of truth?
|
65
65
|
SUPPORTED_PYTHON_SERIES: dict[ImageBuilderVersion, list[str]] = {
|
66
|
+
"PREVIEW": ["3.9", "3.10", "3.11", "3.12", "3.13"],
|
66
67
|
"2024.10": ["3.9", "3.10", "3.11", "3.12", "3.13"],
|
67
68
|
"2024.04": ["3.9", "3.10", "3.11", "3.12"],
|
68
69
|
"2023.12": ["3.9", "3.10", "3.11", "3.12"],
|
@@ -248,9 +249,11 @@ def _get_image_builder_version(server_version: ImageBuilderVersion) -> ImageBuil
|
|
248
249
|
update_suggestion = "your image builder version using the Modal dashboard"
|
249
250
|
else:
|
250
251
|
update_suggestion = "your client library (pip install --upgrade modal)"
|
252
|
+
preview_versions: set[ImageBuilderVersion] = {"PREVIEW"}
|
253
|
+
suggested_versions = supported_versions - preview_versions
|
251
254
|
raise VersionError(
|
252
255
|
"This version of the modal client supports the following image builder versions:"
|
253
|
-
f" {
|
256
|
+
f" {suggested_versions!r}."
|
254
257
|
f"\n\nYou are using {version!r}{version_source}."
|
255
258
|
f" Please update {update_suggestion}."
|
256
259
|
)
|
modal/image.pyi
CHANGED
@@ -16,7 +16,7 @@ import pathlib
|
|
16
16
|
import typing
|
17
17
|
import typing_extensions
|
18
18
|
|
19
|
-
ImageBuilderVersion = typing.Literal["2023.12", "2024.04", "2024.10"]
|
19
|
+
ImageBuilderVersion = typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"]
|
20
20
|
|
21
21
|
class _AutoDockerIgnoreSentinel:
|
22
22
|
def __repr__(self) -> str: ...
|
@@ -26,17 +26,21 @@ AUTO_DOCKERIGNORE: _AutoDockerIgnoreSentinel
|
|
26
26
|
|
27
27
|
def _validate_python_version(
|
28
28
|
python_version: typing.Optional[str],
|
29
|
-
builder_version: typing.Literal["2023.12", "2024.04", "2024.10"],
|
29
|
+
builder_version: typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"],
|
30
30
|
allow_micro_granularity: bool = True,
|
31
31
|
) -> str: ...
|
32
32
|
def _dockerhub_python_version(
|
33
|
-
builder_version: typing.Literal["2023.12", "2024.04", "2024.10"
|
33
|
+
builder_version: typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"],
|
34
|
+
python_version: typing.Optional[str] = None,
|
34
35
|
) -> str: ...
|
35
|
-
def _base_image_config(
|
36
|
+
def _base_image_config(
|
37
|
+
group: str, builder_version: typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"]
|
38
|
+
) -> typing.Any: ...
|
36
39
|
def _get_modal_requirements_path(
|
37
|
-
builder_version: typing.Literal["2023.12", "2024.04", "2024.10"
|
40
|
+
builder_version: typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"],
|
41
|
+
python_version: typing.Optional[str] = None,
|
38
42
|
) -> str: ...
|
39
|
-
def _get_modal_requirements_command(version: typing.Literal["2023.12", "2024.04", "2024.10"]) -> str: ...
|
43
|
+
def _get_modal_requirements_command(version: typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"]) -> str: ...
|
40
44
|
def _flatten_str_args(
|
41
45
|
function_name: str, arg_name: str, args: collections.abc.Sequence[typing.Union[str, list[str]]]
|
42
46
|
) -> list[str]: ...
|
@@ -50,8 +54,8 @@ def _make_pip_install_args(
|
|
50
54
|
extra_options: str = "",
|
51
55
|
) -> str: ...
|
52
56
|
def _get_image_builder_version(
|
53
|
-
server_version: typing.Literal["2023.12", "2024.04", "2024.10"],
|
54
|
-
) -> typing.Literal["2023.12", "2024.04", "2024.10"]: ...
|
57
|
+
server_version: typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"],
|
58
|
+
) -> typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"]: ...
|
55
59
|
def _create_context_mount(
|
56
60
|
docker_commands: collections.abc.Sequence[str],
|
57
61
|
ignore_fn: collections.abc.Callable[[pathlib.Path], bool],
|
@@ -100,7 +104,7 @@ class _Image(modal._object._Object):
|
|
100
104
|
*,
|
101
105
|
base_images: typing.Optional[dict[str, _Image]] = None,
|
102
106
|
dockerfile_function: typing.Optional[
|
103
|
-
collections.abc.Callable[[typing.Literal["2023.12", "2024.04", "2024.10"]], DockerfileSpec]
|
107
|
+
collections.abc.Callable[[typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"]], DockerfileSpec]
|
104
108
|
] = None,
|
105
109
|
secrets: typing.Optional[collections.abc.Sequence[modal.secret._Secret]] = None,
|
106
110
|
gpu_config: typing.Optional[modal_proto.api_pb2.GPUConfig] = None,
|
@@ -246,7 +250,7 @@ class _Image(modal._object._Object):
|
|
246
250
|
@staticmethod
|
247
251
|
def _registry_setup_commands(
|
248
252
|
tag: str,
|
249
|
-
builder_version: typing.Literal["2023.12", "2024.04", "2024.10"],
|
253
|
+
builder_version: typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"],
|
250
254
|
setup_commands: list[str],
|
251
255
|
add_python: typing.Optional[str] = None,
|
252
256
|
) -> list[str]: ...
|
@@ -354,7 +358,7 @@ class Image(modal.object.Object):
|
|
354
358
|
*,
|
355
359
|
base_images: typing.Optional[dict[str, Image]] = None,
|
356
360
|
dockerfile_function: typing.Optional[
|
357
|
-
collections.abc.Callable[[typing.Literal["2023.12", "2024.04", "2024.10"]], DockerfileSpec]
|
361
|
+
collections.abc.Callable[[typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"]], DockerfileSpec]
|
358
362
|
] = None,
|
359
363
|
secrets: typing.Optional[collections.abc.Sequence[modal.secret.Secret]] = None,
|
360
364
|
gpu_config: typing.Optional[modal_proto.api_pb2.GPUConfig] = None,
|
@@ -505,7 +509,7 @@ class Image(modal.object.Object):
|
|
505
509
|
@staticmethod
|
506
510
|
def _registry_setup_commands(
|
507
511
|
tag: str,
|
508
|
-
builder_version: typing.Literal["2023.12", "2024.04", "2024.10"],
|
512
|
+
builder_version: typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"],
|
509
513
|
setup_commands: list[str],
|
510
514
|
add_python: typing.Optional[str] = None,
|
511
515
|
) -> list[str]: ...
|
@@ -595,4 +599,4 @@ class Image(modal.object.Object):
|
|
595
599
|
|
596
600
|
_logs: ___logs_spec[typing_extensions.Self]
|
597
601
|
|
598
|
-
SUPPORTED_PYTHON_SERIES: dict[typing.Literal["2023.12", "2024.04", "2024.10"], list[str]]
|
602
|
+
SUPPORTED_PYTHON_SERIES: dict[typing.Literal["2023.12", "2024.04", "2024.10", "PREVIEW"], list[str]]
|
@@ -0,0 +1,16 @@
|
|
1
|
+
aiohappyeyeballs==2.4.3
|
2
|
+
aiohttp==3.10.8
|
3
|
+
aiosignal==1.3.1
|
4
|
+
async-timeout==4.0.3 ; python_version < "3.11"
|
5
|
+
attrs==24.2.0
|
6
|
+
certifi==2024.8.30
|
7
|
+
frozenlist==1.4.1
|
8
|
+
grpclib==0.4.7
|
9
|
+
h2==4.1.0
|
10
|
+
hpack==4.0.0
|
11
|
+
hyperframe==6.0.1
|
12
|
+
idna==3.10
|
13
|
+
multidict==6.1.0
|
14
|
+
protobuf>=3.20,<6
|
15
|
+
typing_extensions==4.12.2
|
16
|
+
yarl==1.13.1
|
@@ -1,22 +1,26 @@
|
|
1
1
|
{
|
2
2
|
"debian": {
|
3
|
+
"PREVIEW": "bookworm",
|
3
4
|
"2024.10": "bookworm",
|
4
5
|
"2024.04": "bookworm",
|
5
6
|
"2023.12": "bullseye"
|
6
7
|
},
|
7
8
|
"python": {
|
9
|
+
"PREVIEW": ["3.9.20", "3.10.15", "3.11.10", "3.12.6", "3.13.0"],
|
8
10
|
"2024.10": ["3.9.20", "3.10.15", "3.11.10", "3.12.6", "3.13.0"],
|
9
11
|
"2024.04": ["3.9.19", "3.10.14", "3.11.8", "3.12.2"],
|
10
12
|
"2023.12": ["3.9.15", "3.10.8", "3.11.0", "3.12.1"]
|
11
13
|
},
|
12
14
|
"micromamba": {
|
15
|
+
"PREVIEW": "1.5.10",
|
13
16
|
"2024.10": "1.5.10",
|
14
17
|
"2024.04": "1.5.8",
|
15
18
|
"2023.12": "1.3.1"
|
16
19
|
},
|
17
20
|
"package_tools": {
|
21
|
+
"PREVIEW": "pip wheel uv",
|
18
22
|
"2024.10": "pip wheel uv",
|
19
23
|
"2024.04": "pip wheel uv",
|
20
24
|
"2023.12": "pip"
|
21
25
|
}
|
22
|
-
}
|
26
|
+
}
|
@@ -22,7 +22,7 @@ modal/app.py,sha256=ojhuLZuNZAQ1OsbDH0k6G4pm1W7bOIvZfXbaKlvQ-Ao,45622
|
|
22
22
|
modal/app.pyi,sha256=tZFbcsu20SuvfB2puxCyuXLFNJ9bQulzag55rVpgZmc,26827
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
24
24
|
modal/client.py,sha256=j9D3hNis1lfhnz9lVFGgJgowbH3PaGUzNKgHPWYG778,15372
|
25
|
-
modal/client.pyi,sha256=
|
25
|
+
modal/client.pyi,sha256=r4hv31JcXvoGh2VhVQG2N3wqeQMyWnD5sq25f-eTZ0c,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=JhDbaZZHN52lqA_roY1BCbcN9BvbkUcdXiM2Kg9lIc0,31717
|
@@ -41,10 +41,10 @@ modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
|
|
41
41
|
modal/file_io.pyi,sha256=NTRft1tbPSWf9TlWVeZmTlgB5AZ_Zhu2srWIrWr7brk,9445
|
42
42
|
modal/file_pattern_matcher.py,sha256=trosX-Bp7dOubudN1bLLhRAoidWy1TcoaR4Pv8CedWw,6497
|
43
43
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
44
|
-
modal/functions.pyi,sha256=
|
44
|
+
modal/functions.pyi,sha256=ujc6eIYyNmMn__4dpxEy85-vZmAniZv56D2A4uBgs6U,14377
|
45
45
|
modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
|
46
|
-
modal/image.py,sha256=
|
47
|
-
modal/image.pyi,sha256=
|
46
|
+
modal/image.py,sha256=fWamISDhtUo-DRtIn9c8aevNE78HafOlG9Rn-otUZv8,90800
|
47
|
+
modal/image.pyi,sha256=Im_ap8E2oxDXA6uHQExKtH0KlB17gg6dfgAaJwW38ts,25163
|
48
48
|
modal/io_streams.py,sha256=QkQiizKRzd5bnbKQsap31LJgBYlAnj4-XkV_50xPYX0,15079
|
49
49
|
modal/io_streams.pyi,sha256=bJ7ZLmSmJ0nKoa6r4FJpbqvzdUVa0lEe0Fa-MMpMezU,5071
|
50
50
|
modal/mount.py,sha256=JII0zTS1fPCcCbZgO18okkOuTDqYCxY1DIVa6i1E9cI,32196
|
@@ -142,8 +142,9 @@ modal/requirements/2023.12.312.txt,sha256=zWWUVgVQ92GXBKNYYr2-5vn9rlnXcmkqlwlX5u
|
|
142
142
|
modal/requirements/2023.12.txt,sha256=OjsbXFkCSdkzzryZP82Q73osr5wxQ6EUzmGcK7twfkA,502
|
143
143
|
modal/requirements/2024.04.txt,sha256=6NnrbIE-mflwMyKyQ0tsWeY8XFE1kSW9oE8DVDoD8QU,544
|
144
144
|
modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
|
145
|
+
modal/requirements/PREVIEW.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
|
145
146
|
modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
|
146
|
-
modal/requirements/base-images.json,sha256=
|
147
|
+
modal/requirements/base-images.json,sha256=57vMSqzMbLBxw5tFWSaMiIkkVEps4JfX5PAtXGnkS4U,740
|
147
148
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
148
149
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
149
150
|
modal_docs/gen_reference_docs.py,sha256=cvTgltucqYLLIX84QxAwf51Z5Vc2n6cLxS8VcrxNCAo,6401
|
@@ -168,10 +169,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
168
169
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
169
170
|
modal_version/__init__.py,sha256=wiJQ53c-OMs0Xf1UeXOxQ7FwlV1VzIjnX6o-pRYZ_Pk,470
|
170
171
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
171
|
-
modal_version/_version_generated.py,sha256=
|
172
|
-
modal-0.73.
|
173
|
-
modal-0.73.
|
174
|
-
modal-0.73.
|
175
|
-
modal-0.73.
|
176
|
-
modal-0.73.
|
177
|
-
modal-0.73.
|
172
|
+
modal_version/_version_generated.py,sha256=GXWojmBCCsRL7QfI6BI5GdzQMmMkGm1XDHdo0VvPKlw,149
|
173
|
+
modal-0.73.97.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
174
|
+
modal-0.73.97.dist-info/METADATA,sha256=pptO1KPZXxSNZWFtlYfC5qiB7oeOGtB2jNIzRA55-jU,2452
|
175
|
+
modal-0.73.97.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
176
|
+
modal-0.73.97.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
177
|
+
modal-0.73.97.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
178
|
+
modal-0.73.97.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|