fal 1.41.0__tar.gz → 1.59.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.
Files changed (211) hide show
  1. {fal-1.41.0/fal.egg-info → fal-1.59.0}/PKG-INFO +10 -6
  2. {fal-1.41.0 → fal-1.59.0}/README.md +1 -1
  3. {fal-1.41.0 → fal-1.59.0/fal.egg-info}/PKG-INFO +10 -6
  4. {fal-1.41.0 → fal-1.59.0}/fal.egg-info/SOURCES.txt +37 -23
  5. {fal-1.41.0 → fal-1.59.0}/fal.egg-info/requires.txt +8 -4
  6. {fal-1.41.0 → fal-1.59.0}/pyproject.toml +9 -4
  7. {fal-1.41.0 → fal-1.59.0}/src/fal/__init__.py +2 -1
  8. {fal-1.41.0 → fal-1.59.0}/src/fal/_fal_version.py +2 -2
  9. {fal-1.41.0 → fal-1.59.0}/src/fal/_serialization.py +1 -0
  10. fal-1.59.0/src/fal/api/__init__.py +2 -0
  11. {fal-1.41.0/src/fal → fal-1.59.0/src/fal/api}/api.py +105 -9
  12. fal-1.59.0/src/fal/api/apps.py +91 -0
  13. fal-1.59.0/src/fal/api/client.py +194 -0
  14. fal-1.59.0/src/fal/api/deploy.py +200 -0
  15. fal-1.59.0/src/fal/api/keys.py +31 -0
  16. fal-1.59.0/src/fal/api/runners.py +26 -0
  17. fal-1.59.0/src/fal/api/secrets.py +29 -0
  18. {fal-1.41.0 → fal-1.59.0}/src/fal/app.py +200 -15
  19. {fal-1.41.0 → fal-1.59.0}/src/fal/apps.py +1 -1
  20. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/_utils.py +24 -8
  21. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/api.py +4 -2
  22. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/apps.py +121 -62
  23. fal-1.59.0/src/fal/cli/deploy.py +138 -0
  24. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/files.py +28 -19
  25. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/keys.py +47 -50
  26. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/parser.py +32 -1
  27. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/queue.py +14 -12
  28. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/run.py +17 -8
  29. fal-1.59.0/src/fal/cli/runners.py +730 -0
  30. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/secrets.py +28 -30
  31. fal-1.59.0/src/fal/distributed/__init__.py +3 -0
  32. fal-1.59.0/src/fal/distributed/utils.py +420 -0
  33. fal-1.59.0/src/fal/distributed/worker.py +791 -0
  34. {fal-1.41.0 → fal-1.59.0}/src/fal/exceptions/__init__.py +2 -0
  35. {fal-1.41.0 → fal-1.59.0}/src/fal/exceptions/_base.py +15 -0
  36. fal-1.59.0/src/fal/file_sync.py +356 -0
  37. {fal-1.41.0 → fal-1.59.0}/src/fal/files.py +32 -8
  38. fal-1.59.0/src/fal/flags.py +50 -0
  39. {fal-1.41.0 → fal-1.59.0}/src/fal/logging/__init__.py +0 -5
  40. {fal-1.41.0 → fal-1.59.0}/src/fal/sdk.py +155 -28
  41. {fal-1.41.0 → fal-1.59.0}/src/fal/sync.py +22 -12
  42. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/__init__.py +10 -0
  43. fal-1.59.0/src/fal/toolkit/compilation.py +220 -0
  44. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/file/file.py +10 -9
  45. fal-1.59.0/src/fal/utils.py +111 -0
  46. {fal-1.41.0 → fal-1.59.0}/src/fal/workflows.py +6 -2
  47. {fal-1.41.0/tests → fal-1.59.0/tests/e2e}/test_apps.py +229 -24
  48. fal-1.41.0/tests/integration_test.py → fal-1.59.0/tests/integration/test.py +2 -0
  49. {fal-1.41.0/tests → fal-1.59.0/tests/integration}/test_stability.py +2 -0
  50. {fal-1.41.0/tests → fal-1.59.0/tests/unit}/cli/test_apps.py +6 -0
  51. {fal-1.41.0/tests → fal-1.59.0/tests/unit}/cli/test_deploy.py +179 -33
  52. fal-1.59.0/tests/unit/cli/test_run.py +221 -0
  53. fal-1.59.0/tests/unit/distributed/__init__.py +0 -0
  54. fal-1.59.0/tests/unit/distributed/test_integration.py +66 -0
  55. fal-1.59.0/tests/unit/distributed/test_utils.py +157 -0
  56. fal-1.59.0/tests/unit/distributed/test_worker.py +144 -0
  57. fal-1.59.0/tests/unit/test_app.py +161 -0
  58. fal-1.59.0/tests/unit/test_file_sync.py +320 -0
  59. fal-1.59.0/tests/unit/test_utils.py +108 -0
  60. fal-1.41.0/src/fal/cli/deploy.py +0 -271
  61. fal-1.41.0/src/fal/cli/runners.py +0 -219
  62. fal-1.41.0/src/fal/flags.py +0 -36
  63. fal-1.41.0/src/fal/rest_client.py +0 -25
  64. fal-1.41.0/src/fal/utils.py +0 -72
  65. fal-1.41.0/tests/cli/test_run.py +0 -114
  66. fal-1.41.0/tests/mainify_package/__init__.py +0 -1
  67. fal-1.41.0/tests/mainify_package/impl.py +0 -8
  68. fal-1.41.0/tests/mainify_package/utils.py +0 -2
  69. fal-1.41.0/tests/mainify_target.py +0 -22
  70. {fal-1.41.0 → fal-1.59.0}/.gitignore +0 -0
  71. {fal-1.41.0 → fal-1.59.0}/Makefile +0 -0
  72. {fal-1.41.0 → fal-1.59.0}/docs/conf.py +0 -0
  73. {fal-1.41.0 → fal-1.59.0}/docs/index.rst +0 -0
  74. {fal-1.41.0 → fal-1.59.0}/fal.egg-info/dependency_links.txt +0 -0
  75. {fal-1.41.0 → fal-1.59.0}/fal.egg-info/entry_points.txt +0 -0
  76. {fal-1.41.0 → fal-1.59.0}/fal.egg-info/top_level.txt +0 -0
  77. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/README.md +0 -0
  78. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
  79. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
  80. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
  81. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
  82. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
  83. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
  84. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
  85. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
  86. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
  87. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
  88. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
  89. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
  90. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
  91. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
  92. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
  93. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
  94. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
  95. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
  96. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
  97. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
  98. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
  99. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
  100. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
  101. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
  102. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
  103. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
  104. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
  105. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
  106. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
  107. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
  108. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
  109. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
  110. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
  111. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
  112. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
  113. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
  114. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
  115. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
  116. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
  117. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
  118. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
  119. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
  120. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
  121. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
  122. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
  123. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
  124. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
  125. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
  126. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
  127. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
  128. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
  129. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
  130. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
  131. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
  132. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
  133. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
  134. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
  135. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
  136. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
  137. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
  138. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
  139. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
  140. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
  141. {fal-1.41.0 → fal-1.59.0}/openapi-fal-rest/pyproject.toml +0 -0
  142. {fal-1.41.0 → fal-1.59.0}/openapi_rest.config.yaml +0 -0
  143. {fal-1.41.0 → fal-1.59.0}/setup.cfg +0 -0
  144. {fal-1.41.0 → fal-1.59.0}/src/fal/__main__.py +0 -0
  145. {fal-1.41.0 → fal-1.59.0}/src/fal/_version.py +0 -0
  146. {fal-1.41.0 → fal-1.59.0}/src/fal/auth/__init__.py +0 -0
  147. {fal-1.41.0 → fal-1.59.0}/src/fal/auth/auth0.py +0 -0
  148. {fal-1.41.0 → fal-1.59.0}/src/fal/auth/local.py +0 -0
  149. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/__init__.py +0 -0
  150. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/auth.py +0 -0
  151. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/cli_nested_json.py +0 -0
  152. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/create.py +0 -0
  153. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/debug.py +0 -0
  154. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/doctor.py +0 -0
  155. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/main.py +0 -0
  156. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/profile.py +0 -0
  157. {fal-1.41.0 → fal-1.59.0}/src/fal/cli/teams.py +0 -0
  158. {fal-1.41.0 → fal-1.59.0}/src/fal/config.py +0 -0
  159. {fal-1.41.0 → fal-1.59.0}/src/fal/console/__init__.py +0 -0
  160. {fal-1.41.0 → fal-1.59.0}/src/fal/console/icons.py +0 -0
  161. {fal-1.41.0 → fal-1.59.0}/src/fal/console/ux.py +0 -0
  162. {fal-1.41.0 → fal-1.59.0}/src/fal/container.py +0 -0
  163. {fal-1.41.0 → fal-1.59.0}/src/fal/exceptions/_cuda.py +0 -0
  164. {fal-1.41.0 → fal-1.59.0}/src/fal/exceptions/auth.py +0 -0
  165. {fal-1.41.0 → fal-1.59.0}/src/fal/logging/isolate.py +0 -0
  166. {fal-1.41.0 → fal-1.59.0}/src/fal/logging/style.py +0 -0
  167. {fal-1.41.0 → fal-1.59.0}/src/fal/logging/trace.py +0 -0
  168. {fal-1.41.0 → fal-1.59.0}/src/fal/project.py +0 -0
  169. {fal-1.41.0 → fal-1.59.0}/src/fal/py.typed +0 -0
  170. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/audio/__init__.py +0 -0
  171. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/audio/audio.py +0 -0
  172. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/exceptions.py +0 -0
  173. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/file/__init__.py +0 -0
  174. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/file/providers/fal.py +0 -0
  175. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/file/providers/gcp.py +0 -0
  176. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/file/providers/r2.py +0 -0
  177. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/file/providers/s3.py +0 -0
  178. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/file/types.py +0 -0
  179. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/image/__init__.py +0 -0
  180. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/image/image.py +0 -0
  181. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
  182. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
  183. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
  184. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
  185. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
  186. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/image/safety_checker.py +0 -0
  187. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/kv.py +0 -0
  188. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/optimize.py +0 -0
  189. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/types.py +0 -0
  190. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/utils/__init__.py +0 -0
  191. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/utils/download_utils.py +0 -0
  192. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/utils/endpoint.py +0 -0
  193. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/utils/retry.py +0 -0
  194. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/utils/setup_utils.py +0 -0
  195. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/video/__init__.py +0 -0
  196. {fal-1.41.0 → fal-1.59.0}/src/fal/toolkit/video/video.py +0 -0
  197. {fal-1.41.0 → fal-1.59.0}/tests/__init__.py +0 -0
  198. {fal-1.41.0 → fal-1.59.0}/tests/assets/cat.png +0 -0
  199. {fal-1.41.0 → fal-1.59.0}/tests/conftest.py +0 -0
  200. {fal-1.41.0/tests → fal-1.59.0/tests/integration}/test_files.py +0 -0
  201. /fal-1.41.0/tests/toolkit/image_test.py → /fal-1.59.0/tests/integration/toolkit/test_image.py +0 -0
  202. {fal-1.41.0/tests → fal-1.59.0/tests/integration/toolkit}/test_kv.py +0 -0
  203. {fal-1.41.0/tests → fal-1.59.0/tests/unit}/cli/__init__.py +0 -0
  204. {fal-1.41.0/tests → fal-1.59.0/tests/unit}/cli/test_auth.py +0 -0
  205. {fal-1.41.0/tests → fal-1.59.0/tests/unit}/cli/test_keys.py +0 -0
  206. {fal-1.41.0/tests → fal-1.59.0/tests/unit}/cli/test_secrets.py +0 -0
  207. {fal-1.41.0/tests → fal-1.59.0/tests/unit}/toolkit/file/providers/test_fal_retry.py +0 -0
  208. /fal-1.41.0/tests/toolkit/file_test.py → /fal-1.59.0/tests/unit/toolkit/test_file.py +0 -0
  209. {fal-1.41.0/tests → fal-1.59.0/tests/unit}/toolkit/test_types.py +0 -0
  210. /fal-1.41.0/tests/toolkit/utils/retry.py → /fal-1.59.0/tests/unit/toolkit/utils/test_retry.py +0 -0
  211. {fal-1.41.0 → fal-1.59.0}/tools/demo_script.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.41.0
3
+ Version: 1.59.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
- Requires-Dist: isolate[build]<0.21.0,>=0.18.0
9
- Requires-Dist: isolate-proto<0.18.0,>=0.16.0
8
+ Requires-Dist: isolate[build]<0.22.0,>=0.18.0
9
+ Requires-Dist: isolate-proto>=0.29.2
10
10
  Requires-Dist: grpcio<2,>=1.64.0
11
11
  Requires-Dist: dill==0.3.7
12
12
  Requires-Dist: cloudpickle==3.0.0
@@ -21,15 +21,17 @@ Requires-Dist: rich<15,>=13.3.2
21
21
  Requires-Dist: rich_argparse
22
22
  Requires-Dist: packaging>=21.3
23
23
  Requires-Dist: pathspec<1,>=0.11.1
24
- Requires-Dist: pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<2.11
25
- Requires-Dist: fastapi<1,>=0.99.1
24
+ Requires-Dist: pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*
25
+ Requires-Dist: fastapi<0.119,>=0.99.1
26
26
  Requires-Dist: starlette-exporter>=0.21.0
27
27
  Requires-Dist: httpx>=0.15.4
28
+ Requires-Dist: httpx-sse
28
29
  Requires-Dist: attrs>=21.3.0
29
30
  Requires-Dist: python-dateutil<3,>=2.8.0
30
31
  Requires-Dist: types-python-dateutil<3,>=2.8.0
31
32
  Requires-Dist: dateparser<2,>=1.2.0
32
33
  Requires-Dist: types-dateparser<2,>=1.2.0
34
+ Requires-Dist: tuspy==1.1.0
33
35
  Requires-Dist: importlib-metadata>=4.4; python_version < "3.10"
34
36
  Requires-Dist: msgpack<2,>=1.0.7
35
37
  Requires-Dist: websockets>=12.0
@@ -40,6 +42,7 @@ Requires-Dist: cookiecutter
40
42
  Requires-Dist: tomli<3,>2
41
43
  Requires-Dist: tomli-w<2,>=1
42
44
  Requires-Dist: fsspec
45
+ Requires-Dist: tblib<3.2.0
43
46
  Provides-Extra: docs
44
47
  Requires-Dist: sphinx<8.2.0; extra == "docs"
45
48
  Requires-Dist: sphinx-rtd-theme; extra == "docs"
@@ -51,12 +54,13 @@ Requires-Dist: pytest-xdist; extra == "test"
51
54
  Requires-Dist: pytest-timeout; extra == "test"
52
55
  Requires-Dist: flaky; extra == "test"
53
56
  Requires-Dist: boto3; extra == "test"
57
+ Requires-Dist: numpy; extra == "test"
54
58
  Provides-Extra: dev
55
59
  Requires-Dist: fal[docs,test]; extra == "dev"
56
60
  Requires-Dist: openapi-python-client<1,>=0.14.1; extra == "dev"
57
61
 
58
62
  [![PyPI](https://img.shields.io/pypi/v/fal.svg?logo=PyPI)](https://pypi.org/project/fal)
59
- [![Tests](https://img.shields.io/github/actions/workflow/status/fal-ai/fal/integration_tests.yaml?label=Tests)](https://github.com/fal-ai/fal/actions)
63
+ [![Tests](https://img.shields.io/github/actions/workflow/status/fal-ai/fal/fal-unit-tests.yml?label=Tests)](https://github.com/fal-ai/fal/actions)
60
64
 
61
65
  # fal
62
66
 
@@ -1,5 +1,5 @@
1
1
  [![PyPI](https://img.shields.io/pypi/v/fal.svg?logo=PyPI)](https://pypi.org/project/fal)
2
- [![Tests](https://img.shields.io/github/actions/workflow/status/fal-ai/fal/integration_tests.yaml?label=Tests)](https://github.com/fal-ai/fal/actions)
2
+ [![Tests](https://img.shields.io/github/actions/workflow/status/fal-ai/fal/fal-unit-tests.yml?label=Tests)](https://github.com/fal-ai/fal/actions)
3
3
 
4
4
  # fal
5
5
 
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.41.0
3
+ Version: 1.59.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
- Requires-Dist: isolate[build]<0.21.0,>=0.18.0
9
- Requires-Dist: isolate-proto<0.18.0,>=0.16.0
8
+ Requires-Dist: isolate[build]<0.22.0,>=0.18.0
9
+ Requires-Dist: isolate-proto>=0.29.2
10
10
  Requires-Dist: grpcio<2,>=1.64.0
11
11
  Requires-Dist: dill==0.3.7
12
12
  Requires-Dist: cloudpickle==3.0.0
@@ -21,15 +21,17 @@ Requires-Dist: rich<15,>=13.3.2
21
21
  Requires-Dist: rich_argparse
22
22
  Requires-Dist: packaging>=21.3
23
23
  Requires-Dist: pathspec<1,>=0.11.1
24
- Requires-Dist: pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<2.11
25
- Requires-Dist: fastapi<1,>=0.99.1
24
+ Requires-Dist: pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*
25
+ Requires-Dist: fastapi<0.119,>=0.99.1
26
26
  Requires-Dist: starlette-exporter>=0.21.0
27
27
  Requires-Dist: httpx>=0.15.4
28
+ Requires-Dist: httpx-sse
28
29
  Requires-Dist: attrs>=21.3.0
29
30
  Requires-Dist: python-dateutil<3,>=2.8.0
30
31
  Requires-Dist: types-python-dateutil<3,>=2.8.0
31
32
  Requires-Dist: dateparser<2,>=1.2.0
32
33
  Requires-Dist: types-dateparser<2,>=1.2.0
34
+ Requires-Dist: tuspy==1.1.0
33
35
  Requires-Dist: importlib-metadata>=4.4; python_version < "3.10"
34
36
  Requires-Dist: msgpack<2,>=1.0.7
35
37
  Requires-Dist: websockets>=12.0
@@ -40,6 +42,7 @@ Requires-Dist: cookiecutter
40
42
  Requires-Dist: tomli<3,>2
41
43
  Requires-Dist: tomli-w<2,>=1
42
44
  Requires-Dist: fsspec
45
+ Requires-Dist: tblib<3.2.0
43
46
  Provides-Extra: docs
44
47
  Requires-Dist: sphinx<8.2.0; extra == "docs"
45
48
  Requires-Dist: sphinx-rtd-theme; extra == "docs"
@@ -51,12 +54,13 @@ Requires-Dist: pytest-xdist; extra == "test"
51
54
  Requires-Dist: pytest-timeout; extra == "test"
52
55
  Requires-Dist: flaky; extra == "test"
53
56
  Requires-Dist: boto3; extra == "test"
57
+ Requires-Dist: numpy; extra == "test"
54
58
  Provides-Extra: dev
55
59
  Requires-Dist: fal[docs,test]; extra == "dev"
56
60
  Requires-Dist: openapi-python-client<1,>=0.14.1; extra == "dev"
57
61
 
58
62
  [![PyPI](https://img.shields.io/pypi/v/fal.svg?logo=PyPI)](https://pypi.org/project/fal)
59
- [![Tests](https://img.shields.io/github/actions/workflow/status/fal-ai/fal/integration_tests.yaml?label=Tests)](https://github.com/fal-ai/fal/actions)
63
+ [![Tests](https://img.shields.io/github/actions/workflow/status/fal-ai/fal/fal-unit-tests.yml?label=Tests)](https://github.com/fal-ai/fal/actions)
60
64
 
61
65
  # fal
62
66
 
@@ -81,20 +81,27 @@ src/fal/__main__.py
81
81
  src/fal/_fal_version.py
82
82
  src/fal/_serialization.py
83
83
  src/fal/_version.py
84
- src/fal/api.py
85
84
  src/fal/app.py
86
85
  src/fal/apps.py
87
86
  src/fal/config.py
88
87
  src/fal/container.py
88
+ src/fal/file_sync.py
89
89
  src/fal/files.py
90
90
  src/fal/flags.py
91
91
  src/fal/project.py
92
92
  src/fal/py.typed
93
- src/fal/rest_client.py
94
93
  src/fal/sdk.py
95
94
  src/fal/sync.py
96
95
  src/fal/utils.py
97
96
  src/fal/workflows.py
97
+ src/fal/api/__init__.py
98
+ src/fal/api/api.py
99
+ src/fal/api/apps.py
100
+ src/fal/api/client.py
101
+ src/fal/api/deploy.py
102
+ src/fal/api/keys.py
103
+ src/fal/api/runners.py
104
+ src/fal/api/secrets.py
98
105
  src/fal/auth/__init__.py
99
106
  src/fal/auth/auth0.py
100
107
  src/fal/auth/local.py
@@ -121,6 +128,9 @@ src/fal/cli/teams.py
121
128
  src/fal/console/__init__.py
122
129
  src/fal/console/icons.py
123
130
  src/fal/console/ux.py
131
+ src/fal/distributed/__init__.py
132
+ src/fal/distributed/utils.py
133
+ src/fal/distributed/worker.py
124
134
  src/fal/exceptions/__init__.py
125
135
  src/fal/exceptions/_base.py
126
136
  src/fal/exceptions/_cuda.py
@@ -130,6 +140,7 @@ src/fal/logging/isolate.py
130
140
  src/fal/logging/style.py
131
141
  src/fal/logging/trace.py
132
142
  src/fal/toolkit/__init__.py
143
+ src/fal/toolkit/compilation.py
133
144
  src/fal/toolkit/exceptions.py
134
145
  src/fal/toolkit/kv.py
135
146
  src/fal/toolkit/optimize.py
@@ -160,26 +171,29 @@ src/fal/toolkit/video/__init__.py
160
171
  src/fal/toolkit/video/video.py
161
172
  tests/__init__.py
162
173
  tests/conftest.py
163
- tests/integration_test.py
164
- tests/mainify_target.py
165
- tests/test_apps.py
166
- tests/test_files.py
167
- tests/test_kv.py
168
- tests/test_stability.py
169
174
  tests/assets/cat.png
170
- tests/cli/__init__.py
171
- tests/cli/test_apps.py
172
- tests/cli/test_auth.py
173
- tests/cli/test_deploy.py
174
- tests/cli/test_keys.py
175
- tests/cli/test_run.py
176
- tests/cli/test_secrets.py
177
- tests/mainify_package/__init__.py
178
- tests/mainify_package/impl.py
179
- tests/mainify_package/utils.py
180
- tests/toolkit/file_test.py
181
- tests/toolkit/image_test.py
182
- tests/toolkit/test_types.py
183
- tests/toolkit/file/providers/test_fal_retry.py
184
- tests/toolkit/utils/retry.py
175
+ tests/e2e/test_apps.py
176
+ tests/integration/test.py
177
+ tests/integration/test_files.py
178
+ tests/integration/test_stability.py
179
+ tests/integration/toolkit/test_image.py
180
+ tests/integration/toolkit/test_kv.py
181
+ tests/unit/test_app.py
182
+ tests/unit/test_file_sync.py
183
+ tests/unit/test_utils.py
184
+ tests/unit/cli/__init__.py
185
+ tests/unit/cli/test_apps.py
186
+ tests/unit/cli/test_auth.py
187
+ tests/unit/cli/test_deploy.py
188
+ tests/unit/cli/test_keys.py
189
+ tests/unit/cli/test_run.py
190
+ tests/unit/cli/test_secrets.py
191
+ tests/unit/distributed/__init__.py
192
+ tests/unit/distributed/test_integration.py
193
+ tests/unit/distributed/test_utils.py
194
+ tests/unit/distributed/test_worker.py
195
+ tests/unit/toolkit/test_file.py
196
+ tests/unit/toolkit/test_types.py
197
+ tests/unit/toolkit/file/providers/test_fal_retry.py
198
+ tests/unit/toolkit/utils/test_retry.py
185
199
  tools/demo_script.py
@@ -1,5 +1,5 @@
1
- isolate[build]<0.21.0,>=0.18.0
2
- isolate-proto<0.18.0,>=0.16.0
1
+ isolate[build]<0.22.0,>=0.18.0
2
+ isolate-proto>=0.29.2
3
3
  grpcio<2,>=1.64.0
4
4
  dill==0.3.7
5
5
  cloudpickle==3.0.0
@@ -14,15 +14,17 @@ rich<15,>=13.3.2
14
14
  rich_argparse
15
15
  packaging>=21.3
16
16
  pathspec<1,>=0.11.1
17
- pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<2.11
18
- fastapi<1,>=0.99.1
17
+ pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*
18
+ fastapi<0.119,>=0.99.1
19
19
  starlette-exporter>=0.21.0
20
20
  httpx>=0.15.4
21
+ httpx-sse
21
22
  attrs>=21.3.0
22
23
  python-dateutil<3,>=2.8.0
23
24
  types-python-dateutil<3,>=2.8.0
24
25
  dateparser<2,>=1.2.0
25
26
  types-dateparser<2,>=1.2.0
27
+ tuspy==1.1.0
26
28
  msgpack<2,>=1.0.7
27
29
  websockets>=12.0
28
30
  pillow<12,>=10.2.0
@@ -32,6 +34,7 @@ cookiecutter
32
34
  tomli<3,>2
33
35
  tomli-w<2,>=1
34
36
  fsspec
37
+ tblib<3.2.0
35
38
 
36
39
  [:python_version < "3.10"]
37
40
  importlib-metadata>=4.4
@@ -52,3 +55,4 @@ pytest-xdist
52
55
  pytest-timeout
53
56
  flaky
54
57
  boto3
58
+ numpy
@@ -22,8 +22,8 @@ authors = [{ name = "Features & Labels <support@fal.ai>"}]
22
22
  readme = "README.md"
23
23
  requires-python = ">=3.8"
24
24
  dependencies = [
25
- "isolate[build]>=0.18.0,<0.21.0",
26
- "isolate-proto>=0.16.0,<0.18.0",
25
+ "isolate[build]>=0.18.0,<0.22.0",
26
+ "isolate-proto>=0.29.2",
27
27
  "grpcio>=1.64.0,<2",
28
28
  "dill==0.3.7",
29
29
  "cloudpickle==3.0.0",
@@ -38,17 +38,20 @@ dependencies = [
38
38
  "rich_argparse",
39
39
  "packaging>=21.3",
40
40
  "pathspec>=0.11.1,<1",
41
- "pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<2.11",
41
+ "pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*",
42
42
  # serve=True dependencies
43
- "fastapi>=0.99.1,<1",
43
+ # https://github.com/fastapi/fastapi/issues/14221
44
+ "fastapi>=0.99.1,<0.119",
44
45
  "starlette-exporter>=0.21.0",
45
46
  # rest-api-client dependencies
46
47
  "httpx>=0.15.4",
48
+ "httpx-sse",
47
49
  "attrs>=21.3.0",
48
50
  "python-dateutil>=2.8.0,<3",
49
51
  "types-python-dateutil>=2.8.0,<3",
50
52
  "dateparser>=1.2.0,<2",
51
53
  "types-dateparser>=1.2.0,<2",
54
+ "tuspy==1.1.0",
52
55
  # For 3.9 and earlier, importlib-metadata's newer versions are included in the standard library.
53
56
  'importlib-metadata>=4.4; python_version < "3.10"',
54
57
  "msgpack>=1.0.7,<2",
@@ -60,6 +63,7 @@ dependencies = [
60
63
  "tomli>2,<3",
61
64
  "tomli-w>=1,<2",
62
65
  "fsspec",
66
+ "tblib<3.2.0",
63
67
  ]
64
68
 
65
69
  [project.optional-dependencies]
@@ -75,6 +79,7 @@ test = [
75
79
  "pytest-timeout",
76
80
  "flaky",
77
81
  "boto3",
82
+ "numpy",
78
83
  ]
79
84
  dev = [
80
85
  "fal[docs,test]",
@@ -5,7 +5,7 @@ from fal.api import FalServerlessHost, LocalHost, cached, function
5
5
  from fal.api import function as isolated # noqa: F401
6
6
  from fal.app import App, endpoint, realtime, wrap_app # noqa: F401
7
7
  from fal.container import ContainerImage
8
- from fal.sdk import FalServerlessKeyCredentials
8
+ from fal.sdk import FalServerlessKeyCredentials, HealthCheck
9
9
  from fal.sync import sync_dir
10
10
 
11
11
  from ._version import __version__, version_tuple # noqa: F401
@@ -23,6 +23,7 @@ __all__ = [
23
23
  "endpoint",
24
24
  "realtime",
25
25
  # "wrap_app",
26
+ "HealthCheck",
26
27
  "FalServerlessKeyCredentials",
27
28
  "sync_dir",
28
29
  "__version__",
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.41.0'
32
- __version_tuple__ = version_tuple = (1, 41, 0)
31
+ __version__ = version = '1.59.0'
32
+ __version_tuple__ = version_tuple = (1, 59, 0)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -231,3 +231,4 @@ def patch_pickle() -> None:
231
231
  _patch_exceptions()
232
232
 
233
233
  include_module("fal")
234
+ include_module("tblib")
@@ -0,0 +1,2 @@
1
+ from .api import * # noqa: F403
2
+ from .client import SyncServerlessClient # noqa: F401