modal 1.0.0.dev14__py3-none-any.whl → 1.0.0.dev16__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/__init__.py CHANGED
@@ -11,7 +11,7 @@ from modal_version import __version__
11
11
  try:
12
12
  from ._runtime.execution_context import current_function_call_id, current_input_id, interact, is_local
13
13
  from ._tunnel import Tunnel, forward
14
- from .app import App, Stub
14
+ from .app import App
15
15
  from .client import Client
16
16
  from .cloud_bucket_mount import CloudBucketMount
17
17
  from .cls import Cls, parameter
@@ -54,6 +54,7 @@ except Exception:
54
54
  print()
55
55
  raise
56
56
 
57
+
57
58
  __all__ = [
58
59
  "__version__",
59
60
  "App",
@@ -77,7 +78,6 @@ __all__ = [
77
78
  "SandboxSnapshot",
78
79
  "SchedulerPlacement",
79
80
  "Secret",
80
- "Stub",
81
81
  "Tunnel",
82
82
  "Volume",
83
83
  "asgi_app",
@@ -99,3 +99,11 @@ __all__ = [
99
99
  "web_server",
100
100
  "wsgi_app",
101
101
  ]
102
+
103
+
104
+ def __getattr__(name):
105
+ if name == "Stub":
106
+ raise AttributeError(
107
+ "Module 'modal' has no attribute 'Stub'. Use `modal.App` instead. This is a simple name change."
108
+ )
109
+ raise AttributeError(f"module 'modal' has no attribute '{name}'")
modal/_functions.py CHANGED
@@ -1508,20 +1508,6 @@ Use the `Function.get_web_url()` method instead.
1508
1508
  async for res in invocation.run_generator():
1509
1509
  yield res
1510
1510
 
1511
- @synchronizer.no_io_translation
1512
- async def _call_generator_nowait(self, args, kwargs):
1513
- deprecation_warning(
1514
- (2024, 12, 11),
1515
- "Calling spawn on a generator function is deprecated and will soon raise an exception.",
1516
- )
1517
- return await _Invocation.create(
1518
- self,
1519
- args,
1520
- kwargs,
1521
- client=self.client,
1522
- function_call_invocation_type=api_pb2.FUNCTION_CALL_INVOCATION_TYPE_ASYNC,
1523
- )
1524
-
1525
1511
  @synchronizer.no_io_translation
1526
1512
  @live_method
1527
1513
  async def remote(self, *args: P.args, **kwargs: P.kwargs) -> ReturnType:
@@ -1634,7 +1620,7 @@ Use the `Function.get_web_url()` method instead.
1634
1620
  """
1635
1621
  self._check_no_web_url("_experimental_spawn")
1636
1622
  if self._is_generator:
1637
- invocation = await self._call_generator_nowait(args, kwargs)
1623
+ raise InvalidError("Cannot `spawn` a generator function.")
1638
1624
  else:
1639
1625
  invocation = await self._call_function_nowait(
1640
1626
  args, kwargs, function_call_invocation_type=api_pb2.FUNCTION_CALL_INVOCATION_TYPE_ASYNC
@@ -1666,14 +1652,13 @@ Use the `Function.get_web_url()` method instead.
1666
1652
  """
1667
1653
  self._check_no_web_url("spawn")
1668
1654
  if self._is_generator:
1669
- invocation = await self._call_generator_nowait(args, kwargs)
1655
+ raise InvalidError("Cannot `spawn` a generator function.")
1670
1656
  else:
1671
1657
  invocation = await self._call_function_nowait(args, kwargs, api_pb2.FUNCTION_CALL_INVOCATION_TYPE_ASYNC)
1672
1658
 
1673
1659
  fc: _FunctionCall[ReturnType] = _FunctionCall._new_hydrated(
1674
1660
  invocation.function_call_id, invocation.client, None
1675
1661
  )
1676
- fc._is_generator = self._is_generator if self._is_generator else False
1677
1662
  return fc
1678
1663
 
1679
1664
  def get_raw_f(self) -> Callable[..., Any]:
@@ -1732,22 +1717,8 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
1732
1717
 
1733
1718
  The returned coroutine is not cancellation-safe.
1734
1719
  """
1735
-
1736
- if self._is_generator:
1737
- raise Exception("Cannot get the result of a generator function call. Use `get_gen` instead.")
1738
-
1739
1720
  return await self._invocation().poll_function(timeout=timeout)
1740
1721
 
1741
- async def get_gen(self) -> AsyncGenerator[Any, None]:
1742
- """
1743
- Calls the generator remotely, executing it with the given arguments and returning the execution's result.
1744
- """
1745
- if not self._is_generator:
1746
- raise Exception("Cannot iterate over a non-generator function call. Use `get` instead.")
1747
-
1748
- async for res in self._invocation().run_generator():
1749
- yield res
1750
-
1751
1722
  async def get_call_graph(self) -> list[InputInfo]:
1752
1723
  """Returns a structure representing the call graph from a given root
1753
1724
  call ID, along with the status of execution for each node.
@@ -1778,9 +1749,7 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
1778
1749
  await retry_transient_errors(self._client.stub.FunctionCallCancel, request)
1779
1750
 
1780
1751
  @staticmethod
1781
- async def from_id(
1782
- function_call_id: str, client: Optional[_Client] = None, is_generator: bool = False
1783
- ) -> "_FunctionCall[Any]":
1752
+ async def from_id(function_call_id: str, client: Optional[_Client] = None) -> "_FunctionCall[Any]":
1784
1753
  """Instantiate a FunctionCall object from an existing ID.
1785
1754
 
1786
1755
  Examples:
@@ -1803,7 +1772,6 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
1803
1772
  client = await _Client.from_env()
1804
1773
 
1805
1774
  fc: _FunctionCall[Any] = _FunctionCall._new_hydrated(function_call_id, client, None)
1806
- fc._is_generator = is_generator
1807
1775
  return fc
1808
1776
 
1809
1777
  @staticmethod
modal/app.py CHANGED
@@ -1,7 +1,6 @@
1
1
  # Copyright Modal Labs 2022
2
2
  import inspect
3
3
  import typing
4
- import warnings
5
4
  from collections.abc import AsyncGenerator, Coroutine, Sequence
6
5
  from pathlib import PurePosixPath
7
6
  from textwrap import dedent
@@ -78,11 +77,6 @@ class _LocalEntrypoint:
78
77
  def app(self) -> "_App":
79
78
  return self._app
80
79
 
81
- @property
82
- def stub(self) -> "_App":
83
- # Deprecated soon, only for backwards compatibility
84
- return self._app
85
-
86
80
 
87
81
  LocalEntrypoint = synchronize_api(_LocalEntrypoint)
88
82
 
@@ -781,12 +775,6 @@ class _App:
781
775
  rdma = None
782
776
  i6pn_enabled = i6pn
783
777
 
784
- if info.function_name.endswith(".app"):
785
- warnings.warn(
786
- "Beware: the function name is `app`. Modal will soon rename `Stub` to `App`, "
787
- "so you might run into issues if you have code like `app = modal.App()` in the same scope"
788
- )
789
-
790
778
  if is_generator is None:
791
779
  is_generator = inspect.isgeneratorfunction(raw_f) or inspect.isasyncgenfunction(raw_f)
792
780
 
@@ -1096,23 +1084,3 @@ class _App:
1096
1084
 
1097
1085
 
1098
1086
  App = synchronize_api(_App)
1099
-
1100
-
1101
- class _Stub(_App):
1102
- """mdmd:hidden
1103
- This enables using a "Stub" class instead of "App".
1104
-
1105
- For most of Modal's history, the app class was called "Stub", so this exists for
1106
- backwards compatibility, in order to facilitate moving from "Stub" to "App".
1107
- """
1108
-
1109
- def __new__(cls, *args, **kwargs):
1110
- deprecation_warning(
1111
- (2024, 4, 29),
1112
- 'The use of "Stub" has been deprecated in favor of "App".'
1113
- " This is a pure name change with no other implications.",
1114
- )
1115
- return _App(*args, **kwargs)
1116
-
1117
-
1118
- Stub = synchronize_api(_Stub)
modal/app.pyi CHANGED
@@ -33,8 +33,6 @@ class _LocalEntrypoint:
33
33
  def info(self) -> modal._utils.function_utils.FunctionInfo: ...
34
34
  @property
35
35
  def app(self) -> _App: ...
36
- @property
37
- def stub(self) -> _App: ...
38
36
 
39
37
  class LocalEntrypoint:
40
38
  _info: modal._utils.function_utils.FunctionInfo
@@ -46,8 +44,6 @@ class LocalEntrypoint:
46
44
  def info(self) -> modal._utils.function_utils.FunctionInfo: ...
47
45
  @property
48
46
  def app(self) -> App: ...
49
- @property
50
- def stub(self) -> App: ...
51
47
 
52
48
  def check_sequence(items: typing.Sequence[typing.Any], item_type: type[typing.Any], error_msg: str) -> None: ...
53
49
 
@@ -520,29 +516,4 @@ class App:
520
516
  @classmethod
521
517
  def _reset_container_app(cls): ...
522
518
 
523
- class _Stub(_App):
524
- @staticmethod
525
- def __new__(
526
- cls,
527
- name: typing.Optional[str] = None,
528
- *,
529
- image: typing.Optional[modal.image._Image] = None,
530
- mounts: collections.abc.Sequence[modal.mount._Mount] = [],
531
- secrets: collections.abc.Sequence[modal.secret._Secret] = [],
532
- volumes: dict[typing.Union[str, pathlib.PurePosixPath], modal.volume._Volume] = {},
533
- include_source: typing.Optional[bool] = None,
534
- ): ...
535
-
536
- class Stub(App):
537
- def __init__(
538
- self,
539
- name: typing.Optional[str] = None,
540
- *,
541
- image: typing.Optional[modal.image.Image] = None,
542
- mounts: collections.abc.Sequence[modal.mount.Mount] = [],
543
- secrets: collections.abc.Sequence[modal.secret.Secret] = [],
544
- volumes: dict[typing.Union[str, pathlib.PurePosixPath], modal.volume.Volume] = {},
545
- include_source: typing.Optional[bool] = None,
546
- ) -> None: ...
547
-
548
519
  _default_image: modal.image._Image
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.0.dev14",
34
+ version: str = "1.0.0.dev16",
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.0.dev14",
97
+ version: str = "1.0.0.dev16",
98
98
  ): ...
99
99
  def is_closed(self) -> bool: ...
100
100
  @property
modal/exception.py CHANGED
@@ -116,7 +116,7 @@ class InternalFailure(Error):
116
116
 
117
117
  class _CliUserExecutionError(Exception):
118
118
  """mdmd:hidden
119
- Private wrapper for exceptions during when importing or running stubs from the CLI.
119
+ Private wrapper for exceptions during when importing or running Apps from the CLI.
120
120
 
121
121
  This intentionally does not inherit from `modal.exception.Error` because it
122
122
  is a private type that should never bubble up to users. Exceptions raised in
modal/functions.pyi CHANGED
@@ -228,12 +228,6 @@ class Function(
228
228
 
229
229
  _call_generator: ___call_generator_spec[typing_extensions.Self]
230
230
 
231
- class ___call_generator_nowait_spec(typing_extensions.Protocol[SUPERSELF]):
232
- def __call__(self, /, args, kwargs): ...
233
- async def aio(self, /, args, kwargs): ...
234
-
235
- _call_generator_nowait: ___call_generator_nowait_spec[typing_extensions.Self]
236
-
237
231
  class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
238
232
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
239
233
  async def aio(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
@@ -350,12 +344,6 @@ class FunctionCall(typing.Generic[modal._functions.ReturnType], modal.object.Obj
350
344
 
351
345
  get: __get_spec[modal._functions.ReturnType, typing_extensions.Self]
352
346
 
353
- class __get_gen_spec(typing_extensions.Protocol[SUPERSELF]):
354
- def __call__(self, /) -> typing.Generator[typing.Any, None, None]: ...
355
- def aio(self, /) -> collections.abc.AsyncGenerator[typing.Any, None]: ...
356
-
357
- get_gen: __get_gen_spec[typing_extensions.Self]
358
-
359
347
  class __get_call_graph_spec(typing_extensions.Protocol[SUPERSELF]):
360
348
  def __call__(self, /) -> list[modal.call_graph.InputInfo]: ...
361
349
  async def aio(self, /) -> list[modal.call_graph.InputInfo]: ...
@@ -370,18 +358,10 @@ class FunctionCall(typing.Generic[modal._functions.ReturnType], modal.object.Obj
370
358
 
371
359
  class __from_id_spec(typing_extensions.Protocol):
372
360
  def __call__(
373
- self,
374
- /,
375
- function_call_id: str,
376
- client: typing.Optional[modal.client.Client] = None,
377
- is_generator: bool = False,
361
+ self, /, function_call_id: str, client: typing.Optional[modal.client.Client] = None
378
362
  ) -> FunctionCall[typing.Any]: ...
379
363
  async def aio(
380
- self,
381
- /,
382
- function_call_id: str,
383
- client: typing.Optional[modal.client.Client] = None,
384
- is_generator: bool = False,
364
+ self, /, function_call_id: str, client: typing.Optional[modal.client.Client] = None
385
365
  ) -> FunctionCall[typing.Any]: ...
386
366
 
387
367
  from_id: __from_id_spec
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.0.dev14
3
+ Version: 1.0.0.dev16
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1,9 +1,9 @@
1
- modal/__init__.py,sha256=7wz1AT_bpWJJEzXsAo3QMb7i87y7UGXwfneb0bGDhRg,2502
1
+ modal/__init__.py,sha256=AaO8fXHO6BYltmFoYOwCB2pSjEECXVvGK5p2Vfo_SpU,2752
2
2
  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=2aWxN2v5WUnj-R-sk6BzJ-3AvggkQGQjwhtvbDH3pds,777
5
5
  modal/_container_entrypoint.py,sha256=2Zx9O_EMJg0H77EdnC2vGKs6uFMWwbP1NLFf-qYmWmU,28962
6
- modal/_functions.py,sha256=n2ejNhlMNyiM_wxyTF2_-jUr3cvoSltVGcsRpcGAofE,79180
6
+ modal/_functions.py,sha256=8ZHWZu2su2bbWb_QXjr9S2KfZemKxuMSxCansbVd0VY,77970
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=KzzzZoM41UQUiY9TKOrft9BtZKgjWG_ukdlyLGjB4UY,10758
@@ -18,11 +18,11 @@ modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
18
18
  modal/_tunnel.pyi,sha256=a4Ea0RQ5jaJB0A4LH9FANGB44ObqkHHGVDV4RwtokzU,1251
19
19
  modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
20
20
  modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
21
- modal/app.py,sha256=HuZu6c3CExccRcBfA7Geh-c_ajWGHB2w0xlVyDIVXlg,48146
22
- modal/app.pyi,sha256=JT6UkaK3bq9TTYLtxHmjApmuEPHM6XZvLCSaCEAIm0E,24219
21
+ modal/app.py,sha256=Wz9DIFzO2ByObuqoh3zk9B76WTWcPqYoQDuPU-yrLTU,47100
22
+ modal/app.pyi,sha256=1dHHI6RgvJ1y5Ouzb1_S-wpjfjCL7QHz0gqE4BxMw10,23192
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=o-aQThHpvDHUzg_kUafyhWzACViUBhY2WLZ2EitnSHA,16787
25
- modal/client.pyi,sha256=C19wDiRmUfMS0NWjgxkzpqe8iVa83xyu6DapDexDmuE,8459
25
+ modal/client.pyi,sha256=e6ghxi754Z0WfJ_zMQ8mrthEitSVfS-QZ_AgzWWVUlc,8459
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
@@ -34,12 +34,12 @@ modal/dict.py,sha256=w-Zuk3FXuwkyxKuF1ry86S8j2cvoC8-u4Ga0h-GfV1s,14324
34
34
  modal/dict.pyi,sha256=RBaQyOd1ABRNN7vIf5L_rv94y7Kq5Qn9IlKHSr4j8N0,8120
35
35
  modal/environments.py,sha256=gHFNLG78bqgizpQ4w_elz27QOqmcgAonFsmLs7NjUJ4,6804
36
36
  modal/environments.pyi,sha256=4HbI0kywveaUVI7HqDtZ4HphCTGXYi_wie2hz87up5A,3425
37
- modal/exception.py,sha256=4JyO-SACaLNDe2QC48EjsK8GMkZ8AgEurZ8j1YdRu8E,5263
37
+ modal/exception.py,sha256=cDiZMzkKZ2nLhaYG0Dt-_1YZs5LZEyUJNF05WqyCX90,5262
38
38
  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=0RGY6ZEkaHZcxhKrY_DnwYew9vDIK7hW8BY0LFjm2GM,17001
42
+ modal/functions.pyi,sha256=cllJF89sCKlX82On69XG8XlETgI364xF7Hsj3kxJaeU,16304
43
43
  modal/gpu.py,sha256=Kbhs_u49FaC2Zi0TjCdrpstpRtT5eZgecynmQi5IZVE,6752
44
44
  modal/image.py,sha256=glnu6LDf3iFq71CGVstHx40CKVN4rw8tukPLAy5JgTQ,92464
45
45
  modal/image.pyi,sha256=NbegOjy6QX_SL-eTxtJm1_4gOJHW04Ja449QHZIdKgU,25586
@@ -146,7 +146,7 @@ modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddR
146
146
  modal/requirements/PREVIEW.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
147
147
  modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
148
148
  modal/requirements/base-images.json,sha256=57vMSqzMbLBxw5tFWSaMiIkkVEps4JfX5PAtXGnkS4U,740
149
- modal-1.0.0.dev14.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
149
+ modal-1.0.0.dev16.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
150
150
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
151
151
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
152
152
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
@@ -169,10 +169,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
169
169
  modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
170
170
  modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
171
171
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
- modal_version/__init__.py,sha256=QmxfDN_Pb98otTMAjgLVfOaVZb6eomqwBOF8uqbmvrI,121
172
+ modal_version/__init__.py,sha256=-BSzjamBYi1bfz_PGPNWb6JtCWPr4i-Q5Txuq0wPwPs,121
173
173
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
174
- modal-1.0.0.dev14.dist-info/METADATA,sha256=vXEUlkRYPfpijnZrkjhIxCaWF0pENgYw9l4E0aXKLtI,2455
175
- modal-1.0.0.dev14.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
176
- modal-1.0.0.dev14.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
177
- modal-1.0.0.dev14.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
178
- modal-1.0.0.dev14.dist-info/RECORD,,
174
+ modal-1.0.0.dev16.dist-info/METADATA,sha256=0sLq92t_upACBNZHkXXnirRuo-15pDljGA8vKq21a8g,2455
175
+ modal-1.0.0.dev16.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
176
+ modal-1.0.0.dev16.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
177
+ modal-1.0.0.dev16.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
178
+ modal-1.0.0.dev16.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.0.dev14"
4
+ __version__ = "1.0.0.dev16"