modal 0.66.34__py3-none-any.whl → 0.66.36__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.
@@ -519,6 +519,16 @@ async def _create_input(
519
519
  )
520
520
 
521
521
 
522
+ def _get_suffix_from_web_url_info(url_info: api_pb2.WebUrlInfo) -> str:
523
+ if url_info.truncated:
524
+ suffix = " [grey70](label truncated)[/grey70]"
525
+ elif url_info.label_stolen:
526
+ suffix = " [grey70](label stolen)[/grey70]"
527
+ else:
528
+ suffix = ""
529
+ return suffix
530
+
531
+
522
532
  class FunctionCreationStatus:
523
533
  # TODO(michael) this really belongs with other output-related code
524
534
  # but moving it here so we can use it when loading a function with output disabled
@@ -547,12 +557,7 @@ class FunctionCreationStatus:
547
557
  elif self.response.function.web_url:
548
558
  url_info = self.response.function.web_url_info
549
559
  # Ensure terms used here match terms used in modal.com/docs/guide/webhook-urls doc.
550
- if url_info.truncated:
551
- suffix = " [grey70](label truncated)[/grey70]"
552
- elif url_info.label_stolen:
553
- suffix = " [grey70](label stolen)[/grey70]"
554
- else:
555
- suffix = ""
560
+ suffix = _get_suffix_from_web_url_info(url_info)
556
561
  # TODO: this is only printed when we're showing progress. Maybe move this somewhere else.
557
562
  web_url = self.response.handle_metadata.web_url
558
563
  self.status_row.finish(
@@ -563,8 +568,23 @@ class FunctionCreationStatus:
563
568
  for custom_domain in self.response.function.custom_domain_info:
564
569
  custom_domain_status_row = self.resolver.add_status_row()
565
570
  custom_domain_status_row.finish(
566
- f"Custom domain for {self.tag} => [magenta underline]"
567
- f"{custom_domain.url}[/magenta underline]{suffix}"
571
+ f"Custom domain for {self.tag} => [magenta underline]" f"{custom_domain.url}[/magenta underline]"
568
572
  )
569
573
  else:
570
574
  self.status_row.finish(f"Created function {self.tag}.")
575
+ if self.response.function.method_definitions_set:
576
+ for method_definition in self.response.function.method_definitions.values():
577
+ if method_definition.web_url:
578
+ url_info = method_definition.web_url_info
579
+ suffix = _get_suffix_from_web_url_info(url_info)
580
+ class_web_endpoint_method_status_row = self.resolver.add_status_row()
581
+ class_web_endpoint_method_status_row.finish(
582
+ f"Created web endpoint for {method_definition.function_name} => [magenta underline]"
583
+ f"{method_definition.web_url}[/magenta underline]{suffix}"
584
+ )
585
+ for custom_domain in method_definition.custom_domain_info:
586
+ custom_domain_status_row = self.resolver.add_status_row()
587
+ custom_domain_status_row.finish(
588
+ f"Custom domain for {method_definition.function_name} => [magenta underline]"
589
+ f"{custom_domain.url}[/magenta underline]"
590
+ )
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.34",
34
+ version: str = "0.66.36",
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.34",
93
+ version: str = "0.66.36",
94
94
  ): ...
95
95
  def is_closed(self) -> bool: ...
96
96
  @property
modal/functions.pyi CHANGED
@@ -450,11 +450,11 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
450
450
 
451
451
  _call_generator_nowait: ___call_generator_nowait_spec
452
452
 
453
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
453
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
454
454
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
455
455
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER: ...
456
456
 
457
- remote: __remote_spec[P, ReturnType]
457
+ remote: __remote_spec[ReturnType, P]
458
458
 
459
459
  class __remote_gen_spec(typing_extensions.Protocol):
460
460
  def __call__(self, *args, **kwargs) -> typing.Generator[typing.Any, None, None]: ...
