fal 1.35.0__py3-none-any.whl → 1.36.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
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.35.0'
32
- __version_tuple__ = version_tuple = (1, 35, 0)
31
+ __version__ = version = '1.36.1'
32
+ __version_tuple__ = version_tuple = (1, 36, 1)
33
33
 
34
34
  __commit_id__ = commit_id = None
fal/cli/apps.py CHANGED
@@ -297,8 +297,14 @@ def _runners(args):
297
297
  pending_runners = [
298
298
  runner for runner in alias_runners if runner.state == RunnerState.PENDING
299
299
  ]
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)}")
302
308
  # Drop the alias column, which is the first column
303
309
  runners_table.columns.pop(0)
304
310
  args.console.print(runners_table)
fal/cli/auth.py CHANGED
@@ -35,8 +35,7 @@ def _logout(args):
35
35
 
36
36
 
37
37
  def _list_accounts(args):
38
- from rich.style import Style
39
- from rich.table import Table
38
+ import json
40
39
 
41
40
  from fal.auth import UserAccess
42
41
  from fal.config import Config
@@ -45,23 +44,43 @@ def _list_accounts(args):
45
44
  config = Config()
46
45
  current_account_name = config.get_internal("team") or user_access.info["nickname"]
47
46
 
48
- table = Table(border_style=Style(frame=False), show_header=False)
49
- table.add_column("#")
50
- table.add_column("Nickname")
51
- table.add_column("Type")
52
-
53
- for idx, account in enumerate(user_access.accounts):
54
- selected = account["nickname"] == current_account_name
55
- color = "bold yellow" if selected else None
56
-
57
- table.add_row(
58
- f"* {idx + 1}" if selected else f" {idx + 1}",
59
- account["nickname"],
60
- "Personal" if account["is_personal"] else "Team",
61
- style=color,
62
- )
47
+ # NOTE: might be used by other commands that don't have the --output/--json flag
48
+ output = getattr(args, "output", "pretty")
49
+ if output == "json":
50
+ json_accounts = []
51
+ for account in user_access.accounts:
52
+ selected = account["nickname"] == current_account_name
53
+ json_accounts.append(
54
+ {
55
+ "nickname": account["nickname"],
56
+ "type": "personal" if account["is_personal"] else "team",
57
+ "is_selected": selected,
58
+ }
59
+ )
60
+ args.console.print(json.dumps({"teams": json_accounts}))
61
+ elif output == "pretty":
62
+ from rich.style import Style
63
+ from rich.table import Table
64
+
65
+ table = Table(border_style=Style(frame=False), show_header=False)
66
+ table.add_column("#")
67
+ table.add_column("Nickname")
68
+ table.add_column("Type")
69
+
70
+ for idx, account in enumerate(user_access.accounts):
71
+ selected = account["nickname"] == current_account_name
72
+ color = "bold yellow" if selected else None
73
+
74
+ table.add_row(
75
+ f"* {idx + 1}" if selected else f" {idx + 1}",
76
+ account["nickname"],
77
+ "Personal" if account["is_personal"] else "Team",
78
+ style=color,
79
+ )
63
80
 
64
- args.console.print(table)
81
+ args.console.print(table)
82
+ else:
83
+ raise AssertionError(f"Invalid output format: {output}")
65
84
 
66
85
 
67
86
  def _unset_account(args):
fal/cli/doctor.py CHANGED
@@ -1,37 +1,54 @@
1
+ import json
1
2
  import os
2
3
  import platform
3
4
 
4
5
 
5
6
  def _doctor(args):
6
7
  import isolate
7
- from rich.table import Table
8
8
 
9
9
  import fal
10
10
 
11
- table = Table(show_header=False, show_lines=False, box=None)
12
- table.add_column("name", no_wrap=True, style="bold")
13
- table.add_column("value", no_wrap=True)
11
+ if args.output == "json":
12
+ data = {
13
+ "fal": fal.__version__,
14
+ "isolate": isolate.__version__,
15
+ "python": platform.python_version(),
16
+ "platform": platform.platform(),
17
+ "FAL_HOST": fal.flags.GRPC_HOST,
18
+ "FAL_KEY": os.getenv("FAL_KEY", "").split(":")[0],
19
+ }
20
+ args.console.print(json.dumps(data))
21
+ elif args.output == "pretty":
22
+ from rich.table import Table
14
23
 
15
- table.add_row("fal", fal.__version__)
16
- table.add_row("isolate", isolate.__version__)
24
+ table = Table(show_header=False, show_lines=False, box=None)
25
+ table.add_column("name", no_wrap=True, style="bold")
26
+ table.add_column("value", no_wrap=True)
17
27
 
