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,249 @@
1
+ from typing import TYPE_CHECKING, 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
+ if TYPE_CHECKING:
9
+ from ..models.core_spec_configurations import CoreSpecConfigurations
10
+ from ..models.flavor import Flavor
11
+ from ..models.model_private_cluster import ModelPrivateCluster
12
+ from ..models.pod_template_spec import PodTemplateSpec
13
+ from ..models.revision_configuration import RevisionConfiguration
14
+ from ..models.runtime import Runtime
15
+ from ..models.serverless_config import ServerlessConfig
16
+
17
+
18
+ T = TypeVar("T", bound="ModelSpec")
19
+
20
+
21
+ @_attrs_define
22
+ class ModelSpec:
23
+ """Model specification
24
+
25
+ Attributes:
26
+ configurations (Union[Unset, CoreSpecConfigurations]): Optional configurations for the object
27
+ enabled (Union[Unset, bool]): Enable or disable the agent
28
+ flavors (Union[Unset, list['Flavor']]): Types of hardware available for deployments
29
+ integration_connections (Union[Unset, list[str]]):
30
+ pod_template (Union[Unset, PodTemplateSpec]): Pod template specification
31
+ policies (Union[Unset, list[str]]):
32
+ private_clusters (Union[Unset, ModelPrivateCluster]): Private cluster where the model deployment is deployed
33
+ revision (Union[Unset, RevisionConfiguration]): Revision configuration
34
+ runtime (Union[Unset, Runtime]): Set of configurations for a deployment
35
+ sandbox (Union[Unset, bool]): Sandbox mode
36
+ serverless_config (Union[Unset, ServerlessConfig]): Configuration for a serverless deployment
37
+ """
38
+
39
+ configurations: Union[Unset, "CoreSpecConfigurations"] = UNSET
40
+ enabled: Union[Unset, bool] = UNSET
41
+ flavors: Union[Unset, list["Flavor"]] = UNSET
42
+ integration_connections: Union[Unset, list[str]] = UNSET
43
+ pod_template: Union[Unset, "PodTemplateSpec"] = UNSET
44
+ policies: Union[Unset, list[str]] = UNSET
45
+ private_clusters: Union[Unset, "ModelPrivateCluster"] = UNSET
46
+ revision: Union[Unset, "RevisionConfiguration"] = UNSET
47
+ runtime: Union[Unset, "Runtime"] = UNSET
48
+ sandbox: Union[Unset, bool] = UNSET
49
+ serverless_config: Union[Unset, "ServerlessConfig"] = UNSET
50
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
51
+
52
+ def to_dict(self) -> dict[str, Any]:
53
+ configurations: Union[Unset, dict[str, Any]] = UNSET
54
+ if (
55
+ self.configurations
56
+ and not isinstance(self.configurations, Unset)
57
+ and not isinstance(self.configurations, dict)
58
+ ):
59
+ configurations = self.configurations.to_dict()
60
+ elif self.configurations and isinstance(self.configurations, dict):
61
+ configurations = self.configurations
62
+
63
+ enabled = self.enabled
64
+
65
+ flavors: Union[Unset, list[dict[str, Any]]] = UNSET
66
+ if not isinstance(self.flavors, Unset):
67
+ flavors = []
68
+ for componentsschemas_flavors_item_data in self.flavors:
69
+ componentsschemas_flavors_item = componentsschemas_flavors_item_data.to_dict()
70
+ flavors.append(componentsschemas_flavors_item)
71
+
72
+ integration_connections: Union[Unset, list[str]] = UNSET
73
+ if not isinstance(self.integration_connections, Unset):
74
+ integration_connections = self.integration_connections
75
+
76
+ pod_template: Union[Unset, dict[str, Any]] = UNSET
77
+ if self.pod_template and not isinstance(self.pod_template, Unset) and not isinstance(self.pod_template, dict):
78
+ pod_template = self.pod_template.to_dict()
79
+ elif self.pod_template and isinstance(self.pod_template, dict):
80
+ pod_template = self.pod_template
81
+
82
+ policies: Union[Unset, list[str]] = UNSET
83
+ if not isinstance(self.policies, Unset):
84
+ policies = self.policies
85
+
86
+ private_clusters: Union[Unset, dict[str, Any]] = UNSET
87
+ if (
88
+ self.private_clusters
89
+ and not isinstance(self.private_clusters, Unset)
90
+ and not isinstance(self.private_clusters, dict)
91
+ ):
92
+ private_clusters = self.private_clusters.to_dict()
93
+ elif self.private_clusters and isinstance(self.private_clusters, dict):
94
+ private_clusters = self.private_clusters
95
+
96
+ revision: Union[Unset, dict[str, Any]] = UNSET
97
+ if self.revision and not isinstance(self.revision, Unset) and not isinstance(self.revision, dict):
98
+ revision = self.revision.to_dict()
99
+ elif self.revision and isinstance(self.revision, dict):
100
+ revision = self.revision
101
+
102
+ runtime: Union[Unset, dict[str, Any]] = UNSET
103
+ if self.runtime and not isinstance(self.runtime, Unset) and not isinstance(self.runtime, dict):
104
+ runtime = self.runtime.to_dict()
105
+ elif self.runtime and isinstance(self.runtime, dict):
106
+ runtime = self.runtime
107
+
108
+ sandbox = self.sandbox
109
+
110
+ serverless_config: Union[Unset, dict[str, Any]] = UNSET
111
+ if (
112
+ self.serverless_config
113
+ and not isinstance(self.serverless_config, Unset)
114
+ and not isinstance(self.serverless_config, dict)
115
+ ):
116
+ serverless_config = self.serverless_config.to_dict()
117
+ elif self.serverless_config and isinstance(self.serverless_config, dict):
118
+ serverless_config = self.serverless_config
119
+
120
+ field_dict: dict[str, Any] = {}
121
+ field_dict.update(self.additional_properties)
122
+ field_dict.update({})
123
+ if configurations is not UNSET:
124
+ field_dict["configurations"] = configurations
125
+ if enabled is not UNSET:
126
+ field_dict["enabled"] = enabled
127
+ if flavors is not UNSET:
128
+ field_dict["flavors"] = flavors
129
+ if integration_connections is not UNSET:
130
+ field_dict["integrationConnections"] = integration_connections
131
+ if pod_template is not UNSET:
132
+ field_dict["podTemplate"] = pod_template
133
+ if policies is not UNSET:
134
+ field_dict["policies"] = policies
135
+ if private_clusters is not UNSET:
136
+ field_dict["privateClusters"] = private_clusters
137
+ if revision is not UNSET:
138
+ field_dict["revision"] = revision
139
+ if runtime is not UNSET:
140
+ field_dict["runtime"] = runtime
141
+ if sandbox is not UNSET:
142
+ field_dict["sandbox"] = sandbox
143
+ if serverless_config is not UNSET:
144
+ field_dict["serverlessConfig"] = serverless_config
145
+
146
+ return field_dict
147
+
148
+ @classmethod
149
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
150
+ from ..models.core_spec_configurations import CoreSpecConfigurations
151
+ from ..models.flavor import Flavor
152
+ from ..models.model_private_cluster import ModelPrivateCluster
153
+ from ..models.pod_template_spec import PodTemplateSpec
154
+ from ..models.revision_configuration import RevisionConfiguration
155
+ from ..models.runtime import Runtime
156
+ from ..models.serverless_config import ServerlessConfig
157
+
158
+ if not src_dict:
159
+ return None
160
+ d = src_dict.copy()
161
+ _configurations = d.pop("configurations", UNSET)
162
+ configurations: Union[Unset, CoreSpecConfigurations]
163
+ if isinstance(_configurations, Unset):
164
+ configurations = UNSET
165
+ else:
166
+ configurations = CoreSpecConfigurations.from_dict(_configurations)
167
+
168
+ enabled = d.pop("enabled", UNSET)
169
+
170
+ flavors = []
171
+ _flavors = d.pop("flavors", UNSET)
172
+ for componentsschemas_flavors_item_data in _flavors or []:
173
+ componentsschemas_flavors_item = Flavor.from_dict(componentsschemas_flavors_item_data)
174
+
175
+ flavors.append(componentsschemas_flavors_item)
176
+
177
+ integration_connections = cast(list[str], d.pop("integrationConnections", UNSET))
178
+
179
+ _pod_template = d.pop("podTemplate", UNSET)
180
+ pod_template: Union[Unset, PodTemplateSpec]
181
+ if isinstance(_pod_template, Unset):
182
+ pod_template = UNSET
183
+ else:
184
+ pod_template = PodTemplateSpec.from_dict(_pod_template)
185
+
186
+ policies = cast(list[str], d.pop("policies", UNSET))
187
+
188
+ _private_clusters = d.pop("privateClusters", UNSET)
189
+ private_clusters: Union[Unset, ModelPrivateCluster]
190
+ if isinstance(_private_clusters, Unset):
191
+ private_clusters = UNSET
192
+ else:
193
+ private_clusters = ModelPrivateCluster.from_dict(_private_clusters)
194
+
195
+ _revision = d.pop("revision", UNSET)
196
+ revision: Union[Unset, RevisionConfiguration]
197
+ if isinstance(_revision, Unset):
198
+ revision = UNSET
199
+ else:
200
+ revision = RevisionConfiguration.from_dict(_revision)
201
+
202
+ _runtime = d.pop("runtime", UNSET)
203
+ runtime: Union[Unset, Runtime]
204
+ if isinstance(_runtime, Unset):
205
+ runtime = UNSET
206
+ else:
207
+ runtime = Runtime.from_dict(_runtime)
208
+
209
+ sandbox = d.pop("sandbox", UNSET)
210
+
211
+ _serverless_config = d.pop("serverlessConfig", UNSET)
212
+ serverless_config: Union[Unset, ServerlessConfig]
213
+ if isinstance(_serverless_config, Unset):
214
+ serverless_config = UNSET
215
+ else:
216
+ serverless_config = ServerlessConfig.from_dict(_serverless_config)
217
+
218
+ model_spec = cls(
219
+ configurations=configurations,
220
+ enabled=enabled,
221
+ flavors=flavors,
222
+ integration_connections=integration_connections,
223
+ pod_template=pod_template,
224
+ policies=policies,
225
+ private_clusters=private_clusters,
226
+ revision=revision,
227
+ runtime=runtime,
228
+ sandbox=sandbox,
229
+ serverless_config=serverless_config,
230
+ )
231
+
232
+ model_spec.additional_properties = d
233
+ return model_spec
234
+
235
+ @property
236
+ def additional_keys(self) -> list[str]:
237
+ return list(self.additional_properties.keys())
238
+
239
+ def __getitem__(self, key: str) -> Any:
240
+ return self.additional_properties[key]
241
+
242
+ def __setitem__(self, key: str, value: Any) -> None:
243
+ self.additional_properties[key] = value
244
+
245
+ def __delitem__(self, key: str) -> None:
246
+ del self.additional_properties[key]
247
+
248
+ def __contains__(self, key: str) -> bool:
249
+ 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="OAuth")
9
+
10
+
11
+ @_attrs_define
12
+ class OAuth:
13
+ """OAuth of the artifact
14
+
15
+ Attributes:
16
+ scope (Union[Unset, list[Any]]): Scope of the OAuth
17
+ type_ (Union[Unset, str]): Type of the OAuth
18
+ """
19
+
20
+ scope: Union[Unset, list[Any]] = 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
+ scope: Union[Unset, list[Any]] = UNSET
26
+ if not isinstance(self.scope, Unset):
27
+ scope = self.scope
28
+
29
+ type_ = self.type_
30
+
31
+ field_dict: dict[str, Any] = {}
32
+ field_dict.update(self.additional_properties)
33
+ field_dict.update({})
34
+ if scope is not UNSET:
35
+ field_dict["scope"] = scope
36
+ if type_ is not UNSET:
37
+ field_dict["type"] = type_
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
+ scope = cast(list[Any], d.pop("scope", UNSET))
47
+
48
+ type_ = d.pop("type", UNSET)
49
+
50
+ o_auth = cls(
51
+ scope=scope,
52
+ type_=type_,
53
+ )
54
+
55
+ o_auth.additional_properties = d
56
+ return o_auth
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,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="OwnerFields")
9
+
10
+
11
+ @_attrs_define
12
+ class OwnerFields:
13
+ """Owner fields for Persistance
14
+
15
+ Attributes:
16
+ created_by (Union[Unset, str]): The user or service account who created the resource
17
+ updated_by (Union[Unset, str]): The user or service account who updated the resource
18
+ """
19
+
20
+ created_by: Union[Unset, str] = UNSET
21
+ updated_by: 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
+ created_by = self.created_by
26
+
27
+ updated_by = self.updated_by
28
+
29
+ field_dict: dict[str, Any] = {}
30
+ field_dict.update(self.additional_properties)
31
+ field_dict.update({})
32
+ if created_by is not UNSET:
33
+ field_dict["createdBy"] = created_by
34
+ if updated_by is not UNSET:
35
+ field_dict["updatedBy"] = updated_by
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
+ created_by = d.pop("createdBy", UNSET)
45
+
46
+ updated_by = d.pop("updatedBy", UNSET)
47
+
48
+ owner_fields = cls(
49
+ created_by=created_by,
50
+ updated_by=updated_by,
51
+ )
52
+
53
+ owner_fields.additional_properties = d
54
+ return owner_fields
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,124 @@
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="PendingInvitation")
9
+
10
+
11
+ @_attrs_define
12
+ class PendingInvitation:
13
+ """Pending invitation in workspace
14
+
15
+ Attributes:
16
+ created_at (Union[Unset, str]): The date and time when the resource was created
17
+ updated_at (Union[Unset, str]): The date and time when the resource was updated
18
+ created_by (Union[Unset, str]): The user or service account who created the resource
19
+ updated_by (Union[Unset, str]): The user or service account who updated the resource
20
+ email (Union[Unset, str]): User email
21
+ invited_by (Union[Unset, str]): User sub
22
+ role (Union[Unset, str]): ACL role
23
+ workspace (Union[Unset, str]): Workspace name
24
+ """
25
+
26
+ created_at: Union[Unset, str] = UNSET
27
+ updated_at: Union[Unset, str] = UNSET
28
+ created_by: Union[Unset, str] = UNSET
29
+ updated_by: Union[Unset, str] = UNSET
30
+ email: Union[Unset, str] = UNSET
31
+ invited_by: Union[Unset, str] = UNSET
32
+ role: Union[Unset, str] = UNSET
33
+ workspace: Union[Unset, str] = UNSET
34
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
35
+
36
+ def to_dict(self) -> dict[str, Any]:
37
+ created_at = self.created_at
38
+
39
+ updated_at = self.updated_at
40
+
41
+ created_by = self.created_by
42
+
43
+ updated_by = self.updated_by
44
+
45
+ email = self.email
46
+
47
+ invited_by = self.invited_by
48
+
49
+ role = self.role
50
+
51
+ workspace = self.workspace
52
+
53
+ field_dict: dict[str, Any] = {}
54
+ field_dict.update(self.additional_properties)
55
+ field_dict.update({})
56
+ if created_at is not UNSET:
57
+ field_dict["createdAt"] = created_at
58
+ if updated_at is not UNSET:
59
+ field_dict["updatedAt"] = updated_at
60
+ if created_by is not UNSET:
61
+ field_dict["createdBy"] = created_by
62
+ if updated_by is not UNSET:
63
+ field_dict["updatedBy"] = updated_by
64
+ if email is not UNSET:
65
+ field_dict["email"] = email
66
+ if invited_by is not UNSET:
67
+ field_dict["invitedBy"] = invited_by
68
+ if role is not UNSET:
69
+ field_dict["role"] = role
70
+ if workspace is not UNSET:
71
+ field_dict["workspace"] = workspace
72
+
73
+ return field_dict
74
+
75
+ @classmethod
76
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
77
+ if not src_dict:
78
+ return None
79
+ d = src_dict.copy()
80
+ created_at = d.pop("createdAt", UNSET)
81
+
82
+ updated_at = d.pop("updatedAt", UNSET)
83
+
84
+ created_by = d.pop("createdBy", UNSET)
85
+
86
+ updated_by = d.pop("updatedBy", UNSET)
87
+
88
+ email = d.pop("email", UNSET)
89
+
90
+ invited_by = d.pop("invitedBy", UNSET)
91
+
92
+ role = d.pop("role", UNSET)
93
+
94
+ workspace = d.pop("workspace", UNSET)
95
+
96
+ pending_invitation = cls(
97
+ created_at=created_at,
98
+ updated_at=updated_at,
99
+ created_by=created_by,
100
+ updated_by=updated_by,
101
+ email=email,
102
+ invited_by=invited_by,
103
+ role=role,
104
+ workspace=workspace,
105
+ )
106
+
107
+ pending_invitation.additional_properties = d
108
+ return pending_invitation
109
+
110
+ @property
111
+ def additional_keys(self) -> list[str]:
112
+ return list(self.additional_properties.keys())
113
+
114
+ def __getitem__(self, key: str) -> Any:
115
+ return self.additional_properties[key]
116
+
117
+ def __setitem__(self, key: str, value: Any) -> None:
118
+ self.additional_properties[key] = value
119
+
120
+ def __delitem__(self, key: str) -> None:
121
+ del self.additional_properties[key]
122
+
123
+ def __contains__(self, key: str) -> bool:
124
+ return key in self.additional_properties
@@ -0,0 +1,85 @@
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.workspace import Workspace
10
+
11
+
12
+ T = TypeVar("T", bound="PendingInvitationAccept")
13
+
14
+
15
+ @_attrs_define
16
+ class PendingInvitationAccept:
17
+ """Pending invitation accept
18
+
19
+ Attributes:
20
+ email (Union[Unset, str]): User email
21
+ workspace (Union[Unset, Workspace]): Workspace
22
+ """
23
+
24
+ email: Union[Unset, str] = UNSET
25
+ workspace: Union[Unset, "Workspace"] = 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
+ workspace: Union[Unset, dict[str, Any]] = UNSET
32
+ if self.workspace and not isinstance(self.workspace, Unset) and not isinstance(self.workspace, dict):
33
+ workspace = self.workspace.to_dict()
34
+ elif self.workspace and isinstance(self.workspace, dict):
35
+ workspace = self.workspace
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 workspace is not UNSET:
43
+ field_dict["workspace"] = workspace
44
+
45
+ return field_dict
46
+
47
+ @classmethod
48
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
49
+ from ..models.workspace import Workspace
50
+
51
+ if not src_dict:
52
+ return None
53
+ d = src_dict.copy()
54
+ email = d.pop("email", UNSET)
55
+
56
+ _workspace = d.pop("workspace", UNSET)
57
+ workspace: Union[Unset, Workspace]
58
+ if isinstance(_workspace, Unset):
59
+ workspace = UNSET
60
+ else:
61
+ workspace = Workspace.from_dict(_workspace)
62
+
63
+ pending_invitation_accept = cls(
64
+ email=email,
65
+ workspace=workspace,
66
+ )
67
+
68
+ pending_invitation_accept.additional_properties = d
69
+ return pending_invitation_accept
70
+
71
+ @property
72
+ def additional_keys(self) -> list[str]:
73
+ return list(self.additional_properties.keys())
74
+
75
+ def __getitem__(self, key: str) -> Any:
76
+ return self.additional_properties[key]
77
+
78
+ def __setitem__(self, key: str, value: Any) -> None:
79
+ self.additional_properties[key] = value
80
+
81
+ def __delitem__(self, key: str) -> None:
82
+ del self.additional_properties[key]
83
+
84
+ def __contains__(self, key: str) -> bool:
85
+ return key in self.additional_properties