fal 1.29.0__py3-none-any.whl → 1.29.1__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
@@ -1,14 +1,7 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = [
5
- "__version__",
6
- "__version_tuple__",
7
- "version",
8
- "version_tuple",
9
- "__commit_id__",
10
- "commit_id",
11
- ]
4
+ __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
12
5
 
13
6
  TYPE_CHECKING = False
14
7
  if TYPE_CHECKING:
@@ -16,19 +9,13 @@ if TYPE_CHECKING:
16
9
  from typing import Union
17
10
 
18
11
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
- COMMIT_ID = Union[str, None]
20
12
  else:
21
13
  VERSION_TUPLE = object
22
- COMMIT_ID = object
23
14
 
24
15
  version: str
25
16
  __version__: str
26
17
  __version_tuple__: VERSION_TUPLE
27
18
  version_tuple: VERSION_TUPLE
28
- commit_id: COMMIT_ID
29
- __commit_id__: COMMIT_ID
30
19
 
31
- __version__ = version = '1.29.0'
32
- __version_tuple__ = version_tuple = (1, 29, 0)
33
-
34
- __commit_id__ = commit_id = None
20
+ __version__ = version = '1.29.1'
21
+ __version_tuple__ = version_tuple = (1, 29, 1)
fal/cli/apps.py CHANGED
@@ -5,6 +5,7 @@ from dataclasses import asdict
5
5
  from typing import TYPE_CHECKING
6
6
 
7
7
  import fal.cli.runners as runners
8
+ from fal.sdk import RunnerState
8
9
 
9
10
  from ._utils import get_client
10
11
  from .parser import FalClientParser
@@ -298,7 +299,11 @@ def _runners(args):
298
299
  alias_runners = connection.list_alias_runners(alias=args.app_name)
299
300
 
300
301
  runners_table = runners.runners_table(alias_runners)
301
- args.console.print(f"Runners: {len(alias_runners)}")
302
+ pending_runners = [
303
+ runner for runner in alias_runners if runner.state == RunnerState.PENDING
304
+ ]
305
+ args.console.print(f"Runners: {len(alias_runners) - len(pending_runners)}")
306
+ args.console.print(f"Pending Runners: {len(pending_runners)}")
302
307
  # Drop the alias column, which is the first column
303
308
  runners_table.columns.pop(0)
304
309
  args.console.print(runners_table)
fal/cli/runners.py CHANGED
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from typing import List
4
4
 
5
- from fal.sdk import RunnerInfo
5
+ from fal.sdk import RunnerInfo, RunnerState
6
6
 
7
7
  from ._utils import get_client
8
8
  from .parser import FalClientParser
@@ -19,6 +19,7 @@ def runners_table(runners: List[RunnerInfo]):
19
19
  table.add_column("Expires In")
20
20
  table.add_column("Uptime")
21
21
  table.add_column("Revision")
22
+ table.add_column("State")
22
23
 
23
24
  for runner in runners:
24
25
  external_metadata = runner.external_metadata
@@ -45,6 +46,7 @@ def runners_table(runners: List[RunnerInfo]):
45
46
  ),
46
47
  f"{runner.uptime} ({runner.uptime.total_seconds()}s)",
47
48
  runner.revision,
49
+ runner.state.value,
48
50
  )
49
51
 
50
52
  return table
@@ -82,7 +84,11 @@ def _list(args):
82
84
  client = get_client(args.host, args.team)
83
85
  with client.connect() as connection:
84
86
  runners = connection.list_runners()
85
- args.console.print(f"Runners: {len(runners)}")
87
+ pending_runners = [
88
+ runner for runner in runners if runner.state == RunnerState.PENDING
89
+ ]
90
+ args.console.print(f"Runners: {len(runners) - len(pending_runners)}")
91
+ args.console.print(f"Pending Runners: {len(pending_runners)}")
86
92
  args.console.print(runners_table(runners))
87
93
 
88
94
  requests_table = runners_requests_table(runners)
fal/sdk.py CHANGED
@@ -261,6 +261,21 @@ class AliasInfo:
261
261
  valid_regions: list[str]
262
262
 
263
263
 
264
+ class RunnerState(Enum):
265
+ RUNNING = "running"
266
+ PENDING = "pending"
267
+ UNKNOWN = "unknown"
268
+
269
+ @staticmethod
270
+ def from_proto(proto: isolate_proto.RunnerInfo.State) -> RunnerState:
271
+ if proto is isolate_proto.RunnerInfo.State.RUNNING:
272
+ return RunnerState.RUNNING
273
+ elif proto is isolate_proto.RunnerInfo.State.PENDING:
274
+ return RunnerState.PENDING
275
+ else:
276
+ return RunnerState.UNKNOWN
277
+
278
+
264
279
  @dataclass
265
280
  class RunnerInfo:
266
281
  runner_id: str
@@ -270,6 +285,7 @@ class RunnerInfo:
270
285
  external_metadata: dict[str, Any]
271
286
  revision: str
272
287
  alias: str
288
+ state: RunnerState
273
289
 
274
290
 
275
291
  @dataclass
@@ -421,6 +437,7 @@ def _from_grpc_runner_info(message: isolate_proto.RunnerInfo) -> RunnerInfo:
421
437
  external_metadata=external_metadata,
422
438
  revision=message.revision,
423
439
  alias=message.alias,
440
+ state=RunnerState.from_proto(message.state),
424
441
  )
425
442
 
426
443
 
@@ -769,7 +786,7 @@ class FalServerlessConnection:
769
786
  return [from_grpc(alias) for alias in response.aliases]
770
787
 
771
788
  def list_alias_runners(self, alias: str) -> list[RunnerInfo]:
772
- request = isolate_proto.ListAliasRunnersRequest(alias=alias)
789
+ request = isolate_proto.ListAliasRunnersRequest(alias=alias, list_pending=True)
773
790
  response = self.stub.ListAliasRunners(request)
774
791
  return [from_grpc(runner) for runner in response.runners]
775
792
 
@@ -797,6 +814,6 @@ class FalServerlessConnection:
797
814
  self.stub.KillRunner(request)
798
815
 
799
816
  def list_runners(self) -> list[RunnerInfo]:
800
- request = isolate_proto.ListRunnersRequest()
817
+ request = isolate_proto.ListRunnersRequest(list_pending=True)
801
818
  response = self.stub.ListRunners(request)
802
819
  return [from_grpc(runner) for runner in response.runners]
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.29.0
3
+ Version: 1.29.1
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
8
  Requires-Dist: isolate[build]<0.19.0,>=0.18.0
9
- Requires-Dist: isolate-proto<0.11.0,>=0.10.2
9
+ Requires-Dist: isolate-proto<0.12.0,>=0.11.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,6 +1,6 @@
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=n_lSuEHJgb4rULoS5dvoiQp1WmyrS2tr5qmwqkMv_jI,706
3
+ fal/_fal_version.py,sha256=LEnNi1cixmgGAOMJGFHnhQTZbgOnQnR2eYoT1fWIhAE,513
4
4
  fal/_serialization.py,sha256=npXNsFJ5G7jzBeBIyVMH01Ww34mGY4XWhHpRbSrTtnQ,7598
5
5
  fal/_version.py,sha256=1BbTFnucNC_6ldKJ_ZoC722_UkW4S9aDBSW9L0fkKAw,2315
6
6
  fal/api.py,sha256=TWUpQICgsRO5aDdRP8A3sFI26P6QM93TobcW9M4E0lQ,47501
@@ -13,7 +13,7 @@ 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=tUrwEohQz2B3LN-troH5FcON4VwRnV0zFjB0FRctDBA,26218
16
+ fal/sdk.py,sha256=uYvb6jpy2uRkjhzQxWhkna-yWc53kdywl_8p6qTnyPs,26775
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=ulYezhr3G29nTIF8MDQ6tsW01Oj1zPo-YSqMoBi05Ic,1871
25
25
  fal/cli/api.py,sha256=ZuDE_PIC-czzneTAWMwvC7P7WnwIyluNZSuJqzCFhqI,2640
26
- fal/cli/apps.py,sha256=73vLbMTpgadd0p_S6RW8t7NKpTmIMO_W2mYoWbyZvcQ,11008
26
+ fal/cli/apps.py,sha256=pty0v0RIihCeKl1xG9NWIUMTWGhGUJf452x58EfBL-M,11242
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
@@ -36,7 +36,7 @@ fal/cli/main.py,sha256=LnJCe83Fdr5-i3Fkpvrd9BZPjHtcX_H1EEmy6rVlCz8,3180
36
36
  fal/cli/parser.py,sha256=jYsGQ0BLQuKI7KtN1jnLVYKMbLtez7hPjwTNfG3UPSk,2964
37
37
  fal/cli/profile.py,sha256=agyGFQRLHOtzJEdN3Pn9317rg044XaszNCZrf0ELK-8,6016
38
38
  fal/cli/run.py,sha256=nAC12Qss4Fg1XmV0qOS9RdGNLYcdoHeRgQMvbTN4P9I,1202
39
- fal/cli/runners.py,sha256=7efNX9vm6D1aBlg0M5-u5plw3HHC41Sj-N7eRNIHnqw,3689
39
+ fal/cli/runners.py,sha256=4knYZLG5WagdHoBUpjVsh_8BXHebU_rAtlRyRmJDZWI,3976
40
40
  fal/cli/secrets.py,sha256=QKSmazu-wiNF6fOpGL9v2TDYxAjX9KTi7ot7vnv6f5E,2474
41
41
  fal/cli/teams.py,sha256=6fR2rKJtiUJPThP7QsO4NLo9UdhUxraGvQZk3_Di6Ow,1218
42
42
  fal/console/__init__.py,sha256=ernZ4bzvvliQh5SmrEqQ7lA5eVcbw6Ra2jalKtA7dxg,132
@@ -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.29.0.dist-info/METADATA,sha256=SiKSUGjpp9TXi3xwebvMXKLZXzUyzwG4BAwrNtX3sAs,4089
146
- fal-1.29.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
147
- fal-1.29.0.dist-info/entry_points.txt,sha256=32zwTUC1U1E7nSTIGCoANQOQ3I7-qHG5wI6gsVz5pNU,37
148
- fal-1.29.0.dist-info/top_level.txt,sha256=r257X1L57oJL8_lM0tRrfGuXFwm66i1huwQygbpLmHw,21
149
- fal-1.29.0.dist-info/RECORD,,
145
+ fal-1.29.1.dist-info/METADATA,sha256=46KbSDN8ByPItsEXR770ZU8JZQZgAaUBEC6Yc2G82MU,4089
146
+ fal-1.29.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
147
+ fal-1.29.1.dist-info/entry_points.txt,sha256=32zwTUC1U1E7nSTIGCoANQOQ3I7-qHG5wI6gsVz5pNU,37
148
+ fal-1.29.1.dist-info/top_level.txt,sha256=r257X1L57oJL8_lM0tRrfGuXFwm66i1huwQygbpLmHw,21
149
+ fal-1.29.1.dist-info/RECORD,,
File without changes