arize-phoenix 8.4.0__tar.gz → 8.5.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 (373) hide show
  1. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/PKG-INFO +1 -1
  2. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/models.py +68 -2
  3. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/context.py +2 -0
  4. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/__init__.py +2 -0
  5. arize_phoenix-8.5.0/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +28 -0
  6. arize_phoenix-8.5.0/src/phoenix/server/api/dataloaders/span_descendants.py +103 -0
  7. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/SpanSort.py +1 -1
  8. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/queries.py +14 -6
  9. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Span.py +27 -4
  10. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Trace.py +7 -0
  11. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/app.py +2 -0
  12. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/.vite/manifest.json +9 -9
  13. arize_phoenix-8.4.0/src/phoenix/server/static/assets/components-BgFPI6sn.js → arize_phoenix-8.5.0/src/phoenix/server/static/assets/components-BrNPaYzp.js +1 -1
  14. arize_phoenix-8.4.0/src/phoenix/server/static/assets/index-CIkk8uHr.js → arize_phoenix-8.5.0/src/phoenix/server/static/assets/index-CRMcwhZY.js +1 -1
  15. arize_phoenix-8.4.0/src/phoenix/server/static/assets/pages-CmDiPH1A.js → arize_phoenix-8.5.0/src/phoenix/server/static/assets/pages-B8pBNWCb.js +340 -332
  16. arize_phoenix-8.5.0/src/phoenix/version.py +1 -0
  17. arize_phoenix-8.4.0/src/phoenix/server/api/dataloaders/span_descendants.py +0 -66
  18. arize_phoenix-8.4.0/src/phoenix/version.py +0 -1
  19. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/.gitignore +0 -0
  20. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/IP_NOTICE +0 -0
  21. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/LICENSE +0 -0
  22. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/README.md +0 -0
  23. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/pyproject.toml +0 -0
  24. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/__init__.py +0 -0
  25. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/auth.py +0 -0
  26. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/config.py +0 -0
  27. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/core/__init__.py +0 -0
  28. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/core/embedding_dimension.py +0 -0
  29. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/core/model.py +0 -0
  30. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/core/model_schema.py +0 -0
  31. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  32. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/datetime_utils.py +0 -0
  33. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/README.md +0 -0
  34. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/__init__.py +0 -0
  35. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/alembic.ini +0 -0
  36. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/bulk_inserter.py +0 -0
  37. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/engines.py +0 -0
  38. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/enums.py +0 -0
  39. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/facilitator.py +0 -0
  40. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/helpers.py +0 -0
  41. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/__init__.py +0 -0
  42. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/constants.py +0 -0
  43. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/dataset.py +0 -0
  44. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  45. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  46. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/helpers.py +0 -0
  47. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/span.py +0 -0
  48. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  49. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  50. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/insertion/types.py +0 -0
  51. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrate.py +0 -0
  52. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/__init__.py +0 -0
  53. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  54. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  55. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/env.py +0 -0
  56. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  57. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  58. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  59. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  60. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  61. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  62. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  63. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/types/__init__.py +0 -0
  64. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/types/identifier.py +0 -0
  65. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/db/types/model_provider.py +0 -0
  66. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/exceptions.py +0 -0
  67. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/__init__.py +0 -0
  68. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  69. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  70. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  71. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  72. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  73. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/functions.py +0 -0
  74. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/tracing.py +0 -0
  75. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/types.py +0 -0
  76. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/experiments/utils.py +0 -0
  77. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/inferences/__init__.py +0 -0
  78. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/inferences/errors.py +0 -0
  79. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/inferences/fixtures.py +0 -0
  80. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/inferences/inferences.py +0 -0
  81. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/inferences/schema.py +0 -0
  82. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/inferences/validation.py +0 -0
  83. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/logging/__init__.py +0 -0
  84. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/logging/_config.py +0 -0
  85. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/logging/_filter.py +0 -0
  86. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/logging/_formatter.py +0 -0
  87. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/metrics/README.md +0 -0
  88. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/metrics/__init__.py +0 -0
  89. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/metrics/binning.py +0 -0
  90. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/metrics/metrics.py +0 -0
  91. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/metrics/mixins.py +0 -0
  92. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  93. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/metrics/timeseries.py +0 -0
  94. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/metrics/wrappers.py +0 -0
  95. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/pointcloud/__init__.py +0 -0
  96. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/pointcloud/clustering.py +0 -0
  97. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  98. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/pointcloud/projectors.py +0 -0
  99. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  100. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/py.typed +0 -0
  101. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/__init__.py +0 -0
  102. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/README.md +0 -0
  103. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/__init__.py +0 -0
  104. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/auth.py +0 -0
  105. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  106. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  107. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  108. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  109. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  110. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  111. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  112. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  113. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  114. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  115. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  116. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  117. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  118. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  119. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  120. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  121. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  122. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  123. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  124. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  125. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  126. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  127. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  128. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  129. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  130. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  131. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  132. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  133. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  134. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  135. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  136. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  137. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  138. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  139. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  140. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/exceptions.py +0 -0
  141. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  142. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  143. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  144. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
  145. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  146. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  147. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  148. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  149. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  150. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  151. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  152. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  153. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  154. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  155. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  156. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  157. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  158. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  159. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  160. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  161. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  162. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  163. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  164. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  165. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  166. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  167. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  168. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  169. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  170. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  171. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  172. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  173. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  174. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  175. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  176. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  177. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  178. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  179. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  180. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  181. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  182. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  183. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  184. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  185. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  186. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  187. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/interceptor.py +0 -0
  188. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  189. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  190. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  191. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  192. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  193. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  194. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  195. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  196. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  197. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  198. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  199. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  200. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  201. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  202. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/openapi/main.py +0 -0
  203. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  204. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  205. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/auth.py +0 -0
  206. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  207. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  208. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/utils.py +0 -0
  209. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  210. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  211. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  212. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  213. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  214. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  215. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  216. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  217. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  218. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  219. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  220. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/schema.py +0 -0
  221. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/subscriptions.py +0 -0
  222. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  223. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  224. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  225. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  226. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  227. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  228. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  229. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  230. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  231. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  232. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  233. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  234. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  235. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  236. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  237. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  238. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  239. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  240. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  241. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  242. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  243. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  244. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  245. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  246. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  247. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  248. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Event.py +0 -0
  249. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  250. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  251. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  252. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  253. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  254. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  255. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  256. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  257. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  258. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  259. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  260. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  261. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  262. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  263. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  264. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  265. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Model.py +0 -0
  266. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  267. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  268. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Project.py +0 -0
  269. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  270. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Prompt.py +0 -0
  271. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  272. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  273. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  274. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  275. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  276. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  277. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  278. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  279. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/Segments.py +0 -0
  280. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  281. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  282. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  283. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  284. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  285. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  286. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  287. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  288. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  289. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/User.py +0 -0
  290. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  291. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  292. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  293. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  294. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/__init__.py +0 -0
  295. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/node.py +0 -0
  296. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/types/pagination.py +0 -0
  297. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/api/utils.py +0 -0
  298. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/bearer_auth.py +0 -0
  299. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/dml_event.py +0 -0
  300. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/dml_event_handler.py +0 -0
  301. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/email/__init__.py +0 -0
  302. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/email/sender.py +0 -0
  303. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  304. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  305. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/email/types.py +0 -0
  306. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/grpc_server.py +0 -0
  307. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/jwt_store.py +0 -0
  308. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/main.py +0 -0
  309. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/oauth2.py +0 -0
  310. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/openapi/__init__.py +0 -0
  311. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/prometheus.py +0 -0
  312. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/rate_limiters.py +0 -0
  313. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  314. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  315. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  316. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  317. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  318. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  319. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  320. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  321. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/assets/vendor-CRRq3WgM.js +0 -0
  322. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/assets/vendor-Cg6lcjUC.css +0 -0
  323. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/assets/vendor-arizeai-Dq64X_0o.js +0 -0
  324. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/assets/vendor-codemirror-C1oevlym.js +0 -0
  325. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/assets/vendor-recharts-CPj01S89.js +0 -0
  326. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/assets/vendor-shiki-aY7rz1pm.js +0 -0
  327. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/assets/vendor-three-C-AGeJYv.js +0 -0
  328. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/favicon.ico +0 -0
  329. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/static/modernizr.js +0 -0
  330. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/telemetry.py +0 -0
  331. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/templates/__init__.py +0 -0
  332. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/templates/index.html +0 -0
  333. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/thread_server.py +0 -0
  334. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/server/types.py +0 -0
  335. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/services.py +0 -0
  336. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/session/__init__.py +0 -0
  337. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/session/client.py +0 -0
  338. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/session/data_extractor.py +0 -0
  339. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/session/evaluation.py +0 -0
  340. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/session/session.py +0 -0
  341. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/settings.py +0 -0
  342. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/__init__.py +0 -0
  343. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/attributes.py +0 -0
  344. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/dsl/README.md +0 -0
  345. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  346. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/dsl/filter.py +0 -0
  347. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  348. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/dsl/query.py +0 -0
  349. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/errors.py +0 -0
  350. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  351. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/exporter.py +0 -0
  352. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/fixtures.py +0 -0
  353. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/otel.py +0 -0
  354. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/projects.py +0 -0
  355. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/schemas.py +0 -0
  356. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/span_evaluations.py +0 -0
  357. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  358. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  359. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/trace_dataset.py +0 -0
  360. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/utils.py +0 -0
  361. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/v1/__init__.py +0 -0
  362. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  363. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  364. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/utilities/__init__.py +0 -0
  365. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/utilities/client.py +0 -0
  366. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/utilities/deprecation.py +0 -0
  367. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/utilities/error_handling.py +0 -0
  368. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/utilities/json.py +0 -0
  369. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/utilities/logging.py +0 -0
  370. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/utilities/project.py +0 -0
  371. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/utilities/re.py +0 -0
  372. {arize_phoenix-8.4.0 → arize_phoenix-8.5.0}/src/phoenix/utilities/span_store.py +0 -0
  373. {arize_phoenix-8.4.0 → arize_phoenix-8.5.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: 8.4.0
3
+ Version: 8.5.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
@@ -1,6 +1,6 @@
1
1
  from datetime import datetime, timezone
2
2
  from enum import Enum
3
- from typing import Any, Optional, Sequence, TypedDict
3
+ from typing import Any, Iterable, Optional, Sequence, TypedDict, cast
4
4
 
5
5
  import sqlalchemy.sql as sql
6
6
  from openinference.semconv.trace import RerankerAttributes, SpanAttributes
@@ -39,7 +39,7 @@ from sqlalchemy.orm import (
39
39
  mapped_column,
40
40
  relationship,
41
41
  )
42
- from sqlalchemy.sql import expression
42
+ from sqlalchemy.sql import Values, column, compiler, expression, literal, roles, union_all
43
43
  from sqlalchemy.sql.compiler import SQLCompiler
44
44
  from sqlalchemy.sql.functions import coalesce
45
45
 
@@ -74,6 +74,72 @@ RERANKER_OUTPUT_DOCUMENTS = RerankerAttributes.RERANKER_OUTPUT_DOCUMENTS.split("
74
74
  RETRIEVAL_DOCUMENTS = SpanAttributes.RETRIEVAL_DOCUMENTS.split(".")
75
75
 
76
76
 
77
+ class SubValues(Values, roles.CompoundElementRole):
78
+ """
79
+ Adapted from the following recipe:
80
+ https://github.com/sqlalchemy/sqlalchemy/issues/7228#issuecomment-1746837960
81
+
82
+ This is part of a workaround to make it more convenient to construct the VALUES clause in
83
+ SQLite. The VALUES clause is useful for creating a temporary table in the database with a set
84
+ of user inputs in the form of multi-value tuples, which can then be joined with other tables.
85
+ """
86
+
87
+ inherit_cache = True
88
+
89
+ @property
90
+ def _all_selected_columns(self) -> Iterable[ColumnElement[Any]]:
91
+ return self.columns
92
+
93
+
94
+ @compiles(SubValues, "sqlite")
95
+ def render_subvalues_w_union(elem: SubValues, compiler: compiler.SQLCompiler, **kw: Any) -> str:
96
+ """
97
+ Adapted from the following recipe:
98
+ https://github.com/sqlalchemy/sqlalchemy/issues/7228#issuecomment-1746837960
99
+
100
+ This is part of a workaround to make it more convenient to construct the VALUES clause in
101
+ SQLite. The VALUES clause is useful for creating a temporary table in the database with a set
102
+ of user inputs in the form of multi-value tuples, which can then be joined with other tables.
103
+ """
104
+ # omit rendering parenthesis, columns, "AS name", etc.
105
+ kw.pop("asfrom", None)
106
+ return cast(str, compiler.visit_values(elem, **kw)) # type: ignore[no-untyped-call]
107
+
108
+
109
+ @compiles(Values, "sqlite")
110
+ def render_values_w_union(
111
+ elem: Values,
112
+ compiler: compiler.SQLCompiler,
113
+ from_linter: Optional[compiler.FromLinter] = None,
114
+ **kw: Any,
115
+ ) -> str:
116
+ """
117
+ Adapted from the following recipe:
118
+ https://github.com/sqlalchemy/sqlalchemy/issues/7228#issuecomment-1746837960
119
+
120
+ This is part of a workaround to make it more convenient to construct the VALUES clause in
121
+ SQLite. The VALUES clause is useful for creating a temporary table in the database with a set
122
+ of user inputs in the form of multi-value tuples, which can then be joined with other tables.
123
+ """
124
+ first: tuple[Any, ...]
125
+ rest: list[tuple[Any, ...]]
126
+ first, *rest = [e for chunk in elem._data for e in chunk]
127
+ stmt = select(*(literal(val).label(col.key) for col, val in zip(elem.columns, first)))
128
+ if rest:
129
+ cols = [column(c.key, c.type) for c in elem.columns]
130
+ stmt = union_all(stmt, SubValues(*cols).data(rest)) # type: ignore[assignment]
131
+ subquery = stmt.subquery(elem.name)
132
+ if from_linter:
133
+ # replace all occurrences of elem with subquery so the from linter
134
+ # can eliminate the values object from its cartesian product check.
135
+ edges = set(from_linter.edges)
136
+ from_linter.edges.clear()
137
+ from_linter.edges.update(
138
+ tuple(subquery if node == elem else node for node in edge) for edge in edges
139
+ )
140
+ return compiler.process(subquery, from_linter=from_linter, **kw)
141
+
142
+
77
143
  class AuthMethod(Enum):
78
144
  LOCAL = "LOCAL"
79
145
  OAUTH2 = "OAUTH2"
@@ -30,6 +30,7 @@ from phoenix.server.api.dataloaders import (
30
30
  LatencyMsQuantileDataLoader,
31
31
  MinStartOrMaxEndTimeDataLoader,
32
32
  NumChildSpansDataLoader,
33
+ NumSpansPerTraceDataLoader,
33
34
  ProjectByNameDataLoader,
34
35
  PromptVersionSequenceNumberDataLoader,
35
36
  RecordCountDataLoader,
@@ -78,6 +79,7 @@ class DataLoaders:
78
79
  latency_ms_quantile: LatencyMsQuantileDataLoader
79
80
  min_start_or_max_end_times: MinStartOrMaxEndTimeDataLoader
80
81
  num_child_spans: NumChildSpansDataLoader
82
+ num_spans_per_trace: NumSpansPerTraceDataLoader
81
83
  project_fields: TableFieldsDataLoader
82
84
  prompt_version_sequence_number: PromptVersionSequenceNumberDataLoader
83
85
  record_counts: RecordCountDataLoader
@@ -18,6 +18,7 @@ from .experiment_sequence_number import ExperimentSequenceNumberDataLoader
18
18
  from .latency_ms_quantile import LatencyMsQuantileCache, LatencyMsQuantileDataLoader
19
19
  from .min_start_or_max_end_times import MinStartOrMaxEndTimeCache, MinStartOrMaxEndTimeDataLoader
20
20
  from .num_child_spans import NumChildSpansDataLoader
21
+ from .num_spans_per_trace import NumSpansPerTraceDataLoader
21
22
  from .project_by_name import ProjectByNameDataLoader
22
23
  from .prompt_version_sequence_number import PromptVersionSequenceNumberDataLoader
23
24
  from .record_counts import RecordCountCache, RecordCountDataLoader
@@ -55,6 +56,7 @@ __all__ = [
55
56
  "LatencyMsQuantileDataLoader",
56
57
  "MinStartOrMaxEndTimeDataLoader",
57
58
  "NumChildSpansDataLoader",
59
+ "NumSpansPerTraceDataLoader",
58
60
  "PromptVersionSequenceNumberDataLoader",
59
61
  "RecordCountDataLoader",
60
62
  "SessionIODataLoader",
@@ -0,0 +1,28 @@
1
+ from typing import Iterable
2
+
3
+ from sqlalchemy import func, select
4
+ from strawberry.dataloader import DataLoader
5
+ from typing_extensions import TypeAlias
6
+
7
+ from phoenix.db.models import Span, Trace
8
+ from phoenix.server.types import DbSessionFactory
9
+
10
+ TraceRowId: TypeAlias = int
11
+
12
+ Key: TypeAlias = TraceRowId
13
+ Result: TypeAlias = int
14
+
15
+
16
+ class NumSpansPerTraceDataLoader(DataLoader[Key, Result]):
17
+ def __init__(self, db: DbSessionFactory) -> None:
18
+ super().__init__(load_fn=self._load_fn)
19
+ self._db = db
20
+
21
+ async def _load_fn(self, keys: Iterable[Key]) -> list[Result]:
22
+ stmt = (
23
+ select(Trace.id, func.count()).join(Span).where(Trace.id.in_(keys)).group_by(Trace.id)
24
+ )
25
+ async with self._db() as session:
26
+ data = await session.stream(stmt)
27
+ result: dict[Key, Result] = {id_: cnt async for id_, cnt in data}
28
+ return [result.get(id_, 0) for id_ in keys]
@@ -0,0 +1,103 @@
1
+ from collections import defaultdict
2
+ from typing import Iterable, Optional
3
+
4
+ import sqlalchemy as sa
5
+ from aioitertools.itertools import groupby
6
+ from sqlalchemy import select
7
+ from strawberry.dataloader import DataLoader
8
+ from typing_extensions import TypeAlias
9
+
10
+ from phoenix.db.models import Span
11
+ from phoenix.server.types import DbSessionFactory
12
+
13
+ SpanRowId: TypeAlias = int
14
+ MaxDepth: TypeAlias = int
15
+
16
+ Key: TypeAlias = tuple[SpanRowId, Optional[MaxDepth]]
17
+ Result: TypeAlias = list[SpanRowId]
18
+
19
+
20
+ class SpanDescendantsDataLoader(DataLoader[Key, Result]):
21
+ def __init__(self, db: DbSessionFactory) -> None:
22
+ super().__init__(load_fn=self._load_fn)
23
+ self._db = db
24
+
25
+ async def _load_fn(self, keys: Iterable[Key]) -> list[Result]:
26
+ # Create a values expression with Span.id and respective max_depth (which can be None).
27
+ values = sa.values(
28
+ sa.Column("root_rowid", sa.Integer),
29
+ sa.Column("max_depth", sa.Integer, nullable=True),
30
+ name="values",
31
+ ).data(list(keys))
32
+
33
+ # Get the root spans with their depth limits by joining the values to the Span table.
34
+ roots = (
35
+ select(
36
+ Span.span_id,
37
+ values.c.root_rowid,
38
+ values.c.max_depth,
39
+ )
40
+ .join_from(values, Span, Span.id == values.c.root_rowid)
41
+ .subquery("roots")
42
+ )
43
+
44
+ # Initialize the recursive common table expression (CTE) with direct children
45
+ # of root spans, setting depth=1.
46
+ descendants = (
47
+ select(
48
+ Span.id,
49
+ Span.span_id,
50
+ Span.start_time,
51
+ roots.c.root_rowid,
52
+ roots.c.max_depth,
53
+ sa.literal(1).label("depth"), # immediate children are depth=1 from root
54
+ )
55
+ .join_from(roots, Span, Span.parent_id == roots.c.span_id)
56
+ .cte("descendants", recursive=True)
57
+ )
58
+
59
+ # Build the recursive part of the query to fetch descendants at increasing depths.
60
+ # This recursively finds children of spans in the current depth level.
61
+ parents = descendants.alias("parents")
62
+ descendants = descendants.union_all(
63
+ select(
64
+ Span.id,
65
+ Span.span_id,
66
+ Span.start_time,
67
+ parents.c.root_rowid,
68
+ parents.c.max_depth,
69
+ (parents.c.depth + 1).label("depth"), # Increment depth for each level
70
+ )
71
+ .join_from(parents, Span, Span.parent_id == parents.c.span_id)
72
+ .where(
73
+ sa.or_(
74
+ parents.c.max_depth.is_(None), # No limit if max_depth is NULL
75
+ parents.c.depth + 1 <= parents.c.max_depth, # Stop when max depth is reached
76
+ ),
77
+ )
78
+ )
79
+
80
+ # Final query to select and order all descendants.
81
+ # Ordering ensures breadth-first traversal and consistent results.
82
+ stmt = select(
83
+ descendants.c.id,
84
+ descendants.c.root_rowid,
85
+ descendants.c.max_depth,
86
+ ).order_by(
87
+ descendants.c.root_rowid,
88
+ descendants.c.max_depth,
89
+ descendants.c.depth, # Order by depth for BFS traversal
90
+ descendants.c.start_time,
91
+ descendants.c.id,
92
+ )
93
+
94
+ results: defaultdict[Key, Result] = defaultdict(list)
95
+ async with self._db() as session:
96
+ data = await session.stream(stmt)
97
+ # Group results by root_rowid and max_depth (the Key tuple)
98
+ async for key, group in groupby(data, key=lambda d: tuple(d[1:])):
99
+ # Extract span IDs (the database row IDs) and add them to the result list.
100
+ # The first column (index 0) from our query is Span.id.
101
+ results[key].extend(id_ for id_, *_ in group)
102
+
103
+ return [results[key].copy() for key in keys]
@@ -30,7 +30,7 @@ class SpanColumn(Enum):
30
30
 
31
31
  @property
32
32
  def column_name(self) -> str:
33
- return "f{self.name}_span_sort_column"
33
+ return f"{self.name}_span_sort_column"
34
34
 
35
35
  @property
36
36
  def orm_expression(self) -> Any:
@@ -86,7 +86,7 @@ class ModelsInput:
86
86
  @strawberry.type
87
87
  class DbTableStats:
88
88
  table_name: str
89
- num_bytes: int
89
+ num_bytes: float
90
90
 
91
91
 
92
92
  @strawberry.type
@@ -796,9 +796,13 @@ class Query:
796
796
  ) -> list[DbTableStats]:
797
797
  if info.context.db.dialect is SupportedSQLDialect.SQLITE:
798
798
  stmt = text("SELECT name, sum(pgsize) FROM dbstat group by name;")
799
- async with info.context.db() as session:
800
- stats = cast(Iterable[tuple[str, int]], await session.execute(stmt))
801
- stats = _consolidate_sqlite_db_table_stats(stats)
799
+ try:
800
+ async with info.context.db() as session:
801
+ stats = cast(Iterable[tuple[str, int]], await session.execute(stmt))
802
+ stats = _consolidate_sqlite_db_table_stats(stats)
803
+ except Exception:
804
+ # TODO: temporary workaround until we can reproduce the error
805
+ return []
802
806
  elif info.context.db.dialect is SupportedSQLDialect.POSTGRESQL:
803
807
  stmt = text(f"""\
804
808
  SELECT c.relname, pg_total_relation_size(c.oid)
@@ -807,8 +811,12 @@ class Query:
807
811
  WHERE c.relkind = 'r'
808
812
  AND n.nspname = '{getenv(ENV_PHOENIX_SQL_DATABASE_SCHEMA) or "public"}';
809
813
  """)
810
- async with info.context.db() as session:
811
- stats = cast(Iterable[tuple[str, int]], await session.execute(stmt))
814
+ try:
815
+ async with info.context.db() as session:
816
+ stats = cast(Iterable[tuple[str, int]], await session.execute(stmt))
817
+ except Exception:
818
+ # TODO: temporary workaround until we can reproduce the error
819
+ return []
812
820
  else:
813
821
  assert_never(info.context.db.dialect)
814
822
  return [
@@ -9,7 +9,7 @@ import numpy as np
9
9
  import strawberry
10
10
  from openinference.semconv.trace import SpanAttributes
11
11
  from strawberry import ID, UNSET
12
- from strawberry.relay import Node, NodeID
12
+ from strawberry.relay import Connection, Node, NodeID
13
13
  from strawberry.types import Info
14
14
  from typing_extensions import Annotated, TypeAlias
15
15
 
@@ -30,6 +30,7 @@ from phoenix.server.api.types.Evaluation import DocumentEvaluation
30
30
  from phoenix.server.api.types.ExampleRevisionInterface import ExampleRevision
31
31
  from phoenix.server.api.types.GenerativeProvider import GenerativeProvider
32
32
  from phoenix.server.api.types.MimeType import MimeType
33
+ from phoenix.server.api.types.pagination import ConnectionArgs, CursorString, connection_from_list
33
34
  from phoenix.server.api.types.SortDir import SortDir
34
35
  from phoenix.server.api.types.SpanAnnotation import SpanAnnotation, to_gql_span_annotation
35
36
  from phoenix.server.api.types.SpanIOValue import SpanIOValue, truncate_value
@@ -547,9 +548,31 @@ class Span(Node):
547
548
  async def descendants(
548
549
  self,
549
550
  info: Info[Context, None],
550
- ) -> list["Span"]:
551
- ids: Iterable[int] = await info.context.data_loaders.span_descendants.load(self.span_rowid)
552
- return [Span(span_rowid=id_) for id_ in ids]
551
+ max_depth: Annotated[
552
+ Optional[int],
553
+ strawberry.argument(
554
+ description="Maximum depth of breadth first search. For example, "
555
+ "maxDepth=1 searches for only the immediate child spans (if any); "
556
+ "maxDepth=2 searches for the immediate child spans plus their children. "
557
+ "maxDepth=0 (or None) means no limit."
558
+ ),
559
+ ] = 3,
560
+ first: Optional[int] = 50,
561
+ last: Optional[int] = UNSET,
562
+ after: Optional[CursorString] = UNSET,
563
+ before: Optional[CursorString] = UNSET,
564
+ ) -> Connection["Span"]:
565
+ args = ConnectionArgs(
566
+ first=first,
567
+ after=after if isinstance(after, CursorString) else None,
568
+ last=last,
569
+ before=before if isinstance(before, CursorString) else None,
570
+ )
571
+ span_rowids: Iterable[int] = await info.context.data_loaders.span_descendants.load(
572
+ (self.span_rowid, max_depth or None),
573
+ )
574
+ data = [Span(span_rowid=span_rowid) for span_rowid in span_rowids]
575
+ return connection_from_list(data=data, args=args)
553
576
 
554
577
  @strawberry.field(
555
578
  description="The span's attributes translated into an example revision for a dataset",
@@ -171,6 +171,13 @@ class Trace(Node):
171
171
  return None
172
172
  return Span(span_rowid=span_rowid)
173
173
 
174
+ @strawberry.field
175
+ async def num_spans(
176
+ self,
177
+ info: Info[Context, None],
178
+ ) -> int:
179
+ return await info.context.data_loaders.num_spans_per_trace.load(self.trace_rowid)
180
+
174
181
  @strawberry.field
175
182
  async def spans(
176
183
  self,
@@ -86,6 +86,7 @@ from phoenix.server.api.dataloaders import (
86
86
  LatencyMsQuantileDataLoader,
87
87
  MinStartOrMaxEndTimeDataLoader,
88
88
  NumChildSpansDataLoader,
89
+ NumSpansPerTraceDataLoader,
89
90
  ProjectByNameDataLoader,
90
91
  PromptVersionSequenceNumberDataLoader,
91
92
  RecordCountDataLoader,
@@ -616,6 +617,7 @@ def create_graphql_router(
616
617
  ),
617
618
  ),
618
619
  num_child_spans=NumChildSpansDataLoader(db),
620
+ num_spans_per_trace=NumSpansPerTraceDataLoader(db),
619
621
  project_fields=TableFieldsDataLoader(db, models.Project),
620
622
  prompt_version_sequence_number=PromptVersionSequenceNumberDataLoader(db),
621
623
  record_counts=RecordCountDataLoader(
@@ -1,22 +1,22 @@
1
1
  {
2
- "_components-BgFPI6sn.js": {
3
- "file": "assets/components-BgFPI6sn.js",
2
+ "_components-BrNPaYzp.js": {
3
+ "file": "assets/components-BrNPaYzp.js",
4
4
  "name": "components",
5
5
  "imports": [
6
6
  "_vendor-CRRq3WgM.js",
7
- "_pages-CmDiPH1A.js",
7
+ "_pages-B8pBNWCb.js",
8
8
  "_vendor-arizeai-Dq64X_0o.js",
9
9
  "_vendor-codemirror-C1oevlym.js",
10
10
  "_vendor-three-C-AGeJYv.js"
11
11
  ]
12
12
  },
13
- "_pages-CmDiPH1A.js": {
14
- "file": "assets/pages-CmDiPH1A.js",
13
+ "_pages-B8pBNWCb.js": {
14
+ "file": "assets/pages-B8pBNWCb.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
17
  "_vendor-CRRq3WgM.js",
18
18
  "_vendor-arizeai-Dq64X_0o.js",
19
- "_components-BgFPI6sn.js",
19
+ "_components-BrNPaYzp.js",
20
20
  "_vendor-codemirror-C1oevlym.js",
21
21
  "_vendor-recharts-CPj01S89.js"
22
22
  ]
@@ -69,15 +69,15 @@
69
69
  "name": "vendor-three"
70
70
  },
71
71
  "index.tsx": {
72
- "file": "assets/index-CIkk8uHr.js",
72
+ "file": "assets/index-CRMcwhZY.js",
73
73
  "name": "index",
74
74
  "src": "index.tsx",
75
75
  "isEntry": true,
76
76
  "imports": [
77
77
  "_vendor-CRRq3WgM.js",
78
78
  "_vendor-arizeai-Dq64X_0o.js",
79
- "_pages-CmDiPH1A.js",
80
- "_components-BgFPI6sn.js",
79
+ "_pages-B8pBNWCb.js",
80
+ "_components-BrNPaYzp.js",
81
81
  "_vendor-three-C-AGeJYv.js",
82
82
  "_vendor-codemirror-C1oevlym.js",
83
83
  "_vendor-shiki-aY7rz1pm.js",
@@ -1,4 +1,4 @@
1
- import{r as g,R as j,j as e,u as ba,a as Me,e as a1,s as V1,b as D1,c as $e,d as Q1,f as gi,g as fe,h as hi,i as fi,k as q1,l,m as Ci,n as Te,C as o1,o as We,p as Qe,q as bi,t as vi,v as R,w as ln,L as va,x as ya,y as La,z as ce,A as v,B as g1,D as sn,E as p,F as wa,$ as yi,G as xa,H as ka,I as xe,J as Li,K as cn,M as wi,N as xi,O as q,P as X1,Q as O,S as K,T as N,U as Sa,V as Ma,W as ki,X as h1,Y as Ta,Z as Si,_ as Mi,a0 as Ti,a1 as Ii,a2 as Ai,a3 as zi,a4 as Ei,a5 as Vi,a6 as f1,a7 as Di,a8 as Pi,a9 as Oi,aa as _i,ab as ke,ac as Y1,ad as J1,ae as en,af as F,ag as Oe,ah as _n,ai as Fi,aj as Ri,ak as Ni,al as Ia,am as Hi,an as _,ao as Aa,ap as Ki,aq as ze,ar as dn,as as $i,at as un,au as Bi,av as Zi,aw as Gi,ax as ji,ay as Ui,az as Wi,aA as Fn,aB as Qi,aC as qi,aD as Xi,aE as Rn,aF as Yi,aG as Ji,aH as er,aI as P1,aJ as nr,aK as ar,aL as tr,aM as ir,aN as rr,aO as or,aP as lr,aQ as sr,aR as cr,aS as dr}from"./vendor-CRRq3WgM.js";import{a as Nn,R as ur,b as mr,c as pr,m as gr,T as hr,u as fr}from"./pages-CmDiPH1A.js";import{u as Cr,_ as za,a as re,T as X,E as Ea,b as br,c as vr,d as Se,D as C1,e as ye,f as yr,g as _e,A as qe,C as b1,P as mn,F as Lr,L as ve,h as Va,i as l1,j as v1,I as pn,k as gn,l as Da,m as wr,n as xr,o as Pa,p as kr,q as Sr,r as Mr,s as Oa,t as _a,v as Tr,w as Ir,x as Hn,y as Ar}from"./vendor-arizeai-Dq64X_0o.js";import{L as Fa,a as Ra,j as Na,E as hn,k as Ha,d as Ka,l as nn,b as $a,h as zr,c as Er,e as Vr,f as Dr,g as Pr,i as Or,s as _r,m as Ba,n as Xe,R as Ye,p as Fr,o as Rr}from"./vendor-codemirror-C1oevlym.js";import{V as Nr}from"./vendor-three-C-AGeJYv.js";const Za=function(){var n={defaultValue:null,kind:"LocalArgument",name:"clusters"},a={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},t={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},i={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},r={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},o=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],s=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:o,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:o,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[n,a,t,i,r],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:s,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[n,t,a,i,r],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:s},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
1
+ import{r as g,R as j,j as e,u as ba,a as Me,e as a1,s as V1,b as D1,c as $e,d as Q1,f as gi,g as fe,h as hi,i as fi,k as q1,l,m as Ci,n as Te,C as o1,o as We,p as Qe,q as bi,t as vi,v as R,w as ln,L as va,x as ya,y as La,z as ce,A as v,B as g1,D as sn,E as p,F as wa,$ as yi,G as xa,H as ka,I as xe,J as Li,K as cn,M as wi,N as xi,O as q,P as X1,Q as O,S as K,T as N,U as Sa,V as Ma,W as ki,X as h1,Y as Ta,Z as Si,_ as Mi,a0 as Ti,a1 as Ii,a2 as Ai,a3 as zi,a4 as Ei,a5 as Vi,a6 as f1,a7 as Di,a8 as Pi,a9 as Oi,aa as _i,ab as ke,ac as Y1,ad as J1,ae as en,af as F,ag as Oe,ah as _n,ai as Fi,aj as Ri,ak as Ni,al as Ia,am as Hi,an as _,ao as Aa,ap as Ki,aq as ze,ar as dn,as as $i,at as un,au as Bi,av as Zi,aw as Gi,ax as ji,ay as Ui,az as Wi,aA as Fn,aB as Qi,aC as qi,aD as Xi,aE as Rn,aF as Yi,aG as Ji,aH as er,aI as P1,aJ as nr,aK as ar,aL as tr,aM as ir,aN as rr,aO as or,aP as lr,aQ as sr,aR as cr,aS as dr}from"./vendor-CRRq3WgM.js";import{a as Nn,R as ur,b as mr,c as pr,m as gr,T as hr,u as fr}from"./pages-B8pBNWCb.js";import{u as Cr,_ as za,a as re,T as X,E as Ea,b as br,c as vr,d as Se,D as C1,e as ye,f as yr,g as _e,A as qe,C as b1,P as mn,F as Lr,L as ve,h as Va,i as l1,j as v1,I as pn,k as gn,l as Da,m as wr,n as xr,o as Pa,p as kr,q as Sr,r as Mr,s as Oa,t as _a,v as Tr,w as Ir,x as Hn,y as Ar}from"./vendor-arizeai-Dq64X_0o.js";import{L as Fa,a as Ra,j as Na,E as hn,k as Ha,d as Ka,l as nn,b as $a,h as zr,c as Er,e as Vr,f as Dr,g as Pr,i as Or,s as _r,m as Ba,n as Xe,R as Ye,p as Fr,o as Rr}from"./vendor-codemirror-C1oevlym.js";import{V as Nr}from"./vendor-three-C-AGeJYv.js";const Za=function(){var n={defaultValue:null,kind:"LocalArgument",name:"clusters"},a={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},t={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},i={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},r={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},o=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],s=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:o,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:o,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[n,a,t,i,r],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:s,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[n,t,a,i,r],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:s},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
2
2
  $clusters: [ClusterInput!]!
3
3
  $fetchDataQualityMetric: Boolean!
4
4
  $dataQualityMetricColumnName: String
@@ -1,4 +1,4 @@
1
- import{r as t,j as o,ba as z,l as c,O as w,R as P,E as b,cm as k,e1 as S,e2 as F,e3 as L,e4 as l,v as C,e5 as E}from"./vendor-CRRq3WgM.js";import{d as R,J as I,D as T,V as j,W as _}from"./vendor-arizeai-Dq64X_0o.js";import{L as A,r as D,d as O,e as G,F as N,f as V,P as M,h as W,M as m,g as U,D as q,i as B,E as J,j as K,k as $,p as H,l as Y,n as p,o as Q,q as X,s as Z,S as oo,t as lo,v as ao,w as ro,x as co,y as u,z as f,A as y,B as go,C as eo,G as bo,H as no,I as io,J as so,K as to,N as mo,O as po,Q as uo,U as fo,V as yo,W as ho,X as vo,Y as xo,Z as zo,_ as wo,$ as Po,a0 as ko,a1 as So,a2 as Fo,a3 as Lo,a4 as Co,a5 as Eo,a6 as Ro,a7 as Io,a8 as To,a9 as jo,aa as _o,ab as Ao,ac as Do}from"./pages-CmDiPH1A.js";import{W as Oo,dB as Go,b9 as No,U as Vo,dC as Mo,dD as Wo}from"./components-BgFPI6sn.js";import"./vendor-three-C-AGeJYv.js";import"./vendor-codemirror-C1oevlym.js";import"./vendor-shiki-aY7rz1pm.js";import"./vendor-recharts-CPj01S89.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const g of r)if(g.type==="childList")for(const n of g.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&s(n)}).observe(document,{childList:!0,subtree:!0});function i(r){const g={};return r.integrity&&(g.integrity=r.integrity),r.referrerPolicy&&(g.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?g.credentials="include":r.crossOrigin==="anonymous"?g.credentials="omit":g.credentials="same-origin",g}function s(r){if(r.ep)return;r.ep=!0;const g=i(r);fetch(r.href,g)}})();const h="arize-phoenix-feature-flags",d={__RESET__:!1};function Uo(){const a=localStorage.getItem(h);if(!a)return d;try{const e=JSON.parse(a);return Object.assign({},d,e)}catch{return d}}const v=t.createContext(null);function qo(){const a=P.useContext(v);if(a===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return a}function Bo(a){const[e,i]=t.useState(Uo()),s=r=>{localStorage.setItem(h,JSON.stringify(r)),i(r)};return o(v.Provider,{value:{featureFlags:e,setFeatureFlags:s},children:o(Jo,{children:a.children})})}function Jo(a){const{children:e}=a,{featureFlags:i,setFeatureFlags:s}=qo(),[r,g]=t.useState(!1);return z("ctrl+shift+f",()=>g(!0)),c(w,{children:[e,o(T,{type:"modal",isDismissable:!0,onDismiss:()=>g(!1),children:r&&o(R,{title:"Feature Flags",children:o(Oo,{height:"size-1000",padding:"size-100",children:Object.keys(i).map(n=>o(I,{isSelected:i[n],onChange:x=>s({...i,[n]:x}),children:n},n))})})})]})}const Ko=b`
1
+ import{r as t,j as o,ba as z,l as c,O as w,R as P,E as b,cm as k,e1 as S,e2 as F,e3 as L,e4 as l,v as C,e5 as E}from"./vendor-CRRq3WgM.js";import{d as R,J as I,D as T,V as j,W as _}from"./vendor-arizeai-Dq64X_0o.js";import{L as A,r as D,d as O,e as G,F as N,f as V,P as M,h as W,M as m,g as U,D as q,i as B,E as J,j as K,k as $,p as H,l as Y,n as p,o as Q,q as X,s as Z,S as oo,t as lo,v as ao,w as ro,x as co,y as u,z as f,A as y,B as go,C as eo,G as bo,H as no,I as io,J as so,K as to,N as mo,O as po,Q as uo,U as fo,V as yo,W as ho,X as vo,Y as xo,Z as zo,_ as wo,$ as Po,a0 as ko,a1 as So,a2 as Fo,a3 as Lo,a4 as Co,a5 as Eo,a6 as Ro,a7 as Io,a8 as To,a9 as jo,aa as _o,ab as Ao,ac as Do}from"./pages-B8pBNWCb.js";import{W as Oo,dB as Go,b9 as No,U as Vo,dC as Mo,dD as Wo}from"./components-BrNPaYzp.js";import"./vendor-three-C-AGeJYv.js";import"./vendor-codemirror-C1oevlym.js";import"./vendor-shiki-aY7rz1pm.js";import"./vendor-recharts-CPj01S89.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const g of r)if(g.type==="childList")for(const n of g.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&s(n)}).observe(document,{childList:!0,subtree:!0});function i(r){const g={};return r.integrity&&(g.integrity=r.integrity),r.referrerPolicy&&(g.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?g.credentials="include":r.crossOrigin==="anonymous"?g.credentials="omit":g.credentials="same-origin",g}function s(r){if(r.ep)return;r.ep=!0;const g=i(r);fetch(r.href,g)}})();const h="arize-phoenix-feature-flags",d={__RESET__:!1};function Uo(){const a=localStorage.getItem(h);if(!a)return d;try{const e=JSON.parse(a);return Object.assign({},d,e)}catch{return d}}const v=t.createContext(null);function qo(){const a=P.useContext(v);if(a===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return a}function Bo(a){const[e,i]=t.useState(Uo()),s=r=>{localStorage.setItem(h,JSON.stringify(r)),i(r)};return o(v.Provider,{value:{featureFlags:e,setFeatureFlags:s},children:o(Jo,{children:a.children})})}function Jo(a){const{children:e}=a,{featureFlags:i,setFeatureFlags:s}=qo(),[r,g]=t.useState(!1);return z("ctrl+shift+f",()=>g(!0)),c(w,{children:[e,o(T,{type:"modal",isDismissable:!0,onDismiss:()=>g(!1),children:r&&o(R,{title:"Feature Flags",children:o(Oo,{height:"size-1000",padding:"size-100",children:Object.keys(i).map(n=>o(I,{isSelected:i[n],onChange:x=>s({...i,[n]:x}),children:n},n))})})})]})}const Ko=b`
2
2
  :root {
3
3
  --ac-global-dimension-scale-factor: 1;
4
4
  --ac-global-dimension-size-0: 0px;