18
- table.add_row("", "")
19
- table.add_row("python", platform.python_version())
20
- table.add_row("platform", platform.platform())
28
+ table.add_row("fal", fal.__version__)
29
+ table.add_row("isolate", isolate.__version__)
21
30
 
22
- table.add_row("", "")
23
- table.add_row("FAL_HOST", fal.flags.GRPC_HOST)
24
- table.add_row("FAL_KEY", os.getenv("FAL_KEY", "").split(":")[0])
31
+ table.add_row("", "")
32
+ table.add_row("python", platform.python_version())
33
+ table.add_row("platform", platform.platform())
25
34
 
26
- args.console.print(table)
35
+ table.add_row("", "")
36
+ table.add_row("FAL_HOST", fal.flags.GRPC_HOST)
37
+ table.add_row("FAL_KEY", os.getenv("FAL_KEY", "").split(":")[0])
38
+
39
+ args.console.print(table)
40
+ else:
41
+ raise AssertionError(f"Invalid output format: {args.output}")
27
42
 
28
43
 
29
44
  def add_parser(main_subparsers, parents):
45
+ from .parser import get_output_parser
46
+
30
47
  doctor_help = "fal version and misc environment information."
31
48
  parser = main_subparsers.add_parser(
32
49
  "doctor",
33
50
  description=doctor_help,
34
51
  help=doctor_help,
35
- parents=parents,
52
+ parents=[*parents, get_output_parser()],
36
53
  )
37
54
  parser.set_defaults(func=_doctor)
fal/cli/keys.py CHANGED
@@ -40,35 +40,54 @@ def _add_create_parser(subparsers, parents):
40
40
 
41
41
 
42
42
  def _list(args):
43
- from rich.table import Table
44
-
45
- table = Table()
46
- table.add_column("Key ID")
47
- table.add_column("Created At")
48
- table.add_column("Scope")
49
- table.add_column("Description")
43
+ import json
50
44
 
51
45
  client = get_client(args.host, args.team)
52
46
  with client.connect() as connection:
53
47
  keys = connection.list_user_keys()
54
- for key in keys:
55
- table.add_row(
56
- key.key_id,
57
- str(key.created_at),
58
- str(key.scope.value),
59
- key.alias,
60
- )
61
48
 
62
- args.console.print(table)
49
+ if args.output == "json":
50
+ json_keys = [
51
+ {
52
+ "key_id": key.key_id,
53
+ "created_at": str(key.created_at),
54
+ "scope": str(key.scope.value),
55
+ "description": key.alias,
56
+ }
57
+ for key in keys
58
+ ]
59
+ args.console.print(json.dumps({"keys": json_keys}))
60
+ elif args.output == "pretty":
61
+ from rich.table import Table
62
+
63
+ table = Table()
64
+ table.add_column("Key ID")
65
+ table.add_column("Created At")
66
+ table.add_column("Scope")
67
+ table.add_column("Description")
68
+
69
+ for key in keys:
70
+ table.add_row(
71
+ key.key_id,
72
+ str(key.created_at),
73
+ str(key.scope.value),
74
+ key.alias,
75
+ )
76
+
77
+ args.console.print(table)
78
+ else:
79
+ raise AssertionError(f"Invalid output format: {args.output}")
63
80
 
64
81
 
65
82
  def _add_list_parser(subparsers, parents):
83
+ from .parser import get_output_parser
84
+
66
85
  list_help = "List keys."
67
86
  parser = subparsers.add_parser(
68
87
  "list",
69
88
  description=list_help,
70
89
  help=list_help,
71
- parents=parents,
90
+ parents=[*parents, get_output_parser()],
72
91
  )
73
92
  parser.set_defaults(func=_list)
74
93
 
fal/cli/parser.py CHANGED
@@ -115,4 +115,11 @@ def get_output_parser():
115
115
  choices=["pretty", "json"],
116
116
  help="Modify the command output",
117
117
  )
118
+ group.add_argument(
119
+ "--json",
120
+ action="store_const",
121
+ const="json",
122
+ dest="output",
123
+ help="Output in JSON format (same as --output json)",
124
+ )
118
125
  return parser
fal/cli/profile.py CHANGED
@@ -6,20 +6,37 @@ from fal.config import Config
6
6
 
7
7
 
8
8
  def _list(args):
9
- table = Table()
10
- table.add_column("Set")
11
- table.add_column("Profile")
12
- table.add_column("Settings")
9
+ import json
13
10
 
14
11
  config = Config()
15
- for profile in config.profiles():
16
- table.add_row(
17
- "*" if profile == config._profile else "",
18
- profile,
19
- ", ".join(key for key in config._config[profile]),
20
- )
21
12
 
22
- args.console.print(table)
13
+ if args.output == "json":
14
+ json_profiles = []
15
+ for profile in config.profiles():
16
+ json_profiles.append(
17
+ {
18
+ "profile": profile,
19
+ "is_set": profile == config._profile,
20
+ "settings": list(config._config[profile].keys()),
21
+ }
22
+ )
23
+ args.console.print(json.dumps({"profiles": json_profiles}))
24
+ elif args.output == "pretty":
25
+ table = Table()
26
+ table.add_column("Set")
27
+ table.add_column("Profile")
28
+ table.add_column("Settings")
29
+
30
+ for profile in config.profiles():
31
+ table.add_row(
32
+ "*" if profile == config._profile else "",
33
+ profile,
34
+ ", ".join(key for key in config._config[profile]),
35
+ )
36
+
37
+ args.console.print(table)
38
+ else:
39
+ raise AssertionError(f"Invalid output format: {args.output}")
23
40
 
24
41
 
25
42
  def _set(args):
@@ -136,12 +153,14 @@ def add_parser(main_subparsers, parents):
136
153
  required=True,
137
154
  )
138
155
 
156
+ from .parser import get_output_parser
157
+
139
158
  list_help = "List all profiles."
140
159
  list_parser = subparsers.add_parser(
141
160
  "list",
142
161
  description=list_help,
143
162
  help=list_help,
144
- parents=parents,
163
+ parents=[*parents, get_output_parser()],
145
164
  )
146
165
  list_parser.set_defaults(func=_list)
147
166
 
fal/cli/runners.py CHANGED
@@ -81,7 +81,7 @@ def _kill(args):
81
81
  connection.kill_runner(args.id)
82
82
 
83
83
 
84
- def _list_json(args, runners: list[RunnerInfo], pending_runners: list[RunnerInfo]):
84
+ def _list_json(args, runners: list[RunnerInfo]):
85
85
  json_runners = [
86
86
  {
87
87
  "alias": r.alias,
@@ -108,16 +108,23 @@ def _list(args):
108
108
  pending_runners = [
109
109
  runner for runner in runners if runner.state == RunnerState.PENDING
110
110
  ]
111
+ setup_runners = [
112
+ runner for runner in runners if runner.state == RunnerState.SETUP
113
+ ]
111
114
  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)}")
114
121
  args.console.print(runners_table(runners))
115
122
 
116
123
  requests_table = runners_requests_table(runners)
117
124
  args.console.print(f"Requests: {len(requests_table.rows)}")
118
125
  args.console.print(requests_table)
119
126
  elif args.output == "json":
120
- _list_json(args, runners, pending_runners)
127
+ _list_json(args, runners)
121
128
  else:
122
129
  raise AssertionError(f"Invalid output format: {args.output}")
123
130
 
fal/cli/secrets.py CHANGED
@@ -31,27 +31,45 @@ def _add_set_parser(subparsers, parents):
31
31
 
32
32
 
33
33
  def _list(args):
34
- from rich.table import Table
35
-
36
- table = Table()
37
- table.add_column("Secret Name")
38
- table.add_column("Created At")
34
+ import json
39
35
 
40
36
  client = get_client(args.host, args.team)
41
37
  with client.connect() as connection:
42
- for secret in connection.list_secrets():
43
- table.add_row(secret.name, str(secret.created_at))
38
+ secrets = list(connection.list_secrets())
39
+
40
+ if args.output == "json":
41
+ json_secrets = [
42
+ {
43
+ "name": secret.name,
44
+ "created_at": str(secret.created_at),
45
+ }
46
+ for secret in secrets
47
+ ]
48
+ args.console.print(json.dumps({"secrets": json_secrets}))
49
+ elif args.output == "pretty":
50
+ from rich.table import Table
51
+
52
+ table = Table()
53
+ table.add_column("Secret Name")
54
+ table.add_column("Created At")
44
55
 
45
- args.console.print(table)
56
+ for secret in secrets:
57
+ table.add_row(secret.name, str(secret.created_at))
58
+
59
+ args.console.print(table)
60
+ else:
61
+ raise AssertionError(f"Invalid output format: {args.output}")
46
62
 
47
63
 
48
64
  def _add_list_parser(subparsers, parents):
65
+ from .parser import get_output_parser
66
+
49
67
  list_help = "List secrets."
50
68
  parser = subparsers.add_parser(
51
69
  "list",
52
70
  description=list_help,
53
71
  help=list_help,
54
- parents=parents,
72
+ parents=[*parents, get_output_parser()],
55
73
  )
56
74
  parser.set_defaults(func=_list)
57
75
 
fal/cli/teams.py CHANGED
@@ -18,12 +18,14 @@ def add_parser(main_subparsers, parents):
18
18
  required=True,
19
19
  )
20
20
 
21
+ from .parser import get_output_parser
22
+
21
23
  list_help = "List teams."
22
24
  list_parser = subparsers.add_parser(
23
25
  "list",
24
26
  description=list_help,
25
27
  help=list_help,
26
- parents=parents,
28
+ parents=[*parents, get_output_parser()],
27
29
  )
28
30
  list_parser.set_defaults(func=_list_accounts)
29
31
 
fal/sdk.py CHANGED
@@ -264,6 +264,7 @@ class AliasInfo:
264
264
  class RunnerState(Enum):
265
265
  RUNNING = "running"
266
266
  PENDING = "pending"
267
+ SETUP = "setup"
267
268
  UNKNOWN = "unknown"
268
269
 
269
270
  @staticmethod
@@ -272,6 +273,8 @@ class RunnerState(Enum):
272
273
  return RunnerState.RUNNING
273
274
  elif proto is isolate_proto.RunnerInfo.State.PENDING:
274
275
  return RunnerState.PENDING
276
+ elif proto is isolate_proto.RunnerInfo.State.SETUP:
277
+ return RunnerState.SETUP
275
278
  else:
276
279
  return RunnerState.UNKNOWN
277
280
 
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.35.0
3
+ Version: 1.36.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.20.0,>=0.18.0
9
- Requires-Dist: isolate-proto<0.13.0,>=0.12.0
9
+ Requires-Dist: isolate-proto<0.15.0,>=0.14.1
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=fEVxpsnggVq-NSPWN73JVJO3FDQoAjIv54D7dJagIpE,706
3
+ fal/_fal_version.py,sha256=3O5R5kfC2NAQSY39lwr4Di6e6T8ez4E255wTzoz-vaE,706
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=oWSPxefwyYF93s54mtyYGKWYMax9ll9B-wxijOyARb4,49244
@@ -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=TdDj86WFWiK1g4g6MdxiA6vbMVc9ix8Iges2UtBGt4g,27406
16
+ fal/sdk.py,sha256=cs7AlrgXEOavTSF8c8MgZy6QyLe_SowaDGlHagFcYJg,27523
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,22 +23,22 @@ 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=9eflKmU0J3FTF87jSambA4xuNa6-M2nS4S3ZjOvXpvg,11200
27
- fal/cli/auth.py,sha256=Qe-Z3ycXJnOzHimz5PjCQYoni8MF4csmdL19yGN7a1o,5171
26
+ fal/cli/apps.py,sha256=v7Hgx5blO-YHfLnScq6QyDgBZQiumJ37tOppbtPn41Q,11411
27
+ fal/cli/auth.py,sha256=ZLjxuF4LobETJ2CLGMj_QurE0PiJxzKdFJZkux8uLHM,5977
28
28
  fal/cli/cli_nested_json.py,sha256=veSZU8_bYV3Iu1PAoxt-4BMBraNIqgH5nughbs2UKvE,13539
29
29
  fal/cli/create.py,sha256=a8WDq-nJLFTeoIXqpb5cr7GR7YR9ZZrQCawNm34KXXE,627
30
30
  fal/cli/debug.py,sha256=mTCjSpEZaNKcX225VZtry-BspFKSHURUuxUFuX6x5Cc,1488
31
31
  fal/cli/deploy.py,sha256=aezafp-g8vvLoARl1i84uGd-zIR1TtlSKi9E0dm-Z7E,8703
32
- fal/cli/doctor.py,sha256=U4ne9LX5gQwNblsYQ27XdO8AYDgbYjTO39EtxhwexRM,983
32
+ fal/cli/doctor.py,sha256=8SZrYG9Ku0F6LLUHtFdKopdIgZfFkw5E3Mwrxa9KOSk,1613
33
33
  fal/cli/files.py,sha256=-j0q4g53A7CWSczGLdfeUCTSd4zXoV3pfZFdman7JOw,3450
34
- fal/cli/keys.py,sha256=7Sf4DT4le89G42eAOt0ltRjbZAtE70AVQ62hmjZhUy0,3059
34
+ fal/cli/keys.py,sha256=iQVMr3WT8CUqSQT3qeCCiy6rRwoux9F-UEaC4bCwMWo,3754
35
35
  fal/cli/main.py,sha256=s_LxEyz9z64dewk3oiGEI33_h3vJ3IVdu8aY3qydkMo,3345
36
- fal/cli/parser.py,sha256=PyD6Fv8xx0x4iD9OEtls9jSQImdYhgxMPW3UMGdsun8,3274
37
- fal/cli/profile.py,sha256=agyGFQRLHOtzJEdN3Pn9317rg044XaszNCZrf0ELK-8,6016
36
+ fal/cli/parser.py,sha256=WxbO5pgMhcerEFl4uUdaCoFlTQF14PJVctiWRo55jHQ,3459
37
+ fal/cli/profile.py,sha256=PAY_ffifCT71VJ8VxfDVaXPT0U1oN8drvWZDFRXwvek,6678
38
38
  fal/cli/run.py,sha256=nAC12Qss4Fg1XmV0qOS9RdGNLYcdoHeRgQMvbTN4P9I,1202
39
- fal/cli/runners.py,sha256=IssWo5lhySLl9yRbpYdmWn3llkChdqTDhwWfqHxco-Y,4837
40
- fal/cli/secrets.py,sha256=QKSmazu-wiNF6fOpGL9v2TDYxAjX9KTi7ot7vnv6f5E,2474
41
- fal/cli/teams.py,sha256=6fR2rKJtiUJPThP7QsO4NLo9UdhUxraGvQZk3_Di6Ow,1218
39
+ fal/cli/runners.py,sha256=ctAlD1C9tmVFZDvFFJ9tszjLcL972mm27GQ1AhY1WPk,5047
40
+ fal/cli/secrets.py,sha256=HfIeO2IZpCEiBC6Cs5Kpi3zckfDnc7GsLwLdgj3NnPU,3085
41
+ fal/cli/teams.py,sha256=_JcNcf659ZoLBFOxKnVP5A6Pyk1jY1vh4_xzMweYIDo,1285
42
42
  fal/console/__init__.py,sha256=lGPUuTqIM9IKTa1cyyA-MA2iZJKVHp2YydsITZVlb6g,148
43
43
  fal/console/icons.py,sha256=De9MfFaSkO2Lqfne13n3PrYfTXJVIzYZVqYn5BWsdrA,108
44
44
  fal/console/ux.py,sha256=KMQs3UHQvVHDxDQQqlot-WskVKoMQXOE3jiVkkfmIMY,356
@@ -143,8 +143,8 @@ openapi_fal_rest/models/workflow_node_type.py,sha256=-FzyeY2bxcNmizKbJI8joG7byRi
143
143
  openapi_fal_rest/models/workflow_schema.py,sha256=4K5gsv9u9pxx2ItkffoyHeNjBBYf6ur5bN4m_zePZNY,2019
144
144
  openapi_fal_rest/models/workflow_schema_input.py,sha256=2OkOXWHTNsCXHWS6EGDFzcJKkW5FIap-2gfO233EvZQ,1191
145
145
  openapi_fal_rest/models/workflow_schema_output.py,sha256=EblwSPAGfWfYVWw_WSSaBzQVju296is9o28rMBAd0mc,1196
146
- fal-1.35.0.dist-info/METADATA,sha256=xW5NzNmxI3-XwxpsLMII25JT-mpw_pbHfvumwU2D6Y8,4054
147
- fal-1.35.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
148
- fal-1.35.0.dist-info/entry_points.txt,sha256=32zwTUC1U1E7nSTIGCoANQOQ3I7-qHG5wI6gsVz5pNU,37
149
- fal-1.35.0.dist-info/top_level.txt,sha256=r257X1L57oJL8_lM0tRrfGuXFwm66i1huwQygbpLmHw,21
150
- fal-1.35.0.dist-info/RECORD,,
146
+ fal-1.36.1.dist-info/METADATA,sha256=i_q8gLTH7qG8Ps72_RUgBLFluBgH2cu3Eugx-HfxsTs,4054
147
+ fal-1.36.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
148
+ fal-1.36.1.dist-info/entry_points.txt,sha256=32zwTUC1U1E7nSTIGCoANQOQ3I7-qHG5wI6gsVz5pNU,37
149
+ fal-1.36.1.dist-info/top_level.txt,sha256=r257X1L57oJL8_lM0tRrfGuXFwm66i1huwQygbpLmHw,21
150
+ fal-1.36.1.dist-info/RECORD,,
File without changes