fal 0.15.0__py3-none-any.whl → 1.0.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/workflows.py CHANGED
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- import graphlib
4
3
  import json
5
4
  import webbrowser
6
5
  from argparse import ArgumentParser
@@ -8,6 +7,7 @@ from collections import Counter
8
7
  from dataclasses import dataclass, field
9
8
  from typing import Any, Iterator, Union, cast
10
9
 
10
+ import graphlib
11
11
  import rich
12
12
  from openapi_fal_rest.api.workflows import (
13
13
  create_or_update_workflow_workflows_post as publish_workflow,
@@ -450,7 +450,12 @@ def main() -> None:
450
450
  for event in handle.iter_events(logs=True):
451
451
  if isinstance(event, fal.apps.Queued):
452
452
  status.update(
453
- status=f"Queued for {node_id!r} (position={event.position}) ({n}/{len(workflow.nodes)})",
453
+ status=(
454
+ "Queued for "
455
+ f"{node_id!r} "
456
+ f"(position={event.position}) "
457
+ f"({n}/{len(workflow.nodes)})",
458
+ ),
454
459
  spinner="dots",
455
460
  )
456
461
  elif isinstance(event, fal.apps.InProgress):
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fal
3
- Version: 0.15.0
3
+ Version: 1.0.0
4
4
  Summary: fal is an easy-to-use Serverless Python Framework
5
5
  Author: Features & Labels <hello@fal.ai>
6
6
  Requires-Python: >=3.8
7
7
  Description-Content-Type: text/markdown
8
8
  Requires-Dist: isolate[build] <1.0,>=0.12.3
9
- Requires-Dist: isolate-proto ==0.3.4
9
+ Requires-Dist: isolate-proto ==0.4.0
10
10
  Requires-Dist: grpcio <2,>=1.50.0
11
11
  Requires-Dist: dill ==0.3.7
12
12
  Requires-Dist: cloudpickle ==3.0.0
@@ -19,7 +19,7 @@ Requires-Dist: grpc-interceptor <1,>=0.15.0
19
19
  Requires-Dist: colorama <1,>=0.4.6
20
20
  Requires-Dist: portalocker <3,>=2.7.0
21
21
  Requires-Dist: rich <14,>=13.3.2
22
- Requires-Dist: rich-click
22
+ Requires-Dist: rich-argparse
23
23
  Requires-Dist: packaging <22,>=21.3
24
24
  Requires-Dist: pathspec <1,>=0.11.1
25
25
  Requires-Dist: pydantic !=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<3
@@ -39,9 +39,10 @@ Provides-Extra: dev
39
39
  Requires-Dist: fal[test] ; extra == 'dev'
40
40
  Requires-Dist: openapi-python-client <1,>=0.14.1 ; extra == 'dev'
41
41
  Provides-Extra: test
42
- Requires-Dist: pytest ; extra == 'test'
43
- Requires-Dist: pytest-xdist ; extra == 'test'
42
+ Requires-Dist: pytest <8 ; extra == 'test'
44
43
  Requires-Dist: pytest-asyncio ; extra == 'test'
44
+ Requires-Dist: pytest-xdist ; extra == 'test'
45
+ Requires-Dist: flaky ; extra == 'test'
45
46
 
46
47
  [![PyPI](https://img.shields.io/pypi/v/fal.svg?logo=PyPI)](https://pypi.org/project/fal)
47
48
  [![Tests](https://img.shields.io/github/actions/workflow/status/fal-ai/fal/integration_tests.yaml?label=Tests)](https://github.com/fal-ai/fal/actions)
@@ -89,3 +90,30 @@ A new virtual environment will be created by fal in the cloud and the set of req
89
90
  ## Next steps
90
91
 
91
92
  If you would like to find out more about the capabilities of fal, check out to the [docs](https://fal.ai/docs). You can learn more about persistent storage, function caches and deploying your functions as API endpoints.
93
+
94
+ ## Contributing
95
+
96
+ ### Installing in editable mode with dev dependencies
97
+
98
+ ```py
99
+ pip install -e 'projects/fal[dev]'
100
+ pip install -e 'projects/fal_client[dev]'
101
+ pip install -e 'projects/isolate_proto[dev]'
102
+ ```
103
+
104
+ ### Running tests
105
+
106
+ ```py
107
+ pytest
108
+ ```
109
+
110
+ ### Pre-commit
111
+
112
+ ```
113
+ cd projects/fal
114
+ pre-commit install
115
+ ```
116
+
117
+ ### Commit format
118
+
119
+ Please follow [conventional commits specification](https://www.conventionalcommits.org/) for descriptions/messages.
@@ -1,44 +1,55 @@
1
- fal/__init__.py,sha256=XOobhu3D94O9K9ka_AJh6sw3K7lV-s_NuSto_fx9TXg,1255
2
- fal/__main__.py,sha256=8hDtWlaFZK24KhfNq_ZKgtXqYHsDQDetukOCMlsbW0Q,59
3
- fal/_serialization.py,sha256=d7cyacqQwwmSJJOh7WMGdv4jBzpLQJRsXxJc-GfhWN4,7517
4
- fal/api.py,sha256=7LChw4fl1ClJa7qDcL2V7wwb_Eiw8c3QwPZhtt9PBqg,35975
5
- fal/app.py,sha256=GCHes5uFQIH4cpK3YiiRSrsWSSkzWxlYh2T-nKra7Z8,12398
1
+ fal/__init__.py,sha256=suif79hYcYwlZ8dAaVXCErKhuD2AYf8uU78rty8jow8,721
2
+ fal/__main__.py,sha256=MSmt_5Xg84uHqzTN38JwgseJK8rsJn_11A8WD99VtEo,61
3
+ fal/_fal_version.py,sha256=DGJ4pj32xs3_DRJhSzQwCiRNnAQrMgo09USYpyMZsKc,411
4
+ fal/_serialization.py,sha256=Tx_c_mpJ8dYAVmPwdLkwgozSqfdvdFyWRYx3lH3-koQ,7595
5
+ fal/_version.py,sha256=EBGqrknaf1WygENX-H4fBefLvHryvJBBGtVJetaB0NY,266
6
+ fal/api.py,sha256=g8ypixM_3AZMdDbGQTUkBE92kphGE3dpLJPsY2cJMIk,36287
7
+ fal/app.py,sha256=s9ba4t4D5KJrPFGKeRzL3XsdKH-W1Be6NmDQgYjPnCw,13826
6
8
  fal/apps.py,sha256=UhR6mq8jBiTAp-QvUnvbnMNcuJ5wHIKSqdlfyx8aBQ8,6829
7
- fal/cli.py,sha256=STeefdtKG9RSeVXOKWtWtxNZTgvZX7Z3s80br8HZyK8,18374
8
- fal/flags.py,sha256=AATQO65M4C87dGp0j7o6cSQWcr62xE-8DnJYsUjFFbw,942
9
+ fal/flags.py,sha256=oWN_eidSUOcE9wdPK_77si3A1fpgOC0UEERPsvNLIMc,842
9
10
  fal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
11
  fal/rest_client.py,sha256=kGBGmuyHfX1lR910EoKCYPjsyU8MdXawT_cW2q8Sajc,568
11
- fal/sdk.py,sha256=TNmxxte-oca8WnaiXwc7MIMrUKn_OeYaXtg1xC8t7eM,18793
12
- fal/sync.py,sha256=Ljet584PVFz4r888-0bwV1Kio-tTneF_85TnHvBPvJw,4277
13
- fal/workflows.py,sha256=oBOdCCnZ0qMtmuO5JVpXD4FyUWoQgLXAJRe8RtrsGDw,14510
14
- fal/auth/__init__.py,sha256=VTZfex_kV9WNozmpBDa7joNntOlz-btuu-wHqaGM9Bk,3555
15
- fal/auth/auth0.py,sha256=5y4-9udOSX2-N_zvinLCpFwl10MdaPydZX2v9GQMZEE,5406
16
- fal/auth/local.py,sha256=lZqp4j32l2xFpY8zYvLoIHHyJrNAJDcm5MxgsLpY_pw,1786
12
+ fal/sdk.py,sha256=eHcg5TRouGL5d_9-p44x6lQUCYXVXdul6iEETCUov5Q,19976
13
+ fal/sync.py,sha256=ZuIJA2-hTPNANG9B_NNJZUsO68EIdTH0dc9MzeVE2VU,4340
14
+ fal/utils.py,sha256=PfmRrW3EFJ4Y07XsRRfydS1NT4Fll5t7oChmFvusr3g,1793
15
+ fal/workflows.py,sha256=4rjqL4xB6GHLJsqTplJmAvpd6uHZJ28sc8su33BFXEo,14682
16
+ fal/auth/__init__.py,sha256=r8iA2-5ih7-Fik3gEC4HEWNFbGoxpYnXpZu1icPIoS0,3561
17
+ fal/auth/auth0.py,sha256=rSG1mgH-QGyKfzd7XyAaj1AYsWt-ho8Y_LZ-FUVWzh4,5421
18
+ fal/auth/local.py,sha256=sndkM6vKpeVny6NHTacVlTbiIFqaksOmw0Viqs_RN1U,1790
19
+ fal/cli/__init__.py,sha256=padK4o0BFqq61kxAA1qQ0jYr2SuhA2mf90B3AaRkmJA,37
20
+ fal/cli/apps.py,sha256=HKQDOiTlLUKrJ2oVABRdKhB2842l1zA0eB2p-4XczAo,8060
21
+ fal/cli/auth.py,sha256=--MhfHGwxmtHbRkGioyn1prKn_U-pBzbz0G_QeZou-U,1352
22
+ fal/cli/debug.py,sha256=1doDNwoaPDfLQginGNBxpC20dZYs5UxIojflDvV1Q04,1342
23
+ fal/cli/deploy.py,sha256=S_HIMLqDpGyzDdbiIxudRizwjGoAaHpN-sXcl2uCaQ4,4329
24
+ fal/cli/keys.py,sha256=-9N6ZY6rW-_IE9tpupgaBPDGjGdKB3HKqU2g9daM3Xc,3109
25
+ fal/cli/main.py,sha256=RSMXLUyzYmZhS0Wcq9phXJcMJM_UpQD3su7F7j8Wr3M,1933
26
+ fal/cli/parser.py,sha256=8W9VhxDBOSru6Vs_HsUm_RA7_YMnzXLTzUrXA0mGVRA,2109
27
+ fal/cli/run.py,sha256=NXwzkAWCKrRwgoMLsBOgW7RJPJW4IgSTrG85q2iePyk,894
28
+ fal/cli/secrets.py,sha256=mgHp3gBr8d2su7wBApeADKWHPkYu2ueB6gG3eNMETh8,2595
17
29
  fal/console/__init__.py,sha256=ernZ4bzvvliQh5SmrEqQ7lA5eVcbw6Ra2jalKtA7dxg,132
18
30
  fal/console/icons.py,sha256=De9MfFaSkO2Lqfne13n3PrYfTXJVIzYZVqYn5BWsdrA,108
19
31
  fal/console/ux.py,sha256=KMQs3UHQvVHDxDQQqlot-WskVKoMQXOE3jiVkkfmIMY,356
20
- fal/exceptions/__init__.py,sha256=MM9N4uG3_6UkAGw4SLDo-Cp35YawNc1kAIGMl1BFTeI,992
32
+ fal/exceptions/__init__.py,sha256=x3fp97qMr5zCQJghMq6k2ESXWSrkWumO1BZebh3pWsI,92
21
33
  fal/exceptions/_base.py,sha256=U3n_4OtUx5MvfT2eol_a-N0dV9_eYFMvdbrhP-b_NXg,160
22
34
  fal/exceptions/auth.py,sha256=gxRago5coI__vSIcdcsqhhq1lRPkvCnwPAueIaXTAdw,329
23
- fal/exceptions/handlers.py,sha256=nZCmmWU47k4P9NBISNqn0b6-L53KMoNuuGBW4G9Bweo,1674
24
35
  fal/logging/__init__.py,sha256=snqprf7-sKw6oAATS_Yxklf-a3XhLg0vIHICPwLp6TM,1583
25
- fal/logging/isolate.py,sha256=rQbM-wwsCO3ddIFyEo34GBWxDWkDzw3x0iSK79D0yKk,1742
36
+ fal/logging/isolate.py,sha256=Gj_xylXc0ulGIyozLwTWisIclP7-du4tvhJWyPilrgo,1742
26
37
  fal/logging/style.py,sha256=ckIgHzvF4DShM5kQh8F133X53z_vF46snuDHVmo_h9g,386
27
38
  fal/logging/trace.py,sha256=OhzB6d4rQZimBc18WFLqH_9BGfqFFumKKTAGSsmWRMg,1904
28
39
  fal/logging/user.py,sha256=0Xvb8n6tSb9l_V51VDzv6SOdYEFNouV_6nF_W9e7uNQ,642
29
40
  fal/toolkit/__init__.py,sha256=sV95wiUzKoiDqF9vDgq4q-BLa2sD6IpuKSqp5kdTQNE,658
30
41
  fal/toolkit/exceptions.py,sha256=elHZ7dHCJG5zlHGSBbz-ilkZe9QUvQMomJFi8Pt91LA,198
31
- fal/toolkit/optimize.py,sha256=I-scpgmRODkzBCLkcsBwxkVm9L4bGVkSSZKiKMFYU0M,1340
42
+ fal/toolkit/optimize.py,sha256=p75sovF0SmRP6zxzpIaaOmqlxvXB_xEz3XPNf59EF7w,1339
32
43
  fal/toolkit/file/__init__.py,sha256=FbNl6wD-P0aSSTUwzHt4HujBXrbC3ABmaigPQA4hRfg,70
33
- fal/toolkit/file/file.py,sha256=_Kt-jqFoUdJ_UxSC7Ll6oeVWtkvjYZBJWONp31UvK7w,6025
44
+ fal/toolkit/file/file.py,sha256=r8PzNCgv8Gkj6s1zM0yW-pcMKIouyaiEH06iBue8MwM,6066
34
45
  fal/toolkit/file/types.py,sha256=9CqDh8SmNJNzfsrvtj468uo2SprJH9rOk8KMhhfU73c,1050
35
- fal/toolkit/file/providers/fal.py,sha256=7oqzkmeNoXjRZKsSIInC1ZdX8-lmYamIZmgWtNrYpJo,3314
46
+ fal/toolkit/file/providers/fal.py,sha256=AfNwdnvt_IIFrzvNZPFjGwfVOQ2OzPfG1ySz6-2tnvc,3690
36
47
  fal/toolkit/file/providers/gcp.py,sha256=7Lg7BXoHKkFu0jkGv3_vKh2Ks6eRfDMbw31N3mvDUtk,1913
37
48
  fal/toolkit/file/providers/r2.py,sha256=YW5aJBOX41MQxfx1rA_f-IiJhAPMZ5md0cxBcg3y08I,2537
38
49
  fal/toolkit/image/__init__.py,sha256=qNLyXsBWysionUjbeWbohLqWlw3G_UpzunamkZd_JLQ,71
39
- fal/toolkit/image/image.py,sha256=7Hy0Mxb_QAJI1o-5ycYGES4ReB3iLSmxVkCIX2Y6MEs,4252
50
+ fal/toolkit/image/image.py,sha256=2q1ZCBSSdmDx9q1S4ahoCOniNaRcfSFnCS31f3b8ZZ0,4252
40
51
  fal/toolkit/utils/__init__.py,sha256=CrmM9DyCz5-SmcTzRSm5RaLgxy3kf0ZsSEN9uhnX2Xo,97
41
- fal/toolkit/utils/download_utils.py,sha256=9rYLDOztOoib7TqCXuGj05nPmcgd3Soj0AT16O_sczA,15460
52
+ fal/toolkit/utils/download_utils.py,sha256=M-xUAV8kX6o1zcojozSTaArGIC_LgQriagCC8AoG0mM,15487
42
53
  openapi_fal_rest/__init__.py,sha256=ziculmF_i6trw63LzZGFX-6W3Lwq9mCR8_UpkpvpaHI,152
43
54
  openapi_fal_rest/client.py,sha256=G6BpJg9j7-JsrAUGddYwkzeWRYickBjPdcVgXoPzxuE,2817
44
55
  openapi_fal_rest/errors.py,sha256=8mXSxdfSGzxT82srdhYbR0fHfgenxJXaUtMkaGgb6iU,470
@@ -81,8 +92,8 @@ openapi_fal_rest/models/workflow_node_type.py,sha256=-FzyeY2bxcNmizKbJI8joG7byRi
81
92
  openapi_fal_rest/models/workflow_schema.py,sha256=4K5gsv9u9pxx2ItkffoyHeNjBBYf6ur5bN4m_zePZNY,2019
82
93
  openapi_fal_rest/models/workflow_schema_input.py,sha256=2OkOXWHTNsCXHWS6EGDFzcJKkW5FIap-2gfO233EvZQ,1191
83
94
  openapi_fal_rest/models/workflow_schema_output.py,sha256=EblwSPAGfWfYVWw_WSSaBzQVju296is9o28rMBAd0mc,1196
84
- fal-0.15.0.dist-info/METADATA,sha256=GyZiaXubOMkUTFuwCBujAq0mHZPBnExycm_DTNqndzA,3258
85
- fal-0.15.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
86
- fal-0.15.0.dist-info/entry_points.txt,sha256=1GadEh1IgXO5Bb42Xo9lwNsJnm9Xjfo3qIdqwbfdV8Q,36
87
- fal-0.15.0.dist-info/top_level.txt,sha256=r257X1L57oJL8_lM0tRrfGuXFwm66i1huwQygbpLmHw,21
88
- fal-0.15.0.dist-info/RECORD,,
95
+ fal-1.0.0.dist-info/METADATA,sha256=1n_Jk_wpas1IT64tggvZhChSuT1QvP6TJ17T35mxpp4,3740
96
+ fal-1.0.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
97
+ fal-1.0.0.dist-info/entry_points.txt,sha256=32zwTUC1U1E7nSTIGCoANQOQ3I7-qHG5wI6gsVz5pNU,37
98
+ fal-1.0.0.dist-info/top_level.txt,sha256=r257X1L57oJL8_lM0tRrfGuXFwm66i1huwQygbpLmHw,21
99
+ fal-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ fal = fal.cli:main