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,126 @@
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.core_event import CoreEvent
10
+ from ..models.knowledgebase_spec import KnowledgebaseSpec
11
+ from ..models.metadata import Metadata
12
+
13
+
14
+ T = TypeVar("T", bound="Knowledgebase")
15
+
16
+
17
+ @_attrs_define
18
+ class Knowledgebase:
19
+ """Knowledgebase
20
+
21
+ Attributes:
22
+ events (Union[Unset, list['CoreEvent']]): Core events
23
+ metadata (Union[Unset, Metadata]): Metadata
24
+ spec (Union[Unset, KnowledgebaseSpec]): Knowledgebase specification
25
+ status (Union[Unset, str]): Knowledgebase status
26
+ """
27
+
28
+ events: Union[Unset, list["CoreEvent"]] = UNSET
29
+ metadata: Union[Unset, "Metadata"] = UNSET
30
+ spec: Union[Unset, "KnowledgebaseSpec"] = UNSET
31
+ status: Union[Unset, str] = UNSET
32
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
33
+
34
+ def to_dict(self) -> dict[str, Any]:
35
+ events: Union[Unset, list[dict[str, Any]]] = UNSET
36
+ if not isinstance(self.events, Unset):
37
+ events = []
38
+ for componentsschemas_core_events_item_data in self.events:
39
+ componentsschemas_core_events_item = componentsschemas_core_events_item_data.to_dict()
40
+ events.append(componentsschemas_core_events_item)
41
+
42
+ metadata: Union[Unset, dict[str, Any]] = UNSET
43
+ if self.metadata and not isinstance(self.metadata, Unset) and not isinstance(self.metadata, dict):
44
+ metadata = self.metadata.to_dict()
45
+ elif self.metadata and isinstance(self.metadata, dict):
46
+ metadata = self.metadata
47
+
48
+ spec: Union[Unset, dict[str, Any]] = UNSET
49
+ if self.spec and not isinstance(self.spec, Unset) and not isinstance(self.spec, dict):
50
+ spec = self.spec.to_dict()
51
+ elif self.spec and isinstance(self.spec, dict):
52
+ spec = self.spec
53
+
54
+ status = self.status
55
+
56
+ field_dict: dict[str, Any] = {}
57
+ field_dict.update(self.additional_properties)
58
+ field_dict.update({})
59
+ if events is not UNSET:
60
+ field_dict["events"] = events
61
+ if metadata is not UNSET:
62
+ field_dict["metadata"] = metadata
63
+ if spec is not UNSET:
64
+ field_dict["spec"] = spec
65
+ if status is not UNSET:
66
+ field_dict["status"] = status
67
+
68
+ return field_dict
69
+
70
+ @classmethod
71
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
72
+ from ..models.core_event import CoreEvent
73
+ from ..models.knowledgebase_spec import KnowledgebaseSpec
74
+ from ..models.metadata import Metadata
75
+
76
+ if not src_dict:
77
+ return None
78
+ d = src_dict.copy()
79
+ events = []
80
+ _events = d.pop("events", UNSET)
81
+ for componentsschemas_core_events_item_data in _events or []:
82
+ componentsschemas_core_events_item = CoreEvent.from_dict(componentsschemas_core_events_item_data)
83
+
84
+ events.append(componentsschemas_core_events_item)
85
+
86
+ _metadata = d.pop("metadata", UNSET)
87
+ metadata: Union[Unset, Metadata]
88
+ if isinstance(_metadata, Unset):
89
+ metadata = UNSET
90
+ else:
91
+ metadata = Metadata.from_dict(_metadata)
92
+
93
+ _spec = d.pop("spec", UNSET)
94
+ spec: Union[Unset, KnowledgebaseSpec]
95
+ if isinstance(_spec, Unset):
96
+ spec = UNSET
97
+ else:
98
+ spec = KnowledgebaseSpec.from_dict(_spec)
99
+
100
+ status = d.pop("status", UNSET)
101
+
102
+ knowledgebase = cls(
103
+ events=events,
104
+ metadata=metadata,
105
+ spec=spec,
106
+ status=status,
107
+ )
108
+
109
+ knowledgebase.additional_properties = d
110
+ return knowledgebase
111
+
112
+ @property
113
+ def additional_keys(self) -> list[str]:
114
+ return list(self.additional_properties.keys())
115
+
116
+ def __getitem__(self, key: str) -> Any:
117
+ return self.additional_properties[key]
118
+
119
+ def __setitem__(self, key: str, value: Any) -> None:
120
+ self.additional_properties[key] = value
121
+
122
+ def __delitem__(self, key: str) -> None:
123
+ del self.additional_properties[key]
124
+
125
+ def __contains__(self, key: str) -> bool:
126
+ return key in self.additional_properties
@@ -0,0 +1,163 @@
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.knowledgebase_spec_options import KnowledgebaseSpecOptions
10
+ from ..models.revision_configuration import RevisionConfiguration
11
+
12
+
13
+ T = TypeVar("T", bound="KnowledgebaseSpec")
14
+
15
+
16
+ @_attrs_define
17
+ class KnowledgebaseSpec:
18
+ """Knowledgebase specification
19
+
20
+ Attributes:
21
+ collection_name (Union[Unset, str]): Collection name
22
+ embedding_model (Union[Unset, str]): Embedding model
23
+ embedding_model_type (Union[Unset, str]): Embedding model type
24
+ enabled (Union[Unset, bool]): Enable or disable the agent
25
+ integration_connections (Union[Unset, list[str]]):
26
+ options (Union[Unset, KnowledgebaseSpecOptions]): Options specific to the knowledge base
27
+ policies (Union[Unset, list[str]]):
28
+ revision (Union[Unset, RevisionConfiguration]): Revision configuration
29
+ sandbox (Union[Unset, bool]): Sandbox mode
30
+ """
31
+
32
+ collection_name: Union[Unset, str] = UNSET
33
+ embedding_model: Union[Unset, str] = UNSET
34
+ embedding_model_type: Union[Unset, str] = UNSET
35
+ enabled: Union[Unset, bool] = UNSET
36
+ integration_connections: Union[Unset, list[str]] = UNSET
37
+ options: Union[Unset, "KnowledgebaseSpecOptions"] = UNSET
38
+ policies: Union[Unset, list[str]] = UNSET
39
+ revision: Union[Unset, "RevisionConfiguration"] = UNSET
40
+ sandbox: Union[Unset, bool] = UNSET
41
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
42
+
43
+ def to_dict(self) -> dict[str, Any]:
44
+ collection_name = self.collection_name
45
+
46
+ embedding_model = self.embedding_model
47
+
48
+ embedding_model_type = self.embedding_model_type
49
+
50
+ enabled = self.enabled
51
+
52
+ integration_connections: Union[Unset, list[str]] = UNSET
53
+ if not isinstance(self.integration_connections, Unset):
54
+ integration_connections = self.integration_connections
55
+
56
+ options: Union[Unset, dict[str, Any]] = UNSET
57
+ if self.options and not isinstance(self.options, Unset) and not isinstance(self.options, dict):
58
+ options = self.options.to_dict()
59
+ elif self.options and isinstance(self.options, dict):
60
+ options = self.options
61
+
62
+ policies: Union[Unset, list[str]] = UNSET
63
+ if not isinstance(self.policies, Unset):
64
+ policies = self.policies
65
+
66
+ revision: Union[Unset, dict[str, Any]] = UNSET
67
+ if self.revision and not isinstance(self.revision, Unset) and not isinstance(self.revision, dict):
68
+ revision = self.revision.to_dict()
69
+ elif self.revision and isinstance(self.revision, dict):
70
+ revision = self.revision
71
+
72
+ sandbox = self.sandbox
73
+
74
+ field_dict: dict[str, Any] = {}
75
+ field_dict.update(self.additional_properties)
76
+ field_dict.update({})
77
+ if collection_name is not UNSET:
78
+ field_dict["collectionName"] = collection_name
79
+ if embedding_model is not UNSET:
80
+ field_dict["embeddingModel"] = embedding_model
81
+ if embedding_model_type is not UNSET:
82
+ field_dict["embeddingModelType"] = embedding_model_type
83
+ if enabled is not UNSET:
84
+ field_dict["enabled"] = enabled
85
+ if integration_connections is not UNSET:
86
+ field_dict["integrationConnections"] = integration_connections
87
+ if options is not UNSET:
88
+ field_dict["options"] = options
89
+ if policies is not UNSET:
90
+ field_dict["policies"] = policies
91
+ if revision is not UNSET:
92
+ field_dict["revision"] = revision
93
+ if sandbox is not UNSET:
94
+ field_dict["sandbox"] = sandbox
95
+
96
+ return field_dict
97
+
98
+ @classmethod
99
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
100
+ from ..models.knowledgebase_spec_options import KnowledgebaseSpecOptions
101
+ from ..models.revision_configuration import RevisionConfiguration
102
+
103
+ if not src_dict:
104
+ return None
105
+ d = src_dict.copy()
106
+ collection_name = d.pop("collectionName", UNSET)
107
+
108
+ embedding_model = d.pop("embeddingModel", UNSET)
109
+
110
+ embedding_model_type = d.pop("embeddingModelType", UNSET)
111
+
112
+ enabled = d.pop("enabled", UNSET)
113
+
114
+ integration_connections = cast(list[str], d.pop("integrationConnections", UNSET))
115
+
116
+ _options = d.pop("options", UNSET)
117
+ options: Union[Unset, KnowledgebaseSpecOptions]
118
+ if isinstance(_options, Unset):
119
+ options = UNSET
120
+ else:
121
+ options = KnowledgebaseSpecOptions.from_dict(_options)
122
+
123
+ policies = cast(list[str], d.pop("policies", UNSET))
124
+
125
+ _revision = d.pop("revision", UNSET)
126
+ revision: Union[Unset, RevisionConfiguration]
127
+ if isinstance(_revision, Unset):
128
+ revision = UNSET
129
+ else:
130
+ revision = RevisionConfiguration.from_dict(_revision)
131
+
132
+ sandbox = d.pop("sandbox", UNSET)
133
+
134
+ knowledgebase_spec = cls(
135
+ collection_name=collection_name,
136
+ embedding_model=embedding_model,
137
+ embedding_model_type=embedding_model_type,
138
+ enabled=enabled,
139
+ integration_connections=integration_connections,
140
+ options=options,
141
+ policies=policies,
142
+ revision=revision,
143
+ sandbox=sandbox,
144
+ )
145
+
146
+ knowledgebase_spec.additional_properties = d
147
+ return knowledgebase_spec
148
+
149
+ @property
150
+ def additional_keys(self) -> list[str]:
151
+ return list(self.additional_properties.keys())
152
+
153
+ def __getitem__(self, key: str) -> Any:
154
+ return self.additional_properties[key]
155
+
156
+ def __setitem__(self, key: str, value: Any) -> None:
157
+ self.additional_properties[key] = value
158
+
159
+ def __delitem__(self, key: str) -> None:
160
+ del self.additional_properties[key]
161
+
162
+ def __contains__(self, key: str) -> bool:
163
+ 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="KnowledgebaseSpecOptions")
7
+
8
+
9
+ @_attrs_define
10
+ class KnowledgebaseSpecOptions:
11
+ """Options specific to the knowledge base"""
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
+ knowledgebase_spec_options = cls()
27
+
28
+ knowledgebase_spec_options.additional_properties = d
29
+ return knowledgebase_spec_options
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,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="LastNRequestsMetric")
9
+
10
+
11
+ @_attrs_define
12
+ class LastNRequestsMetric:
13
+ """Last N requests
14
+
15
+ Attributes:
16
+ date (Union[Unset, str]): Timestamp
17
+ workload_type (Union[Unset, str]): Workload type
18
+ workspace (Union[Unset, str]): Workspace
19
+ """
20
+
21
+ date: Union[Unset, str] = UNSET
22
+ workload_type: Union[Unset, str] = UNSET
23
+ workspace: Union[Unset, str] = UNSET
24
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
25
+
26
+ def to_dict(self) -> dict[str, Any]:
27
+ date = self.date
28
+
29
+ workload_type = self.workload_type
30
+
31
+ workspace = self.workspace
32
+
33
+ field_dict: dict[str, Any] = {}
34
+ field_dict.update(self.additional_properties)
35
+ field_dict.update({})
36
+ if date is not UNSET:
37
+ field_dict["date"] = date
38
+ if workload_type is not UNSET:
39
+ field_dict["workloadType"] = workload_type
40
+ if workspace is not UNSET:
41
+ field_dict["workspace"] = workspace
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
+ date = d.pop("date", UNSET)
51
+
52
+ workload_type = d.pop("workloadType", UNSET)
53
+
54
+ workspace = d.pop("workspace", UNSET)
55
+
56
+ last_n_requests_metric = cls(
57
+ date=date,
58
+ workload_type=workload_type,
59
+ workspace=workspace,
60
+ )
61
+
62
+ last_n_requests_metric.additional_properties = d
63
+ return last_n_requests_metric
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
@@ -0,0 +1,144 @@
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.histogram_bucket import HistogramBucket
10
+ from ..models.histogram_stats import HistogramStats
11
+
12
+
13
+ T = TypeVar("T", bound="LatencyMetric")
14
+
15
+
16
+ @_attrs_define
17
+ class LatencyMetric:
18
+ """Latency metrics
19
+
20
+ Attributes:
21
+ global_histogram (Union[Unset, HistogramBucket]): Histogram bucket
22
+ global_stats (Union[Unset, HistogramStats]): Histogram stats
23
+ histogram_per_code (Union[Unset, HistogramBucket]): Histogram bucket
24
+ stats_per_code (Union[Unset, HistogramStats]): Histogram stats
25
+ """
26
+
27
+ global_histogram: Union[Unset, "HistogramBucket"] = UNSET
28
+ global_stats: Union[Unset, "HistogramStats"] = UNSET
29
+ histogram_per_code: Union[Unset, "HistogramBucket"] = UNSET
30
+ stats_per_code: Union[Unset, "HistogramStats"] = UNSET
31
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ global_histogram: Union[Unset, dict[str, Any]] = UNSET
35
+ if (
36
+ self.global_histogram
37
+ and not isinstance(self.global_histogram, Unset)
38
+ and not isinstance(self.global_histogram, dict)
39
+ ):
40
+ global_histogram = self.global_histogram.to_dict()
41
+ elif self.global_histogram and isinstance(self.global_histogram, dict):
42
+ global_histogram = self.global_histogram
43
+
44
+ global_stats: Union[Unset, dict[str, Any]] = UNSET
45
+ if self.global_stats and not isinstance(self.global_stats, Unset) and not isinstance(self.global_stats, dict):
46
+ global_stats = self.global_stats.to_dict()
47
+ elif self.global_stats and isinstance(self.global_stats, dict):
48
+ global_stats = self.global_stats
49
+
50
+ histogram_per_code: Union[Unset, dict[str, Any]] = UNSET
51
+ if (
52
+ self.histogram_per_code
53
+ and not isinstance(self.histogram_per_code, Unset)
54
+ and not isinstance(self.histogram_per_code, dict)
55
+ ):
56
+ histogram_per_code = self.histogram_per_code.to_dict()
57
+ elif self.histogram_per_code and isinstance(self.histogram_per_code, dict):
58
+ histogram_per_code = self.histogram_per_code
59
+
60
+ stats_per_code: Union[Unset, dict[str, Any]] = UNSET
61
+ if (
62
+ self.stats_per_code
63
+ and not isinstance(self.stats_per_code, Unset)
64
+ and not isinstance(self.stats_per_code, dict)
65
+ ):
66
+ stats_per_code = self.stats_per_code.to_dict()
67
+ elif self.stats_per_code and isinstance(self.stats_per_code, dict):
68
+ stats_per_code = self.stats_per_code
69
+
70
+ field_dict: dict[str, Any] = {}
71
+ field_dict.update(self.additional_properties)
72
+ field_dict.update({})
73
+ if global_histogram is not UNSET:
74
+ field_dict["globalHistogram"] = global_histogram
75
+ if global_stats is not UNSET:
76
+ field_dict["globalStats"] = global_stats
77
+ if histogram_per_code is not UNSET:
78
+ field_dict["histogramPerCode"] = histogram_per_code
79
+ if stats_per_code is not UNSET:
80
+ field_dict["statsPerCode"] = stats_per_code
81
+
82
+ return field_dict
83
+
84
+ @classmethod
85
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
86
+ from ..models.histogram_bucket import HistogramBucket
87
+ from ..models.histogram_stats import HistogramStats
88
+
89
+ if not src_dict:
90
+ return None
91
+ d = src_dict.copy()
92
+ _global_histogram = d.pop("globalHistogram", UNSET)
93
+ global_histogram: Union[Unset, HistogramBucket]
94
+ if isinstance(_global_histogram, Unset):
95
+ global_histogram = UNSET
96
+ else:
97
+ global_histogram = HistogramBucket.from_dict(_global_histogram)
98
+
99
+ _global_stats = d.pop("globalStats", UNSET)
100
+ global_stats: Union[Unset, HistogramStats]
101
+ if isinstance(_global_stats, Unset):
102
+ global_stats = UNSET
103
+ else:
104
+ global_stats = HistogramStats.from_dict(_global_stats)
105
+
106
+ _histogram_per_code = d.pop("histogramPerCode", UNSET)
107
+ histogram_per_code: Union[Unset, HistogramBucket]
108
+ if isinstance(_histogram_per_code, Unset):
109
+ histogram_per_code = UNSET
110
+ else:
111
+ histogram_per_code = HistogramBucket.from_dict(_histogram_per_code)
112
+
113
+ _stats_per_code = d.pop("statsPerCode", UNSET)
114
+ stats_per_code: Union[Unset, HistogramStats]
115
+ if isinstance(_stats_per_code, Unset):
116
+ stats_per_code = UNSET
117
+ else:
118
+ stats_per_code = HistogramStats.from_dict(_stats_per_code)
119
+
120
+ latency_metric = cls(
121
+ global_histogram=global_histogram,
122
+ global_stats=global_stats,
123
+ histogram_per_code=histogram_per_code,
124
+ stats_per_code=stats_per_code,
125
+ )
126
+
127
+ latency_metric.additional_properties = d
128
+ return latency_metric
129
+
130
+ @property
131
+ def additional_keys(self) -> list[str]:
132
+ return list(self.additional_properties.keys())
133
+
134
+ def __getitem__(self, key: str) -> Any:
135
+ return self.additional_properties[key]
136
+
137
+ def __setitem__(self, key: str, value: Any) -> None:
138
+ self.additional_properties[key] = value
139
+
140
+ def __delitem__(self, key: str) -> None:
141
+ del self.additional_properties[key]
142
+
143
+ def __contains__(self, key: str) -> bool:
144
+ return key in self.additional_properties
@@ -0,0 +1,113 @@
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.flavor import Flavor
10
+
11
+
12
+ T = TypeVar("T", bound="LocationResponse")
13
+
14
+
15
+ @_attrs_define
16
+ class LocationResponse:
17
+ """Location availability for policies
18
+
19
+ Attributes:
20
+ continent (Union[Unset, str]): Continent of the location
21
+ country (Union[Unset, str]): Country of the location
22
+ flavors (Union[Unset, list['Flavor']]): Hardware flavors available in the location
23
+ location (Union[Unset, str]): Name of the location
24
+ status (Union[Unset, str]): Status of the location
25
+ """
26
+
27
+ continent: Union[Unset, str] = UNSET
28
+ country: Union[Unset, str] = UNSET
29
+ flavors: Union[Unset, list["Flavor"]] = UNSET
30
+ location: Union[Unset, str] = UNSET
31
+ status: Union[Unset, str] = UNSET
32
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
33
+
34
+ def to_dict(self) -> dict[str, Any]:
35
+ continent = self.continent
36
+
37
+ country = self.country
38
+
39
+ flavors: Union[Unset, list[dict[str, Any]]] = UNSET
40
+ if not isinstance(self.flavors, Unset):
41
+ flavors = []
42
+ for flavors_item_data in self.flavors:
43
+ flavors_item = flavors_item_data.to_dict()
44
+ flavors.append(flavors_item)
45
+
46
+ location = self.location
47
+
48
+ status = self.status
49
+
50
+ field_dict: dict[str, Any] = {}
51
+ field_dict.update(self.additional_properties)
52
+ field_dict.update({})
53
+ if continent is not UNSET:
54
+ field_dict["continent"] = continent
55
+ if country is not UNSET:
56
+ field_dict["country"] = country
57
+ if flavors is not UNSET:
58
+ field_dict["flavors"] = flavors
59
+ if location is not UNSET:
60
+ field_dict["location"] = location
61
+ if status is not UNSET:
62
+ field_dict["status"] = status
63
+
64
+ return field_dict
65
+
66
+ @classmethod
67
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
68
+ from ..models.flavor import Flavor
69
+
70
+ if not src_dict:
71
+ return None
72
+ d = src_dict.copy()
73
+ continent = d.pop("continent", UNSET)
74
+
75
+ country = d.pop("country", UNSET)
76
+
77
+ flavors = []
78
+ _flavors = d.pop("flavors", UNSET)
79
+ for flavors_item_data in _flavors or []:
80
+ flavors_item = Flavor.from_dict(flavors_item_data)
81
+
82
+ flavors.append(flavors_item)
83
+
84
+ location = d.pop("location", UNSET)
85
+
86
+ status = d.pop("status", UNSET)
87
+
88
+ location_response = cls(
89
+ continent=continent,
90
+ country=country,
91
+ flavors=flavors,
92
+ location=location,
93
+ status=status,
94
+ )
95
+
96
+ location_response.additional_properties = d
97
+ return location_response
98
+
99
+ @property
100
+ def additional_keys(self) -> list[str]:
101
+ return list(self.additional_properties.keys())
102
+
103
+ def __getitem__(self, key: str) -> Any:
104
+ return self.additional_properties[key]
105
+
106
+ def __setitem__(self, key: str, value: Any) -> None:
107
+ self.additional_properties[key] = value
108
+
109
+ def __delitem__(self, key: str) -> None:
110
+ del self.additional_properties[key]
111
+
112
+ def __contains__(self, key: str) -> bool:
113
+ return key in self.additional_properties