fal 1.24.0__py3-none-any.whl → 1.26.0__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 fal might be problematic. Click here for more details.

fal/_fal_version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.24.0'
21
- __version_tuple__ = version_tuple = (1, 24, 0)
20
+ __version__ = version = '1.26.0'
21
+ __version_tuple__ = version_tuple = (1, 26, 0)
fal/api.py CHANGED
@@ -319,24 +319,26 @@ def _handle_grpc_error():
319
319
  try:
320
320
  return fn(*args, **kwargs)
321
321
  except grpc.RpcError as e:
322
+ msg = e.details() or str(e)
322
323
  if e.code() == grpc.StatusCode.UNAVAILABLE:
323
324
  raise FalServerlessError(
324
325
  "Could not reach fal host. "
325
326
  "This is most likely a transient problem. "
326
- "Please, try again."
327
+ "If it persists, please reach out to support@fal.ai with the following details: " # noqa: E501
328
+ f"{msg}"
327
329
  )
328
- elif e.details().endswith("died with <Signals.SIGKILL: 9>.`."):
330
+ elif msg.endswith("died with <Signals.SIGKILL: 9>.`."):
329
331
  raise FalServerlessError(
330
332
  "Isolated function crashed. "
331
333
  "This is likely due to resource overflow. "
332
334
  "You can try again by setting a bigger `machine_type`"
333
335
  )
334
336
  elif e.code() == grpc.StatusCode.INVALID_ARGUMENT and (
335
- "The function function could not be deserialized" in e.details()
337
+ "The function function could not be deserialized" in msg
336
338
  ):
337
- raise FalMissingDependencyError(e.details()) from None
339
+ raise FalMissingDependencyError(msg) from None
338
340
  else:
339
- raise FalServerlessError(e.details())
341
+ raise FalServerlessError(msg)
340
342
 
341
343
  return handler
342
344
 
fal/cli/apps.py CHANGED
@@ -310,7 +310,11 @@ def _add_runners_parser(subparsers, parents):
310
310
  def _delete(args):
311
311
  client = get_client(args.host, args.team)
312
312
  with client.connect() as connection:
313
- connection.delete_alias(args.app_name)
313
+ res = connection.delete_alias(args.app_name)
314
+ if res is None:
315
+ args.console.print(f"Application {args.app_name!r} not found.")
316
+ else:
317
+ args.console.print(f"Application {args.app_name!r} deleted ({res})")
314
318
 
315
319
 
316
320
  def _add_delete_parser(subparsers, parents):
fal/cli/profile.py CHANGED
@@ -7,7 +7,7 @@ from fal.config import Config
7
7
 
8
8
  def _list(args):
9
9
  table = Table()
10
- table.add_column("Default")
10
+ table.add_column("Set")
11
11
  table.add_column("Profile")
12
12
  table.add_column("Settings")
13
13
 
fal/config.py CHANGED
@@ -50,10 +50,14 @@ class Config:
50
50
  self._profile = value
51
51
 
52
52
  def profiles(self) -> List[str]:
53
- keys = []
53
+ keys: List[str] = []
54
54
  for key in self._config:
55
55
  if key != SETTINGS_SECTION:
56
- keys.append(key)
56
+ if key == DEFAULT_PROFILE:
57
+ # Add it at the beginning
58
+ keys.insert(0, key)
59
+ else:
60
+ keys.append(key)
57
61
 
58
62
  return keys
59
63
 
fal/sdk.py CHANGED
@@ -746,10 +746,15 @@ class FalServerlessConnection:
746
746
  )
747
747
  self.stub.SetAlias(request)
748
748
 
749
- def delete_alias(self, alias: str) -> str:
749
+ def delete_alias(self, alias: str) -> str | None:
750
750
  request = isolate_proto.DeleteAliasRequest(alias=alias)
751
- res: isolate_proto.DeleteAliasResult = self.stub.DeleteAlias(request)
752
- return res.revision
751
+ try:
752
+ res: isolate_proto.DeleteAliasResult = self.stub.DeleteAlias(request)
753
+ return res.revision
754
+ except grpc.RpcError as e:
755
+ if e.code() == grpc.StatusCode.NOT_FOUND:
756
+ return None
757
+ raise
753
758
 
754
759
  def list_aliases(self) -> list[AliasInfo]:
755
760
  request = isolate_proto.ListAliasesRequest()
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.24.0
3
+ Version: 1.26.0
4
4
  Summary: fal is an easy-to-use Serverless Python Framework
5
5
  Author: Features & Labels <support@fal.ai>
6
6
  Requires-Python: >=3.8
7
7
  Description-Content-Type: text/markdown
8
- Requires-Dist: isolate[build]<0.18.0,>=0.17.0
9
- Requires-Dist: isolate-proto<0.10.0,>=0.9.1
8
+ Requires-Dist: isolate[build]<0.19.0,>=0.18.0
9
+ Requires-Dist: isolate-proto<0.11.0,>=0.10.0
10
10
  Requires-Dist: grpcio<2,>=1.64.0
11
11
  Requires-Dist: dill==0.3.7
12
12
  Requires-Dist: cloudpickle==3.0.0
@@ -1,19 +1,19 @@
1
1
  fal/__init__.py,sha256=wXs1G0gSc7ZK60-bHe-B2m0l_sA6TrFk4BxY0tMoLe8,784
2
2
  fal/__main__.py,sha256=4JMK66Wj4uLZTKbF-sT3LAxOsr6buig77PmOkJCRRxw,83
3
- fal/_fal_version.py,sha256=nxTik1vxXFDHbknoddVsKIfvC2WeUgrs0kQLBflLRVY,513
3
+ fal/_fal_version.py,sha256=Munn2JvNJkaAWn7AFHBzTBfXnoY8sVIidDZY9Jat_1A,513
4
4
  fal/_serialization.py,sha256=npXNsFJ5G7jzBeBIyVMH01Ww34mGY4XWhHpRbSrTtnQ,7598
5
5
  fal/_version.py,sha256=1BbTFnucNC_6ldKJ_ZoC722_UkW4S9aDBSW9L0fkKAw,2315
6
- fal/api.py,sha256=vTYWeKnNg3japot1vOV_JSk812aeB6a2Y7lC1ed-VmM,47277
6
+ fal/api.py,sha256=MRVuGn2gqFqm30YLk78Xgm-Rtw5POT9NCbUr67SWGcY,47397
7
7
  fal/app.py,sha256=pMf7P9iVEcw5HiFCYgSdHkjX6f-1SPe06EOwYH1ImGA,24079
8
8
  fal/apps.py,sha256=pzCd2mrKl5J_4oVc40_pggvPtFahXBCdrZXWpnaEJVs,12130
9
- fal/config.py,sha256=BEMH10B2bfWJ9yNawnLG6v3kBLnLmkhMe201EAODzs4,3124
9
+ fal/config.py,sha256=19tR4zWr2yqsBRWNhFV1jKMiXAASRz2Et62k68-1r9Y,3290
10
10
  fal/container.py,sha256=FTsa5hOW4ars-yV1lUoc0BNeIIvAZcpw7Ftyt3A4m_w,2000
11
11
  fal/files.py,sha256=1eOyrj1M0hTixZdbtQ1ogJqWpLd7UfiOt1Rxihnqh8g,3565
12
12
  fal/flags.py,sha256=QonyDM7R2GqfAB1bJr46oriu-fHJCkpUwXuSdanePWg,987
13
13
  fal/project.py,sha256=QgfYfMKmNobMPufrAP_ga1FKcIAlSbw18Iar1-0qepo,2650
14
14
  fal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  fal/rest_client.py,sha256=kGBGmuyHfX1lR910EoKCYPjsyU8MdXawT_cW2q8Sajc,568
16
- fal/sdk.py,sha256=63W0o2bp_EAJmUHL6o6lrSn1d89fRzccXeZ3ww5YYYo,25994
16
+ fal/sdk.py,sha256=zTT9AlrMZO1f3VZHvxe27gU1HfbO3ucE04_SNKbMzDY,26157
17
17
  fal/sync.py,sha256=ZuIJA2-hTPNANG9B_NNJZUsO68EIdTH0dc9MzeVE2VU,4340
18
18
  fal/utils.py,sha256=iQTBG3-i6JZgHkkwbY_I4210g0xoW-as51yrke608u0,2208
19
19
  fal/workflows.py,sha256=Zl4f6Bs085hY40zmqScxDUyCu7zXkukDbW02iYOLTTI,14805
@@ -23,7 +23,7 @@ fal/auth/local.py,sha256=sndkM6vKpeVny6NHTacVlTbiIFqaksOmw0Viqs_RN1U,1790
23
23
  fal/cli/__init__.py,sha256=padK4o0BFqq61kxAA1qQ0jYr2SuhA2mf90B3AaRkmJA,37
24
24
  fal/cli/_utils.py,sha256=anFfy6qouB8QzH0Yho41GulGiJu3q1KKIwgyVQCzgRQ,1593
25
25
  fal/cli/api.py,sha256=ZuDE_PIC-czzneTAWMwvC7P7WnwIyluNZSuJqzCFhqI,2640
26
- fal/cli/apps.py,sha256=FSd6uhNlmJUSToeG89gq2159RBkg9ImXquTCrvxTfQo,10283
26
+ fal/cli/apps.py,sha256=xny6t_zVTZ8oml_sfigr7BA1UZW6O-fkPsbfm6ETMr4,10484
27
27
  fal/cli/auth.py,sha256=Qe-Z3ycXJnOzHimz5PjCQYoni8MF4csmdL19yGN7a1o,5171
28
28
  fal/cli/cli_nested_json.py,sha256=veSZU8_bYV3Iu1PAoxt-4BMBraNIqgH5nughbs2UKvE,13539
29
29
  fal/cli/create.py,sha256=a8WDq-nJLFTeoIXqpb5cr7GR7YR9ZZrQCawNm34KXXE,627
@@ -34,7 +34,7 @@ fal/cli/files.py,sha256=pSgAnTm2eHdP-IPkMIVfnK_Ii7mkSSOVgvbsiFUVBC0,2936
34
34
  fal/cli/keys.py,sha256=7Sf4DT4le89G42eAOt0ltRjbZAtE70AVQ62hmjZhUy0,3059
35
35
  fal/cli/main.py,sha256=LnJCe83Fdr5-i3Fkpvrd9BZPjHtcX_H1EEmy6rVlCz8,3180
36
36
  fal/cli/parser.py,sha256=jYsGQ0BLQuKI7KtN1jnLVYKMbLtez7hPjwTNfG3UPSk,2964
37
- fal/cli/profile.py,sha256=lYOz0S1kr5DW4_r5pB5cEaCHsUEbiPQFmm8HT6_bx9k,3945
37
+ fal/cli/profile.py,sha256=9d6a8IEZhxKoJt4CmvRbqw1Js7HBNkJjng7I_3ggfTw,3941
38
38
  fal/cli/run.py,sha256=nAC12Qss4Fg1XmV0qOS9RdGNLYcdoHeRgQMvbTN4P9I,1202
39
39
  fal/cli/runners.py,sha256=7efNX9vm6D1aBlg0M5-u5plw3HHC41Sj-N7eRNIHnqw,3689
40
40
  fal/cli/secrets.py,sha256=QKSmazu-wiNF6fOpGL9v2TDYxAjX9KTi7ot7vnv6f5E,2474
@@ -142,8 +142,8 @@ openapi_fal_rest/models/workflow_node_type.py,sha256=-FzyeY2bxcNmizKbJI8joG7byRi
142
142
  openapi_fal_rest/models/workflow_schema.py,sha256=4K5gsv9u9pxx2ItkffoyHeNjBBYf6ur5bN4m_zePZNY,2019
143
143
  openapi_fal_rest/models/workflow_schema_input.py,sha256=2OkOXWHTNsCXHWS6EGDFzcJKkW5FIap-2gfO233EvZQ,1191
144
144
  openapi_fal_rest/models/workflow_schema_output.py,sha256=EblwSPAGfWfYVWw_WSSaBzQVju296is9o28rMBAd0mc,1196
145
- fal-1.24.0.dist-info/METADATA,sha256=-MEf-ujkT9OrgNtu5GN2BiIEHgDSpllaWJgAATzLass,4088
146
- fal-1.24.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
147
- fal-1.24.0.dist-info/entry_points.txt,sha256=32zwTUC1U1E7nSTIGCoANQOQ3I7-qHG5wI6gsVz5pNU,37
148
- fal-1.24.0.dist-info/top_level.txt,sha256=r257X1L57oJL8_lM0tRrfGuXFwm66i1huwQygbpLmHw,21
149
- fal-1.24.0.dist-info/RECORD,,
145
+ fal-1.26.0.dist-info/METADATA,sha256=26YySFcK-VDCQFJkuaWR7xvuVJxFMnggSif6dDj3hwc,4089
146
+ fal-1.26.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
147
+ fal-1.26.0.dist-info/entry_points.txt,sha256=32zwTUC1U1E7nSTIGCoANQOQ3I7-qHG5wI6gsVz5pNU,37
148
+ fal-1.26.0.dist-info/top_level.txt,sha256=r257X1L57oJL8_lM0tRrfGuXFwm66i1huwQygbpLmHw,21
149
+ fal-1.26.0.dist-info/RECORD,,
File without changes