modal 1.1.5.dev53__py3-none-any.whl → 1.1.5.dev54__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.

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.5.dev53",
36
+ version: str = "1.1.5.dev54",
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.5.dev53",
167
+ version: str = "1.1.5.dev54",
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
@@ -450,7 +450,7 @@ class Function(
450
450
 
451
451
  _call_generator: ___call_generator_spec[typing_extensions.Self]
452
452
 
453
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
453
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
454
454
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
455
455
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
456
456
  ...
@@ -459,7 +459,7 @@ class Function(
459
459
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
460
460
  ...
461
461
 
462
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
462
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
463
463
 
464
464
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
465
465
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -486,7 +486,7 @@ class Function(
486
486
  """
487
487
  ...
488
488
 
489
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
489
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
490
490
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
491
491
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
492
492
 
@@ -510,7 +510,7 @@ class Function(
510
510
  ...
511
511
 
512
512
  _experimental_spawn: ___experimental_spawn_spec[
513
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
513
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
514
514
  ]
515
515
 
516
516
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
@@ -519,7 +519,7 @@ class Function(
519
519
 
520
520
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
521
521
 
522
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
522
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
523
523
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
524
524
  """Calls the function with the given arguments, without waiting for the results.
525
525
 
@@ -540,7 +540,7 @@ class Function(
540
540
  """
541
541
  ...
542
542
 
543
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
543
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
544
544
 
545
545
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
546
546
  """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.5.dev53
3
+ Version: 1.1.5.dev54
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=RRUz2NjAWIQLHtU2IEslOlnIOCxPiWts3IP3rTFArkY,49635
22
22
  modal/app.pyi,sha256=CDp_rlX3hBuFdv9VRsKvNKCgu_hS2IO2uNU5qhzmXps,44719
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=gzXUNMZoJ8isqZDhDAh9uRT2rvj-XAB95liYFWY7rG4,15831
25
+ modal/client.pyi,sha256=V4PvYUaxDpxct9bl7xIS5EBRymaFjByrl__cWhWSlRc,15831
26
26
  modal/cloud_bucket_mount.py,sha256=I2GRXYhOWLIz2kJZjXu75jAm9EJkBNcutGc6jR2ReUw,5928
27
27
  modal/cloud_bucket_mount.pyi,sha256=VuUOipMIHqFXMkD-3g2bsoqpSxV5qswlFHDOqPQzYAo,7405
28
28
  modal/cls.py,sha256=R1uLQbdqWRRjvxs0I57a4hZZELZkBVCxOKxvKryU5_s,41639
@@ -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=FU1F_75_-Y-YEWo6UNxvmuQ8P3T8TNgpqEqhgED4dhc,39597
42
+ modal/functions.pyi,sha256=9hHRHIkzRtaUWtAHZEmGSUmufyPfgB1JK0kgBipfbys,39597
43
43
  modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
44
44
  modal/image.py,sha256=pCiIeDt-YDpzBZ7_uqPcuizRniZYG34Z_NDMCsIIjas,108084
45
45
  modal/image.pyi,sha256=ZNp48mVPzcQ6XNvxin1iO5XrZ89vfEZvU1Bi-V57jq0,76835
@@ -153,7 +153,7 @@ modal/experimental/__init__.py,sha256=fCqzo_f3vcY750vHtd7CtLs5dvdM_C0ZLLGb3zXuK9
153
153
  modal/experimental/flash.py,sha256=7qRAL2Nrwbb60YKobcnpM0zJ8vw4xGJqabLPFgEzMZE,28295
154
154
  modal/experimental/flash.pyi,sha256=R9VV0UDotiY9BRUjacB-xI4qhR3yBymAvEZFRFHztLs,15143
155
155
  modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
156
- modal-1.1.5.dev53.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.5.dev54.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=7VHunG16zrHWb6QZQ69SZoqMCwtbhhnE8N2KCUu9kUw,109391
165
- modal_proto/api_grpc.py,sha256=uA2UlaOWKR8vOq3MCRC_dbqB3vcl0jfpHtDzgDJd1uo,133054
166
- modal_proto/api_pb2.py,sha256=BDY2mO2b-Lb5RvP8o4tlOkJLbcIXK33IXgrThF5_hrk,381409
167
- modal_proto/api_pb2.pyi,sha256=-F95nswVuBe_k4FRKZ7f4RjpWs7p1Sgm_nwGrkPJE4c,526019
168
- modal_proto/api_pb2_grpc.py,sha256=TZRVnkM0KoXbPkV86bFGH-YVfEwMf1dXzJMfcDPURu0,286578
169
- modal_proto/api_pb2_grpc.pyi,sha256=KDTR99gf00Vrp2aA8FPDY3xxSqJ06HpL9uw2117PYTs,67175
170
- modal_proto/modal_api_grpc.py,sha256=MajAfiiJUJaZ3oRKDss4i-PDxNLDRTLkw9mptD90nxI,20063
164
+ modal_proto/api.proto,sha256=G1jzKGqZlBjSjeaxkxjwFmMHS0qd5_d0y4zE-zaro8E,110060
165
+ modal_proto/api_grpc.py,sha256=9TqN2bHcV7ZEP60ldkVTC2o-K0jkTHKWslh2STXpNTY,133937
166
+ modal_proto/api_pb2.py,sha256=w_Vpk3Hq2BTtfJ5w4G6vgtibJsHbEFjsaDLFNZa5mlI,384247
167
+ modal_proto/api_pb2.pyi,sha256=MG-g1d8taEmi7jgOYZ6za-oYPUdF58gB8VoZUYmSU80,529565
168
+ modal_proto/api_pb2_grpc.py,sha256=GCo6ufBw9V7qG29b3jCVSSoe4Xycts-CMPWBorXzcDg,288332
169
+ modal_proto/api_pb2_grpc.pyi,sha256=EWqb1fKFaJvPj121E43vNHo2Q_fmk_M12KsD7blfnQU,67619
170
+ modal_proto/modal_api_grpc.py,sha256=_hyeMTOf-DnSFWRo0n4tphZtswWuSB0-rnF9hmJFAKw,20190
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
@@ -182,10 +182,10 @@ modal_proto/sandbox_router_pb2.py,sha256=INd9izYaIYqllESQt4MSv2Rj9Hf5bMjAvtCc9b4
182
182
  modal_proto/sandbox_router_pb2.pyi,sha256=YCK0WnCgRos3-p7t4USQQ7x6WAuM278yeQX2IeU5mLg,13295
183
183
  modal_proto/sandbox_router_pb2_grpc.py,sha256=zonC5flvCwxeZYJPENj1IJo2Mr0J58DpoC1_8IdPYik,8243
184
184
  modal_proto/sandbox_router_pb2_grpc.pyi,sha256=4QgCB9b7_ykvH8YD-hfnogVH9CLyHVDC5QNb03l4_X8,2735
185
- modal_version/__init__.py,sha256=RLelT0wr9NVz8QenSoD3msLlR7d-UqtE4kGDhhsVylA,121
185
+ modal_version/__init__.py,sha256=2Hrxen6AgHXUsvEzlap5d10r_-zpSPPSwY4aEdapOkI,121
186
186
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
187
- modal-1.1.5.dev53.dist-info/METADATA,sha256=9YwWAmVJb3dbMqltnB0M5c_sobD0v1PFJaDr90MSLP8,2481
188
- modal-1.1.5.dev53.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
189
- modal-1.1.5.dev53.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
190
- modal-1.1.5.dev53.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
191
- modal-1.1.5.dev53.dist-info/RECORD,,
187
+ modal-1.1.5.dev54.dist-info/METADATA,sha256=PzimsZh8KaV7HG4DRMipbCxpUT3uVsdvWHO37Du0RmE,2481
188
+ modal-1.1.5.dev54.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
189
+ modal-1.1.5.dev54.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
190
+ modal-1.1.5.dev54.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
191
+ modal-1.1.5.dev54.dist-info/RECORD,,
modal_proto/api.proto CHANGED
@@ -7,6 +7,7 @@ package modal.client;
7
7
  import "modal_proto/options.proto";
8
8
  import "google/protobuf/empty.proto";
9
9
  import "google/protobuf/struct.proto";
10
+ import "google/protobuf/timestamp.proto";
10
11
  import "google/protobuf/wrappers.proto";
11
12
 
12
13
  enum AppDeployVisibility {
@@ -3546,6 +3547,24 @@ message WebhookConfig {
3546
3547
  bool requires_proxy_auth = 10;
3547
3548
  }
3548
3549
 
3550
+
3551
+ message WorkspaceBillingReportItem {
3552
+ string object_id = 1;
3553
+ string description = 2;
3554
+ string environment_name = 3;
3555
+ google.protobuf.Timestamp interval = 4;
3556
+ string cost = 5;
3557
+ map<string, string> tags = 6;
3558
+ }
3559
+
3560
+ message WorkspaceBillingReportRequest {
3561
+ // Workspace ID will be implicit in the request metadata
3562
+ google.protobuf.Timestamp start_timestamp = 1;
3563
+ google.protobuf.Timestamp end_timestamp = 2;
3564
+ string resolution = 3; // e.g. 'd' or 'h'; server defines what we accept
3565
+ repeated string tag_names = 4;
3566
+ }
3567
+
3549
3568
  message WorkspaceNameLookupResponse {
3550
3569
  string workspace_name = 1 [deprecated=true];
3551
3570
  string username = 2;
@@ -3777,5 +3796,6 @@ service ModalClient {
3777
3796
  rpc VolumeRename(VolumeRenameRequest) returns (google.protobuf.Empty);
3778
3797
 
3779
3798
  // Workspaces
3799
+ rpc WorkspaceBillingReport(WorkspaceBillingReportRequest) returns (stream WorkspaceBillingReportItem);
3780
3800
  rpc WorkspaceNameLookup(google.protobuf.Empty) returns (WorkspaceNameLookupResponse);
3781
3801
  }
modal_proto/api_grpc.py CHANGED
@@ -12,6 +12,7 @@ if typing.TYPE_CHECKING:
12
12
  import modal_proto.options_pb2
13
13
  import google.protobuf.empty_pb2
14
14
  import google.protobuf.struct_pb2
15
+ import google.protobuf.timestamp_pb2
15
16
  import google.protobuf.wrappers_pb2
16
17
  import modal_proto.api_pb2
17
18
 
@@ -702,6 +703,10 @@ class ModalClientBase(abc.ABC):
702
703
  async def VolumeRename(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.VolumeRenameRequest, google.protobuf.empty_pb2.Empty]') -> None:
703
704
  pass
704
705
 
706
+ @abc.abstractmethod
707
+ async def WorkspaceBillingReport(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.WorkspaceBillingReportRequest, modal_proto.api_pb2.WorkspaceBillingReportItem]') -> None:
708
+ pass
709
+
705
710
  @abc.abstractmethod
706
711
  async def WorkspaceNameLookup(self, stream: 'grpclib.server.Stream[google.protobuf.empty_pb2.Empty, modal_proto.api_pb2.WorkspaceNameLookupResponse]') -> None:
707
712
  pass
@@ -1734,6 +1739,12 @@ class ModalClientBase(abc.ABC):
1734
1739
  modal_proto.api_pb2.VolumeRenameRequest,
1735
1740
  google.protobuf.empty_pb2.Empty,
1736
1741
  ),
1742
+ '/modal.client.ModalClient/WorkspaceBillingReport': grpclib.const.Handler(
1743
+ self.WorkspaceBillingReport,
1744
+ grpclib.const.Cardinality.UNARY_STREAM,
1745
+ modal_proto.api_pb2.WorkspaceBillingReportRequest,
1746
+ modal_proto.api_pb2.WorkspaceBillingReportItem,
1747
+ ),
1737
1748
  '/modal.client.ModalClient/WorkspaceNameLookup': grpclib.const.Handler(
1738
1749
  self.WorkspaceNameLookup,
1739
1750
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -2772,6 +2783,12 @@ class ModalClientStub:
2772
2783
  modal_proto.api_pb2.VolumeRenameRequest,
2773
2784
  google.protobuf.empty_pb2.Empty,
2774
2785
  )
2786
+ self.WorkspaceBillingReport = grpclib.client.UnaryStreamMethod(
2787
+ channel,
2788
+ '/modal.client.ModalClient/WorkspaceBillingReport',
2789
+ modal_proto.api_pb2.WorkspaceBillingReportRequest,
2790
+ modal_proto.api_pb2.WorkspaceBillingReportItem,
2791
+ )
2775
2792
  self.WorkspaceNameLookup = grpclib.client.UnaryUnaryMethod(
2776
2793
  channel,
2777
2794
  '/modal.client.ModalClient/WorkspaceNameLookup',