modal 1.1.4.dev18__py3-none-any.whl → 1.1.4.dev19__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
@@ -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.4.dev18",
36
+ version: str = "1.1.4.dev19",
37
37
  ):
38
38
  """mdmd:hidden
39
39
  The Modal client object is not intended to be instantiated directly by users.
@@ -164,7 +164,7 @@ class Client:
164
164
  server_url: str,
165
165
  client_type: int,
166
166
  credentials: typing.Optional[tuple[str, str]],
167
- version: str = "1.1.4.dev18",
167
+ version: str = "1.1.4.dev19",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
modal/parallel_map.py CHANGED
@@ -79,8 +79,10 @@ class _OutputValue:
79
79
 
80
80
  MAX_INPUTS_OUTSTANDING_DEFAULT = 1000
81
81
 
82
- # maximum number of inputs to send to the server in a single request
82
+ # Maximum number of inputs to send to the server per FunctionPutInputs request
83
83
  MAP_INVOCATION_CHUNK_SIZE = 49
84
+ SPAWN_MAP_INVOCATION_CHUNK_SIZE = 512
85
+
84
86
 
85
87
  if typing.TYPE_CHECKING:
86
88
  import modal.functions
@@ -159,6 +161,7 @@ class InputPumper:
159
161
  input_queue: asyncio.Queue,
160
162
  function: "modal.functions._Function",
161
163
  function_call_id: str,
164
+ max_batch_size: int,
162
165
  map_items_manager: Optional["_MapItemsManager"] = None,
163
166
  ):
164
167
  self.client = client
@@ -167,10 +170,11 @@ class InputPumper:
167
170
  self.input_queue = input_queue
168
171
  self.inputs_sent = 0
169
172
  self.function_call_id = function_call_id
173
+ self.max_batch_size = max_batch_size
170
174
 
171
175
  async def pump_inputs(self):
172
176
  assert self.client.stub
173
- async for items in queue_batch_iterator(self.input_queue, max_batch_size=MAP_INVOCATION_CHUNK_SIZE):
177
+ async for items in queue_batch_iterator(self.input_queue, max_batch_size=self.max_batch_size):
174
178
  # Add items to the manager. Their state will be SENDING.
175
179
  if self.map_items_manager is not None:
176
180
  await self.map_items_manager.add_items(items)
@@ -234,6 +238,7 @@ class SyncInputPumper(InputPumper):
234
238
  input_queue=input_queue,
235
239
  function=function,
236
240
  function_call_id=function_call_id,
241
+ max_batch_size=MAP_INVOCATION_CHUNK_SIZE,
237
242
  map_items_manager=map_items_manager,
238
243
  )
239
244
  self.retry_queue = retry_queue
@@ -241,7 +246,7 @@ class SyncInputPumper(InputPumper):
241
246
  self.function_call_jwt = function_call_jwt
242
247
 
243
248
  async def retry_inputs(self):
244
- async for retriable_idxs in queue_batch_iterator(self.retry_queue, max_batch_size=MAP_INVOCATION_CHUNK_SIZE):
249
+ async for retriable_idxs in queue_batch_iterator(self.retry_queue, max_batch_size=self.max_batch_size):
245
250
  # For each index, use the context in the manager to create a FunctionRetryInputsItem.
246
251
  # This will also update the context state to RETRYING.
247
252
  inputs: list[api_pb2.FunctionRetryInputsItem] = await self.map_items_manager.prepare_items_for_retry(
@@ -269,7 +274,13 @@ class AsyncInputPumper(InputPumper):
269
274
  function: "modal.functions._Function",
270
275
  function_call_id: str,
271
276
  ):
272
- super().__init__(client, input_queue=input_queue, function=function, function_call_id=function_call_id)
277
+ super().__init__(
278
+ client,
279
+ input_queue=input_queue,
280
+ function=function,
281
+ function_call_id=function_call_id,
282
+ max_batch_size=SPAWN_MAP_INVOCATION_CHUNK_SIZE,
283
+ )
273
284
 
274
285
  async def pump_inputs(self):
275
286
  async for _ in super().pump_inputs():
modal/parallel_map.pyi CHANGED
@@ -89,6 +89,7 @@ class InputPumper:
89
89
  input_queue: asyncio.queues.Queue,
90
90
  function: modal._functions._Function,
91
91
  function_call_id: str,
92
+ max_batch_size: int,
92
93
  map_items_manager: typing.Optional[_MapItemsManager] = None,
93
94
  ):
94
95
  """Initialize self. See help(type(self)) for accurate signature."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.4.dev18
3
+ Version: 1.1.4.dev19
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=hJU3DGzP5GwYRmBj57XajljkQtLxkKftxXih2TYRcKo,48047
22
22
  modal/app.pyi,sha256=0U2xVKD3yfHe5l2bcihTDjPl__tzOvx1AIYOTebu-5o,43375
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=kyAIVB3Ay-XKJizQ_1ufUFB__EagV0MLmHJpyYyJ7J0,18636
25
- modal/client.pyi,sha256=8i9HpTRSzXv3ZKa2ZT3xFmoJzyBslm8XJ3R5WrzSoTs,15831
25
+ modal/client.pyi,sha256=H_3NLBlg-ac6o7LbGELWhSo_vRQY1qjPtyx9GCLBpZs,15831
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=pTEO7pHjlO7taMbIqs4oI9ZZgKDJpVKyGkO5ZT0w6tQ,40934
@@ -52,8 +52,8 @@ modal/network_file_system.pyi,sha256=Td_IobHr84iLo_9LZKQ4tNdUB60yjX8QWBaFiUvhfi8
52
52
  modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
53
53
  modal/object.pyi,sha256=qlyVVMezW3XgJe_iqhtzWRSki3Nuk-KrpXc1g-r8ujA,6944
54
54
  modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
55
- modal/parallel_map.py,sha256=fdzMJnk6ODfLAR-rN8DqCFGfWbcbpAv-TpBDBiXOF24,69009
56
- modal/parallel_map.pyi,sha256=MjVotblObpEDRyKcMd2qFALC1emKpbC9Cdu-gkdewT4,15809
55
+ modal/parallel_map.py,sha256=I2GADci-u1G_r7CxFzL11C0c3P4Tf_Jb3f_XCp4p_WI,69293
56
+ modal/parallel_map.pyi,sha256=NZrtfZljig59hcMKU7Cz8lYZZFOiwK9l7oWrBtX6Oy8,15838
57
57
  modal/partial_function.py,sha256=aIdlGfTjjgqY6Fpr-biCjvRU9W542_S5N2xkNN_rYGM,1127
58
58
  modal/partial_function.pyi,sha256=lqqOzZ9-QvHTDWKQ_oAYYOvsXgTOBKhO9u-RI98JbUk,13986
59
59
  modal/proxy.py,sha256=CQydu_NPDgApN2GLdd7rrcg8PM-pXyFdVYcTaGMBRCQ,1491
@@ -153,7 +153,7 @@ modal/experimental/__init__.py,sha256=dPBPpxsmjZMLF3YjRrXoTvT01pl65wxi4UdFZsOem3
153
153
  modal/experimental/flash.py,sha256=gydlThBSPgS8HA53Lwi0gUAFVtpdXu20IYAQXJSoTP0,21092
154
154
  modal/experimental/flash.pyi,sha256=A8_qJGtGoXEzKDdHbvhmCw7oqfneFEvJQK3ZdTOvUdU,10830
155
155
  modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
156
- modal-1.1.4.dev18.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.4.dev19.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
157
157
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
158
158
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
159
159
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
@@ -176,10 +176,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
176
176
  modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
177
177
  modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
178
178
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
- modal_version/__init__.py,sha256=FGQOnOuuawTZEWkrNaLUi3bo6ZecF2_6YH5C2vv2n58,121
179
+ modal_version/__init__.py,sha256=U0FsfRrNETBwFBrLv42WlCsLjFcBsob3ALtjezaAcEM,121
180
180
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
181
- modal-1.1.4.dev18.dist-info/METADATA,sha256=iS6Z8HG-4WOpYYsmMdzpF9vJH1jgPMKW81gBSeg_Xv0,2460
182
- modal-1.1.4.dev18.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
- modal-1.1.4.dev18.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
- modal-1.1.4.dev18.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
- modal-1.1.4.dev18.dist-info/RECORD,,
181
+ modal-1.1.4.dev19.dist-info/METADATA,sha256=kwX0UFA0a8UUS0uT9ygJ_wz4PxR20dJFgV_ybfgJmsE,2460
182
+ modal-1.1.4.dev19.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
+ modal-1.1.4.dev19.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
+ modal-1.1.4.dev19.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
+ modal-1.1.4.dev19.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.1.4.dev18"
4
+ __version__ = "1.1.4.dev19"