modal 1.0.3.dev28__py3-none-any.whl → 1.0.4.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.
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.3.dev28",
34
+ version: str = "1.0.4.dev2",
35
35
  ): ...
36
36
  def is_closed(self) -> bool: ...
37
37
  @property
@@ -94,7 +94,7 @@ class Client:
94
94
  server_url: str,
95
95
  client_type: int,
96
96
  credentials: typing.Optional[tuple[str, str]],
97
- version: str = "1.0.3.dev28",
97
+ version: str = "1.0.4.dev2",
98
98
  ): ...
99
99
  def is_closed(self) -> bool: ...
100
100
  @property
modal/functions.pyi CHANGED
@@ -227,11 +227,11 @@ class Function(
227
227
 
228
228
  _call_generator: ___call_generator_spec[typing_extensions.Self]
229
229
 
230
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
230
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
231
231
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
232
232
  async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
233
233
 
234
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
234
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
235
235
 
236
236
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
237
237
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
@@ -246,12 +246,12 @@ class Function(
246
246
  self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
247
247
  ) -> modal._functions.OriginalReturnType: ...
248
248
 
249
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
249
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
250
250
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
251
251
  async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
252
252
 
253
253
  _experimental_spawn: ___experimental_spawn_spec[
254
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
254
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
255
255
  ]
256
256
 
257
257
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
@@ -260,11 +260,11 @@ class Function(
260
260
 
261
261
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
262
262
 
263
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
263
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
264
264
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
265
265
  async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
266
266
 
267
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
267
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
268
268
 
269
269
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
270
270
 
modal/mount.py CHANGED
@@ -290,6 +290,7 @@ class _Mount(_Object, type_prefix="mo"):
290
290
  _deployment_name: Optional[str] = None
291
291
  _namespace: Optional[int] = None
292
292
  _environment_name: Optional[str] = None
293
+ _allow_overwrite: bool = False
293
294
  _content_checksum_sha256_hex: Optional[str] = None
294
295
 
295
296
  @staticmethod
@@ -600,11 +601,16 @@ class _Mount(_Object, type_prefix="mo"):
600
601
  # Build the mount.
601
602
  status_row.message(f"Creating mount {message_label}: Finalizing index of {len(files)} files")
602
603
  if self._deployment_name:
604
+ creation_type = (
605
+ api_pb2.OBJECT_CREATION_TYPE_CREATE_IF_MISSING
606
+ if self._allow_overwrite
607
+ else api_pb2.OBJECT_CREATION_TYPE_CREATE_FAIL_IF_EXISTS
608
+ )
603
609
  req = api_pb2.MountGetOrCreateRequest(
604
610
  deployment_name=self._deployment_name,
605
611
  namespace=self._namespace,
606
612
  environment_name=self._environment_name,
607
- object_creation_type=api_pb2.OBJECT_CREATION_TYPE_CREATE_FAIL_IF_EXISTS,
613
+ object_creation_type=creation_type,
608
614
  files=files,
609
615
  )
610
616
  elif resolver.app_id is not None:
@@ -736,7 +742,9 @@ class _Mount(_Object, type_prefix="mo"):
736
742
  self: "_Mount",
737
743
  deployment_name: Optional[str] = None,
738
744
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
745
+ *,
739
746
  environment_name: Optional[str] = None,
747
+ allow_overwrite: bool = False,
740
748
  client: Optional[_Client] = None,
741
749
  ) -> None:
742
750
  check_object_name(deployment_name, "Mount")
@@ -744,6 +752,7 @@ class _Mount(_Object, type_prefix="mo"):
744
752
  self._deployment_name = deployment_name
745
753
  self._namespace = namespace
746
754
  self._environment_name = environment_name
755
+ self._allow_overwrite = allow_overwrite
747
756
  if client is None:
748
757
  client = await _Client.from_env()
749
758
  resolver = Resolver(client=client, environment_name=environment_name)
@@ -826,35 +835,34 @@ import sys; sys.path.append('{REMOTE_PACKAGES_PATH}')
826
835
  """.strip()
827
836
 
828
837
 
829
- async def _create_single_mount(
838
+ async def _create_single_client_dependency_mount(
830
839
  client: _Client,
831
840
  builder_version: str,
832
841
  python_version: str,
833
- platform: str,
834
842
  arch: str,
835
- uv_python_platform: str = None,
843
+ platform: str,
844
+ uv_python_platform: str,
836
845
  check_if_exists: bool = True,
846
+ allow_overwrite: bool = False,
837
847
  ):
838
- import subprocess
839
848
  import tempfile
840
849
 
841
850
  profile_environment = config.get("environment")
842
851
  abi_tag = "cp" + python_version.replace(".", "")
843
852
  mount_name = f"{builder_version}-{abi_tag}-{platform}-{arch}"
844
- uv_python_platform = uv_python_platform or f"{arch}-{platform}"
845
853
 
846
854
  if check_if_exists:
847
855
  try:
848
856
  await Mount.from_name(mount_name, namespace=api_pb2.DEPLOYMENT_NAMESPACE_GLOBAL).hydrate.aio(client)
849
- print(f" Found existing mount {mount_name} in global namespace.")
857
+ print(f" Found existing mount {mount_name} in global namespace.")
850
858
  return
851
859
  except modal.exception.NotFoundError:
852
860
  pass
853
861
 
854
- with tempfile.TemporaryDirectory() as tmpd:
862
+ with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as tmpd:
855
863
  print(f"📦 Building {mount_name}.")
856
864
  requirements = os.path.join(os.path.dirname(__file__), f"requirements/{builder_version}.txt")
857
- subprocess.run(
865
+ cmd = " ".join(
858
866
  [
859
867
  "uv",
860
868
  "pip",
@@ -871,12 +879,21 @@ async def _create_single_mount(
871
879
  uv_python_platform,
872
880
  "--python-version",
873
881
  python_version,
874
- ],
875
- check=True,
876
- capture_output=True,
882
+ ]
877
883
  )
884
+ proc = await asyncio.create_subprocess_shell(
885
+ cmd,
886
+ stdout=asyncio.subprocess.PIPE,
887
+ stderr=asyncio.subprocess.PIPE,
888
+ )
889
+ await proc.wait()
890
+ if proc.returncode:
891
+ stdout, stderr = await proc.communicate()
892
+ print(stdout.decode("utf-8"))
893
+ print(stderr.decode("utf-8"))
894
+ raise RuntimeError(f"Subprocess failed with {proc.returncode}", proc.args)
878
895
 
879
- print(f"🌐 Downloaded and unpacked packages to {tmpd}.")
896
+ print(f"🌐 Downloaded and unpacked {mount_name} packages to {tmpd}.")
880
897
 
881
898
  python_mount = Mount._from_local_dir(tmpd, remote_path=REMOTE_PACKAGES_PATH)
882
899
 
@@ -895,6 +912,7 @@ async def _create_single_mount(
895
912
  mount_name,
896
913
  api_pb2.DEPLOYMENT_NAMESPACE_GLOBAL,
897
914
  environment_name=profile_environment,
915
+ allow_overwrite=allow_overwrite,
898
916
  client=client,
899
917
  )
900
918
  print(f"✅ Deployed mount {mount_name} to global namespace.")
@@ -902,34 +920,30 @@ async def _create_single_mount(
902
920
 
903
921
  async def _create_client_dependency_mounts(
904
922
  client=None,
905
- check_if_exists=True,
906
923
  python_versions: list[str] = list(PYTHON_STANDALONE_VERSIONS),
924
+ check_if_exists=True,
907
925
  ):
926
+ arch = "x86_64"
927
+ platform_tags = [
928
+ ("manylinux_2_17", f"{arch}-manylinux_2_17"), # glibc >= 2.17
929
+ ("musllinux_1_2", f"{arch}-unknown-linux-musl"), # musl >= 1.2
930
+ ]
908
931
  coros = []
909
- for python_version in python_versions:
910
- # glibc >= 2.17
911
- coros.append(
912
- _create_single_mount(
913
- client,
914
- "PREVIEW",
915
- python_version,
916
- "manylinux_2_17",
917
- "x86_64",
918
- check_if_exists=check_if_exists,
919
- )
920
- )
921
- # musl >= 1.2
922
- coros.append(
923
- _create_single_mount(
924
- client,
925
- "PREVIEW",
926
- python_version,
927
- "musllinux_1_2",
928
- "x86_64",
929
- uv_python_platform="x86_64-unknown-linux-musl",
930
- check_if_exists=check_if_exists,
931
- )
932
- )
932
+ for builder_version in ["PREVIEW"]:
933
+ for python_version in python_versions:
934
+ for platform, uv_python_platform in platform_tags:
935
+ coros.append(
936
+ _create_single_client_dependency_mount(
937
+ client,
938
+ builder_version,
939
+ python_version,
940
+ arch,
941
+ platform,
942
+ uv_python_platform,
943
+ check_if_exists=builder_version != "PREVIEW",
944
+ allow_overwrite=builder_version == "PREVIEW",
945
+ )
946
+ )
933
947
  await TaskContext.gather(*coros)
934
948
 
935
949
 
modal/mount.pyi CHANGED
@@ -82,6 +82,7 @@ class _Mount(modal._object._Object):
82
82
  _deployment_name: typing.Optional[str]
83
83
  _namespace: typing.Optional[int]
84
84
  _environment_name: typing.Optional[str]
85
+ _allow_overwrite: bool
85
86
  _content_checksum_sha256_hex: typing.Optional[str]
86
87
 
87
88
  @staticmethod
@@ -172,7 +173,9 @@ class _Mount(modal._object._Object):
172
173
  self: _Mount,
173
174
  deployment_name: typing.Optional[str] = None,
174
175
  namespace=1,
176
+ *,
175
177
  environment_name: typing.Optional[str] = None,
178
+ allow_overwrite: bool = False,
176
179
  client: typing.Optional[modal.client._Client] = None,
177
180
  ) -> None: ...
178
181
  def _get_metadata(self) -> modal_proto.api_pb2.MountHandleMetadata: ...
@@ -184,6 +187,7 @@ class Mount(modal.object.Object):
184
187
  _deployment_name: typing.Optional[str]
185
188
  _namespace: typing.Optional[int]
186
189
  _environment_name: typing.Optional[str]
190
+ _allow_overwrite: bool
187
191
  _content_checksum_sha256_hex: typing.Optional[str]
188
192
 
189
193
  def __init__(self, *args, **kwargs): ...
@@ -288,7 +292,9 @@ class Mount(modal.object.Object):
288
292
  /,
289
293
  deployment_name: typing.Optional[str] = None,
290
294
  namespace=1,
295
+ *,
291
296
  environment_name: typing.Optional[str] = None,
297
+ allow_overwrite: bool = False,
292
298
  client: typing.Optional[modal.client.Client] = None,
293
299
  ) -> None: ...
294
300
  async def aio(
@@ -296,7 +302,9 @@ class Mount(modal.object.Object):
296
302
  /,
297
303
  deployment_name: typing.Optional[str] = None,
298
304
  namespace=1,
305
+ *,
299
306
  environment_name: typing.Optional[str] = None,
307
+ allow_overwrite: bool = False,
300
308
  client: typing.Optional[modal.client.Client] = None,
301
309
  ) -> None: ...
302
310
 
@@ -308,25 +316,26 @@ def _create_client_mount(): ...
308
316
  def create_client_mount(): ...
309
317
  def _get_client_mount(): ...
310
318
  def _is_modal_path(remote_path: pathlib.PurePosixPath): ...
311
- async def _create_single_mount(
319
+ async def _create_single_client_dependency_mount(
312
320
  client: modal.client._Client,
313
321
  builder_version: str,
314
322
  python_version: str,
315
- platform: str,
316
323
  arch: str,
317
- uv_python_platform: str = None,
324
+ platform: str,
325
+ uv_python_platform: str,
318
326
  check_if_exists: bool = True,
327
+ allow_overwrite: bool = False,
319
328
  ): ...
320
329
  async def _create_client_dependency_mounts(
321
- client=None, check_if_exists=True, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"]
330
+ client=None, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"], check_if_exists=True
322
331
  ): ...
323
332
 
324
333
  class __create_client_dependency_mounts_spec(typing_extensions.Protocol):
325
334
  def __call__(
326
- self, /, client=None, check_if_exists=True, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"]
335
+ self, /, client=None, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"], check_if_exists=True
327
336
  ): ...
328
337
  async def aio(
329
- self, /, client=None, check_if_exists=True, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"]
338
+ self, /, client=None, python_versions: list[str] = ["3.9", "3.10", "3.11", "3.12", "3.13"], check_if_exists=True
330
339
  ): ...
331
340
 
332
341
  create_client_dependency_mounts: __create_client_dependency_mounts_spec
modal/parallel_map.py CHANGED
@@ -593,7 +593,7 @@ def _spawn_map_sync(self, *input_iterators, kwargs={}) -> None:
593
593
 
594
594
  return run_coroutine_in_temporary_event_loop(
595
595
  _spawn_map_async(self, *input_iterators, kwargs=kwargs),
596
- "You can't run Function.spawn_map() from an async function. Use Function.map.aio() instead.",
596
+ "You can't run Function.spawn_map() from an async function. Use Function.spawn_map.aio() instead.",
597
597
  )
598
598
 
599
599
 
@@ -1,16 +1,17 @@
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
1
+ aiohappyeyeballs==2.6.1
2
+ aiohttp==3.12.7
3
+ aiosignal==1.3.2
4
+ async-timeout==5.0.1 ; python_version < "3.11"
5
+ attrs==25.3.0
6
+ certifi==2025.4.26
7
+ frozenlist==1.6.0
8
+ grpclib==0.4.8
9
+ h2==4.2.0
10
+ hpack==4.1.0
11
+ hyperframe==6.1.0
12
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
13
+ multidict==6.4.4
14
+ propcache==0.3.1
15
+ protobuf==6.31.1
16
+ typing_extensions==4.13.2
17
+ yarl==1.20.0
@@ -6,13 +6,35 @@
6
6
  "2023.12": "bullseye"
7
7
  },
8
8
  "python": {
9
- "PREVIEW": ["3.9.20", "3.10.15", "3.11.10", "3.12.6", "3.13.0"],
10
- "2024.10": ["3.9.20", "3.10.15", "3.11.10", "3.12.6", "3.13.0"],
11
- "2024.04": ["3.9.19", "3.10.14", "3.11.8", "3.12.2"],
12
- "2023.12": ["3.9.15", "3.10.8", "3.11.0", "3.12.1"]
9
+ "PREVIEW": [
10
+ "3.9.22",
11
+ "3.10.17",
12
+ "3.11.12",
13
+ "3.12.10",
14
+ "3.13.3"
15
+ ],
16
+ "2024.10": [
17
+ "3.9.20",
18
+ "3.10.15",
19
+ "3.11.10",
20
+ "3.12.6",
21
+ "3.13.0"
22
+ ],
23
+ "2024.04": [
24
+ "3.9.19",
25
+ "3.10.14",
26
+ "3.11.8",
27
+ "3.12.2"
28
+ ],
29
+ "2023.12": [
30
+ "3.9.15",
31
+ "3.10.8",
32
+ "3.11.0",
33
+ "3.12.1"
34
+ ]
13
35
  },
14
36
  "micromamba": {
15
- "PREVIEW": "1.5.10",
37
+ "PREVIEW": "2.1.1",
16
38
  "2024.10": "1.5.10",
17
39
  "2024.04": "1.5.8",
18
40
  "2023.12": "1.3.1"
@@ -23,4 +45,4 @@
23
45
  "2024.04": "pip wheel uv",
24
46
  "2023.12": "pip"
25
47
  }
26
- }
48
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.3.dev28
3
+ Version: 1.0.4.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=NZ_rJ9TuMfiNiLg8-gOFgufD5flGtXWPHOZI0gdD3hE,46585
22
22
  modal/app.pyi,sha256=4-b_vbe3lNAqQPcMRpQCEDsE1zsVkQRJGUql9B7HvbM,22659
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=VVeCdcUL3mQ6jiK8C9NF5rskWJk0V_RmTi5kuIvmfR4,8459
25
+ modal/client.pyi,sha256=1HBP9c3U7huNsBnj9mq1qb-HRYvXK8joPasI8oz5jbA,8457
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=dBbeARwOWftlKd1cwtM0cHFtQWSWkwVXwVmOV4w0SyI,37907
@@ -39,20 +39,20 @@ modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
39
39
  modal/file_io.pyi,sha256=oB7x-rKq7bmm8cA7Z7W9C9yeko7KK9m9i5GidFnkGK4,9569
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=iqdp5ixtOOlm8bF-QYbD_G8VKqSRt_AVLT7AWjpn6pQ,16236
42
+ modal/functions.pyi,sha256=5T58OucdNU4I-LqhBdwsWSAGka-Wa8nP2GcZ5K1bOL0,16236
43
43
  modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
44
44
  modal/image.py,sha256=yrI9DCw7GAck3d788GCHJom-_yU55zNu7reNapBhlgE,93284
45
45
  modal/image.pyi,sha256=2xjB6XOZDtm_chDdd90UoIj8pnDt5hCg6bOmu5fNaA4,25625
46
46
  modal/io_streams.py,sha256=YDZVQSDv05DeXg5TwcucC9Rj5hQBx2GXdluan9rIUpw,15467
47
47
  modal/io_streams.pyi,sha256=1UK6kWLREASQfq-wL9wSp5iqjLU0egRZPDn4LXs1PZY,5136
48
- modal/mount.py,sha256=HbSN-45SWLB7MvIeGcBDKa5nP0Z3wFyKIRX-B37Epw4,34637
49
- modal/mount.pyi,sha256=h4yzzppRKvD3JuTTjm9hE2Ye_aUKueTV09F5I_Regjg,13364
48
+ modal/mount.py,sha256=7gdzBNueSjPsgsdisMv1bv5SncEQyWc6D-YlAbpze3s,35523
49
+ modal/mount.pyi,sha256=xuJ3vaz33I9Mk8jxQPjlOxX5NC4WT5rqiazX3faS59U,13630
50
50
  modal/network_file_system.py,sha256=lgtmHYjzA5gDMx0tysH0-WJB2Ao9JD2W15NyYK2A7_w,14612
51
51
  modal/network_file_system.pyi,sha256=58DiUqHGlARmI3cz-Yo7IFObKKFIiGh5UIU5JxGNFfc,8333
52
52
  modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
53
53
  modal/object.pyi,sha256=UkR8NQ1jCIaw3hBUPxBRc6vvrOqtV37G_hsW2O5-4wE,5378
54
54
  modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
55
- modal/parallel_map.py,sha256=zlJTh3NuqlrmxkcZMSXerM2dKytYX3Pr737vBLr9AX4,37428
55
+ modal/parallel_map.py,sha256=1SOOUzKGVItv9fP2WvYR5vl49Y5q2GdupsnJMLIUDUw,37434
56
56
  modal/parallel_map.pyi,sha256=mhYGQmufQEJbjNrX7vNhBS2gUdfBrpmuWNUHth_Dz6U,6140
57
57
  modal/partial_function.py,sha256=SwuAAj2wj4SO6F6nkSnwNZrczEmm9w9YdlQTHh6hr04,1195
58
58
  modal/partial_function.pyi,sha256=NFWz1aCAs2B3-GnPf1cTatWRZOLnYpFKCnjP_X9iNRs,6411
@@ -144,10 +144,10 @@ modal/requirements/2023.12.312.txt,sha256=zWWUVgVQ92GXBKNYYr2-5vn9rlnXcmkqlwlX5u
144
144
  modal/requirements/2023.12.txt,sha256=OjsbXFkCSdkzzryZP82Q73osr5wxQ6EUzmGcK7twfkA,502
145
145
  modal/requirements/2024.04.txt,sha256=6NnrbIE-mflwMyKyQ0tsWeY8XFE1kSW9oE8DVDoD8QU,544
146
146
  modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
147
- modal/requirements/PREVIEW.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
147
+ modal/requirements/PREVIEW.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqrs,312
148
148
  modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
149
- modal/requirements/base-images.json,sha256=57vMSqzMbLBxw5tFWSaMiIkkVEps4JfX5PAtXGnkS4U,740
150
- modal-1.0.3.dev28.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
149
+ modal/requirements/base-images.json,sha256=f1bwyp2UkM844eoO9Qk30gQw_xrMqKpMSeJ6MErXnEk,995
150
+ modal-1.0.4.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=uVgOPKoMW0KtiETLmHvks-6c_oE0fta1z1XcBriC2Vo,121
173
+ modal_version/__init__.py,sha256=V0H2rDQGDIFsvMdzsaZ5eWhMcq0sZQCcl_IN-4nGP6o,120
174
174
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
175
- modal-1.0.3.dev28.dist-info/METADATA,sha256=W_dqTHtQ6kv4rjiMT-9urhM1f6cdT-hn3428Yq6fI6M,2455
176
- modal-1.0.3.dev28.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
177
- modal-1.0.3.dev28.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
178
- modal-1.0.3.dev28.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
179
- modal-1.0.3.dev28.dist-info/RECORD,,
175
+ modal-1.0.4.dev2.dist-info/METADATA,sha256=9xR5HKpkbBYeh-9gvGJSSFRRHW8Ku-mARd767YC_Ys8,2454
176
+ modal-1.0.4.dev2.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
177
+ modal-1.0.4.dev2.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
178
+ modal-1.0.4.dev2.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
179
+ modal-1.0.4.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.3.dev28"
4
+ __version__ = "1.0.4.dev2"