arize-phoenix 11.7.0__tar.gz → 11.8.0__tar.gz

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 (450) hide show
  1. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/PKG-INFO +14 -2
  2. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/README.md +13 -1
  3. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/config.py +33 -0
  4. arize_phoenix-11.8.0/src/phoenix/datetime_utils.py +226 -0
  5. arize_phoenix-11.8.0/src/phoenix/db/helpers.py +330 -0
  6. arize_phoenix-11.8.0/src/phoenix/server/api/auth.py +75 -0
  7. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +6 -7
  8. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/exceptions.py +6 -0
  9. arize_phoenix-11.8.0/src/phoenix/server/api/input_types/TimeBinConfig.py +23 -0
  10. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/oauth2.py +19 -2
  11. arize_phoenix-11.8.0/src/phoenix/server/api/types/CostBreakdown.py +12 -0
  12. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Project.py +341 -73
  13. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/app.py +7 -3
  14. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/authorization.py +27 -2
  15. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +22 -16
  16. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/daemons/span_cost_calculator.py +2 -8
  17. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/email/sender.py +2 -1
  18. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +3 -0
  19. arize_phoenix-11.8.0/src/phoenix/server/static/.vite/manifest.json +87 -0
  20. arize_phoenix-11.7.0/src/phoenix/server/static/assets/components-J3qjrjBf.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/components-5M9nebi4.js +344 -263
  21. arize_phoenix-11.7.0/src/phoenix/server/static/assets/index-CEObsQf_.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/index-OU2WTnGN.js +11 -11
  22. arize_phoenix-11.7.0/src/phoenix/server/static/assets/pages-CW1UdBht.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/pages-DF8rqxJ4.js +451 -444
  23. arize_phoenix-11.7.0/src/phoenix/server/static/assets/vendor-BnPh9i9e.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-Bl7CyFDw.js +147 -147
  24. arize_phoenix-11.7.0/src/phoenix/server/static/assets/vendor-arizeai-Cr9o_Iu_.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-arizeai-B_viEUUA.js +18 -480
  25. arize_phoenix-11.7.0/src/phoenix/server/static/assets/vendor-codemirror-k3zCIjlN.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-codemirror-vlcH1_iR.js +1 -1
  26. arize_phoenix-11.7.0/src/phoenix/server/static/assets/vendor-recharts-BdblEuGB.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-recharts-C9cQu72o.js +25 -25
  27. arize_phoenix-11.7.0/src/phoenix/server/static/assets/vendor-shiki-DPtuv2M4.js → arize_phoenix-11.8.0/src/phoenix/server/static/assets/vendor-shiki-BsknB7bv.js +1 -1
  28. arize_phoenix-11.8.0/src/phoenix/version.py +1 -0
  29. arize_phoenix-11.7.0/src/phoenix/datetime_utils.py +0 -115
  30. arize_phoenix-11.7.0/src/phoenix/db/helpers.py +0 -175
  31. arize_phoenix-11.7.0/src/phoenix/server/api/auth.py +0 -53
  32. arize_phoenix-11.7.0/src/phoenix/server/api/types/CostBreakdown.py +0 -15
  33. arize_phoenix-11.7.0/src/phoenix/server/static/.vite/manifest.json +0 -87
  34. arize_phoenix-11.7.0/src/phoenix/version.py +0 -1
  35. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/.gitignore +0 -0
  36. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/IP_NOTICE +0 -0
  37. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/LICENSE +0 -0
  38. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/pyproject.toml +0 -0
  39. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/__init__.py +0 -0
  40. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/auth.py +0 -0
  41. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/core/__init__.py +0 -0
  42. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/core/embedding_dimension.py +0 -0
  43. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/core/model.py +0 -0
  44. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/core/model_schema.py +0 -0
  45. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  46. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/README.md +0 -0
  47. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/__init__.py +0 -0
  48. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/alembic.ini +0 -0
  49. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/bulk_inserter.py +0 -0
  50. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/constants.py +0 -0
  51. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/engines.py +0 -0
  52. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/enums.py +0 -0
  53. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/facilitator.py +0 -0
  54. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/__init__.py +0 -0
  55. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/constants.py +0 -0
  56. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/dataset.py +0 -0
  57. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  58. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  59. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/helpers.py +0 -0
  60. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/span.py +0 -0
  61. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  62. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  63. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/insertion/types.py +0 -0
  64. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrate.py +0 -0
  65. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/__init__.py +0 -0
  66. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  67. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  68. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/env.py +0 -0
  69. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  70. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  71. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
  72. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  73. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  74. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
  75. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
  76. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
  77. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
  78. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  79. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  80. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  81. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/models.py +0 -0
  82. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/pg_config.py +0 -0
  83. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/types/__init__.py +0 -0
  84. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/types/annotation_configs.py +0 -0
  85. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/types/db_models.py +0 -0
  86. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/types/identifier.py +0 -0
  87. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/types/model_provider.py +0 -0
  88. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/types/token_price_customization.py +0 -0
  89. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/db/types/trace_retention.py +0 -0
  90. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/exceptions.py +0 -0
  91. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/__init__.py +0 -0
  92. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  93. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  94. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  95. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  96. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  97. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/functions.py +0 -0
  98. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/tracing.py +0 -0
  99. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/types.py +0 -0
  100. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/experiments/utils.py +0 -0
  101. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/inferences/__init__.py +0 -0
  102. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/inferences/errors.py +0 -0
  103. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/inferences/fixtures.py +0 -0
  104. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/inferences/inferences.py +0 -0
  105. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/inferences/schema.py +0 -0
  106. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/inferences/validation.py +0 -0
  107. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/logging/__init__.py +0 -0
  108. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/logging/_config.py +0 -0
  109. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/logging/_filter.py +0 -0
  110. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/logging/_formatter.py +0 -0
  111. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/metrics/README.md +0 -0
  112. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/metrics/__init__.py +0 -0
  113. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/metrics/binning.py +0 -0
  114. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/metrics/metrics.py +0 -0
  115. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/metrics/mixins.py +0 -0
  116. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  117. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/metrics/timeseries.py +0 -0
  118. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/metrics/wrappers.py +0 -0
  119. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/__init__.py +0 -0
  120. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/clustering.py +0 -0
  121. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  122. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/projectors.py +0 -0
  123. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  124. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/py.typed +0 -0
  125. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/__init__.py +0 -0
  126. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/README.md +0 -0
  127. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/__init__.py +0 -0
  128. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/context.py +0 -0
  129. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  130. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
  131. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  132. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  133. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  134. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  135. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  136. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  137. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  138. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  139. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  140. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  141. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  142. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  143. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  144. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  145. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
  146. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  147. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  148. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  149. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
  150. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  151. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
  152. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  153. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  154. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  155. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  156. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  157. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  158. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  159. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  160. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  161. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
  162. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
  163. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
  164. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
  165. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
  166. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
  167. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
  168. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
  169. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
  170. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
  171. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
  172. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
  173. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  174. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  175. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  176. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  177. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  178. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  179. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
  180. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  181. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
  182. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  183. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  184. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  185. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
  186. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  187. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  188. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
  189. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  190. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  191. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  192. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  193. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  194. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
  195. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  196. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  197. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  198. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  199. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  200. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  201. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  202. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  203. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  204. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  205. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  206. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  207. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  208. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  209. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
  210. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  211. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  212. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  213. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  214. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  215. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  216. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  217. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  218. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
  219. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  220. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  221. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  222. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  223. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  224. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  225. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  226. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
  227. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  228. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
  229. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  230. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  231. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
  232. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  233. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  234. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  235. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  236. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  237. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  238. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/interceptor.py +0 -0
  239. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  240. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
  241. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  242. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  243. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  244. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  245. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  246. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
  247. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  248. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
  249. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  250. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  251. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  252. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  253. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  254. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
  255. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  256. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  257. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/openapi/main.py +0 -0
  258. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  259. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/queries.py +0 -0
  260. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  261. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/auth.py +0 -0
  262. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  263. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/utils.py +0 -0
  264. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  265. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
  266. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
  267. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  268. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  269. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  270. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  271. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  272. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  273. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
  274. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  275. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  276. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  277. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
  278. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  279. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/schema.py +0 -0
  280. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/subscriptions.py +0 -0
  281. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  282. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
  283. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
  284. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  285. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  286. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  287. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  288. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  289. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  290. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  291. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  292. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
  293. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  294. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  295. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  296. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  297. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  298. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  299. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  300. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  301. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  302. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  303. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  304. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  305. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  306. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  307. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  308. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  309. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  310. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Event.py +0 -0
  311. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  312. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  313. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  314. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  315. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  316. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  317. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  318. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  319. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  320. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  321. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  322. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  323. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
  324. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  325. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  326. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  327. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  328. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
  329. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  330. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  331. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
  332. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  333. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
  334. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Prompt.py +0 -0
  335. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  336. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  337. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  338. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  339. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  340. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  341. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  342. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  343. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Segments.py +0 -0
  344. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  345. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Span.py +0 -0
  346. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  347. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
  348. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
  349. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  350. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  351. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  352. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
  353. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
  354. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  355. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  356. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/Trace.py +0 -0
  357. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  358. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  359. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/User.py +0 -0
  360. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  361. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  362. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  363. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  364. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/__init__.py +0 -0
  365. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/node.py +0 -0
  366. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/types/pagination.py +0 -0
  367. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/api/utils.py +0 -0
  368. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/bearer_auth.py +0 -0
  369. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
  370. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
  371. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
  372. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
  373. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
  374. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
  375. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/daemons/__init__.py +0 -0
  376. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
  377. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
  378. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/dml_event.py +0 -0
  379. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/dml_event_handler.py +0 -0
  380. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/email/__init__.py +0 -0
  381. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  382. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  383. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/email/templates/welcome.html +0 -0
  384. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/email/types.py +0 -0
  385. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/grpc_server.py +0 -0
  386. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/jwt_store.py +0 -0
  387. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/main.py +0 -0
  388. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/middleware/__init__.py +0 -0
  389. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/middleware/gzip.py +0 -0
  390. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/oauth2.py +0 -0
  391. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/openapi/__init__.py +0 -0
  392. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/prometheus.py +0 -0
  393. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/rate_limiters.py +0 -0
  394. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/retention.py +0 -0
  395. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  396. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  397. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  398. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  399. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  400. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  401. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  402. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  403. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/assets/vendor-WIZid84E.css +0 -0
  404. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/assets/vendor-three-C5WAXd5r.js +0 -0
  405. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/favicon.ico +0 -0
  406. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/static/modernizr.js +0 -0
  407. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/telemetry.py +0 -0
  408. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/templates/__init__.py +0 -0
  409. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/templates/index.html +0 -0
  410. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/thread_server.py +0 -0
  411. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/server/types.py +0 -0
  412. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/services.py +0 -0
  413. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/session/__init__.py +0 -0
  414. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/session/client.py +0 -0
  415. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/session/data_extractor.py +0 -0
  416. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/session/evaluation.py +0 -0
  417. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/session/session.py +0 -0
  418. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/settings.py +0 -0
  419. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/__init__.py +0 -0
  420. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/attributes.py +0 -0
  421. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/README.md +0 -0
  422. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  423. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/filter.py +0 -0
  424. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  425. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/dsl/query.py +0 -0
  426. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/errors.py +0 -0
  427. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  428. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/exporter.py +0 -0
  429. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/fixtures.py +0 -0
  430. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/otel.py +0 -0
  431. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/projects.py +0 -0
  432. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/schemas.py +0 -0
  433. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/span_evaluations.py +0 -0
  434. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  435. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  436. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/trace_dataset.py +0 -0
  437. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/utils.py +0 -0
  438. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/v1/__init__.py +0 -0
  439. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  440. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  441. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/__init__.py +0 -0
  442. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/client.py +0 -0
  443. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/deprecation.py +0 -0
  444. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/error_handling.py +0 -0
  445. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/json.py +0 -0
  446. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/logging.py +0 -0
  447. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/project.py +0 -0
  448. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/re.py +0 -0
  449. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/span_store.py +0 -0
  450. {arize_phoenix-11.7.0 → arize_phoenix-11.8.0}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 11.7.0
