fal 1.0.0__tar.gz → 1.0.2__tar.gz
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-1.0.0 → fal-1.0.2}/PKG-INFO +1 -1
- {fal-1.0.0 → fal-1.0.2}/fal.egg-info/PKG-INFO +1 -1
- {fal-1.0.0 → fal-1.0.2}/src/fal/_fal_version.py +2 -2
- {fal-1.0.0 → fal-1.0.2}/src/fal/_serialization.py +4 -1
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/apps.py +5 -1
- {fal-1.0.0 → fal-1.0.2}/tests/cli/test_apps.py +2 -1
- {fal-1.0.0 → fal-1.0.2}/tests/test_stability.py +34 -0
- {fal-1.0.0 → fal-1.0.2}/.gitignore +0 -0
- {fal-1.0.0 → fal-1.0.2}/README.md +0 -0
- {fal-1.0.0 → fal-1.0.2}/fal.egg-info/SOURCES.txt +0 -0
- {fal-1.0.0 → fal-1.0.2}/fal.egg-info/dependency_links.txt +0 -0
- {fal-1.0.0 → fal-1.0.2}/fal.egg-info/entry_points.txt +0 -0
- {fal-1.0.0 → fal-1.0.2}/fal.egg-info/requires.txt +0 -0
- {fal-1.0.0 → fal-1.0.2}/fal.egg-info/top_level.txt +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/README.md +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_or_update_workflow_workflows_post.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow_workflows_user_id_workflow_name_delete.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/execute_workflow_workflows_user_id_workflow_name_post.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow_workflows_user_id_workflow_name_get.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflows_workflows_get.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/execute_workflow_workflows_user_id_workflow_name_post_json_body_type_0.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/execute_workflow_workflows_user_id_workflow_name_post_response_200_type_0.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents_type_0.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/pyproject.toml +0 -0
- {fal-1.0.0 → fal-1.0.2}/openapi_rest.config.yaml +0 -0
- {fal-1.0.0 → fal-1.0.2}/pyproject.toml +0 -0
- {fal-1.0.0 → fal-1.0.2}/setup.cfg +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/__main__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/_version.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/api.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/app.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/apps.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/auth/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/auth/auth0.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/auth/local.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/auth.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/debug.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/deploy.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/keys.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/main.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/parser.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/run.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/cli/secrets.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/console/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/console/icons.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/console/ux.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/exceptions/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/exceptions/_base.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/exceptions/auth.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/flags.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/logging/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/logging/isolate.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/logging/style.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/logging/trace.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/logging/user.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/py.typed +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/rest_client.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/sdk.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/sync.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/exceptions.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/file.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/providers/fal.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/providers/gcp.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/providers/r2.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/types.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/image/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/image/image.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/optimize.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/utils/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/utils/download_utils.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/utils.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/src/fal/workflows.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/cli/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/cli/test_auth.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/cli/test_deploy.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/cli/test_keys.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/cli/test_run.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/cli/test_secrets.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/conftest.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/integration_test.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/mainify_package/__init__.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/mainify_package/impl.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/mainify_package/utils.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/mainify_target.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/test_apps.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/toolkit/file_test.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tests/toolkit/image_test.py +0 -0
- {fal-1.0.0 → fal-1.0.2}/tools/demo_script.py +0 -0
{fal-1.0.0 → fal-1.0.2}/PKG-INFO
RENAMED
|
@@ -195,7 +195,10 @@ def _patch_rlock() -> None:
|
|
|
195
195
|
|
|
196
196
|
|
|
197
197
|
def _patch_console_thread_locals() -> None:
|
|
198
|
-
|
|
198
|
+
try:
|
|
199
|
+
from rich.console import ConsoleThreadLocals
|
|
200
|
+
except ModuleNotFoundError:
|
|
201
|
+
return
|
|
199
202
|
|
|
200
203
|
def create_locals(kwargs: dict) -> ConsoleThreadLocals:
|
|
201
204
|
return ConsoleThreadLocals(**kwargs)
|
|
@@ -117,7 +117,7 @@ def _scale(args):
|
|
|
117
117
|
return
|
|
118
118
|
|
|
119
119
|
alias_info = connection.update_application(
|
|
120
|
-
application_name=args.
|
|
120
|
+
application_name=args.app_name,
|
|
121
121
|
keep_alive=args.keep_alive,
|
|
122
122
|
max_multiplexing=args.max_multiplexing,
|
|
123
123
|
max_concurrency=args.max_concurrency,
|
|
@@ -136,6 +136,10 @@ def _add_scale_parser(subparsers, parents):
|
|
|
136
136
|
help=scale_help,
|
|
137
137
|
parents=parents,
|
|
138
138
|
)
|
|
139
|
+
parser.add_argument(
|
|
140
|
+
"app_name",
|
|
141
|
+
help="Application name.",
|
|
142
|
+
)
|
|
139
143
|
parser.add_argument(
|
|
140
144
|
"--keep-alive",
|
|
141
145
|
type=int,
|
|
@@ -31,7 +31,7 @@ def test_set_rev():
|
|
|
31
31
|
def test_scale():
|
|
32
32
|
args = parse_args(
|
|
33
33
|
[
|
|
34
|
-
"apps", "scale",
|
|
34
|
+
"apps", "scale", "myapp",
|
|
35
35
|
"--keep-alive", "123",
|
|
36
36
|
"--max-multiplexing", "321",
|
|
37
37
|
"--min-concurrency", "7",
|
|
@@ -39,6 +39,7 @@ def test_scale():
|
|
|
39
39
|
]
|
|
40
40
|
)
|
|
41
41
|
assert args.func == _scale
|
|
42
|
+
assert args.app_name == "myapp"
|
|
42
43
|
assert args.keep_alive == 123
|
|
43
44
|
assert args.max_multiplexing == 321
|
|
44
45
|
assert args.min_concurrency == 7
|
|
@@ -67,6 +67,40 @@ def test_function_pipelining(isolated_client):
|
|
|
67
67
|
assert calling_function(regular_function()) == 84
|
|
68
68
|
|
|
69
69
|
|
|
70
|
+
def test_function_exception(isolated_client):
|
|
71
|
+
class FooException(Exception):
|
|
72
|
+
pass
|
|
73
|
+
|
|
74
|
+
class BarException(Exception):
|
|
75
|
+
pass
|
|
76
|
+
|
|
77
|
+
class MyFuncException(Exception):
|
|
78
|
+
pass
|
|
79
|
+
|
|
80
|
+
def foo():
|
|
81
|
+
raise FooException("foo")
|
|
82
|
+
|
|
83
|
+
def bar():
|
|
84
|
+
try:
|
|
85
|
+
foo()
|
|
86
|
+
except Exception as exc:
|
|
87
|
+
raise BarException("bar") from exc
|
|
88
|
+
|
|
89
|
+
@isolated_client()
|
|
90
|
+
def myfunc():
|
|
91
|
+
try:
|
|
92
|
+
bar()
|
|
93
|
+
except Exception as exc:
|
|
94
|
+
raise MyFuncException("myfunc") from exc
|
|
95
|
+
|
|
96
|
+
with pytest.raises(MyFuncException) as excinfo:
|
|
97
|
+
myfunc()
|
|
98
|
+
|
|
99
|
+
bar_exc = excinfo.value.__cause__
|
|
100
|
+
assert isinstance(bar_exc, BarException)
|
|
101
|
+
assert isinstance(bar_exc.__cause__, FooException)
|
|
102
|
+
|
|
103
|
+
|
|
70
104
|
@pytest.mark.xfail(reason="See https://github.com/fal-ai/fal/issues/169")
|
|
71
105
|
def test_function_calling_other_function(isolated_client):
|
|
72
106
|
try:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py
RENAMED
|
File without changes
|
|
File without changes
|
{fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents_type_0.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|