Skip to content

Commit e9aa914

Browse files
authored
feat(fal): support SETUP runner state (#616)
feat(fal): suppor SETUP runner state
1 parent 3ac1887 commit e9aa914

File tree

4 files changed

+23
-7
lines changed

4 files changed

+23
-7
lines changed

projects/fal/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ readme = "README.md"
2323
requires-python = ">=3.8"
2424
dependencies = [
2525
"isolate[build]>=0.18.0,<0.20.0",
26-
"isolate-proto>=0.12.0,<0.13.0",
26+
"isolate-proto>=0.14.1,<0.15.0",
2727
"grpcio>=1.64.0,<2",
2828
"dill==0.3.7",
2929
"cloudpickle==3.0.0",

projects/fal/src/fal/cli/apps.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -297,8 +297,14 @@ def _runners(args):
297297
pending_runners = [
298298
runner for runner in alias_runners if runner.state == RunnerState.PENDING
299299
]
300-
args.console.print(f"Runners: {len(alias_runners) - len(pending_runners)}")
301-
args.console.print(f"Pending Runners: {len(pending_runners)}")
300+
setup_runners = [
301+
runner for runner in alias_runners if runner.state == RunnerState.SETUP
302+
]
303+
args.console.print(
304+
f"Runners: {len(alias_runners) - len(pending_runners) - len(setup_runners)}"
305+
)
306+
args.console.print(f"Runners Pending: {len(pending_runners)}")
307+
args.console.print(f"Runners Setting Up: {len(setup_runners)}")
302308
# Drop the alias column, which is the first column
303309
runners_table.columns.pop(0)
304310
args.console.print(runners_table)

projects/fal/src/fal/cli/runners.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def _kill(args):
8181
connection.kill_runner(args.id)
8282

8383

84-
def _list_json(args, runners: list[RunnerInfo], pending_runners: list[RunnerInfo]):
84+
def _list_json(args, runners: list[RunnerInfo]):
8585
json_runners = [
8686
{
8787
"alias": r.alias,
@@ -108,16 +108,23 @@ def _list(args):
108108
pending_runners = [
109109
runner for runner in runners if runner.state == RunnerState.PENDING
110110
]
111+
setup_runners = [
112+
runner for runner in runners if runner.state == RunnerState.SETUP
113+
]
111114
if args.output == "pretty":
112-
args.console.print(f"Runners: {len(runners) - len(pending_runners)}")
113-
args.console.print(f"Pending Runners: {len(pending_runners)}")
115+
args.console.print(
116+
"Runners: "
117+
+ str(len(runners) - len(pending_runners) - len(setup_runners))
118+
)
119+
args.console.print(f"Runners Pending: {len(pending_runners)}")
120+
args.console.print(f"Runners Setting Up: {len(setup_runners)}")
114121
args.console.print(runners_table(runners))
115122

116123
requests_table = runners_requests_table(runners)
117124
args.console.print(f"Requests: {len(requests_table.rows)}")
118125
args.console.print(requests_table)
119126
elif args.output == "json":
120-
_list_json(args, runners, pending_runners)
127+
_list_json(args, runners)
121128
else:
122129
raise AssertionError(f"Invalid output format: {args.output}")
123130

projects/fal/src/fal/sdk.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ class AliasInfo:
264264
class RunnerState(Enum):
265265
RUNNING = "running"
266266
PENDING = "pending"
267+
SETUP = "setup"
267268
UNKNOWN = "unknown"
268269

269270
@staticmethod
@@ -272,6 +273,8 @@ def from_proto(proto: isolate_proto.RunnerInfo.State) -> RunnerState:
272273
return RunnerState.RUNNING
273274
elif proto is isolate_proto.RunnerInfo.State.PENDING:
274275
return RunnerState.PENDING
276+
elif proto is isolate_proto.RunnerInfo.State.SETUP:
277+
return RunnerState.SETUP
275278
else:
276279
return RunnerState.UNKNOWN
277280

0 commit comments

Comments
 (0)