blaxel 0.1.9rc35__py3-none-any.whl → 0.1.9rc36__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 (59) hide show
  1. blaxel/agents/__init__.py +1 -1
  2. blaxel/authentication/__init__.py +3 -4
  3. blaxel/client/api/compute/__init__.py +0 -0
  4. blaxel/client/api/compute/create_sandbox.py +166 -0
  5. blaxel/client/api/compute/delete_sandbox.py +154 -0
  6. blaxel/client/api/compute/get_sandbox.py +154 -0
  7. blaxel/client/api/compute/list_sandboxes.py +135 -0
  8. blaxel/client/api/compute/start_sandbox.py +157 -0
  9. blaxel/client/api/compute/stop_sandbox.py +157 -0
  10. blaxel/client/api/compute/update_sandbox.py +179 -0
  11. blaxel/client/api/default/list_sandbox_hub_definitions.py +123 -0
  12. blaxel/client/api/functions/list_function_revisions.py +16 -11
  13. blaxel/client/api/knowledgebases/list_knowledgebase_revisions.py +16 -11
  14. blaxel/client/api/models/list_model_revisions.py +16 -11
  15. blaxel/client/api/templates/list_templates.py +16 -11
  16. blaxel/client/models/__init__.py +32 -2
  17. blaxel/client/models/agent_spec.py +25 -69
  18. blaxel/client/models/core_spec.py +1 -45
  19. blaxel/client/models/function_spec.py +1 -45
  20. blaxel/client/models/last_n_requests_metric.py +18 -0
  21. blaxel/client/models/metrics.py +20 -0
  22. blaxel/client/models/model_spec.py +1 -45
  23. blaxel/client/models/{agent_chain.py → port.py} +23 -32
  24. blaxel/client/models/request_total_metric.py +12 -1
  25. blaxel/client/models/request_total_response_data.py +97 -0
  26. blaxel/client/models/resource_log.py +9 -0
  27. blaxel/client/models/resource_metrics.py +144 -0
  28. blaxel/client/models/resource_metrics_request_total_per_code_previous.py +45 -0
  29. blaxel/client/models/resource_metrics_rps_per_code_previous.py +45 -0
  30. blaxel/client/models/runtime.py +83 -7
  31. blaxel/client/models/runtime_configuration.py +45 -0
  32. blaxel/client/models/sandbox.py +129 -0
  33. blaxel/client/models/sandbox_definition.py +181 -0
  34. blaxel/client/models/sandbox_spec.py +208 -0
  35. blaxel/client/models/sandboxes.py +129 -0
  36. blaxel/client/models/serverless_config.py +29 -1
  37. blaxel/client/models/serverless_config_configuration.py +45 -0
  38. blaxel/client/models/start_sandbox.py +94 -0
  39. blaxel/client/models/stop_sandbox.py +94 -0
  40. blaxel/client/models/trigger.py +98 -0
  41. blaxel/client/models/trigger_configuration.py +45 -0
  42. blaxel/client/models/workspace.py +20 -0
  43. blaxel/client/models/workspace_runtime.py +61 -0
  44. blaxel/common/autoload.py +0 -1
  45. blaxel/instrumentation/exporters.py +3 -6
  46. blaxel/instrumentation/manager.py +5 -3
  47. blaxel/mcp/client.py +1 -3
  48. blaxel/mcp/server.py +2 -3
  49. blaxel/models/__init__.py +2 -1
  50. blaxel/models/custom/langchain/gemini.py +41 -18
  51. blaxel/models/custom/llamaindex/cohere.py +25 -16
  52. blaxel/models/custom/pydantic/gemini.py +0 -1
  53. blaxel/models/livekit.py +1 -1
  54. blaxel/tools/__init__.py +1 -1
  55. blaxel/tools/langchain.py +1 -2
  56. {blaxel-0.1.9rc35.dist-info → blaxel-0.1.9rc36.dist-info}/METADATA +1 -4
  57. {blaxel-0.1.9rc35.dist-info → blaxel-0.1.9rc36.dist-info}/RECORD +59 -36
  58. {blaxel-0.1.9rc35.dist-info → blaxel-0.1.9rc36.dist-info}/WHEEL +0 -0
  59. {blaxel-0.1.9rc35.dist-info → blaxel-0.1.9rc36.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,97 @@
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="RequestTotalResponseData")
9
+
10
+
11
+ @_attrs_define
12
+ class RequestTotalResponseData:
13
+ """Request total response data
14
+
15
+ Attributes:
16
+ request_total (Union[Unset, float]): Request total
17
+ status_code (Union[Unset, str]): Status code
18
+ workload_id (Union[Unset, str]): Workload ID
19
+ workload_type (Union[Unset, str]): Workload type
20
+ workspace (Union[Unset, str]): Workspace
21
+ """
22
+
23
+ request_total: Union[Unset, float] = UNSET
24
+ status_code: Union[Unset, str] = UNSET
25
+ workload_id: Union[Unset, str] = UNSET
26
+ workload_type: Union[Unset, str] = UNSET
27
+ workspace: Union[Unset, str] = UNSET
28
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
29
+
30
+ def to_dict(self) -> dict[str, Any]:
31
+ request_total = self.request_total
32
+
33
+ status_code = self.status_code
34
+
35
+ workload_id = self.workload_id
36
+
37
+ workload_type = self.workload_type
38
+
39
+ workspace = self.workspace
40
+
41
+ field_dict: dict[str, Any] = {}
42
+ field_dict.update(self.additional_properties)
43
+ field_dict.update({})
44
+ if request_total is not UNSET:
45
+ field_dict["requestTotal"] = request_total
46
+ if status_code is not UNSET:
47
+ field_dict["statusCode"] = status_code
48
+ if workload_id is not UNSET:
49
+ field_dict["workloadId"] = workload_id
50
+ if workload_type is not UNSET:
51
+ field_dict["workloadType"] = workload_type
52
+ if workspace is not UNSET:
53
+ field_dict["workspace"] = workspace
54
+
55
+ return field_dict
56
+
57
+ @classmethod
58
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
59
+ if not src_dict:
60
+ return None
61
+ d = src_dict.copy()
62
+ request_total = d.pop("requestTotal", UNSET)
63
+
64
+ status_code = d.pop("statusCode", UNSET)
65
+
66
+ workload_id = d.pop("workloadId", UNSET)
67
+
68
+ workload_type = d.pop("workloadType", UNSET)
69
+
70
+ workspace = d.pop("workspace", UNSET)
71
+
72
+ request_total_response_data = cls(
73
+ request_total=request_total,
74
+ status_code=status_code,
75
+ workload_id=workload_id,
76
+ workload_type=workload_type,
77
+ workspace=workspace,
78
+ )
79
+
80
+ request_total_response_data.additional_properties = d
81
+ return request_total_response_data
82
+
83
+ @property
84
+ def additional_keys(self) -> list[str]:
85
+ return list(self.additional_properties.keys())
86
+
87
+ def __getitem__(self, key: str) -> Any:
88
+ return self.additional_properties[key]
89
+
90
+ def __setitem__(self, key: str, value: Any) -> None:
91
+ self.additional_properties[key] = value
92
+
93
+ def __delitem__(self, key: str) -> None:
94
+ del self.additional_properties[key]
95
+
96
+ def __contains__(self, key: str) -> bool:
97
+ return key in self.additional_properties
@@ -16,11 +16,13 @@ class ResourceLog:
16
16
  message (Union[Unset, str]): Content of the log
17
17
  severity (Union[Unset, int]): Severity of the log
18
18
  timestamp (Union[Unset, str]): The timestamp of the log
19
+ trace_id (Union[Unset, str]): Trace ID of the log
19
20
  """
20
21
 
21
22
  message: Union[Unset, str] = UNSET
22
23
  severity: Union[Unset, int] = UNSET
23
24
  timestamp: Union[Unset, str] = UNSET
25
+ trace_id: Union[Unset, str] = UNSET
24
26
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
25
27
 
26
28
  def to_dict(self) -> dict[str, Any]:
@@ -30,6 +32,8 @@ class ResourceLog:
30
32
 
31
33
  timestamp = self.timestamp
32
34
 
35
+ trace_id = self.trace_id
36
+
33
37
  field_dict: dict[str, Any] = {}
34
38
  field_dict.update(self.additional_properties)
35
39
  field_dict.update({})
@@ -39,6 +43,8 @@ class ResourceLog:
39
43
  field_dict["severity"] = severity
40
44
  if timestamp is not UNSET:
41
45
  field_dict["timestamp"] = timestamp
46
+ if trace_id is not UNSET:
47
+ field_dict["trace_id"] = trace_id
42
48
 
43
49
  return field_dict
44
50
 
@@ -53,10 +59,13 @@ class ResourceLog:
53
59
 
54
60
  timestamp = d.pop("timestamp", UNSET)
55
61
 
62
+ trace_id = d.pop("trace_id", UNSET)
63
+
56
64
  resource_log = cls(
57
65
  message=message,
58
66
  severity=severity,
59
67
  timestamp=timestamp,
68
+ trace_id=trace_id,
60
69
  )
61
70
 
62
71
  resource_log.additional_properties = d
@@ -12,7 +12,11 @@ if TYPE_CHECKING:
12
12
  from ..models.request_duration_over_time_metrics import RequestDurationOverTimeMetrics
13
13
  from ..models.request_total_by_origin_metric import RequestTotalByOriginMetric
14
14
  from ..models.resource_metrics_request_total_per_code import ResourceMetricsRequestTotalPerCode
15
+ from ..models.resource_metrics_request_total_per_code_previous import (
16
+ ResourceMetricsRequestTotalPerCodePrevious,
17
+ )
15
18
  from ..models.resource_metrics_rps_per_code import ResourceMetricsRpsPerCode
19
+ from ..models.resource_metrics_rps_per_code_previous import ResourceMetricsRpsPerCodePrevious
16
20
  from ..models.time_to_first_token_over_time_metrics import TimeToFirstTokenOverTimeMetrics
17
21
  from ..models.token_rate_metrics import TokenRateMetrics
18
22
  from ..models.token_total_metric import TokenTotalMetric
@@ -26,41 +30,69 @@ class ResourceMetrics:
26
30
  """Metrics for a single resource deployment (eg. model deployment, function deployment)
27
31
 
28
32
  Attributes:
33
+ inference_errors_global (Union[Unset, list['Metric']]): Array of metrics
29
34
  inference_global (Union[Unset, list['Metric']]): Array of metrics
30
35
  last_n_requests (Union[Unset, list['Metric']]): Array of metrics
31
36
  latency (Union[Unset, LatencyMetric]): Latency metrics
37
+ latency_previous (Union[Unset, LatencyMetric]): Latency metrics
32
38
  memory_allocation (Union[Unset, MemoryAllocationMetric]): Metrics for memory allocation
33
39
  model_ttft (Union[Unset, LatencyMetric]): Latency metrics
34
40
  model_ttft_over_time (Union[Unset, TimeToFirstTokenOverTimeMetrics]): Time to first token over time metrics
35
41
  request_duration_over_time (Union[Unset, RequestDurationOverTimeMetrics]): Request duration over time metrics
36
42
  request_total (Union[Unset, float]): Number of requests for the resource globally
37
43
  request_total_by_origin (Union[Unset, RequestTotalByOriginMetric]): Request total by origin metric
44
+ request_total_by_origin_previous (Union[Unset, RequestTotalByOriginMetric]): Request total by origin metric
38
45
  request_total_per_code (Union[Unset, ResourceMetricsRequestTotalPerCode]): Number of requests for the resource
39
46
  globally per code
47
+ request_total_per_code_previous (Union[Unset, ResourceMetricsRequestTotalPerCodePrevious]): Number of requests
48
+ for the resource globally per code for the previous period
49
+ request_total_previous (Union[Unset, float]): Number of requests for the resource globally for the previous
50
+ period
40
51
  rps (Union[Unset, float]): Number of requests per second for the resource globally
41
52
  rps_per_code (Union[Unset, ResourceMetricsRpsPerCode]): Number of requests per second for the resource globally
42
53
  per code
54
+ rps_per_code_previous (Union[Unset, ResourceMetricsRpsPerCodePrevious]): Number of requests per second for the
55
+ resource globally per code for the previous period
56
+ rps_previous (Union[Unset, float]): Number of requests per second for the resource globally for the previous
57
+ period
43
58
  token_rate (Union[Unset, TokenRateMetrics]): Token rate metrics
44
59
  token_total (Union[Unset, TokenTotalMetric]): Token total metric
45
60
  """
46
61
 
62
+ inference_errors_global: Union[Unset, list["Metric"]] = UNSET
47
63
  inference_global: Union[Unset, list["Metric"]] = UNSET
48
64
  last_n_requests: Union[Unset, list["Metric"]] = UNSET
49
65
  latency: Union[Unset, "LatencyMetric"] = UNSET
66
+ latency_previous: Union[Unset, "LatencyMetric"] = UNSET
50
67
  memory_allocation: Union[Unset, "MemoryAllocationMetric"] = UNSET
51
68
  model_ttft: Union[Unset, "LatencyMetric"] = UNSET
52
69
  model_ttft_over_time: Union[Unset, "TimeToFirstTokenOverTimeMetrics"] = UNSET
53
70
  request_duration_over_time: Union[Unset, "RequestDurationOverTimeMetrics"] = UNSET
54
71
  request_total: Union[Unset, float] = UNSET
55
72
  request_total_by_origin: Union[Unset, "RequestTotalByOriginMetric"] = UNSET
73
+ request_total_by_origin_previous: Union[Unset, "RequestTotalByOriginMetric"] = UNSET
56
74
  request_total_per_code: Union[Unset, "ResourceMetricsRequestTotalPerCode"] = UNSET
75
+ request_total_per_code_previous: Union[Unset, "ResourceMetricsRequestTotalPerCodePrevious"] = UNSET
76
+ request_total_previous: Union[Unset, float] = UNSET
57
77
  rps: Union[Unset, float] = UNSET
58
78
  rps_per_code: Union[Unset, "ResourceMetricsRpsPerCode"] = UNSET
79
+ rps_per_code_previous: Union[Unset, "ResourceMetricsRpsPerCodePrevious"] = UNSET
80
+ rps_previous: Union[Unset, float] = UNSET
59
81
  token_rate: Union[Unset, "TokenRateMetrics"] = UNSET
60
82
  token_total: Union[Unset, "TokenTotalMetric"] = UNSET
61
83
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
62
84
 
63
85
  def to_dict(self) -> dict[str, Any]:
86
+ inference_errors_global: Union[Unset, list[dict[str, Any]]] = UNSET
87
+ if not isinstance(self.inference_errors_global, Unset):
88
+ inference_errors_global = []
89
+ for componentsschemas_array_metric_item_data in self.inference_errors_global:
90
+ if type(componentsschemas_array_metric_item_data) == dict:
91
+ componentsschemas_array_metric_item = componentsschemas_array_metric_item_data
92
+ else:
93
+ componentsschemas_array_metric_item = componentsschemas_array_metric_item_data.to_dict()
94
+ inference_errors_global.append(componentsschemas_array_metric_item)
95
+
64
96
  inference_global: Union[Unset, list[dict[str, Any]]] = UNSET
65
97
  if not isinstance(self.inference_global, Unset):
66
98
  inference_global = []
@@ -87,6 +119,16 @@ class ResourceMetrics:
87
119
  elif self.latency and isinstance(self.latency, dict):
88
120
  latency = self.latency
89
121
 
122
+ latency_previous: Union[Unset, dict[str, Any]] = UNSET
123
+ if (
124
+ self.latency_previous
125
+ and not isinstance(self.latency_previous, Unset)
126
+ and not isinstance(self.latency_previous, dict)
127
+ ):
128
+ latency_previous = self.latency_previous.to_dict()
129
+ elif self.latency_previous and isinstance(self.latency_previous, dict):
130
+ latency_previous = self.latency_previous
131
+
90
132
  memory_allocation: Union[Unset, dict[str, Any]] = UNSET
91
133
  if (
92
134
  self.memory_allocation
@@ -135,6 +177,16 @@ class ResourceMetrics:
135
177
  elif self.request_total_by_origin and isinstance(self.request_total_by_origin, dict):
136
178
  request_total_by_origin = self.request_total_by_origin
137
179
 
180
+ request_total_by_origin_previous: Union[Unset, dict[str, Any]] = UNSET
181
+ if (
182
+ self.request_total_by_origin_previous
183
+ and not isinstance(self.request_total_by_origin_previous, Unset)
184
+ and not isinstance(self.request_total_by_origin_previous, dict)
185
+ ):
186
+ request_total_by_origin_previous = self.request_total_by_origin_previous.to_dict()
187
+ elif self.request_total_by_origin_previous and isinstance(self.request_total_by_origin_previous, dict):
188
+ request_total_by_origin_previous = self.request_total_by_origin_previous
189
+
138
190
  request_total_per_code: Union[Unset, dict[str, Any]] = UNSET
139
191
  if (
140
192
  self.request_total_per_code
@@ -145,6 +197,18 @@ class ResourceMetrics:
145
197
  elif self.request_total_per_code and isinstance(self.request_total_per_code, dict):
146
198
  request_total_per_code = self.request_total_per_code
147
199
 
200
+ request_total_per_code_previous: Union[Unset, dict[str, Any]] = UNSET
201
+ if (
202
+ self.request_total_per_code_previous
203
+ and not isinstance(self.request_total_per_code_previous, Unset)
204
+ and not isinstance(self.request_total_per_code_previous, dict)
205
+ ):
206
+ request_total_per_code_previous = self.request_total_per_code_previous.to_dict()
207
+ elif self.request_total_per_code_previous and isinstance(self.request_total_per_code_previous, dict):
208
+ request_total_per_code_previous = self.request_total_per_code_previous
209
+
210
+ request_total_previous = self.request_total_previous
211
+
148
212
  rps = self.rps
149
213
 
150
214
  rps_per_code: Union[Unset, dict[str, Any]] = UNSET
@@ -153,6 +217,18 @@ class ResourceMetrics:
153
217
  elif self.rps_per_code and isinstance(self.rps_per_code, dict):
154
218
  rps_per_code = self.rps_per_code
155
219
 
220
+ rps_per_code_previous: Union[Unset, dict[str, Any]] = UNSET
221
+ if (
222
+ self.rps_per_code_previous
223
+ and not isinstance(self.rps_per_code_previous, Unset)
224
+ and not isinstance(self.rps_per_code_previous, dict)
225
+ ):
226
+ rps_per_code_previous = self.rps_per_code_previous.to_dict()
227
+ elif self.rps_per_code_previous and isinstance(self.rps_per_code_previous, dict):
228
+ rps_per_code_previous = self.rps_per_code_previous
229
+
230
+ rps_previous = self.rps_previous
231
+
156
232
  token_rate: Union[Unset, dict[str, Any]] = UNSET
157
233
  if self.token_rate and not isinstance(self.token_rate, Unset) and not isinstance(self.token_rate, dict):
158
234
  token_rate = self.token_rate.to_dict()
@@ -168,12 +244,16 @@ class ResourceMetrics:
168
244
  field_dict: dict[str, Any] = {}
169
245
  field_dict.update(self.additional_properties)
170
246
  field_dict.update({})
247
+ if inference_errors_global is not UNSET:
248
+ field_dict["inferenceErrorsGlobal"] = inference_errors_global
171
249
  if inference_global is not UNSET:
172
250
  field_dict["inferenceGlobal"] = inference_global
173
251
  if last_n_requests is not UNSET:
174
252
  field_dict["lastNRequests"] = last_n_requests
175
253
  if latency is not UNSET:
176
254
  field_dict["latency"] = latency
255
+ if latency_previous is not UNSET:
256
+ field_dict["latencyPrevious"] = latency_previous
177
257
  if memory_allocation is not UNSET:
178
258
  field_dict["memoryAllocation"] = memory_allocation
179
259
  if model_ttft is not UNSET:
@@ -186,12 +266,22 @@ class ResourceMetrics:
186
266
  field_dict["requestTotal"] = request_total
187
267
  if request_total_by_origin is not UNSET:
188
268
  field_dict["requestTotalByOrigin"] = request_total_by_origin
269
+ if request_total_by_origin_previous is not UNSET:
270
+ field_dict["requestTotalByOriginPrevious"] = request_total_by_origin_previous
189
271
  if request_total_per_code is not UNSET:
190
272
  field_dict["requestTotalPerCode"] = request_total_per_code
273
+ if request_total_per_code_previous is not UNSET:
274
+ field_dict["requestTotalPerCodePrevious"] = request_total_per_code_previous
275
+ if request_total_previous is not UNSET:
276
+ field_dict["requestTotalPrevious"] = request_total_previous
191
277
  if rps is not UNSET:
192
278
  field_dict["rps"] = rps
193
279
  if rps_per_code is not UNSET:
194
280
  field_dict["rpsPerCode"] = rps_per_code
281
+ if rps_per_code_previous is not UNSET:
282
+ field_dict["rpsPerCodePrevious"] = rps_per_code_previous
283
+ if rps_previous is not UNSET:
284
+ field_dict["rpsPrevious"] = rps_previous
195
285
  if token_rate is not UNSET:
196
286
  field_dict["tokenRate"] = token_rate
197
287
  if token_total is not UNSET:
@@ -209,7 +299,13 @@ class ResourceMetrics:
209
299
  from ..models.resource_metrics_request_total_per_code import (
210
300
  ResourceMetricsRequestTotalPerCode,
211
301
  )
302
+ from ..models.resource_metrics_request_total_per_code_previous import (
303
+ ResourceMetricsRequestTotalPerCodePrevious,
304
+ )
212
305
  from ..models.resource_metrics_rps_per_code import ResourceMetricsRpsPerCode
306
+ from ..models.resource_metrics_rps_per_code_previous import (
307
+ ResourceMetricsRpsPerCodePrevious,
308
+ )
213
309
  from ..models.time_to_first_token_over_time_metrics import TimeToFirstTokenOverTimeMetrics
214
310
  from ..models.token_rate_metrics import TokenRateMetrics
215
311
  from ..models.token_total_metric import TokenTotalMetric
@@ -217,6 +313,13 @@ class ResourceMetrics:
217
313
  if not src_dict:
218
314
  return None
219
315
  d = src_dict.copy()
316
+ inference_errors_global = []
317
+ _inference_errors_global = d.pop("inferenceErrorsGlobal", UNSET)
318
+ for componentsschemas_array_metric_item_data in _inference_errors_global or []:
319
+ componentsschemas_array_metric_item = Metric.from_dict(componentsschemas_array_metric_item_data)
320
+
321
+ inference_errors_global.append(componentsschemas_array_metric_item)
322
+
220
323
  inference_global = []
221
324
  _inference_global = d.pop("inferenceGlobal", UNSET)
222
325
  for componentsschemas_array_metric_item_data in _inference_global or []:
@@ -238,6 +341,13 @@ class ResourceMetrics:
238
341
  else:
239
342
  latency = LatencyMetric.from_dict(_latency)
240
343
 
344
+ _latency_previous = d.pop("latencyPrevious", UNSET)
345
+ latency_previous: Union[Unset, LatencyMetric]
346
+ if isinstance(_latency_previous, Unset):
347
+ latency_previous = UNSET
348
+ else:
349
+ latency_previous = LatencyMetric.from_dict(_latency_previous)
350
+
241
351
  _memory_allocation = d.pop("memoryAllocation", UNSET)
242
352
  memory_allocation: Union[Unset, MemoryAllocationMetric]
243
353
  if isinstance(_memory_allocation, Unset):
@@ -275,6 +385,13 @@ class ResourceMetrics:
275
385
  else:
276
386
  request_total_by_origin = RequestTotalByOriginMetric.from_dict(_request_total_by_origin)
277
387
 
388
+ _request_total_by_origin_previous = d.pop("requestTotalByOriginPrevious", UNSET)
389
+ request_total_by_origin_previous: Union[Unset, RequestTotalByOriginMetric]
390
+ if isinstance(_request_total_by_origin_previous, Unset):
391
+ request_total_by_origin_previous = UNSET
392
+ else:
393
+ request_total_by_origin_previous = RequestTotalByOriginMetric.from_dict(_request_total_by_origin_previous)
394
+
278
395
  _request_total_per_code = d.pop("requestTotalPerCode", UNSET)
279
396
  request_total_per_code: Union[Unset, ResourceMetricsRequestTotalPerCode]
280
397
  if isinstance(_request_total_per_code, Unset):
@@ -282,6 +399,17 @@ class ResourceMetrics:
282
399
  else:
283
400
  request_total_per_code = ResourceMetricsRequestTotalPerCode.from_dict(_request_total_per_code)
284
401
 
402
+ _request_total_per_code_previous = d.pop("requestTotalPerCodePrevious", UNSET)
403
+ request_total_per_code_previous: Union[Unset, ResourceMetricsRequestTotalPerCodePrevious]
404
+ if isinstance(_request_total_per_code_previous, Unset):
405
+ request_total_per_code_previous = UNSET
406
+ else:
407
+ request_total_per_code_previous = ResourceMetricsRequestTotalPerCodePrevious.from_dict(
408
+ _request_total_per_code_previous
409
+ )
410
+
411
+ request_total_previous = d.pop("requestTotalPrevious", UNSET)
412
+
285
413
  rps = d.pop("rps", UNSET)
286
414
 
287
415
  _rps_per_code = d.pop("rpsPerCode", UNSET)
@@ -291,6 +419,15 @@ class ResourceMetrics:
291
419
  else:
292
420
  rps_per_code = ResourceMetricsRpsPerCode.from_dict(_rps_per_code)
293
421
 
422
+ _rps_per_code_previous = d.pop("rpsPerCodePrevious", UNSET)
423
+ rps_per_code_previous: Union[Unset, ResourceMetricsRpsPerCodePrevious]
424
+ if isinstance(_rps_per_code_previous, Unset):
425
+ rps_per_code_previous = UNSET
426
+ else:
427
+ rps_per_code_previous = ResourceMetricsRpsPerCodePrevious.from_dict(_rps_per_code_previous)
428
+
429
+ rps_previous = d.pop("rpsPrevious", UNSET)
430
+
294
431
  _token_rate = d.pop("tokenRate", UNSET)
295
432
  token_rate: Union[Unset, TokenRateMetrics]
296
433
  if isinstance(_token_rate, Unset):
@@ -306,18 +443,25 @@ class ResourceMetrics:
306
443
  token_total = TokenTotalMetric.from_dict(_token_total)
307
444
 
308
445
  resource_metrics = cls(
446
+ inference_errors_global=inference_errors_global,
309
447
  inference_global=inference_global,
310
448
  last_n_requests=last_n_requests,
311
449
  latency=latency,
450
+ latency_previous=latency_previous,
312
451
  memory_allocation=memory_allocation,
313
452
  model_ttft=model_ttft,
314
453
  model_ttft_over_time=model_ttft_over_time,
315
454
  request_duration_over_time=request_duration_over_time,
316
455
  request_total=request_total,
317
456
  request_total_by_origin=request_total_by_origin,
457
+ request_total_by_origin_previous=request_total_by_origin_previous,
318
458
  request_total_per_code=request_total_per_code,
459
+ request_total_per_code_previous=request_total_per_code_previous,
460
+ request_total_previous=request_total_previous,
319
461
  rps=rps,
320
462
  rps_per_code=rps_per_code,
463
+ rps_per_code_previous=rps_per_code_previous,
464
+ rps_previous=rps_previous,
321
465
  token_rate=token_rate,
322
466
  token_total=token_total,
323
467
  )
@@ -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="ResourceMetricsRequestTotalPerCodePrevious")
7
+
8
+
9
+ @_attrs_define
10
+ class ResourceMetricsRequestTotalPerCodePrevious:
11
+ """Number of requests for the resource globally per code for the previous period"""
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
+ resource_metrics_request_total_per_code_previous = cls()
27
+
28
+ resource_metrics_request_total_per_code_previous.additional_properties = d
29
+ return resource_metrics_request_total_per_code_previous
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="ResourceMetricsRpsPerCodePrevious")
7
+
8
+
9
+ @_attrs_define
10
+ class ResourceMetricsRpsPerCodePrevious:
11
+ """Number of requests per second for the resource globally per code for the previous period"""
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
+ resource_metrics_rps_per_code_previous = cls()
27
+
28
+ resource_metrics_rps_per_code_previous.additional_properties = d
29
+ return resource_metrics_rps_per_code_previous
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