fal 1.17.1__tar.gz → 1.19.0__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.17.1/fal.egg-info → fal-1.19.0}/PKG-INFO +2 -2
- {fal-1.17.1 → fal-1.19.0/fal.egg-info}/PKG-INFO +2 -2
- {fal-1.17.1 → fal-1.19.0}/fal.egg-info/SOURCES.txt +4 -0
- {fal-1.17.1 → fal-1.19.0}/fal.egg-info/requires.txt +1 -1
- {fal-1.17.1 → fal-1.19.0}/pyproject.toml +1 -1
- {fal-1.17.1 → fal-1.19.0}/src/fal/_fal_version.py +2 -2
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/apps.py +2 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/files.py +14 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/files.py +28 -8
- {fal-1.17.1 → fal-1.19.0}/src/fal/sdk.py +2 -0
- fal-1.19.0/src/fal/toolkit/audio/__init__.py +1 -0
- fal-1.19.0/src/fal/toolkit/audio/audio.py +5 -0
- fal-1.19.0/src/fal/toolkit/video/__init__.py +1 -0
- fal-1.19.0/src/fal/toolkit/video/video.py +5 -0
- {fal-1.17.1 → fal-1.19.0}/.gitignore +0 -0
- {fal-1.17.1 → fal-1.19.0}/Makefile +0 -0
- {fal-1.17.1 → fal-1.19.0}/README.md +0 -0
- {fal-1.17.1 → fal-1.19.0}/docs/conf.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/docs/index.rst +0 -0
- {fal-1.17.1 → fal-1.19.0}/fal.egg-info/dependency_links.txt +0 -0
- {fal-1.17.1 → fal-1.19.0}/fal.egg-info/entry_points.txt +0 -0
- {fal-1.17.1 → fal-1.19.0}/fal.egg-info/top_level.txt +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/README.md +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/pyproject.toml +0 -0
- {fal-1.17.1 → fal-1.19.0}/openapi_rest.config.yaml +0 -0
- {fal-1.17.1 → fal-1.19.0}/setup.cfg +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/__main__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/_serialization.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/_version.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/api.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/app.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/apps.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/auth/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/auth/auth0.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/auth/local.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/_utils.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/api.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/auth.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/cli_nested_json.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/create.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/debug.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/deploy.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/doctor.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/keys.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/main.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/parser.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/profile.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/run.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/runners.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/secrets.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/cli/teams.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/config.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/console/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/console/icons.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/console/ux.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/container.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/exceptions/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/exceptions/_base.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/exceptions/_cuda.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/exceptions/auth.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/flags.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/logging/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/logging/isolate.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/logging/style.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/logging/trace.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/logging/user.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/project.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/py.typed +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/rest_client.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/sync.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/exceptions.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/file/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/file/file.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/file/providers/fal.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/file/providers/gcp.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/file/providers/r2.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/file/providers/s3.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/file/types.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/image/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/image/image.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/image/safety_checker.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/optimize.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/types.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/utils/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/utils/download_utils.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/utils/endpoint.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/toolkit/utils/retry.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/utils.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/src/fal/workflows.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/assets/cat.png +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/cli/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/cli/test_apps.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/cli/test_auth.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/cli/test_deploy.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/cli/test_keys.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/cli/test_run.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/cli/test_secrets.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/conftest.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/integration_test.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/mainify_package/__init__.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/mainify_package/impl.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/mainify_package/utils.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/mainify_target.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/test_apps.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/test_stability.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/toolkit/file_test.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/toolkit/image_test.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/toolkit/test_types.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tests/toolkit/utils/retry.py +0 -0
- {fal-1.17.1 → fal-1.19.0}/tools/demo_script.py +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.19.0
|
|
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.17.0,>=0.16.2
|
|
9
|
-
Requires-Dist: isolate-proto<0.
|
|
9
|
+
Requires-Dist: isolate-proto<0.10.0,>=0.9.0
|
|
10
10
|
Requires-Dist: grpcio==1.64.0
|
|
11
11
|
Requires-Dist: dill==0.3.7
|
|
12
12
|
Requires-Dist: cloudpickle==3.0.0
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fal
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.19.0
|
|
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.17.0,>=0.16.2
|
|
9
|
-
Requires-Dist: isolate-proto<0.
|
|
9
|
+
Requires-Dist: isolate-proto<0.10.0,>=0.9.0
|
|
10
10
|
Requires-Dist: grpcio==1.64.0
|
|
11
11
|
Requires-Dist: dill==0.3.7
|
|
12
12
|
Requires-Dist: cloudpickle==3.0.0
|
|
@@ -133,6 +133,8 @@ src/fal/toolkit/__init__.py
|
|
|
133
133
|
src/fal/toolkit/exceptions.py
|
|
134
134
|
src/fal/toolkit/optimize.py
|
|
135
135
|
src/fal/toolkit/types.py
|
|
136
|
+
src/fal/toolkit/audio/__init__.py
|
|
137
|
+
src/fal/toolkit/audio/audio.py
|
|
136
138
|
src/fal/toolkit/file/__init__.py
|
|
137
139
|
src/fal/toolkit/file/file.py
|
|
138
140
|
src/fal/toolkit/file/types.py
|
|
@@ -152,6 +154,8 @@ src/fal/toolkit/utils/__init__.py
|
|
|
152
154
|
src/fal/toolkit/utils/download_utils.py
|
|
153
155
|
src/fal/toolkit/utils/endpoint.py
|
|
154
156
|
src/fal/toolkit/utils/retry.py
|
|
157
|
+
src/fal/toolkit/video/__init__.py
|
|
158
|
+
src/fal/toolkit/video/video.py
|
|
155
159
|
tests/__init__.py
|
|
156
160
|
tests/conftest.py
|
|
157
161
|
tests/integration_test.py
|
|
@@ -102,6 +102,7 @@ def _app_rev_table(revs: list[ApplicationInfo]):
|
|
|
102
102
|
table.add_column("Machine Type")
|
|
103
103
|
table.add_column("Runners")
|
|
104
104
|
table.add_column("Regions")
|
|
105
|
+
table.add_column("Created")
|
|
105
106
|
|
|
106
107
|
for rev in revs:
|
|
107
108
|
table.add_row(
|
|
@@ -115,6 +116,7 @@ def _app_rev_table(revs: list[ApplicationInfo]):
|
|
|
115
116
|
" ".join(rev.machine_types),
|
|
116
117
|
str(rev.active_runners),
|
|
117
118
|
" ".join(rev.valid_regions),
|
|
119
|
+
str(rev.created_at),
|
|
118
120
|
)
|
|
119
121
|
|
|
120
122
|
return table
|
|
@@ -28,6 +28,13 @@ def _upload(args):
|
|
|
28
28
|
fs.put(args.local_path, args.remote_path, recursive=True)
|
|
29
29
|
|
|
30
30
|
|
|
31
|
+
def _upload_url(args):
|
|
32
|
+
from fal.files import FalFileSystem
|
|
33
|
+
|
|
34
|
+
fs = FalFileSystem()
|
|
35
|
+
fs.put_file_from_url(args.url, args.remote_path)
|
|
36
|
+
|
|
37
|
+
|
|
31
38
|
def add_parser(main_subparsers, parents):
|
|
32
39
|
files_help = "Manage fal files."
|
|
33
40
|
parser = main_subparsers.add_parser(
|
|
@@ -68,3 +75,10 @@ def add_parser(main_subparsers, parents):
|
|
|
68
75
|
upload_parser.add_argument("local_path", type=str, help="Local path to upload")
|
|
69
76
|
upload_parser.add_argument("remote_path", type=str, help="Remote path to upload to")
|
|
70
77
|
upload_parser.set_defaults(func=_upload)
|
|
78
|
+
|
|
79
|
+
upload_url_parser = subparsers.add_parser("upload-url", parents=parents)
|
|
80
|
+
upload_url_parser.add_argument("url", type=str, help="URL to upload")
|
|
81
|
+
upload_url_parser.add_argument(
|
|
82
|
+
"remote_path", type=str, help="Remote path to upload to"
|
|
83
|
+
)
|
|
84
|
+
upload_url_parser.set_defaults(func=_upload_url)
|
|
@@ -28,9 +28,20 @@ class FalFileSystem(AbstractFileSystem):
|
|
|
28
28
|
},
|
|
29
29
|
)
|
|
30
30
|
|
|
31
|
+
def _request(self, method, path, **kwargs):
|
|
32
|
+
from fal.exceptions import FalServerlessException
|
|
33
|
+
|
|
34
|
+
response = self._client.request(method, path, **kwargs)
|
|
35
|
+
if response.status_code != 200:
|
|
36
|
+
try:
|
|
37
|
+
detail = response.json()["detail"]
|
|
38
|
+
except Exception:
|
|
39
|
+
detail = response.text
|
|
40
|
+
raise FalServerlessException(detail)
|
|
41
|
+
return response
|
|
42
|
+
|
|
31
43
|
def _ls(self, path):
|
|
32
|
-
response = self.
|
|
33
|
-
response.raise_for_status()
|
|
44
|
+
response = self._request("GET", f"/files/list/{path}")
|
|
34
45
|
files = response.json()
|
|
35
46
|
return sorted(
|
|
36
47
|
(
|
|
@@ -81,8 +92,7 @@ class FalFileSystem(AbstractFileSystem):
|
|
|
81
92
|
return
|
|
82
93
|
|
|
83
94
|
with open(lpath, "wb") as fobj:
|
|
84
|
-
response = self.
|
|
85
|
-
response.raise_for_status()
|
|
95
|
+
response = self._request("GET", f"/files/file/{rpath}")
|
|
86
96
|
fobj.write(response.content)
|
|
87
97
|
|
|
88
98
|
def put_file(self, lpath, rpath, mode="overwrite", **kwargs):
|
|
@@ -90,14 +100,24 @@ class FalFileSystem(AbstractFileSystem):
|
|
|
90
100
|
return
|
|
91
101
|
|
|
92
102
|
with open(lpath, "rb") as fobj:
|
|
93
|
-
|
|
103
|
+
self._request(
|
|
104
|
+
"POST",
|
|
94
105
|
f"/files/file/local/{rpath}",
|
|
95
106
|
files={"file_upload": (posixpath.basename(lpath), fobj, "text/plain")},
|
|
96
107
|
)
|
|
97
|
-
|
|
108
|
+
self.dircache.clear()
|
|
109
|
+
|
|
110
|
+
def put_file_from_url(self, url, rpath, mode="overwrite", **kwargs):
|
|
111
|
+
self._request(
|
|
112
|
+
"POST",
|
|
113
|
+
f"/files/file/url/{rpath}",
|
|
114
|
+
json={"url": url},
|
|
115
|
+
)
|
|
98
116
|
self.dircache.clear()
|
|
99
117
|
|
|
100
118
|
def rm(self, path, **kwargs):
|
|
101
|
-
|
|
102
|
-
|
|
119
|
+
self._request(
|
|
120
|
+
"DELETE",
|
|
121
|
+
f"/files/file/{path}",
|
|
122
|
+
)
|
|
103
123
|
self.dircache.clear()
|
|
@@ -238,6 +238,7 @@ class ApplicationInfo:
|
|
|
238
238
|
request_timeout: int
|
|
239
239
|
startup_timeout: int
|
|
240
240
|
valid_regions: list[str]
|
|
241
|
+
created_at: datetime
|
|
241
242
|
|
|
242
243
|
|
|
243
244
|
@dataclass
|
|
@@ -368,6 +369,7 @@ def _from_grpc_application_info(
|
|
|
368
369
|
request_timeout=message.request_timeout,
|
|
369
370
|
startup_timeout=message.startup_timeout,
|
|
370
371
|
valid_regions=list(message.valid_regions),
|
|
372
|
+
created_at=isolate_proto.datetime_from_timestamp(message.created_at),
|
|
371
373
|
)
|
|
372
374
|
|
|
373
375
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .audio import * # noqa: F403
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .video import * # noqa: F403
|
|
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.17.1 → fal-1.19.0}/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.17.1 → fal-1.19.0}/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.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py
RENAMED
|
File without changes
|
{fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py
RENAMED
|
File without changes
|
|
File without changes
|
{fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py
RENAMED
|
File without changes
|
{fal-1.17.1 → fal-1.19.0}/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.17.1 → fal-1.19.0}/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.17.1 → fal-1.19.0}/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.17.1 → fal-1.19.0}/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.17.1 → fal-1.19.0}/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.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py
RENAMED
|
File without changes
|
{fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py
RENAMED
|
File without changes
|
{fal-1.17.1 → fal-1.19.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py
RENAMED
|
File without changes
|
|
File without changes
|
{fal-1.17.1 → fal-1.19.0}/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.17.1 → fal-1.19.0}/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
|