fal 1.8.2__tar.gz → 1.8.4__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.8.2/fal.egg-info → fal-1.8.4}/PKG-INFO +1 -1
- {fal-1.8.2 → fal-1.8.4/fal.egg-info}/PKG-INFO +1 -1
- {fal-1.8.2 → fal-1.8.4}/src/fal/_fal_version.py +2 -2
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/file/file.py +3 -1
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/file/providers/fal.py +28 -4
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/file/providers/gcp.py +4 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/file/providers/r2.py +4 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/file/providers/s3.py +4 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/file/types.py +12 -1
- {fal-1.8.2 → fal-1.8.4}/tests/test_stability.py +7 -0
- {fal-1.8.2 → fal-1.8.4}/.gitignore +0 -0
- {fal-1.8.2 → fal-1.8.4}/Makefile +0 -0
- {fal-1.8.2 → fal-1.8.4}/README.md +0 -0
- {fal-1.8.2 → fal-1.8.4}/docs/conf.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/docs/index.rst +0 -0
- {fal-1.8.2 → fal-1.8.4}/fal.egg-info/SOURCES.txt +0 -0
- {fal-1.8.2 → fal-1.8.4}/fal.egg-info/dependency_links.txt +0 -0
- {fal-1.8.2 → fal-1.8.4}/fal.egg-info/entry_points.txt +0 -0
- {fal-1.8.2 → fal-1.8.4}/fal.egg-info/requires.txt +0 -0
- {fal-1.8.2 → fal-1.8.4}/fal.egg-info/top_level.txt +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/README.md +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/pyproject.toml +0 -0
- {fal-1.8.2 → fal-1.8.4}/openapi_rest.config.yaml +0 -0
- {fal-1.8.2 → fal-1.8.4}/pyproject.toml +0 -0
- {fal-1.8.2 → fal-1.8.4}/setup.cfg +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/__main__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/_serialization.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/_version.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/api.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/app.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/apps.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/auth/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/auth/auth0.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/auth/local.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/_utils.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/apps.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/auth.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/create.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/debug.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/deploy.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/doctor.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/keys.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/main.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/parser.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/run.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/runners.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/cli/secrets.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/config.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/console/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/console/icons.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/console/ux.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/container.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/exceptions/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/exceptions/_base.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/exceptions/_cuda.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/exceptions/auth.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/files.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/flags.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/logging/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/logging/isolate.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/logging/style.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/logging/trace.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/logging/user.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/py.typed +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/rest_client.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/sdk.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/sync.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/exceptions.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/file/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/image/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/image/image.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/image/safety_checker.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/optimize.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/types.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/utils/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/utils/download_utils.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/toolkit/utils/retry.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/utils.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/src/fal/workflows.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/assets/cat.png +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/cli/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/cli/test_apps.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/cli/test_auth.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/cli/test_deploy.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/cli/test_keys.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/cli/test_run.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/cli/test_secrets.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/conftest.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/integration_test.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/mainify_package/__init__.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/mainify_package/impl.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/mainify_package/utils.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/mainify_target.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/test_apps.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/toolkit/file_test.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/toolkit/image_test.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/toolkit/test_types.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tests/toolkit/utils/retry.py +0 -0
- {fal-1.8.2 → fal-1.8.4}/tools/demo_script.py +0 -0
|
@@ -166,7 +166,9 @@ class File(BaseModel):
|
|
|
166
166
|
fallback_repo = get_builtin_repository(fallback_repository)
|
|
167
167
|
|
|
168
168
|
url = fallback_repo.save(
|
|
169
|
-
fdata,
|
|
169
|
+
fdata,
|
|
170
|
+
object_lifecycle_preference=object_lifecycle_preference,
|
|
171
|
+
**fallback_save_kwargs,
|
|
170
172
|
)
|
|
171
173
|
|
|
172
174
|
return cls(
|
|
@@ -185,7 +185,13 @@ class FalFileRepositoryBase(FileRepository):
|
|
|
185
185
|
@dataclass
|
|
186
186
|
class FalFileRepository(FalFileRepositoryBase):
|
|
187
187
|
def save(
|
|
188
|
-
self,
|
|
188
|
+
self,
|
|
189
|
+
file: FileData,
|
|
190
|
+
multipart: bool | None = None,
|
|
191
|
+
multipart_threshold: int | None = None,
|
|
192
|
+
multipart_chunk_size: int | None = None,
|
|
193
|
+
multipart_max_concurrency: int | None = None,
|
|
194
|
+
object_lifecycle_preference: dict[str, str] | None = None,
|
|
189
195
|
) -> str:
|
|
190
196
|
return self._save(file, "gcs")
|
|
191
197
|
|
|
@@ -414,6 +420,7 @@ class MultipartUploadV3:
|
|
|
414
420
|
method="POST",
|
|
415
421
|
headers={
|
|
416
422
|
**self.auth_headers,
|
|
423
|
+
"Content-Type": "application/json",
|
|
417
424
|
"Accept": "application/json",
|
|
418
425
|
},
|
|
419
426
|
data=json.dumps(
|
|
@@ -833,7 +840,10 @@ class FalFileRepositoryV2(FalFileRepositoryBase):
|
|
|
833
840
|
content_type=content_type,
|
|
834
841
|
file_name=os.path.basename(file_path),
|
|
835
842
|
)
|
|
836
|
-
url = self.save(
|
|
843
|
+
url = self.save(
|
|
844
|
+
data,
|
|
845
|
+
object_lifecycle_preference=object_lifecycle_preference,
|
|
846
|
+
)
|
|
837
847
|
|
|
838
848
|
return url, data
|
|
839
849
|
|
|
@@ -843,6 +853,10 @@ class InMemoryRepository(FileRepository):
|
|
|
843
853
|
def save(
|
|
844
854
|
self,
|
|
845
855
|
file: FileData,
|
|
856
|
+
multipart: bool | None = None,
|
|
857
|
+
multipart_threshold: int | None = None,
|
|
858
|
+
multipart_chunk_size: int | None = None,
|
|
859
|
+
multipart_max_concurrency: int | None = None,
|
|
846
860
|
object_lifecycle_preference: dict[str, str] | None = None,
|
|
847
861
|
) -> str:
|
|
848
862
|
return f'data:{file.content_type};base64,{b64encode(file.data).decode("utf-8")}'
|
|
@@ -864,6 +878,10 @@ class FalCDNFileRepository(FileRepository):
|
|
|
864
878
|
def save(
|
|
865
879
|
self,
|
|
866
880
|
file: FileData,
|
|
881
|
+
multipart: bool | None = None,
|
|
882
|
+
multipart_threshold: int | None = None,
|
|
883
|
+
multipart_chunk_size: int | None = None,
|
|
884
|
+
multipart_max_concurrency: int | None = None,
|
|
867
885
|
object_lifecycle_preference: dict[str, str] | None = None,
|
|
868
886
|
) -> str:
|
|
869
887
|
headers = {
|
|
@@ -1012,7 +1030,10 @@ class FalFileRepositoryV3(FileRepository):
|
|
|
1012
1030
|
content_type=content_type,
|
|
1013
1031
|
file_name=os.path.basename(file_path),
|
|
1014
1032
|
)
|
|
1015
|
-
url = self.save(
|
|
1033
|
+
url = self.save(
|
|
1034
|
+
data,
|
|
1035
|
+
object_lifecycle_preference=object_lifecycle_preference,
|
|
1036
|
+
)
|
|
1016
1037
|
|
|
1017
1038
|
return url, data
|
|
1018
1039
|
|
|
@@ -1118,6 +1139,9 @@ class InternalFalFileRepositoryV3(FileRepository):
|
|
|
1118
1139
|
content_type=content_type,
|
|
1119
1140
|
file_name=os.path.basename(file_path),
|
|
1120
1141
|
)
|
|
1121
|
-
url = self.save(
|
|
1142
|
+
url = self.save(
|
|
1143
|
+
data,
|
|
1144
|
+
object_lifecycle_preference=object_lifecycle_preference,
|
|
1145
|
+
)
|
|
1122
1146
|
|
|
1123
1147
|
return url, data
|
|
@@ -56,6 +56,10 @@ class GoogleStorageRepository(FileRepository):
|
|
|
56
56
|
def save(
|
|
57
57
|
self,
|
|
58
58
|
data: FileData,
|
|
59
|
+
multipart: bool | None = None,
|
|
60
|
+
multipart_threshold: int | None = None,
|
|
61
|
+
multipart_chunk_size: int | None = None,
|
|
62
|
+
multipart_max_concurrency: int | None = None,
|
|
59
63
|
object_lifecycle_preference: Optional[dict[str, str]] = None,
|
|
60
64
|
) -> str:
|
|
61
65
|
destination_path = posixpath.join(
|
|
@@ -73,6 +73,10 @@ class R2Repository(FileRepository):
|
|
|
73
73
|
def save(
|
|
74
74
|
self,
|
|
75
75
|
data: FileData,
|
|
76
|
+
multipart: bool | None = None,
|
|
77
|
+
multipart_threshold: int | None = None,
|
|
78
|
+
multipart_chunk_size: int | None = None,
|
|
79
|
+
multipart_max_concurrency: int | None = None,
|
|
76
80
|
object_lifecycle_preference: Optional[dict[str, str]] = None,
|
|
77
81
|
) -> str:
|
|
78
82
|
destination_path = posixpath.join(
|
|
@@ -57,6 +57,10 @@ class S3Repository(FileRepository):
|
|
|
57
57
|
def save(
|
|
58
58
|
self,
|
|
59
59
|
data: FileData,
|
|
60
|
+
multipart: bool | None = None,
|
|
61
|
+
multipart_threshold: int | None = None,
|
|
62
|
+
multipart_chunk_size: int | None = None,
|
|
63
|
+
multipart_max_concurrency: int | None = None,
|
|
60
64
|
object_lifecycle_preference: Optional[dict[str, str]] = None,
|
|
61
65
|
key: Optional[str] = None,
|
|
62
66
|
) -> str:
|
|
@@ -39,6 +39,10 @@ class FileRepository:
|
|
|
39
39
|
def save(
|
|
40
40
|
self,
|
|
41
41
|
data: FileData,
|
|
42
|
+
multipart: bool | None = None,
|
|
43
|
+
multipart_threshold: int | None = None,
|
|
44
|
+
multipart_chunk_size: int | None = None,
|
|
45
|
+
multipart_max_concurrency: int | None = None,
|
|
42
46
|
object_lifecycle_preference: Optional[dict[str, str]] = None,
|
|
43
47
|
) -> str:
|
|
44
48
|
raise NotImplementedError()
|
|
@@ -59,4 +63,11 @@ class FileRepository:
|
|
|
59
63
|
with open(file_path, "rb") as fobj:
|
|
60
64
|
data = FileData(fobj.read(), content_type, Path(file_path).name)
|
|
61
65
|
|
|
62
|
-
return self.save(
|
|
66
|
+
return self.save(
|
|
67
|
+
data,
|
|
68
|
+
multipart=multipart,
|
|
69
|
+
multipart_threshold=multipart_threshold,
|
|
70
|
+
multipart_chunk_size=multipart_chunk_size,
|
|
71
|
+
multipart_max_concurrency=multipart_max_concurrency,
|
|
72
|
+
object_lifecycle_preference=object_lifecycle_preference,
|
|
73
|
+
), data
|
|
@@ -603,6 +603,13 @@ def test_fal_storage(isolated_client, repo_type, url_prefix):
|
|
|
603
603
|
return File.from_bytes(
|
|
604
604
|
b"Hello fal storage from isolated",
|
|
605
605
|
repository=repo_type,
|
|
606
|
+
save_kwargs={
|
|
607
|
+
"multipart": False,
|
|
608
|
+
"multipart_threshold": 1024 * 1024,
|
|
609
|
+
"multipart_chunk_size": 1024 * 1024,
|
|
610
|
+
"multipart_max_concurrency": 10,
|
|
611
|
+
"object_lifecycle_preference": {},
|
|
612
|
+
},
|
|
606
613
|
fallback_repository=None,
|
|
607
614
|
)
|
|
608
615
|
|
|
File without changes
|
{fal-1.8.2 → fal-1.8.4}/Makefile
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
|
{fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/api/workflows/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
|
|
File without changes
|
|
File without changes
|
{fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py
RENAMED
|
File without changes
|
{fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py
RENAMED
|
File without changes
|
|
File without changes
|
{fal-1.8.2 → fal-1.8.4}/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.8.2 → fal-1.8.4}/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.8.2 → fal-1.8.4}/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.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py
RENAMED
|
File without changes
|
|
File without changes
|
{fal-1.8.2 → fal-1.8.4}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py
RENAMED
|
File without changes
|
|
File without changes
|
{fal-1.8.2 → fal-1.8.4}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|