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 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.dev1",
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.dev1",
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", "RUN python -m pip install poetry~=1.7"]
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
- install_cmd += " --compile" # no .pyc compilation slows down cold-start.
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.6.dev1
3
+ Version: 1.0.6.dev3
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -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=KzzzZoM41UQUiY9TKOrft9BtZKgjWG_ukdlyLGjB4UY,10758
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=cU6POxjQBqns1ngheQKDEoDeCEvXD4ZIyzR22-zhOIg,15079
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=HAFqGvur6IsWp-7fKDJUU1_KzTwBMt6FDmwQCskxCi4,93301
45
- modal/image.pyi,sha256=RX6R-n1SwmNkJXi7L-BuRcfIU_zZH89kw-L7RWjiGic,67344
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=OT5nnTwPfQx1Uk0GkTQuGXBhznRk1yXGloH4VkTpcPg,6502
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.dev1.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
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=p_VaCrmcRbMiqzD8-08SuyQeSzxrwTRr-zqjphwU3Qg,120
173
+ modal_version/__init__.py,sha256=Shi89HvGhKPsuIN8dq8WNarCeAOGdcuiOqbjffC1Wnk,120
174
174
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
175
- modal-1.0.6.dev1.dist-info/METADATA,sha256=uxYzgSiZ9y2-V_NY4yz3ENykZ2sOo5P8yJHGpSgcYD8,2461
176
- modal-1.0.6.dev1.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
177
- modal-1.0.6.dev1.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
178
- modal-1.0.6.dev1.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
179
- modal-1.0.6.dev1.dist-info/RECORD,,
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
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.0.6.dev1"
4
+ __version__ = "1.0.6.dev3"