fal 1.28.1__tar.gz → 1.28.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 (186) hide show
  1. {fal-1.28.1/fal.egg-info → fal-1.28.3}/PKG-INFO +1 -1
  2. {fal-1.28.1 → fal-1.28.3/fal.egg-info}/PKG-INFO +1 -1
  3. {fal-1.28.1 → fal-1.28.3}/src/fal/_fal_version.py +2 -2
  4. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/apps.py +16 -3
  5. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/deploy.py +25 -10
  6. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/file/file.py +7 -5
  7. {fal-1.28.1 → fal-1.28.3}/.gitignore +0 -0
  8. {fal-1.28.1 → fal-1.28.3}/Makefile +0 -0
  9. {fal-1.28.1 → fal-1.28.3}/README.md +0 -0
  10. {fal-1.28.1 → fal-1.28.3}/docs/conf.py +0 -0
  11. {fal-1.28.1 → fal-1.28.3}/docs/index.rst +0 -0
  12. {fal-1.28.1 → fal-1.28.3}/fal.egg-info/SOURCES.txt +0 -0
  13. {fal-1.28.1 → fal-1.28.3}/fal.egg-info/dependency_links.txt +0 -0
  14. {fal-1.28.1 → fal-1.28.3}/fal.egg-info/entry_points.txt +0 -0
  15. {fal-1.28.1 → fal-1.28.3}/fal.egg-info/requires.txt +0 -0
  16. {fal-1.28.1 → fal-1.28.3}/fal.egg-info/top_level.txt +0 -0
  17. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/README.md +0 -0
  18. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
  19. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
  20. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
  21. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
  22. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
  23. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
  24. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/__init__.py +0 -0
  25. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/create_workflow.py +0 -0
  26. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/delete_workflow.py +0 -0
  27. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/get_workflow.py +0 -0
  28. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/list_user_workflows.py +0 -0
  29. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/comfy/update_workflow.py +0 -0
  30. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
  31. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
  32. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
  33. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/users/__init__.py +0 -0
  34. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/users/get_current_user.py +0 -0
  35. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
  36. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_workflow.py +0 -0
  37. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow.py +0 -0
  38. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow.py +0 -0
  39. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/list_user_workflows.py +0 -0
  40. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/api/workflows/update_workflow.py +0 -0
  41. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
  42. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
  43. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
  44. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
  45. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
  46. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_detail.py +0 -0
  47. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_item.py +0 -0
  48. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema.py +0 -0
  49. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_extra_data.py +0 -0
  50. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs.py +0 -0
  51. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +0 -0
  52. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/comfy_workflow_schema_prompt.py +0 -0
  53. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/current_user.py +0 -0
  54. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
  55. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
  56. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
  57. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
  58. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/page_comfy_workflow_item.py +0 -0
  59. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
  60. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/team_role.py +0 -0
  61. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow.py +0 -0
  62. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/typed_comfy_workflow_update.py +0 -0
  63. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
  64. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow_update.py +0 -0
  65. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/user_member.py +0 -0
  66. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
  67. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
  68. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_metadata.py +0 -0
  69. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
  70. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
  71. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
  72. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents.py +0 -0
  73. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
  74. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
  75. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
  76. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
  77. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
  78. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
  79. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
  80. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
  81. {fal-1.28.1 → fal-1.28.3}/openapi-fal-rest/pyproject.toml +0 -0
  82. {fal-1.28.1 → fal-1.28.3}/openapi_rest.config.yaml +0 -0
  83. {fal-1.28.1 → fal-1.28.3}/pyproject.toml +0 -0
  84. {fal-1.28.1 → fal-1.28.3}/setup.cfg +0 -0
  85. {fal-1.28.1 → fal-1.28.3}/src/fal/__init__.py +0 -0
  86. {fal-1.28.1 → fal-1.28.3}/src/fal/__main__.py +0 -0
  87. {fal-1.28.1 → fal-1.28.3}/src/fal/_serialization.py +0 -0
  88. {fal-1.28.1 → fal-1.28.3}/src/fal/_version.py +0 -0
  89. {fal-1.28.1 → fal-1.28.3}/src/fal/api.py +0 -0
  90. {fal-1.28.1 → fal-1.28.3}/src/fal/app.py +0 -0
  91. {fal-1.28.1 → fal-1.28.3}/src/fal/apps.py +0 -0
  92. {fal-1.28.1 → fal-1.28.3}/src/fal/auth/__init__.py +0 -0
  93. {fal-1.28.1 → fal-1.28.3}/src/fal/auth/auth0.py +0 -0
  94. {fal-1.28.1 → fal-1.28.3}/src/fal/auth/local.py +0 -0
  95. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/__init__.py +0 -0
  96. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/_utils.py +0 -0
  97. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/api.py +0 -0
  98. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/auth.py +0 -0
  99. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/cli_nested_json.py +0 -0
  100. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/create.py +0 -0
  101. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/debug.py +0 -0
  102. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/doctor.py +0 -0
  103. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/files.py +0 -0
  104. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/keys.py +0 -0
  105. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/main.py +0 -0
  106. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/parser.py +0 -0
  107. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/profile.py +0 -0
  108. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/run.py +0 -0
  109. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/runners.py +0 -0
  110. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/secrets.py +0 -0
  111. {fal-1.28.1 → fal-1.28.3}/src/fal/cli/teams.py +0 -0
  112. {fal-1.28.1 → fal-1.28.3}/src/fal/config.py +0 -0
  113. {fal-1.28.1 → fal-1.28.3}/src/fal/console/__init__.py +0 -0
  114. {fal-1.28.1 → fal-1.28.3}/src/fal/console/icons.py +0 -0
  115. {fal-1.28.1 → fal-1.28.3}/src/fal/console/ux.py +0 -0
  116. {fal-1.28.1 → fal-1.28.3}/src/fal/container.py +0 -0
  117. {fal-1.28.1 → fal-1.28.3}/src/fal/exceptions/__init__.py +0 -0
  118. {fal-1.28.1 → fal-1.28.3}/src/fal/exceptions/_base.py +0 -0
  119. {fal-1.28.1 → fal-1.28.3}/src/fal/exceptions/_cuda.py +0 -0
  120. {fal-1.28.1 → fal-1.28.3}/src/fal/exceptions/auth.py +0 -0
  121. {fal-1.28.1 → fal-1.28.3}/src/fal/files.py +0 -0
  122. {fal-1.28.1 → fal-1.28.3}/src/fal/flags.py +0 -0
  123. {fal-1.28.1 → fal-1.28.3}/src/fal/logging/__init__.py +0 -0
  124. {fal-1.28.1 → fal-1.28.3}/src/fal/logging/isolate.py +0 -0
  125. {fal-1.28.1 → fal-1.28.3}/src/fal/logging/style.py +0 -0
  126. {fal-1.28.1 → fal-1.28.3}/src/fal/logging/trace.py +0 -0
  127. {fal-1.28.1 → fal-1.28.3}/src/fal/logging/user.py +0 -0
  128. {fal-1.28.1 → fal-1.28.3}/src/fal/project.py +0 -0
  129. {fal-1.28.1 → fal-1.28.3}/src/fal/py.typed +0 -0
  130. {fal-1.28.1 → fal-1.28.3}/src/fal/rest_client.py +0 -0
  131. {fal-1.28.1 → fal-1.28.3}/src/fal/sdk.py +0 -0
  132. {fal-1.28.1 → fal-1.28.3}/src/fal/sync.py +0 -0
  133. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/__init__.py +0 -0
  134. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/audio/__init__.py +0 -0
  135. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/audio/audio.py +0 -0
  136. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/exceptions.py +0 -0
  137. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/file/__init__.py +0 -0
  138. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/file/providers/fal.py +0 -0
  139. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/file/providers/gcp.py +0 -0
  140. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/file/providers/r2.py +0 -0
  141. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/file/providers/s3.py +0 -0
  142. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/file/types.py +0 -0
  143. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/image/__init__.py +0 -0
  144. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/image/image.py +0 -0
  145. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/image/nsfw_filter/__init__.py +0 -0
  146. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/image/nsfw_filter/env.py +0 -0
  147. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/image/nsfw_filter/inference.py +0 -0
  148. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/image/nsfw_filter/model.py +0 -0
  149. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/image/nsfw_filter/requirements.txt +0 -0
  150. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/image/safety_checker.py +0 -0
  151. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/kv.py +0 -0
  152. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/optimize.py +0 -0
  153. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/types.py +0 -0
  154. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/utils/__init__.py +0 -0
  155. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/utils/download_utils.py +0 -0
  156. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/utils/endpoint.py +0 -0
  157. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/utils/retry.py +0 -0
  158. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/video/__init__.py +0 -0
  159. {fal-1.28.1 → fal-1.28.3}/src/fal/toolkit/video/video.py +0 -0
  160. {fal-1.28.1 → fal-1.28.3}/src/fal/utils.py +0 -0
  161. {fal-1.28.1 → fal-1.28.3}/src/fal/workflows.py +0 -0
  162. {fal-1.28.1 → fal-1.28.3}/tests/__init__.py +0 -0
  163. {fal-1.28.1 → fal-1.28.3}/tests/assets/cat.png +0 -0
  164. {fal-1.28.1 → fal-1.28.3}/tests/cli/__init__.py +0 -0
  165. {fal-1.28.1 → fal-1.28.3}/tests/cli/test_apps.py +0 -0
  166. {fal-1.28.1 → fal-1.28.3}/tests/cli/test_auth.py +0 -0
  167. {fal-1.28.1 → fal-1.28.3}/tests/cli/test_deploy.py +0 -0
  168. {fal-1.28.1 → fal-1.28.3}/tests/cli/test_keys.py +0 -0
  169. {fal-1.28.1 → fal-1.28.3}/tests/cli/test_run.py +0 -0
  170. {fal-1.28.1 → fal-1.28.3}/tests/cli/test_secrets.py +0 -0
  171. {fal-1.28.1 → fal-1.28.3}/tests/conftest.py +0 -0
  172. {fal-1.28.1 → fal-1.28.3}/tests/integration_test.py +0 -0
  173. {fal-1.28.1 → fal-1.28.3}/tests/mainify_package/__init__.py +0 -0
  174. {fal-1.28.1 → fal-1.28.3}/tests/mainify_package/impl.py +0 -0
  175. {fal-1.28.1 → fal-1.28.3}/tests/mainify_package/utils.py +0 -0
  176. {fal-1.28.1 → fal-1.28.3}/tests/mainify_target.py +0 -0
  177. {fal-1.28.1 → fal-1.28.3}/tests/test_apps.py +0 -0
  178. {fal-1.28.1 → fal-1.28.3}/tests/test_files.py +0 -0
  179. {fal-1.28.1 → fal-1.28.3}/tests/test_kv.py +0 -0
  180. {fal-1.28.1 → fal-1.28.3}/tests/test_stability.py +0 -0
  181. {fal-1.28.1 → fal-1.28.3}/tests/toolkit/file/providers/test_fal_retry.py +0 -0
  182. {fal-1.28.1 → fal-1.28.3}/tests/toolkit/file_test.py +0 -0
  183. {fal-1.28.1 → fal-1.28.3}/tests/toolkit/image_test.py +0 -0
  184. {fal-1.28.1 → fal-1.28.3}/tests/toolkit/test_types.py +0 -0
  185. {fal-1.28.1 → fal-1.28.3}/tests/toolkit/utils/retry.py +0 -0
  186. {fal-1.28.1 → fal-1.28.3}/tools/demo_script.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fal
3
- Version: 1.28.1
3
+ Version: 1.28.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.28.1
3
+ Version: 1.28.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.28.1'
21
- __version_tuple__ = version_tuple = (1, 28, 1)
20
+ __version__ = version = '1.28.3'
21
+ __version_tuple__ = version_tuple = (1, 28, 3)
@@ -1,5 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import json
4
+ from dataclasses import asdict
3
5
  from typing import TYPE_CHECKING
4
6
 
5
7
  import fal.cli.runners as runners
@@ -62,9 +64,13 @@ def _list(args):
62
64
  else:
63
65
  apps.sort(key=lambda x: x.alias)
64
66
 
65
- table = _apps_table(apps)
66
-
67
- args.console.print(table)
67
+ if args.output == "pretty":
68
+ table = _apps_table(apps)
69
+ args.console.print(table)
70
+ elif args.output == "json":
71
+ apps_as_dicts = [asdict(a) for a in apps]
72
+ res = json.dumps(apps_as_dicts)
73
+ args.console.print({"apps": res})
68
74
 
69
75
 
70
76
  def _add_list_parser(subparsers, parents):
@@ -85,6 +91,13 @@ def _add_list_parser(subparsers, parents):
85
91
  type=str,
86
92
  help="Filter applications by alias contents",
87
93
  )
94
+ parser.add_argument(
95
+ "--output",
96
+ type=str,
97
+ default="pretty",
98
+ choices=["pretty", "json"],
99
+ help="Modify the command output",
100
+ )
88
101
  parser.set_defaults(func=_list)
89
102
 
90
103
 
@@ -122,20 +122,28 @@ def _deploy_from_reference(
122
122
  # just replace .ai for .run
123
123
  endpoint_host = env_host.replace(".ai", ".run")
124
124
 
125
- args.console.print(
126
- "Registered a new revision for function "
127
- f"'{app_name}' (revision='{app_id}')."
128
- )
129
- args.console.print("Playground:")
130
- for endpoint in loaded.endpoints:
125
+ if args.output == "json":
131
126
  args.console.print(
132
- f"\thttps://{playground_host}/models/{user.username}/{app_name}{endpoint}"
127
+ {
128
+ "revision": app_id,
129
+ "app_name": app_name,
130
+ }
133
131
  )
134
- args.console.print("Endpoints:")
135
- for endpoint in loaded.endpoints:
132
+ elif args.output == "pretty":
136
133
  args.console.print(
137
- f"\thttps://{endpoint_host}/{user.username}/{app_name}{endpoint}"
134
+ "Registered a new revision for function "
135
+ f"'{app_name}' (revision='{app_id}')."
138
136
  )
137
+ args.console.print("Playground:")
138
+ for endpoint in loaded.endpoints:
139
+ args.console.print(
140
+ f"\thttps://{playground_host}/models/{user.username}/{app_name}{endpoint}"
141
+ )
142
+ args.console.print("Endpoints:")
143
+ for endpoint in loaded.endpoints:
144
+ args.console.print(
145
+ f"\thttps://{endpoint_host}/{user.username}/{app_name}{endpoint}"
146
+ )
139
147
 
140
148
 
141
149
  def _deploy(args):
@@ -245,5 +253,12 @@ def add_parser(main_subparsers, parents):
245
253
  dest="app_scale_settings",
246
254
  help="Use the application code for scale settings.",
247
255
  )
256
+ parser.add_argument(
257
+ "--output",
258
+ type=str,
259
+ default="pretty",
260
+ choices=["pretty", "json"],
261
+ help="Modify the command output",
262
+ )
248
263
 
249
264
  parser.set_defaults(func=_deploy)
@@ -84,15 +84,15 @@ def _try_with_fallback(
84
84
  fallback_save_kwargs: dict,
85
85
  ) -> Any:
86
86
  if fallback_repository is None:
87
- fallback_repositories = []
87
+ fallback_repository = []
88
88
  elif isinstance(fallback_repository, list):
89
- fallback_repositories = fallback_repository
89
+ pass
90
90
  else:
91
- fallback_repositories = [fallback_repository]
91
+ fallback_repository = [fallback_repository]
92
92
 
93
- attempts = [
93
+ attempts: list[tuple[FileRepository | RepositoryId, dict]] = [
94
94
  (repository, save_kwargs),
95
- *((fallback, fallback_save_kwargs) for fallback in fallback_repositories),
95
+ *((fallback, fallback_save_kwargs) for fallback in fallback_repository),
96
96
  ]
97
97
  for idx, (repo, kwargs) in enumerate(attempts):
98
98
  repo_obj = get_builtin_repository(repo)
@@ -204,6 +204,7 @@ class File(BaseModel):
204
204
  if request:
205
205
  object_lifecycle_preference = request_lifecycle_preference(request)
206
206
  else:
207
+ print("[WARNING] No request provided, using global lifecycle preference")
207
208
  object_lifecycle_preference = LIFECYCLE_PREFERENCE.get()
208
209
 
209
210
  save_kwargs.setdefault(
@@ -256,6 +257,7 @@ class File(BaseModel):
256
257
  if request:
257
258
  object_lifecycle_preference = request_lifecycle_preference(request)
258
259
  else:
260
+ print("[WARNING] No request provided, using global lifecycle preference")
259
261
  object_lifecycle_preference = LIFECYCLE_PREFERENCE.get()
260
262
 
261
263
  save_kwargs.setdefault(
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes