arize-phoenix 6.1.0__py3-none-any.whl → 7.0.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 (54) hide show
  1. {arize_phoenix-6.1.0.dist-info → arize_phoenix-7.0.0.dist-info}/METADATA +9 -8
  2. {arize_phoenix-6.1.0.dist-info → arize_phoenix-7.0.0.dist-info}/RECORD +52 -38
  3. phoenix/config.py +4 -1
  4. phoenix/db/engines.py +1 -1
  5. phoenix/db/insertion/span.py +65 -30
  6. phoenix/db/migrate.py +4 -1
  7. phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  8. phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +199 -0
  9. phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +66 -0
  10. phoenix/db/models.py +27 -0
  11. phoenix/metrics/wrappers.py +7 -1
  12. phoenix/server/api/context.py +15 -2
  13. phoenix/server/api/dataloaders/__init__.py +14 -2
  14. phoenix/server/api/dataloaders/session_io.py +75 -0
  15. phoenix/server/api/dataloaders/session_num_traces.py +30 -0
  16. phoenix/server/api/dataloaders/session_num_traces_with_error.py +32 -0
  17. phoenix/server/api/dataloaders/session_token_usages.py +41 -0
  18. phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +55 -0
  19. phoenix/server/api/dataloaders/trace_by_trace_ids.py +25 -0
  20. phoenix/server/api/dataloaders/trace_root_spans.py +32 -0
  21. phoenix/server/api/input_types/ProjectSessionSort.py +29 -0
  22. phoenix/server/api/mutations/chat_mutations.py +5 -0
  23. phoenix/server/api/mutations/project_mutations.py +12 -2
  24. phoenix/server/api/queries.py +14 -9
  25. phoenix/server/api/subscriptions.py +6 -0
  26. phoenix/server/api/types/EmbeddingDimension.py +1 -1
  27. phoenix/server/api/types/ExperimentRun.py +3 -4
  28. phoenix/server/api/types/ExperimentRunAnnotation.py +3 -4
  29. phoenix/server/api/types/Project.py +150 -12
  30. phoenix/server/api/types/ProjectSession.py +139 -0
  31. phoenix/server/api/types/Span.py +6 -19
  32. phoenix/server/api/types/SpanIOValue.py +15 -0
  33. phoenix/server/api/types/TokenUsage.py +11 -0
  34. phoenix/server/api/types/Trace.py +59 -2
  35. phoenix/server/app.py +15 -2
  36. phoenix/server/static/.vite/manifest.json +40 -31
  37. phoenix/server/static/assets/{components-CdiZ1Osh.js → components-DKH6AzJw.js} +410 -351
  38. phoenix/server/static/assets/index-DLV87qiO.js +93 -0
  39. phoenix/server/static/assets/{pages-FArMEfgg.js → pages-CVY3Nv4Z.js} +638 -316
  40. phoenix/server/static/assets/vendor-Cb3zlNNd.js +894 -0
  41. phoenix/server/static/assets/{vendor-arizeai-BG6iwyLC.js → vendor-arizeai-Buo4e1A6.js} +2 -2
  42. phoenix/server/static/assets/{vendor-codemirror-BotnVFFX.js → vendor-codemirror-BuAQiUVf.js} +5 -5
  43. phoenix/server/static/assets/{vendor-recharts-Dy5gEFzQ.js → vendor-recharts-Cl9dK5tC.js} +1 -1
  44. phoenix/server/static/assets/{vendor-Bnv1dNRQ.js → vendor-shiki-CazYUixL.js} +5 -898
  45. phoenix/session/client.py +13 -4
  46. phoenix/trace/fixtures.py +8 -0
  47. phoenix/trace/schemas.py +16 -0
  48. phoenix/version.py +1 -1
  49. phoenix/server/api/dataloaders/trace_row_ids.py +0 -33
  50. phoenix/server/static/assets/index-D_sCOjlG.js +0 -101
  51. {arize_phoenix-6.1.0.dist-info → arize_phoenix-7.0.0.dist-info}/WHEEL +0 -0
  52. {arize_phoenix-6.1.0.dist-info → arize_phoenix-7.0.0.dist-info}/entry_points.txt +0 -0
  53. {arize_phoenix-6.1.0.dist-info → arize_phoenix-7.0.0.dist-info}/licenses/IP_NOTICE +0 -0
  54. {arize_phoenix-6.1.0.dist-info → arize_phoenix-7.0.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 6.1.0
3
+ Version: 7.0.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
@@ -44,12 +44,13 @@ Requires-Dist: scipy
44
44
  Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.4
45
45
  Requires-Dist: sqlean-py>=3.45.1
46
46
  Requires-Dist: starlette
47
- Requires-Dist: strawberry-graphql==0.243.1
47
+ Requires-Dist: strawberry-graphql==0.247.0
48
48
  Requires-Dist: tqdm
49
49
  Requires-Dist: typing-extensions>=4.6
50
50
  Requires-Dist: uvicorn
51
51
  Requires-Dist: websockets
52
- Requires-Dist: wrapt
52
+ Requires-Dist: wrapt; sys_platform != 'darwin'
53
+ Requires-Dist: wrapt<1.17; sys_platform == 'darwin'
53
54
  Provides-Extra: container
54
55
  Requires-Dist: anthropic; extra == 'container'
55
56
  Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
@@ -65,7 +66,7 @@ Requires-Dist: opentelemetry-sdk; extra == 'container'
65
66
  Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
66
67
  Requires-Dist: prometheus-client; extra == 'container'
67
68
  Requires-Dist: py-grpc-prometheus; extra == 'container'
68
- Requires-Dist: strawberry-graphql[opentelemetry]==0.243.1; extra == 'container'
69
+ Requires-Dist: strawberry-graphql[opentelemetry]==0.247.0; extra == 'container'
69
70
  Requires-Dist: umap-learn; extra == 'container'
70
71
  Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
71
72
  Provides-Extra: dev
@@ -96,7 +97,7 @@ Requires-Dist: pytest-postgresql; extra == 'dev'
96
97
  Requires-Dist: pytest-xdist; extra == 'dev'
97
98
  Requires-Dist: pytest==8.3.3; extra == 'dev'
98
99
  Requires-Dist: ruff==0.6.9; extra == 'dev'
99
- Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.243.1; extra == 'dev'
100
+ Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.247.0; extra == 'dev'
100
101
  Requires-Dist: tabulate; extra == 'dev'
101
102
  Requires-Dist: tox-uv==1.11.3; extra == 'dev'
102
103
  Requires-Dist: tox==4.18.1; extra == 'dev'
@@ -130,11 +131,11 @@ Description-Content-Type: text/markdown
130
131
  <a href="https://docs.arize.com/phoenix/">
131
132
  <img src="https://img.shields.io/static/v1?message=Docs&logo=data:image/png;base64,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&labelColor=grey&color=blue&logoColor=white&label=%20"/>
132
133
  </a>
133
- <a target="_blank" href="https://join.slack.com/t/arize-ai/shared_invite/zt-22vj03k4k-MlrNEwv5WeswapTs0kNCBw">
134
+ <a target="_blank" href="https://arize-ai.slack.com/join/shared_invite/zt-11t1vbu4x-xkBIHmOREQnYnYDH1GDfCg?__hstc=259489365.a667dfafcfa0169c8aee4178d115dc81.1733501603539.1733501603539.1733501603539.1&__hssc=259489365.1.1733501603539&__hsfp=3822854628&submissionGuid=381a0676-8f38-437b-96f2-fc10875658df#/shared-invite/email">
134
135
  <img src="https://img.shields.io/static/v1?message=Community&logo=slack&labelColor=grey&color=blue&logoColor=white&label=%20"/>
135
136
  </a>
136
137
  <a target="_blank" href="https://twitter.com/ArizePhoenix">
137
- <img src="https://img.shields.io/badge/-ArizePhoenix-blue.svg?color=blue&labelColor=gray&logo=twitter">
138
+ <img src="https://img.shields.io/badge/-ArizePhoenix-blue.svg?color=blue&labelColor=gray&logo=x">
138
139
  </a>
139
140
  <a target="_blank" href="https://pypi.org/project/arize-phoenix/">
140
141
  <img src="https://img.shields.io/pypi/v/arize-phoenix?color=blue">
@@ -236,7 +237,7 @@ For details about tracing integrations and example applications, see the [OpenIn
236
237
 
237
238
  Join our community to connect with thousands of AI builders.
238
239
 
239
- - 🌍 Join our [Slack community](https://join.slack.com/t/arize-ai/shared_invite/zt-22vj03k4k-MlrNEwv5WeswapTs0kNCBw).
240
+ - 🌍 Join our [Slack community](https://arize-ai.slack.com/join/shared_invite/zt-11t1vbu4x-xkBIHmOREQnYnYDH1GDfCg?__hstc=259489365.a667dfafcfa0169c8aee4178d115dc81.1733501603539.1733501603539.1733501603539.1&__hssc=259489365.1.1733501603539&__hsfp=3822854628&submissionGuid=381a0676-8f38-437b-96f2-fc10875658df#/shared-invite/email).
240
241
  - 📚 Read our [documentation](https://docs.arize.com/phoenix).
241
242
  - 💡 Ask questions and provide feedback in the _#phoenix-support_ channel.
242
243
  - 🌟 Leave a star on our [GitHub](https://github.com/Arize-ai/phoenix).
@@ -1,12 +1,12 @@
1
1
  phoenix/__init__.py,sha256=X3eUEwd2rG8KKWWYVNNDJoqo08ihfjgHhlP29dcdNJE,5481
2
2
  phoenix/auth.py,sha256=JpkwJbis2INlIXWcQ-M_Nk5Ln9LBgHMdWNnaAQp0D2w,10940
3
- phoenix/config.py,sha256=QLaKuc7N3qZsaAzJnsUVyFuWaROYTVlZsVXTr0Re6d8,26191
3
+ phoenix/config.py,sha256=CIm9WnLMu5PIh93ATlJYGSPJiXRej6Ij-VjH8Z__dJk,26337
4
4
  phoenix/datetime_utils.py,sha256=iJzNG6YJ6V7_u8B2iA7P2Z26FyxYbOPtx0dhJ7kNDHA,3398
5
5
  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=PD5agZ0_DXqsFLMBR0hacZV3LbzGbH8qn-j7MIAm3Xs,22
9
+ phoenix/version.py,sha256=VgMOOqsYbyb60I1RmlZpqwqQ0C0IyT3R0c8_xX4pRGM,22
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,27 +16,30 @@ 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=BYFiHFGABtNuCo7OB8fLc46gMxur4rePK_sJxrMrMjA,6508
19
+ phoenix/db/engines.py,sha256=uuz_TpFtjcJpx3eO-56vysuxaS2Ea0t5ydhrWhnyySA,6521
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
23
- phoenix/db/migrate.py,sha256=lf6FFGzdyNjwtQ4TFi3mmHNGnnazMtG30PPB2qRF1Xc,2648
24
- phoenix/db/models.py,sha256=wx2XQgf6qhUO2ZQ4oUENoAguf440qaR0Ea_q1XB1bBU,26484
23
+ phoenix/db/migrate.py,sha256=oUrXH8yEbcpL4eh09aSCuUiSrhFli0eT5D_j4ZmYChY,2797
24
+ phoenix/db/models.py,sha256=56_I2oV-OOKfQUIqUlNKWc3GIPag3nuHmoKqrtIis68,27459
25
25
  phoenix/db/insertion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  phoenix/db/insertion/constants.py,sha256=8wifm7X-1XvroZ__R2Gc96NsgLhTDn0zXl4lehlXtcA,70
27
27
  phoenix/db/insertion/dataset.py,sha256=I9OC1ouVx7m6BH_c8hvcxW1dWGRAtpvXee29yBTuFkg,7136
28
28
  phoenix/db/insertion/document_annotation.py,sha256=vnszF9L0qHjUY-eWgBVRG5OTpz-ECs1BoCfy66ynzjo,5997
29
29
  phoenix/db/insertion/evaluation.py,sha256=SoI85N3MYUSeNgjKa5WzFw14OfNjNTjExv-2m3sxaR8,6371
30
30
  phoenix/db/insertion/helpers.py,sha256=-DyRcxzJnjSJFhscPoqiNiQn8fBvGqI8IcNJEu-79Vw,3455
31
- phoenix/db/insertion/span.py,sha256=-CXn2LlEv2u7xbz7m8X5jALQ-BUNNzTxPJEzSmjhTpA,5958
31
+ phoenix/db/insertion/span.py,sha256=QHjWTc6cEdq1raxHDcQ9x9tBAdUfePJYjRE_wGdgXFk,7811
32
32
  phoenix/db/insertion/span_annotation.py,sha256=EtzcjS8GR2rDM_cxIQloGc2SZqfdrACyAPwvyFBa2Ac,5273
33
33
  phoenix/db/insertion/trace_annotation.py,sha256=6yzWuU0Fh-mC-rJJ96rH0IYTJg1EQFnj-GZhUwolUKI,5338
34
34
  phoenix/db/insertion/types.py,sha256=cWeBceyZZ3efLHKPjnPpVahrpX7-P8Bm_sdudWXkOek,8106
35
35
  phoenix/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  phoenix/db/migrations/env.py,sha256=tFO3ceuCx9Es5_2w_BXclaQMmNQKNX21b1UEV5mYdeo,3387
37
37
  phoenix/db/migrations/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
38
+ phoenix/db/migrations/data_migration_scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py,sha256=NJPoEX2-OhYxQXl0jRcX5eoq1azgLi8RLArZZw2pTY4,6046
38
40
  phoenix/db/migrations/versions/10460e46d750_datasets.py,sha256=3wftHgat1sEeKBl0EcQ24r_oOK_T-Tcmd2Loo73RVCs,8679
39
41
  phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py,sha256=GxuKD501WSx083uIv21GhJS0l4Xk3exovfycaGAxY30,3638
42
+ phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py,sha256=HDP3X5yxm5PwxMkODd-wrSwspQpFotTEz40jXRgq320,1787
40
43
  phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py,sha256=fkpmh5PgMZJiZpvLbZIaqlI2cucVpVbbNYpQ-Tznil8,5180
41
44
  phoenix/db/migrations/versions/cf03bd6bae1d_init.py,sha256=lorqWUcujC0fsYIOriGZlZw2LKjS3nF34KHxi1fp_Z8,8646
42
45
  phoenix/experiments/__init__.py,sha256=6JGwgUd7xCbGpuHqYZlsmErmYvVgv7N_j43bn3dUqsk,123
@@ -66,14 +69,14 @@ phoenix/metrics/metrics.py,sha256=IMfLgaeZ13jo0zNb_96bLoK6dYaOOCSUmsOP5nVLfdQ,79
66
69
  phoenix/metrics/mixins.py,sha256=opSLWfW90GUIFmpxX4cyLs_1TmDPOGxCJWh6ZHBt2tc,7455
67
70
  phoenix/metrics/retrieval_metrics.py,sha256=3kHk_cqOEonLT3UGEVIFN1n1EGODjKkPBFfd-OzvpD4,4411
68
71
  phoenix/metrics/timeseries.py,sha256=Knw6mNodB2pkYFkHqYNZumDKsBbvWix6o2uyVj5Kt1U,6297
69
- phoenix/metrics/wrappers.py,sha256=IB6ewohLJ1fwunUUpRVtd6md6aXCxFxkwFI1CNjzLY8,8373
72
+ phoenix/metrics/wrappers.py,sha256=kMgKTiMlDIItAnfo5oVWcSXGmqkD2Pt1MymuK6E1Luc,8525
70
73
  phoenix/pointcloud/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
71
74
  phoenix/pointcloud/clustering.py,sha256=Ss7LQHgCE7GZTztExiJ85F2K5iGKrRADkOquUjqj1tg,805
72
75
  phoenix/pointcloud/pointcloud.py,sha256=SN_1wXZcwKrtSnHGZLDZGx71orqE1WyVF7E-D58dJeE,2202
73
76
  phoenix/pointcloud/projectors.py,sha256=TQgwc9cJDjJkin1WZyZzgl3HsYrLLiyWD7Czy4jNW3U,1088
74
77
  phoenix/pointcloud/umap_parameters.py,sha256=db_WEPoamuWtopZx7tQfAXPnoE0MS8FkAV0_ThjEx_Q,1735
75
78
  phoenix/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
- phoenix/server/app.py,sha256=O-oawPGpm02KT6_09E66qdEpZqJT1pMUt9LODeI5m5U,37934
79
+ phoenix/server/app.py,sha256=6ahHhsZeiYaWIRAVOGUk66c5BDQnB6EZQhgvtnqS6-M,38691
77
80
  phoenix/server/bearer_auth.py,sha256=0UudvkAS_dxna5JEJJhGUYwB6Ny-e22ssX5Mm79QwCk,5907
78
81
  phoenix/server/dml_event.py,sha256=MjJmVEKytq75chBOSyvYDusUnEbg1pHpIjR3pZkUaJA,2838
79
82
  phoenix/server/dml_event_handler.py,sha256=EZLXmCvx4pJrCkz29gxwKwmvmUkTtPCHw6klR-XM8qE,8258
@@ -89,14 +92,14 @@ phoenix/server/types.py,sha256=Ur73LKRB3VlvBDN95gKJoDIdmauuR-r1rpO1rNHm9kA,7209
89
92
  phoenix/server/api/README.md,sha256=Pyq1PLPgTzXAswrfIhGXrjI3Skq8it2jTVnanT6Ba4Q,1162
90
93
  phoenix/server/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
94
  phoenix/server/api/auth.py,sha256=OhWmv_Hl-K-yhJeUWXKRYYiUOIPo-rYSQXdm4fjeTJ8,901
92
- phoenix/server/api/context.py,sha256=g5tAYInMifMOdnGTlyfHdB7rDNlC9F2E5bU6IA_3Y0c,5337
95
+ phoenix/server/api/context.py,sha256=oTSBervsrFYeKsln37Mc_fgBD5y5TktYdNVPZSzTJlU,5952
93
96
  phoenix/server/api/exceptions.py,sha256=TA0JuY2YRnj35qGuMSQ8d0ToHum9gWm9W--3fSKHrX0,1171
94
97
  phoenix/server/api/interceptor.py,sha256=ykDnoC_apUd-llVli3m1CW18kNSIgjz2qZ6m5JmPDu8,1294
95
- phoenix/server/api/queries.py,sha256=4KJz8TUz3VUTup9MDjr_GoKX0SttWSvHBq2ncWZGxf8,27343
98
+ phoenix/server/api/queries.py,sha256=zRngYE72hxaeAg_1vsnSLwmqs_FSHrRNjQwi632_D-Y,27670
96
99
  phoenix/server/api/schema.py,sha256=tHyw2jTbue_-gu0fe9Sw7LUYtzJUCwp9SvccDgOkNPw,1696
97
- phoenix/server/api/subscriptions.py,sha256=nsiByh2rTPc1PS7OrPyuyyfFfYUUXeGmai19IfYP0dA,23201
100
+ phoenix/server/api/subscriptions.py,sha256=NJXCWrbBERyTwmi3H_9jNpml4klIxs_kpynwXRoH9pc,23572
98
101
  phoenix/server/api/utils.py,sha256=quCBRcusc6PUq9tJq7M8PgwFZp7nXgVAxtbw8feribY,833
99
- phoenix/server/api/dataloaders/__init__.py,sha256=jNYvfXjnZzgA2HWTG7AZdqWGla3ZysBUDUei8Zkz6N8,3290
102
+ phoenix/server/api/dataloaders/__init__.py,sha256=nt5Lbs34q05GSvNCT2IGrkRW0kg65L8h3bZelzgpkYg,3909
100
103
  phoenix/server/api/dataloaders/annotation_summaries.py,sha256=2sHmIDX7n8tuPeBTs9bMKtlMKWn_Ph9awTZqmwn2Owc,5505
101
104
  phoenix/server/api/dataloaders/average_experiment_run_latency.py,sha256=GLFoFAbztOH-0FVzzZ77mATIO63UcjB50j3qXiNi-tE,1811
102
105
  phoenix/server/api/dataloaders/dataset_example_revisions.py,sha256=YG2VSWOkM7q_-RO8OwE8bHYX8d3_OH34SeaD4pvEt0w,5115
@@ -113,12 +116,18 @@ phoenix/server/api/dataloaders/latency_ms_quantile.py,sha256=CHWV9nvEEM3xqpXWuby
113
116
  phoenix/server/api/dataloaders/min_start_or_max_end_times.py,sha256=1jYglTXv4S8k7OWSGdgeJ2OxVCmZtX8a6sjJp9GPZ04,2783
114
117
  phoenix/server/api/dataloaders/project_by_name.py,sha256=O24Rjs0ZQaYtSnPfA6YBQfbHfUgNsHKUcc_gIKyK9vo,1086
115
118
  phoenix/server/api/dataloaders/record_counts.py,sha256=NLlMEaJ-HxiJavqbSkMbzOrIRzqzYxO8-t2mfp1vXqM,4160
119
+ phoenix/server/api/dataloaders/session_io.py,sha256=r-Zvn19qOo_JWATHtt5zwuwhHjiATLAGHRjoi4czd6U,3038
120
+ phoenix/server/api/dataloaders/session_num_traces.py,sha256=lu5EMdQWQzEr_4wCiu7FycnIShjGf0yQXpwBG_DDzGs,1050
121
+ phoenix/server/api/dataloaders/session_num_traces_with_error.py,sha256=Y5xmr4Nme2ZMfvJljW9yhBfuCNdGlxTRka0h9VdXdqA,1149
122
+ phoenix/server/api/dataloaders/session_token_usages.py,sha256=9RXZUyzDmzp5WDp_BpmvvDhk5gIIaV97x0xxUM1H9bA,1586
123
+ phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py,sha256=s_Ce_BSad1Wvabq9hajdq-i-9rLbZ0esU2gwg9h7Vwg,2157
116
124
  phoenix/server/api/dataloaders/span_annotations.py,sha256=y5TvxnljS2P3hm_NiQd24qy313AG76lyjcZFNWGls1A,1028
117
125
  phoenix/server/api/dataloaders/span_dataset_examples.py,sha256=rpBStVP7ZMIH11Cpq4-zCJ4amNC5ZzX72NYv4vAQTdc,1255
118
126
  phoenix/server/api/dataloaders/span_descendants.py,sha256=1NhD59micO9ozKTF85bFKVCqqsrfDzrK0e0nlg6QyvI,2051
119
127
  phoenix/server/api/dataloaders/span_projects.py,sha256=JTfuKn2BBn72QdAP53ZGP2OUCgZJ7AzlzQAx8WivBog,1234
120
128
  phoenix/server/api/dataloaders/token_counts.py,sha256=9BjumOJ8uCaQ8ZieJVoIP_zEnI38VxyBoB_ks8YrUYU,4629
121
- phoenix/server/api/dataloaders/trace_row_ids.py,sha256=yFv752LmBmOnMYVaauU4v0Y660AnSGJCtD7O-UgKk9Q,1070
129
+ phoenix/server/api/dataloaders/trace_by_trace_ids.py,sha256=xqYJOjCgXlTzour4vY72kO-2gJFgWMjD3759o78cq44,874
130
+ phoenix/server/api/dataloaders/trace_root_spans.py,sha256=IpSsoBRF0NHtbFhQasA_mux6v-m6b0yFRINygjCBOtM,1106
122
131
  phoenix/server/api/dataloaders/user_roles.py,sha256=TvPWve38TlGFvaFkMeFvnnHBn1OMHUJTErRLeYrXR8I,1029
123
132
  phoenix/server/api/dataloaders/users.py,sha256=Uh86Kny_xpqDdEvEklcTBUA_MELgu4Z0jgh45ZqTzXs,1075
124
133
  phoenix/server/api/dataloaders/cache/__init__.py,sha256=SYoOM9n8FJaMdQarma5d1blu-jIg2GB8Shqg5ezSzZ8,106
@@ -155,6 +164,7 @@ phoenix/server/api/input_types/PatchAnnotationInput.py,sha256=NWhkcbcGNPwfOYsN3w
155
164
  phoenix/server/api/input_types/PatchDatasetExamplesInput.py,sha256=_uMqkAInhLDvzUSASl6HgLNulTsekMcYzyd5J6LF90I,884
156
165
  phoenix/server/api/input_types/PatchDatasetInput.py,sha256=OURtTVY8Z_oFEDtKwT1LCMaOK5D4QYo5TVQ6mDrex-g,328
157
166
  phoenix/server/api/input_types/PerformanceMetricInput.py,sha256=fElsLTSEYYgGFGMYTEGcYid39tXUKFdV_JkdHavMcbA,591
167
+ phoenix/server/api/input_types/ProjectSessionSort.py,sha256=qFgLmKYeyFpx7An9ZNdDNkkt7tghrG6XXruQbFLiFt8,919
158
168
  phoenix/server/api/input_types/SpanAnnotationSort.py,sha256=T5pAGzmh4MiJp9JMAzNDByFVTczfw02FH4WFWwFezyI,361
159
169
  phoenix/server/api/input_types/SpanSort.py,sha256=Dhvl8BIoV52yHoqntfOax_gUc15uH8ITI_00Ha7PvYc,5959
160
170
  phoenix/server/api/input_types/TemplateOptions.py,sha256=BrKozr604QwthBdKhlsHbxJc5oZ7eHnwviVubW2i0jA,220
@@ -164,11 +174,11 @@ phoenix/server/api/input_types/UserRoleInput.py,sha256=xxhFe0ITZOgRVEJbVem_W6F1I
164
174
  phoenix/server/api/input_types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
175
  phoenix/server/api/mutations/__init__.py,sha256=1wClieLNA3_Tin4Ah67rkrQvwSSZAdPU0EPsRiUxyAA,1103
166
176
  phoenix/server/api/mutations/api_key_mutations.py,sha256=OmPipsmlQIb6DKvAgO58mZUwkYJihlJB2N4lTyeUlAA,6164
167
- phoenix/server/api/mutations/chat_mutations.py,sha256=YUZGgoUoA-652UVo5p7qWNnN4u7tdU6XfhDnTIxvbqU,22831
177
+ phoenix/server/api/mutations/chat_mutations.py,sha256=X8Rq0_gBYX_Ey2U9EIuWuOt2JeTVAvnD69gY4NHrOQo,23039
168
178
  phoenix/server/api/mutations/dataset_mutations.py,sha256=OkVek-GtDf_1eloI7Sdz6W6l5FFmwU_41LJM8-fw3q4,26088
169
179
  phoenix/server/api/mutations/experiment_mutations.py,sha256=p3CoLAa8nFPa3D759Y2A7De_PVJNGOL98mA3HoZBrRQ,3188
170
180
  phoenix/server/api/mutations/export_events_mutations.py,sha256=xoDnVWC7eA_8wNQP0-oyiHojyUZ0EhVVSrsAnztetC0,3993
171
- phoenix/server/api/mutations/project_mutations.py,sha256=KdcA3c6tgLZ8QhpIv37qJESTBPxs56SbfeYdDKzU7-8,2263
181
+ phoenix/server/api/mutations/project_mutations.py,sha256=u7kLvJbBFR418F9lMamiisZerF18E8h5wGKV4sDTF-g,2674
172
182
  phoenix/server/api/mutations/span_annotations_mutations.py,sha256=kvIOUjHRA6wNMh-bLe5B6bRszMw77HyFp3bxHTOL3yU,5940
173
183
  phoenix/server/api/mutations/trace_annotations_mutations.py,sha256=qwTnYt6A5BwXC7sn_TT0f2A2PO7M26C22aYMnA3MpYk,5915
174
184
  phoenix/server/api/mutations/user_mutations.py,sha256=YWgg1t5P0XVdxOMrhWpRqsCWi8NQR2zxerzuITC-UrY,13311
@@ -212,7 +222,7 @@ phoenix/server/api/types/DimensionType.py,sha256=JLikZUBVqbHlUWcYYd8d60gB1_hmAcu
212
222
  phoenix/server/api/types/DimensionWithValue.py,sha256=4_koirnDrZBBdFkIWka2f-OeqZ6IzQXwqz3ccjdgHrc,484
213
223
  phoenix/server/api/types/DocumentEvaluationSummary.py,sha256=dx4Btlfw9_XsfmibjfWvMOvUfrvr9oGJq8jYmIL2o-Q,3494
214
224
  phoenix/server/api/types/DocumentRetrievalMetrics.py,sha256=amkpC3H5IU5-9GvO0telpbq00m6lIcv_2v446OpwFwc,1822
215
- phoenix/server/api/types/EmbeddingDimension.py,sha256=z0sfRdX1J0uVxJgWQkGhNUM73fskGGKYhlriR8FNGKA,19019
225
+ phoenix/server/api/types/EmbeddingDimension.py,sha256=XOd85EkFfrOtPSjdRuV-ri2HnXi4Goe25ABEh-cPgnc,19055
216
226
  phoenix/server/api/types/EmbeddingMetadata.py,sha256=fJvNNYCbkf3SJalArLy9rcBq9Uj1SNac60zjqe1PFnM,461
217
227
  phoenix/server/api/types/Evaluation.py,sha256=rLJptUSRUPPx9sdUyc4UPWxzkr9gcKtkpAS5Zi_EyFQ,2406
218
228
  phoenix/server/api/types/EvaluationSummary.py,sha256=vILYejnfPvMwWEXOwhQZsANvYe3AdO2OkMR2rcgp1H4,1512
@@ -222,8 +232,8 @@ phoenix/server/api/types/ExampleRevisionInterface.py,sha256=gV3Gt9-3Oi5wjaVtepC6
222
232
  phoenix/server/api/types/Experiment.py,sha256=hqqIwgeWoylOeBAMmQyzefn_p_COwxW0VqEGOqdcTpE,5470
223
233
  phoenix/server/api/types/ExperimentAnnotationSummary.py,sha256=Uk3JtxIrsMoZT5tqc4nJdUOM3XegVzjUyoV3pkjNotE,256
224
234
  phoenix/server/api/types/ExperimentComparison.py,sha256=cFQZy5rj_klzTV-3jnxIlkrCHXkW8gYnp5uSR1UWCzg,416
225
- phoenix/server/api/types/ExperimentRun.py,sha256=18VDl9ciENRp-yn1_gyCDnTI4TYchG985GuM6hssN7g,4253
226
- phoenix/server/api/types/ExperimentRunAnnotation.py,sha256=iBxDaD9DgiF-Qymp5QyxWfJRGYXM1_CeWA_qzsZBqkI,1812
235
+ phoenix/server/api/types/ExperimentRun.py,sha256=5PjvIx-VLx-W9Xw8JURbbfOYYIL-FAaZs1kyJB0icp4,4169
236
+ phoenix/server/api/types/ExperimentRunAnnotation.py,sha256=HEbPygBwbWg10fwY3VZyM10OL1TKlnQk_x5MZIjZKPs,1724
227
237
  phoenix/server/api/types/ExportedFile.py,sha256=e3GTn7B5LgsTbqiwjhMCQH7VsiqXitrBO4aCMS1lHsg,163
228
238
  phoenix/server/api/types/Functionality.py,sha256=tzV9xdhB8zqfsjWxP66NDC7EZsplYkYO7jRbLWJIeeg,382
229
239
  phoenix/server/api/types/GenerativeModel.py,sha256=P7eBUMXbeqaLwSSGBKdZy3a5gOLd9I0fuP8o1st6H08,193
@@ -235,18 +245,21 @@ phoenix/server/api/types/MimeType.py,sha256=Zpi6zCalkSFgsvhzvOs-O1gYA04usAi9H__Q
235
245
  phoenix/server/api/types/Model.py,sha256=dirXGnOqLFNaOlXUwqyAjiJjcOrWpryO_5N6V0pAxtk,8045
236
246
  phoenix/server/api/types/NumericRange.py,sha256=afEjgF97Go_OvmjMggbPBt-zGM8IONewAyEiKEHRds0,192
237
247
  phoenix/server/api/types/PerformanceMetric.py,sha256=W92B7OghEOgzFvmY0LCqpgavHaQggTGshdgfD0yqHX4,350
238
- phoenix/server/api/types/Project.py,sha256=tNTiDgbjUTVm45XxmMhHYSjqBI8WjHim9NZ69SfMA8w,13107
248
+ phoenix/server/api/types/Project.py,sha256=xbV15SOHcPQeE1TMSWFpXk7ZQkfxCD4ZjFS4C83K4tU,18852
249
+ phoenix/server/api/types/ProjectSession.py,sha256=j3RJrTG9umruav7d81AqnQVz-Zpi60nXmnsr2Wplpac,4646
239
250
  phoenix/server/api/types/PromptResponse.py,sha256=Q8HKtpp8GpUOcxPCzZpkkokidDd6u0aZOv_SuPZZd5Q,630
240
251
  phoenix/server/api/types/Retrieval.py,sha256=OhMK2ncjoyp5h1yjKhjlKpoTbQrMHuxmgSFw-AO1rWw,285
241
252
  phoenix/server/api/types/ScalarDriftMetricEnum.py,sha256=IUAcRPpgL41WdoIgK6cNk2Te38SspXGyEs-S1fY23_A,232
242
253
  phoenix/server/api/types/Segments.py,sha256=vT2v0efoa5cuBKxLtxTnsUP5YJJCZfTloM71Spu0tMI,2915
243
254
  phoenix/server/api/types/SortDir.py,sha256=OUpXhlCzCxPoXSDkJJygEs9Rw9pMymfaZUG5zPTrw4Y,152
244
- phoenix/server/api/types/Span.py,sha256=wJGvenSL6d1oDmpJt4hsLjIVTxmemJBRCBKHy4rYztc,15355
255
+ phoenix/server/api/types/Span.py,sha256=3vMWnCH0w7-lytq9fVpD0oWIfC-4huS5U6lOaoTSPrA,15113
245
256
  phoenix/server/api/types/SpanAnnotation.py,sha256=6b5G-b_OoRvDL2ayWk7MkbqarLK-F-pQMx21CpUuNGY,1168
257
+ phoenix/server/api/types/SpanIOValue.py,sha256=u_g9QrX-E3fwneoucire73KY5gf3fE4V9IBN3qx2cvU,445
246
258
  phoenix/server/api/types/SystemApiKey.py,sha256=2ym8EgsTBIvxx1l9xZ-2YMovz58ZwYb_MaHBTJ9NH2E,166
247
259
  phoenix/server/api/types/TemplateLanguage.py,sha256=6j_0uwO_GZIeCpR7sTOnxySXudT7qBSC6LFsjzbvW1o,160
248
260
  phoenix/server/api/types/TimeSeries.py,sha256=IIeGVRFdSMozYXxPg736DW_mKvj4-3WjYSYEnn4UEJc,5241
249
- phoenix/server/api/types/Trace.py,sha256=1RrdEedlPpNmWkQwosOZ81fabc9-B6PDHTYpr-hZj-Y,3240
261
+ phoenix/server/api/types/TokenUsage.py,sha256=g-PjAGVigpchQgkXAuC5sc53fn2YwAgfeXkGmFPi_TE,201
262
+ phoenix/server/api/types/Trace.py,sha256=PG07x8h1VjYNkE40EK2SJHMW1TRWBoguJS6vPjmJOy8,5217
250
263
  phoenix/server/api/types/TraceAnnotation.py,sha256=OW6A2zr1gomOuG0XQe55dk15XXX2DSM0DzatRbHWH5A,1256
251
264
  phoenix/server/api/types/UMAPPoints.py,sha256=49sWnxjcAJKRzqUY71Fa0tOPti5XjIIFT5cSg6oNu_U,1650
252
265
  phoenix/server/api/types/User.py,sha256=iTVUrI8U6-asOhBt1bOZNtoRAaRNC4WHgR1Uv2rHnWQ,1975
@@ -273,20 +286,21 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
273
286
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
274
287
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
275
288
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
276
- phoenix/server/static/.vite/manifest.json,sha256=R621q8gnowayj2q8CpWgoj2oHbsTB8H_T7mU1UfiydI,1929
277
- phoenix/server/static/assets/components-CdiZ1Osh.js,sha256=iG9VJFu5MxrXzhYpAwM1Q9OsKOkOxJcFJZujcT55JNo,314108
278
- phoenix/server/static/assets/index-D_sCOjlG.js,sha256=5EarOgtXkqjy1ALckGtmpGJCiPo1xWdn-6ygjFoiqB8,8305
279
- phoenix/server/static/assets/pages-FArMEfgg.js,sha256=9CY_Ri-LnqY6xk2V95TN0NlvgbTmm4kCWdtVfa6oLqw,631219
280
- phoenix/server/static/assets/vendor-Bnv1dNRQ.js,sha256=sHBast25yiz3Tg7DMNCKx_KpPHkxi94PKJz_2-hD0_Y,10975957
289
+ phoenix/server/static/.vite/manifest.json,sha256=H-INZnWsmbWImSRNUMxk97n_Gp3Q7kUXeNZme12yLPM,2163
290
+ phoenix/server/static/assets/components-DKH6AzJw.js,sha256=RWkQPJgVGgZqEzBaCuKcxc19e24pfbjaEjwWdxbrkSY,316783
291
+ phoenix/server/static/assets/index-DLV87qiO.js,sha256=F-cdG02QreiLbNUM0Vcp1PTBfjyaHH2XXzHamQ6syQY,8033
292
+ phoenix/server/static/assets/pages-CVY3Nv4Z.js,sha256=QzdU8hUVKqys5cST3gmMy0bNjShoKGbL6btLMoT3cnc,669246
293
+ phoenix/server/static/assets/vendor-Cb3zlNNd.js,sha256=4yHqkg-jnECjHY3bA_-aYIK8paH4j0vY5Vx0qkaW_OU,2061939
281
294
  phoenix/server/static/assets/vendor-DxkFTwjz.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
282
- phoenix/server/static/assets/vendor-arizeai-BG6iwyLC.js,sha256=rHkAk1Q2wkNV_3MirT0MYdA-oyCKpu5bFhpsaISg9fs,308489
283
- phoenix/server/static/assets/vendor-codemirror-BotnVFFX.js,sha256=yZnTXw9fvnqCrz53jYGv1pXM2QX-9W_ioLS9417Mijw,392709
284
- phoenix/server/static/assets/vendor-recharts-Dy5gEFzQ.js,sha256=z5_pZ5IJNbdA7EjAYdIeGxd1L7HifEzKmxXvq7EVIBw,282859
295
+ phoenix/server/static/assets/vendor-arizeai-Buo4e1A6.js,sha256=gDkYYjDuuj7Qt18ZzrQriCjh3pLiqQjyzdYPcrRnmLs,308489
296
+ phoenix/server/static/assets/vendor-codemirror-BuAQiUVf.js,sha256=BwKGD-l2CFA_RJ6J908ykmJkbYR4STxh9Cq3VnIoitg,392748
297
+ phoenix/server/static/assets/vendor-recharts-Cl9dK5tC.js,sha256=02BDRWrMBNjAqY68qazFHrrSIxR_0r1rSlcJChH-ZrU,282859
298
+ phoenix/server/static/assets/vendor-shiki-CazYUixL.js,sha256=yo1zcws-X4sfuIlakSqCUAqp-ohj0OfjXdZC9nzu9oE,8980328
285
299
  phoenix/server/static/assets/vendor-three-DwGkEfCM.js,sha256=0D12ZgKzfKCTSdSTKJBFR2RZO_xxeMXrqDp0AszZqHY,620972
286
300
  phoenix/server/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
287
301
  phoenix/server/templates/index.html,sha256=ram6sfy2obf_F053ay35V30v-mnRWZ86rK-PstXLy1c,4457
288
302
  phoenix/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
289
- phoenix/session/client.py,sha256=rsncDzCz8jb7P5e4z3EeZzpSpgluJFXcp00v7RqDYHI,35012
303
+ phoenix/session/client.py,sha256=jGc-jQuFUPdJc4AGcPPkVbnw7Qui8Lm7V6fjPntxkzo,35330
290
304
  phoenix/session/data_extractor.py,sha256=Y0RzYFaNy9fQj8PEIeQ76TBZ90_E1FW7bXu3K5x0EZY,2782
291
305
  phoenix/session/evaluation.py,sha256=Q3fOMNELvqkk-b6a6PKc8pDJdsNQ0ZbTpseUSA2NKqs,5300
292
306
  phoenix/session/session.py,sha256=1HMKmN4Sn6W3szajitR5EQ130ia1HxIhTUB_tew6P00,27474
@@ -295,10 +309,10 @@ phoenix/trace/attributes.py,sha256=mHpOtdjGIs-VGSev_dwvxTeZTc9GILovi1Rdnj56HO0,1
295
309
  phoenix/trace/errors.py,sha256=wB1z8qdPckngdfU-TORToekvg3344oNFAA83_hC2yFY,180
296
310
  phoenix/trace/evaluation_conventions.py,sha256=t8jydM3U0-T5YpiQKRJ3tWdWGlHtzKyttYdw-ddvPOk,1048
297
311
  phoenix/trace/exporter.py,sha256=bUXh8fjJIbHurrnt4bAm-cCWqUN5FqNsIc8DZzzklkQ,4695
298
- phoenix/trace/fixtures.py,sha256=bwDD0rgIRdAi_9zwLLipke50oYuKJvZLvhiGsuvnGbs,19169
312
+ phoenix/trace/fixtures.py,sha256=k5gduf21C5NbZx95O_WB7mqGnrRiig0ti2VVYQiB9vo,19537
299
313
  phoenix/trace/otel.py,sha256=FZGzo0NPJqFBLkL_VmQeBne2z-LdHNPTz3oIZOuPPzQ,9997
300
314
  phoenix/trace/projects.py,sha256=9dKv1aiKL4IYMFsg2xnC6EOIRO0YHtkR5o9ALHbMK9g,2178
301
- phoenix/trace/schemas.py,sha256=0tghsJDaLKvSuxDDQGpUEQ0HkMsKmFWPO3lwJrJ9t84,5972
315
+ phoenix/trace/schemas.py,sha256=Su6e567Bei9oo6PsWO2srTcPAj9C2bMgbGtx64Sgqeg,6332
302
316
  phoenix/trace/span_evaluations.py,sha256=x3nye9r2SQk1mrR3N05YbuWsgUKpMWwTRBtJTDBSj3Y,13156
303
317
  phoenix/trace/span_json_decoder.py,sha256=J1_oDViuUoC4vxPg61U4EOZC1uEMcCzoj-kVjOFEE8k,3224
304
318
  phoenix/trace/span_json_encoder.py,sha256=Wa7RvQTZSsFG4pdKSSFSO_4q4DjAOQuG8wLNJvYzsfM,2004
@@ -322,9 +336,9 @@ phoenix/utilities/project.py,sha256=auVpARXkDb-JgeX5f2aStyFIkeKvGwN9l7qrFeJMVxI,
322
336
  phoenix/utilities/re.py,sha256=x8Xbk-Wa6qDMAtUd_7JtZvKtrYEuMY-bchB0n163_5c,2006
323
337
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
324
338
  phoenix/utilities/template_formatters.py,sha256=gh9PJD6WEGw7TEYXfSst1UR4pWWwmjxMLrDVQ_CkpkQ,2779
325
- arize_phoenix-6.1.0.dist-info/METADATA,sha256=8ecHY7M9HSPtGBPqVfj5np5ZbUEJ2ijGIHVGiw_u_Ak,22669
326
- arize_phoenix-6.1.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
327
- arize_phoenix-6.1.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
328
- arize_phoenix-6.1.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
329
- arize_phoenix-6.1.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
330
- arize_phoenix-6.1.0.dist-info/RECORD,,
339
+ arize_phoenix-7.0.0.dist-info/METADATA,sha256=JewxawzwVoqTyW-sdqRFKimVnbpgX7UtZfUV3c878SY,23173
340
+ arize_phoenix-7.0.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
341
+ arize_phoenix-7.0.0.dist-info/entry_points.txt,sha256=Pgpn8Upxx9P8z8joPXZWl2LlnAlGc3gcQoVchb06X1Q,94
342
+ arize_phoenix-7.0.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
343
+ arize_phoenix-7.0.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
344
+ arize_phoenix-7.0.0.dist-info/RECORD,,
phoenix/config.py CHANGED
@@ -5,8 +5,9 @@ import tempfile
5
5
  from dataclasses import dataclass
6
6
  from datetime import timedelta
7
7
  from enum import Enum
8
+ from importlib.metadata import version
8
9
  from pathlib import Path
9
- from typing import Optional, overload
10
+ from typing import Optional, cast, overload
10
11
  from urllib.parse import urlparse
11
12
 
12
13
  from phoenix.utilities.logging import log_a_list
@@ -784,3 +785,5 @@ def _get_default_idp_display_name(idp_name: str) -> str:
784
785
 
785
786
  DEFAULT_PROJECT_NAME = "default"
786
787
  _KUBERNETES_PHOENIX_PORT_PATTERN = re.compile(r"^tcp://\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}:\d+$")
788
+
789
+ SKLEARN_VERSION = cast(tuple[int, int], tuple(map(int, version("scikit-learn").split(".", 2)[:2])))
phoenix/db/engines.py CHANGED
@@ -53,7 +53,7 @@ def get_async_db_url(connection_str: str) -> URL:
53
53
  # So we need to parse them out manually
54
54
  if url.username and url.password:
55
55
  url = url.set(
56
- query={"user": url.username, "password": url.password},
56
+ query={**url.query, "user": url.username, "password": url.password},
57
57
  password=None,
58
58
  username=None,
59
59
  )
@@ -28,42 +28,77 @@ async def insert_span(
28
28
  dialect = SupportedSQLDialect(session.bind.dialect.name)
29
29
  if (
30
30
  project_rowid := await session.scalar(
31
- select(models.Project.id).where(models.Project.name == project_name)
31
+ select(models.Project.id).filter_by(name=project_name)
32
32
  )
33
33
  ) is None:
34
34
  project_rowid = await session.scalar(
35
- insert(models.Project).values(dict(name=project_name)).returning(models.Project.id)
35
+ insert(models.Project).values(name=project_name).returning(models.Project.id)
36
36
  )
37
37
  assert project_rowid is not None
38
- if trace := await session.scalar(
39
- select(models.Trace).where(models.Trace.trace_id == span.context.trace_id)
40
- ):
41
- trace_rowid = trace.id
42
- if span.start_time < trace.start_time or trace.end_time < span.end_time:
43
- trace_start_time = min(trace.start_time, span.start_time)
44
- trace_end_time = max(trace.end_time, span.end_time)
45
- await session.execute(
46
- update(models.Trace)
47
- .where(models.Trace.id == trace_rowid)
48
- .values(
49
- start_time=trace_start_time,
50
- end_time=trace_end_time,
51
- )
52
- )
38
+
39
+ trace_id = span.context.trace_id
40
+ trace: models.Trace = await session.scalar(
41
+ select(models.Trace).filter_by(trace_id=trace_id)
42
+ ) or models.Trace(trace_id=trace_id)
43
+
44
+ if trace.id is not None:
45
+ # Trace record may need to be updated.
46
+ if trace.end_time < span.end_time:
47
+ trace.end_time = span.end_time
48
+ trace.project_rowid = project_rowid
49
+ if span.start_time < trace.start_time:
50
+ trace.start_time = span.start_time
53
51
  else:
54
- trace_rowid = cast(
55
- int,
56
- await session.scalar(
57
- insert(models.Trace)
58
- .values(
59
- project_rowid=project_rowid,
60
- trace_id=span.context.trace_id,
61
- start_time=span.start_time,
62
- end_time=span.end_time,
63
- )
64
- .returning(models.Trace.id)
65
- ),
52
+ # Trace record needs to be persisted for the first time.
53
+ trace.start_time = span.start_time
54
+ trace.end_time = span.end_time
55
+ trace.project_rowid = project_rowid
56
+ session.add(trace)
57
+
58
+ session_id = get_attribute_value(span.attributes, SpanAttributes.SESSION_ID)
59
+ session_id = str(session_id).strip() if session_id is not None else ""
60
+ assert isinstance(session_id, str)
61
+
62
+ project_session: Optional[models.ProjectSession] = None
63
+ if trace.project_session_rowid is not None:
64
+ # ProjectSession record already exists in database for this Trace record, so we fetch
65
+ # it because it may need to be updated. However, the session_id on the span, if exists,
66
+ # will be ignored at this point. Otherwise, if session_id is different, we will need
67
+ # to create a new ProjectSession record, as well as to determine whether the old record
68
+ # needs to be deleted if this is the last Trace associated with it.
69
+ project_session = await session.scalar(
70
+ select(models.ProjectSession).filter_by(id=trace.project_session_rowid)
66
71
  )
72
+ elif session_id:
73
+ project_session = await session.scalar(
74
+ select(models.ProjectSession).filter_by(session_id=session_id)
75
+ ) or models.ProjectSession(session_id=session_id)
76
+
77
+ if project_session is not None:
78
+ if project_session.id is None:
79
+ # ProjectSession record needs to be persisted for the first time.
80
+ project_session.start_time = trace.start_time
81
+ project_session.end_time = trace.end_time
82
+ project_session.project_id = project_rowid
83
+ session.add(project_session)
84
+ await session.flush()
85
+ assert project_session.id is not None
86
+ trace.project_session_rowid = project_session.id
87
+ else:
88
+ # ProjectSession record may need to be updated.
89
+ if trace.project_session_rowid is None:
90
+ trace.project_session_rowid = project_session.id
91
+ if trace.start_time < project_session.start_time:
92
+ project_session.start_time = trace.start_time
93
+ if project_session.end_time < trace.end_time:
94
+ project_session.end_time = trace.end_time
95
+
96
+ await session.flush()
97
+ assert trace.id is not None
98
+ assert project_session is None or (
99
+ project_session.id is not None and project_session.id == trace.project_session_rowid
100
+ )
101
+
67
102
  cumulative_error_count = int(span.status_code is SpanStatusCode.ERROR)
68
103
  cumulative_llm_token_count_prompt = cast(
69
104
  int, get_attribute_value(span.attributes, SpanAttributes.LLM_TOKEN_COUNT_PROMPT) or 0
@@ -94,7 +129,7 @@ async def insert_span(
94
129
  insert_on_conflict(
95
130
  dict(
96
131
  span_id=span.context.span_id,
97
- trace_rowid=trace_rowid,
132
+ trace_rowid=trace.id,
98
133
  parent_id=span.parent_id,
99
134
  span_kind=span.span_kind.value,
100
135
  name=span.name,
phoenix/db/migrate.py CHANGED
@@ -4,6 +4,7 @@ import sys
4
4
  from pathlib import Path
5
5
  from queue import Empty, SimpleQueue
6
6
  from threading import Thread
7
+ from time import perf_counter
7
8
  from typing import Optional
8
9
 
9
10
  from alembic import command
@@ -47,12 +48,14 @@ def migrate(
47
48
  alembic_cfg.set_main_option("script_location", scripts_location)
48
49
  url = str(engine.url).replace("%", "%%")
49
50
  alembic_cfg.set_main_option("sqlalchemy.url", url)
51
+ start_time = perf_counter()
50
52
  with engine.connect() as conn:
51
53
  alembic_cfg.attributes["connection"] = conn
52
54
  command.upgrade(alembic_cfg, "head")
55
+ elapsed_time = perf_counter() - start_time
53
56
  engine.dispose()
54
57
  printif(log_migrations, "---------------------------")
55
- printif(log_migrations, "✅ Migrations complete.")
58
+ printif(log_migrations, f"✅ Migrations completed in {elapsed_time:.3f} seconds.")
56
59
  except BaseException as e:
57
60
  if error_queue:
58
61
  error_queue.put(e)