fal 1.20.1__tar.gz → 1.20.3__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.

Files changed (183) hide show
  1. {fal-1.20.1/fal.egg-info → fal-1.20.3}/PKG-INFO +1 -1
  2. {fal-1.20.1 → fal-1.20.3/fal.egg-info}/PKG-INFO +1 -1
  3. {fal-1.20.1 → fal-1.20.3}/src/fal/_fal_version.py +2 -2
  4. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/main.py +0 -2
  5. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/__init__.py +10 -6
  6. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/audio/audio.py +12 -0
  7. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/file/file.py +9 -0
  8. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/image/image.py +9 -0
  9. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/video/video.py +12 -0
  10. {fal-1.20.1 → fal-1.20.3}/.gitignore +0 -0
  11. {fal-1.20.1 → fal-1.20.3}/Makefile +0 -0
  12. {fal-1.20.1 → fal-1.20.3}/README.md +0 -0
  13. {fal-1.20.1 → fal-1.20.3}/docs/conf.py +0 -0
  14. {fal-1.20.1 → fal-1.20.3}/docs/index.rst +0 -0
  15. {fal-1.20.1 → fal-1.20.3}/fal.egg-info/SOURCES.txt +0 -0
  16. {fal-1.20.1 → fal-1.20.3}/fal.egg-info/dependency_links.txt +0 -0
  17. {fal-1.20.1 → fal-1.20.3}/fal.egg-info/entry_points.txt +0 -0
  18. {fal-1.20.1 → fal-1.20.3}/fal.egg-info/requires.txt +0 -0
  19. {fal-1.20.1 → fal-1.20.3}/fal.egg-info/top_level.txt +0 -0
  20. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/README.md +0 -0
  21. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
  22. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
  23. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
  24. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
  25. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
  26. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
  27. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
  28. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
  29. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
  30. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
  31. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
  32. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
  33. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
  34. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
  35. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
  36. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
  37. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
  38. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
  39. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
  40. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
  41. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
  42. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
  43. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
  44. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
  45. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
  46. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
  47. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
  48. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
  49. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
  50. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
  51. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
  52. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
  53. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
  54. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
  55. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
  56. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
  57. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
  58. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
  59. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
  60. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
  61. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
  62. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
  63. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
  64. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
  65. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
  66. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
  67. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
  68. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
  69. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
  70. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
  71. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
  72. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
  73. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
  74. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
  75. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
  76. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
  77. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
  78. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
  79. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
  80. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
  81. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
  82. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
  83. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
  84. {fal-1.20.1 → fal-1.20.3}/openapi-fal-rest/pyproject.toml +0 -0
  85. {fal-1.20.1 → fal-1.20.3}/openapi_rest.config.yaml +0 -0
  86. {fal-1.20.1 → fal-1.20.3}/pyproject.toml +0 -0
  87. {fal-1.20.1 → fal-1.20.3}/setup.cfg +0 -0
  88. {fal-1.20.1 → fal-1.20.3}/src/fal/__init__.py +0 -0
  89. {fal-1.20.1 → fal-1.20.3}/src/fal/__main__.py +0 -0
  90. {fal-1.20.1 → fal-1.20.3}/src/fal/_serialization.py +0 -0
  91. {fal-1.20.1 → fal-1.20.3}/src/fal/_version.py +0 -0
  92. {fal-1.20.1 → fal-1.20.3}/src/fal/api.py +0 -0
  93. {fal-1.20.1 → fal-1.20.3}/src/fal/app.py +0 -0
  94. {fal-1.20.1 → fal-1.20.3}/src/fal/apps.py +0 -0
  95. {fal-1.20.1 → fal-1.20.3}/src/fal/auth/__init__.py +0 -0
  96. {fal-1.20.1 → fal-1.20.3}/src/fal/auth/auth0.py +0 -0
  97. {fal-1.20.1 → fal-1.20.3}/src/fal/auth/local.py +0 -0
  98. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/__init__.py +0 -0
  99. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/_utils.py +0 -0
  100. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/api.py +0 -0
  101. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/apps.py +0 -0
  102. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/auth.py +0 -0
  103. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/cli_nested_json.py +0 -0
  104. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/create.py +0 -0
  105. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/debug.py +0 -0
  106. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/deploy.py +0 -0
  107. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/doctor.py +0 -0
  108. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/files.py +0 -0
  109. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/keys.py +0 -0
  110. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/parser.py +0 -0
  111. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/profile.py +0 -0
  112. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/run.py +0 -0
  113. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/runners.py +0 -0
  114. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/secrets.py +0 -0
  115. {fal-1.20.1 → fal-1.20.3}/src/fal/cli/teams.py +0 -0
  116. {fal-1.20.1 → fal-1.20.3}/src/fal/config.py +0 -0
  117. {fal-1.20.1 → fal-1.20.3}/src/fal/console/__init__.py +0 -0
  118. {fal-1.20.1 → fal-1.20.3}/src/fal/console/icons.py +0 -0
  119. {fal-1.20.1 → fal-1.20.3}/src/fal/console/ux.py +0 -0
  120. {fal-1.20.1 → fal-1.20.3}/src/fal/container.py +0 -0
  121. {fal-1.20.1 → fal-1.20.3}/src/fal/exceptions/__init__.py +0 -0
  122. {fal-1.20.1 → fal-1.20.3}/src/fal/exceptions/_base.py +0 -0
  123. {fal-1.20.1 → fal-1.20.3}/src/fal/exceptions/_cuda.py +0 -0
  124. {fal-1.20.1 → fal-1.20.3}/src/fal/exceptions/auth.py +0 -0
  125. {fal-1.20.1 → fal-1.20.3}/src/fal/files.py +0 -0
  126. {fal-1.20.1 → fal-1.20.3}/src/fal/flags.py +0 -0
  127. {fal-1.20.1 → fal-1.20.3}/src/fal/logging/__init__.py +0 -0
  128. {fal-1.20.1 → fal-1.20.3}/src/fal/logging/isolate.py +0 -0
  129. {fal-1.20.1 → fal-1.20.3}/src/fal/logging/style.py +0 -0
  130. {fal-1.20.1 → fal-1.20.3}/src/fal/logging/trace.py +0 -0
  131. {fal-1.20.1 → fal-1.20.3}/src/fal/logging/user.py +0 -0
  132. {fal-1.20.1 → fal-1.20.3}/src/fal/project.py +0 -0
  133. {fal-1.20.1 → fal-1.20.3}/src/fal/py.typed +0 -0
  134. {fal-1.20.1 → fal-1.20.3}/src/fal/rest_client.py +0 -0
  135. {fal-1.20.1 → fal-1.20.3}/src/fal/sdk.py +0 -0
  136. {fal-1.20.1 → fal-1.20.3}/src/fal/sync.py +0 -0
  137. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/audio/__init__.py +0 -0
  138. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/exceptions.py +0 -0
  139. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/file/__init__.py +0 -0
  140. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/file/providers/fal.py +0 -0
  141. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/file/providers/gcp.py +0 -0
  142. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/file/providers/r2.py +0 -0
  143. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/file/providers/s3.py +0 -0
  144. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/file/types.py +0 -0
  145. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/image/__init__.py +0 -0
  146. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
  147. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
  148. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
  149. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
  150. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
  151. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/image/safety_checker.py +0 -0
  152. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/optimize.py +0 -0
  153. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/types.py +0 -0
  154. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/utils/__init__.py +0 -0
  155. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/utils/download_utils.py +0 -0
  156. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/utils/endpoint.py +0 -0
  157. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/utils/retry.py +0 -0
  158. {fal-1.20.1 → fal-1.20.3}/src/fal/toolkit/video/__init__.py +0 -0
  159. {fal-1.20.1 → fal-1.20.3}/src/fal/utils.py +0 -0
  160. {fal-1.20.1 → fal-1.20.3}/src/fal/workflows.py +0 -0
  161. {fal-1.20.1 → fal-1.20.3}/tests/__init__.py +0 -0
  162. {fal-1.20.1 → fal-1.20.3}/tests/assets/cat.png +0 -0
  163. {fal-1.20.1 → fal-1.20.3}/tests/cli/__init__.py +0 -0
  164. {fal-1.20.1 → fal-1.20.3}/tests/cli/test_apps.py +0 -0
  165. {fal-1.20.1 → fal-1.20.3}/tests/cli/test_auth.py +0 -0
  166. {fal-1.20.1 → fal-1.20.3}/tests/cli/test_deploy.py +0 -0
  167. {fal-1.20.1 → fal-1.20.3}/tests/cli/test_keys.py +0 -0
  168. {fal-1.20.1 → fal-1.20.3}/tests/cli/test_run.py +0 -0
  169. {fal-1.20.1 → fal-1.20.3}/tests/cli/test_secrets.py +0 -0
  170. {fal-1.20.1 → fal-1.20.3}/tests/conftest.py +0 -0
  171. {fal-1.20.1 → fal-1.20.3}/tests/integration_test.py +0 -0
  172. {fal-1.20.1 → fal-1.20.3}/tests/mainify_package/__init__.py +0 -0
  173. {fal-1.20.1 → fal-1.20.3}/tests/mainify_package/impl.py +0 -0
  174. {fal-1.20.1 → fal-1.20.3}/tests/mainify_package/utils.py +0 -0
  175. {fal-1.20.1 → fal-1.20.3}/tests/mainify_target.py +0 -0
  176. {fal-1.20.1 → fal-1.20.3}/tests/test_apps.py +0 -0
  177. {fal-1.20.1 → fal-1.20.3}/tests/test_stability.py +0 -0
  178. {fal-1.20.1 → fal-1.20.3}/tests/toolkit/file/providers/test_fal_retry.py +0 -0
  179. {fal-1.20.1 → fal-1.20.3}/tests/toolkit/file_test.py +0 -0
  180. {fal-1.20.1 → fal-1.20.3}/tests/toolkit/image_test.py +0 -0
  181. {fal-1.20.1 → fal-1.20.3}/tests/toolkit/test_types.py +0 -0
  182. {fal-1.20.1 → fal-1.20.3}/tests/toolkit/utils/retry.py +0 -0
  183. {fal-1.20.1 → fal-1.20.3}/tools/demo_script.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.20.1
