modal 1.0.6.dev1__py3-none-any.whl → 1.0.6.dev3__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.
Potentially problematic release.
This version of modal might be problematic. Click here for more details.
- modal/_object.py +10 -1
- modal/client.pyi +2 -2
- modal/image.py +16 -5
- modal/image.pyi +12 -2
- modal/object.pyi +4 -1
- {modal-1.0.6.dev1.dist-info → modal-1.0.6.dev3.dist-info}/METADATA +1 -1
- {modal-1.0.6.dev1.dist-info → modal-1.0.6.dev3.dist-info}/RECORD +12 -12
- modal_version/__init__.py +1 -1
- {modal-1.0.6.dev1.dist-info → modal-1.0.6.dev3.dist-info}/WHEEL +0 -0
- {modal-1.0.6.dev1.dist-info → modal-1.0.6.dev3.dist-info}/entry_points.txt +0 -0
- {modal-1.0.6.dev1.dist-info → modal-1.0.6.dev3.dist-info}/licenses/LICENSE +0 -0
- {modal-1.0.6.dev1.dist-info → modal-1.0.6.dev3.dist-info}/top_level.txt +0 -0
modal/_object.py
CHANGED
|
@@ -10,6 +10,7 @@ from typing_extensions import Self
|
|
|
10
10
|
|
|
11
11
|
from ._resolver import Resolver
|
|
12
12
|
from ._utils.async_utils import aclosing
|
|
13
|
+
from ._utils.deprecation import deprecation_warning
|
|
13
14
|
from .client import _Client
|
|
14
15
|
from .config import config, logger
|
|
15
16
|
from .exception import ExecutionError, InvalidError
|
|
@@ -134,7 +135,15 @@ class _Object:
|
|
|
134
135
|
)
|
|
135
136
|
|
|
136
137
|
def clone(self) -> Self:
|
|
137
|
-
"""mdmd:hidden Clone a given hydrated object.
|
|
138
|
+
"""mdmd:hidden Clone a given hydrated object.
|
|
139
|
+
|
|
140
|
+
Note: This is not intended to be public API and has no public use. It will be removed in a future release.
|
|
141
|
+
"""
|
|
142
|
+
object_class = self.__class__.__name__.strip("_")
|
|
143
|
+
deprecation_warning(
|
|
144
|
+
(2025, 6, 30),
|
|
145
|
+
f"{object_class}.clone() is not intended to be public API and will be removed in a future release.",
|
|
146
|
+
)
|
|
138
147
|
|
|
139
148
|
# Object to clone must already be hydrated, otherwise from_loader is more suitable.
|
|
140
149
|
self._validate_is_hydrated()
|
modal/client.pyi
CHANGED
|
@@ -31,7 +31,7 @@ class _Client:
|
|
|
31
31
|
server_url: str,
|
|
32
32
|
client_type: int,
|
|
33
33
|
credentials: typing.Optional[tuple[str, str]],
|
|
34
|
-
version: str = "1.0.6.
|
|
34
|
+
version: str = "1.0.6.dev3",
|
|
35
35
|
):
|
|
36
36
|
"""mdmd:hidden
|
|
37
37
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -160,7 +160,7 @@ class Client:
|
|
|
160
160
|
server_url: str,
|
|
161
161
|
client_type: int,
|
|
162
162
|
credentials: typing.Optional[tuple[str, str]],
|
|
163
|
-
version: str = "1.0.6.
|
|
163
|
+
version: str = "1.0.6.dev3",
|
|
164
164
|
):
|
|
165
165
|
"""mdmd:hidden
|
|
166
166
|
The Modal client object is not intended to be instantiated directly by users.
|
modal/image.py
CHANGED
|
@@ -416,7 +416,6 @@ class _Image(_Object, type_prefix="im"):
|
|
|
416
416
|
self.force_build = False
|
|
417
417
|
|
|
418
418
|
def _initialize_from_other(self, other: "_Image"):
|
|
419
|
-
# used by .clone()
|
|
420
419
|
self.inside_exceptions = other.inside_exceptions
|
|
421
420
|
self.force_build = other.force_build
|
|
422
421
|
self._serve_mounts = other._serve_mounts
|
|
@@ -1227,14 +1226,15 @@ class _Image(_Object, type_prefix="im"):
|
|
|
1227
1226
|
poetry_lockfile: Optional[str] = None, # Path to lockfile. If not provided, uses poetry.lock in same directory.
|
|
1228
1227
|
*,
|
|
1229
1228
|
ignore_lockfile: bool = False, # If set to True, do not use poetry.lock, even when present
|
|
1230
|
-
# If set to True, use old installer. See https://github.com/python-poetry/poetry/issues/3336
|
|
1231
|
-
old_installer: bool = False,
|
|
1232
1229
|
force_build: bool = False, # Ignore cached builds, similar to 'docker build --no-cache'
|
|
1233
1230
|
# Selected optional dependency groups to install (See https://python-poetry.org/docs/cli/#install)
|
|
1234
1231
|
with_: list[str] = [],
|
|
1235
1232
|
# Selected optional dependency groups to exclude (See https://python-poetry.org/docs/cli/#install)
|
|
1236
1233
|
without: list[str] = [],
|
|
1237
1234
|
only: list[str] = [], # Only install dependency groups specifed in this list.
|
|
1235
|
+
poetry_version: Optional[str] = "latest", # Version of poetry to install, or None to skip installation
|
|
1236
|
+
# If set to True, use old installer. See https://github.com/python-poetry/poetry/issues/3336
|
|
1237
|
+
old_installer: bool = False,
|
|
1238
1238
|
secrets: Sequence[_Secret] = [],
|
|
1239
1239
|
gpu: GPU_T = None,
|
|
1240
1240
|
) -> "_Image":
|
|
@@ -1245,12 +1245,22 @@ class _Image(_Object, type_prefix="im"):
|
|
|
1245
1245
|
|
|
1246
1246
|
Note that the root project of the poetry project is not installed, only the dependencies.
|
|
1247
1247
|
For including local python source files see `add_local_python_source`
|
|
1248
|
+
|
|
1249
|
+
Poetry will be installed to the Image (using pip) unless `poetry_version` is set to None.
|
|
1250
|
+
Note that the interpretation of `poetry_version="latest"` depends on the Modal Image Builder
|
|
1251
|
+
version, with versions 2024.10 and earlier limiting poetry to 1.x.
|
|
1248
1252
|
"""
|
|
1249
1253
|
|
|
1250
1254
|
def build_dockerfile(version: ImageBuilderVersion) -> DockerfileSpec:
|
|
1251
1255
|
context_files = {"/.pyproject.toml": os.path.expanduser(poetry_pyproject_toml)}
|
|
1252
1256
|
|
|
1253
|
-
commands = ["FROM base"
|
|
1257
|
+
commands = ["FROM base"]
|
|
1258
|
+
if poetry_version is not None:
|
|
1259
|
+
if poetry_version == "latest":
|
|
1260
|
+
poetry_spec = "~=1.7" if version <= "2024.10" else ""
|
|
1261
|
+
else:
|
|
1262
|
+
poetry_spec = f"=={poetry_version}" # TODO: support other versions
|
|
1263
|
+
commands += [f"RUN python -m pip install poetry{poetry_spec}"]
|
|
1254
1264
|
|
|
1255
1265
|
if old_installer:
|
|
1256
1266
|
commands += ["RUN poetry config experimental.new-installer false"]
|
|
@@ -1281,7 +1291,8 @@ class _Image(_Object, type_prefix="im"):
|
|
|
1281
1291
|
|
|
1282
1292
|
if only:
|
|
1283
1293
|
install_cmd += f" --only {','.join(only)}"
|
|
1284
|
-
|
|
1294
|
+
|
|
1295
|
+
install_cmd += " --compile" # Always compile .pyc during build; avoid recompiling on every cold start
|
|
1285
1296
|
|
|
1286
1297
|
commands += [
|
|
1287
1298
|
"COPY /.pyproject.toml /tmp/poetry/pyproject.toml",
|
modal/image.pyi
CHANGED
|
@@ -510,11 +510,12 @@ class _Image(modal._object._Object):
|
|
|
510
510
|
poetry_lockfile: typing.Optional[str] = None,
|
|
511
511
|
*,
|
|
512
512
|
ignore_lockfile: bool = False,
|
|
513
|
-
old_installer: bool = False,
|
|
514
513
|
force_build: bool = False,
|
|
515
514
|
with_: list[str] = [],
|
|
516
515
|
without: list[str] = [],
|
|
517
516
|
only: list[str] = [],
|
|
517
|
+
poetry_version: typing.Optional[str] = "latest",
|
|
518
|
+
old_installer: bool = False,
|
|
518
519
|
secrets: collections.abc.Sequence[modal.secret._Secret] = [],
|
|
519
520
|
gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
|
|
520
521
|
) -> _Image:
|
|
@@ -525,6 +526,10 @@ class _Image(modal._object._Object):
|
|
|
525
526
|
|
|
526
527
|
Note that the root project of the poetry project is not installed, only the dependencies.
|
|
527
528
|
For including local python source files see `add_local_python_source`
|
|
529
|
+
|
|
530
|
+
Poetry will be installed to the Image (using pip) unless `poetry_version` is set to None.
|
|
531
|
+
Note that the interpretation of `poetry_version="latest"` depends on the Modal Image Builder
|
|
532
|
+
version, with versions 2024.10 and earlier limiting poetry to 1.x.
|
|
528
533
|
"""
|
|
529
534
|
...
|
|
530
535
|
|
|
@@ -1346,11 +1351,12 @@ class Image(modal.object.Object):
|
|
|
1346
1351
|
poetry_lockfile: typing.Optional[str] = None,
|
|
1347
1352
|
*,
|
|
1348
1353
|
ignore_lockfile: bool = False,
|
|
1349
|
-
old_installer: bool = False,
|
|
1350
1354
|
force_build: bool = False,
|
|
1351
1355
|
with_: list[str] = [],
|
|
1352
1356
|
without: list[str] = [],
|
|
1353
1357
|
only: list[str] = [],
|
|
1358
|
+
poetry_version: typing.Optional[str] = "latest",
|
|
1359
|
+
old_installer: bool = False,
|
|
1354
1360
|
secrets: collections.abc.Sequence[modal.secret.Secret] = [],
|
|
1355
1361
|
gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
|
|
1356
1362
|
) -> Image:
|
|
@@ -1361,6 +1367,10 @@ class Image(modal.object.Object):
|
|
|
1361
1367
|
|
|
1362
1368
|
Note that the root project of the poetry project is not installed, only the dependencies.
|
|
1363
1369
|
For including local python source files see `add_local_python_source`
|
|
1370
|
+
|
|
1371
|
+
Poetry will be installed to the Image (using pip) unless `poetry_version` is set to None.
|
|
1372
|
+
Note that the interpretation of `poetry_version="latest"` depends on the Modal Image Builder
|
|
1373
|
+
version, with versions 2024.10 and earlier limiting poetry to 1.x.
|
|
1364
1374
|
"""
|
|
1365
1375
|
...
|
|
1366
1376
|
|
modal/object.pyi
CHANGED
|
@@ -89,7 +89,10 @@ class Object:
|
|
|
89
89
|
def _get_metadata(self) -> typing.Optional[google.protobuf.message.Message]: ...
|
|
90
90
|
def _validate_is_hydrated(self): ...
|
|
91
91
|
def clone(self) -> typing_extensions.Self:
|
|
92
|
-
"""mdmd:hidden Clone a given hydrated object.
|
|
92
|
+
"""mdmd:hidden Clone a given hydrated object.
|
|
93
|
+
|
|
94
|
+
Note: This is not intended to be public API and has no public use. It will be removed in a future release.
|
|
95
|
+
"""
|
|
93
96
|
...
|
|
94
97
|
|
|
95
98
|
@classmethod
|
|
@@ -6,7 +6,7 @@ modal/_container_entrypoint.py,sha256=2Zx9O_EMJg0H77EdnC2vGKs6uFMWwbP1NLFf-qYmWm
|
|
|
6
6
|
modal/_functions.py,sha256=weFJszpf_WsL-uEMzrUxNEYmteIczyXYN0za_V9Vf4U,80903
|
|
7
7
|
modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
|
|
8
8
|
modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
|
|
9
|
-
modal/_object.py,sha256=
|
|
9
|
+
modal/_object.py,sha256=QWyUGjrGLupITkyvJru2cekizsaVdteAhwMQlw_tE4k,11172
|
|
10
10
|
modal/_output.py,sha256=LRM9KroHuR7t5pq8iLYjpFz1sQrHYan2kvRDjT6KAw4,26082
|
|
11
11
|
modal/_partial_function.py,sha256=RqBRBqezecNDK_Ve_X00Oaw5Loub7OaknfoWb7dcgSg,39176
|
|
12
12
|
modal/_pty.py,sha256=JZfPDDpzqICZqtyPI_oMJf_9w-p_lLNuzHhwhodUXio,1329
|
|
@@ -22,7 +22,7 @@ modal/app.py,sha256=fCKq3TJ2Y5LB2WKNs6pp_5XECNH5avUL01jQljuoYRU,46603
|
|
|
22
22
|
modal/app.pyi,sha256=Z6wi_dkXywiaM2rvAvguj2Wgu9ZgPjMSLl1nH1a7EYI,42243
|
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
|
24
24
|
modal/client.py,sha256=OwISJvkgMb-rHm9Gc4i-7YcDgGiZgwJ7F_PzwZH7a6Q,16847
|
|
25
|
-
modal/client.pyi,sha256=
|
|
25
|
+
modal/client.pyi,sha256=aXkJ3MH9EFi3Gwyi7dpYJZ18kceUtwmP_AB6Cu0o50E,15079
|
|
26
26
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
|
27
27
|
modal/cloud_bucket_mount.pyi,sha256=-qSfYAQvIoO_l2wsCCGTG5ZUwQieNKXdAO00yP1-LYU,7394
|
|
28
28
|
modal/cls.py,sha256=s5UhFqNQz34aYOpmMTnlgQMhI7GfN3IkCLNlGXrrW7M,39795
|
|
@@ -41,8 +41,8 @@ modal/file_pattern_matcher.py,sha256=wov-otB5M1oTdrYDtR2_VgacYin2srdtAP4McA1Cqzw
|
|
|
41
41
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
|
42
42
|
modal/functions.pyi,sha256=XQqNwbrcppGO-2ytKcndDIuWjT5R55pd6t99HDCT140,34819
|
|
43
43
|
modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
|
|
44
|
-
modal/image.py,sha256=
|
|
45
|
-
modal/image.pyi,sha256=
|
|
44
|
+
modal/image.py,sha256=vl815o4_iZjYlQHLCR-P3BcKsMXQGCq15w26XLoXcjM,94003
|
|
45
|
+
modal/image.pyi,sha256=zBNRSZR-b9hCYslS4qP1dA4-gp0YiNPmDxscjPCnXxk,68008
|
|
46
46
|
modal/io_streams.py,sha256=FUDpBsVK8isqwyC7DtAcQZhaHlMFSaNZGhYJOg-SFW0,15590
|
|
47
47
|
modal/io_streams.pyi,sha256=5b3b93ztZeR8IpJtNIGffX24QLPgocE4-gAps8y7CKU,13824
|
|
48
48
|
modal/mount.py,sha256=7gdzBNueSjPsgsdisMv1bv5SncEQyWc6D-YlAbpze3s,35523
|
|
@@ -50,7 +50,7 @@ modal/mount.pyi,sha256=Q4ryg68yyfgJh4dWqcs4y9jvcF8JArU8tIUZhdjRHac,19613
|
|
|
50
50
|
modal/network_file_system.py,sha256=i9LhgDXURltOOL0FPwX7pd_BDZOuTaU1TZ2Eet2WlBw,14563
|
|
51
51
|
modal/network_file_system.pyi,sha256=xKVVLn9s7qf8iSnDvPZhXeQx83nKynhiwzvMbYY-S_A,17661
|
|
52
52
|
modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
|
|
53
|
-
modal/object.pyi,sha256=
|
|
53
|
+
modal/object.pyi,sha256=751TV6BntarPsErf0HDQPsvePjWFf0JZK8ZAiRpM1yg,6627
|
|
54
54
|
modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
|
|
55
55
|
modal/parallel_map.py,sha256=uRCIId1C1lHHprG3A5WdWkOBcl2DmlPTAxZAkXUrrow,40765
|
|
56
56
|
modal/parallel_map.pyi,sha256=-t3nZ-SvKEK8_xC4A_AmAq6UVpt4ZFtq7rPnWzHGhfg,10290
|
|
@@ -147,7 +147,7 @@ modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddR
|
|
|
147
147
|
modal/requirements/PREVIEW.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqrs,312
|
|
148
148
|
modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
|
|
149
149
|
modal/requirements/base-images.json,sha256=f1bwyp2UkM844eoO9Qk30gQw_xrMqKpMSeJ6MErXnEk,995
|
|
150
|
-
modal-1.0.6.
|
|
150
|
+
modal-1.0.6.dev3.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
|
151
151
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
|
152
152
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
|
153
153
|
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
|
@@ -170,10 +170,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
|
|
|
170
170
|
modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
171
171
|
modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
|
|
172
172
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
173
|
-
modal_version/__init__.py,sha256=
|
|
173
|
+
modal_version/__init__.py,sha256=Shi89HvGhKPsuIN8dq8WNarCeAOGdcuiOqbjffC1Wnk,120
|
|
174
174
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
|
175
|
-
modal-1.0.6.
|
|
176
|
-
modal-1.0.6.
|
|
177
|
-
modal-1.0.6.
|
|
178
|
-
modal-1.0.6.
|
|
179
|
-
modal-1.0.6.
|
|
175
|
+
modal-1.0.6.dev3.dist-info/METADATA,sha256=_wgtYo4mL8NxbKcEXO0LN2cEQ50KbndsNQLBDvD3oSY,2461
|
|
176
|
+
modal-1.0.6.dev3.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
|
177
|
+
modal-1.0.6.dev3.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
|
178
|
+
modal-1.0.6.dev3.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
|
179
|
+
modal-1.0.6.dev3.dist-info/RECORD,,
|
modal_version/__init__.py
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|