modal 0.74.22__py3-none-any.whl → 0.74.24__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/_functions.py CHANGED
@@ -1126,6 +1126,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1126
1126
  cls: type["_Function"],
1127
1127
  app_name: str,
1128
1128
  name: str,
1129
+ *,
1129
1130
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
1130
1131
  environment_name: Optional[str] = None,
1131
1132
  ) -> "_Function":
@@ -67,6 +67,7 @@ RETRYABLE_GRPC_STATUS_CODES = [
67
67
  Status.UNAVAILABLE,
68
68
  Status.CANCELLED,
69
69
  Status.INTERNAL,
70
+ Status.UNKNOWN,
70
71
  ]
71
72
 
72
73
 
modal/app.py CHANGED
@@ -254,6 +254,7 @@ class _App:
254
254
  @renamed_parameter((2024, 12, 18), "label", "name")
255
255
  async def lookup(
256
256
  name: str,
257
+ *,
257
258
  client: Optional[_Client] = None,
258
259
  environment_name: Optional[str] = None,
259
260
  create_if_missing: bool = False,
@@ -327,6 +328,7 @@ class _App:
327
328
  @asynccontextmanager
328
329
  async def run(
329
330
  self,
331
+ *,
330
332
  client: Optional[_Client] = None,
331
333
  show_progress: Optional[bool] = None,
332
334
  detach: bool = False,
modal/app.pyi CHANGED
@@ -115,6 +115,7 @@ class _App:
115
115
  @staticmethod
116
116
  async def lookup(
117
117
  name: str,
118
+ *,
118
119
  client: typing.Optional[modal.client._Client] = None,
119
120
  environment_name: typing.Optional[str] = None,
120
121
  create_if_missing: bool = False,
@@ -131,6 +132,7 @@ class _App:
131
132
  ) -> typing.AsyncContextManager[None]: ...
132
133
  def run(
133
134
  self,
135
+ *,
134
136
  client: typing.Optional[modal.client._Client] = None,
135
137
  show_progress: typing.Optional[bool] = None,
136
138
  detach: bool = False,
@@ -335,6 +337,7 @@ class App:
335
337
  def __call__(
336
338
  self,
337
339
  name: str,
340
+ *,
338
341
  client: typing.Optional[modal.client.Client] = None,
339
342
  environment_name: typing.Optional[str] = None,
340
343
  create_if_missing: bool = False,
@@ -342,6 +345,7 @@ class App:
342
345
  async def aio(
343
346
  self,
344
347
  name: str,
348
+ *,
345
349
  client: typing.Optional[modal.client.Client] = None,
346
350
  environment_name: typing.Optional[str] = None,
347
351
  create_if_missing: bool = False,
@@ -370,6 +374,7 @@ class App:
370
374
  class __run_spec(typing_extensions.Protocol[SUPERSELF]):
371
375
  def __call__(
372
376
  self,
377
+ *,
373
378
  client: typing.Optional[modal.client.Client] = None,
374
379
  show_progress: typing.Optional[bool] = None,
375
380
  detach: bool = False,
@@ -378,6 +383,7 @@ class App:
378
383
  ) -> synchronicity.combined_types.AsyncAndBlockingContextManager[App]: ...
379
384
  def aio(
380
385
  self,
386
+ *,
381
387
  client: typing.Optional[modal.client.Client] = None,
382
388
  show_progress: typing.Optional[bool] = None,
383
389
  detach: bool = False,
modal/client.pyi CHANGED
@@ -27,7 +27,7 @@ class _Client:
27
27
  _snapshotted: bool
28
28
 
29
29
  def __init__(
30
- self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.22"
30
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.24"
31
31
  ): ...
32
32
  def is_closed(self) -> bool: ...
33
33
  @property
@@ -85,7 +85,7 @@ class Client:
85
85
  _snapshotted: bool
86
86
 
87
87
  def __init__(
88
- self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.22"
88
+ self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.74.24"
89
89
  ): ...
90
90
  def is_closed(self) -> bool: ...
91
91
  @property
modal/cls.py CHANGED
@@ -538,6 +538,7 @@ More information on class parameterization can be found here: https://modal.com/
538
538
  cls: type["_Cls"],
539
539
  app_name: str,
540
540
  name: str,
541
+ *,
541
542
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
542
543
  environment_name: Optional[str] = None,
543
544
  workspace: Optional[str] = None, # Deprecated and unused
@@ -601,6 +602,7 @@ More information on class parameterization can be found here: https://modal.com/
601
602
  @warn_on_renamed_autoscaler_settings
602
603
  def with_options(
603
604
  self: "_Cls",
605
+ *,
604
606
  cpu: Optional[Union[float, tuple[float, float]]] = None,
605
607
  memory: Optional[Union[int, tuple[int, int]]] = None,
606
608
  gpu: GPU_T = None,
modal/cls.pyi CHANGED
@@ -137,12 +137,14 @@ class _Cls(modal._object._Object):
137
137
  cls: type[_Cls],
138
138
  app_name: str,
139
139
  name: str,
140
+ *,
140
141
  namespace=1,
141
142
  environment_name: typing.Optional[str] = None,
142
143
  workspace: typing.Optional[str] = None,
143
144
  ) -> _Cls: ...
144
145
  def with_options(
145
146
  self: _Cls,
147
+ *,
146
148
  cpu: typing.Union[float, tuple[float, float], None] = None,
147
149
  memory: typing.Union[int, tuple[int, int], None] = None,
148
150
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
@@ -198,12 +200,14 @@ class Cls(modal.object.Object):
198
200
  cls: type[Cls],
199
201
  app_name: str,
200
202
  name: str,
203
+ *,
201
204
  namespace=1,
202
205
  environment_name: typing.Optional[str] = None,
203
206
  workspace: typing.Optional[str] = None,
204
207
  ) -> Cls: ...
205
208
  def with_options(
206
209
  self: Cls,
210
+ *,
207
211
  cpu: typing.Union[float, tuple[float, float], None] = None,
208
212
  memory: typing.Union[int, tuple[int, int], None] = None,
209
213
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
modal/dict.py CHANGED
@@ -112,6 +112,7 @@ class _Dict(_Object, type_prefix="di"):
112
112
  def from_name(
113
113
  name: str,
114
114
  data: Optional[dict] = None,
115
+ *,
115
116
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
116
117
  environment_name: Optional[str] = None,
117
118
  create_if_missing: bool = False,
modal/dict.pyi CHANGED
@@ -22,6 +22,7 @@ class _Dict(modal._object._Object):
22
22
  def from_name(
23
23
  name: str,
24
24
  data: typing.Optional[dict] = None,
25
+ *,
25
26
  namespace=1,
26
27
  environment_name: typing.Optional[str] = None,
27
28
  create_if_missing: bool = False,
@@ -73,6 +74,7 @@ class Dict(modal.object.Object):
73
74
  def from_name(
74
75
  name: str,
75
76
  data: typing.Optional[dict] = None,
77
+ *,
76
78
  namespace=1,
77
79
  environment_name: typing.Optional[str] = None,
78
80
  create_if_missing: bool = False,
modal/environments.py CHANGED
@@ -53,6 +53,7 @@ class _Environment(_Object, type_prefix="en"):
53
53
  @renamed_parameter((2024, 12, 18), "label", "name")
54
54
  def from_name(
55
55
  name: str,
56
+ *,
56
57
  create_if_missing: bool = False,
57
58
  ):
58
59
  if name:
modal/environments.pyi CHANGED
@@ -23,7 +23,7 @@ class _Environment(modal._object._Object):
23
23
  def __init__(self): ...
24
24
  def _hydrate_metadata(self, metadata: google.protobuf.message.Message): ...
25
25
  @staticmethod
26
- def from_name(name: str, create_if_missing: bool = False): ...
26
+ def from_name(name: str, *, create_if_missing: bool = False): ...
27
27
  @staticmethod
28
28
  async def lookup(
29
29
  name: str, client: typing.Optional[modal.client._Client] = None, create_if_missing: bool = False
@@ -35,7 +35,7 @@ class Environment(modal.object.Object):
35
35
  def __init__(self): ...
36
36
  def _hydrate_metadata(self, metadata: google.protobuf.message.Message): ...
37
37
  @staticmethod
38
- def from_name(name: str, create_if_missing: bool = False): ...
38
+ def from_name(name: str, *, create_if_missing: bool = False): ...
39
39
 
40
40
  class __lookup_spec(typing_extensions.Protocol):
41
41
  def __call__(
modal/functions.pyi CHANGED
@@ -120,7 +120,7 @@ class Function(
120
120
  def _from_name(cls, app_name: str, name: str, namespace, environment_name: typing.Optional[str]): ...
121
121
  @classmethod
122
122
  def from_name(
123
- cls: type[Function], app_name: str, name: str, namespace=1, environment_name: typing.Optional[str] = None
123
+ cls: type[Function], app_name: str, name: str, *, namespace=1, environment_name: typing.Optional[str] = None
124
124
  ) -> Function: ...
125
125
 
126
126
  class __lookup_spec(typing_extensions.Protocol):
@@ -200,11 +200,11 @@ class Function(
200
200
 
201
201
  _call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
202
202
 
203
- class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
203
+ class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
204
204
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
205
205
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
206
206
 
207
- remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
207
+ remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
208
208
 
209
209
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
210
210
  def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
@@ -219,19 +219,19 @@ class Function(
219
219
  self, *args: modal._functions.P.args, **kwargs: modal._functions.P.kwargs
220
220
  ) -> modal._functions.OriginalReturnType: ...
221
221
 
222
- class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
222
+ class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
223
223
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
224
224
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
225
225
 
226
226
  _experimental_spawn: ___experimental_spawn_spec[
227
- modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
227
+ modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
228
228
  ]
229
229
 
230
- class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
230
+ class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
231
231
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
232
232
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
233
233
 
234
- spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
234
+ spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
235
235
 
236
236
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]: ...
237
237
 
@@ -265,6 +265,7 @@ class Function(
265
265
  def __call__(
266
266
  self,
267
267
  input_iterator: typing.Iterable[typing.Sequence[typing.Any]],
268
+ *,
268
269
  kwargs={},
269
270
  order_outputs: bool = True,
270
271
  return_exceptions: bool = False,
@@ -274,6 +275,7 @@ class Function(
274
275
  input_iterator: typing.Union[
275
276
  typing.Iterable[typing.Sequence[typing.Any]], typing.AsyncIterable[typing.Sequence[typing.Any]]
276
277
  ],
278
+ *,
277
279
  kwargs={},
278
280
  order_outputs: bool = True,
279
281
  return_exceptions: bool = False,
modal/image.py CHANGED
@@ -1236,10 +1236,9 @@ class _Image(_Object, type_prefix="im"):
1236
1236
  def poetry_install_from_file(
1237
1237
  self,
1238
1238
  poetry_pyproject_toml: str,
1239
- # Path to the lockfile. If not provided, uses poetry.lock in the same directory.
1240
- poetry_lockfile: Optional[str] = None,
1241
- # If set to True, it will not use poetry.lock
1242
- ignore_lockfile: bool = False,
1239
+ poetry_lockfile: Optional[str] = None, # Path to lockfile. If not provided, uses poetry.lock in same directory.
1240
+ *,
1241
+ ignore_lockfile: bool = False, # If set to True, do not use poetry.lock, even when present
1243
1242
  # If set to True, use old installer. See https://github.com/python-poetry/poetry/issues/3336
1244
1243
  old_installer: bool = False,
1245
1244
  force_build: bool = False, # Ignore cached builds, similar to 'docker build --no-cache'
@@ -1247,9 +1246,7 @@ class _Image(_Object, type_prefix="im"):
1247
1246
  with_: list[str] = [],
1248
1247
  # Selected optional dependency groups to exclude (See https://python-poetry.org/docs/cli/#install)
1249
1248
  without: list[str] = [],
1250
- # Only install dependency groups specifed in this list.
1251
- only: list[str] = [],
1252
- *,
1249
+ only: list[str] = [], # Only install dependency groups specifed in this list.
1253
1250
  secrets: Sequence[_Secret] = [],
1254
1251
  gpu: GPU_T = None,
1255
1252
  ) -> "_Image":
@@ -1556,8 +1553,8 @@ class _Image(_Object, type_prefix="im"):
1556
1553
  @staticmethod
1557
1554
  def from_registry(
1558
1555
  tag: str,
1559
- *,
1560
1556
  secret: Optional[_Secret] = None,
1557
+ *,
1561
1558
  setup_dockerfile_commands: list[str] = [],
1562
1559
  force_build: bool = False, # Ignore cached builds, similar to 'docker build --no-cache'
1563
1560
  add_python: Optional[str] = None,
@@ -1714,12 +1711,10 @@ class _Image(_Object, type_prefix="im"):
1714
1711
 
1715
1712
  @staticmethod
1716
1713
  def from_dockerfile(
1717
- # Filepath to Dockerfile.
1718
- path: Union[str, Path],
1719
- context_mount: Optional[_Mount] = None, # Deprecated: the context is now inferred
1720
- # Ignore cached builds, similar to 'docker build --no-cache'
1721
- force_build: bool = False,
1714
+ path: Union[str, Path], # Filepath to Dockerfile.
1722
1715
  *,
1716
+ context_mount: Optional[_Mount] = None, # Deprecated: the context is now inferred
1717
+ force_build: bool = False, # Ignore cached builds, similar to 'docker build --no-cache'
1723
1718
  context_dir: Optional[Union[Path, str]] = None, # Context for relative COPY commands
1724
1719
  secrets: Sequence[_Secret] = [],
1725
1720
  gpu: GPU_T = None,
@@ -1901,10 +1896,9 @@ class _Image(_Object, type_prefix="im"):
1901
1896
  def run_function(
1902
1897
  self,
1903
1898
  raw_f: Callable[..., Any],
1899
+ *,
1904
1900
  secrets: Sequence[_Secret] = (), # Optional Modal Secret objects with environment variables for the container
1905
- gpu: Union[
1906
- GPU_T, list[GPU_T]
1907
- ] = None, # GPU request as string ("any", "T4", ...), object (`modal.GPU.A100()`, ...), or a list of either
1901
+ gpu: Union[GPU_T, list[GPU_T]] = None, # Requested GPU or or list of acceptable GPUs( e.g. ["A10", "A100"])
1908
1902
  mounts: Sequence[_Mount] = (), # Mounts attached to the function
1909
1903
  volumes: dict[Union[str, PurePosixPath], Union[_Volume, _CloudBucketMount]] = {}, # Volume mount paths
1910
1904
  network_file_systems: dict[Union[str, PurePosixPath], _NetworkFileSystem] = {}, # NFS mount paths
@@ -1916,7 +1910,6 @@ class _Image(_Object, type_prefix="im"):
1916
1910
  region: Optional[Union[str, Sequence[str]]] = None, # Region or regions to run the function on.
1917
1911
  args: Sequence[Any] = (), # Positional arguments to the function.
1918
1912
  kwargs: dict[str, Any] = {}, # Keyword arguments to the function.
1919
- *,
1920
1913
  include_source: Optional[bool] = None,
1921
1914
  ) -> "_Image":
1922
1915
  """Run user-defined function `raw_f` as an image build step. The function runs just like an ordinary Modal
modal/image.pyi CHANGED
@@ -208,13 +208,13 @@ class _Image(modal._object._Object):
208
208
  self,
209
209
  poetry_pyproject_toml: str,
210
210
  poetry_lockfile: typing.Optional[str] = None,
211
+ *,
211
212
  ignore_lockfile: bool = False,
212
213
  old_installer: bool = False,
213
214
  force_build: bool = False,
214
215
  with_: list[str] = [],
215
216
  without: list[str] = [],
216
217
  only: list[str] = [],
217
- *,
218
218
  secrets: collections.abc.Sequence[modal.secret._Secret] = [],
219
219
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
220
220
  ) -> _Image: ...
@@ -261,8 +261,8 @@ class _Image(modal._object._Object):
261
261
  @staticmethod
262
262
  def from_registry(
263
263
  tag: str,
264
- *,
265
264
  secret: typing.Optional[modal.secret._Secret] = None,
265
+ *,
266
266
  setup_dockerfile_commands: list[str] = [],
267
267
  force_build: bool = False,
268
268
  add_python: typing.Optional[str] = None,
@@ -291,9 +291,9 @@ class _Image(modal._object._Object):
291
291
  @staticmethod
292
292
  def from_dockerfile(
293
293
  path: typing.Union[str, pathlib.Path],
294
+ *,
294
295
  context_mount: typing.Optional[modal.mount._Mount] = None,
295
296
  force_build: bool = False,
296
- *,
297
297
  context_dir: typing.Union[pathlib.Path, str, None] = None,
298
298
  secrets: collections.abc.Sequence[modal.secret._Secret] = [],
299
299
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
@@ -314,6 +314,7 @@ class _Image(modal._object._Object):
314
314
  def run_function(
315
315
  self,
316
316
  raw_f: collections.abc.Callable[..., typing.Any],
317
+ *,
317
318
  secrets: collections.abc.Sequence[modal.secret._Secret] = (),
318
319
  gpu: typing.Union[None, str, modal.gpu._GPUConfig, list[typing.Union[None, str, modal.gpu._GPUConfig]]] = None,
319
320
  mounts: collections.abc.Sequence[modal.mount._Mount] = (),
@@ -332,7 +333,6 @@ class _Image(modal._object._Object):
332
333
  region: typing.Union[str, collections.abc.Sequence[str], None] = None,
333
334
  args: collections.abc.Sequence[typing.Any] = (),
334
335
  kwargs: dict[str, typing.Any] = {},
335
- *,
336
336
  include_source: typing.Optional[bool] = None,
337
337
  ) -> _Image: ...
338
338
  def env(self, vars: dict[str, str]) -> _Image: ...
@@ -470,13 +470,13 @@ class Image(modal.object.Object):
470
470
  self,
471
471
  poetry_pyproject_toml: str,
472
472
  poetry_lockfile: typing.Optional[str] = None,
473
+ *,
473
474
  ignore_lockfile: bool = False,
474
475
  old_installer: bool = False,
475
476
  force_build: bool = False,
476
477
  with_: list[str] = [],
477
478
  without: list[str] = [],
478
479
  only: list[str] = [],
479
- *,
480
480
  secrets: collections.abc.Sequence[modal.secret.Secret] = [],
481
481
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
482
482
  ) -> Image: ...
@@ -523,8 +523,8 @@ class Image(modal.object.Object):
523
523
  @staticmethod
524
524
  def from_registry(
525
525
  tag: str,
526
- *,
527
526
  secret: typing.Optional[modal.secret.Secret] = None,
527
+ *,
528
528
  setup_dockerfile_commands: list[str] = [],
529
529
  force_build: bool = False,
530
530
  add_python: typing.Optional[str] = None,
@@ -553,9 +553,9 @@ class Image(modal.object.Object):
553
553
  @staticmethod
554
554
  def from_dockerfile(
555
555
  path: typing.Union[str, pathlib.Path],
556
+ *,
556
557
  context_mount: typing.Optional[modal.mount.Mount] = None,
557
558
  force_build: bool = False,
558
- *,
559
559
  context_dir: typing.Union[pathlib.Path, str, None] = None,
560
560
  secrets: collections.abc.Sequence[modal.secret.Secret] = [],
561
561
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
@@ -576,6 +576,7 @@ class Image(modal.object.Object):
576
576
  def run_function(
577
577
  self,
578
578
  raw_f: collections.abc.Callable[..., typing.Any],
579
+ *,
579
580
  secrets: collections.abc.Sequence[modal.secret.Secret] = (),
580
581
  gpu: typing.Union[None, str, modal.gpu._GPUConfig, list[typing.Union[None, str, modal.gpu._GPUConfig]]] = None,
581
582
  mounts: collections.abc.Sequence[modal.mount.Mount] = (),
@@ -594,7 +595,6 @@ class Image(modal.object.Object):
594
595
  region: typing.Union[str, collections.abc.Sequence[str], None] = None,
595
596
  args: collections.abc.Sequence[typing.Any] = (),
596
597
  kwargs: dict[str, typing.Any] = {},
597
- *,
598
598
  include_source: typing.Optional[bool] = None,
599
599
  ) -> Image: ...
600
600
  def env(self, vars: dict[str, str]) -> Image: ...
modal/mount.py CHANGED
@@ -688,6 +688,7 @@ class _Mount(_Object, type_prefix="mo"):
688
688
  @renamed_parameter((2024, 12, 18), "label", "name")
689
689
  def from_name(
690
690
  name: str,
691
+ *,
691
692
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
692
693
  environment_name: Optional[str] = None,
693
694
  ) -> "_Mount":
modal/mount.pyi CHANGED
@@ -159,7 +159,7 @@ class _Mount(modal._object._Object):
159
159
  ignore: typing.Union[typing.Sequence[str], collections.abc.Callable[[pathlib.Path], bool], None] = None,
160
160
  ) -> _Mount: ...
161
161
  @staticmethod
162
- def from_name(name: str, namespace=1, environment_name: typing.Optional[str] = None) -> _Mount: ...
162
+ def from_name(name: str, *, namespace=1, environment_name: typing.Optional[str] = None) -> _Mount: ...
163
163
  @classmethod
164
164
  async def lookup(
165
165
  cls: type[_Mount],
@@ -272,7 +272,7 @@ class Mount(modal.object.Object):
272
272
  ignore: typing.Union[typing.Sequence[str], collections.abc.Callable[[pathlib.Path], bool], None] = None,
273
273
  ) -> Mount: ...
274
274
  @staticmethod
275
- def from_name(name: str, namespace=1, environment_name: typing.Optional[str] = None) -> Mount: ...
275
+ def from_name(name: str, *, namespace=1, environment_name: typing.Optional[str] = None) -> Mount: ...
276
276
  @classmethod
277
277
  def lookup(
278
278
  cls: type[Mount],
@@ -92,6 +92,7 @@ class _NetworkFileSystem(_Object, type_prefix="sv"):
92
92
  @renamed_parameter((2024, 12, 18), "label", "name")
93
93
  def from_name(
94
94
  name: str,
95
+ *,
95
96
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
96
97
  environment_name: Optional[str] = None,
97
98
  create_if_missing: bool = False,
@@ -16,7 +16,7 @@ def network_file_system_mount_protos(
16
16
  class _NetworkFileSystem(modal._object._Object):
17
17
  @staticmethod
18
18
  def from_name(
19
- name: str, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
19
+ name: str, *, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
20
20
  ) -> _NetworkFileSystem: ...
21
21
  @classmethod
22
22
  def ephemeral(
@@ -73,7 +73,7 @@ class NetworkFileSystem(modal.object.Object):
73
73
  def __init__(self, *args, **kwargs): ...
74
74
  @staticmethod
75
75
  def from_name(
76
- name: str, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
76
+ name: str, *, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
77
77
  ) -> NetworkFileSystem: ...
78
78
  @classmethod
79
79
  def ephemeral(
modal/parallel_map.py CHANGED
@@ -503,6 +503,7 @@ async def _for_each_async(self, *input_iterators, kwargs={}, ignore_exceptions:
503
503
  async def _starmap_async(
504
504
  self,
505
505
  input_iterator: typing.Union[typing.Iterable[typing.Sequence[Any]], typing.AsyncIterable[typing.Sequence[Any]]],
506
+ *,
506
507
  kwargs={},
507
508
  order_outputs: bool = True,
508
509
  return_exceptions: bool = False,
@@ -529,6 +530,7 @@ async def _starmap_async(
529
530
  def _starmap_sync(
530
531
  self,
531
532
  input_iterator: typing.Iterable[typing.Sequence[Any]],
533
+ *,
532
534
  kwargs={},
533
535
  order_outputs: bool = True,
534
536
  return_exceptions: bool = False,
modal/parallel_map.pyi CHANGED
@@ -72,6 +72,7 @@ def _starmap_async(
72
72
  input_iterator: typing.Union[
73
73
  typing.Iterable[typing.Sequence[typing.Any]], typing.AsyncIterable[typing.Sequence[typing.Any]]
74
74
  ],
75
+ *,
75
76
  kwargs={},
76
77
  order_outputs: bool = True,
77
78
  return_exceptions: bool = False,
@@ -79,6 +80,7 @@ def _starmap_async(
79
80
  def _starmap_sync(
80
81
  self,
81
82
  input_iterator: typing.Iterable[typing.Sequence[typing.Any]],
83
+ *,
82
84
  kwargs={},
83
85
  order_outputs: bool = True,
84
86
  return_exceptions: bool = False,
modal/proxy.py CHANGED
@@ -18,6 +18,7 @@ class _Proxy(_Object, type_prefix="pr"):
18
18
  @staticmethod
19
19
  def from_name(
20
20
  name: str,
21
+ *,
21
22
  environment_name: Optional[str] = None,
22
23
  ) -> "_Proxy":
23
24
  """Reference a Proxy by its name.
modal/proxy.pyi CHANGED
@@ -4,9 +4,9 @@ import typing
4
4
 
5
5
  class _Proxy(modal._object._Object):
6
6
  @staticmethod
7
- def from_name(name: str, environment_name: typing.Optional[str] = None) -> _Proxy: ...
7
+ def from_name(name: str, *, environment_name: typing.Optional[str] = None) -> _Proxy: ...
8
8
 
9
9
  class Proxy(modal.object.Object):
10
10
  def __init__(self, *args, **kwargs): ...
11
11
  @staticmethod
12
- def from_name(name: str, environment_name: typing.Optional[str] = None) -> Proxy: ...
12
+ def from_name(name: str, *, environment_name: typing.Optional[str] = None) -> Proxy: ...
modal/queue.py CHANGED
@@ -148,6 +148,7 @@ class _Queue(_Object, type_prefix="qu"):
148
148
  @renamed_parameter((2024, 12, 18), "label", "name")
149
149
  def from_name(
150
150
  name: str,
151
+ *,
151
152
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
152
153
  environment_name: Optional[str] = None,
153
154
  create_if_missing: bool = False,
modal/queue.pyi CHANGED
@@ -19,7 +19,7 @@ class _Queue(modal._object._Object):
19
19
  ) -> typing.AsyncContextManager[_Queue]: ...
20
20
  @staticmethod
21
21
  def from_name(
22
- name: str, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
22
+ name: str, *, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
23
23
  ) -> _Queue: ...
24
24
  @staticmethod
25
25
  async def lookup(
@@ -100,7 +100,7 @@ class Queue(modal.object.Object):
100
100
  ) -> synchronicity.combined_types.AsyncAndBlockingContextManager[Queue]: ...
101
101
  @staticmethod
102
102
  def from_name(
103
- name: str, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
103
+ name: str, *, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
104
104
  ) -> Queue: ...
105
105
 
106
106
  class __lookup_spec(typing_extensions.Protocol):
modal/schedule.py CHANGED
@@ -74,6 +74,7 @@ class Period(Schedule):
74
74
 
75
75
  def __init__(
76
76
  self,
77
+ *,
77
78
  years: int = 0,
78
79
  months: int = 0,
79
80
  weeks: int = 0,
modal/secret.py CHANGED
@@ -165,6 +165,7 @@ class _Secret(_Object, type_prefix="st"):
165
165
  @renamed_parameter((2024, 12, 18), "label", "name")
166
166
  def from_name(
167
167
  name: str,
168
+ *,
168
169
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
169
170
  environment_name: Optional[str] = None,
170
171
  required_keys: list[
modal/secret.pyi CHANGED
@@ -13,7 +13,7 @@ class _Secret(modal._object._Object):
13
13
  def from_dotenv(path=None, *, filename=".env"): ...
14
14
  @staticmethod
15
15
  def from_name(
16
- name: str, namespace=1, environment_name: typing.Optional[str] = None, required_keys: list[str] = []
16
+ name: str, *, namespace=1, environment_name: typing.Optional[str] = None, required_keys: list[str] = []
17
17
  ) -> _Secret: ...
18
18
  @staticmethod
19
19
  async def lookup(
@@ -43,7 +43,7 @@ class Secret(modal.object.Object):
43
43
  def from_dotenv(path=None, *, filename=".env"): ...
44
44
  @staticmethod
45
45
  def from_name(
46
- name: str, namespace=1, environment_name: typing.Optional[str] = None, required_keys: list[str] = []
46
+ name: str, *, namespace=1, environment_name: typing.Optional[str] = None, required_keys: list[str] = []
47
47
  ) -> Secret: ...
48
48
 
49
49
  class __lookup_spec(typing_extensions.Protocol):
modal/volume.py CHANGED
@@ -145,6 +145,7 @@ class _Volume(_Object, type_prefix="vo"):
145
145
  @renamed_parameter((2024, 12, 18), "label", "name")
146
146
  def from_name(
147
147
  name: str,
148
+ *,
148
149
  namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
149
150
  environment_name: Optional[str] = None,
150
151
  create_if_missing: bool = False,
modal/volume.pyi CHANGED
@@ -44,6 +44,7 @@ class _Volume(modal._object._Object):
44
44
  @staticmethod
45
45
  def from_name(
46
46
  name: str,
47
+ *,
47
48
  namespace=1,
48
49
  environment_name: typing.Optional[str] = None,
49
50
  create_if_missing: bool = False,
@@ -117,6 +118,7 @@ class Volume(modal.object.Object):
117
118
  @staticmethod
118
119
  def from_name(
119
120
  name: str,
121
+ *,
120
122
  namespace=1,
121
123
  environment_name: typing.Optional[str] = None,
122
124
  create_if_missing: bool = False,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 0.74.22
3
+ Version: 0.74.24
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -3,7 +3,7 @@ modal/__main__.py,sha256=sTJcc9EbDuCKSwg3tL6ZckFw9WWdlkXW8mId1IvJCNc,2846
3
3
  modal/_clustered_functions.py,sha256=kTf-9YBXY88NutC1akI-gCbvf01RhMPCw-zoOI_YIUE,2700
4
4
  modal/_clustered_functions.pyi,sha256=vllkegc99A0jrUOWa8mdlSbdp6uz36TsHhGxysAOpaQ,771
5
5
  modal/_container_entrypoint.py,sha256=DymOImhc3uGRkIq_qXmBsEbWMB4EBMpfuXzz2S4BcGg,29404
6
- modal/_functions.py,sha256=XFBnzOUc4MZlJWarnw8iC2za0QciePdnu0yxCW5q5DY,74776
6
+ modal/_functions.py,sha256=IgNdCIpSfducXGS2hcjMLLV0KOLI1yDu9DTxLJ54avA,74787
7
7
  modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
8
8
  modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
9
9
  modal/_object.py,sha256=JBIECWdfpRKCaCxVWZbC3Q1kF5Whk_EKvY9f4Y6AFyg,11446
@@ -18,59 +18,59 @@ modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
18
18
  modal/_tunnel.pyi,sha256=JmmDYAy9F1FpgJ_hWx0xkom2nTOFQjn4mTPYlU3PFo4,1245
19
19
  modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
20
20
  modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
21
- modal/app.py,sha256=pfVe8VH56foho4uqdQJCbn0HST_ihh0qUGqmAMNrfWw,50822
22
- modal/app.pyi,sha256=xM5u8WuGRRAWAQ0m2cd2PowJOgqI3M87hcq-AAM6XBQ,28286
21
+ modal/app.py,sha256=ubXccd3jFdl-xw0zqfxHgLJs07CvYmCW_yKrr0aOo2k,50844
22
+ modal/app.pyi,sha256=PRzDjVakN_pgs6oOibXgrQE1hdHpDEMYy9nxRAGbmx4,28368
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=U-YKSw0n7J1ZLREt9cbEJCtmHe5YoPKFxl0xlkan2yc,15565
25
- modal/client.pyi,sha256=NnTxo1sF21qWO_wYJKpT1ISjiX75dL0P4E4o-JomYaw,7593
25
+ modal/client.pyi,sha256=Y9HsvoeM9GYCE1W9FkzR6BtWFzRaSqJlargDFVv1IdI,7593
26
26
  modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
27
27
  modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
28
- modal/cls.py,sha256=GvaNl8R5UsH7Vg88WEOyerdjvZEPK7xxi3nqHlyOW_c,33497
29
- modal/cls.pyi,sha256=pTYO9JsRENmsa5pDgzfoRJGm_NpCvEjEx--vs-jJkj8,10902
28
+ modal/cls.py,sha256=ByV4st7Ka5mXAW4eBl9WMOmZKq1pSiCT4etpHIcylo8,33519
29
+ modal/cls.pyi,sha256=IbSOur4-TlTSxv5fNxaMb9t7W2wmN_rpQZAS7UXMSbo,10946
30
30
  modal/config.py,sha256=nKlX60bC1O-qAEsbGq-efRX1q25h13RyVnoM_0bnhSw,12229
31
31
  modal/container_process.py,sha256=vvyK3DVPUMsuqvkKdUiQ49cDLF9JawGrxpglLk5vfgI,6208
32
32
  modal/container_process.pyi,sha256=bXs2KHe7nxVuLAm6RRBqXCvDKelANGX9gFY8qIuZYDs,2898
33
- modal/dict.py,sha256=3Pb45IkfqcDGXu3VVStJVbC_QYk6RTRXrMbZxtByAAk,13354
34
- modal/dict.pyi,sha256=kKb0Kc6RUabtQ5Hwslg_vwL_OIrwIAJ2NXrJTepTtp4,7684
35
- modal/environments.py,sha256=mrOaS9hiIQijGWJYIgVKQnwC-kONhWHm1GqoK_9G75E,6924
36
- modal/environments.pyi,sha256=JvSroVOIXDIILL40Z5G4HyY16bmih2YMWMvWL-SFTwo,3373
33
+ modal/dict.py,sha256=7NJVI05hisF9gTuJMYestH9X0LIOaE9PPqbCeYtwSRs,13365
34
+ modal/dict.pyi,sha256=BOeu6bAH0w_wLdYFiaEkSGNhFPBR2a97tQsnION6WAs,7706
35
+ modal/environments.py,sha256=t_TdUyORfIjlEAOS7I4My1qHi0cVsjPxwKloLmAAZMc,6935
36
+ modal/environments.pyi,sha256=RvO31JCujt3nTKaYQ7tMnKhMywQfISk542J04UUrcjI,3379
37
37
  modal/exception.py,sha256=4JyO-SACaLNDe2QC48EjsK8GMkZ8AgEurZ8j1YdRu8E,5263
38
38
  modal/file_io.py,sha256=lcMs_E9Xfm0YX1t9U2wNIBPnqHRxmImqjLW1GHqVmyg,20945
39
39
  modal/file_io.pyi,sha256=NTRft1tbPSWf9TlWVeZmTlgB5AZ_Zhu2srWIrWr7brk,9445
40
40
  modal/file_pattern_matcher.py,sha256=trosX-Bp7dOubudN1bLLhRAoidWy1TcoaR4Pv8CedWw,6497
41
41
  modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
42
- modal/functions.pyi,sha256=xmxnIyhkNJk7VZdAVJnWpP9CVIvi9X5w8t-WrPOJnDc,14805
42
+ modal/functions.pyi,sha256=Q0048f7kLiTJPflAnJXJvaap0JGr9OJPPKvwJwI3cZ0,14838
43
43
  modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
44
- modal/image.py,sha256=I-9_YZL0SSfnuGPywa3-4PlxDmJ-53p7ce3gP74SrOA,92877
45
- modal/image.pyi,sha256=89zv12C1sFrJs7Es9SnX23_m208ASAdeNGCVTrhjzHI,25632
44
+ modal/image.py,sha256=ZCghS6l1O7pezXcdMHk6RoJpW3qWszfWGJTW38lNXaU,92797
45
+ modal/image.pyi,sha256=ddbegF532pDLiVANOJdtJiYoDbbF3mAFrsCiyvIu7jU,25632
46
46
  modal/io_streams.py,sha256=YDZVQSDv05DeXg5TwcucC9Rj5hQBx2GXdluan9rIUpw,15467
47
47
  modal/io_streams.pyi,sha256=RpXIWFm6fQkLJRc1uxd0KkQ2wTLCB65jRlyGplU6CQE,5100
48
- modal/mount.py,sha256=VruBgKrCXD_mmv7iXEfSYERQ3CwH7iqymA3v-5xLGMc,32685
49
- modal/mount.pyi,sha256=CmHa7zKSxHA_7-vMQLnGfw_ZXvAvHlafvUEVJcQ1LQA,12535
50
- modal/network_file_system.py,sha256=YjSv2j-pP4mTtAbxq26OO01xgOzuTy4ZNfMCG6K8k3M,14768
51
- modal/network_file_system.pyi,sha256=fkSIj27UVkQtd7-msWQ-4y1Cvqp2XXq9MX_FzOCKHyk,8123
48
+ modal/mount.py,sha256=_YoJ1TYgttZYGCS-698e8XpExt-mYr994-cMBSOU6EE,32696
49
+ modal/mount.pyi,sha256=GPg4pH1O7B4qH7o4VuX3FPCAnstbQd0h0kffDbjMIk8,12541
50
+ modal/network_file_system.py,sha256=9_4EFTM1tKSTdwk0f4beSlWCiat6gC6ZjbsOWje07TM,14779
51
+ modal/network_file_system.pyi,sha256=C_ZiXmpdkTObapVhAPlRmB4ofmM2D7SdKlUCZVg-1IQ,8129
52
52
  modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
53
53
  modal/object.pyi,sha256=kyJkRQcVv3ct7zSAxvvXcuhBVeH914v80uSlqeS7cA4,5632
54
54
  modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
55
- modal/parallel_map.py,sha256=NN48Xg_qzbL4lbw781-t1HDV19w8lib8-9HofoAKxh4,33856
56
- modal/parallel_map.pyi,sha256=mEenHruPiZDq3ucV_6RM8ctc0c_Qpqra5MBagXeHiiQ,5708
55
+ modal/parallel_map.py,sha256=AriAKT1i4kn45pFW8vAC11teSsuTx3ugIkjPHn97Bfk,33870
56
+ modal/parallel_map.pyi,sha256=I8a3W57-3arsTIUYrW39B3INBrnrY99MLMSBco5whoY,5722
57
57
  modal/partial_function.py,sha256=SwuAAj2wj4SO6F6nkSnwNZrczEmm9w9YdlQTHh6hr04,1195
58
58
  modal/partial_function.pyi,sha256=NFWz1aCAs2B3-GnPf1cTatWRZOLnYpFKCnjP_X9iNRs,6411
59
- modal/proxy.py,sha256=NrOevrWxG3G7-zlyRzG6BcIvop7AWLeyahZxitbBaOk,1418
60
- modal/proxy.pyi,sha256=1OEKIVUyC-xb7fHMzngakQso0nTsK60TVhXtlcMj6Wk,390
59
+ modal/proxy.py,sha256=XEjIHzZvbD3UW4YWyDzbDuNFq6hDUxyPPxupl2qwULY,1429
60
+ modal/proxy.pyi,sha256=FTTK1g3La8oLf0oXWeoTp1jMVKghzN_2UmESJoLvsn0,396
61
61
  modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- modal/queue.py,sha256=OIYmve1a4GTP54Vj2CcLatLPIAWToU7hWBNeu7IJiBY,18985
63
- modal/queue.pyi,sha256=sgvELCK4bJXMZIZw7gllooGFZNipGjI3BT4rmUuyD9M,10282
62
+ modal/queue.py,sha256=6ZPwXhRftUTDfkioZNEZDjITihr3KK9PJ1lTOCA8NrE,18996
63
+ modal/queue.pyi,sha256=_hsU43mInSwb0RtDh7ooPabDLZgGWda693NpxfwdQsA,10288
64
64
  modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
65
65
  modal/runner.py,sha256=yK1mBkX1_ZKvvWLoe1e2mGehJSWs97Mpyglo9Oj5rQw,24783
66
66
  modal/runner.pyi,sha256=HW2pvC_PLwg1Es_EkrfQgMZsktIr9zzVEtmjOVFG6Dw,5351
67
67
  modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
68
68
  modal/sandbox.py,sha256=wM0-AWRJKwwREdUSLaSMn9yTbiWz5VAX9ahpVy0K0nU,32155
69
69
  modal/sandbox.pyi,sha256=cLmSwI1ab-2DgEuXNf6S1PiK63wfUR9dHtxlZtSOuX8,22719
70
- modal/schedule.py,sha256=0ZFpKs1bOxeo5n3HZjoL7OE2ktsb-_oGtq-WJEPO4tY,2615
70
+ modal/schedule.py,sha256=ewa7hb9NKYnoeSCW2PujZAbGGJL8btX6X3KalCFpc_M,2626
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
- modal/secret.py,sha256=U2Jivqdb94eI_BrGCMVbCots8F2gDcbXLMia_gVlej0,10455
73
- modal/secret.pyi,sha256=W4g_BOSxafYm-K9PvFc7-li3a-rsCFNkYgHTZXr1AFA,2974
72
+ modal/secret.py,sha256=VEM3Kh-yLZZIMCfBXyfrZwAOQLwMkleXhYp2FxF0bsA,10466
73
+ modal/secret.pyi,sha256=5SrdJANekeHa2qrd-0iRYADWl5-6MUIlsQnxlx5MopM,2980
74
74
  modal/serving.py,sha256=orZjhyikqk7U77My7GedbVKy65j0_CF7J7mqye86dRw,4650
75
75
  modal/serving.pyi,sha256=KGSaZhg0qwygLmDkhgJedUfWeNSkXsyoOipq10vYffU,1978
76
76
  modal/snapshot.py,sha256=6rQvDP3iX9hdiAudKTy0-m0JESt4kk0q2gusXbaRA-8,1279
@@ -78,8 +78,8 @@ modal/snapshot.pyi,sha256=Ypd4NKsjOTnnnqXyTGGLKq5lkocRrUURYjY5Pi67_qA,670
78
78
  modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
79
79
  modal/token_flow.py,sha256=APNPQhuqy2avu6IY26U6OiN7erRhpo03Ztt1V60_wts,6776
80
80
  modal/token_flow.pyi,sha256=0XV3d-9CGQL3qjPdw3RgwIFVqqxo8Z-u044_mkgAM3o,2064
81
- modal/volume.py,sha256=3c5_aJNJtgpsFRZWBjc0jwn8Zs0jo9V6UDmh6ifrbdA,40145
82
- modal/volume.pyi,sha256=juOVWGlgz7IeOY4M7jBhbeNRPA9xdGUwvA3AzlZUscQ,17958
81
+ modal/volume.py,sha256=4iCJURTNb-10T4HXAEXOCsRys1VLapytjLRrE_tErtM,40156
82
+ modal/volume.pyi,sha256=Mq6w6lI2RTrilzQna1z2DwHznSC-Jte2-sCh1R6mp9s,17980
83
83
  modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
84
84
  modal/_runtime/asgi.py,sha256=KNarxvZI9z8fnmZl2vbkWTjnoLXs9kqOahkrbsTLkyc,22429
85
85
  modal/_runtime/container_io_manager.py,sha256=6j0jO2-s9ShckM4SK45OapoQxWW9HQwQjFaBkXPJPwU,44763
@@ -99,7 +99,7 @@ modal/_utils/docker_utils.py,sha256=h1uETghR40mp_y3fSWuZAfbIASH1HMzuphJHghAL6DU,
99
99
  modal/_utils/function_utils.py,sha256=z6v8A5Ee827K9f2XV1c2_Ea6iv_zcaxbXySER-qW5XQ,26903
100
100
  modal/_utils/git_utils.py,sha256=qtUU6JAttF55ZxYq51y55OR58B0tDPZsZWK5dJe6W5g,3182
101
101
  modal/_utils/grpc_testing.py,sha256=H1zHqthv19eGPJz2HKXDyWXWGSqO4BRsxah3L5Xaa8A,8619
102
- modal/_utils/grpc_utils.py,sha256=oxDMEzr7BzE2NhQn53gnQwKCkpHruTbbBZg8-fuiP7E,8529
102
+ modal/_utils/grpc_utils.py,sha256=YgUfYuOKVYshBmFaIo4VWwcEEIFeZ2VjiVS5Y5K3Lfo,8549
103
103
  modal/_utils/hash_utils.py,sha256=zg3J6OGxTFGSFri1qQ12giDz90lWk8bzaxCTUCRtiX4,3034
104
104
  modal/_utils/http_utils.py,sha256=yeTFsXYr0rYMEhB7vBP7audG9Uc7OLhzKBANFDZWVt0,2451
105
105
  modal/_utils/jwt_utils.py,sha256=fxH9plyrbAemTbjSsQtzIdDXE9QXxvMC4DiUZ16G0aA,1360
@@ -145,7 +145,7 @@ modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddR
145
145
  modal/requirements/PREVIEW.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
146
146
  modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
147
147
  modal/requirements/base-images.json,sha256=57vMSqzMbLBxw5tFWSaMiIkkVEps4JfX5PAtXGnkS4U,740
148
- modal-0.74.22.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
148
+ modal-0.74.24.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
149
149
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
150
150
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
151
151
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
@@ -170,9 +170,9 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
170
170
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
171
  modal_version/__init__.py,sha256=m94xZNWIjH8oUtJk4l9xfovzDJede2o7X-q0MHVECtM,470
172
172
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
173
- modal_version/_version_generated.py,sha256=_YHkedzYAaMz7etjva8YLF62tjGqxAGjl_wAiMAl640,149
174
- modal-0.74.22.dist-info/METADATA,sha256=MssMtDGV-b1r-3_CVID4rkteD8bttMxjko4-RSH4XJs,2474
175
- modal-0.74.22.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
176
- modal-0.74.22.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
177
- modal-0.74.22.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
178
- modal-0.74.22.dist-info/RECORD,,
173
+ modal_version/_version_generated.py,sha256=m5CDG44HwflYMLaE_Lg04QyOmp-qa5EHz9BFwcfamHo,149
174
+ modal-0.74.24.dist-info/METADATA,sha256=BaPo1Sc5Mynqdud5AED0r_FInzSlR0SYZtsRNXWwFuU,2474
175
+ modal-0.74.24.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
176
+ modal-0.74.24.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
177
+ modal-0.74.24.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
178
+ modal-0.74.24.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
 
3
3
  # Note: Reset this value to -1 whenever you make a minor `0.X` release of the client.
4
- build_number = 22 # git: daaa00c
4
+ build_number = 24 # git: f795616