@@ -466,17 +466,17 @@ class Function(typing.Generic[P, ReturnType, OriginalReturnType], modal.object.O
466
466
  def _get_obj(self) -> typing.Optional[modal.cls.Obj]: ...
467
467
  def local(self, *args: P.args, **kwargs: P.kwargs) -> OriginalReturnType: ...
468
468
 
469
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
469
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
470
470
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
471
471
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
472
472
 
473
- _experimental_spawn: ___experimental_spawn_spec[P, ReturnType]
473
+ _experimental_spawn: ___experimental_spawn_spec[ReturnType, P]
474
474
 
475
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
475
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
476
476
  def __call__(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
477
477
  async def aio(self, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]: ...
478
478
 
479
- spawn: __spawn_spec[P, ReturnType]
479
+ spawn: __spawn_spec[ReturnType, P]
480
480
 
481
481
  def get_raw_f(self) -> typing.Callable[..., typing.Any]: ...
482
482
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: modal
3
- Version: 0.66.34
3
+ Version: 0.66.36
4
4
  Summary: Python client library for Modal
5
5
  Author: Modal Labs
6
6
  Author-email: support@modal.com
@@ -19,7 +19,7 @@ modal/app.py,sha256=QEBK8qYSrux36oi3iS3msBQmcUOS1r4s2nengzzynjQ,44658
19
19
  modal/app.pyi,sha256=wHwBIDqkUb2CQzYVhxZafJ8xZ17TZ-8y-cRyOeZsEm0,25182
20
20
  modal/call_graph.py,sha256=l-Wi6vM8aosCdHTWegcCyGeVJGFdZ_fzlCmbRVPBXFI,2593
21
21
  modal/client.py,sha256=4SpWb4n0nolITR36kADZl1tYLOg6avukmzZU56UQjCo,16385
22
- modal/client.pyi,sha256=vmvo9hX03Wn0DSTVlIszO9CoFktDXfdgYeDexFLBjlg,7372
22
+ modal/client.pyi,sha256=H6wWnxqxDmdN--0UX-l2ImUY0pQPJYUoShqEvFqXZA8,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=Ci7EtMrLm1LExfjZ9K2IXyj-SV9Syq8dAbZCEfddcmY,24234
@@ -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=3iAonXDZ1OXgtUhL1LuTguNxlJi_PtGu-cBibd6Y464,71837
37
- modal/functions.pyi,sha256=cvEhksXdIvBkEj2U3TDeOGUYqKYCaAL8f2ryO_LUkl8,24939
37
+ modal/functions.pyi,sha256=opYVDolZweBVZSfgT4t7OyQj4vBJ82B72IRoS8ZpoYw,24939
38
38
  modal/gpu.py,sha256=r4rL6uH3UJIQthzYvfWauXNyh01WqCPtKZCmmSX1fd4,6881
39
39
  modal/image.py,sha256=E6UVnhOdfkMnajiSpIm0iUEyE04yclkv9Y0BO6Vplrg,76043
40
40
  modal/image.pyi,sha256=ZQpSN7XR16aug50sEcDE597CPssekeP1UZBtq0F1lRk,23847
@@ -83,7 +83,7 @@ modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
83
83
  modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
84
84
  modal/_utils/async_utils.py,sha256=3H4pBC4DW6rCA6hgRux6FMxGqPgHM-G-BTs7KXZiWz4,23958
85
85
  modal/_utils/blob_utils.py,sha256=pAY22w0oVc6ujGfI7La7HPUMOf42FehIapuhSDeeqEs,15835
86
- modal/_utils/function_utils.py,sha256=5GnYUiQ-WiRDEPt1H1_SFd0rZNJLWEXz7NrlMV5oV2E,23220
86
+ modal/_utils/function_utils.py,sha256=28mxgg_-7JF1DDiNnp3iNVsFQkOzMFjORsetdvZZTHU,24475
87
87
  modal/_utils/grpc_testing.py,sha256=PQyzEjHBveW7vdqu5Tpn-aNWPO5RPPcsRWzGvXDHCxY,7931
88
88
  modal/_utils/grpc_utils.py,sha256=tM1Q32VOU2WG733IfVHTLZdiyCe8Ga0f0Dx0iDLLy_8,7724
89
89
  modal/_utils/hash_utils.py,sha256=HefF7zPQPxFxyx3fpz-AdSm4QsHZNNvgL9-iQHY-_F4,1790
@@ -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=izKLMuTkGMUbc2am2w8SCiRidWHWyyfe8siv6h9njTo,149
163
- modal-0.66.34.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
164
- modal-0.66.34.dist-info/METADATA,sha256=39en_15jBdwiVYxBAWlx6A3DjEgLtNaE_MHyvuL4m7U,2329
165
- modal-0.66.34.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
166
- modal-0.66.34.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
167
- modal-0.66.34.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
168
- modal-0.66.34.dist-info/RECORD,,
162
+ modal_version/_version_generated.py,sha256=i4KSVuqvvB822jQoiQ8zWPLghpWwzKeBFDaOcDn8whg,149
163
+ modal-0.66.36.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
164
+ modal-0.66.36.dist-info/METADATA,sha256=SYSQ3smLiMXUOJjQhXemDyRMMDG3NInPqFaqY-2nPJE,2329
165
+ modal-0.66.36.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
166
+ modal-0.66.36.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
167
+ modal-0.66.36.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
168
+ modal-0.66.36.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 = 34 # git: 5196d55
4
+ build_number = 36 # git: 53f0e22