modal 1.0.6.dev1__py3-none-any.whl → 1.0.6.dev2__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/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.dev2",
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.dev2",
164
164
  ):
165
165
  """mdmd:hidden
166
166
  The Modal client object is not intended to be instantiated directly by users.
modal/functions.pyi CHANGED
@@ -428,7 +428,7 @@ class Function(
428
428
 
429
429
  _call_generator: ___call_generator_spec[typing_extensions.Self]
430
430
 
431
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
431
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
432
432
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
433
433
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
434
434
  ...
@@ -437,7 +437,7 @@ class Function(
437
437
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
438
438
  ...
439
439
 
440
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
440
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
441
441
 
442
442
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
443
443
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -464,7 +464,7 @@ class Function(
464
464
  """
465
465
  ...
466
466
 
467
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
467
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
468
468
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
469
469
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
470
470
 
@@ -488,7 +488,7 @@ class Function(
488
488
  ...
489
489
 
490
490
  _experimental_spawn: ___experimental_spawn_spec[
491
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
491
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
492
492
  ]
493
493
 
494
494
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
@@ -497,7 +497,7 @@ class Function(
497
497
 
498
498
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
499
499
 
500
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
500
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
501
501
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
502
502
  """Calls the function with the given arguments, without waiting for the results.
503
503
 
@@ -518,7 +518,7 @@ class Function(
518
518
  """
519
519
  ...
520
520
 
521
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
521
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
522
522
 
523
523
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
524
524
  """Return the inner Python object wrapped by this Modal Function."""
modal/image.py CHANGED
@@ -1227,14 +1227,15 @@ class _Image(_Object, type_prefix="im"):
1227
1227
  poetry_lockfile: Optional[str] = None, # Path to lockfile. If not provided, uses poetry.lock in same directory.
1228
1228
  *,
1229
1229
  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
1230
  force_build: bool = False, # Ignore cached builds, similar to 'docker build --no-cache'
1233
1231
  # Selected optional dependency groups to install (See https://python-poetry.org/docs/cli/#install)
1234
1232
  with_: list[str] = [],
1235
1233
  # Selected optional dependency groups to exclude (See https://python-poetry.org/docs/cli/#install)
1236
1234
  without: list[str] = [],
1237
1235
  only: list[str] = [], # Only install dependency groups specifed in this list.
1236
+ poetry_version: Optional[str] = "latest", # Version of poetry to install, or None to skip installation
1237
+ # If set to True, use old installer. See https://github.com/python-poetry/poetry/issues/3336
1238
+ old_installer: bool = False,
1238
1239
  secrets: Sequence[_Secret] = [],
1239
1240
  gpu: GPU_T = None,
1240
1241
  ) -> "_Image":
@@ -1245,12 +1246,22 @@ class _Image(_Object, type_prefix="im"):
1245
1246
 
1246
1247
  Note that the root project of the poetry project is not installed, only the dependencies.
1247
1248
  For including local python source files see `add_local_python_source`
1249
+
1250
+ Poetry will be installed to the Image (using pip) unless `poetry_version` is set to None.
1251
+ Note that the interpretation of `poetry_version="latest"` depends on the Modal Image Builder
1252
+ version, with versions 2024.10 and earlier limiting poetry to 1.x.
1248
1253
  """
1249
1254
 
1250
1255
  def build_dockerfile(version: ImageBuilderVersion) -> DockerfileSpec:
1251
1256
  context_files = {"/.pyproject.toml": os.path.expanduser(poetry_pyproject_toml)}
1252
1257
 
1253
- commands = ["FROM base", "RUN python -m pip install poetry~=1.7"]
1258
+ commands = ["FROM base"]
1259
+ if poetry_version is not None:
1260
+ if poetry_version == "latest":
1261
+ poetry_spec = "~=1.7" if version <= "2024.10" else ""
1262
+ else:
1263
+ poetry_spec = f"=={poetry_version}" # TODO: support other versions
1264
+ commands += [f"RUN python -m pip install poetry{poetry_spec}"]
1254
1265
 
1255
1266
  if old_installer:
1256
1267
  commands += ["RUN poetry config experimental.new-installer false"]
@@ -1281,7 +1292,8 @@ class _Image(_Object, type_prefix="im"):
1281
1292
 
1282
1293
  if only:
1283
1294
  install_cmd += f" --only {','.join(only)}"
1284
- install_cmd += " --compile" # no .pyc compilation slows down cold-start.
1295
+
1296
+ install_cmd += " --compile" # Always compile .pyc during build; avoid recompiling on every cold start
1285
1297
 
1286
1298
  commands += [
1287
1299
  "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
 
@@ -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.dev2
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -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=XT3QKiI4uqYQ73YnA7eCuywBYegTGHmyT0qOa0jIdy4,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
@@ -39,10 +39,10 @@ modal/file_io.py,sha256=SCBfLk5gRieqdTVlA_f-2YHHtRp7Iy_sA6iR1zPsO3c,21100
39
39
  modal/file_io.pyi,sha256=_Hm-59MrppfuBYxtzdJkA2Jf9zI5LlbPh_0gURk0_7s,15222
40
40
  modal/file_pattern_matcher.py,sha256=wov-otB5M1oTdrYDtR2_VgacYin2srdtAP4McA1Cqzw,6516
41
41
  modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
42
- modal/functions.pyi,sha256=XQqNwbrcppGO-2ytKcndDIuWjT5R55pd6t99HDCT140,34819
42
+ modal/functions.pyi,sha256=C-vcR7DNCeqb4gIQiooocX_PhgvlvJ8ef4Wt4kqcu_c,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=JkFjnbPNvrnMS-7t-AAeMfnnB76DUj6cGjFwrbtcTIc,94030
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
@@ -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.dev2.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=DwFZBVAdlDeltI0ouVVN4htUVnJUpU4QbmJgbNpFMjc,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.dev2.dist-info/METADATA,sha256=iG7kgOtxsGrajXR_VJPVZ7CZPVgAa7GzJvqjRXa4LuA,2461
176
+ modal-1.0.6.dev2.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
177
+ modal-1.0.6.dev2.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
178
+ modal-1.0.6.dev2.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
179
+ modal-1.0.6.dev2.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.dev2"