blaxel 0.64.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.
Files changed (261) hide show
  1. blaxel/__init__.py +8 -0
  2. blaxel/agents/__init__.py +5 -0
  3. blaxel/agents/chain.py +153 -0
  4. blaxel/agents/chat.py +286 -0
  5. blaxel/agents/decorator.py +208 -0
  6. blaxel/agents/thread.py +24 -0
  7. blaxel/agents/voice/openai.py +255 -0
  8. blaxel/agents/voice/utils.py +25 -0
  9. blaxel/api/__init__.py +1 -0
  10. blaxel/api/agents/__init__.py +0 -0
  11. blaxel/api/agents/create_agent.py +155 -0
  12. blaxel/api/agents/delete_agent.py +146 -0
  13. blaxel/api/agents/get_agent.py +146 -0
  14. blaxel/api/agents/get_agent_logs.py +151 -0
  15. blaxel/api/agents/get_agent_metrics.py +150 -0
  16. blaxel/api/agents/get_agent_trace_ids.py +201 -0
  17. blaxel/api/agents/list_agent_revisions.py +155 -0
  18. blaxel/api/agents/list_agents.py +127 -0
  19. blaxel/api/agents/update_agent.py +168 -0
  20. blaxel/api/configurations/__init__.py +0 -0
  21. blaxel/api/configurations/get_configuration.py +122 -0
  22. blaxel/api/default/__init__.py +0 -0
  23. blaxel/api/default/get_trace.py +150 -0
  24. blaxel/api/default/get_trace_ids.py +218 -0
  25. blaxel/api/default/get_trace_logs.py +186 -0
  26. blaxel/api/default/list_mcp_hub_definitions.py +127 -0
  27. blaxel/api/functions/__init__.py +0 -0
  28. blaxel/api/functions/create_function.py +155 -0
  29. blaxel/api/functions/delete_function.py +146 -0
  30. blaxel/api/functions/get_function.py +146 -0
  31. blaxel/api/functions/get_function_logs.py +151 -0
  32. blaxel/api/functions/get_function_metrics.py +150 -0
  33. blaxel/api/functions/get_function_trace_ids.py +201 -0
  34. blaxel/api/functions/list_function_revisions.py +158 -0
  35. blaxel/api/functions/list_functions.py +131 -0
  36. blaxel/api/functions/update_function.py +168 -0
  37. blaxel/api/integrations/__init__.py +0 -0
  38. blaxel/api/integrations/create_integration_connection.py +167 -0
  39. blaxel/api/integrations/delete_integration_connection.py +158 -0
  40. blaxel/api/integrations/get_integration.py +97 -0
  41. blaxel/api/integrations/get_integration_connection.py +158 -0
  42. blaxel/api/integrations/get_integration_connection_model.py +104 -0
  43. blaxel/api/integrations/get_integration_connection_model_endpoint_configurations.py +97 -0
  44. blaxel/api/integrations/list_integration_connection_models.py +97 -0
  45. blaxel/api/integrations/list_integration_connections.py +139 -0
  46. blaxel/api/integrations/update_integration_connection.py +180 -0
  47. blaxel/api/invitations/__init__.py +0 -0
  48. blaxel/api/invitations/list_all_pending_invitations.py +142 -0
  49. blaxel/api/knowledgebases/__init__.py +0 -0
  50. blaxel/api/knowledgebases/create_knowledgebase.py +163 -0
  51. blaxel/api/knowledgebases/delete_knowledgebase.py +154 -0
  52. blaxel/api/knowledgebases/get_knowledgebase.py +154 -0
  53. blaxel/api/knowledgebases/list_knowledgebase_revisions.py +158 -0
  54. blaxel/api/knowledgebases/list_knowledgebases.py +139 -0
  55. blaxel/api/knowledgebases/update_knowledgebase.py +176 -0
  56. blaxel/api/locations/__init__.py +0 -0
  57. blaxel/api/locations/list_locations.py +139 -0
  58. blaxel/api/metrics/__init__.py +0 -0
  59. blaxel/api/metrics/get_metrics.py +130 -0
  60. blaxel/api/models/__init__.py +0 -0
  61. blaxel/api/models/create_model.py +163 -0
  62. blaxel/api/models/delete_model.py +154 -0
  63. blaxel/api/models/get_model.py +154 -0
  64. blaxel/api/models/get_model_logs.py +155 -0
  65. blaxel/api/models/get_model_metrics.py +158 -0
  66. blaxel/api/models/get_model_trace_ids.py +201 -0
  67. blaxel/api/models/list_model_revisions.py +158 -0
  68. blaxel/api/models/list_models.py +135 -0
  69. blaxel/api/models/update_model.py +176 -0
  70. blaxel/api/policies/__init__.py +0 -0
  71. blaxel/api/policies/create_policy.py +167 -0
  72. blaxel/api/policies/delete_policy.py +154 -0
  73. blaxel/api/policies/get_policy.py +154 -0
  74. blaxel/api/policies/list_policies.py +139 -0
  75. blaxel/api/policies/update_policy.py +180 -0
  76. blaxel/api/privateclusters/__init__.py +0 -0
  77. blaxel/api/privateclusters/create_private_cluster.py +132 -0
  78. blaxel/api/privateclusters/delete_private_cluster.py +156 -0
  79. blaxel/api/privateclusters/get_private_cluster.py +159 -0
  80. blaxel/api/privateclusters/get_private_cluster_health.py +97 -0
  81. blaxel/api/privateclusters/list_private_clusters.py +140 -0
  82. blaxel/api/privateclusters/update_private_cluster.py +156 -0
  83. blaxel/api/privateclusters/update_private_cluster_health.py +97 -0
  84. blaxel/api/service_accounts/__init__.py +0 -0
  85. blaxel/api/service_accounts/create_api_key_for_service_account.py +177 -0
  86. blaxel/api/service_accounts/create_workspace_service_account.py +170 -0
  87. blaxel/api/service_accounts/delete_api_key_for_service_account.py +104 -0
  88. blaxel/api/service_accounts/delete_workspace_service_account.py +160 -0
  89. blaxel/api/service_accounts/get_workspace_service_accounts.py +141 -0
  90. blaxel/api/service_accounts/list_api_keys_for_service_account.py +163 -0
  91. blaxel/api/service_accounts/update_workspace_service_account.py +183 -0
  92. blaxel/api/store/__init__.py +0 -0
  93. blaxel/api/store/get_store_agent.py +146 -0
  94. blaxel/api/store/get_store_function.py +146 -0
  95. blaxel/api/store/list_store_agents.py +131 -0
  96. blaxel/api/store/list_store_functions.py +131 -0
  97. blaxel/api/workspaces/__init__.py +0 -0
  98. blaxel/api/workspaces/accept_workspace_invitation.py +161 -0
  99. blaxel/api/workspaces/create_worspace.py +163 -0
  100. blaxel/api/workspaces/decline_workspace_invitation.py +158 -0
  101. blaxel/api/workspaces/delete_workspace.py +154 -0
  102. blaxel/api/workspaces/get_workspace.py +154 -0
  103. blaxel/api/workspaces/invite_workspace_user.py +174 -0
  104. blaxel/api/workspaces/leave_workspace.py +161 -0
  105. blaxel/api/workspaces/list_workspace_users.py +139 -0
  106. blaxel/api/workspaces/list_workspaces.py +139 -0
  107. blaxel/api/workspaces/remove_workspace_user.py +101 -0
  108. blaxel/api/workspaces/update_workspace.py +176 -0
  109. blaxel/api/workspaces/update_workspace_user_role.py +187 -0
  110. blaxel/authentication/__init__.py +45 -0
  111. blaxel/authentication/apikey.py +50 -0
  112. blaxel/authentication/authentication.py +176 -0
  113. blaxel/authentication/clientcredentials.py +103 -0
  114. blaxel/authentication/credentials.py +295 -0
  115. blaxel/authentication/device_mode.py +197 -0
  116. blaxel/client.py +281 -0
  117. blaxel/common/__init__.py +17 -0
  118. blaxel/common/error.py +27 -0
  119. blaxel/common/instrumentation.py +317 -0
  120. blaxel/common/logger.py +60 -0
  121. blaxel/common/secrets.py +39 -0
  122. blaxel/common/settings.py +150 -0
  123. blaxel/common/slugify.py +18 -0
  124. blaxel/common/utils.py +34 -0
  125. blaxel/deploy/__init__.py +8 -0
  126. blaxel/deploy/deploy.py +316 -0
  127. blaxel/deploy/format.py +46 -0
  128. blaxel/deploy/parser.py +192 -0
  129. blaxel/errors.py +16 -0
  130. blaxel/functions/__init__.py +7 -0
  131. blaxel/functions/common.py +228 -0
  132. blaxel/functions/decorator.py +64 -0
  133. blaxel/functions/local/local.py +48 -0
  134. blaxel/functions/mcp/client.py +96 -0
  135. blaxel/functions/mcp/mcp.py +168 -0
  136. blaxel/functions/mcp/utils.py +56 -0
  137. blaxel/functions/remote/remote.py +183 -0
  138. blaxel/models/__init__.py +233 -0
  139. blaxel/models/acl.py +133 -0
  140. blaxel/models/agent.py +126 -0
  141. blaxel/models/agent_chain.py +88 -0
  142. blaxel/models/agent_spec.py +346 -0
  143. blaxel/models/api_key.py +142 -0
  144. blaxel/models/configuration.py +85 -0
  145. blaxel/models/continent.py +70 -0
  146. blaxel/models/core_event.py +97 -0
  147. blaxel/models/core_spec.py +249 -0
  148. blaxel/models/core_spec_configurations.py +77 -0
  149. blaxel/models/country.py +70 -0
  150. blaxel/models/create_api_key_for_service_account_body.py +69 -0
  151. blaxel/models/create_workspace_service_account_body.py +71 -0
  152. blaxel/models/create_workspace_service_account_response_200.py +105 -0
  153. blaxel/models/delete_workspace_service_account_response_200.py +96 -0
  154. blaxel/models/entrypoint.py +96 -0
  155. blaxel/models/entrypoint_env.py +45 -0
  156. blaxel/models/flavor.py +70 -0
  157. blaxel/models/form.py +120 -0
  158. blaxel/models/form_config.py +45 -0
  159. blaxel/models/form_oauthomitempty.py +45 -0
  160. blaxel/models/form_secrets.py +45 -0
  161. blaxel/models/function.py +126 -0
  162. blaxel/models/function_kit.py +97 -0
  163. blaxel/models/function_spec.py +310 -0
  164. blaxel/models/get_trace_ids_response_200.py +45 -0
  165. blaxel/models/get_trace_logs_response_200.py +45 -0
  166. blaxel/models/get_trace_response_200.py +45 -0
  167. blaxel/models/get_workspace_service_accounts_response_200_item.py +96 -0
  168. blaxel/models/histogram_bucket.py +79 -0
  169. blaxel/models/histogram_stats.py +88 -0
  170. blaxel/models/integration_connection.py +96 -0
  171. blaxel/models/integration_connection_spec.py +114 -0
  172. blaxel/models/integration_connection_spec_config.py +45 -0
  173. blaxel/models/integration_connection_spec_secret.py +45 -0
  174. blaxel/models/integration_model.py +162 -0
  175. blaxel/models/integration_repository.py +88 -0
  176. blaxel/models/invite_workspace_user_body.py +60 -0
  177. blaxel/models/knowledgebase.py +126 -0
  178. blaxel/models/knowledgebase_spec.py +163 -0
  179. blaxel/models/knowledgebase_spec_options.py +45 -0
  180. blaxel/models/last_n_requests_metric.py +79 -0
  181. blaxel/models/latency_metric.py +144 -0
  182. blaxel/models/location_response.py +113 -0
  183. blaxel/models/mcp_definition.py +188 -0
  184. blaxel/models/mcp_definition_entrypoint.py +45 -0
  185. blaxel/models/mcp_definition_form.py +45 -0
  186. blaxel/models/metadata.py +139 -0
  187. blaxel/models/metadata_labels.py +45 -0
  188. blaxel/models/metric.py +79 -0
  189. blaxel/models/metrics.py +169 -0
  190. blaxel/models/metrics_models.py +45 -0
  191. blaxel/models/metrics_request_total_per_code.py +45 -0
  192. blaxel/models/metrics_rps_per_code.py +45 -0
  193. blaxel/models/model.py +126 -0
  194. blaxel/models/model_private_cluster.py +79 -0
  195. blaxel/models/model_spec.py +249 -0
  196. blaxel/models/o_auth.py +72 -0
  197. blaxel/models/owner_fields.py +70 -0
  198. blaxel/models/pending_invitation.py +124 -0
  199. blaxel/models/pending_invitation_accept.py +85 -0
  200. blaxel/models/pending_invitation_render.py +147 -0
  201. blaxel/models/pending_invitation_render_invited_by.py +88 -0
  202. blaxel/models/pending_invitation_render_workspace.py +70 -0
  203. blaxel/models/pending_invitation_workspace_details.py +72 -0
  204. blaxel/models/pod_template_spec.py +45 -0
  205. blaxel/models/policy.py +96 -0
  206. blaxel/models/policy_location.py +70 -0
  207. blaxel/models/policy_max_tokens.py +106 -0
  208. blaxel/models/policy_spec.py +151 -0
  209. blaxel/models/private_cluster.py +183 -0
  210. blaxel/models/private_location.py +61 -0
  211. blaxel/models/repository.py +70 -0
  212. blaxel/models/request_duration_over_time_metric.py +97 -0
  213. blaxel/models/request_duration_over_time_metrics.py +80 -0
  214. blaxel/models/request_total_by_origin_metric.py +115 -0
  215. blaxel/models/request_total_by_origin_metric_request_total_by_origin.py +45 -0
  216. blaxel/models/request_total_by_origin_metric_request_total_by_origin_and_code.py +45 -0
  217. blaxel/models/request_total_metric.py +123 -0
  218. blaxel/models/request_total_metric_request_total_per_code.py +45 -0
  219. blaxel/models/request_total_metric_rps_per_code.py +45 -0
  220. blaxel/models/resource_log.py +79 -0
  221. blaxel/models/resource_metrics.py +270 -0
  222. blaxel/models/resource_metrics_request_total_per_code.py +45 -0
  223. blaxel/models/resource_metrics_rps_per_code.py +45 -0
  224. blaxel/models/revision_configuration.py +97 -0
  225. blaxel/models/revision_metadata.py +124 -0
  226. blaxel/models/runtime.py +196 -0
  227. blaxel/models/runtime_startup_probe.py +45 -0
  228. blaxel/models/serverless_config.py +80 -0
  229. blaxel/models/spec_configuration.py +70 -0
  230. blaxel/models/store_agent.py +178 -0
  231. blaxel/models/store_agent_labels.py +45 -0
  232. blaxel/models/store_configuration.py +151 -0
  233. blaxel/models/store_configuration_option.py +79 -0
  234. blaxel/models/store_function.py +211 -0
  235. blaxel/models/store_function_kit.py +97 -0
  236. blaxel/models/store_function_labels.py +45 -0
  237. blaxel/models/store_function_parameter.py +88 -0
  238. blaxel/models/time_fields.py +70 -0
  239. blaxel/models/token_rate_metric.py +88 -0
  240. blaxel/models/token_rate_metrics.py +120 -0
  241. blaxel/models/token_total_metric.py +106 -0
  242. blaxel/models/trace_ids_response.py +45 -0
  243. blaxel/models/update_workspace_service_account_body.py +69 -0
  244. blaxel/models/update_workspace_service_account_response_200.py +96 -0
  245. blaxel/models/update_workspace_user_role_body.py +60 -0
  246. blaxel/models/websocket_channel.py +88 -0
  247. blaxel/models/workspace.py +148 -0
  248. blaxel/models/workspace_labels.py +45 -0
  249. blaxel/models/workspace_user.py +115 -0
  250. blaxel/py.typed +1 -0
  251. blaxel/run.py +108 -0
  252. blaxel/serve/app.py +131 -0
  253. blaxel/serve/middlewares/__init__.py +10 -0
  254. blaxel/serve/middlewares/accesslog.py +32 -0
  255. blaxel/serve/middlewares/processtime.py +28 -0
  256. blaxel/types.py +46 -0
  257. blaxel-0.64.0.dist-info/METADATA +96 -0
  258. blaxel-0.64.0.dist-info/RECORD +261 -0
  259. blaxel-0.64.0.dist-info/WHEEL +4 -0
  260. blaxel-0.64.0.dist-info/entry_points.txt +2 -0
  261. blaxel-0.64.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,147 @@
1
+ from typing import TYPE_CHECKING, Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ if TYPE_CHECKING:
9
+ from ..models.pending_invitation_render_invited_by import PendingInvitationRenderInvitedBy
10
+ from ..models.pending_invitation_render_workspace import PendingInvitationRenderWorkspace
11
+ from ..models.pending_invitation_workspace_details import PendingInvitationWorkspaceDetails
12
+
13
+
14
+ T = TypeVar("T", bound="PendingInvitationRender")
15
+
16
+
17
+ @_attrs_define
18
+ class PendingInvitationRender:
19
+ """Pending invitation in workspace
20
+
21
+ Attributes:
22
+ email (Union[Unset, str]): User email
23
+ invited_at (Union[Unset, str]): Invitation date
24
+ invited_by (Union[Unset, PendingInvitationRenderInvitedBy]): Invited by
25
+ role (Union[Unset, str]): ACL role
26
+ workspace (Union[Unset, PendingInvitationRenderWorkspace]): Workspace
27
+ workspace_details (Union[Unset, PendingInvitationWorkspaceDetails]): Workspace details
28
+ """
29
+
30
+ email: Union[Unset, str] = UNSET
31
+ invited_at: Union[Unset, str] = UNSET
32
+ invited_by: Union[Unset, "PendingInvitationRenderInvitedBy"] = UNSET
33
+ role: Union[Unset, str] = UNSET
34
+ workspace: Union[Unset, "PendingInvitationRenderWorkspace"] = UNSET
35
+ workspace_details: Union[Unset, "PendingInvitationWorkspaceDetails"] = UNSET
36
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
37
+
38
+ def to_dict(self) -> dict[str, Any]:
39
+ email = self.email
40
+
41
+ invited_at = self.invited_at
42
+
43
+ invited_by: Union[Unset, dict[str, Any]] = UNSET
44
+ if self.invited_by and not isinstance(self.invited_by, Unset) and not isinstance(self.invited_by, dict):
45
+ invited_by = self.invited_by.to_dict()
46
+ elif self.invited_by and isinstance(self.invited_by, dict):
47
+ invited_by = self.invited_by
48
+
49
+ role = self.role
50
+
51
+ workspace: Union[Unset, dict[str, Any]] = UNSET
52
+ if self.workspace and not isinstance(self.workspace, Unset) and not isinstance(self.workspace, dict):
53
+ workspace = self.workspace.to_dict()
54
+ elif self.workspace and isinstance(self.workspace, dict):
55
+ workspace = self.workspace
56
+
57
+ workspace_details: Union[Unset, dict[str, Any]] = UNSET
58
+ if (
59
+ self.workspace_details
60
+ and not isinstance(self.workspace_details, Unset)
61
+ and not isinstance(self.workspace_details, dict)
62
+ ):
63
+ workspace_details = self.workspace_details.to_dict()
64
+ elif self.workspace_details and isinstance(self.workspace_details, dict):
65
+ workspace_details = self.workspace_details
66
+
67
+ field_dict: dict[str, Any] = {}
68
+ field_dict.update(self.additional_properties)
69
+ field_dict.update({})
70
+ if email is not UNSET:
71
+ field_dict["email"] = email
72
+ if invited_at is not UNSET:
73
+ field_dict["invitedAt"] = invited_at
74
+ if invited_by is not UNSET:
75
+ field_dict["invitedBy"] = invited_by
76
+ if role is not UNSET:
77
+ field_dict["role"] = role
78
+ if workspace is not UNSET:
79
+ field_dict["workspace"] = workspace
80
+ if workspace_details is not UNSET:
81
+ field_dict["workspaceDetails"] = workspace_details
82
+
83
+ return field_dict
84
+
85
+ @classmethod
86
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
87
+ from ..models.pending_invitation_render_invited_by import PendingInvitationRenderInvitedBy
88
+ from ..models.pending_invitation_render_workspace import PendingInvitationRenderWorkspace
89
+ from ..models.pending_invitation_workspace_details import PendingInvitationWorkspaceDetails
90
+
91
+ if not src_dict:
92
+ return None
93
+ d = src_dict.copy()
94
+ email = d.pop("email", UNSET)
95
+
96
+ invited_at = d.pop("invitedAt", UNSET)
97
+
98
+ _invited_by = d.pop("invitedBy", UNSET)
99
+ invited_by: Union[Unset, PendingInvitationRenderInvitedBy]
100
+ if isinstance(_invited_by, Unset):
101
+ invited_by = UNSET
102
+ else:
103
+ invited_by = PendingInvitationRenderInvitedBy.from_dict(_invited_by)
104
+
105
+ role = d.pop("role", UNSET)
106
+
107
+ _workspace = d.pop("workspace", UNSET)
108
+ workspace: Union[Unset, PendingInvitationRenderWorkspace]
109
+ if isinstance(_workspace, Unset):
110
+ workspace = UNSET
111
+ else:
112
+ workspace = PendingInvitationRenderWorkspace.from_dict(_workspace)
113
+
114
+ _workspace_details = d.pop("workspaceDetails", UNSET)
115
+ workspace_details: Union[Unset, PendingInvitationWorkspaceDetails]
116
+ if isinstance(_workspace_details, Unset):
117
+ workspace_details = UNSET
118
+ else:
119
+ workspace_details = PendingInvitationWorkspaceDetails.from_dict(_workspace_details)
120
+
121
+ pending_invitation_render = cls(
122
+ email=email,
123
+ invited_at=invited_at,
124
+ invited_by=invited_by,
125
+ role=role,
126
+ workspace=workspace,
127
+ workspace_details=workspace_details,
128
+ )
129
+
130
+ pending_invitation_render.additional_properties = d
131
+ return pending_invitation_render
132
+
133
+ @property
134
+ def additional_keys(self) -> list[str]:
135
+ return list(self.additional_properties.keys())
136
+
137
+ def __getitem__(self, key: str) -> Any:
138
+ return self.additional_properties[key]
139
+
140
+ def __setitem__(self, key: str, value: Any) -> None:
141
+ self.additional_properties[key] = value
142
+
143
+ def __delitem__(self, key: str) -> None:
144
+ del self.additional_properties[key]
145
+
146
+ def __contains__(self, key: str) -> bool:
147
+ return key in self.additional_properties
@@ -0,0 +1,88 @@
1
+ from typing import Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="PendingInvitationRenderInvitedBy")
9
+
10
+
11
+ @_attrs_define
12
+ class PendingInvitationRenderInvitedBy:
13
+ """Invited by
14
+
15
+ Attributes:
16
+ email (Union[Unset, str]): User email
17
+ family_name (Union[Unset, str]): User family name
18
+ given_name (Union[Unset, str]): User given name
19
+ sub (Union[Unset, str]): User sub
20
+ """
21
+
22
+ email: Union[Unset, str] = UNSET
23
+ family_name: Union[Unset, str] = UNSET
24
+ given_name: Union[Unset, str] = UNSET
25
+ sub: Union[Unset, str] = UNSET
26
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
27
+
28
+ def to_dict(self) -> dict[str, Any]:
29
+ email = self.email
30
+
31
+ family_name = self.family_name
32
+
33
+ given_name = self.given_name
34
+
35
+ sub = self.sub
36
+
37
+ field_dict: dict[str, Any] = {}
38
+ field_dict.update(self.additional_properties)
39
+ field_dict.update({})
40
+ if email is not UNSET:
41
+ field_dict["email"] = email
42
+ if family_name is not UNSET:
43
+ field_dict["family_name"] = family_name
44
+ if given_name is not UNSET:
45
+ field_dict["given_name"] = given_name
46
+ if sub is not UNSET:
47
+ field_dict["sub"] = sub
48
+
49
+ return field_dict
50
+
51
+ @classmethod
52
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
53
+ if not src_dict:
54
+ return None
55
+ d = src_dict.copy()
56
+ email = d.pop("email", UNSET)
57
+
58
+ family_name = d.pop("family_name", UNSET)
59
+
60
+ given_name = d.pop("given_name", UNSET)
61
+
62
+ sub = d.pop("sub", UNSET)
63
+
64
+ pending_invitation_render_invited_by = cls(
65
+ email=email,
66
+ family_name=family_name,
67
+ given_name=given_name,
68
+ sub=sub,
69
+ )
70
+
71
+ pending_invitation_render_invited_by.additional_properties = d
72
+ return pending_invitation_render_invited_by
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,70 @@
1
+ from typing import Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="PendingInvitationRenderWorkspace")
9
+
10
+
11
+ @_attrs_define
12
+ class PendingInvitationRenderWorkspace:
13
+ """Workspace
14
+
15
+ Attributes:
16
+ display_name (Union[Unset, str]): Workspace display name
17
+ name (Union[Unset, str]): Workspace name
18
+ """
19
+
20
+ display_name: Union[Unset, str] = UNSET
21
+ name: Union[Unset, str] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ display_name = self.display_name
26
+
27
+ name = self.name
28
+
29
+ field_dict: dict[str, Any] = {}
30
+ field_dict.update(self.additional_properties)
31
+ field_dict.update({})
32
+ if display_name is not UNSET:
33
+ field_dict["displayName"] = display_name
34
+ if name is not UNSET:
35
+ field_dict["name"] = name
36
+
37
+ return field_dict
38
+
39
+ @classmethod
40
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
41
+ if not src_dict:
42
+ return None
43
+ d = src_dict.copy()
44
+ display_name = d.pop("displayName", UNSET)
45
+
46
+ name = d.pop("name", UNSET)
47
+
48
+ pending_invitation_render_workspace = cls(
49
+ display_name=display_name,
50
+ name=name,
51
+ )
52
+
53
+ pending_invitation_render_workspace.additional_properties = d
54
+ return pending_invitation_render_workspace
55
+
56
+ @property
57
+ def additional_keys(self) -> list[str]:
58
+ return list(self.additional_properties.keys())
59
+
60
+ def __getitem__(self, key: str) -> Any:
61
+ return self.additional_properties[key]
62
+
63
+ def __setitem__(self, key: str, value: Any) -> None:
64
+ self.additional_properties[key] = value
65
+
66
+ def __delitem__(self, key: str) -> None:
67
+ del self.additional_properties[key]
68
+
69
+ def __contains__(self, key: str) -> bool:
70
+ return key in self.additional_properties
@@ -0,0 +1,72 @@
1
+ from typing import Any, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="PendingInvitationWorkspaceDetails")
9
+
10
+
11
+ @_attrs_define
12
+ class PendingInvitationWorkspaceDetails:
13
+ """Workspace details
14
+
15
+ Attributes:
16
+ emails (Union[Unset, list[Any]]): List of user emails in the workspace
17
+ user_number (Union[Unset, float]): Number of users in the workspace
18
+ """
19
+
20
+ emails: Union[Unset, list[Any]] = UNSET
21
+ user_number: Union[Unset, float] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ emails: Union[Unset, list[Any]] = UNSET
26
+ if not isinstance(self.emails, Unset):
27
+ emails = self.emails
28
+
29
+ user_number = self.user_number
30
+
31
+ field_dict: dict[str, Any] = {}
32
+ field_dict.update(self.additional_properties)
33
+ field_dict.update({})
34
+ if emails is not UNSET:
35
+ field_dict["emails"] = emails
36
+ if user_number is not UNSET:
37
+ field_dict["user_number"] = user_number
38
+
39
+ return field_dict
40
+
41
+ @classmethod
42
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
43
+ if not src_dict:
44
+ return None
45
+ d = src_dict.copy()
46
+ emails = cast(list[Any], d.pop("emails", UNSET))
47
+
48
+ user_number = d.pop("user_number", UNSET)
49
+
50
+ pending_invitation_workspace_details = cls(
51
+ emails=emails,
52
+ user_number=user_number,
53
+ )
54
+
55
+ pending_invitation_workspace_details.additional_properties = d
56
+ return pending_invitation_workspace_details
57
+
58
+ @property
59
+ def additional_keys(self) -> list[str]:
60
+ return list(self.additional_properties.keys())
61
+
62
+ def __getitem__(self, key: str) -> Any:
63
+ return self.additional_properties[key]
64
+
65
+ def __setitem__(self, key: str, value: Any) -> None:
66
+ self.additional_properties[key] = value
67
+
68
+ def __delitem__(self, key: str) -> None:
69
+ del self.additional_properties[key]
70
+
71
+ def __contains__(self, key: str) -> bool:
72
+ return key in self.additional_properties
@@ -0,0 +1,45 @@
1
+ from typing import Any, TypeVar
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ T = TypeVar("T", bound="PodTemplateSpec")
7
+
8
+
9
+ @_attrs_define
10
+ class PodTemplateSpec:
11
+ """Pod template specification"""
12
+
13
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
14
+
15
+ def to_dict(self) -> dict[str, Any]:
16
+ field_dict: dict[str, Any] = {}
17
+ field_dict.update(self.additional_properties)
18
+
19
+ return field_dict
20
+
21
+ @classmethod
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
23
+ if not src_dict:
24
+ return None
25
+ d = src_dict.copy()
26
+ pod_template_spec = cls()
27
+
28
+ pod_template_spec.additional_properties = d
29
+ return pod_template_spec
30
+
31
+ @property
32
+ def additional_keys(self) -> list[str]:
33
+ return list(self.additional_properties.keys())
34
+
35
+ def __getitem__(self, key: str) -> Any:
36
+ return self.additional_properties[key]
37
+
38
+ def __setitem__(self, key: str, value: Any) -> None:
39
+ self.additional_properties[key] = value
40
+
41
+ def __delitem__(self, key: str) -> None:
42
+ del self.additional_properties[key]
43
+
44
+ def __contains__(self, key: str) -> bool:
45
+ return key in self.additional_properties
@@ -0,0 +1,96 @@
1
+ from typing import TYPE_CHECKING, Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ if TYPE_CHECKING:
9
+ from ..models.metadata import Metadata
10
+ from ..models.policy_spec import PolicySpec
11
+
12
+
13
+ T = TypeVar("T", bound="Policy")
14
+
15
+
16
+ @_attrs_define
17
+ class Policy:
18
+ """Rule that controls how a deployment is made and served (e.g. location restrictions)
19
+
20
+ Attributes:
21
+ metadata (Union[Unset, Metadata]): Metadata
22
+ spec (Union[Unset, PolicySpec]): Policy specification
23
+ """
24
+
25
+ metadata: Union[Unset, "Metadata"] = UNSET
26
+ spec: Union[Unset, "PolicySpec"] = UNSET
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ metadata: Union[Unset, dict[str, Any]] = UNSET
31
+ if self.metadata and not isinstance(self.metadata, Unset) and not isinstance(self.metadata, dict):
32
+ metadata = self.metadata.to_dict()
33
+ elif self.metadata and isinstance(self.metadata, dict):
34
+ metadata = self.metadata
35
+
36
+ spec: Union[Unset, dict[str, Any]] = UNSET
37
+ if self.spec and not isinstance(self.spec, Unset) and not isinstance(self.spec, dict):
38
+ spec = self.spec.to_dict()
39
+ elif self.spec and isinstance(self.spec, dict):
40
+ spec = self.spec
41
+
42
+ field_dict: dict[str, Any] = {}
43
+ field_dict.update(self.additional_properties)
44
+ field_dict.update({})
45
+ if metadata is not UNSET:
46
+ field_dict["metadata"] = metadata
47
+ if spec is not UNSET:
48
+ field_dict["spec"] = spec
49
+
50
+ return field_dict
51
+
52
+ @classmethod
53
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
54
+ from ..models.metadata import Metadata
55
+ from ..models.policy_spec import PolicySpec
56
+
57
+ if not src_dict:
58
+ return None
59
+ d = src_dict.copy()
60
+ _metadata = d.pop("metadata", UNSET)
61
+ metadata: Union[Unset, Metadata]
62
+ if isinstance(_metadata, Unset):
63
+ metadata = UNSET
64
+ else:
65
+ metadata = Metadata.from_dict(_metadata)
66
+
67
+ _spec = d.pop("spec", UNSET)
68
+ spec: Union[Unset, PolicySpec]
69
+ if isinstance(_spec, Unset):
70
+ spec = UNSET
71
+ else:
72
+ spec = PolicySpec.from_dict(_spec)
73
+
74
+ policy = cls(
75
+ metadata=metadata,
76
+ spec=spec,
77
+ )
78
+
79
+ policy.additional_properties = d
80
+ return policy
81
+
82
+ @property
83
+ def additional_keys(self) -> list[str]:
84
+ return list(self.additional_properties.keys())
85
+
86
+ def __getitem__(self, key: str) -> Any:
87
+ return self.additional_properties[key]
88
+
89
+ def __setitem__(self, key: str, value: Any) -> None:
90
+ self.additional_properties[key] = value
91
+
92
+ def __delitem__(self, key: str) -> None:
93
+ del self.additional_properties[key]
94
+
95
+ def __contains__(self, key: str) -> bool:
96
+ return key in self.additional_properties
@@ -0,0 +1,70 @@
1
+ from typing import Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="PolicyLocation")
9
+
10
+
11
+ @_attrs_define
12
+ class PolicyLocation:
13
+ """Policy location
14
+
15
+ Attributes:
16
+ name (Union[Unset, str]): Policy location name
17
+ type_ (Union[Unset, str]): Policy location type
18
+ """
19
+
20
+ name: Union[Unset, str] = UNSET
21
+ type_: Union[Unset, str] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ name = self.name
26
+
27
+ type_ = self.type_
28
+
29
+ field_dict: dict[str, Any] = {}
30
+ field_dict.update(self.additional_properties)
31
+ field_dict.update({})
32
+ if name is not UNSET:
33
+ field_dict["name"] = name
34
+ if type_ is not UNSET:
35
+ field_dict["type"] = type_
36
+
37
+ return field_dict
38
+
39
+ @classmethod
40
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
41
+ if not src_dict:
42
+ return None
43
+ d = src_dict.copy()
44
+ name = d.pop("name", UNSET)
45
+
46
+ type_ = d.pop("type", UNSET)
47
+
48
+ policy_location = cls(
49
+ name=name,
50
+ type_=type_,
51
+ )
52
+
53
+ policy_location.additional_properties = d
54
+ return policy_location
55
+
56
+ @property
57
+ def additional_keys(self) -> list[str]:
58
+ return list(self.additional_properties.keys())
59
+
60
+ def __getitem__(self, key: str) -> Any:
61
+ return self.additional_properties[key]
62
+
63
+ def __setitem__(self, key: str, value: Any) -> None:
64
+ self.additional_properties[key] = value
65
+
66
+ def __delitem__(self, key: str) -> None:
67
+ del self.additional_properties[key]
68
+
69
+ def __contains__(self, key: str) -> bool:
70
+ return key in self.additional_properties
@@ -0,0 +1,106 @@
1
+ from typing import Any, TypeVar, Union
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="PolicyMaxTokens")
9
+
10
+
11
+ @_attrs_define
12
+ class PolicyMaxTokens:
13
+ """PolicyMaxTokens is a local type that wraps a slice of PolicyMaxTokens
14
+
15
+ Attributes:
16
+ granularity (Union[Unset, str]): Granularity
17
+ input_ (Union[Unset, int]): Input
18
+ output (Union[Unset, int]): Output
19
+ ratio_input_over_output (Union[Unset, int]): RatioInputOverOutput
20
+ step (Union[Unset, int]): Step
21
+ total (Union[Unset, int]): Total
22
+ """
23
+
24
+ granularity: Union[Unset, str] = UNSET
25
+ input_: Union[Unset, int] = UNSET
26
+ output: Union[Unset, int] = UNSET
27
+ ratio_input_over_output: Union[Unset, int] = UNSET
28
+ step: Union[Unset, int] = UNSET
29
+ total: Union[Unset, int] = UNSET
30
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
+
32
+ def to_dict(self) -> dict[str, Any]:
33
+ granularity = self.granularity
34
+
35
+ input_ = self.input_
36
+
37
+ output = self.output
38
+
39
+ ratio_input_over_output = self.ratio_input_over_output
40
+
41
+ step = self.step
42
+
43
+ total = self.total
44
+
45
+ field_dict: dict[str, Any] = {}
46
+ field_dict.update(self.additional_properties)
47
+ field_dict.update({})
48
+ if granularity is not UNSET:
49
+ field_dict["granularity"] = granularity
50
+ if input_ is not UNSET:
51
+ field_dict["input"] = input_
52
+ if output is not UNSET:
53
+ field_dict["output"] = output
54
+ if ratio_input_over_output is not UNSET:
55
+ field_dict["ratioInputOverOutput"] = ratio_input_over_output
56
+ if step is not UNSET:
57
+ field_dict["step"] = step
58
+ if total is not UNSET:
59
+ field_dict["total"] = total
60
+
61
+ return field_dict
62
+
63
+ @classmethod
64
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
65
+ if not src_dict:
66
+ return None
67
+ d = src_dict.copy()
68
+ granularity = d.pop("granularity", UNSET)
69
+
70
+ input_ = d.pop("input", UNSET)
71
+
72
+ output = d.pop("output", UNSET)
73
+
74
+ ratio_input_over_output = d.pop("ratioInputOverOutput", UNSET)
75
+
76
+ step = d.pop("step", UNSET)
77
+
78
+ total = d.pop("total", UNSET)
79
+
80
+ policy_max_tokens = cls(
81
+ granularity=granularity,
82
+ input_=input_,
83
+ output=output,
84
+ ratio_input_over_output=ratio_input_over_output,
85
+ step=step,
86
+ total=total,
87
+ )
88
+
89
+ policy_max_tokens.additional_properties = d
90
+ return policy_max_tokens
91
+
92
+ @property
93
+ def additional_keys(self) -> list[str]:
94
+ return list(self.additional_properties.keys())
95
+
96
+ def __getitem__(self, key: str) -> Any:
97
+ return self.additional_properties[key]
98
+
99
+ def __setitem__(self, key: str, value: Any) -> None:
100
+ self.additional_properties[key] = value
101
+
102
+ def __delitem__(self, key: str) -> None:
103
+ del self.additional_properties[key]
104
+
105
+ def __contains__(self, key: str) -> bool:
106
+ return key in self.additional_properties