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

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: 8.19.1
3
+ Version: 8.20.0
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
@@ -71,7 +71,7 @@ Requires-Dist: opentelemetry-sdk; extra == 'container'
71
71
  Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
72
72
  Requires-Dist: prometheus-client; extra == 'container'
73
73
  Requires-Dist: py-grpc-prometheus; extra == 'container'
74
- Requires-Dist: strawberry-graphql[opentelemetry]==0.262.0; extra == 'container'
74
+ Requires-Dist: strawberry-graphql[opentelemetry]==0.262.5; extra == 'container'
75
75
  Requires-Dist: umap-learn; extra == 'container'
76
76
  Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
77
77
  Provides-Extra: dev
@@ -102,7 +102,7 @@ Requires-Dist: pytest-postgresql; extra == 'dev'
102
102
  Requires-Dist: pytest-xdist; extra == 'dev'
103
103
  Requires-Dist: pytest==8.3.3; extra == 'dev'
104
104
  Requires-Dist: ruff==0.6.9; extra == 'dev'
105
- Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.262.0; extra == 'dev'
105
+ Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.262.5; extra == 'dev'
106
106
  Requires-Dist: tabulate; extra == 'dev'
107
107
  Requires-Dist: tox-uv==1.11.3; extra == 'dev'
108
108
  Requires-Dist: tox==4.18.1; extra == 'dev'
@@ -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=x87BX7hWGQQZbrW_vrYqFR_izCGfO9gFc--JXUG4Tdk,754
9
- phoenix/version.py,sha256=EdcJbWKzyoFhfVdECuY4DGAr_RdK6ZEbxDWTeRBVI3s,23
9
+ phoenix/version.py,sha256=k3o8B8ekPQlTH_dgFOerZ79Aj40vb2_HH8jQTSy7DO8,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
@@ -267,7 +267,7 @@ phoenix/server/api/types/MimeType.py,sha256=Zpi6zCalkSFgsvhzvOs-O1gYA04usAi9H__Q
267
267
  phoenix/server/api/types/Model.py,sha256=8UIFqMe1q-2ufBNg-gxHusV8wM1h-KbfLUeJjyVcMvQ,8081
268
268
  phoenix/server/api/types/NumericRange.py,sha256=afEjgF97Go_OvmjMggbPBt-zGM8IONewAyEiKEHRds0,192
269
269
  phoenix/server/api/types/PerformanceMetric.py,sha256=KFkmJDqP43eDUtARQOUqR7NYcxvL6Vh2uisHWU6H3ko,387
270
- phoenix/server/api/types/Project.py,sha256=Rtggx5_X9SfVeepxjRt8Qfy0H2EY26U5kUQq_geuZNI,20573
270
+ phoenix/server/api/types/Project.py,sha256=d9bEG5nejolqFmgpNF-LtXJK8kFxVo_5qmHRH3YAf-8,20639
271
271
  phoenix/server/api/types/ProjectSession.py,sha256=fyfVtpUpFOTnBx8DFnH3dr7WXAssN0ooAgrQSSi7kEI,4677
272
272
  phoenix/server/api/types/Prompt.py,sha256=ccP4eq1e38xbF0afclGWLOuDpBVpNbJ3AOSRClF8yFQ,4955
273
273
  phoenix/server/api/types/PromptLabel.py,sha256=g3IDSPYRZwb0qpMAk93R6J96jgYULUYGOciTnpeh3sI,1321
@@ -314,16 +314,16 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
314
314
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
315
315
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
316
316
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
317
- phoenix/server/static/.vite/manifest.json,sha256=86sNJXO2BgT6lbAV6gur9ttIsslZFkrasYN8_exwTYI,2165
318
- phoenix/server/static/assets/components-C28SkolB.js,sha256=8vbczseUKgr-98J4CHl508XrdK4faQ_q56DNwOQgNrk,451442
319
- phoenix/server/static/assets/index-WrtAISug.js,sha256=fQf4Q1uBcWK7p8J6CSCSZpxBCYgKpy92KRrmJt1zx2E,60234
320
- phoenix/server/static/assets/pages-eLqonMjF.js,sha256=_bwL6q4bhIw8WNg2nb9Fw7NZgjF5l3W9zksMpfxad5s,861335
317
+ phoenix/server/static/.vite/manifest.json,sha256=O5XTnV-DM4zg9i7HyxNJBv0NEehr4_mwNj1WwgXDcuk,2165
318
+ phoenix/server/static/assets/components-aaAzONZ2.js,sha256=eT4f8j_YAfVD3MqDm1gAcx0yXA1_NwsOD-HKfQ23rOg,449221
319
+ phoenix/server/static/assets/index-D2lXCDzI.js,sha256=v1fHqqPAH8-kZx78LuVkPOl3LPBJkoWSuohEKDY4Zgw,60234
320
+ phoenix/server/static/assets/pages-Cn9q0Wzi.js,sha256=ym3eZIWL_V2cVOolPjmZcGKj1jOJtmJuzjaStH0nia0,862145
321
+ phoenix/server/static/assets/vendor-BVuUQP12.js,sha256=mFIawdPiS0SdtxIfIzGwn0Snm3zlckFrR2Bgyy71Mn4,2503909
321
322
  phoenix/server/static/assets/vendor-Cg6lcjUC.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
