fal 1.28.0__tar.gz → 1.28.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.28.0/fal.egg-info → fal-1.28.2}/PKG-INFO +1 -1
- {fal-1.28.0 → fal-1.28.2/fal.egg-info}/PKG-INFO +1 -1
- {fal-1.28.0 → fal-1.28.2}/src/fal/_fal_version.py +16 -3
- {fal-1.28.0 → fal-1.28.2}/src/fal/api.py +5 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/app.py +24 -21
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/file/file.py +19 -15
- {fal-1.28.0 → fal-1.28.2}/.gitignore +0 -0
- {fal-1.28.0 → fal-1.28.2}/Makefile +0 -0
- {fal-1.28.0 → fal-1.28.2}/README.md +0 -0
- {fal-1.28.0 → fal-1.28.2}/docs/conf.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/docs/index.rst +0 -0
- {fal-1.28.0 → fal-1.28.2}/fal.egg-info/SOURCES.txt +0 -0
- {fal-1.28.0 → fal-1.28.2}/fal.egg-info/dependency_links.txt +0 -0
- {fal-1.28.0 → fal-1.28.2}/fal.egg-info/entry_points.txt +0 -0
- {fal-1.28.0 → fal-1.28.2}/fal.egg-info/requires.txt +0 -0
- {fal-1.28.0 → fal-1.28.2}/fal.egg-info/top_level.txt +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/README.md +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/pyproject.toml +0 -0
- {fal-1.28.0 → fal-1.28.2}/openapi_rest.config.yaml +0 -0
- {fal-1.28.0 → fal-1.28.2}/pyproject.toml +0 -0
- {fal-1.28.0 → fal-1.28.2}/setup.cfg +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/__main__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/_serialization.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/_version.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/apps.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/auth/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/auth/auth0.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/auth/local.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/_utils.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/api.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/apps.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/auth.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/cli_nested_json.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/create.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/debug.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/deploy.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/doctor.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/files.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/keys.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/main.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/parser.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/profile.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/run.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/runners.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/secrets.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/cli/teams.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/config.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/console/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/console/icons.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/console/ux.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/container.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/exceptions/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/exceptions/_base.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/exceptions/_cuda.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/exceptions/auth.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/files.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/flags.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/logging/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/logging/isolate.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/logging/style.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/logging/trace.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/logging/user.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/project.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/py.typed +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/rest_client.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/sdk.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/sync.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/audio/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/audio/audio.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/exceptions.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/file/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/file/providers/fal.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/file/providers/gcp.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/file/providers/r2.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/file/providers/s3.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/file/types.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/image/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/image/image.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/image/safety_checker.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/kv.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/optimize.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/types.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/utils/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/utils/download_utils.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/utils/endpoint.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/utils/retry.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/video/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/toolkit/video/video.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/utils.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/src/fal/workflows.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/assets/cat.png +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/cli/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/cli/test_apps.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/cli/test_auth.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/cli/test_deploy.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/cli/test_keys.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/cli/test_run.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/cli/test_secrets.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/conftest.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/integration_test.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/mainify_package/__init__.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/mainify_package/impl.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/mainify_package/utils.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/mainify_target.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/test_apps.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/test_files.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/test_kv.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/test_stability.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/toolkit/file/providers/test_fal_retry.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/toolkit/file_test.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/toolkit/image_test.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/toolkit/test_types.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tests/toolkit/utils/retry.py +0 -0
- {fal-1.28.0 → fal-1.28.2}/tools/demo_script.py +0 -0
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
# file generated by setuptools-scm
|
|
2
2
|
# don't change, don't track in version control
|
|
3
3
|
|
|
4
|
-
__all__ = [
|
|
4
|
+
__all__ = [
|
|
5
|
+
"__version__",
|
|
6
|
+
"__version_tuple__",
|
|
7
|
+
"version",
|
|
8
|
+
"version_tuple",
|
|
9
|
+
"__commit_id__",
|
|
10
|
+
"commit_id",
|
|
11
|
+
]
|
|
5
12
|
|
|
6
13
|
TYPE_CHECKING = False
|
|
7
14
|
if TYPE_CHECKING:
|
|
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
|
|
|
9
16
|
from typing import Union
|
|
10
17
|
|
|
11
18
|
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
+
COMMIT_ID = Union[str, None]
|
|
12
20
|
else:
|
|
13
21
|
VERSION_TUPLE = object
|
|
22
|
+
COMMIT_ID = object
|
|
14
23
|
|
|
15
24
|
version: str
|
|
16
25
|
__version__: str
|
|
17
26
|
__version_tuple__: VERSION_TUPLE
|
|
18
27
|
version_tuple: VERSION_TUPLE
|
|
28
|
+
commit_id: COMMIT_ID
|
|
29
|
+
__commit_id__: COMMIT_ID
|
|
19
30
|
|
|
20
|
-
__version__ = version = '1.28.
|
|
21
|
-
__version_tuple__ = version_tuple = (1, 28,
|
|
31
|
+
__version__ = version = '1.28.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 28, 2)
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = None
|
|
@@ -953,6 +953,11 @@ def function( # type: ignore
|
|
|
953
953
|
):
|
|
954
954
|
if host is None:
|
|
955
955
|
host = FalServerlessHost()
|
|
956
|
+
|
|
957
|
+
# NOTE: assuming kind="container" if image is provided
|
|
958
|
+
if config.get("image"):
|
|
959
|
+
kind = "container"
|
|
960
|
+
|
|
956
961
|
options = host.parse_options(kind=kind, **config)
|
|
957
962
|
|
|
958
963
|
def wrapper(func: Callable[ArgsT, ReturnT]):
|
|
@@ -411,28 +411,31 @@ class App(BaseServable):
|
|
|
411
411
|
)
|
|
412
412
|
return response
|
|
413
413
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
414
|
+
multiplexing = self.host_kwargs.get("max_multiplexing") or 1
|
|
415
|
+
if multiplexing == 1:
|
|
416
|
+
# just register the middleware if we are not multiplexing
|
|
417
|
+
@app.middleware("http")
|
|
418
|
+
async def set_global_object_preference(request, call_next):
|
|
419
|
+
try:
|
|
420
|
+
preference_dict = request_lifecycle_preference(request)
|
|
421
|
+
if preference_dict is not None:
|
|
422
|
+
# This will not work properly for apps with multiplexing enabled
|
|
423
|
+
# we may mix up the preferences between requests
|
|
424
|
+
LIFECYCLE_PREFERENCE.set(preference_dict)
|
|
425
|
+
except Exception:
|
|
426
|
+
from fastapi.logger import logger
|
|
427
|
+
|
|
428
|
+
logger.exception(
|
|
429
|
+
"Failed set a global lifecycle preference %s",
|
|
430
|
+
self.__class__.__name__,
|
|
431
|
+
)
|
|
429
432
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
433
|
+
try:
|
|
434
|
+
return await call_next(request)
|
|
435
|
+
finally:
|
|
436
|
+
# We may miss the global preference if there are operations
|
|
437
|
+
# being done in the background that go beyond the request
|
|
438
|
+
LIFECYCLE_PREFERENCE.set(None)
|
|
436
439
|
|
|
437
440
|
@app.middleware("http")
|
|
438
441
|
async def set_request_id(request, call_next):
|
|
@@ -84,15 +84,15 @@ def _try_with_fallback(
|
|
|
84
84
|
fallback_save_kwargs: dict,
|
|
85
85
|
) -> Any:
|
|
86
86
|
if fallback_repository is None:
|
|
87
|
-
|
|
87
|
+
fallback_repository = []
|
|
88
88
|
elif isinstance(fallback_repository, list):
|
|
89
|
-
|
|
89
|
+
pass
|
|
90
90
|
else:
|
|
91
|
-
|
|
91
|
+
fallback_repository = [fallback_repository]
|
|
92
92
|
|
|
93
|
-
attempts = [
|
|
93
|
+
attempts: list[tuple[FileRepository | RepositoryId, dict]] = [
|
|
94
94
|
(repository, save_kwargs),
|
|
95
|
-
*((fallback, fallback_save_kwargs) for fallback in
|
|
95
|
+
*((fallback, fallback_save_kwargs) for fallback in fallback_repository),
|
|
96
96
|
]
|
|
97
97
|
for idx, (repo, kwargs) in enumerate(attempts):
|
|
98
98
|
repo_obj = get_builtin_repository(repo)
|
|
@@ -201,9 +201,12 @@ class File(BaseModel):
|
|
|
201
201
|
|
|
202
202
|
fdata = FileData(data, content_type, file_name)
|
|
203
203
|
|
|
204
|
-
|
|
205
|
-
request_lifecycle_preference(request)
|
|
206
|
-
|
|
204
|
+
if request:
|
|
205
|
+
object_lifecycle_preference = request_lifecycle_preference(request)
|
|
206
|
+
else:
|
|
207
|
+
print("[WARNING] No request provided, using global lifecycle preference")
|
|
208
|
+
object_lifecycle_preference = LIFECYCLE_PREFERENCE.get()
|
|
209
|
+
|
|
207
210
|
save_kwargs.setdefault(
|
|
208
211
|
"object_lifecycle_preference", object_lifecycle_preference
|
|
209
212
|
)
|
|
@@ -250,9 +253,13 @@ class File(BaseModel):
|
|
|
250
253
|
fallback_save_kwargs = fallback_save_kwargs or {}
|
|
251
254
|
|
|
252
255
|
content_type = content_type or "application/octet-stream"
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
+
|
|
257
|
+
if request:
|
|
258
|
+
object_lifecycle_preference = request_lifecycle_preference(request)
|
|
259
|
+
else:
|
|
260
|
+
print("[WARNING] No request provided, using global lifecycle preference")
|
|
261
|
+
object_lifecycle_preference = LIFECYCLE_PREFERENCE.get()
|
|
262
|
+
|
|
256
263
|
save_kwargs.setdefault(
|
|
257
264
|
"object_lifecycle_preference", object_lifecycle_preference
|
|
258
265
|
)
|
|
@@ -332,12 +339,9 @@ class CompressedFile(File):
|
|
|
332
339
|
shutil.rmtree(self.extract_dir)
|
|
333
340
|
|
|
334
341
|
|
|
335
|
-
def request_lifecycle_preference(request:
|
|
342
|
+
def request_lifecycle_preference(request: Request) -> dict[str, str] | None:
|
|
336
343
|
import json
|
|
337
344
|
|
|
338
|
-
if request is None:
|
|
339
|
-
return None
|
|
340
|
-
|
|
341
345
|
preference_str = request.headers.get(OBJECT_LIFECYCLE_PREFERENCE_KEY)
|
|
342
346
|
if preference_str is None:
|
|
343
347
|
return None
|
|
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.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.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
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py
RENAMED
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py
RENAMED
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py
RENAMED
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py
RENAMED
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py
RENAMED
|
File without changes
|
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fal-1.28.0 → fal-1.28.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.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
|
|
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
|