fal 1.26.1__tar.gz → 1.26.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 (185) hide show
  1. {fal-1.26.1/fal.egg-info → fal-1.26.3}/PKG-INFO +1 -1
  2. {fal-1.26.1 → fal-1.26.3/fal.egg-info}/PKG-INFO +1 -1
  3. {fal-1.26.1 → fal-1.26.3}/src/fal/_fal_version.py +2 -2
  4. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/file/file.py +15 -2
  5. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/file/providers/fal.py +3 -0
  6. {fal-1.26.1 → fal-1.26.3}/tests/test_apps.py +5 -5
  7. {fal-1.26.1 → fal-1.26.3}/.gitignore +0 -0
  8. {fal-1.26.1 → fal-1.26.3}/Makefile +0 -0
  9. {fal-1.26.1 → fal-1.26.3}/README.md +0 -0
  10. {fal-1.26.1 → fal-1.26.3}/docs/conf.py +0 -0
  11. {fal-1.26.1 → fal-1.26.3}/docs/index.rst +0 -0
  12. {fal-1.26.1 → fal-1.26.3}/fal.egg-info/SOURCES.txt +0 -0
  13. {fal-1.26.1 → fal-1.26.3}/fal.egg-info/dependency_links.txt +0 -0
  14. {fal-1.26.1 → fal-1.26.3}/fal.egg-info/entry_points.txt +0 -0
  15. {fal-1.26.1 → fal-1.26.3}/fal.egg-info/requires.txt +0 -0
  16. {fal-1.26.1 → fal-1.26.3}/fal.egg-info/top_level.txt +0 -0
  17. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/README.md +0 -0
  18. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
  19. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
  20. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
  21. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
  22. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
  23. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
  24. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
  25. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
  26. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
  27. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
  28. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
  29. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
  30. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
  31. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
  32. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
  33. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
  34. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
  35. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
  36. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
  37. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
  38. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
  39. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
  40. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
  41. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
  42. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
  43. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
  44. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
  45. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
  46. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
  47. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
  48. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
  49. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
  50. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
  51. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
  52. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
  53. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
  54. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
  55. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
  56. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
  57. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
  58. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
  59. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
  60. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
  61. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
  62. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
  63. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
  64. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
  65. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
  66. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
  67. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
  68. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
  69. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
  70. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
  71. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
  72. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
  73. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
  74. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
  75. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
  76. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
  77. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
  78. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
  79. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
  80. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
  81. {fal-1.26.1 → fal-1.26.3}/openapi-fal-rest/pyproject.toml +0 -0
  82. {fal-1.26.1 → fal-1.26.3}/openapi_rest.config.yaml +0 -0
  83. {fal-1.26.1 → fal-1.26.3}/pyproject.toml +0 -0
  84. {fal-1.26.1 → fal-1.26.3}/setup.cfg +0 -0
  85. {fal-1.26.1 → fal-1.26.3}/src/fal/__init__.py +0 -0
  86. {fal-1.26.1 → fal-1.26.3}/src/fal/__main__.py +0 -0
  87. {fal-1.26.1 → fal-1.26.3}/src/fal/_serialization.py +0 -0
  88. {fal-1.26.1 → fal-1.26.3}/src/fal/_version.py +0 -0
  89. {fal-1.26.1 → fal-1.26.3}/src/fal/api.py +0 -0
  90. {fal-1.26.1 → fal-1.26.3}/src/fal/app.py +0 -0
  91. {fal-1.26.1 → fal-1.26.3}/src/fal/apps.py +0 -0
  92. {fal-1.26.1 → fal-1.26.3}/src/fal/auth/__init__.py +0 -0
  93. {fal-1.26.1 → fal-1.26.3}/src/fal/auth/auth0.py +0 -0
  94. {fal-1.26.1 → fal-1.26.3}/src/fal/auth/local.py +0 -0
  95. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/__init__.py +0 -0
  96. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/_utils.py +0 -0
  97. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/api.py +0 -0
  98. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/apps.py +0 -0
  99. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/auth.py +0 -0
  100. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/cli_nested_json.py +0 -0
  101. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/create.py +0 -0
  102. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/debug.py +0 -0
  103. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/deploy.py +0 -0
  104. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/doctor.py +0 -0
  105. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/files.py +0 -0
  106. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/keys.py +0 -0
  107. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/main.py +0 -0
  108. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/parser.py +0 -0
  109. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/profile.py +0 -0
  110. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/run.py +0 -0
  111. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/runners.py +0 -0
  112. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/secrets.py +0 -0
  113. {fal-1.26.1 → fal-1.26.3}/src/fal/cli/teams.py +0 -0
  114. {fal-1.26.1 → fal-1.26.3}/src/fal/config.py +0 -0
  115. {fal-1.26.1 → fal-1.26.3}/src/fal/console/__init__.py +0 -0
  116. {fal-1.26.1 → fal-1.26.3}/src/fal/console/icons.py +0 -0
  117. {fal-1.26.1 → fal-1.26.3}/src/fal/console/ux.py +0 -0
  118. {fal-1.26.1 → fal-1.26.3}/src/fal/container.py +0 -0
  119. {fal-1.26.1 → fal-1.26.3}/src/fal/exceptions/__init__.py +0 -0
  120. {fal-1.26.1 → fal-1.26.3}/src/fal/exceptions/_base.py +0 -0
  121. {fal-1.26.1 → fal-1.26.3}/src/fal/exceptions/_cuda.py +0 -0
  122. {fal-1.26.1 → fal-1.26.3}/src/fal/exceptions/auth.py +0 -0
  123. {fal-1.26.1 → fal-1.26.3}/src/fal/files.py +0 -0
  124. {fal-1.26.1 → fal-1.26.3}/src/fal/flags.py +0 -0
  125. {fal-1.26.1 → fal-1.26.3}/src/fal/logging/__init__.py +0 -0
  126. {fal-1.26.1 → fal-1.26.3}/src/fal/logging/isolate.py +0 -0
  127. {fal-1.26.1 → fal-1.26.3}/src/fal/logging/style.py +0 -0
  128. {fal-1.26.1 → fal-1.26.3}/src/fal/logging/trace.py +0 -0
  129. {fal-1.26.1 → fal-1.26.3}/src/fal/logging/user.py +0 -0
  130. {fal-1.26.1 → fal-1.26.3}/src/fal/project.py +0 -0
  131. {fal-1.26.1 → fal-1.26.3}/src/fal/py.typed +0 -0
  132. {fal-1.26.1 → fal-1.26.3}/src/fal/rest_client.py +0 -0
  133. {fal-1.26.1 → fal-1.26.3}/src/fal/sdk.py +0 -0
  134. {fal-1.26.1 → fal-1.26.3}/src/fal/sync.py +0 -0
  135. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/__init__.py +0 -0
  136. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/audio/__init__.py +0 -0
  137. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/audio/audio.py +0 -0
  138. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/exceptions.py +0 -0
  139. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/file/__init__.py +0 -0
  140. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/file/providers/gcp.py +0 -0
  141. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/file/providers/r2.py +0 -0
  142. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/file/providers/s3.py +0 -0
  143. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/file/types.py +0 -0
  144. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/image/__init__.py +0 -0
  145. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/image/image.py +0 -0
  146. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
  147. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
  148. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
  149. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
  150. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
  151. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/image/safety_checker.py +0 -0
  152. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/kv.py +0 -0
  153. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/optimize.py +0 -0
  154. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/types.py +0 -0
  155. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/utils/__init__.py +0 -0
  156. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/utils/download_utils.py +0 -0
  157. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/utils/endpoint.py +0 -0
  158. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/utils/retry.py +0 -0
  159. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/video/__init__.py +0 -0
  160. {fal-1.26.1 → fal-1.26.3}/src/fal/toolkit/video/video.py +0 -0
  161. {fal-1.26.1 → fal-1.26.3}/src/fal/utils.py +0 -0
  162. {fal-1.26.1 → fal-1.26.3}/src/fal/workflows.py +0 -0
  163. {fal-1.26.1 → fal-1.26.3}/tests/__init__.py +0 -0
  164. {fal-1.26.1 → fal-1.26.3}/tests/assets/cat.png +0 -0
  165. {fal-1.26.1 → fal-1.26.3}/tests/cli/__init__.py +0 -0
  166. {fal-1.26.1 → fal-1.26.3}/tests/cli/test_apps.py +0 -0
  167. {fal-1.26.1 → fal-1.26.3}/tests/cli/test_auth.py +0 -0
  168. {fal-1.26.1 → fal-1.26.3}/tests/cli/test_deploy.py +0 -0
  169. {fal-1.26.1 → fal-1.26.3}/tests/cli/test_keys.py +0 -0
  170. {fal-1.26.1 → fal-1.26.3}/tests/cli/test_run.py +0 -0
  171. {fal-1.26.1 → fal-1.26.3}/tests/cli/test_secrets.py +0 -0
  172. {fal-1.26.1 → fal-1.26.3}/tests/conftest.py +0 -0
  173. {fal-1.26.1 → fal-1.26.3}/tests/integration_test.py +0 -0
  174. {fal-1.26.1 → fal-1.26.3}/tests/mainify_package/__init__.py +0 -0
  175. {fal-1.26.1 → fal-1.26.3}/tests/mainify_package/impl.py +0 -0
  176. {fal-1.26.1 → fal-1.26.3}/tests/mainify_package/utils.py +0 -0
  177. {fal-1.26.1 → fal-1.26.3}/tests/mainify_target.py +0 -0
  178. {fal-1.26.1 → fal-1.26.3}/tests/test_kv.py +0 -0
  179. {fal-1.26.1 → fal-1.26.3}/tests/test_stability.py +0 -0
  180. {fal-1.26.1 → fal-1.26.3}/tests/toolkit/file/providers/test_fal_retry.py +0 -0
  181. {fal-1.26.1 → fal-1.26.3}/tests/toolkit/file_test.py +0 -0
  182. {fal-1.26.1 → fal-1.26.3}/tests/toolkit/image_test.py +0 -0
  183. {fal-1.26.1 → fal-1.26.3}/tests/toolkit/test_types.py +0 -0
  184. {fal-1.26.1 → fal-1.26.3}/tests/toolkit/utils/retry.py +0 -0
  185. {fal-1.26.1 → fal-1.26.3}/tools/demo_script.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.26.1
3
+ Version: 1.26.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.26.1
3
+ Version: 1.26.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.26.1'
21
- __version_tuple__ = version_tuple = (1, 26, 1)
20
+ __version__ = version = '1.26.3'
21
+ __version_tuple__ = version_tuple = (1, 26, 3)
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import shutil
4
+ import traceback
4
5
  from functools import wraps
5
6
  from pathlib import Path
6
7
  from tempfile import NamedTemporaryFile, mkdtemp
@@ -178,10 +179,16 @@ class File(BaseModel):
178
179
 
179
180
  try:
180
181
  url = repo.save(fdata, **save_kwargs)
181
- except Exception:
182
+ except Exception as exc:
182
183
  if not fallback_repository:
183
184
  raise
184
185
 
186
+ traceback.print_exc()
187
+ print(
188
+ f"Failed to save bytes to repository {repository}: {exc}, "
189
+ f"falling back to {fallback_repository}"
190
+ )
191
+
185
192
  fallback_repo = get_builtin_repository(fallback_repository)
186
193
 
187
194
  url = fallback_repo.save(fdata, **fallback_save_kwargs)
@@ -237,10 +244,16 @@ class File(BaseModel):
237
244
  content_type=content_type,
238
245
  **save_kwargs,
239
246
  )
240
- except Exception:
247
+ except Exception as exc:
241
248
  if not fallback_repository:
242
249
  raise
243
250
 
251
+ traceback.print_exc()
252
+ print(
253
+ f"Failed to save file to repository {repository}: {exc}, "
254
+ f"falling back to {fallback_repository}"
255
+ )
256
+
244
257
  fallback_repo = get_builtin_repository(fallback_repository)
245
258
 
246
259
  url, data = fallback_repo.save_file(
@@ -45,6 +45,9 @@ def _should_retry(exc: Exception) -> bool:
45
45
  if isinstance(exc, HTTPError) and exc.code in RETRY_CODES:
46
46
  return True
47
47
 
48
+ if isinstance(exc, TimeoutError):
49
+ return True
50
+
48
51
  return False
49
52
 
50
53
 
@@ -235,7 +235,7 @@ class ExceptionApp(fal.App, keep_alive=300, max_concurrency=1):
235
235
  raise RuntimeError("cuDNN error: CUDNN_STATUS_INTERNAL_ERROR")
236
236
 
237
237
 
238
- class CancellableApp(fal.App, keep_alive=300, max_concurrency=1, request_timeout=2):
238
+ class CancellableApp(fal.App, keep_alive=300, max_concurrency=1, request_timeout=4):
239
239
  task = None
240
240
  running = 0
241
241
 
@@ -514,12 +514,12 @@ def test_stateful_app_client(test_stateful_app: str):
514
514
 
515
515
  def test_app_cancellation(test_app: str, test_cancellable_app: str):
516
516
  request_handle = apps.submit(
517
- test_cancellable_app, arguments={"lhs": 1, "rhs": 2, "wait_time": 5}
517
+ test_cancellable_app, arguments={"lhs": 1, "rhs": 2, "wait_time": 6}
518
518
  )
519
519
 
520
520
  while True:
521
521
  status = request_handle.status()
522
- time.sleep(0.5)
522
+ time.sleep(0.05)
523
523
  if isinstance(status, apps.InProgress):
524
524
  # The app is running
525
525
  break
@@ -534,12 +534,12 @@ def test_app_cancellation(test_app: str, test_cancellable_app: str):
534
534
 
535
535
  # normal app should just ignore the cancellation
536
536
  request_handle = apps.submit(
537
- test_app, arguments={"lhs": 1, "rhs": 2, "wait_time": 5}
537
+ test_app, arguments={"lhs": 1, "rhs": 2, "wait_time": 6}
538
538
  )
539
539
 
540
540
  while True:
541
541
  status = request_handle.status()
542
- time.sleep(0.5)
542
+ time.sleep(0.05)
543
543
  if isinstance(status, apps.InProgress):
544
544
  # The app is running
545
545
  break
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes