modal 1.1.2.dev34__py3-none-any.whl → 1.1.2.dev36__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 CHANGED
@@ -33,7 +33,7 @@ class _Client:
33
33
  server_url: str,
34
34
  client_type: int,
35
35
  credentials: typing.Optional[tuple[str, str]],
36
- version: str = "1.1.2.dev34",
36
+ version: str = "1.1.2.dev36",
37
37
  ):
38
38
  """mdmd:hidden
39
39
  The Modal client object is not intended to be instantiated directly by users.
@@ -164,7 +164,7 @@ class Client:
164
164
  server_url: str,
165
165
  client_type: int,
166
166
  credentials: typing.Optional[tuple[str, str]],
167
- version: str = "1.1.2.dev34",
167
+ version: str = "1.1.2.dev36",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
modal/file_io.py CHANGED
@@ -128,7 +128,7 @@ class _FileIO(Generic[T]):
128
128
 
129
129
  **Usage**
130
130
 
131
- ```python
131
+ ```python notest
132
132
  import modal
133
133
 
134
134
  app = modal.App.lookup("my-app", create_if_missing=True)
modal/file_io.pyi CHANGED
@@ -62,7 +62,7 @@ class _FileIO(typing.Generic[T]):
62
62
 
63
63
  **Usage**
64
64
 
65
- ```python
65
+ ```python notest
66
66
  import modal
67
67
 
68
68
  app = modal.App.lookup("my-app", create_if_missing=True)
@@ -232,7 +232,7 @@ class FileIO(typing.Generic[T]):
232
232
 
233
233
  **Usage**
234
234
 
235
- ```python
235
+ ```python notest
236
236
  import modal
237
237
 
238
238
  app = modal.App.lookup("my-app", create_if_missing=True)
modal/mount.py CHANGED
@@ -13,6 +13,7 @@ from pathlib import Path, PurePosixPath
13
13
  from typing import Callable, Optional, Sequence, Union
14
14
 
15
15
  from google.protobuf.message import Message
16
+ from grpclib import GRPCError
16
17
 
17
18
  import modal.exception
18
19
  import modal.file_pattern_matcher
@@ -929,19 +930,23 @@ async def _create_single_client_dependency_mount(
929
930
  remote_path=REMOTE_SITECUSTOMIZE_PATH,
930
931
  )
931
932
 
932
- await python_mount._deploy.aio(
933
- mount_name,
934
- api_pb2.DEPLOYMENT_NAMESPACE_GLOBAL,
935
- environment_name=profile_environment,
936
- allow_overwrite=allow_overwrite,
937
- client=client,
938
- )
939
- print(f"✅ Deployed mount {mount_name} to global namespace.")
933
+ try:
934
+ await python_mount._deploy.aio(
935
+ mount_name,
936
+ api_pb2.DEPLOYMENT_NAMESPACE_GLOBAL,
937
+ environment_name=profile_environment,
938
+ allow_overwrite=allow_overwrite,
939
+ client=client,
940
+ )
941
+ print(f"✅ Deployed mount {mount_name} to global namespace.")
942
+ except GRPCError as e:
943
+ print(f"⚠️ Mount creation failed with {e.status}: {e.message}")
940
944
 
941
945
 
942
946
  async def _create_client_dependency_mounts(
943
947
  client=None,
944
948
  python_versions: list[str] = list(PYTHON_STANDALONE_VERSIONS),
949
+ builder_versions: list[str] = ["2025.06"], # Reenable "PREVIEW" during testing
945
950
  check_if_exists=True,
946
951
  ):
947
952
  arch = "x86_64"
@@ -950,8 +955,8 @@ async def _create_client_dependency_mounts(
950
955
  ("musllinux_1_2", f"{arch}-unknown-linux-musl"), # musl >= 1.2
951
956
  ]
952
957
  coros = []
953
- for builder_version in ["2025.06", "PREVIEW"]:
954
- for python_version in python_versions:
958
+ for python_version in python_versions:
959
+ for builder_version in builder_versions:
955
960
  for platform, uv_python_platform in platform_tags:
956
961
  coros.append(
957
962
  _create_single_client_dependency_mount(
@@ -961,9 +966,11 @@ async def _create_client_dependency_mounts(
961
966
  arch,
962
967
  platform,
963
968
  uv_python_platform,
964
- # Re-enable mount overwriting for PREVIEW version while under development
965
- # check_if_exists=builder_version != "PREVIEW",
966
- # allow_overwrite=builder_version == "PREVIEW",
969
+ # This check_if_exists / allow_overwrite parameterization is very awkward
970
+ # Also it doesn't provide a hook for overwriting a non-preview version, which
971
+ # in theory we may need to do at some point (hopefully not, but...)
972
+ check_if_exists=check_if_exists and builder_version != "PREVIEW",
973
+ allow_overwrite=builder_version == "PREVIEW",
967
974
  )
968
975
  )
969
976
  await TaskContext.gather(*coros)
modal/mount.pyi CHANGED
@@ -570,15 +570,28 @@ async def _create_single_client_dependency_mount(
570
570
  allow_overwrite: bool = False,
571
571
  ): ...
572
572
  async def _create_client_dependency_mounts(
573
- client=None, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"], check_if_exists=True
573
+ client=None,
574
+ python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"],
575
+ builder_versions: list[str] = ["2025.06"],
576
+ check_if_exists=True,
574
577
  ): ...
575
578
 
576
579
  class __create_client_dependency_mounts_spec(typing_extensions.Protocol):
577
580
  def __call__(
578
- self, /, client=None, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"], check_if_exists=True
581
+ self,
582
+ /,
583
+ client=None,
584
+ python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"],
585
+ builder_versions: list[str] = ["2025.06"],
586
+ check_if_exists=True,
579
587
  ): ...
580
588
  async def aio(
581
- self, /, client=None, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"], check_if_exists=True
589
+ self,
590
+ /,
591
+ client=None,
592
+ python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"],
593
+ builder_versions: list[str] = ["2025.06"],
594
+ check_if_exists=True,
582
595
  ): ...
583
596
 
584
597
  create_client_dependency_mounts: __create_client_dependency_mounts_spec
modal/sandbox.py CHANGED
@@ -296,8 +296,9 @@ class _Sandbox(_Object, type_prefix="sb"):
296
296
  environment_name: Optional[str] = None, # *DEPRECATED* Optionally override the default environment
297
297
  ) -> "_Sandbox":
298
298
  """
299
- Create a new Sandbox to run untrusted, arbitrary code. The Sandbox's corresponding container
300
- will be created asynchronously.
299
+ Create a new Sandbox to run untrusted, arbitrary code.
300
+
301
+ The Sandbox's corresponding container will be created asynchronously.
301
302
 
302
303
  **Usage**
303
304
 
modal/sandbox.pyi CHANGED
@@ -120,8 +120,9 @@ class _Sandbox(modal._object._Object):
120
120
  client: typing.Optional[modal.client._Client] = None,
121
121
  environment_name: typing.Optional[str] = None,
122
122
  ) -> _Sandbox:
123
- """Create a new Sandbox to run untrusted, arbitrary code. The Sandbox's corresponding container
124
- will be created asynchronously.
123
+ """Create a new Sandbox to run untrusted, arbitrary code.
124
+
125
+ The Sandbox's corresponding container will be created asynchronously.
125
126
 
126
127
  **Usage**
127
128
 
@@ -432,8 +433,9 @@ class Sandbox(modal.object.Object):
432
433
  client: typing.Optional[modal.client.Client] = None,
433
434
  environment_name: typing.Optional[str] = None,
434
435
  ) -> Sandbox:
435
- """Create a new Sandbox to run untrusted, arbitrary code. The Sandbox's corresponding container
436
- will be created asynchronously.
436
+ """Create a new Sandbox to run untrusted, arbitrary code.
437
+
438
+ The Sandbox's corresponding container will be created asynchronously.
437
439
 
438
440
  **Usage**
439
441
 
@@ -482,8 +484,9 @@ class Sandbox(modal.object.Object):
482
484
  client: typing.Optional[modal.client.Client] = None,
483
485
  environment_name: typing.Optional[str] = None,
484
486
  ) -> Sandbox:
485
- """Create a new Sandbox to run untrusted, arbitrary code. The Sandbox's corresponding container
486
- will be created asynchronously.
487
+ """Create a new Sandbox to run untrusted, arbitrary code.
488
+
489
+ The Sandbox's corresponding container will be created asynchronously.
487
490
 
488
491
  **Usage**
489
492
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.2.dev34
3
+ Version: 1.1.2.dev36
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=NIkdg9tTBsB8xWEOpU8GSpUfHeGleA4M9MQ77PKADok,48052
22
22
  modal/app.pyi,sha256=k0HnXfwV3mEze3PFHmSeqXBqizNqeJWF5oxrqo-P4Wg,43447
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=kyAIVB3Ay-XKJizQ_1ufUFB__EagV0MLmHJpyYyJ7J0,18636
25
- modal/client.pyi,sha256=2Mv8qbrXFVQCkhNvNvs6PlvjZKnvPVVlFnHRwI0vT-E,15831
25
+ modal/client.pyi,sha256=28COTtnOxICUkBoVPjpSb9nvkdDmxoqVubVUN1mmlQw,15831
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=1mBcExFrLDTZwkD3Dzu8F26_CL0CGktOV9pE60Y8g_E,40689
@@ -35,8 +35,8 @@ modal/dict.pyi,sha256=F9yxTgBjxLOy6boB3N4wc2BtnGIO1TARmyhpMBC8c80,33317
35
35
  modal/environments.py,sha256=gHFNLG78bqgizpQ4w_elz27QOqmcgAonFsmLs7NjUJ4,6804
36
36
  modal/environments.pyi,sha256=9-KtrzAcUe55cCP4020lSUD7-fWS7OPakAHssq4-bro,4219
37
37
  modal/exception.py,sha256=o0V93PK8Hcg2YQ2aeOB1Y-qWBw4Gz5ATfyokR8GapuQ,5634
38
- modal/file_io.py,sha256=BVqAJ0sgPUfN8QsYztWiGB4j56he60TncM02KsylnCw,21449
39
- modal/file_io.pyi,sha256=cPT_hsplE5iLCXhYOLn1Sp9eDdk7DxdFmicQHanJZyg,15918
38
+ modal/file_io.py,sha256=OSKr77TujcXGJW1iikzYiHckLSmv07QBgBHcxxYEkoI,21456
39
+ modal/file_io.pyi,sha256=xtO6Glf_BFwDE7QiQQo24QqcMf_Vv-iz7WojcGVlLBU,15932
40
40
  modal/file_pattern_matcher.py,sha256=A_Kdkej6q7YQyhM_2-BvpFmPqJ0oHb54B6yf9VqvPVE,8116
41
41
  modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
42
42
  modal/functions.pyi,sha256=FdEeGqwysl83CpOrYWOk2EfazYhl8Ar4GIF_KQN19Qo,36633
@@ -45,8 +45,8 @@ modal/image.py,sha256=A83nmo0zfCUwgvJh0LZ7Yc1sYvDnZLl_phbKxN-9HIw,103144
45
45
  modal/image.pyi,sha256=oH-GCHVEwD5fOX0K_IaWN5RKZlYwX82z-K4wxx8aN3c,68541
46
46
  modal/io_streams.py,sha256=ut9tY_yEtiBsgQ40u_72Ns87IZHfbMxfnh8t6U9RSGA,16204
47
47
  modal/io_streams.pyi,sha256=aOun_jUFKHSJyUY6-7gKvNoxzcULsa8_hxdtEO7v-gk,13980
48
- modal/mount.py,sha256=EHttd7D0HNtGUDyB3DS26dJMdabG-SlIaD5c52dJnbE,36729
49
- modal/mount.pyi,sha256=n6AuS8J3bTCQj750nVZZdVBvzCAlSM2fyxAt_5LLFik,20264
48
+ modal/mount.py,sha256=AObt5puO-jgtH5EtUfgAkz130bR-8Qvo5Am1_4tg3mE,37215
49
+ modal/mount.pyi,sha256=Q99V40Va5JuRrmc9PbpQXakYzTSVvgFNgSlJDcfWIyQ,20488
50
50
  modal/network_file_system.py,sha256=S5WhQEUv55u0YDpgeEQP-PGIcq2o1gJZVBHAO5vSR2Q,14933
51
51
  modal/network_file_system.pyi,sha256=Td_IobHr84iLo_9LZKQ4tNdUB60yjX8QWBaFiUvhfi8,17685
52
52
  modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
@@ -65,8 +65,8 @@ modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
65
65
  modal/runner.py,sha256=ostdzYpQb-20tlD6dIq7bpWTkZkOhjJBNuMNektqnJA,24068
66
66
  modal/runner.pyi,sha256=lbwLljm1cC8d6PcNvmYQhkE8501V9fg0bYqqKX6G4r4,8489
67
67
  modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
68
- modal/sandbox.py,sha256=eQd0Cf9yTFCNshnj7oH8WvecbhVIwsEsmuXB9O-REis,40927
69
- modal/sandbox.pyi,sha256=_ddnvZGauSRG-WelsMB5oPil8KVWb0PSvmuAzAzrLIw,41713
68
+ modal/sandbox.py,sha256=FSZxvgJ2mf93YCgXasqLA2KFt3uHI8WiY33Drh-GDwk,40928
69
+ modal/sandbox.pyi,sha256=-rPSoMAu63B5BkOfdl5yiwX0WrpJ_b12EHU--ovnq-g,41716
70
70
  modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
72
  modal/secret.py,sha256=Y6vMT7PUFdwCjVqAe9efxbVwKNjLk2yMLDV3HdnbdxI,18483
@@ -153,7 +153,7 @@ modal/experimental/__init__.py,sha256=dPBPpxsmjZMLF3YjRrXoTvT01pl65wxi4UdFZsOem3
153
153
  modal/experimental/flash.py,sha256=viXQumCIFp5VFsPFURdFTBTjP_QnsAi8nSWXAMmfjeQ,19744
154
154
  modal/experimental/flash.pyi,sha256=A8_qJGtGoXEzKDdHbvhmCw7oqfneFEvJQK3ZdTOvUdU,10830
155
155
  modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
156
- modal-1.1.2.dev34.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.2.dev36.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
157
157
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
158
158
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
159
159
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
@@ -176,10 +176,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
176
176
  modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
177
177
  modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
178
178
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
- modal_version/__init__.py,sha256=87RIRvCfNh2mEe8LB2u9l0ln-vNhxcpk9t5EYr9aqc4,121
179
+ modal_version/__init__.py,sha256=dKrb4QXQxZkgve1VNEdRTSkDzKc63E-jx4yNI3pjqwQ,121
180
180
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
181
- modal-1.1.2.dev34.dist-info/METADATA,sha256=K4RvmW4ai42OINqypbUXE4JJ2nO9dPpWZ9uEC9pdVKU,2460
182
- modal-1.1.2.dev34.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
- modal-1.1.2.dev34.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
- modal-1.1.2.dev34.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
- modal-1.1.2.dev34.dist-info/RECORD,,
181
+ modal-1.1.2.dev36.dist-info/METADATA,sha256=O9riodxt1VwUkltjq3QNHGZ2Mps6V1D4_YJzctVWY1Q,2460
182
+ modal-1.1.2.dev36.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
+ modal-1.1.2.dev36.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
+ modal-1.1.2.dev36.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
+ modal-1.1.2.dev36.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.1.2.dev34"
4
+ __version__ = "1.1.2.dev36"