3
+ Version: 11.8.0
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://arize.com/docs/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -205,6 +205,7 @@ The `arize-phoenix` package includes the entire Phoenix platfom. However if you
205
205
  | [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | Python [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-client)](https://pypi.org/project/arize-phoenix-client/) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
206
206
  | [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | Python [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-evals)](https://pypi.org/project/arize-phoenix-evals/) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
207
207
  | [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | JavaScript [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-client)](https://www.npmjs.com/package/@arizeai/phoenix-client) | Client for the Arize Phoenix API |
208
+ | [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | TypeScript [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-evals)](https://www.npmjs.com/package/@arizeai/phoenix-evals) | TypeScript evaluation library for LLM applications (alpha release) |
208
209
  | [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | JavaScript [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-mcp)](https://www.npmjs.com/package/@arizeai/phoenix-mcp) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
209
210
 
210
211
  ## Tracing Integrations
@@ -248,9 +249,20 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
248
249
  | [BeeAI](https://arize.com/docs/phoenix/tracing/integrations-tracing/beeai) | `@arizeai/openinference-instrumentation-beeai` | [![NPM Version](https://img.shields.io/npm/v/@arizeai/openinference-vercel)](https://www.npmjs.com/package/@arizeai/openinference-instrumentation-beeai) |
249
250
  | [Mastra](https://arize.com/docs/phoenix/integrations/mastra) | `@arizeai/openinference-mastra` | [![NPM Version](https://img.shields.io/npm/v/@arizeai/openinference-mastra.svg)](https://www.npmjs.com/package/@arizeai/openinference-mastra) |
250
251
 
252
+ ### Java Integrations
253
+
254
+ | Integration | Package | Version Badge |
255
+ | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
256
+ | [LangChain4j](https://github.com/Arize-ai/openinference/tree/main/java/instrumentation/openinference-instrumentation-langchain4j) | `openinference-instrumentation-langchain4j` | [![Maven Central](https://img.shields.io/maven-central/v/com.arize/openinference-instrumentation-langchain4j.svg)](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-langchain4j) |
257
+
251
258
  ### Platforms
252
259
 
253
- Phoenix has native integrations with [LangFlow](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow), LiteLLM Proxy, and [BeeAI](https://docs.beeai.dev/observability/agents-traceability).
260
+ | Platform | Description | Docs |
261
+ | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
262
+ | [Dify](https://docs.dify.ai/en/guides/monitoring/integrate-external-ops-tools/integrate-phoenix) | Open-source LLM app development platform | [Integration Guide](https://docs.dify.ai/en/guides/monitoring/integrate-external-ops-tools/integrate-phoenix) |
263
+ | [LangFlow](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow) | Visual framework for building multi-agent and RAG applications | [Integration Guide](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow) |
264
+ | [BeeAI](https://docs.beeai.dev/observability/agents-traceability) | AI agent framework with built-in observability | [Integration Guide](https://docs.beeai.dev/observability/agents-traceability) |
265
+ | [LiteLLM Proxy](https://docs.litellm.ai/docs/observability/phoenix_integration#using-with-litellm-proxy) | Proxy server for LLMs | [Integration Guide](https://docs.litellm.ai/docs/observability/phoenix_integration#using-with-litellm-proxy) |
254
266
 
255
267
  ## Community
256
268
 
@@ -72,6 +72,7 @@ The `arize-phoenix` package includes the entire Phoenix platfom. However if you
72
72
  | [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | Python [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-client)](https://pypi.org/project/arize-phoenix-client/) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
73
73
  | [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | Python [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-evals)](https://pypi.org/project/arize-phoenix-evals/) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
74
74
  | [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | JavaScript [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-client)](https://www.npmjs.com/package/@arizeai/phoenix-client) | Client for the Arize Phoenix API |
75
+ | [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | TypeScript [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-evals)](https://www.npmjs.com/package/@arizeai/phoenix-evals) | TypeScript evaluation library for LLM applications (alpha release) |
75
76
  | [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | JavaScript [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-mcp)](https://www.npmjs.com/package/@arizeai/phoenix-mcp) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
76
77
 
77
78
  ## Tracing Integrations
@@ -115,9 +116,20 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
115
116
  | [BeeAI](https://arize.com/docs/phoenix/tracing/integrations-tracing/beeai) | `@arizeai/openinference-instrumentation-beeai` | [![NPM Version](https://img.shields.io/npm/v/@arizeai/openinference-vercel)](https://www.npmjs.com/package/@arizeai/openinference-instrumentation-beeai) |
116
117
  | [Mastra](https://arize.com/docs/phoenix/integrations/mastra) | `@arizeai/openinference-mastra` | [![NPM Version](https://img.shields.io/npm/v/@arizeai/openinference-mastra.svg)](https://www.npmjs.com/package/@arizeai/openinference-mastra) |
117
118
 
119
+ ### Java Integrations
120
+
121
+ | Integration | Package | Version Badge |
122
+ | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
123
+ | [LangChain4j](https://github.com/Arize-ai/openinference/tree/main/java/instrumentation/openinference-instrumentation-langchain4j) | `openinference-instrumentation-langchain4j` | [![Maven Central](https://img.shields.io/maven-central/v/com.arize/openinference-instrumentation-langchain4j.svg)](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-langchain4j) |
124
+
118
125
  ### Platforms
119
126
 
120
- Phoenix has native integrations with [LangFlow](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow), LiteLLM Proxy, and [BeeAI](https://docs.beeai.dev/observability/agents-traceability).
127
+ | Platform | Description | Docs |
128
+ | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
129
+ | [Dify](https://docs.dify.ai/en/guides/monitoring/integrate-external-ops-tools/integrate-phoenix) | Open-source LLM app development platform | [Integration Guide](https://docs.dify.ai/en/guides/monitoring/integrate-external-ops-tools/integrate-phoenix) |
130
+ | [LangFlow](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow) | Visual framework for building multi-agent and RAG applications | [Integration Guide](https://arize.com/docs/phoenix/tracing/integrations-tracing/langflow) |
131
+ | [BeeAI](https://docs.beeai.dev/observability/agents-traceability) | AI agent framework with built-in observability | [Integration Guide](https://docs.beeai.dev/observability/agents-traceability) |
132
+ | [LiteLLM Proxy](https://docs.litellm.ai/docs/observability/phoenix_integration#using-with-litellm-proxy) | Proxy server for LLMs | [Integration Guide](https://docs.litellm.ai/docs/observability/phoenix_integration#using-with-litellm-proxy) |
121
133
 
122
134
  ## Community
123
135
 
@@ -246,7 +246,14 @@ The URL to use for redirecting to a management interface that may be hosting Pho
246
246
  the current user is within PHOENIX_ADMINS, a link will be added to the navigation menu to return to
247
247
  this URL.
248
248
  """
249
+ ENV_PHOENIX_SUPPORT_EMAIL = "PHOENIX_SUPPORT_EMAIL"
250
+ """
251
+ The support email address to display in error messages and notifications.
249
252
 
253
+ When set, this email will be included in error messages for insufficient storage
254
+ conditions and database usage notification emails, providing users with a direct
255
+ contact for assistance. If not set, error messages will not include contact information.
256
+ """
250
257
 
251
258
  # SMTP settings
252
259
  ENV_PHOENIX_SMTP_HOSTNAME = "PHOENIX_SMTP_HOSTNAME"
@@ -1599,6 +1606,31 @@ def get_env_management_url() -> Optional[str]:
1599
1606
  return getenv(ENV_PHOENIX_MANAGEMENT_URL)
1600
1607
 
1601
1608
 
1609
+ def get_env_support_email() -> Optional[str]:
1610
+ """
1611
+ Get the support email address from the PHOENIX_SUPPORT_EMAIL environment variable.
1612
+
1613
+ Returns:
1614
+ The support email address if set, None otherwise.
1615
+ """
1616
+ return getenv(ENV_PHOENIX_SUPPORT_EMAIL)
1617
+
1618
+
1619
+ def validate_env_support_email() -> None:
1620
+ """
1621
+ Validate the support email address configured in PHOENIX_SUPPORT_EMAIL.
1622
+
1623
+ Raises:
1624
+ ValueError: If the email address is invalid.
1625
+ """
1626
+ if not (email := get_env_support_email()):
1627
+ return
1628
+ try:
1629
+ validate_email(email, check_deliverability=False)
1630
+ except EmailNotValidError as e:
1631
+ raise ValueError(f"Invalid email in {ENV_PHOENIX_SUPPORT_EMAIL}: '{email}'") from e
1632
+
1633
+
1602
1634
  def verify_server_environment_variables() -> None:
1603
1635
  """Verify that the environment variables are set correctly. Raises an error otherwise."""
1604
1636
  get_env_root_url()
@@ -1607,6 +1639,7 @@ def verify_server_environment_variables() -> None:
1607
1639
  get_env_database_allocated_storage_capacity_gibibytes()
1608
1640
  get_env_database_usage_email_warning_threshold_percentage()
1609
1641
  get_env_database_usage_insertion_blocking_threshold_percentage()
1642
+ validate_env_support_email()
1610
1643
 
1611
1644
  # Notify users about deprecated environment variables if they are being used.
1612
1645
  if os.getenv("PHOENIX_ENABLE_WEBSOCKETS") is not None:
@@ -0,0 +1,226 @@
1
+ from datetime import datetime, timedelta, timezone, tzinfo
2
+ from typing import Any, Iterator, Literal, Optional, cast
3
+
4
+ import pandas as pd
5
+ import pytz
6
+ from pandas import Timestamp, to_datetime
7
+ from pandas.core.dtypes.common import (
8
+ is_datetime64_any_dtype,
9
+ is_datetime64tz_dtype,
10
+ is_numeric_dtype,
11
+ is_object_dtype,
12
+ )
13
+ from typing_extensions import assert_never
14
+
15
+ _LOCAL_TIMEZONE = datetime.now(timezone.utc).astimezone().tzinfo
16
+
17
+
18
+ def local_now() -> datetime:
19
+ return datetime.now(timezone.utc).astimezone(tz=_LOCAL_TIMEZONE)
20
+
21
+
22
+ def normalize_datetime(
23
+ dt: Optional[datetime],
24
+ tz: Optional[tzinfo] = None,
25
+ ) -> Optional[datetime]:
26
+ """
27
+ If the input datetime is timezone-naive, it is localized as local timezone
28
+ unless tzinfo is specified.
29
+ """
30
+ if not isinstance(dt, datetime):
31
+ return None
32
+ if not is_timezone_aware(dt):
33
+ dt = dt.replace(tzinfo=tz if tz else _LOCAL_TIMEZONE)
34
+ return dt.astimezone(timezone.utc)
35
+
36
+
37
+ def normalize_timestamps(
38
+ timestamps: "pd.Series[Any]",
39
+ ) -> "pd.Series[Timestamp]":
40
+ """
41
+ If the input timestamps contains a Unix or datetime timestamp or ISO8601
42
+ timestamp strings column, it is converted to UTC timezone-aware timestamp.
43
+ If a timestamp is timezone-naive, it is localized as per local timezone
44
+ and then converted to UTC.
45
+ """
46
+ if is_numeric_dtype(timestamps):
47
+ return to_datetime(timestamps, unit="s", utc=True)
48
+ if is_datetime64tz_dtype(timestamps):
49
+ return timestamps.dt.tz_convert(pytz.utc)
50
+ if is_datetime64_any_dtype(timestamps):
51
+ return timestamps.dt.tz_localize(
52
+ datetime.now().astimezone().tzinfo,
53
+ ).dt.tz_convert(
54
+ timezone.utc,
55
+ )
56
+ if is_object_dtype(timestamps):
57
+ timestamps = to_datetime(timestamps)
58
+ if timestamps.dt.tz is None:
59
+ timestamps = timestamps.dt.tz_localize(
60
+ datetime.now().astimezone().tzinfo,
61
+ )
62
+ return timestamps.dt.tz_convert(
63
+ timezone.utc,
64
+ )
65
+ raise ValueError(
66
+ "When provided, input timestamp column must have numeric or datetime dtype, "
67
+ f"but found {timestamps.dtype} instead."
68
+ )
69
+
70
+
71
+ def floor_to_minute(dt: datetime) -> datetime:
72
+ """Floor datetime to the minute by taking a round-trip through string
73
+ format because there isn't always an available function to strip the
74
+ nanoseconds if present."""
75
+ try:
76
+ dt_as_string = dt.astimezone(
77
+ timezone.utc,
78
+ ).strftime(
79
+ MINUTE_DATETIME_FORMAT,
80
+ )
81
+ except ValueError:
82
+ # NOTE: as of Python 3.8.16, pandas 1.5.3:
83
+ # >>> isinstance(pd.NaT, datetime.datetime)
84
+ # True
85
+ return cast(datetime, pd.NaT)
86
+ return datetime.strptime(
87
+ dt_as_string,
88
+ MINUTE_DATETIME_FORMAT,
89
+ ).astimezone(
90
+ timezone.utc,
91
+ )
92
+
93
+
94
+ MINUTE_DATETIME_FORMAT = "%Y-%m-%dT%H:%M:00%z"
95
+
96
+
97
+ def right_open_time_range(
98
+ min_time: Optional[datetime],
99
+ max_time: Optional[datetime],
100
+ ) -> tuple[Optional[datetime], Optional[datetime]]:
101
+ """
102
+ First adds one minute to `max_time`, because time intervals are right
103
+ open and one minute is the smallest interval allowed, then rounds down
104
+ the times to the nearest minute.
105
+ """
106
+ return (
107
+ floor_to_minute(min_time) if min_time else None,
108
+ floor_to_minute(max_time + timedelta(minutes=1)) if max_time else None,
109
+ )
110
+
111
+
112
+ def is_timezone_aware(dt: datetime) -> bool:
113
+ """
114
+ Returns True if the datetime is timezone-aware, False otherwise.
115
+ """
116
+ return dt.tzinfo is not None and dt.tzinfo.utcoffset(dt) is not None
117
+
118
+
119
+ def get_timestamp_range(
120
+ start_time: datetime,
121
+ end_time: datetime,
122
+ stride: Literal["minute", "hour", "day", "week", "month", "year"] = "minute",
123
+ utc_offset_minutes: int = 0,
124
+ ) -> Iterator[datetime]:
125
+ """
126
+ Generate a sequence of datetime objects at regular intervals between start and end times.
127
+
128
+ This function creates time intervals by rounding down the start time to the nearest
129
+ stride boundary in the specified timezone, then yielding timestamps at regular
130
+ intervals until reaching the end time. All returned timestamps are in UTC.
131
+
132
+ Args:
133
+ start_time: The starting datetime (inclusive after rounding down to stride boundary).
134
+ Must be timezone-aware.
135
+ end_time: The ending datetime (exclusive). Must be timezone-aware.
136
+ stride: The interval between generated timestamps. Options:
137
+ - "minute": Generate timestamps every minute
138
+ - "hour": Generate timestamps every hour
139
+ - "day": Generate timestamps every day at midnight
140
+ - "week": Generate timestamps every week at Monday midnight
141
+ - "month": Generate timestamps on the 1st of each month at midnight
142
+ - "year": Generate timestamps on January 1st of each year at midnight
143
+ utc_offset_minutes: Timezone offset in minutes from UTC. Used to determine
144
+ the correct stride boundaries in local time. Positive values
145
+ are east of UTC, negative values are west of UTC.
146
+
147
+ Returns:
148
+ Iterator of datetime objects in UTC timezone, spaced at the specified stride
149
+ interval. The first timestamp is rounded down to the nearest stride boundary
150
+ in the local timezone (considering utc_offset_minutes).
151
+
152
+ Examples:
153
+ >>> from datetime import datetime, timezone
154
+ >>> start = datetime(2024, 1, 1, 12, 30, 45, tzinfo=timezone.utc)
155
+ >>> end = datetime(2024, 1, 1, 12, 33, 0, tzinfo=timezone.utc)
156
+ >>> list(get_timestamp_range(start, end, "minute"))
157
+ [datetime(2024, 1, 1, 12, 30, tzinfo=timezone.utc),
158
+ datetime(2024, 1, 1, 12, 31, tzinfo=timezone.utc),
159
+ datetime(2024, 1, 1, 12, 32, tzinfo=timezone.utc)]
160
+
161
+ >>> # Week stride rounds down to Monday
162
+ >>> start = datetime(2024, 1, 10, 12, 0, tzinfo=timezone.utc) # Wednesday
163
+ >>> end = datetime(2024, 1, 22, 0, 0, tzinfo=timezone.utc)
164
+ >>> list(get_timestamp_range(start, end, "week"))
165
+ [datetime(2024, 1, 8, 0, 0, tzinfo=timezone.utc), # Monday
166
+ datetime(2024, 1, 15, 0, 0, tzinfo=timezone.utc)] # Next Monday
167
+
168
+ Note:
169
+ - If end_time <= start_time (after rounding), returns an empty iterator
170
+ - Week intervals always start on Monday (weekday 0)
171
+ - Month intervals handle variable month lengths correctly including leap years
172
+ - The function works in local timezone for stride calculations but returns UTC
173
+ """
174
+ if not is_timezone_aware(start_time) or not is_timezone_aware(end_time):
175
+ raise ValueError("start_time and end_time must be timezone-aware")
176
+
177
+ # Apply UTC offset to work in local timezone
178
+ offset_delta = timedelta(minutes=utc_offset_minutes)
179
+ local_start_time = start_time + offset_delta
180
+
181
+ # round down start_time to the nearest stride in local timezone
182
+ if stride == "minute":
183
+ t = local_start_time.replace(second=0, microsecond=0)
184
+ elif stride == "hour":
185
+ t = local_start_time.replace(minute=0, second=0, microsecond=0)
186
+ elif stride == "day":
187
+ t = local_start_time.replace(hour=0, minute=0, second=0, microsecond=0)
188
+ elif stride == "week":
189
+ # Round down to the beginning of the week (Monday)
190
+ days_since_monday = local_start_time.weekday()
191
+ t = local_start_time.replace(hour=0, minute=0, second=0, microsecond=0) - timedelta(
192
+ days=days_since_monday
193
+ )
194
+ elif stride == "month":
195
+ t = local_start_time.replace(day=1, hour=0, minute=0, second=0, microsecond=0)
196
+ elif stride == "year":
197
+ t = local_start_time.replace(month=1, day=1, hour=0, minute=0, second=0, microsecond=0)
198
+ else:
199
+ assert_never(stride)
200
+
201
+ # Convert back to UTC for comparisons and yielding
202
+ local_end_time = end_time + offset_delta
203
+
204
+ while t < local_end_time:
205
+ # Yield timestamp converted back to UTC
206
+ yield t - offset_delta
207
+ if stride == "minute":
208
+ t += timedelta(minutes=1)
209
+ elif stride == "hour":
210
+ t += timedelta(hours=1)
211
+ elif stride == "day":
212
+ t += timedelta(days=1)
213
+ elif stride == "week":
214
+ t += timedelta(weeks=1)
215
+ elif stride == "month":
216
+ next_month = t.month % 12 + 1
217
+ next_year = t.year + (t.month // 12)
218
+ t = t.replace(
219
+ year=next_year, month=next_month, day=1, hour=0, minute=0, second=0, microsecond=0
220
+ )
221
+ elif stride == "year":
222
+ t = t.replace(
223
+ year=t.year + 1, month=1, day=1, hour=0, minute=0, second=0, microsecond=0
224
+ )
225
+ else:
226
+ assert_never(stride)