modal 0.66.48__py3-none-any.whl → 0.66.50__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/_resolver.py CHANGED
@@ -130,9 +130,14 @@ class Resolver:
130
130
  raise NotFoundError(exc.message)
131
131
  raise
132
132
 
133
- # Check that the id of functions and classes didn't change
133
+ # Check that the id of functions didn't change
134
134
  # Persisted refs are ignored because their life cycle is managed independently.
135
- if not obj._is_another_app and existing_object_id is not None and obj.object_id != existing_object_id:
135
+ if (
136
+ not obj._is_another_app
137
+ and existing_object_id is not None
138
+ and existing_object_id.startswith("fu-")
139
+ and obj.object_id != existing_object_id
140
+ ):
136
141
  raise Exception(
137
142
  f"Tried creating an object using existing id {existing_object_id}"
138
143
  f" but it has id {obj.object_id}"
modal/cli/config.py CHANGED
@@ -3,6 +3,7 @@ import typer
3
3
  from rich.console import Console
4
4
 
5
5
  from modal.config import _profile, _store_user_config, config
6
+ from modal.environments import Environment
6
7
 
7
8
  config_cli = typer.Typer(
8
9
  name="config",
@@ -38,6 +39,8 @@ when running a command that requires an environment.
38
39
 
39
40
  @config_cli.command(help=SET_DEFAULT_ENV_HELP)
40
41
  def set_environment(environment_name: str):
42
+ # Confirm that the environment exists by looking it up
43
+ Environment.lookup(environment_name)
41
44
  _store_user_config({"environment": environment_name})
42
45
  typer.echo(f"New default environment for profile {_profile}: {environment_name}")
43
46
 
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[typing.Tuple[str, str]],
34
- version: str = "0.66.48",
34
+ version: str = "0.66.50",
35
35
  ): ...
36
36
  def is_closed(self) -> bool: ...
37
37
  @property
@@ -90,7 +90,7 @@ class Client:
90
90
  server_url: str,
91
91
  client_type: int,
92
92
  credentials: typing.Optional[typing.Tuple[str, str]],
93
- version: str = "0.66.48",
93
+ version: str = "0.66.50",
94
94
  ): ...
95
95
  def is_closed(self) -> bool: ...
96
96
  @property
modal/config.py CHANGED
@@ -268,7 +268,7 @@ class Config:
268
268
  return repr(self.to_dict())
269
269
 
270
270
  def to_dict(self):
271
- return {key: self.get(key) for key in _SETTINGS.keys()}
271
+ return {key: self.get(key) for key in sorted(_SETTINGS)}
272
272
 
273
273
 
274
274
  config = Config()
modal/functions.pyi CHANGED
@@ -446,11 +446,11 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
446
446
 
447
447
  _call_generator_nowait: ___call_generator_nowait_spec
448
448
 
449
- class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
449
+ class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
450
450
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
451
451
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
452
452
 
453
- remote: __remote_spec[ReturnType, P]
453
+ remote: __remote_spec[P, ReturnType]
454
454
 
455
455
  class __remote_gen_spec(typing_extensions.Protocol):
456
456
  def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
@@ -462,17 +462,17 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
462
462
  def _get_obj(self) -> typing.Optional[modal.cls.Obj]: ...
463
463
  def local(self, *args: P.args, **kwargs: P.kwargs) -> OriginalReturnType: ...
464
464
 
465
- class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
465
+ class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
466
466
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
467
467
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
468
468
 
469
- _experimental_spawn: ___experimental_spawn_spec[ReturnType, P]
469
+ _experimental_spawn: ___experimental_spawn_spec[P, ReturnType]
470
470
 
471
- class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
471
+ class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
472
472
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
473
473
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
474
474
 
475
- spawn: __spawn_spec[ReturnType, P]
475
+ spawn: __spawn_spec[P, ReturnType]
476
476
 
477
477
  def get_raw_f(self) -> typing.Callable[..., typing.Any]: ...
478
478
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: modal
3
- Version: 0.66.48
3
+ Version: 0.66.50
4
4
  Summary: Python client library for Modal
5
5
  Author: Modal Labs
6
6
  Author-email: support@modal.com
@@ -8,7 +8,7 @@ modal/_location.py,sha256=S3lSxIU3h9HkWpkJ3Pwo0pqjIOSB1fjeSgUsY3x7eec,1202
8
8
  modal/_output.py,sha256=SMaLrf1btBzHTV_tH5NzA8ZTWNJh5J0b31iG3sQU8_4,25494
9
9
  modal/_proxy_tunnel.py,sha256=gnKyCfmVB7x2d1A6c-JDysNIP3kEFxmXzhcXhPrzPn0,1906
10
10
  modal/_pty.py,sha256=GhzrHKZpoI-YHMDN7LoySlSYLpoJ4yGPSF-fqiNsFrM,1336
11
- modal/_resolver.py,sha256=b8dHlCzQP7Xpagw5JfWdc1SqAQ5VbTaJmXnv3t-kX9k,6631
11
+ modal/_resolver.py,sha256=s2YSLnpZbwUQHLs2ahltvEVDMLRYyIagdTcWr2-qkeA,6760
12
12
  modal/_resources.py,sha256=zTCcXvmG1erERnTvUcN0r4IjjwVEs4N8fs7OnkpvbJQ,1740
13
13
  modal/_serialization.py,sha256=b1X44hDP7WDTX3iz3HrPyFJJz51a69luq5Tyhnm1fK0,18762
14
14
  modal/_traceback.py,sha256=1yNp1Dqq4qRIQp8idDp5PEqjwH4eA8MNI0FhFkCOFgo,4408
@@ -19,12 +19,12 @@ modal/app.py,sha256=ZQux8ZGLblIWbKHn7s15mucx97EwbjJso9WKRTYYOf0,45208
19
19
  modal/app.pyi,sha256=sX2BXX_178lp8O_GvwZqsxDdxQi1j3DjNfthMvlMlJU,25273
20
20
  modal/call_graph.py,sha256=l-Wi6vM8aosCdHTWegcCyGeVJGFdZ_fzlCmbRVPBXFI,2593
21
21
  modal/client.py,sha256=4SpWb4n0nolITR36kADZl1tYLOg6avukmzZU56UQjCo,16385
22
- modal/client.pyi,sha256=OwqZyJGr-WduAK8NsbCxSz_xwD-Cl157xm6h4LFumWc,7372
22
+ modal/client.pyi,sha256=WsQ9bDrSHJSCa_xKRMoYw6PEOP_ECRJoi3bI8fdUgdQ,7372
23
23
  modal/cloud_bucket_mount.py,sha256=eWQhCtMIczpokjfTZEgNBCGO_s5ft46PqTSLfKBykq4,5748
24
24
  modal/cloud_bucket_mount.pyi,sha256=tTF7M4FR9bTA30cFkz8qq3ZTlFL19NHU_36e_5GgAGA,1424
25
25
  modal/cls.py,sha256=apKnBOHKYEpBiMC8mRvHtCDJl1g0vP0tG1r8mUZ1yH0,24684
26
26
  modal/cls.pyi,sha256=om3xQuHTMu7q_32BDKJjAz4oP_7Z5JWV27kyDKTPFI8,8332
27
- modal/config.py,sha256=oVmvclQ2Qlt-VmL3wEp8DgDrnTPh_K5UBEYrSXv4C4s,10928
27
+ modal/config.py,sha256=bij_YRIynxQtwDmS73BNMR9YZf6CHcqbFYdfRqDrWV0,10929
28
28
  modal/container_process.py,sha256=c_jBPtyPeSxbIcbLfs_FzTrt-1eErtRSnsfxkDozFoY,5589
29
29
  modal/container_process.pyi,sha256=k2kClwaSzz11eci1pzFZgCm-ptXapHAyHTOENorlazA,2594
30
30
  modal/dict.py,sha256=axbUKiXhgOVvE1IrNMK3uHg3rp3N0Uji5elQNijnhH4,12571
@@ -34,7 +34,7 @@ modal/environments.pyi,sha256=oScvFAclF55-tL9UioLIL_SPBwgy_9O-BBvJ-PLbRgY,3542
34
34
  modal/exception.py,sha256=K-czk1oK8wFvK8snWrytXSByo2WNb9SJAlgBVPGWZBs,6417
35
35
  modal/experimental.py,sha256=jFuNbwrNHos47viMB9q-cHJSvf2RDxDdoEcss9plaZE,2302
36
36
  modal/functions.py,sha256=BxccB-3a1migZQ6JA6iiHZJQ7WQ-jYpmg9DEZoTxzcc,71639
37
- modal/functions.pyi,sha256=5JGM4Mhpm674Ia7h3OTsPBmZA32goyOs2oBCCUG8A3I,24800
37
+ modal/functions.pyi,sha256=0JsvWf9vvj2fMSNIHoXmL9FS7sWoRU4hU6911PyqEls,24800
38
38
  modal/gpu.py,sha256=r4rL6uH3UJIQthzYvfWauXNyh01WqCPtKZCmmSX1fd4,6881
39
39
  modal/image.py,sha256=j-NH8pLWk4jd5UOGD4y6W7DHWoeb3rG_VR7zPLSqj-Q,78927
40
40
  modal/image.pyi,sha256=QEjjnl4ZSmqt7toHww5ZbhL2Re5qaFGgH7qADcJS_vA,24493
@@ -103,7 +103,7 @@ modal/cli/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
103
103
  modal/cli/_download.py,sha256=9onXaExi55VJowurB5eDSSCZHyt9NwtS8iLn6Il0WwY,3964
104
104
  modal/cli/_traceback.py,sha256=SWa-emP5A63gvfspJsZgxWQbl_xif8nkIqkvukyG61Y,6954
105
105
  modal/cli/app.py,sha256=KqH4eS_w9rbdactdqSJEx8kVUalFPJ_jpsbdHuvwSTI,7722
106
- modal/cli/config.py,sha256=zfuvXLrQBlxjdmEeXKl6WX6bGXDsFovje114cmkMwak,1524
106
+ modal/cli/config.py,sha256=pXPLmX0bIoV57rQNqIPK7V-yllj-GPRY4jiBO_EklGg,1667
107
107
  modal/cli/container.py,sha256=LGrF9iz8D3PGst6IUl0VB1Y1LJ0BWLrNRNFxWa4z-tg,3199
108
108
  modal/cli/dict.py,sha256=lIEl6uxygFt3omC-oF6tHUxnFjVhy4d0InC_kZrlkvM,4454
109
109
  modal/cli/entry_point.py,sha256=aaNxFAqZcmtSjwzkYIA_Ba9CkL4cL4_i2gy5VjoXxkM,4228
@@ -159,10 +159,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
159
159
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
160
  modal_version/__init__.py,sha256=UnAuHBPuPSstqgdCOx0SBVdfhpeJnMlY_oxEbu44Izg,470
161
161
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
162
- modal_version/_version_generated.py,sha256=s6ccZZ3yL2JQUo8MQ7AFG_3X3ISxs4x-0mV2G2TxRoI,149
163
- modal-0.66.48.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
164
- modal-0.66.48.dist-info/METADATA,sha256=Atopb7dtPHi9exqYvy9KBIVNFr02eYy-7RqJ6yc2_L0,2329
165
- modal-0.66.48.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
166
- modal-0.66.48.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
167
- modal-0.66.48.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
168
- modal-0.66.48.dist-info/RECORD,,
162
+ modal_version/_version_generated.py,sha256=ebE9iJTKZYTHQ3sX0Co4kO9qZg6vc814hd9KvMgaFvk,149
163
+ modal-0.66.50.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
164
+ modal-0.66.50.dist-info/METADATA,sha256=VEm-0bnVheLxgWXX5oiYnLb2HXzro3kK9gvF_cnU3JA,2329
165
+ modal-0.66.50.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
166
+ modal-0.66.50.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
167
+ modal-0.66.50.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
168
+ modal-0.66.50.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2024
2
2
 
3
3
  # Note: Reset this value to -1 whenever you make a minor `0.X` release of the client.
4
- build_number = 48 # git: c52bd90
4
+ build_number = 50 # git: 2903bbe