322
- phoenix/server/static/assets/vendor-CwC1K6mo.js,sha256=gbXr7JyB3INCl8tooZjOWgh17pPzJccRJerVxaq9wsw,2503909
323
- phoenix/server/static/assets/vendor-arizeai-B7-2AIAM.js,sha256=FprcglI19nrEQstQKTkSMRdM3asUu39eOAsSED6jh7k,193248
324
- phoenix/server/static/assets/vendor-codemirror-D3xhkqGE.js,sha256=dRCy3Yh4HSQ7ipu9hdWwHebeU6zK58LLUDiebC4U98A,781264
325
- phoenix/server/static/assets/vendor-recharts-B_VgO7bY.js,sha256=PyctbCEswAkidvKG9rrcHexOWhn8jW7U66np1L92ZcE,282109
326
- phoenix/server/static/assets/vendor-shiki-CK18CSqG.js,sha256=jEit22_c1RfyEMpL4lSaxSFdAo14sDGi6OluXw8dzsA,8980312
323
+ phoenix/server/static/assets/vendor-arizeai-GniwlNtJ.js,sha256=xQN3M1YOJ_ZVkcbqhpiA3vdCfyb_bLy7SpgoyVsQKTo,193248
324
+ phoenix/server/static/assets/vendor-codemirror-B2cYKEnB.js,sha256=U1PhY85dMhD3mbGm_hulA397Amzu8wZclhj0deKtjcg,781264
325
+ phoenix/server/static/assets/vendor-recharts-BcoH60nz.js,sha256=4Waqe_OjOLzVDzXQaeC5JssAFEBiQ_-sPQzUTJcTpFI,282109
326
+ phoenix/server/static/assets/vendor-shiki-DWx3wasT.js,sha256=tLlrSbxqQCh6xQA2ofGcH9B9H1Nh0x_nuQ4k-KjZAi4,8980312
327
327
  phoenix/server/static/assets/vendor-three-C5WAXd5r.js,sha256=ELkg06u70N7h8oFmvqdoHyPuUf9VgGEWeT4LKFx4VWo,620975
328
328
  phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
329
  phoenix/server/templates/index.html,sha256=e8_jdi7Eo19SK7DI_gglkTW094D17E0VAegoMmmmvIc,4330
@@ -364,9 +364,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
364
364
  phoenix/utilities/re.py,sha256=6YyUWIkv0zc2SigsxfOWIHzdpjKA_TZo2iqKq7zJKvw,2081
365
365
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
366
366
  phoenix/utilities/template_formatters.py,sha256=gh9PJD6WEGw7TEYXfSst1UR4pWWwmjxMLrDVQ_CkpkQ,2779
367
- arize_phoenix-8.19.1.dist-info/METADATA,sha256=uE6TpM6rcJFGmcava63Vnw2Q3lCjpJtpC2QU5dp45Bg,21378
368
- arize_phoenix-8.19.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
369
- arize_phoenix-8.19.1.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
370
- arize_phoenix-8.19.1.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
371
- arize_phoenix-8.19.1.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
372
- arize_phoenix-8.19.1.dist-info/RECORD,,
367
+ arize_phoenix-8.20.0.dist-info/METADATA,sha256=1m6l3CxcbIdrRivpe_joJMrO1XbBgykogVvUv1PnZYQ,21378
368
+ arize_phoenix-8.20.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
369
+ arize_phoenix-8.20.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
370
+ arize_phoenix-8.20.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
371
+ arize_phoenix-8.20.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
372
+ arize_phoenix-8.20.0.dist-info/RECORD,,
@@ -236,21 +236,6 @@ class Project(Node):
236
236
  stmt = stmt.where(time_range.start <= models.Span.start_time)
237
237
  if time_range.end:
238
238
  stmt = stmt.where(models.Span.start_time < time_range.end)
239
- if root_spans_only:
240
- # A root span is either a span with no parent_id or an orphan span
241
- # (a span whose parent_id references a span that doesn't exist in the database)
242
- if orphan_span_as_root_span:
243
- # Include both types of root spans
244
- parent_spans = select(models.Span.span_id).alias("parent_spans")
245
- stmt = stmt.where(
246
- ~select(1).where(models.Span.parent_id == parent_spans.c.span_id).exists()
247
- # Note: We avoid using an OR clause with Span.parent_id.is_(None) here
248
- # because it significantly degraded PostgreSQL performance (>10x worse)
249
- # during testing.
250
- )
251
- else:
252
- # Only include explicit root spans (spans with parent_id = NULL)
253
- stmt = stmt.where(models.Span.parent_id.is_(None))
254
239
  if filter_condition:
255
240
  span_filter = SpanFilter(condition=filter_condition)
256
241
  stmt = span_filter(stmt)
@@ -274,11 +259,29 @@ class Project(Node):
274
259
  )
275
260
  else:
276
261
  stmt = stmt.where(models.Span.id > cursor.rowid)
262
+ stmt = stmt.order_by(cursor_rowid_column)
263
+ if root_spans_only:
264
+ # A root span is either a span with no parent_id or an orphan span
265
+ # (a span whose parent_id references a span that doesn't exist in the database)
266
+ if orphan_span_as_root_span:
267
+ # Include both types of root spans
268
+ parent_spans = select(models.Span.span_id).alias("parent_spans")
269
+ candidate_spans = stmt.add_columns(models.Span.parent_id).cte("candidate_spans")
270
+ stmt = select(candidate_spans).where(
271
+ or_(
272
+ candidate_spans.c.parent_id.is_(None),
273
+ ~select(1)
274
+ .where(candidate_spans.c.parent_id == parent_spans.c.span_id)
275
+ .exists(),
276
+ )
277
+ )
278
+ else:
279
+ # Only include explicit root spans (spans with parent_id = NULL)
280
+ stmt = stmt.where(models.Span.parent_id.is_(None))
277
281
  if first:
278
282
  stmt = stmt.limit(
279
283
  first + 1 # overfetch by one to determine whether there's a next page
280
284
  )
281
- stmt = stmt.order_by(cursor_rowid_column)
282
285
  cursors_and_nodes = []
283
286
  async with info.context.db() as session:
284
287
  span_records = await session.stream(stmt)
