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,310 @@
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.function_kit import FunctionKit
12
+ from ..models.model_private_cluster import ModelPrivateCluster
13
+ from ..models.pod_template_spec import PodTemplateSpec
14
+ from ..models.revision_configuration import RevisionConfiguration
15
+ from ..models.runtime import Runtime
16
+ from ..models.serverless_config import ServerlessConfig
17
+ from ..models.store_function_parameter import StoreFunctionParameter
18
+
19
+
20
+ T = TypeVar("T", bound="FunctionSpec")
21
+
22
+
23
+ @_attrs_define
24
+ class FunctionSpec:
25
+ """Function specification
26
+
27
+ Attributes:
28
+ configurations (Union[Unset, CoreSpecConfigurations]): Optional configurations for the object
29
+ enabled (Union[Unset, bool]): Enable or disable the agent
30
+ flavors (Union[Unset, list['Flavor']]): Types of hardware available for deployments
31
+ integration_connections (Union[Unset, list[str]]):
32
+ pod_template (Union[Unset, PodTemplateSpec]): Pod template specification
33
+ policies (Union[Unset, list[str]]):
34
+ private_clusters (Union[Unset, ModelPrivateCluster]): Private cluster where the model deployment is deployed
35
+ revision (Union[Unset, RevisionConfiguration]): Revision configuration
36
+ runtime (Union[Unset, Runtime]): Set of configurations for a deployment
37
+ sandbox (Union[Unset, bool]): Sandbox mode
38
+ serverless_config (Union[Unset, ServerlessConfig]): Configuration for a serverless deployment
39
+ description (Union[Unset, str]): Function description, very important for the agent function to work with an LLM
40
+ kit (Union[Unset, list['FunctionKit']]): The kit of the function deployment
41
+ parameters (Union[Unset, list['StoreFunctionParameter']]): Function parameters, for your function to be callable
42
+ with Agent
43
+ store_id (Union[Unset, str]): Store id
44
+ """
45
+
46
+ configurations: Union[Unset, "CoreSpecConfigurations"] = UNSET
47
+ enabled: Union[Unset, bool] = UNSET
48
+ flavors: Union[Unset, list["Flavor"]] = UNSET
49
+ integration_connections: Union[Unset, list[str]] = UNSET
50
+ pod_template: Union[Unset, "PodTemplateSpec"] = UNSET
51
+ policies: Union[Unset, list[str]] = UNSET
52
+ private_clusters: Union[Unset, "ModelPrivateCluster"] = UNSET
53
+ revision: Union[Unset, "RevisionConfiguration"] = UNSET
54
+ runtime: Union[Unset, "Runtime"] = UNSET
55
+ sandbox: Union[Unset, bool] = UNSET
56
+ serverless_config: Union[Unset, "ServerlessConfig"] = UNSET
57
+ description: Union[Unset, str] = UNSET
58
+ kit: Union[Unset, list["FunctionKit"]] = UNSET
59
+ parameters: Union[Unset, list["StoreFunctionParameter"]] = UNSET
60
+ store_id: Union[Unset, str] = UNSET
61
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
62
+
63
+ def to_dict(self) -> dict[str, Any]:
64
+ configurations: Union[Unset, dict[str, Any]] = UNSET
65
+ if (
66
+ self.configurations
67
+ and not isinstance(self.configurations, Unset)
68
+ and not isinstance(self.configurations, dict)
69
+ ):
70
+ configurations = self.configurations.to_dict()
71
+ elif self.configurations and isinstance(self.configurations, dict):
72
+ configurations = self.configurations
73
+
74
+ enabled = self.enabled
75
+
76
+ flavors: Union[Unset, list[dict[str, Any]]] = UNSET
77
+ if not isinstance(self.flavors, Unset):
78
+ flavors = []
79
+ for componentsschemas_flavors_item_data in self.flavors:
80
+ componentsschemas_flavors_item = componentsschemas_flavors_item_data.to_dict()
81
+ flavors.append(componentsschemas_flavors_item)
82
+
83
+ integration_connections: Union[Unset, list[str]] = UNSET
84
+ if not isinstance(self.integration_connections, Unset):
85
+ integration_connections = self.integration_connections
86
+
87
+ pod_template: Union[Unset, dict[str, Any]] = UNSET
88
+ if self.pod_template and not isinstance(self.pod_template, Unset) and not isinstance(self.pod_template, dict):
89
+ pod_template = self.pod_template.to_dict()
90
+ elif self.pod_template and isinstance(self.pod_template, dict):
91
+ pod_template = self.pod_template
92
+
93
+ policies: Union[Unset, list[str]] = UNSET
94
+ if not isinstance(self.policies, Unset):
95
+ policies = self.policies
96
+
97
+ private_clusters: Union[Unset, dict[str, Any]] = UNSET
98
+ if (
99
+ self.private_clusters
100
+ and not isinstance(self.private_clusters, Unset)
101
+ and not isinstance(self.private_clusters, dict)
102
+ ):
103
+ private_clusters = self.private_clusters.to_dict()
104
+ elif self.private_clusters and isinstance(self.private_clusters, dict):
105
+ private_clusters = self.private_clusters
106
+
107
+ revision: Union[Unset, dict[str, Any]] = UNSET
108
+ if self.revision and not isinstance(self.revision, Unset) and not isinstance(self.revision, dict):
109
+ revision = self.revision.to_dict()
110
+ elif self.revision and isinstance(self.revision, dict):
111
+ revision = self.revision
112
+
113
+ runtime: Union[Unset, dict[str, Any]] = UNSET
114
+ if self.runtime and not isinstance(self.runtime, Unset) and not isinstance(self.runtime, dict):
115
+ runtime = self.runtime.to_dict()
116
+ elif self.runtime and isinstance(self.runtime, dict):
117
+ runtime = self.runtime
118
+
119
+ sandbox = self.sandbox
120
+
121
+ serverless_config: Union[Unset, dict[str, Any]] = UNSET
122
+ if (
123
+ self.serverless_config
124
+ and not isinstance(self.serverless_config, Unset)
125
+ and not isinstance(self.serverless_config, dict)
126
+ ):
127
+ serverless_config = self.serverless_config.to_dict()
128
+ elif self.serverless_config and isinstance(self.serverless_config, dict):
129
+ serverless_config = self.serverless_config
130
+
131
+ description = self.description
132
+
133
+ kit: Union[Unset, list[dict[str, Any]]] = UNSET
134
+ if not isinstance(self.kit, Unset):
135
+ kit = []
136
+ for kit_item_data in self.kit:
137
+ kit_item = kit_item_data.to_dict()
138
+ kit.append(kit_item)
139
+
140
+ parameters: Union[Unset, list[dict[str, Any]]] = UNSET
141
+ if not isinstance(self.parameters, Unset):
142
+ parameters = []
143
+ for parameters_item_data in self.parameters:
144
+ parameters_item = parameters_item_data.to_dict()
145
+ parameters.append(parameters_item)
146
+
147
+ store_id = self.store_id
148
+
149
+ field_dict: dict[str, Any] = {}
150
+ field_dict.update(self.additional_properties)
151
+ field_dict.update({})
152
+ if configurations is not UNSET:
153
+ field_dict["configurations"] = configurations
154
+ if enabled is not UNSET:
155
+ field_dict["enabled"] = enabled
156
+ if flavors is not UNSET:
157
+ field_dict["flavors"] = flavors
158
+ if integration_connections is not UNSET:
159
+ field_dict["integrationConnections"] = integration_connections
160
+ if pod_template is not UNSET:
161
+ field_dict["podTemplate"] = pod_template
162
+ if policies is not UNSET:
163
+ field_dict["policies"] = policies
164
+ if private_clusters is not UNSET:
165
+ field_dict["privateClusters"] = private_clusters
166
+ if revision is not UNSET:
167
+ field_dict["revision"] = revision
168
+ if runtime is not UNSET:
169
+ field_dict["runtime"] = runtime
170
+ if sandbox is not UNSET:
171
+ field_dict["sandbox"] = sandbox
172
+ if serverless_config is not UNSET:
173
+ field_dict["serverlessConfig"] = serverless_config
174
+ if description is not UNSET:
175
+ field_dict["description"] = description
176
+ if kit is not UNSET:
177
+ field_dict["kit"] = kit
178
+ if parameters is not UNSET:
179
+ field_dict["parameters"] = parameters
180
+ if store_id is not UNSET:
181
+ field_dict["storeId"] = store_id
182
+
183
+ return field_dict
184
+
185
+ @classmethod
186
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
187
+ from ..models.core_spec_configurations import CoreSpecConfigurations
188
+ from ..models.flavor import Flavor
189
+ from ..models.function_kit import FunctionKit
190
+ from ..models.model_private_cluster import ModelPrivateCluster
191
+ from ..models.pod_template_spec import PodTemplateSpec
192
+ from ..models.revision_configuration import RevisionConfiguration
193
+ from ..models.runtime import Runtime
194
+ from ..models.serverless_config import ServerlessConfig
195
+ from ..models.store_function_parameter import StoreFunctionParameter
196
+
197
+ if not src_dict:
198
+ return None
199
+ d = src_dict.copy()
200
+ _configurations = d.pop("configurations", UNSET)
201
+ configurations: Union[Unset, CoreSpecConfigurations]
202
+ if isinstance(_configurations, Unset):
203
+ configurations = UNSET
204
+ else:
205
+ configurations = CoreSpecConfigurations.from_dict(_configurations)
206
+
207
+ enabled = d.pop("enabled", UNSET)
208
+
209
+ flavors = []
210
+ _flavors = d.pop("flavors", UNSET)
211
+ for componentsschemas_flavors_item_data in _flavors or []:
212
+ componentsschemas_flavors_item = Flavor.from_dict(componentsschemas_flavors_item_data)
213
+
214
+ flavors.append(componentsschemas_flavors_item)
215
+
216
+ integration_connections = cast(list[str], d.pop("integrationConnections", UNSET))
217
+
218
+ _pod_template = d.pop("podTemplate", UNSET)
219
+ pod_template: Union[Unset, PodTemplateSpec]
220
+ if isinstance(_pod_template, Unset):
221
+ pod_template = UNSET
222
+ else:
223
+ pod_template = PodTemplateSpec.from_dict(_pod_template)
224
+
225
+ policies = cast(list[str], d.pop("policies", UNSET))
226
+
227
+ _private_clusters = d.pop("privateClusters", UNSET)
228
+ private_clusters: Union[Unset, ModelPrivateCluster]
229
+ if isinstance(_private_clusters, Unset):
230
+ private_clusters = UNSET
231
+ else:
232
+ private_clusters = ModelPrivateCluster.from_dict(_private_clusters)
233
+
234
+ _revision = d.pop("revision", UNSET)
235
+ revision: Union[Unset, RevisionConfiguration]
236
+ if isinstance(_revision, Unset):
237
+ revision = UNSET
238
+ else:
239
+ revision = RevisionConfiguration.from_dict(_revision)
240
+
241
+ _runtime = d.pop("runtime", UNSET)
242
+ runtime: Union[Unset, Runtime]
243
+ if isinstance(_runtime, Unset):
244
+ runtime = UNSET
245
+ else:
246
+ runtime = Runtime.from_dict(_runtime)
247
+
248
+ sandbox = d.pop("sandbox", UNSET)
249
+
250
+ _serverless_config = d.pop("serverlessConfig", UNSET)
251
+ serverless_config: Union[Unset, ServerlessConfig]
252
+ if isinstance(_serverless_config, Unset):
253
+ serverless_config = UNSET
254
+ else:
255
+ serverless_config = ServerlessConfig.from_dict(_serverless_config)
256
+
257
+ description = d.pop("description", UNSET)
258
+
259
+ kit = []
260
+ _kit = d.pop("kit", UNSET)
261
+ for kit_item_data in _kit or []:
262
+ kit_item = FunctionKit.from_dict(kit_item_data)
263
+
264
+ kit.append(kit_item)
265
+
266
+ parameters = []
267
+ _parameters = d.pop("parameters", UNSET)
268
+ for parameters_item_data in _parameters or []:
269
+ parameters_item = StoreFunctionParameter.from_dict(parameters_item_data)
270
+
271
+ parameters.append(parameters_item)
272
+
273
+ store_id = d.pop("storeId", UNSET)
274
+
275
+ function_spec = cls(
276
+ configurations=configurations,
277
+ enabled=enabled,
278
+ flavors=flavors,
279
+ integration_connections=integration_connections,
280
+ pod_template=pod_template,
281
+ policies=policies,
282
+ private_clusters=private_clusters,
283
+ revision=revision,
284
+ runtime=runtime,
285
+ sandbox=sandbox,
286
+ serverless_config=serverless_config,
287
+ description=description,
288
+ kit=kit,
289
+ parameters=parameters,
290
+ store_id=store_id,
291
+ )
292
+
293
+ function_spec.additional_properties = d
294
+ return function_spec
295
+
296
+ @property
297
+ def additional_keys(self) -> list[str]:
298
+ return list(self.additional_properties.keys())
299
+
300
+ def __getitem__(self, key: str) -> Any:
301
+ return self.additional_properties[key]
302
+
303
+ def __setitem__(self, key: str, value: Any) -> None:
304
+ self.additional_properties[key] = value
305
+
306
+ def __delitem__(self, key: str) -> None:
307
+ del self.additional_properties[key]
308
+
309
+ def __contains__(self, key: str) -> bool:
310
+ 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="GetTraceIdsResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class GetTraceIdsResponse200:
11
+ """ """
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
+ get_trace_ids_response_200 = cls()
27
+
28
+ get_trace_ids_response_200.additional_properties = d
29
+ return get_trace_ids_response_200
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,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="GetTraceLogsResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class GetTraceLogsResponse200:
11
+ """ """
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
+ get_trace_logs_response_200 = cls()
27
+
28
+ get_trace_logs_response_200.additional_properties = d
29
+ return get_trace_logs_response_200
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,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="GetTraceResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class GetTraceResponse200:
11
+ """ """
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
+ get_trace_response_200 = cls()
27
+
28
+ get_trace_response_200.additional_properties = d
29
+ return get_trace_response_200
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 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="GetWorkspaceServiceAccountsResponse200Item")
9
+
10
+
11
+ @_attrs_define
12
+ class GetWorkspaceServiceAccountsResponse200Item:
13
+ """
14
+ Attributes:
15
+ client_id (Union[Unset, str]): Service account client ID
16
+ created_at (Union[Unset, str]): Creation timestamp
17
+ description (Union[Unset, str]): Service account description
18
+ name (Union[Unset, str]): Service account name
19
+ updated_at (Union[Unset, str]): Last update timestamp
20
+ """
21
+
22
+ client_id: Union[Unset, str] = UNSET
23
+ created_at: Union[Unset, str] = UNSET
24
+ description: Union[Unset, str] = UNSET
25
+ name: Union[Unset, str] = UNSET
26
+ updated_at: Union[Unset, str] = UNSET
27
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
28
+
29
+ def to_dict(self) -> dict[str, Any]:
30
+ client_id = self.client_id
31
+
32
+ created_at = self.created_at
33
+
34
+ description = self.description
35
+
36
+ name = self.name
37
+
38
+ updated_at = self.updated_at
39
+
40
+ field_dict: dict[str, Any] = {}
41
+ field_dict.update(self.additional_properties)
42
+ field_dict.update({})
43
+ if client_id is not UNSET:
44
+ field_dict["client_id"] = client_id
45
+ if created_at is not UNSET:
46
+ field_dict["created_at"] = created_at
47
+ if description is not UNSET:
48
+ field_dict["description"] = description
49
+ if name is not UNSET:
50
+ field_dict["name"] = name
51
+ if updated_at is not UNSET:
52
+ field_dict["updated_at"] = updated_at
53
+
54
+ return field_dict
55
+
56
+ @classmethod
57
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
58
+ if not src_dict:
59
+ return None
60
+ d = src_dict.copy()
61
+ client_id = d.pop("client_id", UNSET)
62
+
63
+ created_at = d.pop("created_at", UNSET)
64
+
65
+ description = d.pop("description", UNSET)
66
+
67
+ name = d.pop("name", UNSET)
68
+
69
+ updated_at = d.pop("updated_at", UNSET)
70
+
71
+ get_workspace_service_accounts_response_200_item = cls(
72
+ client_id=client_id,
73
+ created_at=created_at,
74
+ description=description,
75
+ name=name,
76
+ updated_at=updated_at,
77
+ )
78
+
79
+ get_workspace_service_accounts_response_200_item.additional_properties = d
80
+ return get_workspace_service_accounts_response_200_item
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,79 @@
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="HistogramBucket")
9
+
10
+
11
+ @_attrs_define
12
+ class HistogramBucket:
13
+ """Histogram bucket
14
+
15
+ Attributes:
16
+ count (Union[Unset, int]): Count
17
+ end (Union[Unset, float]): End
18
+ start (Union[Unset, float]): Start
19
+ """
20
+
21
+ count: Union[Unset, int] = UNSET
22
+ end: Union[Unset, float] = UNSET
23
+ start: Union[Unset, float] = UNSET
24
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
25
+
26
+ def to_dict(self) -> dict[str, Any]:
27
+ count = self.count
28
+
29
+ end = self.end
30
+
31
+ start = self.start
32
+
33
+ field_dict: dict[str, Any] = {}
34
+ field_dict.update(self.additional_properties)
35
+ field_dict.update({})
36
+ if count is not UNSET:
37
+ field_dict["count"] = count
38
+ if end is not UNSET:
39
+ field_dict["end"] = end
40
+ if start is not UNSET:
41
+ field_dict["start"] = start
42
+
43
+ return field_dict
44
+
45
+ @classmethod
46
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
47
+ if not src_dict:
48
+ return None
49
+ d = src_dict.copy()
50
+ count = d.pop("count", UNSET)
51
+
52
+ end = d.pop("end", UNSET)
53
+
54
+ start = d.pop("start", UNSET)
55
+
56
+ histogram_bucket = cls(
57
+ count=count,
58
+ end=end,
59
+ start=start,
60
+ )
61
+
62
+ histogram_bucket.additional_properties = d
63
+ return histogram_bucket
64
+
65
+ @property
66
+ def additional_keys(self) -> list[str]:
67
+ return list(self.additional_properties.keys())
68
+
69
+ def __getitem__(self, key: str) -> Any:
70
+ return self.additional_properties[key]
71
+
72
+ def __setitem__(self, key: str, value: Any) -> None:
73
+ self.additional_properties[key] = value
74
+
75
+ def __delitem__(self, key: str) -> None:
76
+ del self.additional_properties[key]
77
+
78
+ def __contains__(self, key: str) -> bool:
79
+ return key in self.additional_properties