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

Files changed (27) hide show
  1. {arize_phoenix-11.17.0.dist-info → arize_phoenix-11.19.0.dist-info}/METADATA +2 -2
  2. {arize_phoenix-11.17.0.dist-info → arize_phoenix-11.19.0.dist-info}/RECORD +23 -23
  3. phoenix/db/helpers.py +27 -0
  4. phoenix/server/api/helpers/playground_clients.py +2 -0
  5. phoenix/server/api/queries.py +454 -7
  6. phoenix/server/api/routers/v1/spans.py +128 -3
  7. phoenix/server/api/routers/v1/traces.py +36 -15
  8. phoenix/server/prometheus.py +1 -0
  9. phoenix/server/static/.vite/manifest.json +51 -45
  10. phoenix/server/static/assets/{components-B7NKnJXz.js → components-C4HZjMqd.js} +529 -340
  11. phoenix/server/static/assets/{index-9n9lXgT6.js → index-DwyN9UfD.js} +2 -2
  12. phoenix/server/static/assets/{pages-CvqPVUA3.js → pages-B1S5DLvL.js} +583 -515
  13. phoenix/server/static/assets/vendor-BbqekBfb.js +905 -0
  14. phoenix/server/static/assets/vendor-arizeai-CEwHhYfL.js +168 -0
  15. phoenix/server/static/assets/vendor-codemirror-CHApHLLJ.js +25 -0
  16. phoenix/server/static/assets/{vendor-recharts-Cu431IpB.js → vendor-recharts-Bqf7C6Cm.js} +6 -6
  17. phoenix/server/static/assets/vendor-shiki-BQ88Q1b1.js +5 -0
  18. phoenix/server/static/assets/{vendor-three-C5WAXd5r.js → vendor-three-BLWp5bic.js} +154 -154
  19. phoenix/version.py +1 -1
  20. phoenix/server/static/assets/vendor-_6rG8OMg.js +0 -936
  21. phoenix/server/static/assets/vendor-arizeai-BznCmJFh.js +0 -168
  22. phoenix/server/static/assets/vendor-codemirror-29fWLPAy.js +0 -27
  23. phoenix/server/static/assets/vendor-shiki-Ce9e01lU.js +0 -5
  24. {arize_phoenix-11.17.0.dist-info → arize_phoenix-11.19.0.dist-info}/WHEEL +0 -0
  25. {arize_phoenix-11.17.0.dist-info → arize_phoenix-11.19.0.dist-info}/entry_points.txt +0 -0
  26. {arize_phoenix-11.17.0.dist-info → arize_phoenix-11.19.0.dist-info}/licenses/IP_NOTICE +0 -0
  27. {arize_phoenix-11.17.0.dist-info → arize_phoenix-11.19.0.dist-info}/licenses/LICENSE +0 -0
@@ -24,6 +24,7 @@ from strawberry.relay import GlobalID
24
24
  from phoenix.db import models
25
25
  from phoenix.db.insertion.helpers import as_kv
26
26
  from phoenix.db.insertion.types import Precursors
27
+ from phoenix.server.api.types.node import from_global_id_with_expected_type
27
28
  from phoenix.server.authorization import is_not_locked
28
29
  from phoenix.server.bearer_auth import PhoenixUser
29
30
  from phoenix.server.dml_event import SpanDeleteEvent, TraceAnnotationInsertEvent
@@ -228,11 +229,13 @@ async def _add_spans(req: ExportTraceServiceRequest, state: State) -> None:
228
229
 
229
230
 
230
231
  @router.delete(
231
- "/traces/{trace_id}",
232
+ "/traces/{trace_identifier}",
232
233
  operation_id="deleteTrace",
233
- summary="Delete a trace by trace_id",
234
+ summary="Delete a trace by identifier",
234
235
  description=(
235
- "Delete an entire trace by its OpenTelemetry trace_id. "
236
+ "Delete an entire trace by its identifier. The identifier can be either:\n"
237
+ "1. A Relay node ID (base64-encoded)\n"
238
+ "2. An OpenTelemetry trace_id (hex string)\n\n"
236
239
  "This will permanently remove all spans in the trace and their associated data."
237
240
  ),
238
241
  responses=add_errors_to_responses([HTTP_404_NOT_FOUND]),
@@ -240,33 +243,51 @@ async def _add_spans(req: ExportTraceServiceRequest, state: State) -> None:
240
243
  )
241
244
  async def delete_trace(
242
245
  request: Request,
243
- trace_id: str = Path(description="The OpenTelemetry trace_id of the trace to delete"),
246
+ trace_identifier: str = Path(
247
+ description="The trace identifier: either a relay GlobalID or OpenTelemetry trace_id"
248
+ ),
244
249
  ) -> None:
245
250
  """
246
- Delete a trace by trace_id.
251
+ Delete a trace by identifier (relay GlobalID or OpenTelemetry trace_id).
247
252
 
248
253
  This endpoint will:
249
- 1. Find and delete the trace with the given trace_id (and all its spans via CASCADE)
250
- 2. Trigger cache invalidation events
251
- 3. Return 204 No Content on success
254
+ 1. Delete the trace by identifier (relay GlobalID or OpenTelemetry trace_id)
255
+ 2. Get project_id from the deletion for cache invalidation
256
+ 3. Trigger cache invalidation events
257
+ 4. Return 204 No Content on success
252
258
 
253
259
  Note: This deletes the entire trace, including all spans, which maintains data consistency
254
260
  and avoids orphaned spans or inconsistent cached cumulative fields.
255
261
  """
256
262
  async with request.app.state.db() as session:
257
- # Delete the trace directly and get project_id for cache invalidation
258
- delete_stmt = (
259
- delete(models.Trace)
260
- .where(models.Trace.trace_id == trace_id)
261
- .returning(models.Trace.project_rowid)
262
- )
263
+ # Try to parse as GlobalID first, then fall back to trace_id
264
+ try:
265
+ trace_rowid = from_global_id_with_expected_type(
266
+ GlobalID.from_id(trace_identifier),
267
+ "Trace",
268
+ )
269
+ # Delete by database rowid
270
+ delete_stmt = (
271
+ delete(models.Trace)
272
+ .where(models.Trace.id == trace_rowid)
273
+ .returning(models.Trace.project_rowid)
274
+ )
275
+ error_detail = f"Trace with relay ID '{trace_identifier}' not found"
276
+ except Exception:
277
+ # Delete by OpenTelemetry trace_id
278
+ delete_stmt = (
279
+ delete(models.Trace)
280
+ .where(models.Trace.trace_id == trace_identifier)
281
+ .returning(models.Trace.project_rowid)
282
+ )
283
+ error_detail = f"Trace with trace_id '{trace_identifier}' not found"
263
284
 
264
285
  project_id = await session.scalar(delete_stmt)
265
286
 
266
287
  if project_id is None:
267
288
  raise HTTPException(
268
289
  status_code=HTTP_404_NOT_FOUND,
269
- detail=f"Trace with trace_id '{trace_id}' not found",
290
+ detail=error_detail,
270
291
  )
271
292
 
272
293
  # Trigger cache invalidation event
@@ -232,6 +232,7 @@ def estimate_cpu_usage_percent() -> Optional[float]:
232
232
  except Exception:
233
233
  pass
234
234
  return psutil.cpu_percent(interval=None)
235
+ return None
235
236
 
236
237
 
237
238
  @lru_cache(maxsize=1)
@@ -1,87 +1,93 @@
1
1
  {
2
- "_components-B7NKnJXz.js": {
3
- "file": "assets/components-B7NKnJXz.js",
2
+ "_components-C4HZjMqd.js": {
3
+ "file": "assets/components-C4HZjMqd.js",
4
4
  "name": "components",
5
5
  "imports": [
6
- "_vendor-_6rG8OMg.js",
7
- "_pages-CvqPVUA3.js",
8
- "_vendor-arizeai-BznCmJFh.js",
9
- "_vendor-codemirror-29fWLPAy.js",
10
- "_vendor-three-C5WAXd5r.js"
6
+ "_vendor-BbqekBfb.js",
7
+ "_pages-B1S5DLvL.js",
8
+ "_vendor-arizeai-CEwHhYfL.js",
9
+ "_vendor-codemirror-CHApHLLJ.js",
10
+ "_vendor-three-BLWp5bic.js"
11
11
  ]
12
12
  },
13
- "_pages-CvqPVUA3.js": {
14
- "file": "assets/pages-CvqPVUA3.js",
13
+ "_pages-B1S5DLvL.js": {
14
+ "file": "assets/pages-B1S5DLvL.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
- "_vendor-_6rG8OMg.js",
18
- "_vendor-arizeai-BznCmJFh.js",
19
- "_components-B7NKnJXz.js",
20
- "_vendor-codemirror-29fWLPAy.js",
21
- "_vendor-recharts-Cu431IpB.js"
17
+ "_vendor-BbqekBfb.js",
18
+ "_vendor-arizeai-CEwHhYfL.js",
19
+ "_components-C4HZjMqd.js",
20
+ "_vendor-codemirror-CHApHLLJ.js",
21
+ "_vendor-recharts-Bqf7C6Cm.js"
22
22
  ]
23
23
  },
24
- "_vendor-CqDb5u4o.css": {
25
- "file": "assets/vendor-CqDb5u4o.css",
26
- "src": "_vendor-CqDb5u4o.css"
27
- },
28
- "_vendor-_6rG8OMg.js": {
29
- "file": "assets/vendor-_6rG8OMg.js",
24
+ "_vendor-BbqekBfb.js": {
25
+ "file": "assets/vendor-BbqekBfb.js",
30
26
  "name": "vendor",
31
27
  "imports": [
32
- "_vendor-three-C5WAXd5r.js"
28
+ "_vendor-three-BLWp5bic.js"
33
29
  ],
34
30
  "css": [
35
31
  "assets/vendor-CqDb5u4o.css"
36
32
  ]
37
33
  },
38
- "_vendor-arizeai-BznCmJFh.js": {
39
- "file": "assets/vendor-arizeai-BznCmJFh.js",
34
+ "_vendor-CqDb5u4o.css": {
35
+ "file": "assets/vendor-CqDb5u4o.css",
36
+ "src": "_vendor-CqDb5u4o.css"
37
+ },
38
+ "_vendor-arizeai-CEwHhYfL.js": {
39
+ "file": "assets/vendor-arizeai-CEwHhYfL.js",
40
40
  "name": "vendor-arizeai",
41
41
  "imports": [
42
- "_vendor-_6rG8OMg.js"
42
+ "_vendor-BbqekBfb.js"
43
43
  ]
44
44
  },
45
- "_vendor-codemirror-29fWLPAy.js": {
46
- "file": "assets/vendor-codemirror-29fWLPAy.js",
45
+ "_vendor-codemirror-CHApHLLJ.js": {
46
+ "file": "assets/vendor-codemirror-CHApHLLJ.js",
47
47
  "name": "vendor-codemirror",
48
48
  "imports": [
49
- "_vendor-_6rG8OMg.js",
50
- "_vendor-shiki-Ce9e01lU.js"
49
+ "_vendor-BbqekBfb.js",
50
+ "_vendor-shiki-BQ88Q1b1.js"
51
+ ],
52
+ "dynamicImports": [
53
+ "_vendor-shiki-BQ88Q1b1.js",
54
+ "_vendor-shiki-BQ88Q1b1.js",
55
+ "_vendor-shiki-BQ88Q1b1.js"
51
56
  ]
52
57
  },
53
- "_vendor-recharts-Cu431IpB.js": {
54
- "file": "assets/vendor-recharts-Cu431IpB.js",
58
+ "_vendor-recharts-Bqf7C6Cm.js": {
59
+ "file": "assets/vendor-recharts-Bqf7C6Cm.js",
55
60
  "name": "vendor-recharts",
56
61
  "imports": [
57
- "_vendor-_6rG8OMg.js"
62
+ "_vendor-BbqekBfb.js"
58
63
  ]
59
64
  },
60
- "_vendor-shiki-Ce9e01lU.js": {
61
- "file": "assets/vendor-shiki-Ce9e01lU.js",
65
+ "_vendor-shiki-BQ88Q1b1.js": {
66
+ "file": "assets/vendor-shiki-BQ88Q1b1.js",
62
67
  "name": "vendor-shiki",
68
+ "isDynamicEntry": true,
63
69
  "imports": [
64
- "_vendor-_6rG8OMg.js"
70
+ "_vendor-BbqekBfb.js"
65
71
  ]
66
72
  },
67
- "_vendor-three-C5WAXd5r.js": {
68
- "file": "assets/vendor-three-C5WAXd5r.js",
73
+ "_vendor-three-BLWp5bic.js": {
74
+ "file": "assets/vendor-three-BLWp5bic.js",
69
75
  "name": "vendor-three"
70
76
  },
71
77
  "index.tsx": {
72
- "file": "assets/index-9n9lXgT6.js",
78
+ "file": "assets/index-DwyN9UfD.js",
73
79
  "name": "index",
74
80
  "src": "index.tsx",
75
81
  "isEntry": true,
76
82
  "imports": [
77
- "_vendor-_6rG8OMg.js",
78
- "_vendor-arizeai-BznCmJFh.js",
79
- "_pages-CvqPVUA3.js",
80
- "_components-B7NKnJXz.js",
81
- "_vendor-three-C5WAXd5r.js",
82
- "_vendor-codemirror-29fWLPAy.js",
83
- "_vendor-shiki-Ce9e01lU.js",
84
- "_vendor-recharts-Cu431IpB.js"
83
+ "_vendor-BbqekBfb.js",
84
+ "_vendor-arizeai-CEwHhYfL.js",
85
+ "_pages-B1S5DLvL.js",
86
+ "_components-C4HZjMqd.js",
87
+ "_vendor-three-BLWp5bic.js",
88
+ "_vendor-codemirror-CHApHLLJ.js",
89
+ "_vendor-shiki-BQ88Q1b1.js",
90
+ "_vendor-recharts-Bqf7C6Cm.js"
85
91
  ]
86
92
  }
87
93
  }