@@ -1,32 +1,28 @@
1
1
  {
2
- "_components-C28SkolB.js": {
3
- "file": "assets/components-C28SkolB.js",
2
+ "_components-aaAzONZ2.js": {
3
+ "file": "assets/components-aaAzONZ2.js",
4
4
  "name": "components",
5
5
  "imports": [
6
- "_vendor-CwC1K6mo.js",
7
- "_pages-eLqonMjF.js",
8
- "_vendor-arizeai-B7-2AIAM.js",
9
- "_vendor-codemirror-D3xhkqGE.js",
6
+ "_vendor-BVuUQP12.js",
7
+ "_pages-Cn9q0Wzi.js",
8
+ "_vendor-arizeai-GniwlNtJ.js",
9
+ "_vendor-codemirror-B2cYKEnB.js",
10
10
  "_vendor-three-C5WAXd5r.js"
11
11
  ]
12
12
  },
13
- "_pages-eLqonMjF.js": {
14
- "file": "assets/pages-eLqonMjF.js",
13
+ "_pages-Cn9q0Wzi.js": {
14
+ "file": "assets/pages-Cn9q0Wzi.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
- "_vendor-CwC1K6mo.js",
18
- "_vendor-arizeai-B7-2AIAM.js",
19
- "_components-C28SkolB.js",
20
- "_vendor-codemirror-D3xhkqGE.js",
21
- "_vendor-recharts-B_VgO7bY.js"
17
+ "_vendor-BVuUQP12.js",
18
+ "_vendor-arizeai-GniwlNtJ.js",
19
+ "_components-aaAzONZ2.js",
20
+ "_vendor-codemirror-B2cYKEnB.js",
21
+ "_vendor-recharts-BcoH60nz.js"
22
22
  ]
23
23
  },
24
- "_vendor-Cg6lcjUC.css": {
25
- "file": "assets/vendor-Cg6lcjUC.css",
26
- "src": "_vendor-Cg6lcjUC.css"
27
- },
28
- "_vendor-CwC1K6mo.js": {
29
- "file": "assets/vendor-CwC1K6mo.js",
24
+ "_vendor-BVuUQP12.js": {
25
+ "file": "assets/vendor-BVuUQP12.js",
30
26
  "name": "vendor",
31
27
  "imports": [
32
28
  "_vendor-three-C5WAXd5r.js"
@@ -35,33 +31,37 @@
35
31
  "assets/vendor-Cg6lcjUC.css"
36
32
  ]
37
33
  },
38
- "_vendor-arizeai-B7-2AIAM.js": {
39
- "file": "assets/vendor-arizeai-B7-2AIAM.js",
34
+ "_vendor-Cg6lcjUC.css": {
35
+ "file": "assets/vendor-Cg6lcjUC.css",
36
+ "src": "_vendor-Cg6lcjUC.css"
37
+ },
38
+ "_vendor-arizeai-GniwlNtJ.js": {
39
+ "file": "assets/vendor-arizeai-GniwlNtJ.js",
40
40
  "name": "vendor-arizeai",
41
41
  "imports": [
42
- "_vendor-CwC1K6mo.js"
42
+ "_vendor-BVuUQP12.js"
43
43
  ]
44
44
  },
45
- "_vendor-codemirror-D3xhkqGE.js": {
46
- "file": "assets/vendor-codemirror-D3xhkqGE.js",
45
+ "_vendor-codemirror-B2cYKEnB.js": {
46
+ "file": "assets/vendor-codemirror-B2cYKEnB.js",
47
47
  "name": "vendor-codemirror",
48
48
  "imports": [
49
- "_vendor-CwC1K6mo.js",
50
- "_vendor-shiki-CK18CSqG.js"
49
+ "_vendor-BVuUQP12.js",
50
+ "_vendor-shiki-DWx3wasT.js"
51
51
  ]
52
52
  },
53
- "_vendor-recharts-B_VgO7bY.js": {
54
- "file": "assets/vendor-recharts-B_VgO7bY.js",
53
+ "_vendor-recharts-BcoH60nz.js": {
54
+ "file": "assets/vendor-recharts-BcoH60nz.js",
55
55
  "name": "vendor-recharts",
56
56
  "imports": [
57
- "_vendor-CwC1K6mo.js"
57
+ "_vendor-BVuUQP12.js"
58
58
  ]
59
59
  },
60
- "_vendor-shiki-CK18CSqG.js": {
61
- "file": "assets/vendor-shiki-CK18CSqG.js",
60
+ "_vendor-shiki-DWx3wasT.js": {
61
+ "file": "assets/vendor-shiki-DWx3wasT.js",
62
62
  "name": "vendor-shiki",
63
63
  "imports": [
64
- "_vendor-CwC1K6mo.js"
64
+ "_vendor-BVuUQP12.js"
65
65
  ]
66
66
  },
67
67
  "_vendor-three-C5WAXd5r.js": {
@@ -69,19 +69,19 @@
69
69
  "name": "vendor-three"
70
70
  },
71
71
  "index.tsx": {
72
- "file": "assets/index-WrtAISug.js",
72
+ "file": "assets/index-D2lXCDzI.js",
73
73
  "name": "index",
74
74
  "src": "index.tsx",
75
75
  "isEntry": true,
76
76
  "imports": [
77
- "_vendor-CwC1K6mo.js",
78
- "_vendor-arizeai-B7-2AIAM.js",
79
- "_pages-eLqonMjF.js",
80
- "_components-C28SkolB.js",
77
+ "_vendor-BVuUQP12.js",
78
+ "_vendor-arizeai-GniwlNtJ.js",
79
+ "_pages-Cn9q0Wzi.js",
80
+ "_components-aaAzONZ2.js",
81
81
  "_vendor-three-C5WAXd5r.js",
82
- "_vendor-codemirror-D3xhkqGE.js",
83
- "_vendor-shiki-CK18CSqG.js",
84
- "_vendor-recharts-B_VgO7bY.js"
82
+ "_vendor-codemirror-B2cYKEnB.js",
83
+ "_vendor-shiki-DWx3wasT.js",
84
+ "_vendor-recharts-BcoH60nz.js"
85
85
  ]
86
86
  }
87
87
  }