fal 1.5.2__tar.gz → 1.5.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 (166) hide show
  1. {fal-1.5.2 → fal-1.5.3}/.gitignore +1 -0
  2. fal-1.5.3/Makefile +24 -0
  3. {fal-1.5.2 → fal-1.5.3}/PKG-INFO +6 -2
  4. fal-1.5.3/docs/conf.py +31 -0
  5. fal-1.5.3/docs/index.rst +18 -0
  6. {fal-1.5.2 → fal-1.5.3}/fal.egg-info/PKG-INFO +6 -2
  7. {fal-1.5.2 → fal-1.5.3}/fal.egg-info/SOURCES.txt +3 -0
  8. {fal-1.5.2 → fal-1.5.3}/fal.egg-info/requires.txt +6 -1
  9. {fal-1.5.2 → fal-1.5.3}/pyproject.toml +6 -1
  10. {fal-1.5.2 → fal-1.5.3}/src/fal/_fal_version.py +2 -2
  11. {fal-1.5.2 → fal-1.5.3}/src/fal/app.py +10 -6
  12. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/file/file.py +3 -3
  13. {fal-1.5.2 → fal-1.5.3}/README.md +0 -0
  14. {fal-1.5.2 → fal-1.5.3}/fal.egg-info/dependency_links.txt +0 -0
  15. {fal-1.5.2 → fal-1.5.3}/fal.egg-info/entry_points.txt +0 -0
  16. {fal-1.5.2 → fal-1.5.3}/fal.egg-info/top_level.txt +0 -0
  17. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/README.md +0 -0
  18. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
  19. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
  20. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
  21. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
  22. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
  23. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
  24. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
  25. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
  26. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
  27. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
  28. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
  29. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
  30. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
  31. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
  32. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
  33. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
  34. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
  35. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
  36. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
  37. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
  38. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
  39. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
  40. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
  41. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
  42. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
  43. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
  44. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
  45. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
  46. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
  47. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
  48. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
  49. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
  50. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
  51. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
  52. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
  53. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
  54. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
  55. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
  56. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
  57. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
  58. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
  59. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
  60. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
  61. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
  62. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
  63. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
  64. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
  65. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
  66. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
  67. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
  68. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
  69. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
  70. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
  71. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
  72. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
  73. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
  74. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
  75. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
  76. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
  77. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
  78. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
  79. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
  80. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
  81. {fal-1.5.2 → fal-1.5.3}/openapi-fal-rest/pyproject.toml +0 -0
  82. {fal-1.5.2 → fal-1.5.3}/openapi_rest.config.yaml +0 -0
  83. {fal-1.5.2 → fal-1.5.3}/setup.cfg +0 -0
  84. {fal-1.5.2 → fal-1.5.3}/src/fal/__init__.py +0 -0
  85. {fal-1.5.2 → fal-1.5.3}/src/fal/__main__.py +0 -0
  86. {fal-1.5.2 → fal-1.5.3}/src/fal/_serialization.py +0 -0
  87. {fal-1.5.2 → fal-1.5.3}/src/fal/_version.py +0 -0
  88. {fal-1.5.2 → fal-1.5.3}/src/fal/api.py +0 -0
  89. {fal-1.5.2 → fal-1.5.3}/src/fal/apps.py +0 -0
  90. {fal-1.5.2 → fal-1.5.3}/src/fal/auth/__init__.py +0 -0
  91. {fal-1.5.2 → fal-1.5.3}/src/fal/auth/auth0.py +0 -0
  92. {fal-1.5.2 → fal-1.5.3}/src/fal/auth/local.py +0 -0
  93. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/__init__.py +0 -0
  94. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/_utils.py +0 -0
  95. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/apps.py +0 -0
  96. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/auth.py +0 -0
  97. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/create.py +0 -0
  98. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/debug.py +0 -0
  99. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/deploy.py +0 -0
  100. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/doctor.py +0 -0
  101. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/keys.py +0 -0
  102. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/main.py +0 -0
  103. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/parser.py +0 -0
  104. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/run.py +0 -0
  105. {fal-1.5.2 → fal-1.5.3}/src/fal/cli/secrets.py +0 -0
  106. {fal-1.5.2 → fal-1.5.3}/src/fal/console/__init__.py +0 -0
  107. {fal-1.5.2 → fal-1.5.3}/src/fal/console/icons.py +0 -0
  108. {fal-1.5.2 → fal-1.5.3}/src/fal/console/ux.py +0 -0
  109. {fal-1.5.2 → fal-1.5.3}/src/fal/container.py +0 -0
  110. {fal-1.5.2 → fal-1.5.3}/src/fal/exceptions/__init__.py +0 -0
  111. {fal-1.5.2 → fal-1.5.3}/src/fal/exceptions/_base.py +0 -0
  112. {fal-1.5.2 → fal-1.5.3}/src/fal/exceptions/_cuda.py +0 -0
  113. {fal-1.5.2 → fal-1.5.3}/src/fal/exceptions/auth.py +0 -0
  114. {fal-1.5.2 → fal-1.5.3}/src/fal/files.py +0 -0
  115. {fal-1.5.2 → fal-1.5.3}/src/fal/flags.py +0 -0
  116. {fal-1.5.2 → fal-1.5.3}/src/fal/logging/__init__.py +0 -0
  117. {fal-1.5.2 → fal-1.5.3}/src/fal/logging/isolate.py +0 -0
  118. {fal-1.5.2 → fal-1.5.3}/src/fal/logging/style.py +0 -0
  119. {fal-1.5.2 → fal-1.5.3}/src/fal/logging/trace.py +0 -0
  120. {fal-1.5.2 → fal-1.5.3}/src/fal/logging/user.py +0 -0
  121. {fal-1.5.2 → fal-1.5.3}/src/fal/py.typed +0 -0
  122. {fal-1.5.2 → fal-1.5.3}/src/fal/rest_client.py +0 -0
  123. {fal-1.5.2 → fal-1.5.3}/src/fal/sdk.py +0 -0
  124. {fal-1.5.2 → fal-1.5.3}/src/fal/sync.py +0 -0
  125. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/__init__.py +0 -0
  126. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/exceptions.py +0 -0
  127. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/file/__init__.py +0 -0
  128. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/file/providers/fal.py +0 -0
  129. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/file/providers/gcp.py +0 -0
  130. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/file/providers/r2.py +0 -0
  131. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/file/types.py +0 -0
  132. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/image/__init__.py +0 -0
  133. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/image/image.py +0 -0
  134. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
  135. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
  136. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
  137. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
  138. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
  139. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/image/safety_checker.py +0 -0
  140. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/optimize.py +0 -0
  141. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/utils/__init__.py +0 -0
  142. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/utils/download_utils.py +0 -0
  143. {fal-1.5.2 → fal-1.5.3}/src/fal/toolkit/utils/retry.py +0 -0
  144. {fal-1.5.2 → fal-1.5.3}/src/fal/utils.py +0 -0
  145. {fal-1.5.2 → fal-1.5.3}/src/fal/workflows.py +0 -0
  146. {fal-1.5.2 → fal-1.5.3}/tests/__init__.py +0 -0
  147. {fal-1.5.2 → fal-1.5.3}/tests/assets/cat.png +0 -0
  148. {fal-1.5.2 → fal-1.5.3}/tests/cli/__init__.py +0 -0
  149. {fal-1.5.2 → fal-1.5.3}/tests/cli/test_apps.py +0 -0
  150. {fal-1.5.2 → fal-1.5.3}/tests/cli/test_auth.py +0 -0
  151. {fal-1.5.2 → fal-1.5.3}/tests/cli/test_deploy.py +0 -0
  152. {fal-1.5.2 → fal-1.5.3}/tests/cli/test_keys.py +0 -0
  153. {fal-1.5.2 → fal-1.5.3}/tests/cli/test_run.py +0 -0
  154. {fal-1.5.2 → fal-1.5.3}/tests/cli/test_secrets.py +0 -0
  155. {fal-1.5.2 → fal-1.5.3}/tests/conftest.py +0 -0
  156. {fal-1.5.2 → fal-1.5.3}/tests/integration_test.py +0 -0
  157. {fal-1.5.2 → fal-1.5.3}/tests/mainify_package/__init__.py +0 -0
  158. {fal-1.5.2 → fal-1.5.3}/tests/mainify_package/impl.py +0 -0
  159. {fal-1.5.2 → fal-1.5.3}/tests/mainify_package/utils.py +0 -0
  160. {fal-1.5.2 → fal-1.5.3}/tests/mainify_target.py +0 -0
  161. {fal-1.5.2 → fal-1.5.3}/tests/test_apps.py +0 -0
  162. {fal-1.5.2 → fal-1.5.3}/tests/test_stability.py +0 -0
  163. {fal-1.5.2 → fal-1.5.3}/tests/toolkit/file_test.py +0 -0
  164. {fal-1.5.2 → fal-1.5.3}/tests/toolkit/image_test.py +0 -0
  165. {fal-1.5.2 → fal-1.5.3}/tests/toolkit/utils/retry.py +0 -0
  166. {fal-1.5.2 → fal-1.5.3}/tools/demo_script.py +0 -0
@@ -1 +1,2 @@
1
1
  /src/fal/_fal_version.py
2
+ /docs/*
fal-1.5.3/Makefile ADDED
@@ -0,0 +1,24 @@
1
+ MAKEFILE_DIR := $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
2
+
3
+ SPHINXOPTS = --fresh-env
4
+ SPHINXBUILD = sphinx-build
5
+ SPHINXAPIDOC = sphinx-apidoc
6
+ SOURCEDIR = $(MAKEFILE_DIR)/docs
7
+ BUILDDIR = $(MAKEFILE_DIR)/docs/_build
8
+ PROJECTDIR = $(MAKEFILE_DIR)/src/fal
9
+
10
+ help:
11
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
12
+
13
+ .PHONY: help Makefile clean apidoc html docs
14
+
15
+ clean:
16
+ rm -rf $(BUILDDIR)/*
17
+
18
+ apidoc:
19
+ $(SPHINXAPIDOC) -f -o "$(SOURCEDIR)" "$(PROJECTDIR)"
20
+
21
+ html:
22
+ @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
23
+
24
+ docs: apidoc html
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fal
3
- Version: 1.5.2
3
+ Version: 1.5.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
@@ -37,6 +37,10 @@ Requires-Dist: pyjwt[crypto]<3,>=2.8.0
37
37
  Requires-Dist: uvicorn<1,>=0.29.0
38
38
  Requires-Dist: cookiecutter
39
39
  Requires-Dist: tomli
40
+ Provides-Extra: docs
41
+ Requires-Dist: sphinx; extra == "docs"
42
+ Requires-Dist: sphinx-rtd-theme; extra == "docs"
43
+ Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
40
44
  Provides-Extra: test
41
45
  Requires-Dist: pytest<8; extra == "test"
42
46
  Requires-Dist: pytest-asyncio; extra == "test"
@@ -44,7 +48,7 @@ Requires-Dist: pytest-xdist; extra == "test"
44
48
  Requires-Dist: flaky; extra == "test"
45
49
  Requires-Dist: boto3; extra == "test"
46
50
  Provides-Extra: dev
47
- Requires-Dist: fal[test]; extra == "dev"
51
+ Requires-Dist: fal[docs,test]; extra == "dev"
48
52
  Requires-Dist: openapi-python-client<1,>=0.14.1; extra == "dev"
49
53
 
50
54
  [![PyPI](https://img.shields.io/pypi/v/fal.svg?logo=PyPI)](https://pypi.org/project/fal)
fal-1.5.3/docs/conf.py ADDED
@@ -0,0 +1,31 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # For the full list of built-in configuration values, see the documentation:
4
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
5
+
6
+ # -- Project information -----------------------------------------------------
7
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
8
+
9
+ project = 'fal_sdk'
10
+ copyright = '2024, FAL Team'
11
+ author = 'FAL Team'
12
+
13
+ # -- General configuration ---------------------------------------------------
14
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
15
+
16
+ extensions = [
17
+ 'sphinx.ext.autodoc',
18
+ 'sphinx.ext.napoleon',
19
+ 'sphinx_autodoc_typehints'
20
+ ]
21
+
22
+ templates_path = ['_templates']
23
+ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
24
+
25
+
26
+
27
+ # -- Options for HTML output -------------------------------------------------
28
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
29
+
30
+ html_theme = 'alabaster'
31
+ html_static_path = ['_static']
@@ -0,0 +1,18 @@
1
+ .. fal_sdk documentation master file, created by
2
+ sphinx-quickstart on Wed Oct 2 05:09:49 2024.
3
+ You can adapt this file completely to your liking, but it should at least
4
+ contain the root `toctree` directive.
5
+
6
+ fal_sdk documentation
7
+ =====================
8
+
9
+ Add your content using ``reStructuredText`` syntax. See the
10
+ `reStructuredText <https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html>`_
11
+ documentation for details.
12
+
13
+
14
+ .. toctree::
15
+ :maxdepth: 2
16
+ :caption: Contents:
17
+
18
+ modules
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fal
3
- Version: 1.5.2
3
+ Version: 1.5.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
@@ -37,6 +37,10 @@ Requires-Dist: pyjwt[crypto]<3,>=2.8.0
37
37
  Requires-Dist: uvicorn<1,>=0.29.0
38
38
  Requires-Dist: cookiecutter
39
39
  Requires-Dist: tomli
40
+ Provides-Extra: docs
41
+ Requires-Dist: sphinx; extra == "docs"
42
+ Requires-Dist: sphinx-rtd-theme; extra == "docs"
43
+ Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
40
44
  Provides-Extra: test
41
45
  Requires-Dist: pytest<8; extra == "test"
42
46
  Requires-Dist: pytest-asyncio; extra == "test"
@@ -44,7 +48,7 @@ Requires-Dist: pytest-xdist; extra == "test"
44
48
  Requires-Dist: flaky; extra == "test"
45
49
  Requires-Dist: boto3; extra == "test"
46
50
  Provides-Extra: dev
47
- Requires-Dist: fal[test]; extra == "dev"
51
+ Requires-Dist: fal[docs,test]; extra == "dev"
48
52
  Requires-Dist: openapi-python-client<1,>=0.14.1; extra == "dev"
49
53
 
50
54
  [![PyPI](https://img.shields.io/pypi/v/fal.svg?logo=PyPI)](https://pypi.org/project/fal)
@@ -1,7 +1,10 @@
1
1
  .gitignore
2
+ Makefile
2
3
  README.md
3
4
  openapi_rest.config.yaml
4
5
  pyproject.toml
6
+ docs/conf.py
7
+ docs/index.rst
5
8
  fal.egg-info/PKG-INFO
6
9
  fal.egg-info/SOURCES.txt
7
10
  fal.egg-info/dependency_links.txt
@@ -34,9 +34,14 @@ tomli
34
34
  importlib-metadata>=4.4
35
35
 
36
36
  [dev]
37
- fal[test]
37
+ fal[docs,test]
38
38
  openapi-python-client<1,>=0.14.1
39
39
 
40
+ [docs]
41
+ sphinx
42
+ sphinx-rtd-theme
43
+ sphinx-autodoc-typehints
44
+
40
45
  [test]
41
46
  pytest<8
42
47
  pytest-asyncio
@@ -60,6 +60,11 @@ dependencies = [
60
60
  ]
61
61
 
62
62
  [project.optional-dependencies]
63
+ docs = [
64
+ "sphinx",
65
+ "sphinx-rtd-theme",
66
+ "sphinx-autodoc-typehints",
67
+ ]
63
68
  test = [
64
69
  "pytest<8",
65
70
  "pytest-asyncio",
@@ -68,7 +73,7 @@ test = [
68
73
  "boto3",
69
74
  ]
70
75
  dev = [
71
- "fal[test]",
76
+ "fal[docs,test]",
72
77
  "openapi-python-client>=0.14.1,<1",
73
78
  ]
74
79
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.5.2'
16
- __version_tuple__ = version_tuple = (1, 5, 2)
15
+ __version__ = version = '1.5.3'
16
+ __version_tuple__ = version_tuple = (1, 5, 3)
@@ -19,7 +19,8 @@ from fal._serialization import include_modules_from
19
19
  from fal.api import RouteSignature
20
20
  from fal.exceptions import RequestCancelledException
21
21
  from fal.logging import get_logger
22
- from fal.toolkit.file.providers import fal as fal_provider_module
22
+ from fal.toolkit.file import get_lifecycle_preference
23
+ from fal.toolkit.file.providers.fal import GLOBAL_LIFECYCLE_PREFERENCE
23
24
 
24
25
  REALTIME_APP_REQUIREMENTS = ["websockets", "msgpack"]
25
26
 
@@ -266,11 +267,14 @@ class App(fal.api.BaseServable):
266
267
 
267
268
  @app.middleware("http")
268
269
  async def set_global_object_preference(request, call_next):
269
- response = await call_next(request)
270
270
  try:
271
- fal_provider_module.GLOBAL_LIFECYCLE_PREFERENCE = request.headers.get(
272
- "X-Fal-Object-Lifecycle-Preference"
273
- )
271
+ preference_dict = get_lifecycle_preference(request) or {}
272
+ expiration_duration = preference_dict.get("expiration_duration_seconds")
273
+ if expiration_duration is not None:
274
+ GLOBAL_LIFECYCLE_PREFERENCE.expiration_duration_seconds = int(
275
+ expiration_duration
276
+ )
277
+
274
278
  except Exception:
275
279
  from fastapi.logger import logger
276
280
 
@@ -278,7 +282,7 @@ class App(fal.api.BaseServable):
278
282
  "Failed set a global lifecycle preference %s",
279
283
  self.__class__.__name__,
280
284
  )
281
- return response
285
+ return await call_next(request)
282
286
 
283
287
  @app.exception_handler(RequestCancelledException)
284
288
  async def value_error_exception_handler(
@@ -144,7 +144,7 @@ class File(BaseModel):
144
144
 
145
145
  fdata = FileData(data, content_type, file_name)
146
146
 
147
- object_lifecycle_preference = _get_lifecycle_preference(request)
147
+ object_lifecycle_preference = get_lifecycle_preference(request)
148
148
 
149
149
  try:
150
150
  url = repo.save(fdata, object_lifecycle_preference)
@@ -191,7 +191,7 @@ class File(BaseModel):
191
191
  )
192
192
 
193
193
  content_type = content_type or "application/octet-stream"
194
- object_lifecycle_preference = _get_lifecycle_preference(request)
194
+ object_lifecycle_preference = get_lifecycle_preference(request)
195
195
 
196
196
  try:
197
197
  url, data = repo.save_file(
@@ -274,7 +274,7 @@ class CompressedFile(File):
274
274
  shutil.rmtree(self.extract_dir)
275
275
 
276
276
 
277
- def _get_lifecycle_preference(request: Request) -> dict[str, str] | None:
277
+ def get_lifecycle_preference(request: Request) -> dict[str, str] | None:
278
278
  import json
279
279
 
280
280
  preference_str = (
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes