fal 1.0.8__py3-none-any.whl → 1.1.0__py3-none-any.whl

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 (45) hide show
  1. fal/_fal_version.py +2 -2
  2. fal/api.py +27 -26
  3. fal/cli/deploy.py +18 -8
  4. fal/workflows.py +1 -1
  5. {fal-1.0.8.dist-info → fal-1.1.0.dist-info}/METADATA +1 -1
  6. {fal-1.0.8.dist-info → fal-1.1.0.dist-info}/RECORD +44 -23
  7. {fal-1.0.8.dist-info → fal-1.1.0.dist-info}/WHEEL +1 -1
  8. openapi_fal_rest/api/comfy/__init__.py +0 -0
  9. openapi_fal_rest/api/comfy/create_workflow.py +172 -0
  10. openapi_fal_rest/api/comfy/delete_workflow.py +175 -0
  11. openapi_fal_rest/api/comfy/get_workflow.py +181 -0
  12. openapi_fal_rest/api/comfy/list_user_workflows.py +189 -0
  13. openapi_fal_rest/api/comfy/update_workflow.py +198 -0
  14. openapi_fal_rest/api/users/__init__.py +0 -0
  15. openapi_fal_rest/api/users/get_current_user.py +143 -0
  16. openapi_fal_rest/api/workflows/{create_or_update_workflow_workflows_post.py → create_workflow.py} +4 -4
  17. openapi_fal_rest/api/workflows/{get_workflows_workflows_get.py → list_user_workflows.py} +4 -4
  18. openapi_fal_rest/api/workflows/update_workflow.py +198 -0
  19. openapi_fal_rest/models/__init__.py +32 -10
  20. openapi_fal_rest/models/comfy_workflow_detail.py +109 -0
  21. openapi_fal_rest/models/comfy_workflow_item.py +88 -0
  22. openapi_fal_rest/models/comfy_workflow_schema.py +119 -0
  23. openapi_fal_rest/models/{execute_workflow_workflows_user_id_workflow_name_post_json_body_type_0.py → comfy_workflow_schema_extra_data.py} +5 -5
  24. openapi_fal_rest/models/{execute_workflow_workflows_user_id_workflow_name_post_response_200_type_0.py → comfy_workflow_schema_fal_inputs.py} +5 -5
  25. openapi_fal_rest/models/comfy_workflow_schema_fal_inputs_dev_info.py +44 -0
  26. openapi_fal_rest/models/{workflow_detail_contents_type_0.py → comfy_workflow_schema_prompt.py} +5 -5
  27. openapi_fal_rest/models/current_user.py +138 -0
  28. openapi_fal_rest/models/customer_details.py +8 -8
  29. openapi_fal_rest/models/lock_reason.py +3 -0
  30. openapi_fal_rest/models/page_comfy_workflow_item.py +107 -0
  31. openapi_fal_rest/models/team_role.py +10 -0
  32. openapi_fal_rest/models/typed_comfy_workflow.py +85 -0
  33. openapi_fal_rest/models/typed_comfy_workflow_update.py +95 -0
  34. openapi_fal_rest/models/typed_workflow_update.py +95 -0
  35. openapi_fal_rest/models/user_member.py +87 -0
  36. openapi_fal_rest/models/workflow_contents.py +20 -1
  37. openapi_fal_rest/models/workflow_contents_metadata.py +44 -0
  38. openapi_fal_rest/models/workflow_detail.py +18 -59
  39. openapi_fal_rest/models/workflow_detail_contents.py +44 -0
  40. openapi_fal_rest/models/workflow_item.py +19 -1
  41. openapi_fal_rest/api/workflows/execute_workflow_workflows_user_id_workflow_name_post.py +0 -268
  42. {fal-1.0.8.dist-info → fal-1.1.0.dist-info}/entry_points.txt +0 -0
  43. {fal-1.0.8.dist-info → fal-1.1.0.dist-info}/top_level.txt +0 -0
  44. /openapi_fal_rest/api/workflows/{delete_workflow_workflows_user_id_workflow_name_delete.py → delete_workflow.py} +0 -0
  45. /openapi_fal_rest/api/workflows/{get_workflow_workflows_user_id_workflow_name_get.py → get_workflow.py} +0 -0
@@ -0,0 +1,109 @@
1
+ import datetime
2
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar
3
+
4
+ import attr
5
+ from dateutil.parser import isoparse
6
+
7
+ if TYPE_CHECKING:
8
+ from ..models.comfy_workflow_schema import ComfyWorkflowSchema
9
+
10
+
11
+ T = TypeVar("T", bound="ComfyWorkflowDetail")
12
+
13
+
14
+ @attr.s(auto_attribs=True)
15
+ class ComfyWorkflowDetail:
16
+ """
17
+ Attributes:
18
+ created_at (datetime.datetime):
19
+ user_id (str):
20
+ workflow (ComfyWorkflowSchema):
21
+ is_public (bool):
22
+ title (str):
23
+ name (str):
24
+ user_nickname (str):
25
+ """
26
+
27
+ created_at: datetime.datetime
28
+ user_id: str
29
+ workflow: "ComfyWorkflowSchema"
30
+ is_public: bool
31
+ title: str
32
+ name: str
33
+ user_nickname: str
34
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
35
+
36
+ def to_dict(self) -> Dict[str, Any]:
37
+ created_at = self.created_at.isoformat()
38
+
39
+ user_id = self.user_id
40
+ workflow = self.workflow.to_dict()
41
+
42
+ is_public = self.is_public
43
+ title = self.title
44
+ name = self.name
45
+ user_nickname = self.user_nickname
46
+
47
+ field_dict: Dict[str, Any] = {}
48
+ field_dict.update(self.additional_properties)
49
+ field_dict.update(
50
+ {
51
+ "created_at": created_at,
52
+ "user_id": user_id,
53
+ "workflow": workflow,
54
+ "is_public": is_public,
55
+ "title": title,
56
+ "name": name,
57
+ "user_nickname": user_nickname,
58
+ }
59
+ )
60
+
61
+ return field_dict
62
+
63
+ @classmethod
64
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
65
+ from ..models.comfy_workflow_schema import ComfyWorkflowSchema
66
+
67
+ d = src_dict.copy()
68
+ created_at = isoparse(d.pop("created_at"))
69
+
70
+ user_id = d.pop("user_id")
71
+
72
+ workflow = ComfyWorkflowSchema.from_dict(d.pop("workflow"))
73
+
74
+ is_public = d.pop("is_public")
75
+
76
+ title = d.pop("title")
77
+
78
+ name = d.pop("name")
79
+
80
+ user_nickname = d.pop("user_nickname")
81
+
82
+ comfy_workflow_detail = cls(
83
+ created_at=created_at,
84
+ user_id=user_id,
85
+ workflow=workflow,
86
+ is_public=is_public,
87
+ title=title,
88
+ name=name,
89
+ user_nickname=user_nickname,
90
+ )
91
+
92
+ comfy_workflow_detail.additional_properties = d
93
+ return comfy_workflow_detail
94
+
95
+ @property
96
+ def additional_keys(self) -> List[str]:
97
+ return list(self.additional_properties.keys())
98
+
99
+ def __getitem__(self, key: str) -> Any:
100
+ return self.additional_properties[key]
101
+
102
+ def __setitem__(self, key: str, value: Any) -> None:
103
+ self.additional_properties[key] = value
104
+
105
+ def __delitem__(self, key: str) -> None:
106
+ del self.additional_properties[key]
107
+
108
+ def __contains__(self, key: str) -> bool:
109
+ return key in self.additional_properties
@@ -0,0 +1,88 @@
1
+ import datetime
2
+ from typing import Any, Dict, List, Type, TypeVar
3
+
4
+ import attr
5
+ from dateutil.parser import isoparse
6
+
7
+ T = TypeVar("T", bound="ComfyWorkflowItem")
8
+
9
+
10
+ @attr.s(auto_attribs=True)
11
+ class ComfyWorkflowItem:
12
+ """
13
+ Attributes:
14
+ name (str):
15
+ title (str):
16
+ user_id (str):
17
+ created_at (datetime.datetime):
18
+ user_nickname (str):
19
+ """
20
+
21
+ name: str
22
+ title: str
23
+ user_id: str
24
+ created_at: datetime.datetime
25
+ user_nickname: str
26
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> Dict[str, Any]:
29
+ name = self.name
30
+ title = self.title
31
+ user_id = self.user_id
32
+ created_at = self.created_at.isoformat()
33
+
34
+ user_nickname = self.user_nickname
35
+
36
+ field_dict: Dict[str, Any] = {}
37
+ field_dict.update(self.additional_properties)
38
+ field_dict.update(
39
+ {
40
+ "name": name,
41
+ "title": title,
42
+ "user_id": user_id,
43
+ "created_at": created_at,
44
+ "user_nickname": user_nickname,
45
+ }
46
+ )
47
+
48
+ return field_dict
49
+
50
+ @classmethod
51
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
52
+ d = src_dict.copy()
53
+ name = d.pop("name")
54
+
55
+ title = d.pop("title")
56
+
57
+ user_id = d.pop("user_id")
58
+
59
+ created_at = isoparse(d.pop("created_at"))
60
+
61
+ user_nickname = d.pop("user_nickname")
62
+
63
+ comfy_workflow_item = cls(
64
+ name=name,
65
+ title=title,
66
+ user_id=user_id,
67
+ created_at=created_at,
68
+ user_nickname=user_nickname,
69
+ )
70
+
71
+ comfy_workflow_item.additional_properties = d
72
+ return comfy_workflow_item
73
+
74
+ @property
75
+ def additional_keys(self) -> List[str]:
76
+ return list(self.additional_properties.keys())
77
+
78
+ def __getitem__(self, key: str) -> Any:
79
+ return self.additional_properties[key]
80
+
81
+ def __setitem__(self, key: str, value: Any) -> None:
82
+ self.additional_properties[key] = value
83
+
84
+ def __delitem__(self, key: str) -> None:
85
+ del self.additional_properties[key]
86
+
87
+ def __contains__(self, key: str) -> bool:
88
+ return key in self.additional_properties
@@ -0,0 +1,119 @@
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
2
+
3
+ import attr
4
+
5
+ from ..types import UNSET, Unset
6
+
7
+ if TYPE_CHECKING:
8
+ from ..models.comfy_workflow_schema_extra_data import ComfyWorkflowSchemaExtraData
9
+ from ..models.comfy_workflow_schema_fal_inputs import ComfyWorkflowSchemaFalInputs
10
+ from ..models.comfy_workflow_schema_fal_inputs_dev_info import ComfyWorkflowSchemaFalInputsDevInfo
11
+ from ..models.comfy_workflow_schema_prompt import ComfyWorkflowSchemaPrompt
12
+
13
+
14
+ T = TypeVar("T", bound="ComfyWorkflowSchema")
15
+
16
+
17
+ @attr.s(auto_attribs=True)
18
+ class ComfyWorkflowSchema:
19
+ """
20
+ Attributes:
21
+ prompt (ComfyWorkflowSchemaPrompt):
22
+ extra_data (Union[Unset, ComfyWorkflowSchemaExtraData]):
23
+ fal_inputs_dev_info (Union[Unset, ComfyWorkflowSchemaFalInputsDevInfo]):
24
+ fal_inputs (Union[Unset, ComfyWorkflowSchemaFalInputs]):
25
+ """
26
+
27
+ prompt: "ComfyWorkflowSchemaPrompt"
28
+ extra_data: Union[Unset, "ComfyWorkflowSchemaExtraData"] = UNSET
29
+ fal_inputs_dev_info: Union[Unset, "ComfyWorkflowSchemaFalInputsDevInfo"] = UNSET
30
+ fal_inputs: Union[Unset, "ComfyWorkflowSchemaFalInputs"] = UNSET
31
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> Dict[str, Any]:
34
+ prompt = self.prompt.to_dict()
35
+
36
+ extra_data: Union[Unset, Dict[str, Any]] = UNSET
37
+ if not isinstance(self.extra_data, Unset):
38
+ extra_data = self.extra_data.to_dict()
39
+
40
+ fal_inputs_dev_info: Union[Unset, Dict[str, Any]] = UNSET
41
+ if not isinstance(self.fal_inputs_dev_info, Unset):
42
+ fal_inputs_dev_info = self.fal_inputs_dev_info.to_dict()
43
+
44
+ fal_inputs: Union[Unset, Dict[str, Any]] = UNSET
45
+ if not isinstance(self.fal_inputs, Unset):
46
+ fal_inputs = self.fal_inputs.to_dict()
47
+
48
+ field_dict: Dict[str, Any] = {}
49
+ field_dict.update(self.additional_properties)
50
+ field_dict.update(
51
+ {
52
+ "prompt": prompt,
53
+ }
54
+ )
55
+ if extra_data is not UNSET:
56
+ field_dict["extra_data"] = extra_data
57
+ if fal_inputs_dev_info is not UNSET:
58
+ field_dict["fal_inputs_dev_info"] = fal_inputs_dev_info
59
+ if fal_inputs is not UNSET:
60
+ field_dict["fal_inputs"] = fal_inputs
61
+
62
+ return field_dict
63
+
64
+ @classmethod
65
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
66
+ from ..models.comfy_workflow_schema_extra_data import ComfyWorkflowSchemaExtraData
67
+ from ..models.comfy_workflow_schema_fal_inputs import ComfyWorkflowSchemaFalInputs
68
+ from ..models.comfy_workflow_schema_fal_inputs_dev_info import ComfyWorkflowSchemaFalInputsDevInfo
69
+ from ..models.comfy_workflow_schema_prompt import ComfyWorkflowSchemaPrompt
70
+
71
+ d = src_dict.copy()
72
+ prompt = ComfyWorkflowSchemaPrompt.from_dict(d.pop("prompt"))
73
+
74
+ _extra_data = d.pop("extra_data", UNSET)
75
+ extra_data: Union[Unset, ComfyWorkflowSchemaExtraData]
76
+ if isinstance(_extra_data, Unset):
77
+ extra_data = UNSET
78
+ else:
79
+ extra_data = ComfyWorkflowSchemaExtraData.from_dict(_extra_data)
80
+
81
+ _fal_inputs_dev_info = d.pop("fal_inputs_dev_info", UNSET)
82
+ fal_inputs_dev_info: Union[Unset, ComfyWorkflowSchemaFalInputsDevInfo]
83
+ if isinstance(_fal_inputs_dev_info, Unset):
84
+ fal_inputs_dev_info = UNSET
85
+ else:
86
+ fal_inputs_dev_info = ComfyWorkflowSchemaFalInputsDevInfo.from_dict(_fal_inputs_dev_info)
87
+
88
+ _fal_inputs = d.pop("fal_inputs", UNSET)
89
+ fal_inputs: Union[Unset, ComfyWorkflowSchemaFalInputs]
90
+ if isinstance(_fal_inputs, Unset):
91
+ fal_inputs = UNSET
92
+ else:
93
+ fal_inputs = ComfyWorkflowSchemaFalInputs.from_dict(_fal_inputs)
94
+
95
+ comfy_workflow_schema = cls(
96
+ prompt=prompt,
97
+ extra_data=extra_data,
98
+ fal_inputs_dev_info=fal_inputs_dev_info,
99
+ fal_inputs=fal_inputs,
100
+ )
101
+
102
+ comfy_workflow_schema.additional_properties = d
103
+ return comfy_workflow_schema
104
+
105
+ @property
106
+ def additional_keys(self) -> List[str]:
107
+ return list(self.additional_properties.keys())
108
+
109
+ def __getitem__(self, key: str) -> Any:
110
+ return self.additional_properties[key]
111
+
112
+ def __setitem__(self, key: str, value: Any) -> None:
113
+ self.additional_properties[key] = value
114
+
115
+ def __delitem__(self, key: str) -> None:
116
+ del self.additional_properties[key]
117
+
118
+ def __contains__(self, key: str) -> bool:
119
+ return key in self.additional_properties
@@ -2,11 +2,11 @@ from typing import Any, Dict, List, Type, TypeVar
2
2
 
3
3
  import attr
4
4
 
5
- T = TypeVar("T", bound="ExecuteWorkflowWorkflowsUserIdWorkflowNamePostJsonBodyType0")
5
+ T = TypeVar("T", bound="ComfyWorkflowSchemaExtraData")
6
6
 
7
7
 
8
8
  @attr.s(auto_attribs=True)
9
- class ExecuteWorkflowWorkflowsUserIdWorkflowNamePostJsonBodyType0:
9
+ class ComfyWorkflowSchemaExtraData:
10
10
  """ """
11
11
 
12
12
  additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
@@ -22,10 +22,10 @@ class ExecuteWorkflowWorkflowsUserIdWorkflowNamePostJsonBodyType0:
22
22
  @classmethod
23
23
  def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
24
24
  d = src_dict.copy()
25
- execute_workflow_workflows_user_id_workflow_name_post_json_body_type_0 = cls()
25
+ comfy_workflow_schema_extra_data = cls()
26
26
 
27
- execute_workflow_workflows_user_id_workflow_name_post_json_body_type_0.additional_properties = d
28
- return execute_workflow_workflows_user_id_workflow_name_post_json_body_type_0
27
+ comfy_workflow_schema_extra_data.additional_properties = d
28
+ return comfy_workflow_schema_extra_data
29
29
 
30
30
  @property
31
31
  def additional_keys(self) -> List[str]:
@@ -2,11 +2,11 @@ from typing import Any, Dict, List, Type, TypeVar
2
2
 
3
3
  import attr
4
4
 
5
- T = TypeVar("T", bound="ExecuteWorkflowWorkflowsUserIdWorkflowNamePostResponse200Type0")
5
+ T = TypeVar("T", bound="ComfyWorkflowSchemaFalInputs")
6
6
 
7
7
 
8
8
  @attr.s(auto_attribs=True)
9
- class ExecuteWorkflowWorkflowsUserIdWorkflowNamePostResponse200Type0:
9
+ class ComfyWorkflowSchemaFalInputs:
10
10
  """ """
11
11
 
12
12
  additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
@@ -22,10 +22,10 @@ class ExecuteWorkflowWorkflowsUserIdWorkflowNamePostResponse200Type0:
22
22
  @classmethod
23
23
  def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
24
24
  d = src_dict.copy()
25
- execute_workflow_workflows_user_id_workflow_name_post_response_200_type_0 = cls()
25
+ comfy_workflow_schema_fal_inputs = cls()
26
26
 
27
- execute_workflow_workflows_user_id_workflow_name_post_response_200_type_0.additional_properties = d
28
- return execute_workflow_workflows_user_id_workflow_name_post_response_200_type_0
27
+ comfy_workflow_schema_fal_inputs.additional_properties = d
28
+ return comfy_workflow_schema_fal_inputs
29
29
 
30
30
  @property
31
31
  def additional_keys(self) -> List[str]:
@@ -0,0 +1,44 @@
1
+ from typing import Any, Dict, List, Type, TypeVar
2
+
3
+ import attr
4
+
5
+ T = TypeVar("T", bound="ComfyWorkflowSchemaFalInputsDevInfo")
6
+
7
+
8
+ @attr.s(auto_attribs=True)
9
+ class ComfyWorkflowSchemaFalInputsDevInfo:
10
+ """ """
11
+
12
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
13
+
14
+ def to_dict(self) -> Dict[str, Any]:
15
+
16
+ field_dict: Dict[str, Any] = {}
17
+ field_dict.update(self.additional_properties)
18
+ field_dict.update({})
19
+
20
+ return field_dict
21
+
22
+ @classmethod
23
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
24
+ d = src_dict.copy()
25
+ comfy_workflow_schema_fal_inputs_dev_info = cls()
26
+
27
+ comfy_workflow_schema_fal_inputs_dev_info.additional_properties = d
28
+ return comfy_workflow_schema_fal_inputs_dev_info
29
+
30
+ @property
31
+ def additional_keys(self) -> List[str]:
32
+ return list(self.additional_properties.keys())
33
+
34
+ def __getitem__(self, key: str) -> Any:
35
+ return self.additional_properties[key]
36
+
37
+ def __setitem__(self, key: str, value: Any) -> None:
38
+ self.additional_properties[key] = value
39
+
40
+ def __delitem__(self, key: str) -> None:
41
+ del self.additional_properties[key]
42
+
43
+ def __contains__(self, key: str) -> bool:
44
+ return key in self.additional_properties
@@ -2,11 +2,11 @@ from typing import Any, Dict, List, Type, TypeVar
2
2
 
3
3
  import attr
4
4
 
5
- T = TypeVar("T", bound="WorkflowDetailContentsType0")
5
+ T = TypeVar("T", bound="ComfyWorkflowSchemaPrompt")
6
6
 
7
7
 
8
8
  @attr.s(auto_attribs=True)
9
- class WorkflowDetailContentsType0:
9
+ class ComfyWorkflowSchemaPrompt:
10
10
  """ """
11
11
 
12
12
  additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
@@ -22,10 +22,10 @@ class WorkflowDetailContentsType0:
22
22
  @classmethod
23
23
  def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
24
24
  d = src_dict.copy()
25
- workflow_detail_contents_type_0 = cls()
25
+ comfy_workflow_schema_prompt = cls()
26
26
 
27
- workflow_detail_contents_type_0.additional_properties = d
28
- return workflow_detail_contents_type_0
27
+ comfy_workflow_schema_prompt.additional_properties = d
28
+ return comfy_workflow_schema_prompt
29
29
 
30
30
  @property
31
31
  def additional_keys(self) -> List[str]:
@@ -0,0 +1,138 @@
1
+ from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union
2
+
3
+ import attr
4
+
5
+ from ..models.lock_reason import LockReason
6
+ from ..types import UNSET, Unset
7
+
8
+ if TYPE_CHECKING:
9
+ from ..models.user_member import UserMember
10
+
11
+
12
+ T = TypeVar("T", bound="CurrentUser")
13
+
14
+
15
+ @attr.s(auto_attribs=True)
16
+ class CurrentUser:
17
+ """
18
+ Attributes:
19
+ full_name (str):
20
+ nickname (str):
21
+ user_id (str):
22
+ is_personal (bool):
23
+ is_locked (bool):
24
+ lock_reason (Union[Unset, LockReason]): An enumeration.
25
+ members (Union[Unset, List['UserMember']]):
26
+ is_paying (Union[Unset, bool]):
27
+ """
28
+
29
+ full_name: str
30
+ nickname: str
31
+ user_id: str
32
+ is_personal: bool
33
+ is_locked: bool
34
+ lock_reason: Union[Unset, LockReason] = UNSET
35
+ members: Union[Unset, List["UserMember"]] = UNSET
36
+ is_paying: Union[Unset, bool] = False
37
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
38
+
39
+ def to_dict(self) -> Dict[str, Any]:
40
+ full_name = self.full_name
41
+ nickname = self.nickname
42
+ user_id = self.user_id
43
+ is_personal = self.is_personal
44
+ is_locked = self.is_locked
45
+ lock_reason: Union[Unset, str] = UNSET
46
+ if not isinstance(self.lock_reason, Unset):
47
+ lock_reason = self.lock_reason.value
48
+
49
+ members: Union[Unset, List[Dict[str, Any]]] = UNSET
50
+ if not isinstance(self.members, Unset):
51
+ members = []
52
+ for members_item_data in self.members:
53
+ members_item = members_item_data.to_dict()
54
+
55
+ members.append(members_item)
56
+
57
+ is_paying = self.is_paying
58
+
59
+ field_dict: Dict[str, Any] = {}
60
+ field_dict.update(self.additional_properties)
61
+ field_dict.update(
62
+ {
63
+ "full_name": full_name,
64
+ "nickname": nickname,
65
+ "user_id": user_id,
66
+ "is_personal": is_personal,
67
+ "is_locked": is_locked,
68
+ }
69
+ )
70
+ if lock_reason is not UNSET:
71
+ field_dict["lock_reason"] = lock_reason
72
+ if members is not UNSET:
73
+ field_dict["members"] = members
74
+ if is_paying is not UNSET:
75
+ field_dict["is_paying"] = is_paying
76
+
77
+ return field_dict
78
+
79
+ @classmethod
80
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
81
+ from ..models.user_member import UserMember
82
+
83
+ d = src_dict.copy()
84
+ full_name = d.pop("full_name")
85
+
86
+ nickname = d.pop("nickname")
87
+
88
+ user_id = d.pop("user_id")
89
+
90
+ is_personal = d.pop("is_personal")
91
+
92
+ is_locked = d.pop("is_locked")
93
+
94
+ _lock_reason = d.pop("lock_reason", UNSET)
95
+ lock_reason: Union[Unset, LockReason]
96
+ if _lock_reason is None or isinstance(_lock_reason, Unset):
97
+ lock_reason = UNSET
98
+ else:
99
+ lock_reason = LockReason(_lock_reason)
100
+
101
+ members = []
102
+ _members = d.pop("members", UNSET)
103
+ for members_item_data in _members or []:
104
+ members_item = UserMember.from_dict(members_item_data)
105
+
106
+ members.append(members_item)
107
+
108
+ is_paying = d.pop("is_paying", UNSET)
109
+
110
+ current_user = cls(
111
+ full_name=full_name,
112
+ nickname=nickname,
113
+ user_id=user_id,
114
+ is_personal=is_personal,
115
+ is_locked=is_locked,
116
+ lock_reason=lock_reason,
117
+ members=members,
118
+ is_paying=is_paying,
119
+ )
120
+
121
+ current_user.additional_properties = d
122
+ return current_user
123
+
124
+ @property
125
+ def additional_keys(self) -> List[str]:
126
+ return list(self.additional_properties.keys())
127
+
128
+ def __getitem__(self, key: str) -> Any:
129
+ return self.additional_properties[key]
130
+
131
+ def __setitem__(self, key: str, value: Any) -> None:
132
+ self.additional_properties[key] = value
133
+
134
+ def __delitem__(self, key: str) -> None:
135
+ del self.additional_properties[key]
136
+
137
+ def __contains__(self, key: str) -> bool:
138
+ return key in self.additional_properties
@@ -16,18 +16,18 @@ class CustomerDetails:
16
16
  soft_monthly_budget (Union[Unset, int]):
17
17
  hard_monthly_budget (Union[Unset, int]):
18
18
  lock_reason (Union[Unset, None, LockReason]): An enumeration.
19
- current_balance (Union[Unset, int]):
20
19
  is_paying (Union[Unset, bool]):
21
20
  is_locked (Union[Unset, bool]):
21
+ is_eligible_for_extra_credits (Union[Unset, bool]):
22
22
  """
23
23
 
24
24
  user_id: str
25
25
  soft_monthly_budget: Union[Unset, int] = UNSET
26
26
  hard_monthly_budget: Union[Unset, int] = UNSET
27
27
  lock_reason: Union[Unset, None, LockReason] = UNSET
28
- current_balance: Union[Unset, int] = 0
29
28
  is_paying: Union[Unset, bool] = False
30
29
  is_locked: Union[Unset, bool] = False
30
+ is_eligible_for_extra_credits: Union[Unset, bool] = False
31
31
  additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
32
32
 
33
33
  def to_dict(self) -> Dict[str, Any]:
@@ -38,9 +38,9 @@ class CustomerDetails:
38
38
  if not isinstance(self.lock_reason, Unset):
39
39
  lock_reason = self.lock_reason.value if self.lock_reason else None
40
40
 
41
- current_balance = self.current_balance
42
41
  is_paying = self.is_paying
43
42
  is_locked = self.is_locked
43
+ is_eligible_for_extra_credits = self.is_eligible_for_extra_credits
44
44
 
45
45
  field_dict: Dict[str, Any] = {}
46
46
  field_dict.update(self.additional_properties)
@@ -55,12 +55,12 @@ class CustomerDetails:
55
55
  field_dict["hard_monthly_budget"] = hard_monthly_budget
56
56
  if lock_reason is not UNSET:
57
57
  field_dict["lock_reason"] = lock_reason
58
- if current_balance is not UNSET:
59
- field_dict["current_balance"] = current_balance
60
58
  if is_paying is not UNSET:
61
59
  field_dict["is_paying"] = is_paying
62
60
  if is_locked is not UNSET:
63
61
  field_dict["is_locked"] = is_locked
62
+ if is_eligible_for_extra_credits is not UNSET:
63
+ field_dict["is_eligible_for_extra_credits"] = is_eligible_for_extra_credits
64
64
 
65
65
  return field_dict
66
66
 
@@ -82,20 +82,20 @@ class CustomerDetails:
82
82
  else:
83
83
  lock_reason = LockReason(_lock_reason)
84
84
 
85
- current_balance = d.pop("current_balance", UNSET)
86
-
87
85
  is_paying = d.pop("is_paying", UNSET)
88
86
 
89
87
  is_locked = d.pop("is_locked", UNSET)
90
88
 
89
+ is_eligible_for_extra_credits = d.pop("is_eligible_for_extra_credits", UNSET)
90
+
91
91
  customer_details = cls(
92
92
  user_id=user_id,
93
93
  soft_monthly_budget=soft_monthly_budget,
94
94
  hard_monthly_budget=hard_monthly_budget,
95
95
  lock_reason=lock_reason,
96
- current_balance=current_balance,
97
96
  is_paying=is_paying,
98
97
  is_locked=is_locked,
98
+ is_eligible_for_extra_credits=is_eligible_for_extra_credits,
99
99
  )
100
100
 
101
101
  customer_details.additional_properties = d
@@ -7,6 +7,9 @@ class LockReason(str, Enum):
7
7
  "Exhausted balance. Top up your balance at fal.ai/dashboard/billing"
8
8
  )
9
9
  PLEASE_ADD_A_PAYMENT_METHOD_AT_FAL_AIDASHBOARDBILLING = "Please add a payment method at fal.ai/dashboard/billing"
10
+ THIS_ACCOUNT_HAS_BEEN_ARCHIVED_PLEASE_CONTACT_HELLOFAL_AI = (
11
+ "This account has been archived. Please contact hello@fal.ai."
12
+ )
10
13
  UNKNOWN_PLEASE_CONTACT_HELLOFAL_AI = "Unknown. Please contact hello@fal.ai."
11
14
  USER_BUDGET_IS_EXCEEDED_ADJUST_IT_AT_FAL_AIDASHBOARDBILLING = (
12
15
  "User budget is exceeded. Adjust it at fal.ai/dashboard/billing"