fal 1.0.0__tar.gz → 1.0.2__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 (127) hide show
  1. {fal-1.0.0 → fal-1.0.2}/PKG-INFO +1 -1
  2. {fal-1.0.0 → fal-1.0.2}/fal.egg-info/PKG-INFO +1 -1
  3. {fal-1.0.0 → fal-1.0.2}/src/fal/_fal_version.py +2 -2
  4. {fal-1.0.0 → fal-1.0.2}/src/fal/_serialization.py +4 -1
  5. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/apps.py +5 -1
  6. {fal-1.0.0 → fal-1.0.2}/tests/cli/test_apps.py +2 -1
  7. {fal-1.0.0 → fal-1.0.2}/tests/test_stability.py +34 -0
  8. {fal-1.0.0 → fal-1.0.2}/.gitignore +0 -0
  9. {fal-1.0.0 → fal-1.0.2}/README.md +0 -0
  10. {fal-1.0.0 → fal-1.0.2}/fal.egg-info/SOURCES.txt +0 -0
  11. {fal-1.0.0 → fal-1.0.2}/fal.egg-info/dependency_links.txt +0 -0
  12. {fal-1.0.0 → fal-1.0.2}/fal.egg-info/entry_points.txt +0 -0
  13. {fal-1.0.0 → fal-1.0.2}/fal.egg-info/requires.txt +0 -0
  14. {fal-1.0.0 → fal-1.0.2}/fal.egg-info/top_level.txt +0 -0
  15. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/README.md +0 -0
  16. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/__init__.py +0 -0
  17. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/__init__.py +0 -0
  18. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/applications/__init__.py +0 -0
  19. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/applications/app_metadata.py +0 -0
  20. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/billing/__init__.py +0 -0
  21. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/billing/get_user_details.py +0 -0
  22. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/files/__init__.py +0 -0
  23. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/files/check_dir_hash.py +0 -0
  24. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/files/upload_local_file.py +0 -0
  25. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/__init__.py +0 -0
  26. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/create_or_update_workflow_workflows_post.py +0 -0
  27. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/delete_workflow_workflows_user_id_workflow_name_delete.py +0 -0
  28. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/execute_workflow_workflows_user_id_workflow_name_post.py +0 -0
  29. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflow_workflows_user_id_workflow_name_get.py +0 -0
  30. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/api/workflows/get_workflows_workflows_get.py +0 -0
  31. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/client.py +0 -0
  32. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/errors.py +0 -0
  33. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/__init__.py +0 -0
  34. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/app_metadata_response_app_metadata.py +0 -0
  35. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/body_upload_local_file.py +0 -0
  36. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/customer_details.py +0 -0
  37. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/execute_workflow_workflows_user_id_workflow_name_post_json_body_type_0.py +0 -0
  38. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/execute_workflow_workflows_user_id_workflow_name_post_response_200_type_0.py +0 -0
  39. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/hash_check.py +0 -0
  40. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/http_validation_error.py +0 -0
  41. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/lock_reason.py +0 -0
  42. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/page_workflow_item.py +0 -0
  43. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/typed_workflow.py +0 -0
  44. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/validation_error.py +0 -0
  45. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents.py +0 -0
  46. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_nodes.py +0 -0
  47. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_contents_output.py +0 -0
  48. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail.py +0 -0
  49. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_detail_contents_type_0.py +0 -0
  50. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_item.py +0 -0
  51. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_node.py +0 -0
  52. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_node_type.py +0 -0
  53. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema.py +0 -0
  54. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_input.py +0 -0
  55. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/models/workflow_schema_output.py +0 -0
  56. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/py.typed +0 -0
  57. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/openapi_fal_rest/types.py +0 -0
  58. {fal-1.0.0 → fal-1.0.2}/openapi-fal-rest/pyproject.toml +0 -0
  59. {fal-1.0.0 → fal-1.0.2}/openapi_rest.config.yaml +0 -0
  60. {fal-1.0.0 → fal-1.0.2}/pyproject.toml +0 -0
  61. {fal-1.0.0 → fal-1.0.2}/setup.cfg +0 -0
  62. {fal-1.0.0 → fal-1.0.2}/src/fal/__init__.py +0 -0
  63. {fal-1.0.0 → fal-1.0.2}/src/fal/__main__.py +0 -0
  64. {fal-1.0.0 → fal-1.0.2}/src/fal/_version.py +0 -0
  65. {fal-1.0.0 → fal-1.0.2}/src/fal/api.py +0 -0
  66. {fal-1.0.0 → fal-1.0.2}/src/fal/app.py +0 -0
  67. {fal-1.0.0 → fal-1.0.2}/src/fal/apps.py +0 -0
  68. {fal-1.0.0 → fal-1.0.2}/src/fal/auth/__init__.py +0 -0
  69. {fal-1.0.0 → fal-1.0.2}/src/fal/auth/auth0.py +0 -0
  70. {fal-1.0.0 → fal-1.0.2}/src/fal/auth/local.py +0 -0
  71. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/__init__.py +0 -0
  72. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/auth.py +0 -0
  73. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/debug.py +0 -0
  74. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/deploy.py +0 -0
  75. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/keys.py +0 -0
  76. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/main.py +0 -0
  77. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/parser.py +0 -0
  78. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/run.py +0 -0
  79. {fal-1.0.0 → fal-1.0.2}/src/fal/cli/secrets.py +0 -0
  80. {fal-1.0.0 → fal-1.0.2}/src/fal/console/__init__.py +0 -0
  81. {fal-1.0.0 → fal-1.0.2}/src/fal/console/icons.py +0 -0
  82. {fal-1.0.0 → fal-1.0.2}/src/fal/console/ux.py +0 -0
  83. {fal-1.0.0 → fal-1.0.2}/src/fal/exceptions/__init__.py +0 -0
  84. {fal-1.0.0 → fal-1.0.2}/src/fal/exceptions/_base.py +0 -0
  85. {fal-1.0.0 → fal-1.0.2}/src/fal/exceptions/auth.py +0 -0
  86. {fal-1.0.0 → fal-1.0.2}/src/fal/flags.py +0 -0
  87. {fal-1.0.0 → fal-1.0.2}/src/fal/logging/__init__.py +0 -0
  88. {fal-1.0.0 → fal-1.0.2}/src/fal/logging/isolate.py +0 -0
  89. {fal-1.0.0 → fal-1.0.2}/src/fal/logging/style.py +0 -0
  90. {fal-1.0.0 → fal-1.0.2}/src/fal/logging/trace.py +0 -0
  91. {fal-1.0.0 → fal-1.0.2}/src/fal/logging/user.py +0 -0
  92. {fal-1.0.0 → fal-1.0.2}/src/fal/py.typed +0 -0
  93. {fal-1.0.0 → fal-1.0.2}/src/fal/rest_client.py +0 -0
  94. {fal-1.0.0 → fal-1.0.2}/src/fal/sdk.py +0 -0
  95. {fal-1.0.0 → fal-1.0.2}/src/fal/sync.py +0 -0
  96. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/__init__.py +0 -0
  97. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/exceptions.py +0 -0
  98. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/__init__.py +0 -0
  99. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/file.py +0 -0
  100. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/providers/fal.py +0 -0
  101. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/providers/gcp.py +0 -0
  102. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/providers/r2.py +0 -0
  103. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/file/types.py +0 -0
  104. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/image/__init__.py +0 -0
  105. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/image/image.py +0 -0
  106. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/optimize.py +0 -0
  107. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/utils/__init__.py +0 -0
  108. {fal-1.0.0 → fal-1.0.2}/src/fal/toolkit/utils/download_utils.py +0 -0
  109. {fal-1.0.0 → fal-1.0.2}/src/fal/utils.py +0 -0
  110. {fal-1.0.0 → fal-1.0.2}/src/fal/workflows.py +0 -0
  111. {fal-1.0.0 → fal-1.0.2}/tests/__init__.py +0 -0
  112. {fal-1.0.0 → fal-1.0.2}/tests/cli/__init__.py +0 -0
  113. {fal-1.0.0 → fal-1.0.2}/tests/cli/test_auth.py +0 -0
  114. {fal-1.0.0 → fal-1.0.2}/tests/cli/test_deploy.py +0 -0
  115. {fal-1.0.0 → fal-1.0.2}/tests/cli/test_keys.py +0 -0
  116. {fal-1.0.0 → fal-1.0.2}/tests/cli/test_run.py +0 -0
  117. {fal-1.0.0 → fal-1.0.2}/tests/cli/test_secrets.py +0 -0
  118. {fal-1.0.0 → fal-1.0.2}/tests/conftest.py +0 -0
  119. {fal-1.0.0 → fal-1.0.2}/tests/integration_test.py +0 -0
  120. {fal-1.0.0 → fal-1.0.2}/tests/mainify_package/__init__.py +0 -0
  121. {fal-1.0.0 → fal-1.0.2}/tests/mainify_package/impl.py +0 -0
  122. {fal-1.0.0 → fal-1.0.2}/tests/mainify_package/utils.py +0 -0
  123. {fal-1.0.0 → fal-1.0.2}/tests/mainify_target.py +0 -0
  124. {fal-1.0.0 → fal-1.0.2}/tests/test_apps.py +0 -0
  125. {fal-1.0.0 → fal-1.0.2}/tests/toolkit/file_test.py +0 -0
  126. {fal-1.0.0 → fal-1.0.2}/tests/toolkit/image_test.py +0 -0
  127. {fal-1.0.0 → fal-1.0.2}/tools/demo_script.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fal
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: fal is an easy-to-use Serverless Python Framework
5
5
  Author: Features & Labels <hello@fal.ai>
6
6
  Requires-Python: >=3.8
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fal
3
- Version: 1.0.0
3
+ Version: 1.0.2
4
4
  Summary: fal is an easy-to-use Serverless Python Framework
5
5
  Author: Features & Labels <hello@fal.ai>
6
6
  Requires-Python: >=3.8
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.0.0'
16
- __version_tuple__ = version_tuple = (1, 0, 0)
15
+ __version__ = version = '1.0.2'
16
+ __version_tuple__ = version_tuple = (1, 0, 2)
@@ -195,7 +195,10 @@ def _patch_rlock() -> None:
195
195
 
196
196
 
197
197
  def _patch_console_thread_locals() -> None:
198
- from rich.console import ConsoleThreadLocals
198
+ try:
199
+ from rich.console import ConsoleThreadLocals
200
+ except ModuleNotFoundError:
201
+ return
199
202
 
200
203
  def create_locals(kwargs: dict) -> ConsoleThreadLocals:
201
204
  return ConsoleThreadLocals(**kwargs)
@@ -117,7 +117,7 @@ def _scale(args):
117
117
  return
118
118
 
119
119
  alias_info = connection.update_application(
120
- application_name=args.app_alias,
120
+ application_name=args.app_name,
121
121
  keep_alive=args.keep_alive,
122
122
  max_multiplexing=args.max_multiplexing,
123
123
  max_concurrency=args.max_concurrency,
@@ -136,6 +136,10 @@ def _add_scale_parser(subparsers, parents):
136
136
  help=scale_help,
137
137
  parents=parents,
138
138
  )
139
+ parser.add_argument(
140
+ "app_name",
141
+ help="Application name.",
142
+ )
139
143
  parser.add_argument(
140
144
  "--keep-alive",
141
145
  type=int,
@@ -31,7 +31,7 @@ def test_set_rev():
31
31
  def test_scale():
32
32
  args = parse_args(
33
33
  [
34
- "apps", "scale",
34
+ "apps", "scale", "myapp",
35
35
  "--keep-alive", "123",
36
36
  "--max-multiplexing", "321",
37
37
  "--min-concurrency", "7",
@@ -39,6 +39,7 @@ def test_scale():
39
39
  ]
40
40
  )
41
41
  assert args.func == _scale
42
+ assert args.app_name == "myapp"
42
43
  assert args.keep_alive == 123
43
44
  assert args.max_multiplexing == 321
44
45
  assert args.min_concurrency == 7
@@ -67,6 +67,40 @@ def test_function_pipelining(isolated_client):
67
67
  assert calling_function(regular_function()) == 84
68
68
 
69
69
 
70
+ def test_function_exception(isolated_client):
71
+ class FooException(Exception):
72
+ pass
73
+
74
+ class BarException(Exception):
75
+ pass
76
+
77
+ class MyFuncException(Exception):
78
+ pass
79
+
80
+ def foo():
81
+ raise FooException("foo")
82
+
83
+ def bar():
84
+ try:
85
+ foo()
86
+ except Exception as exc:
87
+ raise BarException("bar") from exc
88
+
89
+ @isolated_client()
90
+ def myfunc():
91
+ try:
92
+ bar()
93
+ except Exception as exc:
94
+ raise MyFuncException("myfunc") from exc
95
+
96
+ with pytest.raises(MyFuncException) as excinfo:
97
+ myfunc()
98
+
99
+ bar_exc = excinfo.value.__cause__
100
+ assert isinstance(bar_exc, BarException)
101
+ assert isinstance(bar_exc.__cause__, FooException)
102
+
103
+
70
104
  @pytest.mark.xfail(reason="See https://github.com/fal-ai/fal/issues/169")
71
105
  def test_function_calling_other_function(isolated_client):
72
106
  try:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes