arize-phoenix 7.11.0__py3-none-any.whl → 7.12.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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 7.11.0
3
+ Version: 7.12.1
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://docs.arize.com/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -6,7 +6,7 @@ phoenix/exceptions.py,sha256=n2L2KKuecrdflB9MsCdAYCiSEvGJptIsfRkXMoJle7A,169
6
6
  phoenix/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
7
7
  phoenix/services.py,sha256=kpW1WL0kiB8XJsO6XycvZVJ-lBkNoenhQ7atCvBoSe8,5365
8
8
  phoenix/settings.py,sha256=ht-0oN-sMV6SPXrk7Tu1EZlngpAYkGNLYPhO8DyrdQI,661
9
- phoenix/version.py,sha256=x9MCn4dCG1RFCLIu1cexyXZxTu8pEkj0bwIVzIIVoxY,23
9
+ phoenix/version.py,sha256=2szdaPGvYYHEsBMMeewskoN2Yu2URh06p_5-YZo0P9M,23
10
10
  phoenix/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  phoenix/core/embedding_dimension.py,sha256=zKGbcvwOXgLf-yrJBpQyKtd-LEOPRKHnUToyAU8Owis,87
12
12
  phoenix/core/model.py,sha256=qBFraOtmwCCnWJltKNP18DDG0mULXigytlFsa6YOz6k,4837
@@ -16,7 +16,7 @@ phoenix/db/README.md,sha256=Mjrq0tG68uKQ81mN1Vmu3C795EEpZndmnE6CJXsPCXE,1909
16
16
  phoenix/db/__init__.py,sha256=pDjEFXukHmJBM-1D8RjmXkvLsz85YWNxMQczt81ec3A,118
17
17
  phoenix/db/alembic.ini,sha256=GIS6HpHaKaJbbuahZg1Rc1D2_QqyCkV9r58wdARGf6w,3262
18
18
  phoenix/db/bulk_inserter.py,sha256=faNjuwLqqsw4ky8sa4D0h9u5TvEDTOjrccUW89L008E,12725
19
- phoenix/db/engines.py,sha256=YqJJlziCzvNg3y5hLz4CkRjcgMxug2BXmoyFV2THcdk,6914
19
+ phoenix/db/engines.py,sha256=esKGo_cqQLKKXNlfK7iQ7BtkOYY2xNsLdjvW2DddGjU,7321
20
20
  phoenix/db/enums.py,sha256=tt7iovXLhVTLZ3_LbHNGgcI44SnNjXfkKtLAZG57T54,428
21
21
  phoenix/db/facilitator.py,sha256=sAYqzBXYSVBKPTQVYrd7ZmtqMAr1zP9dVJwjfNGW7hc,4207
22
22
  phoenix/db/helpers.py,sha256=daKbpY2QhTPo9a_T1xNHKI4WzWHkMmmrGIws7Hw-RZ4,4884
@@ -135,7 +135,7 @@ phoenix/server/api/dataloaders/cache/two_tier_cache.py,sha256=cmo8FUT3E91R139IEz
135
135
  phoenix/server/api/helpers/__init__.py,sha256=m2-xaSPqUiSs91k62JaRDjFNfl-1byxBfY-m_Vxw16U,272
136
136
  phoenix/server/api/helpers/dataset_helpers.py,sha256=DoMBTg-qXTnC_K4Evx1WKpCCYgRbITpVqyY-8efJRf0,8984
137
137
  phoenix/server/api/helpers/experiment_run_filters.py,sha256=DOnVwrmn39eAkk2mwuZP8kIcAnR5jrOgllEwWSjsw94,29893
138
- phoenix/server/api/helpers/playground_clients.py,sha256=AUZCc3lgHFi_hoipgK0tBr9eFA5ZEhLpNm7ZRoz7HeU,39035
138
+ phoenix/server/api/helpers/playground_clients.py,sha256=U9EwldYQtQrubT0cJDzUAo4Y7n18_xoU9uIKPYHiBHs,39890
139
139
  phoenix/server/api/helpers/playground_registry.py,sha256=CPLMziFB2wmr-dfbx7VbzO2f8YIG_k5RftzvGXYGQ1w,2570
140
140
  phoenix/server/api/helpers/playground_spans.py,sha256=qGk7V7IZK7EkRE1mvZyROpLN5kgOahOZifFzUWmqYFc,16546
141
141
  phoenix/server/api/input_types/AddExamplesToDatasetInput.py,sha256=mIQz0S_z8YdrktKIY6RCvtNJ2yZF9pYvTGgasUsI-54,430
@@ -158,7 +158,7 @@ phoenix/server/api/input_types/DeleteDatasetInput.py,sha256=p7xjCyWnVCIXHnezmDiW
158
158
  phoenix/server/api/input_types/DeleteExperimentsInput.py,sha256=4d9N0vSLYbuysAamGoPUP_m8vdVhwrZmXoi2vhy_HdI,141
159
159
  phoenix/server/api/input_types/DimensionFilter.py,sha256=eBYcn7ECSJQlEePvbStqkHBRicbIL4vEAzFJwX7bacQ,3137
160
160
  phoenix/server/api/input_types/DimensionInput.py,sha256=Vfx5FmiMKey4-EHDQsQRPzSAMRJMN5oVMLDUl4NKAa8,164
161
- phoenix/server/api/input_types/GenerativeModelInput.py,sha256=8eRKLMVwXbfc6QVQySN43BDA1JEY09a2x0Egy4K0jAQ,815
161
+ phoenix/server/api/input_types/GenerativeModelInput.py,sha256=n6OCkX44I1AIovMAHCxy8SvqPKDb_BYDPA-fn_JnckQ,634
162
162
  phoenix/server/api/input_types/Granularity.py,sha256=dbBlD_GsIBa8_xrx4JlLuR59bQ0NRB5H-cv1zvcb-cw,2299
163
163
  phoenix/server/api/input_types/InvocationParameters.py,sha256=I_FvPvY2sXxNd-kFSB96-1DOW7lo-VbqVWzppU_5hy8,5196
164
164
  phoenix/server/api/input_types/PatchAnnotationInput.py,sha256=NWhkcbcGNPwfOYsN3wm5YFNNrSc5T-8Y5my74RK99HE,520
@@ -287,10 +287,10 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
287
287
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
288
288
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
289
289
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
290
- phoenix/server/static/.vite/manifest.json,sha256=29ld8Ig3rYBgHM-q-o4ODwofoVhN4Y5RNTZfdUoKPAI,2163
291
- phoenix/server/static/assets/components-BPFARGZY.js,sha256=ED1GTDZ8gLmo0E81BIhumakKktXfDdKiuqQlGzWFy7I,393511
292
- phoenix/server/static/assets/index-DZnxuVKT.js,sha256=7dVHM4frEoU52so0pw4I69K7auD5B-V6UbvVdTMnO-Q,8729
293
- phoenix/server/static/assets/pages-C_s-dcVH.js,sha256=Ih32_04hGDa9VelBYEIXZrZVv0rEPUcQ9IYHoWHQ0po,686187
290
+ phoenix/server/static/.vite/manifest.json,sha256=-112B2hz7FbbbyjgMlsRk8-lZneQvQP4g-tM-IoZty0,2163
291
+ phoenix/server/static/assets/components-Caw_U14D.js,sha256=dlWsRhD1_3PxoeVVITya9Yp9IkfgDdo4dO21yKDZF5g,393511
292
+ phoenix/server/static/assets/index-EgdbaF48.js,sha256=FEa1qyVq5vNUWSUvLMoUWK2j1Ra7EdEOIWGLp8pXrgY,8729
293
+ phoenix/server/static/assets/pages-BFZvquxr.js,sha256=Y0tRNqTRt220FpZdHW7vQTOcCi87p8O3zSDS6BftByE,686674
294
294
  phoenix/server/static/assets/vendor-DvC8cT4X.js,sha256=-EzJrg6BeYa58JPfaZC6KS5gvkJ8gC1n-Sb7lP-pOkw,2159677
295
295
  phoenix/server/static/assets/vendor-DxkFTwjz.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
296
296
  phoenix/server/static/assets/vendor-arizeai-Do1793cv.js,sha256=IFADVVEZ8VY9o4iqYighRedZTXSyi1uZMTFFsBeIYis,305184
@@ -337,9 +337,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
337
337
  phoenix/utilities/re.py,sha256=6YyUWIkv0zc2SigsxfOWIHzdpjKA_TZo2iqKq7zJKvw,2081
338
338
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
339
339
  phoenix/utilities/template_formatters.py,sha256=gh9PJD6WEGw7TEYXfSst1UR4pWWwmjxMLrDVQ_CkpkQ,2779
340
- arize_phoenix-7.11.0.dist-info/METADATA,sha256=Q184BZ8_Gexu8FPUI3pqIeFKwF7m_XXnI-sgZiLJsBo,23390
341
- arize_phoenix-7.11.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
342
- arize_phoenix-7.11.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
343
- arize_phoenix-7.11.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
344
- arize_phoenix-7.11.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
345
- arize_phoenix-7.11.0.dist-info/RECORD,,
340
+ arize_phoenix-7.12.1.dist-info/METADATA,sha256=EdZdYv0yVK-kvYDe-h3UPPFs9OHt55AhD8FWkTsDtdQ,23390
341
+ arize_phoenix-7.12.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
342
+ arize_phoenix-7.12.1.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
343
+ arize_phoenix-7.12.1.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
344
+ arize_phoenix-7.12.1.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
345
+ arize_phoenix-7.12.1.dist-info/RECORD,,
phoenix/db/engines.py CHANGED
@@ -4,7 +4,7 @@ from collections.abc import Callable
4
4
  from datetime import datetime
5
5
  from enum import Enum
6
6
  from sqlite3 import Connection
7
- from typing import Any
7
+ from typing import Any, Mapping
8
8
 
9
9
  import aiosqlite
10
10
  import numpy as np
@@ -163,23 +163,15 @@ def aio_postgresql_engine(
163
163
  log_to_stdout: bool = False,
164
164
  log_migrations_to_stdout: bool = True,
165
165
  ) -> AsyncEngine:
166
- url_query = dict(url.query)
167
- sslmode = url_query.pop("sslmode", None) or url_query.pop("ssl", None)
168
166
  engine = create_async_engine(
169
- url=url.set(
170
- # https://github.com/MagicStack/asyncpg/issues/737
171
- query={**url_query, "ssl": sslmode} if sslmode else url_query,
172
- ),
167
+ url=url.set(query=_asyncpg_url_query(url.query)),
173
168
  echo=log_to_stdout,
174
169
  json_serializer=_dumps,
175
170
  )
176
171
  if not migrate:
177
172
  return engine
178
173
  sync_engine = sqlalchemy.create_engine(
179
- url=url.set(
180
- drivername="postgresql+psycopg",
181
- query={**url_query, "sslmode": sslmode} if sslmode else url_query,
182
- ),
174
+ url=url.set(drivername="postgresql+psycopg", query=_psycopg_url_query(url.query)),
183
175
  echo=log_migrations_to_stdout,
184
176
  json_serializer=_dumps,
185
177
  )
@@ -189,6 +181,24 @@ def aio_postgresql_engine(
189
181
  return engine
190
182
 
191
183
 
184
+ def _asyncpg_url_query(query: Mapping[str, Any]) -> dict[str, Any]:
185
+ ans = dict(query)
186
+ if sslmode := (ans.pop("sslmode", None) or ans.pop("ssl", None)):
187
+ # https://github.com/MagicStack/asyncpg/issues/737
188
+ ans["ssl"] = sslmode
189
+ return ans
190
+
191
+
192
+ def _psycopg_url_query(query: Mapping[str, Any]) -> dict[str, Any]:
193
+ ans = dict(query)
194
+ if sslmode := (ans.pop("sslmode", None) or ans.pop("ssl", None)):
195
+ ans["sslmode"] = sslmode
196
+ # prepared_statement_cache_size is only used by asyncpg, see:
197
+ # https://docs.sqlalchemy.org/en/20/dialects/postgresql.html#prepared-statement-cache
198
+ ans.pop("prepared_statement_cache_size", None)
199
+ return ans
200
+
201
+
192
202
  def _dumps(obj: Any) -> str:
193
203
  return json.dumps(obj, cls=_Encoder)
194
204
 
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import asyncio
2
4
  import importlib.util
3
5
  import inspect
@@ -7,8 +9,9 @@ import time
7
9
  from abc import ABC, abstractmethod
8
10
  from collections.abc import AsyncIterator, Callable, Iterator
9
11
  from functools import wraps
10
- from typing import TYPE_CHECKING, Any, Hashable, Mapping, Optional, Union
12
+ from typing import TYPE_CHECKING, Any, Hashable, Mapping, MutableMapping, Optional, Union
11
13
 
14
+ import wrapt
12
15
  from openinference.instrumentation import safe_json_dumps
13
16
  from openinference.semconv.trace import (
14
17
  OpenInferenceLLMProviderValues,
@@ -51,11 +54,13 @@ from phoenix.server.api.types.ChatCompletionSubscriptionPayload import (
51
54
  from phoenix.server.api.types.GenerativeProvider import GenerativeProviderKey
52
55
 
53
56
  if TYPE_CHECKING:
57
+ import httpx
54
58
  from anthropic.types import MessageParam, TextBlockParam, ToolResultBlockParam
55
59
  from google.generativeai.types import ContentType
56
60
  from openai import AsyncAzureOpenAI, AsyncOpenAI
57
61
  from openai.types import CompletionUsage
58
62
  from openai.types.chat import ChatCompletionMessageParam, ChatCompletionMessageToolCallParam
63
+ from opentelemetry.util.types import AttributeValue
59
64
 
60
65
  SetSpanAttributesFn: TypeAlias = Callable[[Mapping[str, Any]], None]
61
66
  ChatCompletionChunk: TypeAlias = Union[TextChunk, ToolCallChunk]
@@ -169,7 +174,7 @@ class PlaygroundStreamingClient(ABC):
169
174
  model: GenerativeModelInput,
170
175
  api_key: Optional[str] = None,
171
176
  ) -> None:
172
- self._attributes: dict[str, Any] = dict()
177
+ self._attributes: dict[str, AttributeValue] = dict()
173
178
 
174
179
  @classmethod
175
180
  @abstractmethod
@@ -246,6 +251,7 @@ class OpenAIBaseStreamingClient(PlaygroundStreamingClient):
246
251
  self.client = client
247
252
  self.model_name = model.name
248
253
  self.rate_limiter = PlaygroundRateLimiter(model.provider_key, OpenAIRateLimitError)
254
+ self.client._client = _HttpxClient(self.client._client, self._attributes)
249
255
 
250
256
  @classmethod
251
257
  def dependencies(cls) -> list[Dependency]:
@@ -696,6 +702,7 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
696
702
  self.client = anthropic.AsyncAnthropic(api_key=api_key)
697
703
  self.model_name = model.name
698
704
  self.rate_limiter = PlaygroundRateLimiter(model.provider_key, anthropic.RateLimitError)
705
+ self.client._client = _HttpxClient(self.client._client, self._attributes)
699
706
 
700
707
  @classmethod
701
708
  def dependencies(cls) -> list[Dependency]:
@@ -1005,3 +1012,15 @@ LLM_SYSTEM = SpanAttributes.LLM_SYSTEM
1005
1012
  LLM_TOKEN_COUNT_PROMPT = SpanAttributes.LLM_TOKEN_COUNT_PROMPT
1006
1013
  LLM_TOKEN_COUNT_COMPLETION = SpanAttributes.LLM_TOKEN_COUNT_COMPLETION
1007
1014
  LLM_TOKEN_COUNT_TOTAL = SpanAttributes.LLM_TOKEN_COUNT_TOTAL
1015
+
1016
+
1017
+ class _HttpxClient(wrapt.ObjectProxy): # type: ignore
1018
+ def __init__(self, wrapped: httpx.AsyncClient, attributes: MutableMapping[str, Any]):
1019
+ super().__init__(wrapped)
1020
+ self._self_attributes = attributes
1021
+
1022
+ async def send(self, request: httpx.Request, **kwargs: Any) -> Any:
1023
+ self._self_attributes["url.full"] = str(request.url)
1024
+ self._self_attributes["url.path"] = request.url.path.removeprefix(self.base_url.path)
1025
+ response = await self.__wrapped__.send(request, **kwargs)
1026
+ return response
@@ -17,7 +17,3 @@ class GenerativeModelInput:
17
17
  """ The endpoint to use for the model. Only required for Azure OpenAI models. """
18
18
  api_version: Optional[str] = UNSET
19
19
  """ The API version to use for the model. """
20
-
21
- def __post_init__(self) -> None:
22
- if self.base_url and self.endpoint:
23
- raise ValueError("Must not provide both a base URL and an endpoint at the same time.")
@@ -1,22 +1,22 @@
1
1
  {
2
- "_components-BPFARGZY.js": {
3
- "file": "assets/components-BPFARGZY.js",
2
+ "_components-Caw_U14D.js": {
3
+ "file": "assets/components-Caw_U14D.js",
4
4
  "name": "components",
5
5
  "imports": [
6
6
  "_vendor-DvC8cT4X.js",
7
- "_pages-C_s-dcVH.js",
7
+ "_pages-BFZvquxr.js",
8
8
  "_vendor-arizeai-Do1793cv.js",
9
9
  "_vendor-codemirror-BzwZPyJM.js",
10
10
  "_vendor-three-DwGkEfCM.js"
11
11
  ]
12
12
  },
13
- "_pages-C_s-dcVH.js": {
14
- "file": "assets/pages-C_s-dcVH.js",
13
+ "_pages-BFZvquxr.js": {
14
+ "file": "assets/pages-BFZvquxr.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
17
  "_vendor-DvC8cT4X.js",
18
18
  "_vendor-arizeai-Do1793cv.js",
19
- "_components-BPFARGZY.js",
19
+ "_components-Caw_U14D.js",
20
20
  "_vendor-codemirror-BzwZPyJM.js",
21
21
  "_vendor-recharts-_Jb7JjhG.js"
22
22
  ]
@@ -69,15 +69,15 @@
69
69
  "name": "vendor-three"
70
70
  },
71
71
  "index.tsx": {
72
- "file": "assets/index-DZnxuVKT.js",
72
+ "file": "assets/index-EgdbaF48.js",
73
73
  "name": "index",
74
74
  "src": "index.tsx",
75
75
  "isEntry": true,
76
76
  "imports": [
77
77
  "_vendor-DvC8cT4X.js",
78
78
  "_vendor-arizeai-Do1793cv.js",
79
- "_pages-C_s-dcVH.js",
80
- "_components-BPFARGZY.js",
79
+ "_pages-BFZvquxr.js",
80
+ "_components-Caw_U14D.js",
81
81
  "_vendor-three-DwGkEfCM.js",
82
82
  "_vendor-codemirror-BzwZPyJM.js",
83
83
  "_vendor-shiki-Cl9QBraO.js",
@@ -1,4 +1,4 @@
1
- import{r as h,R as G,j as e,n as Wn,a as we,e as Xe,s as T1,b as e1,c as ke,d as N1,f as Oa,g as ge,h as _a,i as Fa,k as R1,l,m as Na,o as Se,C as t1,p as Be,q as $e,t as N,u as Ra,v as Ha,L as Un,w as jn,x as Qn,y as oe,z as w,A as u1,B as qn,D as m,E as Xn,F as Yn,G as Ze,$ as Ka,H as Ba,I as $a,J as Z1,K as Jn,M as a1,N as i1,O as et,P as r1,Q as Za,S as Ga,T as Wa,U,V as Ua,W as ja,X as Qa,Y as nt,Z as qa,_ as Xa,a0 as tt,a1 as Ya,a2 as V,a3 as at,a4 as Te,a5 as m1,a6 as Ee,a7 as F,a8 as Ja,a9 as ei,aa as ni,ab as ti,ac as pn,ad as ai,ae as ii,af as ri,ag as gn,ah as oi,ai as li,aj as si,ak as I1,al as G1,am as ci,an as di,ao as ui,ap as mi,aq as hi,ar as pi,as as gi,at as fi,au as Ci,av as bi,aw as Li,ax as vi,ay as yi,az as wi,aA as ki,aB as Si,aC as xi}from"./vendor-DvC8cT4X.js";import{m as Mi,T as Ti,a as fn,u as Ii}from"./pages-C_s-dcVH.js";import{u as Ai,_ as it,a as te,T as j,b as zi,c as Ei,R as J,d as Ge,e as ne,f as Vi,E as rt,g as B,h as W1,i as Ve,j as ot,k as ve,D as h1,l as o1,I as U1,m as j1,n as lt,P as Q1,C as p1,o as g1,A as We,L as Ce,p as Di,q as ye,F as st,r as Pi,s as Oi,t as _i,v as ce,w as de,x as Fi,y as Ni,z as Cn,B as Ri}from"./vendor-arizeai-Do1793cv.js";import{L as ct,a as dt,l as H1,j as ut,h as Hi,b as Ki,c as Bi,d as $i,e as Zi,f as Gi,s as Wi,R as Ue,g as mt,n as je,i as ht,E as q1,p as Ui,k as ji}from"./vendor-codemirror-BzwZPyJM.js";import{V as Qi}from"./vendor-three-DwGkEfCM.js";const pt=function(){var n={defaultValue:null,kind:"LocalArgument",name:"clusters"},t={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},a={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},i={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},r={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},o=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],s=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:o,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:o,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[n,t,a,i,r],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:s,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[n,a,t,i,r],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:s},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
1
+ import{r as h,R as G,j as e,n as Wn,a as we,e as Xe,s as T1,b as e1,c as ke,d as N1,f as Oa,g as ge,h as _a,i as Fa,k as R1,l,m as Na,o as Se,C as t1,p as Be,q as $e,t as N,u as Ra,v as Ha,L as Un,w as jn,x as Qn,y as oe,z as w,A as u1,B as qn,D as m,E as Xn,F as Yn,G as Ze,$ as Ka,H as Ba,I as $a,J as Z1,K as Jn,M as a1,N as i1,O as et,P as r1,Q as Za,S as Ga,T as Wa,U,V as Ua,W as ja,X as Qa,Y as nt,Z as qa,_ as Xa,a0 as tt,a1 as Ya,a2 as V,a3 as at,a4 as Te,a5 as m1,a6 as Ee,a7 as F,a8 as Ja,a9 as ei,aa as ni,ab as ti,ac as pn,ad as ai,ae as ii,af as ri,ag as gn,ah as oi,ai as li,aj as si,ak as I1,al as G1,am as ci,an as di,ao as ui,ap as mi,aq as hi,ar as pi,as as gi,at as fi,au as Ci,av as bi,aw as Li,ax as vi,ay as yi,az as wi,aA as ki,aB as Si,aC as xi}from"./vendor-DvC8cT4X.js";import{m as Mi,T as Ti,a as fn,u as Ii}from"./pages-BFZvquxr.js";import{u as Ai,_ as it,a as te,T as j,b as zi,c as Ei,R as J,d as Ge,e as ne,f as Vi,E as rt,g as B,h as W1,i as Ve,j as ot,k as ve,D as h1,l as o1,I as U1,m as j1,n as lt,P as Q1,C as p1,o as g1,A as We,L as Ce,p as Di,q as ye,F as st,r as Pi,s as Oi,t as _i,v as ce,w as de,x as Fi,y as Ni,z as Cn,B as Ri}from"./vendor-arizeai-Do1793cv.js";import{L as ct,a as dt,l as H1,j as ut,h as Hi,b as Ki,c as Bi,d as $i,e as Zi,f as Gi,s as Wi,R as Ue,g as mt,n as je,i as ht,E as q1,p as Ui,k as ji}from"./vendor-codemirror-BzwZPyJM.js";import{V as Qi}from"./vendor-three-DwGkEfCM.js";const pt=function(){var n={defaultValue:null,kind:"LocalArgument",name:"clusters"},t={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},a={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},i={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},r={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},o=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],s=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:o,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:o,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[n,t,a,i,r],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:s,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[n,a,t,i,r],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:s},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
2
2
  $clusters: [ClusterInput!]!
3
3
  $fetchDataQualityMetric: Boolean!
4
4
  $dataQualityMetricColumnName: String
@@ -1,4 +1,4 @@
1
- import{r as c,j as e,dL as v,l as n,U as F,R as w,D as L,bq as E,dM as S,dN as R,dO as a,dP as k,t as I,dQ as A}from"./vendor-DvC8cT4X.js";import{k as C,Q as _,D as j,Y as z}from"./vendor-arizeai-Do1793cv.js";import{E as O,L as T,R as D,r as N,b as G,F as M,A as U,c as W,d as q,P as B,h as J,M as K,e as m,D as Q,f as V,g as H,i as Y,j as $,k as X,l as Z,p as ee,n as h,o as ae,S as re,s as te,q as oe,t as g,v as ne,w as u,x as b,y as se,z as le,B as ie,C as de,G as ce,H as x,I as pe,J as me,K as he,N as ge,O as ue,Q as be,U as xe,V as fe,W as Pe}from"./pages-C_s-dcVH.js";import{V as ye,d4 as ve,at as Fe,ab as we,d5 as Le,d6 as Ee}from"./components-BPFARGZY.js";import"./vendor-three-DwGkEfCM.js";import"./vendor-codemirror-BzwZPyJM.js";import"./vendor-shiki-Cl9QBraO.js";import"./vendor-recharts-_Jb7JjhG.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))d(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&d(l)}).observe(document,{childList:!0,subtree:!0});function i(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function d(t){if(t.ep)return;t.ep=!0;const o=i(t);fetch(t.href,o)}})();const f="arize-phoenix-feature-flags",p={__RESET__:!1};function Se(){const r=localStorage.getItem(f);if(!r)return p;try{const s=JSON.parse(r);return Object.assign({},p,s)}catch{return p}}const P=c.createContext(null);function Re(){const r=w.useContext(P);if(r===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return r}function ke(r){const[s,i]=c.useState(Se()),d=t=>{localStorage.setItem(f,JSON.stringify(t)),i(t)};return e(P.Provider,{value:{featureFlags:s,setFeatureFlags:d},children:e(Ie,{children:r.children})})}function Ie(r){const{children:s}=r,{featureFlags:i,setFeatureFlags:d}=Re(),[t,o]=c.useState(!1);return v("ctrl+shift+f",()=>o(!0)),n(F,{children:[s,e(j,{type:"modal",isDismissable:!0,onDismiss:()=>o(!1),children:t&&e(C,{title:"Feature Flags",children:e(ye,{height:"size-1000",padding:"size-100",children:Object.keys(i).map(l=>e(_,{isSelected:i[l],onChange:y=>d({...i,[l]:y}),children:l},l))})})})]})}function Ae(){return e(E,{styles:L`
1
+ import{r as c,j as e,dL as v,l as n,U as F,R as w,D as L,bq as E,dM as S,dN as R,dO as a,dP as k,t as I,dQ as A}from"./vendor-DvC8cT4X.js";import{k as C,Q as _,D as j,Y as z}from"./vendor-arizeai-Do1793cv.js";import{E as O,L as T,R as D,r as N,b as G,F as M,A as U,c as W,d as q,P as B,h as J,M as K,e as m,D as Q,f as V,g as H,i as Y,j as $,k as X,l as Z,p as ee,n as h,o as ae,S as re,s as te,q as oe,t as g,v as ne,w as u,x as b,y as se,z as le,B as ie,C as de,G as ce,H as x,I as pe,J as me,K as he,N as ge,O as ue,Q as be,U as xe,V as fe,W as Pe}from"./pages-BFZvquxr.js";import{V as ye,d4 as ve,at as Fe,ab as we,d5 as Le,d6 as Ee}from"./components-Caw_U14D.js";import"./vendor-three-DwGkEfCM.js";import"./vendor-codemirror-BzwZPyJM.js";import"./vendor-shiki-Cl9QBraO.js";import"./vendor-recharts-_Jb7JjhG.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))d(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&d(l)}).observe(document,{childList:!0,subtree:!0});function i(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function d(t){if(t.ep)return;t.ep=!0;const o=i(t);fetch(t.href,o)}})();const f="arize-phoenix-feature-flags",p={__RESET__:!1};function Se(){const r=localStorage.getItem(f);if(!r)return p;try{const s=JSON.parse(r);return Object.assign({},p,s)}catch{return p}}const P=c.createContext(null);function Re(){const r=w.useContext(P);if(r===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return r}function ke(r){const[s,i]=c.useState(Se()),d=t=>{localStorage.setItem(f,JSON.stringify(t)),i(t)};return e(P.Provider,{value:{featureFlags:s,setFeatureFlags:d},children:e(Ie,{children:r.children})})}function Ie(r){const{children:s}=r,{featureFlags:i,setFeatureFlags:d}=Re(),[t,o]=c.useState(!1);return v("ctrl+shift+f",()=>o(!0)),n(F,{children:[s,e(j,{type:"modal",isDismissable:!0,onDismiss:()=>o(!1),children:t&&e(C,{title:"Feature Flags",children:e(ye,{height:"size-1000",padding:"size-100",children:Object.keys(i).map(l=>e(_,{isSelected:i[l],onChange:y=>d({...i,[l]:y}),children:l},l))})})})]})}function Ae(){return e(E,{styles:L`
2
2
  body {
3
3
  background-color: var(--ac-global-color-grey-75);
4
4
  color: var(--ac-global-text-color-900);