modal 1.1.4.dev21__py3-none-any.whl → 1.1.4.dev23__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.dev21",
36
+ version: str = "1.1.4.dev23",
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.dev21",
167
+ version: str = "1.1.4.dev23",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
modal/functions.pyi CHANGED
@@ -444,7 +444,7 @@ class Function(
444
444
 
445
445
  _call_generator: ___call_generator_spec[typing_extensions.Self]
446
446
 
447
- class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
447
+ class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
448
448
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
449
449
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
450
450
  ...
@@ -453,7 +453,7 @@ class Function(
453
453
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
454
454
  ...
455
455
 
456
- remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
456
+ remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
457
457
 
458
458
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
459
459
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -480,7 +480,7 @@ class Function(
480
480
  """
481
481
  ...
482
482
 
483
- class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
483
+ class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
484
484
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
485
485
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
486
486
 
@@ -504,7 +504,7 @@ class Function(
504
504
  ...
505
505
 
506
506
  _experimental_spawn: ___experimental_spawn_spec[
507
- modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
507
+ modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
508
508
  ]
509
509
 
510
510
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
@@ -513,7 +513,7 @@ class Function(
513
513
 
514
514
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
515
515
 
516
- class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
516
+ class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
517
517
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
518
518
  """Calls the function with the given arguments, without waiting for the results.
519
519
 
@@ -534,7 +534,7 @@ class Function(
534
534
  """
535
535
  ...
536
536
 
537
- spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
537
+ spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
538
538
 
539
539
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
540
540
  """Return the inner Python object wrapped by this Modal Function."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.4.dev21
3
+ Version: 1.1.4.dev23
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=clhuoK3XIibBg_9QDFCdAz3oonxJbjBQQYPh2bwq-tg,15831
25
+ modal/client.pyi,sha256=0pH5CNKrd5jqzKBz1S1bweeQwgX6GaIaxCrRkC2OD50,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
@@ -39,7 +39,7 @@ modal/file_io.py,sha256=OSKr77TujcXGJW1iikzYiHckLSmv07QBgBHcxxYEkoI,21456
39
39
  modal/file_io.pyi,sha256=xtO6Glf_BFwDE7QiQQo24QqcMf_Vv-iz7WojcGVlLBU,15932
40
40
  modal/file_pattern_matcher.py,sha256=A_Kdkej6q7YQyhM_2-BvpFmPqJ0oHb54B6yf9VqvPVE,8116
41
41
  modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
42
- modal/functions.pyi,sha256=ZtuPG_1F0eVFuScGUO231pD5EbAuTZ8ZAln62JU0LLc,39350
42
+ modal/functions.pyi,sha256=U8T37vGtsCAbQfUYNz0hOK1vtYqn1si24-scdVQyaGo,39350
43
43
  modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
44
44
  modal/image.py,sha256=nXN9k_6gApHFy8-Bk_XT2Zu3jsDsGVrC3QcuiDC4yRY,103543
45
45
  modal/image.pyi,sha256=vKdb5PpYM8wcpq9PQegeVMjrPLzAipuV4q994NZiL84,69325
@@ -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.dev21.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.4.dev23.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
@@ -161,13 +161,13 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
161
161
  modal_docs/mdmd/mdmd.py,sha256=tUTImNd4UMFk1opkaw8J672gX8AkBO5gbY2S_NMxsxs,7140
162
162
  modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
163
163
  modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
164
- modal_proto/api.proto,sha256=vxDDYPDHExIMsmcaMe_zge8fItDYAxYDBfTWeBHRhNo,105134
165
- modal_proto/api_grpc.py,sha256=r2BUXqWu4aVkCWR3lRxGJ7XtDIps9_Qx8B0cWbbTLHI,128675
166
- modal_proto/api_pb2.py,sha256=vPgD6YKRvPaiK4YjVaAnkG8I1lRismyFU5GnoKS27G4,367758
167
- modal_proto/api_pb2.pyi,sha256=fkB6DqiQjR4hDRum0OSsagk3awD_f6500VLhHzof_vw,507876
168
- modal_proto/api_pb2_grpc.py,sha256=gd_MaF-HGV_9rwTxich4xWPansv8H-5dMp1vwvSOdfg,277667
169
- modal_proto/api_pb2_grpc.pyi,sha256=sC2iWY_pj5A9-hsabbU8B-x7j67YAlJrnoFQXz68Y8k,64922
170
- modal_proto/modal_api_grpc.py,sha256=J3O4YJsIX9h1QQuArNWxR8Y7DcHVKh-m7TC8ru4POO8,19415
164
+ modal_proto/api.proto,sha256=9Vh3r3SjlJh2a9Eb6GwFYh2R6aCKV2-pEQXmVeOYkAE,105611
165
+ modal_proto/api_grpc.py,sha256=r1k5m9Z2brIWtkY59mPwAGSavhssStzmsSq_PEwkZWA,129564
166
+ modal_proto/api_pb2.py,sha256=M0DAllkbXBuQGnXEYiOaqzZoo5TQy0IS9DTHpzHNliU,370000
167
+ modal_proto/api_pb2.pyi,sha256=29iTBpyQozfgPuLuQmY_05PIx4PBJE7yQ-wpgmUrWz8,510035
168
+ modal_proto/api_pb2_grpc.py,sha256=ovaCh4weYl5r0XfX_2F2M2pn6XGH7Hl-BmVaIB62ssY,279448
169
+ modal_proto/api_pb2_grpc.pyi,sha256=q_S2ScjUjS2bonUnEBqwCXVRZUwEuO5jOD2eL9nw0Wc,65439
170
+ modal_proto/modal_api_grpc.py,sha256=E-5WMq82AVvtGRsmb7AqYzOz-cfqTOokp-QjaFaOhpo,19547
171
171
  modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
172
172
  modal_proto/options.proto,sha256=zp9h5r61ivsp0XwEWwNBsVqNTbRA1VSY_UtN7sEcHtE,549
173
173
  modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
@@ -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=dYvmX1UeShmVViemjA8aLJEIDRAYQoyTbtfHVNaEvVg,121
179
+ modal_version/__init__.py,sha256=c6Q-dIVNX6cjdCUD6G8ytHpMFGYA3mGN7oAAF3z5e9k,121
180
180
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
181
- modal-1.1.4.dev21.dist-info/METADATA,sha256=bT2KUwlBi1HHzhZHYpx3kt-gj8H6lyK1kPY3sbMXsY8,2460
182
- modal-1.1.4.dev21.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
- modal-1.1.4.dev21.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
- modal-1.1.4.dev21.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
- modal-1.1.4.dev21.dist-info/RECORD,,
181
+ modal-1.1.4.dev23.dist-info/METADATA,sha256=G8tCAPaTLLvHQNV0er3KxO60WSUFjlf-QaxCuVMWgW0,2460
182
+ modal-1.1.4.dev23.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
+ modal-1.1.4.dev23.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
+ modal-1.1.4.dev23.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
+ modal-1.1.4.dev23.dist-info/RECORD,,
modal_proto/api.proto CHANGED
@@ -644,6 +644,14 @@ message AutoscalerSettings {
644
644
  optional uint32 scaledown_window = 5;
645
645
  }
646
646
 
647
+ // Used for flash autoscaling
648
+ message AutoscalingMetrics {
649
+ double cpu_usage_percent = 1;
650
+ double memory_usage_percent = 2;
651
+ uint32 concurrent_requests = 3;
652
+ double timestamp = 4;
653
+ }
654
+
647
655
  message BaseImage {
648
656
  string image_id = 1;
649
657
  string docker_tag = 2;
@@ -3041,6 +3049,14 @@ message TaskCurrentInputsResponse {
3041
3049
  repeated string input_ids = 1;
3042
3050
  }
3043
3051
 
3052
+ message TaskGetAutoscalingMetricsRequest {
3053
+ string task_id = 1;
3054
+ }
3055
+
3056
+ message TaskGetAutoscalingMetricsResponse {
3057
+ AutoscalingMetrics metrics = 1;
3058
+ }
3059
+
3044
3060
  message TaskInfo {
3045
3061
  string id = 1;
3046
3062
  double started_at = 2;
@@ -3627,6 +3643,7 @@ service ModalClient {
3627
3643
  // Tasks
3628
3644
  rpc TaskClusterHello(TaskClusterHelloRequest) returns (TaskClusterHelloResponse);
3629
3645
  rpc TaskCurrentInputs(google.protobuf.Empty) returns (TaskCurrentInputsResponse);
3646
+ rpc TaskGetAutoscalingMetrics(TaskGetAutoscalingMetricsRequest) returns (TaskGetAutoscalingMetricsResponse); // Used for flash autoscaling
3630
3647
  rpc TaskList(TaskListRequest) returns (TaskListResponse);
3631
3648
  rpc TaskResult(TaskResultRequest) returns (google.protobuf.Empty);
3632
3649
 
modal_proto/api_grpc.py CHANGED
@@ -590,6 +590,10 @@ class ModalClientBase(abc.ABC):
590
590
  async def TaskCurrentInputs(self, stream: 'grpclib.server.Stream[google.protobuf.empty_pb2.Empty, modal_proto.api_pb2.TaskCurrentInputsResponse]') -> None:
591
591
  pass
592
592
 
593
+ @abc.abstractmethod
594
+ async def TaskGetAutoscalingMetrics(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.TaskGetAutoscalingMetricsRequest, modal_proto.api_pb2.TaskGetAutoscalingMetricsResponse]') -> None:
595
+ pass
596
+
593
597
  @abc.abstractmethod
594
598
  async def TaskList(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.TaskListRequest, modal_proto.api_pb2.TaskListResponse]') -> None:
595
599
  pass
@@ -1546,6 +1550,12 @@ class ModalClientBase(abc.ABC):
1546
1550
  google.protobuf.empty_pb2.Empty,
1547
1551
  modal_proto.api_pb2.TaskCurrentInputsResponse,
1548
1552
  ),
1553
+ '/modal.client.ModalClient/TaskGetAutoscalingMetrics': grpclib.const.Handler(
1554
+ self.TaskGetAutoscalingMetrics,
1555
+ grpclib.const.Cardinality.UNARY_UNARY,
1556
+ modal_proto.api_pb2.TaskGetAutoscalingMetricsRequest,
1557
+ modal_proto.api_pb2.TaskGetAutoscalingMetricsResponse,
1558
+ ),
1549
1559
  '/modal.client.ModalClient/TaskList': grpclib.const.Handler(
1550
1560
  self.TaskList,
1551
1561
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -2554,6 +2564,12 @@ class ModalClientStub:
2554
2564
  google.protobuf.empty_pb2.Empty,
2555
2565
  modal_proto.api_pb2.TaskCurrentInputsResponse,
2556
2566
  )
2567
+ self.TaskGetAutoscalingMetrics = grpclib.client.UnaryUnaryMethod(
2568
+ channel,
2569
+ '/modal.client.ModalClient/TaskGetAutoscalingMetrics',
2570
+ modal_proto.api_pb2.TaskGetAutoscalingMetricsRequest,
2571
+ modal_proto.api_pb2.TaskGetAutoscalingMetricsResponse,
2572
+ )
2557
2573
  self.TaskList = grpclib.client.UnaryUnaryMethod(
2558
2574
  channel,
2559
2575
  '/modal.client.ModalClient/TaskList',