arize-phoenix 11.23.2__py3-none-any.whl → 11.24.1__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.

Potentially problematic release.


This version of arize-phoenix might be problematic. Click here for more details.

@@ -3,10 +3,11 @@ from typing import Any, Literal, Optional
3
3
 
4
4
  from dateutil.parser import isoparse
5
5
  from fastapi import APIRouter, HTTPException
6
- from pydantic import Field
6
+ from pydantic import Field, model_validator
7
7
  from starlette.requests import Request
8
8
  from starlette.status import HTTP_404_NOT_FOUND
9
9
  from strawberry.relay import GlobalID
10
+ from typing_extensions import Self
10
11
 
11
12
  from phoenix.db import models
12
13
  from phoenix.db.helpers import SupportedSQLDialect
@@ -36,15 +37,25 @@ class UpsertExperimentEvaluationRequestBody(V1RoutesBaseModel):
36
37
  )
37
38
  start_time: datetime = Field(description="The start time of the evaluation in ISO format")
38
39
  end_time: datetime = Field(description="The end time of the evaluation in ISO format")
39
- result: ExperimentEvaluationResult = Field(description="The result of the evaluation")
40
+ result: Optional[ExperimentEvaluationResult] = Field(
41
+ None, description="The result of the evaluation. Either result or error must be provided."
42
+ )
40
43
  error: Optional[str] = Field(
41
- None, description="Optional error message if the evaluation encountered an error"
44
+ None,
45
+ description="Error message if the evaluation encountered an error. "
46
+ "Either result or error must be provided.",
42
47
  )
43
48
  metadata: Optional[dict[str, Any]] = Field(
44
49
  default=None, description="Metadata for the evaluation"
45
50
  )
46
51
  trace_id: Optional[str] = Field(default=None, description="Optional trace ID for tracking")
47
52
 
53
+ @model_validator(mode="after")
54
+ def validate_result_or_error(self) -> Self:
55
+ if self.result is None and self.error is None:
56
+ raise ValueError("Either 'result' or 'error' must be provided")
57
+ return self
58
+
48
59
 
49
60
  class UpsertExperimentEvaluationResponseBodyData(V1RoutesBaseModel):
50
61
  id: str = Field(description="The ID of the upserted experiment evaluation")
@@ -1,22 +1,22 @@
1
1
  {
2
- "_components-PCtifE4_.js": {
3
- "file": "assets/components-PCtifE4_.js",
2
+ "_components-CBjkyAZ_.js": {
3
+ "file": "assets/components-CBjkyAZ_.js",
4
4
  "name": "components",
5
5
  "imports": [
6
6
  "_vendor-CU36oj8y.js",
7
- "_pages-U3zpr_jU.js",
7
+ "_pages-B8T9ap-6.js",
8
8
  "_vendor-arizeai-Ctgw0e1G.js",
9
9
  "_vendor-codemirror-Cojjzqb9.js",
10
10
  "_vendor-three-BLWp5bic.js"
11
11
  ]
12
12
  },
13
- "_pages-U3zpr_jU.js": {
14
- "file": "assets/pages-U3zpr_jU.js",
13
+ "_pages-B8T9ap-6.js": {
14
+ "file": "assets/pages-B8T9ap-6.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
17
  "_vendor-CU36oj8y.js",
18
18
  "_vendor-arizeai-Ctgw0e1G.js",
19
- "_components-PCtifE4_.js",
19
+ "_components-CBjkyAZ_.js",
20
20
  "_vendor-codemirror-Cojjzqb9.js",
21
21
  "_vendor-recharts-Bw30oz1A.js"
22
22
  ]
@@ -75,15 +75,15 @@
75
75
  "name": "vendor-three"
76
76
  },
77
77
  "index.tsx": {
78
- "file": "assets/index-B8qLHbUW.js",
78
+ "file": "assets/index-kl9TdGAc.js",
79
79
  "name": "index",
80
80
  "src": "index.tsx",
81
81
  "isEntry": true,
82
82
  "imports": [
83
83
  "_vendor-CU36oj8y.js",
84
84
  "_vendor-arizeai-Ctgw0e1G.js",
85
- "_pages-U3zpr_jU.js",
86
- "_components-PCtifE4_.js",
85
+ "_pages-B8T9ap-6.js",
86
+ "_components-CBjkyAZ_.js",
87
87
  "_vendor-three-BLWp5bic.js",
88
88
  "_vendor-codemirror-Cojjzqb9.js",
89
89
  "_vendor-shiki-DZajAPeq.js",