modal 1.1.1.dev14__py3-none-any.whl → 1.1.1.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.

Potentially problematic release.


This version of modal might be problematic. Click here for more details.

@@ -15,6 +15,7 @@ from modal_proto import api_pb2
15
15
  class ClusterInfo:
16
16
  rank: int
17
17
  container_ips: list[str]
18
+ container_ipv4_ips: list[str]
18
19
 
19
20
 
20
21
  cluster_info: Optional[ClusterInfo] = None
@@ -69,11 +70,13 @@ async def _initialize_clustered_function(client: _Client, task_id: str, world_si
69
70
  cluster_info = ClusterInfo(
70
71
  rank=resp.cluster_rank,
71
72
  container_ips=resp.container_ips,
73
+ container_ipv4_ips=resp.container_ipv4_ips,
72
74
  )
73
75
  else:
74
76
  cluster_info = ClusterInfo(
75
77
  rank=0,
76
78
  container_ips=[container_ip],
79
+ container_ipv4_ips=[], # No IPv4 IPs for single-node
77
80
  )
78
81
 
79
82
 
@@ -3,12 +3,13 @@ import typing
3
3
  import typing_extensions
4
4
 
5
5
  class ClusterInfo:
6
- """ClusterInfo(rank: int, container_ips: list[str])"""
6
+ """ClusterInfo(rank: int, container_ips: list[str], container_ipv4_ips: list[str])"""
7
7
 
8
8
  rank: int
9
9
  container_ips: list[str]
10
+ container_ipv4_ips: list[str]
10
11
 
11
- def __init__(self, rank: int, container_ips: list[str]) -> None:
12
+ def __init__(self, rank: int, container_ips: list[str], container_ipv4_ips: list[str]) -> None:
12
13
  """Initialize self. See help(type(self)) for accurate signature."""
13
14
  ...
14
15
 
modal/client.pyi CHANGED
@@ -33,7 +33,7 @@ class _Client:
33
33
  server_url: str,
34
34
  client_type: int,
35
35
  credentials: typing.Optional[tuple[str, str]],
36
- version: str = "1.1.1.dev14",
36
+ version: str = "1.1.1.dev16",
37
37
  ):
38
38
  """mdmd:hidden
39
39
  The Modal client object is not intended to be instantiated directly by users.
@@ -163,7 +163,7 @@ class Client:
163
163
  server_url: str,
164
164
  client_type: int,
165
165
  credentials: typing.Optional[tuple[str, str]],
166
- version: str = "1.1.1.dev14",
166
+ version: str = "1.1.1.dev16",
167
167
  ):
168
168
  """mdmd:hidden
169
169
  The Modal client object is not intended to be instantiated directly by users.
modal/dict.py CHANGED
@@ -153,7 +153,7 @@ class _Dict(_Object, type_prefix="di"):
153
153
  )
154
154
  response = await resolver.client.stub.DictGetOrCreate(req)
155
155
  logger.debug(f"Created dict with id {response.dict_id}")
156
- self._hydrate(response.dict_id, resolver.client, None)
156
+ self._hydrate(response.dict_id, resolver.client, response.metadata)
157
157
 
158
158
  return _Dict._from_loader(_load, "Dict()", is_another_app=True, hydrate_lazily=True)
159
159
 
modal/queue.py CHANGED
@@ -173,7 +173,7 @@ class _Queue(_Object, type_prefix="qu"):
173
173
  object_creation_type=(api_pb2.OBJECT_CREATION_TYPE_CREATE_IF_MISSING if create_if_missing else None),
174
174
  )
175
175
  response = await resolver.client.stub.QueueGetOrCreate(req)
176
- self._hydrate(response.queue_id, resolver.client, None)
176
+ self._hydrate(response.queue_id, resolver.client, response.metadata)
177
177
 
178
178
  return _Queue._from_loader(_load, "Queue()", is_another_app=True, hydrate_lazily=True)
179
179
 
modal/secret.py CHANGED
@@ -73,7 +73,7 @@ class _Secret(_Object, type_prefix="st"):
73
73
  if exc.status == Status.FAILED_PRECONDITION:
74
74
  raise InvalidError(exc.message)
75
75
  raise
76
- self._hydrate(resp.secret_id, resolver.client, None)
76
+ self._hydrate(resp.secret_id, resolver.client, resp.metadata)
77
77
 
78
78
  rep = f"Secret.from_dict([{', '.join(env_dict.keys())}])"
79
79
  return _Secret._from_loader(_load, rep, hydrate_lazily=True)
@@ -157,7 +157,7 @@ class _Secret(_Object, type_prefix="st"):
157
157
  )
158
158
  resp = await resolver.client.stub.SecretGetOrCreate(req)
159
159
 
160
- self._hydrate(resp.secret_id, resolver.client, None)
160
+ self._hydrate(resp.secret_id, resolver.client, resp.metadata)
161
161
 
162
162
  return _Secret._from_loader(_load, "Secret.from_dotenv()", hydrate_lazily=True)
163
163
 
@@ -200,7 +200,7 @@ class _Secret(_Object, type_prefix="st"):
200
200
  raise NotFoundError(exc.message)
201
201
  else:
202
202
  raise
203
- self._hydrate(response.secret_id, resolver.client, None)
203
+ self._hydrate(response.secret_id, resolver.client, response.metadata)
204
204
 
205
205
  return _Secret._from_loader(_load, "Secret()", hydrate_lazily=True)
206
206
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.1.dev14
3
+ Version: 1.1.1.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,7 +1,7 @@
1
1
  modal/__init__.py,sha256=WMaRW-2IJRGA9ioNAaBhJYuyLvu-GS01L8wQD90fKBs,2682
2
2
  modal/__main__.py,sha256=sTJcc9EbDuCKSwg3tL6ZckFw9WWdlkXW8mId1IvJCNc,2846
3
- modal/_clustered_functions.py,sha256=kTf-9YBXY88NutC1akI-gCbvf01RhMPCw-zoOI_YIUE,2700
4
- modal/_clustered_functions.pyi,sha256=_QKM87tdYwcALSGth8a0-9qXl02fZK6zMfEGEoYz7eA,1007
3
+ modal/_clustered_functions.py,sha256=zmrKbptRbqp4euS3LWncKaLXb8Kjj4YreusOzpEpRMk,2856
4
+ modal/_clustered_functions.pyi,sha256=_wtFjWocGf1WgI-qYBpbJPArNkg2H9JV7BVaGgMesEQ,1103
5
5
  modal/_container_entrypoint.py,sha256=1qBMNY_E9ICC_sRCtillMxmKPsmxJl1J0_qOAG8rH-0,28288
6
6
  modal/_functions.py,sha256=AjaKmH9hz_ii9VxdxPj4OGP5Hzjgq4iMCEJmw5R9ETg,82388
7
7
  modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
@@ -22,7 +22,7 @@ modal/app.py,sha256=BBR2NmGzZbFGfhKAmtzllD0o4TbVDBbOEs0O2ysSdQo,48277
22
22
  modal/app.pyi,sha256=h6JtBA6a7wobdZAuS3QuXrWCUZqfyKPuGV3XdjCqT3k,43753
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=pBSZ7lv5dezIL9U9H4tpE0Yz6qA1n0NoNbnJ3KCQMMA,18252
25
- modal/client.pyi,sha256=AgTHyauz6O1ULltYrbr3lcBf0p_FnU9dbX3rtu62Jk8,15390
25
+ modal/client.pyi,sha256=K9wgoiq_AmaS4XsyrHtyTlDlAeZX0ogxMvKNL7UqX-I,15390
26
26
  modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
27
27
  modal/cloud_bucket_mount.pyi,sha256=-qSfYAQvIoO_l2wsCCGTG5ZUwQieNKXdAO00yP1-LYU,7394
28
28
  modal/cls.py,sha256=7A0xGnugQzm8dOfnKMjLjtqekRlRtQ0jPFRYgq6xdUM,40018
@@ -30,7 +30,7 @@ modal/cls.pyi,sha256=_tZ5qrlL-ZDEcD-mf9BZkkNH5XPr4SmGTEQ-RVmqF3I,27772
30
30
  modal/config.py,sha256=FqVewLPVVR4feq_46JBENiCzqTuXKpnvQZxaeWbS39g,12009
31
31
  modal/container_process.py,sha256=1m4NPg0lgZmlG9OTkhHbjafqlqoo4lLv-A-X5lV21yo,6852
32
32
  modal/container_process.pyi,sha256=9m-st3hCUlNN1GOTctfPPvIvoLtEl7FbuGWwif5-7YU,6037
33
- modal/dict.py,sha256=wVIkHPFvR8WDoh5c6jT0UstZYmJTpCTM8drkwwjLiAc,14387
33
+ modal/dict.py,sha256=YVrIARVfaD2kmdnqbGtneeLciiLkzKxYego0jfkv3Sk,14400
34
34
  modal/dict.pyi,sha256=gs3J7X5yG3J1L6rW0s3_7yRn8qAfY0f4n5-sqaDZY2g,20853
35
35
  modal/environments.py,sha256=gHFNLG78bqgizpQ4w_elz27QOqmcgAonFsmLs7NjUJ4,6804
36
36
  modal/environments.pyi,sha256=9-KtrzAcUe55cCP4020lSUD7-fWS7OPakAHssq4-bro,4219
@@ -59,7 +59,7 @@ modal/partial_function.pyi,sha256=lqqOzZ9-QvHTDWKQ_oAYYOvsXgTOBKhO9u-RI98JbUk,13
59
59
  modal/proxy.py,sha256=NQJJMGo-D2IfmeU0vb10WWaE4oTLcuf9jTeEJvactOg,1446
60
60
  modal/proxy.pyi,sha256=yWGWwADCRGrC2w81B7671UTH4Uv3HMZKy5vVqlJUZoA,1417
61
61
  modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- modal/queue.py,sha256=BAXqLMo9S_K9tfZfrLHkRR9Ub-GYDdR8LLOiZHPeqak,18912
62
+ modal/queue.py,sha256=LuOtO5s6Aes-oXgzmIfLvmEF-QtAZdC9LPqSRbqy-X0,18925
63
63
  modal/queue.pyi,sha256=J6ggmVodMRegDuJE0g7AmOPAoMKbgtfvlBrWaT-T7MA,26657
64
64
  modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
65
65
  modal/runner.py,sha256=ostdzYpQb-20tlD6dIq7bpWTkZkOhjJBNuMNektqnJA,24068
@@ -69,7 +69,7 @@ modal/sandbox.py,sha256=_hAoBwParMzooNUo02LRt-nC5RrTGUtOutyO9oI79Kc,40896
69
69
  modal/sandbox.pyi,sha256=GPPlsm-DiSUSgrxyA5bqkpuLlrfgmNR7Z7s3W0QLuQ0,41812
70
70
  modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
- modal/secret.py,sha256=bpgtv0urwaBOmmJpMTZIwVWUraQlpeu4hW8pbJiGcOA,10546
72
+ modal/secret.py,sha256=rzqPd2kT1FoN_R1_nstso3ZLhkRf7iK-fRWhaUBwP6M,10577
73
73
  modal/secret.pyi,sha256=_d_vvgIZY-FCMKJheBOn01DQGEvyzB_Rfw5K1hGEaXU,7990
74
74
  modal/serving.py,sha256=3I3WBeVbzZY258u9PXBCW_dZBgypq3OhwBuTVvlgubE,4423
75
75
  modal/serving.pyi,sha256=YfixTaWikyYpwhnNxCHMZnDDQiPmV1xJ87QF91U_WGU,1924
@@ -151,7 +151,7 @@ modal/requirements/2025.06.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqr
151
151
  modal/requirements/PREVIEW.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqrs,312
152
152
  modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
153
153
  modal/requirements/base-images.json,sha256=JYSDAgHTl-WrV_TZW5icY-IJEnbe2eQ4CZ_KN6EOZKU,1304
154
- modal-1.1.1.dev14.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
154
+ modal-1.1.1.dev16.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
155
155
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
156
156
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
157
157
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
@@ -159,10 +159,10 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
159
159
  modal_docs/mdmd/mdmd.py,sha256=eW5MzrEl7mSclDo4Uv64sQ1-4IyLggldbgUJdBVLDdI,6449
160
160
  modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
161
161
  modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
162
- modal_proto/api.proto,sha256=TQTxdJbRzMvFe-AfLW0ujpQNIktDAxIvMsgKtTYWU00,101457
162
+ modal_proto/api.proto,sha256=WY3YnVkAZ8ECqxoFLMDCdbuE9GkT5ZvD210MXrsmf1A,102211
163
163
  modal_proto/api_grpc.py,sha256=AL8Z1zlvrsqrxXYEv_mKroJArPV7_8eQ2bMvvswDlTQ,123880
164
- modal_proto/api_pb2.py,sha256=R7AwtuLKWyixBkAAOBPaunnY0_RHvV1x6mBUifwKD_A,355623
165
- modal_proto/api_pb2.pyi,sha256=6azwsAfsZ2wTT0AVhcRwXnDzCOId-o0KDAR6VUYGTuc,487605
164
+ modal_proto/api_pb2.py,sha256=Jm47YCDrgyECTveReHWh7Iy4x7y16XV2uK-vIjk1j0s,358170
165
+ modal_proto/api_pb2.pyi,sha256=Fpq_1Wq4n2tN0tG4HYX4F8p8NguFyXUFCFBfSe0_9j8,492016
166
166
  modal_proto/api_pb2_grpc.py,sha256=QmhsoHLD9BBXVl3ZpIb-0_sZzpQ1Q9OLBU7ONHHojG4,267607
167
167
  modal_proto/api_pb2_grpc.pyi,sha256=Wy6NAO-o06jbQHxvZiMAi08QQT8VHUJcSAmlRRL0p1M,62762
168
168
  modal_proto/modal_api_grpc.py,sha256=A622btdK6V3CFaZfXK63ocCUlulKYJsgM-rcEPEFv24,18703
@@ -174,10 +174,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
174
174
  modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
175
175
  modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
176
176
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
- modal_version/__init__.py,sha256=6czan0bnLUihsJmWllgazYhy5V2DMF1Ma-1ZVzrr8Vw,121
177
+ modal_version/__init__.py,sha256=ghTXBGMXQh5t-byvgdqZH2J0LLndyuCLYShmteLfrOQ,121
178
178
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
179
- modal-1.1.1.dev14.dist-info/METADATA,sha256=0nd77un7hHF0uxzyjht85_4xplxhyVwPSV7DBSsHGJE,2462
180
- modal-1.1.1.dev14.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
181
- modal-1.1.1.dev14.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
182
- modal-1.1.1.dev14.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
183
- modal-1.1.1.dev14.dist-info/RECORD,,
179
+ modal-1.1.1.dev16.dist-info/METADATA,sha256=LfzA_kQc4lZYoH7AB1M_7MztL_JwHmY1AL1HwvUBVg8,2462
180
+ modal-1.1.1.dev16.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
181
+ modal-1.1.1.dev16.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
182
+ modal-1.1.1.dev16.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
183
+ modal-1.1.1.dev16.dist-info/RECORD,,
modal_proto/api.proto CHANGED
@@ -1035,6 +1035,13 @@ message ContainerStopRequest {
1035
1035
  message ContainerStopResponse {
1036
1036
  }
1037
1037
 
1038
+
1039
+ message CreationInfo {
1040
+ // This message is used in metadata for resource objects like Dict, Queue, Volume, etc.
1041
+ double created_at = 1; // Timestamp of resource creation
1042
+ string created_by = 2; // User name or service name
1043
+ }
1044
+
1038
1045
  message CustomDomainConfig {
1039
1046
  string name = 1;
1040
1047
  }
@@ -1099,6 +1106,7 @@ message DictGetOrCreateRequest {
1099
1106
 
1100
1107
  message DictGetOrCreateResponse {
1101
1108
  string dict_id = 1;
1109
+ DictMetadata metadata = 2;
1102
1110
  }
1103
1111
 
1104
1112
  message DictGetRequest {
@@ -1136,6 +1144,11 @@ message DictListResponse {
1136
1144
  repeated DictInfo dicts = 1;
1137
1145
  }
1138
1146
 
1147
+ message DictMetadata {
1148
+ string name = 1;
1149
+ CreationInfo creation_info = 2;
1150
+ }
1151
+
1139
1152
  message DictPopRequest {
1140
1153
  string dict_id = 1;
1141
1154
  bytes key = 2;
@@ -2376,6 +2389,7 @@ message QueueGetOrCreateRequest {
2376
2389
 
2377
2390
  message QueueGetOrCreateResponse {
2378
2391
  string queue_id = 1;
2392
+ QueueMetadata metadata = 2;
2379
2393
  }
2380
2394
 
2381
2395
  message QueueGetRequest {
@@ -2425,6 +2439,11 @@ message QueueListResponse {
2425
2439
  repeated QueueInfo queues = 1;
2426
2440
  }
2427
2441
 
2442
+ message QueueMetadata {
2443
+ string name = 1;
2444
+ CreationInfo creation_info = 2;
2445
+ }
2446
+
2428
2447
  message QueueNextItemsRequest {
2429
2448
  string queue_id = 1;
2430
2449
  bytes partition_key = 2;
@@ -2800,6 +2819,7 @@ message SecretGetOrCreateRequest {
2800
2819
 
2801
2820
  message SecretGetOrCreateResponse {
2802
2821
  string secret_id = 1;
2822
+ SecretMetadata metadata = 2;
2803
2823
  }
2804
2824
 
2805
2825
  message SecretListItem {
@@ -2819,6 +2839,13 @@ message SecretListResponse {
2819
2839
  string environment_name = 2; // the environment that was listed (useful when relying on "default" logic)
2820
2840
  }
2821
2841
 
2842
+ message SecretMetadata {
2843
+ string name = 1;
2844
+ CreationInfo creation_info = 2;
2845
+ }
2846
+
2847
+ // SharedVolume in the backend corresponds to NetworkFileSystem in the current API
2848
+
2822
2849
  message SharedVolumeDeleteRequest {
2823
2850
  string shared_volume_id = 1;
2824
2851
  }
@@ -3127,7 +3154,7 @@ message VolumeGetOrCreateRequest {
3127
3154
 
3128
3155
  message VolumeGetOrCreateResponse {
3129
3156
  string volume_id = 1;
3130
- VolumeFsVersion version = 2;
3157
+ VolumeFsVersion version = 2; // Not used directly; version is part of the metadata
3131
3158
  VolumeMetadata metadata = 3;
3132
3159
  }
3133
3160
 
@@ -3174,6 +3201,8 @@ message VolumeListResponse {
3174
3201
 
3175
3202
  message VolumeMetadata {
3176
3203
  VolumeFsVersion version = 1;
3204
+ string name = 2;
3205
+ CreationInfo creation_info = 3;
3177
3206
  }
3178
3207
 
3179
3208
  message VolumeMount {