3
+ Version: 1.20.3
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.20.1
3
+ Version: 1.20.3
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
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '1.20.1'
21
- __version_tuple__ = version_tuple = (1, 20, 1)
20
+ __version__ = version = '1.20.3'
21
+ __version_tuple__ = version_tuple = (1, 20, 3)
@@ -79,7 +79,6 @@ def _print_error(msg):
79
79
 
80
80
  def _check_latest_version():
81
81
  from packaging.version import parse
82
- from rich.emoji import Emoji
83
82
  from rich.panel import Panel
84
83
  from rich.text import Text
85
84
 
@@ -95,7 +94,6 @@ def _check_latest_version():
95
94
  return
96
95
 
97
96
  line1 = Text.assemble(
98
- (Emoji.replace(":warning-emoji: "), "bold white"),
99
97
  ("A new version of fal is available: ", "bold white"),
100
98
  (latest_version, "bold green"),
101
99
  )
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
- from fal.toolkit.audio.audio import Audio
4
- from fal.toolkit.file import CompressedFile, File
5
- from fal.toolkit.image.image import Image, ImageSizeInput, get_image_size
3
+ from fal.toolkit.audio.audio import Audio, AudioField
4
+ from fal.toolkit.file import CompressedFile, File, FileField
5
+ from fal.toolkit.image.image import Image, ImageField, ImageSizeInput, get_image_size
6
6
  from fal.toolkit.optimize import optimize
7
7
  from fal.toolkit.utils import (
8
8
  FAL_MODEL_WEIGHTS_DIR,
@@ -12,17 +12,21 @@ from fal.toolkit.utils import (
12
12
  download_file,
13
13
  download_model_weights,
14
14
  )
15
- from fal.toolkit.video.video import Video
15
+ from fal.toolkit.video.video import Video, VideoField
16
16
 
17
17
  __all__ = [
18
+ "Audio",
19
+ "AudioField",
18
20
  "CompressedFile",
19
21
  "File",
22
+ "FileField",
20
23
  "Image",
24
+ "ImageField",
21
25
  "ImageSizeInput",
22
26
  "get_image_size",
23
- "Audio",
24
- "Video",
25
27
  "optimize",
28
+ "Video",
29
+ "VideoField",
26
30
  "FAL_MODEL_WEIGHTS_DIR",
27
31
  "FAL_PERSISTENT_DIR",
28
32
  "FAL_REPOSITORY_DIR",
@@ -1,6 +1,18 @@
1
+ from functools import wraps
2
+
3
+ from pydantic import Field
4
+
1
5
  from fal.toolkit.file.file import IS_PYDANTIC_V2, File
2
6
 
3
7
 
8
+ @wraps(Field)
9
+ def AudioField(*args, **kwargs):
10
+ ui = kwargs.get("ui", {})
11
+ ui.setdefault("field", "audio")
12
+ kwargs["ui"] = ui
13
+ return Field(*args, **kwargs)
14
+
15
+
4
16
  class Audio(File):
5
17
  if IS_PYDANTIC_V2:
6
18
  model_config = {"json_schema_extra": {"ui": {"field": "audio"}}}
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import shutil
4
+ from functools import wraps
4
5
  from pathlib import Path
5
6
  from tempfile import NamedTemporaryFile, mkdtemp
6
7
  from typing import Any, Callable, Optional
@@ -63,6 +64,14 @@ FALLBACK_REPOSITORY: FileRepository | RepositoryId = "fal"
63
64
  OBJECT_LIFECYCLE_PREFERENCE_KEY = "x-fal-object-lifecycle-preference"
64
65
 
65
66
 
67
+ @wraps(Field)
68
+ def FileField(*args, **kwargs):
69
+ ui = kwargs.get("ui", {})
70
+ ui.setdefault("field", "file")
71
+ kwargs["ui"] = ui
72
+ return Field(*args, **kwargs)
73
+
74
+
66
75
  class File(BaseModel):
67
76
  # public properties
68
77
  url: str = Field(
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import io
4
+ from functools import wraps
4
5
  from tempfile import NamedTemporaryFile
5
6
  from typing import TYPE_CHECKING, Literal, Optional, Union
6
7
 
@@ -63,6 +64,14 @@ def get_image_size(source: ImageSizeInput) -> ImageSize:
63
64
  ImageFormat = Literal["png", "jpeg", "jpg", "webp", "gif"]
64
65
 
65
66
 
67
+ @wraps(Field)
68
+ def ImageField(*args, **kwargs):
69
+ ui = kwargs.get("ui", {})
70
+ ui.setdefault("field", "image")
71
+ kwargs["ui"] = ui
72
+ return Field(*args, **kwargs)
73
+
74
+
66
75
  class Image(File):
67
76
  """
68
77
  Represents an image file.
@@ -1,6 +1,18 @@
1
+ from functools import wraps
2
+
3
+ from pydantic import Field
4
+
1
5
  from fal.toolkit.file.file import IS_PYDANTIC_V2, File
2
6
 
3
7
 
8
+ @wraps(Field)
9
+ def VideoField(*args, **kwargs):
10
+ ui = kwargs.get("ui", {})
11
+ ui.setdefault("field", "video")
12
+ kwargs["ui"] = ui
13
+ return Field(*args, **kwargs)
14
+
15
+
4
16
  class Video(File):
5
17
  if IS_PYDANTIC_V2:
6
18
  model_config = {"json_schema_extra": {"ui": {"field": "video"}}}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes