fal 1.32.0__tar.gz → 1.34.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fal might be problematic. Click here for more details.

Files changed (187) hide show
  1. {fal-1.32.0/fal.egg-info → fal-1.34.0}/PKG-INFO +3 -4
  2. {fal-1.32.0 → fal-1.34.0/fal.egg-info}/PKG-INFO +3 -4
  3. {fal-1.32.0 → fal-1.34.0}/fal.egg-info/requires.txt +2 -3
  4. {fal-1.32.0 → fal-1.34.0}/pyproject.toml +2 -3
  5. {fal-1.32.0 → fal-1.34.0}/src/fal/_fal_version.py +2 -2
  6. {fal-1.32.0 → fal-1.34.0}/src/fal/api.py +20 -1
  7. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/debug.py +10 -3
  8. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/main.py +8 -3
  9. {fal-1.32.0 → fal-1.34.0}/.gitignore +0 -0
  10. {fal-1.32.0 → fal-1.34.0}/Makefile +0 -0
  11. {fal-1.32.0 → fal-1.34.0}/README.md +0 -0
  12. {fal-1.32.0 → fal-1.34.0}/docs/conf.py +0 -0
  13. {fal-1.32.0 → fal-1.34.0}/docs/index.rst +0 -0
  14. {fal-1.32.0 → fal-1.34.0}/fal.egg-info/SOURCES.txt +0 -0
  15. {fal-1.32.0 → fal-1.34.0}/fal.egg-info/dependency_links.txt +0 -0
  16. {fal-1.32.0 → fal-1.34.0}/fal.egg-info/entry_points.txt +0 -0
  17. {fal-1.32.0 → fal-1.34.0}/fal.egg-info/top_level.txt +0 -0
  18. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/README.md +0 -0
  19. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
  20. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
  21. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
  22. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
  23. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
  24. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
  25. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
  26. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
  27. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
  28. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
  29. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
  30. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
  31. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
  32. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
  33. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
  34. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
  35. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
  36. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
  37. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
  38. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
  39. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
  40. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
  41. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
  42. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
  43. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
  44. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
  45. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
  46. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
  47. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
  48. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
  49. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
  50. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
  51. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
  52. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
  53. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
  54. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
  55. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
  56. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
  57. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
  58. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
  59. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
  60. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
  61. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
  62. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
  63. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
  64. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
  65. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
  66. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
  67. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
  68. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
  69. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
  70. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
  71. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
  72. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
  73. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
  74. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
  75. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
  76. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
  77. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
  78. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
  79. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
  80. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
  81. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
  82. {fal-1.32.0 → fal-1.34.0}/openapi-fal-rest/pyproject.toml +0 -0
  83. {fal-1.32.0 → fal-1.34.0}/openapi_rest.config.yaml +0 -0
  84. {fal-1.32.0 → fal-1.34.0}/setup.cfg +0 -0
  85. {fal-1.32.0 → fal-1.34.0}/src/fal/__init__.py +0 -0
  86. {fal-1.32.0 → fal-1.34.0}/src/fal/__main__.py +0 -0
  87. {fal-1.32.0 → fal-1.34.0}/src/fal/_serialization.py +0 -0
  88. {fal-1.32.0 → fal-1.34.0}/src/fal/_version.py +0 -0
  89. {fal-1.32.0 → fal-1.34.0}/src/fal/app.py +0 -0
  90. {fal-1.32.0 → fal-1.34.0}/src/fal/apps.py +0 -0
  91. {fal-1.32.0 → fal-1.34.0}/src/fal/auth/__init__.py +0 -0
  92. {fal-1.32.0 → fal-1.34.0}/src/fal/auth/auth0.py +0 -0
  93. {fal-1.32.0 → fal-1.34.0}/src/fal/auth/local.py +0 -0
  94. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/__init__.py +0 -0
  95. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/_utils.py +0 -0
  96. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/api.py +0 -0
  97. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/apps.py +0 -0
  98. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/auth.py +0 -0
  99. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/cli_nested_json.py +0 -0
  100. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/create.py +0 -0
  101. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/deploy.py +0 -0
  102. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/doctor.py +0 -0
  103. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/files.py +0 -0
  104. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/keys.py +0 -0
  105. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/parser.py +0 -0
  106. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/profile.py +0 -0
  107. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/run.py +0 -0
  108. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/runners.py +0 -0
  109. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/secrets.py +0 -0
  110. {fal-1.32.0 → fal-1.34.0}/src/fal/cli/teams.py +0 -0
  111. {fal-1.32.0 → fal-1.34.0}/src/fal/config.py +0 -0
  112. {fal-1.32.0 → fal-1.34.0}/src/fal/console/__init__.py +0 -0
  113. {fal-1.32.0 → fal-1.34.0}/src/fal/console/icons.py +0 -0
  114. {fal-1.32.0 → fal-1.34.0}/src/fal/console/ux.py +0 -0
  115. {fal-1.32.0 → fal-1.34.0}/src/fal/container.py +0 -0
  116. {fal-1.32.0 → fal-1.34.0}/src/fal/exceptions/__init__.py +0 -0
  117. {fal-1.32.0 → fal-1.34.0}/src/fal/exceptions/_base.py +0 -0
  118. {fal-1.32.0 → fal-1.34.0}/src/fal/exceptions/_cuda.py +0 -0
  119. {fal-1.32.0 → fal-1.34.0}/src/fal/exceptions/auth.py +0 -0
  120. {fal-1.32.0 → fal-1.34.0}/src/fal/files.py +0 -0
  121. {fal-1.32.0 → fal-1.34.0}/src/fal/flags.py +0 -0
  122. {fal-1.32.0 → fal-1.34.0}/src/fal/logging/__init__.py +0 -0
  123. {fal-1.32.0 → fal-1.34.0}/src/fal/logging/isolate.py +0 -0
  124. {fal-1.32.0 → fal-1.34.0}/src/fal/logging/style.py +0 -0
  125. {fal-1.32.0 → fal-1.34.0}/src/fal/logging/trace.py +0 -0
  126. {fal-1.32.0 → fal-1.34.0}/src/fal/logging/user.py +0 -0
  127. {fal-1.32.0 → fal-1.34.0}/src/fal/project.py +0 -0
  128. {fal-1.32.0 → fal-1.34.0}/src/fal/py.typed +0 -0
  129. {fal-1.32.0 → fal-1.34.0}/src/fal/rest_client.py +0 -0
  130. {fal-1.32.0 → fal-1.34.0}/src/fal/sdk.py +0 -0
  131. {fal-1.32.0 → fal-1.34.0}/src/fal/sync.py +0 -0
  132. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/__init__.py +0 -0
  133. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/audio/__init__.py +0 -0
  134. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/audio/audio.py +0 -0
  135. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/exceptions.py +0 -0
  136. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/file/__init__.py +0 -0
  137. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/file/file.py +0 -0
  138. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/file/providers/fal.py +0 -0
  139. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/file/providers/gcp.py +0 -0
  140. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/file/providers/r2.py +0 -0
  141. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/file/providers/s3.py +0 -0
  142. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/file/types.py +0 -0
  143. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/image/__init__.py +0 -0
  144. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/image/image.py +0 -0
  145. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
  146. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
  147. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
  148. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
  149. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
  150. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/image/safety_checker.py +0 -0
  151. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/kv.py +0 -0
  152. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/optimize.py +0 -0
  153. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/types.py +0 -0
  154. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/utils/__init__.py +0 -0
  155. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/utils/download_utils.py +0 -0
  156. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/utils/endpoint.py +0 -0
  157. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/utils/retry.py +0 -0
  158. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/utils/setup_utils.py +0 -0
  159. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/video/__init__.py +0 -0
  160. {fal-1.32.0 → fal-1.34.0}/src/fal/toolkit/video/video.py +0 -0
  161. {fal-1.32.0 → fal-1.34.0}/src/fal/utils.py +0 -0
  162. {fal-1.32.0 → fal-1.34.0}/src/fal/workflows.py +0 -0
  163. {fal-1.32.0 → fal-1.34.0}/tests/__init__.py +0 -0
  164. {fal-1.32.0 → fal-1.34.0}/tests/assets/cat.png +0 -0
  165. {fal-1.32.0 → fal-1.34.0}/tests/cli/__init__.py +0 -0
  166. {fal-1.32.0 → fal-1.34.0}/tests/cli/test_apps.py +0 -0
  167. {fal-1.32.0 → fal-1.34.0}/tests/cli/test_auth.py +0 -0
  168. {fal-1.32.0 → fal-1.34.0}/tests/cli/test_deploy.py +0 -0
  169. {fal-1.32.0 → fal-1.34.0}/tests/cli/test_keys.py +0 -0
  170. {fal-1.32.0 → fal-1.34.0}/tests/cli/test_run.py +0 -0
  171. {fal-1.32.0 → fal-1.34.0}/tests/cli/test_secrets.py +0 -0
  172. {fal-1.32.0 → fal-1.34.0}/tests/conftest.py +0 -0
  173. {fal-1.32.0 → fal-1.34.0}/tests/integration_test.py +0 -0
  174. {fal-1.32.0 → fal-1.34.0}/tests/mainify_package/__init__.py +0 -0
  175. {fal-1.32.0 → fal-1.34.0}/tests/mainify_package/impl.py +0 -0
  176. {fal-1.32.0 → fal-1.34.0}/tests/mainify_package/utils.py +0 -0
  177. {fal-1.32.0 → fal-1.34.0}/tests/mainify_target.py +0 -0
  178. {fal-1.32.0 → fal-1.34.0}/tests/test_apps.py +0 -0
  179. {fal-1.32.0 → fal-1.34.0}/tests/test_files.py +0 -0
  180. {fal-1.32.0 → fal-1.34.0}/tests/test_kv.py +0 -0
  181. {fal-1.32.0 → fal-1.34.0}/tests/test_stability.py +0 -0
  182. {fal-1.32.0 → fal-1.34.0}/tests/toolkit/file/providers/test_fal_retry.py +0 -0
  183. {fal-1.32.0 → fal-1.34.0}/tests/toolkit/file_test.py +0 -0
  184. {fal-1.32.0 → fal-1.34.0}/tests/toolkit/image_test.py +0 -0
  185. {fal-1.32.0 → fal-1.34.0}/tests/toolkit/test_types.py +0 -0
  186. {fal-1.32.0 → fal-1.34.0}/tests/toolkit/utils/retry.py +0 -0
  187. {fal-1.32.0 → fal-1.34.0}/tools/demo_script.py +0 -0
@@ -1,17 +1,17 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.32.0
3
+ Version: 1.34.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.19.0,>=0.18.0
8
+ Requires-Dist: isolate[build]<0.20.0,>=0.18.0
9
9
  Requires-Dist: isolate-proto<0.13.0,>=0.12.0
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
13
13
  Requires-Dist: typing-extensions<5,>=4.7.1
14
- Requires-Dist: structlog<23,>=22.3.0
14
+ Requires-Dist: structlog<26,>=22.3.0
15
15
  Requires-Dist: opentelemetry-api<2,>=1.15.0
16
16
  Requires-Dist: opentelemetry-sdk<2,>=1.15.0
17
17
  Requires-Dist: grpc-interceptor<1,>=0.15.0
@@ -22,7 +22,6 @@ Requires-Dist: rich_argparse
22
22
  Requires-Dist: packaging>=21.3
23
23
  Requires-Dist: pathspec<1,>=0.11.1
24
24
  Requires-Dist: pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<2.11
25
- Requires-Dist: structlog>=22.0
26
25
  Requires-Dist: fastapi<1,>=0.99.1
27
26
  Requires-Dist: starlette-exporter>=0.21.0
28
27
  Requires-Dist: httpx>=0.15.4
@@ -1,17 +1,17 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.32.0
3
+ Version: 1.34.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.19.0,>=0.18.0
8
+ Requires-Dist: isolate[build]<0.20.0,>=0.18.0
9
9
  Requires-Dist: isolate-proto<0.13.0,>=0.12.0
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
13
13
  Requires-Dist: typing-extensions<5,>=4.7.1
14
- Requires-Dist: structlog<23,>=22.3.0
14
+ Requires-Dist: structlog<26,>=22.3.0
15
15
  Requires-Dist: opentelemetry-api<2,>=1.15.0
16
16
  Requires-Dist: opentelemetry-sdk<2,>=1.15.0
17
17
  Requires-Dist: grpc-interceptor<1,>=0.15.0
@@ -22,7 +22,6 @@ Requires-Dist: rich_argparse
22
22
  Requires-Dist: packaging>=21.3
23
23
  Requires-Dist: pathspec<1,>=0.11.1
24
24
  Requires-Dist: pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<2.11
25
- Requires-Dist: structlog>=22.0
26
25
  Requires-Dist: fastapi<1,>=0.99.1
27
26
  Requires-Dist: starlette-exporter>=0.21.0
28
27
  Requires-Dist: httpx>=0.15.4
@@ -1,10 +1,10 @@
1
- isolate[build]<0.19.0,>=0.18.0
1
+ isolate[build]<0.20.0,>=0.18.0
2
2
  isolate-proto<0.13.0,>=0.12.0
3
3
  grpcio<2,>=1.64.0
4
4
  dill==0.3.7
5
5
  cloudpickle==3.0.0
6
6
  typing-extensions<5,>=4.7.1
7
- structlog<23,>=22.3.0
7
+ structlog<26,>=22.3.0
8
8
  opentelemetry-api<2,>=1.15.0
9
9
  opentelemetry-sdk<2,>=1.15.0
10
10
  grpc-interceptor<1,>=0.15.0
@@ -15,7 +15,6 @@ rich_argparse
15
15
  packaging>=21.3
16
16
  pathspec<1,>=0.11.1
17
17
  pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<2.11
18
- structlog>=22.0
19
18
  fastapi<1,>=0.99.1
20
19
  starlette-exporter>=0.21.0
21
20
  httpx>=0.15.4
@@ -22,13 +22,13 @@ 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.19.0",
25
+ "isolate[build]>=0.18.0,<0.20.0",
26
26
  "isolate-proto>=0.12.0,<0.13.0",
27
27
  "grpcio>=1.64.0,<2",
28
28
  "dill==0.3.7",
29
29
  "cloudpickle==3.0.0",
30
30
  "typing-extensions>=4.7.1,<5",
31
- "structlog>=22.3.0,<23",
31
+ "structlog>=22.3.0,<26",
32
32
  "opentelemetry-api>=1.15.0,<2",
33
33
  "opentelemetry-sdk>=1.15.0,<2",
34
34
  "grpc-interceptor>=0.15.0,<1",
@@ -40,7 +40,6 @@ dependencies = [
40
40
  "pathspec>=0.11.1,<1",
41
41
  "pydantic!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,<2.11",
42
42
  # serve=True dependencies
43
- "structlog>=22.0",
44
43
  "fastapi>=0.99.1,<1",
45
44
  "starlette-exporter>=0.21.0",
46
45
  # rest-api-client dependencies
@@ -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.32.0'
32
- __version_tuple__ = version_tuple = (1, 32, 0)
31
+ __version__ = version = '1.34.0'
32
+ __version_tuple__ = version_tuple = (1, 34, 0)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -96,7 +96,12 @@ class InternalFalServerlessError(FalServerlessException):
96
96
 
97
97
 
98
98
  @dataclass
99
- class FalMissingDependencyError(FalServerlessError): ...
99
+ class FalSerializationError(FalServerlessException):
100
+ message: str
101
+
102
+
103
+ @dataclass
104
+ class FalMissingDependencyError(FalSerializationError): ...
100
105
 
101
106
 
102
107
  @dataclass
@@ -316,6 +321,8 @@ def _handle_grpc_error():
316
321
  """
317
322
  Wraps grpc errors as fal Serverless Errors.
318
323
  """
324
+ from isolate.connections.common import SerializationError
325
+
319
326
  try:
320
327
  return fn(*args, **kwargs)
321
328
  except grpc.RpcError as e:
@@ -339,6 +346,18 @@ def _handle_grpc_error():
339
346
  raise FalMissingDependencyError(msg) from None
340
347
  else:
341
348
  raise FalServerlessError(msg)
349
+ except SerializationError as e:
350
+ msg = str(e)
351
+ cause = e.__cause__
352
+ if isinstance(cause, ModuleNotFoundError):
353
+ missing_module = cause.name
354
+ msg += (
355
+ f". Could not find module '{missing_module}'. "
356
+ "This is likely due to a missing dependency. "
357
+ "Please make sure to include all dependencies "
358
+ "in the environment configuration."
359
+ )
360
+ raise FalSerializationError(msg) from cause
342
361
 
343
362
  return handler
344
363
 
@@ -1,3 +1,4 @@
1
+ import argparse
1
2
  from contextlib import ExitStack, contextmanager
2
3
 
3
4
  from .parser import FalParser
@@ -45,17 +46,23 @@ def debugtools(args):
45
46
 
46
47
 
47
48
  def get_debug_parser():
49
+ from fal.flags import DEBUG
50
+
48
51
  parser = FalParser(add_help=False)
49
52
  group = parser.add_argument_group(title="Debug")
50
- group.add_argument("--debug", action="store_true", help="Show verbose errors.")
53
+ group.add_argument(
54
+ "--debug",
55
+ action="store_true",
56
+ help="Show verbose errors." if DEBUG else argparse.SUPPRESS,
57
+ )
51
58
  group.add_argument(
52
59
  "--pdb",
53
60
  action="store_true",
54
- help="Start pdb on error.",
61
+ help="Start pdb on error." if DEBUG else argparse.SUPPRESS,
55
62
  )
56
63
  group.add_argument(
57
64
  "--cprofile",
58
65
  action="store_true",
59
- help="Show cProfile report.",
66
+ help="Show cProfile report." if DEBUG else argparse.SUPPRESS,
60
67
  )
61
68
  return parser
@@ -113,7 +113,7 @@ def _check_latest_version():
113
113
  def main(argv=None) -> int:
114
114
  import grpc
115
115
 
116
- from fal.api import UserFunctionException
116
+ from fal.api import FalSerializationError, UserFunctionException
117
117
 
118
118
  _check_latest_version()
119
119
 
@@ -123,7 +123,7 @@ def main(argv=None) -> int:
123
123
 
124
124
  with debugtools(args):
125
125
  ret = args.func(args)
126
- except UserFunctionException as _exc:
126
+ except (UserFunctionException, FalSerializationError) as _exc:
127
127
  cause = _exc.__cause__
128
128
  exc: BaseException = cause or _exc
129
129
  tb = rich.traceback.Traceback.from_exception(
@@ -132,7 +132,12 @@ def main(argv=None) -> int:
132
132
  exc.__traceback__,
133
133
  )
134
134
  console.print(tb)
135
- _print_error("Unhandled user exception")
135
+
136
+ if isinstance(_exc, UserFunctionException):
137
+ msg = "Unhandled user exception"
138
+ else:
139
+ msg = str(_exc)
140
+ _print_error(msg)
136
141
  except KeyboardInterrupt:
137
142
  _print_error("Aborted.")
138
143
  except grpc.RpcError as exc:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes