arize-phoenix 4.26.0__tar.gz → 4.27.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 (310) hide show
  1. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/PKG-INFO +2 -3
  2. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/pyproject.toml +1 -2
  3. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/inferences/fixtures.py +14 -8
  4. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/experiments.py +55 -1
  5. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/utils.py +2 -2
  6. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/app.py +149 -26
  7. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/main.py +71 -7
  8. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/.vite/manifest.json +9 -9
  9. arize_phoenix-4.26.0/src/phoenix/server/static/assets/components-1Ahruijo.js → arize_phoenix-4.27.0/src/phoenix/server/static/assets/components-1MfQimGx.js +3 -3
  10. arize_phoenix-4.27.0/src/phoenix/server/static/assets/index-B263sE2x.js +100 -0
  11. arize_phoenix-4.26.0/src/phoenix/server/static/assets/pages-CFS6mPnW.js → arize_phoenix-4.27.0/src/phoenix/server/static/assets/pages-CqZDVx20.js +180 -171
  12. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/session/client.py +17 -1
  13. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/dsl/helpers.py +3 -1
  14. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/fixtures.py +47 -4
  15. arize_phoenix-4.27.0/src/phoenix/version.py +1 -0
  16. arize_phoenix-4.26.0/src/phoenix/server/static/assets/index-BEE_RWJx.js +0 -100
  17. arize_phoenix-4.26.0/src/phoenix/version.py +0 -1
  18. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/.gitignore +0 -0
  19. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/IP_NOTICE +0 -0
  20. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/LICENSE +0 -0
  21. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/README.md +0 -0
  22. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/examples/manually-instrumented-chatbot/chat-service/chat/__init__.py +0 -0
  23. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/examples/manually-instrumented-chatbot/chat-service/chat/app.py +0 -0
  24. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/examples/manually-instrumented-chatbot/chat-service/chat/types.py +0 -0
  25. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/examples/manually-instrumented-chatbot/frontend/Dockerfile +0 -0
  26. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/examples/manually-instrumented-chatbot/frontend/Makefile +0 -0
  27. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/examples/manually-instrumented-chatbot/frontend/__init__.py +0 -0
  28. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/examples/manually-instrumented-chatbot/frontend/pyproject.toml +0 -0
  29. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/examples/manually-instrumented-chatbot/frontend/requirements.txt +0 -0
  30. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/examples/manually-instrumented-chatbot/frontend/schema.json +0 -0
  31. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/__init__.py +0 -0
  32. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/auth.py +0 -0
  33. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/config.py +0 -0
  34. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/core/__init__.py +0 -0
  35. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/core/embedding_dimension.py +0 -0
  36. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/core/model.py +0 -0
  37. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/core/model_schema.py +0 -0
  38. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  39. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/datetime_utils.py +0 -0
  40. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/README.md +0 -0
  41. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/__init__.py +0 -0
  42. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/alembic.ini +0 -0
  43. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/bulk_inserter.py +0 -0
  44. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/engines.py +0 -0
  45. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/helpers.py +0 -0
  46. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/__init__.py +0 -0
  47. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/constants.py +0 -0
  48. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/dataset.py +0 -0
  49. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  50. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  51. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/helpers.py +0 -0
  52. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/span.py +0 -0
  53. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  54. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  55. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/insertion/types.py +0 -0
  56. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrate.py +0 -0
  57. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrations/__init__.py +0 -0
  58. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrations/env.py +0 -0
  59. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrations/future_versions/README.md +0 -0
  60. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrations/future_versions/cd164e83824f_users_and_tokens.py +0 -0
  61. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  62. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrations/versions/.gitignore +0 -0
  63. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  64. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  65. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  66. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/db/models.py +0 -0
  67. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/exceptions.py +0 -0
  68. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/__init__.py +0 -0
  69. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  70. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  71. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  72. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  73. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  74. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/functions.py +0 -0
  75. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/tracing.py +0 -0
  76. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/types.py +0 -0
  77. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/experiments/utils.py +0 -0
  78. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/inferences/__init__.py +0 -0
  79. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/inferences/errors.py +0 -0
  80. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/inferences/inferences.py +0 -0
  81. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/inferences/schema.py +0 -0
  82. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/inferences/validation.py +0 -0
  83. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/metrics/README.md +0 -0
  84. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/metrics/__init__.py +0 -0
  85. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/metrics/binning.py +0 -0
  86. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/metrics/metrics.py +0 -0
  87. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/metrics/mixins.py +0 -0
  88. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  89. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/metrics/timeseries.py +0 -0
  90. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/metrics/wrappers.py +0 -0
  91. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/pointcloud/__init__.py +0 -0
  92. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/pointcloud/clustering.py +0 -0
  93. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  94. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/pointcloud/projectors.py +0 -0
  95. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  96. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/py.typed +0 -0
  97. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/__init__.py +0 -0
  98. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/__init__.py +0 -0
  99. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/context.py +0 -0
  100. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  101. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  102. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  103. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  104. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  105. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  106. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  107. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  108. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  109. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  110. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  111. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  112. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  113. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  114. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  115. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  116. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  117. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  118. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  119. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  120. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  121. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  122. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  123. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
  124. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  125. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  126. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  127. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  128. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  129. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  130. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  131. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  132. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  133. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  134. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  135. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  136. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  137. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  138. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  139. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  140. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  141. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  142. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  143. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  144. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  145. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  146. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  147. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  148. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  149. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  150. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  151. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  152. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  153. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  154. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  155. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/interceptor.py +0 -0
  156. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  157. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  158. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/auth.py +0 -0
  159. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  160. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  161. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  162. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  163. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  164. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  165. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  166. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  167. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/openapi/main.py +0 -0
  168. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  169. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/queries.py +0 -0
  170. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  171. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/auth.py +0 -0
  172. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/utils.py +0 -0
  173. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  174. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  175. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  176. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  177. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  178. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  179. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  180. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  181. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/schema.py +0 -0
  182. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  183. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  184. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  185. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  186. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  187. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  188. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  189. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  190. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  191. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  192. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  193. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  194. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  195. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  196. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  197. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  198. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  199. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  200. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  201. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  202. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  203. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  204. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  205. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Event.py +0 -0
  206. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  207. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  208. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  209. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  210. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  211. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  212. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  213. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  214. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  215. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  216. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  217. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  218. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  219. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Model.py +0 -0
  220. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  221. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  222. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Project.py +0 -0
  223. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  224. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  225. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  226. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Segments.py +0 -0
  227. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  228. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Span.py +0 -0
  229. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  230. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  231. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  232. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/Trace.py +0 -0
  233. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  234. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  235. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/User.py +0 -0
  236. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  237. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  238. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  239. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  240. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/__init__.py +0 -0
  241. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/node.py +0 -0
  242. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/types/pagination.py +0 -0
  243. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/api/utils.py +0 -0
  244. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/dml_event.py +0 -0
  245. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/dml_event_handler.py +0 -0
  246. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/grpc_server.py +0 -0
  247. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/openapi/__init__.py +0 -0
  248. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/prometheus.py +0 -0
  249. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  250. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  251. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  252. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  253. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  254. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  255. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  256. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  257. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  258. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/assets/vendor-aSQri0vz.js +0 -0
  259. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/assets/vendor-arizeai-CsdcB1NH.js +0 -0
  260. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/assets/vendor-codemirror-CYHkhs7D.js +0 -0
  261. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/assets/vendor-recharts-B0sannek.js +0 -0
  262. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  263. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/favicon.ico +0 -0
  264. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/static/modernizr.js +0 -0
  265. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/telemetry.py +0 -0
  266. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/templates/__init__.py +0 -0
  267. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/templates/index.html +0 -0
  268. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/thread_server.py +0 -0
  269. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/server/types.py +0 -0
  270. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/services.py +0 -0
  271. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/session/__init__.py +0 -0
  272. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/session/data_extractor.py +0 -0
  273. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/session/evaluation.py +0 -0
  274. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/session/session.py +0 -0
  275. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/settings.py +0 -0
  276. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/__init__.py +0 -0
  277. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/attributes.py +0 -0
  278. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/dsl/README.md +0 -0
  279. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  280. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/dsl/filter.py +0 -0
  281. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/dsl/query.py +0 -0
  282. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/errors.py +0 -0
  283. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  284. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/exporter.py +0 -0
  285. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/langchain/__init__.py +0 -0
  286. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/langchain/instrumentor.py +0 -0
  287. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/llama_index/__init__.py +0 -0
  288. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/llama_index/callback.py +0 -0
  289. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/openai/__init__.py +0 -0
  290. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/openai/instrumentor.py +0 -0
  291. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/otel.py +0 -0
  292. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/projects.py +0 -0
  293. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/schemas.py +0 -0
  294. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/span_evaluations.py +0 -0
  295. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  296. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  297. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/trace_dataset.py +0 -0
  298. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/utils.py +0 -0
  299. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/v1/__init__.py +0 -0
  300. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  301. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  302. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/utilities/__init__.py +0 -0
  303. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/utilities/client.py +0 -0
  304. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/utilities/deprecation.py +0 -0
  305. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/utilities/error_handling.py +0 -0
  306. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/utilities/json.py +0 -0
  307. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/utilities/logging.py +0 -0
  308. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/utilities/project.py +0 -0
  309. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/utilities/re.py +0 -0
  310. {arize_phoenix-4.26.0 → arize_phoenix-4.27.0}/src/phoenix/utilities/span_store.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 4.26.0
3
+ Version: 4.27.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
@@ -45,8 +45,7 @@ Requires-Dist: pydantic!=2.0.*,<3,>=1.0
45
45
  Requires-Dist: pyjwt
46
46
  Requires-Dist: python-multipart
47
47
  Requires-Dist: scikit-learn
48
- Requires-Dist: scipy!=1.14.1; platform_system == 'Darwin'
49
- Requires-Dist: scipy; platform_system != 'Darwin'
48
+ Requires-Dist: scipy
50
49
  Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.4
51
50
  Requires-Dist: sqlean-py>=3.45.1
52
51
  Requires-Dist: starlette
@@ -36,8 +36,7 @@ dependencies = [
36
36
  "typing-extensions>=4.5; python_version<'3.12'",
37
37
  # A minimum version of typing-extensions==4.6.0 is needed to avoid this issue on Python 3.12: https://github.com/Azure/azure-sdk-for-python/issues/33442#issuecomment-1847886784
38
38
  "typing-extensions>=4.6; python_version>='3.12'",
39
- "scipy!=1.14.1; platform_system == 'Darwin'", # MacOS installation issue: https://github.com/scipy/scipy/issues/21424
40
- "scipy; platform_system != 'Darwin'",
39
+ "scipy",
41
40
  "wrapt",
42
41
  "protobuf>=3.20, <6.0",
43
42
  "grpcio",
@@ -422,7 +422,7 @@ def get_inferences(
422
422
  Downloads primary and reference inferences for a fixture if they are not found
423
423
  locally.
424
424
  """
425
- fixture = _get_fixture_by_name(fixture_name=fixture_name)
425
+ fixture = get_fixture_by_name(fixture_name=fixture_name)
426
426
  if no_internet:
427
427
  paths = {role: INFERENCES_DIR / path for role, path in fixture.paths()}
428
428
  else:
@@ -436,9 +436,11 @@ def get_inferences(
436
436
  if fixture.reference_file_name is not None:
437
437
  reference_inferences = Inferences(
438
438
  read_parquet(paths[InferencesRole.REFERENCE]),
439
- fixture.reference_schema
440
- if fixture.reference_schema is not None
441
- else fixture.primary_schema,
439
+ (
440
+ fixture.reference_schema
441
+ if fixture.reference_schema is not None
442
+ else fixture.primary_schema
443
+ ),
442
444
  "training",
443
445
  )
444
446
  corpus_inferences = None
@@ -451,10 +453,14 @@ def get_inferences(
451
453
  return primary_inferences, reference_inferences, corpus_inferences
452
454
 
453
455
 
454
- def _get_fixture_by_name(fixture_name: str) -> Fixture:
456
+ def get_fixture_by_name(fixture_name: str) -> Fixture:
455
457
  """
456
- Returns the fixture whose name matches the input name. Raises a ValueError
457
- if the input fixture name does not match any known fixture names.
458
+ Returns the fixture whose name matches the input name.
459
+
460
+ Raises
461
+ ------
462
+ ValueError
463
+ if the input fixture name does not match any known fixture names.
458
464
  """
459
465
  if fixture_name not in NAME_TO_FIXTURE:
460
466
  valid_fixture_names = ", ".join(NAME_TO_FIXTURE.keys())
@@ -496,7 +502,7 @@ def load_example(use_case: str) -> ExampleInferences:
496
502
  reference).
497
503
 
498
504
  """
499
- fixture = _get_fixture_by_name(use_case)
505
+ fixture = get_fixture_by_name(use_case)
500
506
  primary_inferences, reference_inferences, corpus_inferences = get_inferences(use_case)
501
507
  print(f"📥 Loaded {use_case} example datasets.")
502
508
  print("ℹ️ About this use-case:")
@@ -1,6 +1,6 @@
1
1
  from datetime import datetime
2
2
  from random import getrandbits
3
- from typing import Any, Dict, Optional
3
+ from typing import Any, Dict, List, Optional
4
4
 
5
5
  from fastapi import APIRouter, HTTPException
6
6
  from pydantic import Field
@@ -252,3 +252,57 @@ async def get_experiment(request: Request, experiment_id: str) -> GetExperimentR
252
252
  updated_at=experiment.updated_at,
253
253
  )
254
254
  )
255
+
256
+
257
+ class ListExperimentsResponseBody(ResponseBody[List[Experiment]]):
258
+ pass
259
+
260
+
261
+ @router.get(
262
+ "/datasets/{dataset_id}/experiments",
263
+ operation_id="listExperiments",
264
+ summary="List experiments by dataset",
265
+ response_description="Experiments retrieved successfully",
266
+ )
267
+ async def list_experiments(
268
+ request: Request,
269
+ dataset_id: str,
270
+ ) -> ListExperimentsResponseBody:
271
+ dataset_gid = GlobalID.from_id(dataset_id)
272
+ try:
273
+ dataset_rowid = from_global_id_with_expected_type(dataset_gid, "Dataset")
274
+ except ValueError:
275
+ raise HTTPException(
276
+ detail=f"Dataset with ID {dataset_gid} does not exist",
277
+ status_code=HTTP_404_NOT_FOUND,
278
+ )
279
+ async with request.app.state.db() as session:
280
+ query = (
281
+ select(models.Experiment)
282
+ .where(models.Experiment.dataset_id == dataset_rowid)
283
+ .order_by(models.Experiment.id.desc())
284
+ )
285
+
286
+ result = await session.execute(query)
287
+ experiments = result.scalars().all()
288
+
289
+ if not experiments:
290
+ return ListExperimentsResponseBody(data=[])
291
+
292
+ data = [
293
+ Experiment(
294
+ id=str(GlobalID("Experiment", str(experiment.id))),
295
+ dataset_id=str(GlobalID("Dataset", str(experiment.dataset_id))),
296
+ dataset_version_id=str(
297
+ GlobalID("DatasetVersion", str(experiment.dataset_version_id))
298
+ ),
299
+ repetitions=experiment.repetitions,
300
+ metadata=experiment.metadata_,
301
+ project_name=None,
302
+ created_at=experiment.created_at,
303
+ updated_at=experiment.updated_at,
304
+ )
305
+ for experiment in experiments
306
+ ]
307
+
308
+ return ListExperimentsResponseBody(data=data)
@@ -1,6 +1,6 @@
1
- from typing import Any, Dict, Generic, List, Optional, TypedDict, Union
1
+ from typing import Any, Dict, Generic, List, Optional, TypedDict, TypeVar, Union
2
2
 
3
- from typing_extensions import TypeAlias, TypeVar, assert_never
3
+ from typing_extensions import TypeAlias, assert_never
4
4
 
5
5
  from .pydantic_compat import V1RoutesBaseModel
6
6
 
@@ -2,6 +2,7 @@ import asyncio
2
2
  import contextlib
3
3
  import json
4
4
  import logging
5
+ from datetime import datetime, timedelta, timezone
5
6
  from functools import cached_property
6
7
  from pathlib import Path
7
8
  from types import MethodType
@@ -10,12 +11,14 @@ from typing import (
10
11
  Any,
11
12
  AsyncContextManager,
12
13
  AsyncIterator,
14
+ Awaitable,
13
15
  Callable,
14
16
  Dict,
15
17
  Iterable,
16
18
  List,
17
19
  NamedTuple,
18
20
  Optional,
21
+ Set,
19
22
  Tuple,
20
23
  Union,
21
24
  cast,
@@ -26,11 +29,8 @@ from fastapi import APIRouter, FastAPI
26
29
  from fastapi.middleware.gzip import GZipMiddleware
27
30
  from fastapi.responses import FileResponse
28
31
  from fastapi.utils import is_body_allowed_for_status_code
29
- from sqlalchemy.ext.asyncio import (
30
- AsyncEngine,
31
- AsyncSession,
32
- async_sessionmaker,
33
- )
32
+ from sqlalchemy import select
33
+ from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, async_sessionmaker
34
34
  from starlette.datastructures import State as StarletteState
35
35
  from starlette.exceptions import HTTPException
36
36
  from starlette.middleware import Middleware
@@ -46,12 +46,9 @@ from typing_extensions import TypeAlias
46
46
 
47
47
  import phoenix
48
48
  import phoenix.trace.v1 as pb
49
- from phoenix.config import (
50
- DEFAULT_PROJECT_NAME,
51
- SERVER_DIR,
52
- server_instrumentation_is_enabled,
53
- )
49
+ from phoenix.config import DEFAULT_PROJECT_NAME, SERVER_DIR, server_instrumentation_is_enabled
54
50
  from phoenix.core.model_schema import Model
51
+ from phoenix.db import models
55
52
  from phoenix.db.bulk_inserter import BulkInserter
56
53
  from phoenix.db.engines import create_engine
57
54
  from phoenix.db.helpers import SupportedSQLDialect
@@ -93,9 +90,17 @@ from phoenix.server.telemetry import initialize_opentelemetry_tracer_provider
93
90
  from phoenix.server.types import (
94
91
  CanGetLastUpdatedAt,
95
92
  CanPutItem,
93
+ DaemonTask,
96
94
  DbSessionFactory,
97
95
  LastUpdatedAt,
98
96
  )
97
+ from phoenix.trace.fixtures import (
98
+ get_evals_from_fixture,
99
+ get_trace_fixture_by_name,
100
+ load_example_traces,
101
+ reset_fixture_span_ids_and_timestamps,
102
+ )
103
+ from phoenix.trace.otel import decode_otlp_span, encode_span_to_otlp
99
104
  from phoenix.trace.schemas import Span
100
105
  from phoenix.utilities.client import PHOENIX_SERVER_VERSION_HEADER
101
106
 
@@ -103,12 +108,23 @@ if TYPE_CHECKING:
103
108
  from opentelemetry.trace import TracerProvider
104
109
 
105
110
  logger = logging.getLogger(__name__)
111
+ logger.setLevel(logging.INFO)
106
112
  logger.addHandler(logging.NullHandler())
107
113
 
108
114
  router = APIRouter(include_in_schema=False)
109
115
 
110
116
  templates = Jinja2Templates(directory=SERVER_DIR / "templates")
111
117
 
118
+ """
119
+ Threshold (in minutes) to determine if database is booted up for the first time.
120
+
121
+ Used to assess whether the `default` project was created recently.
122
+ If so, demo data is automatically ingested upon initial boot up to populate the database.
123
+ """
124
+ NEW_DB_AGE_THRESHOLD_MINUTES = 2
125
+
126
+ ProjectName: TypeAlias = str
127
+
112
128
 
113
129
  class AppConfig(NamedTuple):
114
130
  has_inferences: bool
@@ -226,9 +242,99 @@ def _db(engine: AsyncEngine) -> Callable[[], AsyncContextManager[AsyncSession]]:
226
242
  return factory
227
243
 
228
244
 
245
+ class Scaffolder(DaemonTask):
246
+ def __init__(
247
+ self,
248
+ db: DbSessionFactory,
249
+ queue_span: Callable[[Span, ProjectName], Awaitable[None]],
250
+ queue_evaluation: Callable[[pb.Evaluation], Awaitable[None]],
251
+ tracing_fixture_names: Set[str] = set(),
252
+ force_fixture_ingestion: bool = False,
253
+ ) -> None:
254
+ super().__init__()
255
+ self._db = db
256
+ self._queue_span = queue_span
257
+ self._queue_evaluation = queue_evaluation
258
+ self._tracing_fixtures = set(
259
+ get_trace_fixture_by_name(name) for name in tracing_fixture_names
260
+ )
261
+ self._force_fixture_ingestion = force_fixture_ingestion
262
+
263
+ async def __aenter__(self) -> None:
264
+ await self.start()
265
+
266
+ async def __aexit__(self, *args: Any, **kwargs: Any) -> None:
267
+ await self.stop()
268
+
269
+ async def _run(self) -> None:
270
+ """
271
+ Main entry point for Scaffolder.
272
+ Determines whether to load fixtures and handles them.
273
+ """
274
+ if await self._should_load_fixtures():
275
+ logger.info("Loading trace fixtures.")
276
+ await self._handle_tracing_fixtures()
277
+ logger.info("Finished loading fixtures.")
278
+ else:
279
+ logger.info("DB is not new, avoid loading demo fixtures.")
280
+
281
+ async def _should_load_fixtures(self) -> bool:
282
+ if self._force_fixture_ingestion:
283
+ return True
284
+
285
+ async with self._db() as session:
286
+ created_at = await session.scalar(
287
+ select(models.Project.created_at).where(models.Project.name == "default")
288
+ )
289
+ if created_at is None:
290
+ return False
291
+
292
+ is_new_db = datetime.now(timezone.utc) - created_at < timedelta(
293
+ minutes=NEW_DB_AGE_THRESHOLD_MINUTES
294
+ )
295
+ return is_new_db
296
+
297
+ async def _handle_tracing_fixtures(self) -> None:
298
+ """
299
+ Main handler for processing trace fixtures. Process each fixture by
300
+ loading its trace dataframe, gettting and processings its
301
+ spans and evals, and queuing.
302
+ """
303
+ loop = asyncio.get_running_loop()
304
+ for fixture in self._tracing_fixtures:
305
+ try:
306
+ trace_ds = await loop.run_in_executor(None, load_example_traces, fixture.name)
307
+
308
+ fixture_spans, fixture_evals = await loop.run_in_executor(
309
+ None,
310
+ reset_fixture_span_ids_and_timestamps,
311
+ (
312
+ # Apply `encode` here because legacy jsonl files contains UUIDs as strings.
313
+ # `encode` removes the hyphens in the UUIDs.
314
+ decode_otlp_span(encode_span_to_otlp(span))
315
+ for span in trace_ds.to_spans()
316
+ ),
317
+ get_evals_from_fixture(fixture.name),
318
+ )
319
+
320
+ project_name = fixture.project_name or fixture.name
321
+ logger.info(f"Loading '{project_name}' fixtures...")
322
+ for span in fixture_spans:
323
+ await self._queue_span(span, project_name)
324
+ for evaluation in fixture_evals:
325
+ await self._queue_evaluation(evaluation)
326
+
327
+ except FileNotFoundError:
328
+ logger.warning(f"Fixture file not found for '{fixture.name}'")
329
+ except ValueError as e:
330
+ logger.error(f"Error processing fixture '{fixture.name}': {e}")
331
+ except Exception as e:
332
+ logger.error(f"Unexpected error processing fixture '{fixture.name}': {e}")
333
+
334
+
229
335
  def _lifespan(
230
336
  *,
231
- dialect: SupportedSQLDialect,
337
+ db: DbSessionFactory,
232
338
  bulk_inserter: BulkInserter,
233
339
  dml_event_handler: DmlEventHandler,
234
340
  tracer_provider: Optional["TracerProvider"] = None,
@@ -236,11 +342,13 @@ def _lifespan(
236
342
  startup_callbacks: Iterable[Callable[[], None]] = (),
237
343
  shutdown_callbacks: Iterable[Callable[[], None]] = (),
238
344
  read_only: bool = False,
345
+ tracing_fixture_names: Set[str] = set(),
346
+ force_fixture_ingestion: bool = False,
239
347
  ) -> StatefulLifespan[FastAPI]:
240
348
  @contextlib.asynccontextmanager
241
349
  async def lifespan(_: FastAPI) -> AsyncIterator[Dict[str, Any]]:
242
350
  global DB_MUTEX
243
- DB_MUTEX = asyncio.Lock() if dialect is SupportedSQLDialect.SQLITE else None
351
+ DB_MUTEX = asyncio.Lock() if db.dialect is SupportedSQLDialect.SQLITE else None
244
352
  async with bulk_inserter as (
245
353
  enqueue,
246
354
  queue_span,
@@ -251,7 +359,13 @@ def _lifespan(
251
359
  disabled=read_only,
252
360
  tracer_provider=tracer_provider,
253
361
  enable_prometheus=enable_prometheus,
254
- ), dml_event_handler:
362
+ ), dml_event_handler, Scaffolder(
363
+ db=db,
364
+ queue_span=queue_span,
365
+ queue_evaluation=queue_evaluation,
366
+ tracing_fixture_names=tracing_fixture_names,
367
+ force_fixture_ingestion=force_fixture_ingestion,
368
+ ):
255
369
  for callback in startup_callbacks:
256
370
  callback()
257
371
  yield {
@@ -317,17 +431,19 @@ def create_graphql_router(
317
431
  dataset_example_spans=DatasetExampleSpansDataLoader(db),
318
432
  document_evaluation_summaries=DocumentEvaluationSummaryDataLoader(
319
433
  db,
320
- cache_map=cache_for_dataloaders.document_evaluation_summary
321
- if cache_for_dataloaders
322
- else None,
434
+ cache_map=(
435
+ cache_for_dataloaders.document_evaluation_summary
436
+ if cache_for_dataloaders
437
+ else None
438
+ ),
323
439
  ),
324
440
  document_evaluations=DocumentEvaluationsDataLoader(db),
325
441
  document_retrieval_metrics=DocumentRetrievalMetricsDataLoader(db),
326
442
  annotation_summaries=AnnotationSummaryDataLoader(
327
443
  db,
328
- cache_map=cache_for_dataloaders.annotation_summary
329
- if cache_for_dataloaders
330
- else None,
444
+ cache_map=(
445
+ cache_for_dataloaders.annotation_summary if cache_for_dataloaders else None
446
+ ),
331
447
  ),
332
448
  experiment_annotation_summaries=ExperimentAnnotationSummaryDataLoader(db),
333
449
  experiment_error_rates=ExperimentErrorRatesDataLoader(db),
@@ -335,15 +451,17 @@ def create_graphql_router(
335
451
  experiment_sequence_number=ExperimentSequenceNumberDataLoader(db),
336
452
  latency_ms_quantile=LatencyMsQuantileDataLoader(
337
453
  db,
338
- cache_map=cache_for_dataloaders.latency_ms_quantile
339
- if cache_for_dataloaders
340
- else None,
454
+ cache_map=(
455
+ cache_for_dataloaders.latency_ms_quantile if cache_for_dataloaders else None
456
+ ),
341
457
  ),
342
458
  min_start_or_max_end_times=MinStartOrMaxEndTimeDataLoader(
343
459
  db,
344
- cache_map=cache_for_dataloaders.min_start_or_max_end_time
345
- if cache_for_dataloaders
346
- else None,
460
+ cache_map=(
461
+ cache_for_dataloaders.min_start_or_max_end_time
462
+ if cache_for_dataloaders
463
+ else None
464
+ ),
347
465
  ),
348
466
  record_counts=RecordCountDataLoader(
349
467
  db,
@@ -438,6 +556,8 @@ def create_app(
438
556
  startup_callbacks: Iterable[Callable[[], None]] = (),
439
557
  shutdown_callbacks: Iterable[Callable[[], None]] = (),
440
558
  secret: Optional[str] = None,
559
+ tracing_fixture_names: Set[str] = set(),
560
+ force_fixture_ingestion: bool = False,
441
561
  ) -> FastAPI:
442
562
  startup_callbacks_list: List[Callable[[], None]] = list(startup_callbacks)
443
563
  shutdown_callbacks_list: List[Callable[[], None]] = list(shutdown_callbacks)
@@ -510,11 +630,12 @@ def create_app(
510
630
  prometheus_middlewares = [Middleware(PrometheusMiddleware)]
511
631
  else:
512
632
  prometheus_middlewares = []
633
+
513
634
  app = FastAPI(
514
635
  title="Arize-Phoenix REST API",
515
636
  version=REST_API_VERSION,
516
637
  lifespan=_lifespan(
517
- dialect=db.dialect,
638
+ db=db,
518
639
  read_only=read_only,
519
640
  bulk_inserter=bulk_inserter,
520
641
  dml_event_handler=dml_event_handler,
@@ -522,6 +643,8 @@ def create_app(
522
643
  enable_prometheus=enable_prometheus,
523
644
  shutdown_callbacks=shutdown_callbacks_list,
524
645
  startup_callbacks=startup_callbacks_list,
646
+ tracing_fixture_names=tracing_fixture_names,
647
+ force_fixture_ingestion=force_fixture_ingestion,
525
648
  ),
526
649
  middleware=[
527
650
  Middleware(HeadersMiddleware),
@@ -48,6 +48,7 @@ from phoenix.trace.fixtures import (
48
48
  TRACES_FIXTURES,
49
49
  get_dataset_fixtures,
50
50
  get_evals_from_fixture,
51
+ get_trace_fixtures_by_project_name,
51
52
  load_example_traces,
52
53
  reset_fixture_span_ids_and_timestamps,
53
54
  send_dataset_fixtures,
@@ -135,7 +136,7 @@ if __name__ == "__main__":
135
136
  parser.add_argument("--export_path")
136
137
  parser.add_argument("--host", type=str, required=False)
137
138
  parser.add_argument("--port", type=int, required=False)
138
- parser.add_argument("--read-only", type=bool, default=False)
139
+ parser.add_argument("--read-only", action="store_true", required=False) # Default is False
139
140
  parser.add_argument("--no-internet", action="store_true")
140
141
  parser.add_argument("--umap_params", type=str, required=False, default=DEFAULT_UMAP_PARAMS_STR)
141
142
  parser.add_argument("--debug", action="store_true")
@@ -144,6 +145,43 @@ if __name__ == "__main__":
144
145
  parser.add_argument("--no-ui", action="store_true")
145
146
  subparsers = parser.add_subparsers(dest="command", required=True)
146
147
  serve_parser = subparsers.add_parser("serve")
148
+ serve_parser.add_argument(
149
+ "--with-fixture",
150
+ type=str,
151
+ required=False,
152
+ default="",
153
+ help=("Name of an inference fixture. Example: 'fixture1'"),
154
+ )
155
+ serve_parser.add_argument(
156
+ "--with-trace-fixtures",
157
+ type=str,
158
+ required=False,
159
+ default="",
160
+ help=(
161
+ "Comma separated list of tracing fixture names (spaces are ignored). "
162
+ "Example: 'fixture1, fixture2'"
163
+ ),
164
+ )
165
+ serve_parser.add_argument(
166
+ "--with-projects",
167
+ type=str,
168
+ required=False,
169
+ default="",
170
+ help=(
171
+ "Comma separated list of project names (spaces are ignored). "
172
+ "Example: 'project1, project2'"
173
+ ),
174
+ )
175
+ serve_parser.add_argument(
176
+ "--force-fixture-ingestion",
177
+ action="store_true", # default is False
178
+ required=False,
179
+ help=(
180
+ "Whether or not to check the database age before adding the fixtures. "
181
+ "Default is False, i.e., fixtures will only be added if the "
182
+ "database is new."
183
+ ),
184
+ )
147
185
  datasets_parser = subparsers.add_parser("datasets")
148
186
  datasets_parser.add_argument("--primary", type=str, required=True)
149
187
  datasets_parser.add_argument("--reference", type=str, required=False)
@@ -151,12 +189,14 @@ if __name__ == "__main__":
151
189
  datasets_parser.add_argument("--trace", type=str, required=False)
152
190
  fixture_parser = subparsers.add_parser("fixture")
153
191
  fixture_parser.add_argument("fixture", type=str, choices=[fixture.name for fixture in FIXTURES])
154
- fixture_parser.add_argument("--primary-only", type=bool)
192
+ fixture_parser.add_argument("--primary-only", action="store_true") # Default is False
155
193
  trace_fixture_parser = subparsers.add_parser("trace-fixture")
156
194
  trace_fixture_parser.add_argument(
157
195
  "fixture", type=str, choices=[fixture.name for fixture in TRACES_FIXTURES]
158
196
  )
159
- trace_fixture_parser.add_argument("--simulate-streaming", type=bool)
197
+ trace_fixture_parser.add_argument(
198
+ "--simulate-streaming", action="store_true"
199
+ ) # Default is False
160
200
  demo_parser = subparsers.add_parser("demo")
161
201
  demo_parser.add_argument("fixture", type=str, choices=[fixture.name for fixture in FIXTURES])
162
202
  demo_parser.add_argument(
@@ -164,10 +204,12 @@ if __name__ == "__main__":
164
204
  )
165
205
  demo_parser.add_argument("--simulate-streaming", action="store_true")
166
206
  args = parser.parse_args()
207
+
167
208
  db_connection_str = (
168
209
  args.database_url if args.database_url else get_env_database_connection_str()
169
210
  )
170
211
  export_path = Path(args.export_path) if args.export_path else EXPORT_DIR
212
+ force_fixture_ingestion = False
171
213
  if args.command == "datasets":
172
214
  primary_inferences_name = args.primary
173
215
  reference_inferences_name = args.reference
@@ -202,7 +244,26 @@ if __name__ == "__main__":
202
244
  )
203
245
  trace_dataset_name = args.trace_fixture
204
246
  simulate_streaming = args.simulate_streaming
205
-
247
+ elif args.command == "serve":
248
+ # We use sets to avoid duplicates
249
+ tracing_fixture_names = set()
250
+ if args.with_fixture:
251
+ primary_inferences, reference_inferences, corpus_inferences = get_inferences(
252
+ str(args.with_fixture),
253
+ args.no_internet,
254
+ )
255
+ if args.with_trace_fixtures:
256
+ tracing_fixture_names.update(
257
+ [name.strip() for name in args.with_trace_fixtures.split(",")]
258
+ )
259
+ if args.with_projects:
260
+ project_names = [name.strip() for name in args.with_projects.split(",")]
261
+ tracing_fixture_names.update(
262
+ fixture.name
263
+ for name in project_names
264
+ for fixture in get_trace_fixtures_by_project_name(name)
265
+ )
266
+ force_fixture_ingestion = args.force_fixture_ingestion
206
267
  host: Optional[str] = args.host or get_env_host()
207
268
  display_host = host or "localhost"
208
269
  # If the host is "::", the convention is to bind to all interfaces. However, uvicorn
@@ -260,6 +321,9 @@ if __name__ == "__main__":
260
321
  engine = create_engine_and_run_migrations(db_connection_str)
261
322
  instrumentation_cleanups = instrument_engine_if_enabled(engine)
262
323
  factory = DbSessionFactory(db=_db(engine), dialect=engine.dialect.name)
324
+ corpus_model = (
325
+ None if corpus_inferences is None else create_model_from_inferences(corpus_inferences)
326
+ )
263
327
  # Print information about the server
264
328
  msg = _WELCOME_MESSAGE.format(
265
329
  version=version("arize-phoenix"),
@@ -278,9 +342,7 @@ if __name__ == "__main__":
278
342
  model=model,
279
343
  authentication_enabled=authentication_enabled,
280
344
  umap_params=umap_params,
281
- corpus=None
282
- if corpus_inferences is None
283
- else create_model_from_inferences(corpus_inferences),
345
+ corpus=corpus_model,
284
346
  debug=args.debug,
285
347
  dev=args.dev,
286
348
  serve_ui=not args.no_ui,
@@ -291,6 +353,8 @@ if __name__ == "__main__":
291
353
  startup_callbacks=[lambda: print(msg)],
292
354
  shutdown_callbacks=instrumentation_cleanups,
293
355
  secret=secret,
356
+ tracing_fixture_names=tracing_fixture_names,
357
+ force_fixture_ingestion=force_fixture_ingestion,
294
358
  )
295
359
  server = Server(config=Config(app, host=host, port=port, root_path=host_root_path)) # type: ignore
296
360
  Thread(target=_write_pid_file_when_ready, args=(server,), daemon=True).start()
@@ -1,21 +1,21 @@
1
1
  {
2
- "_components-1Ahruijo.js": {
3
- "file": "assets/components-1Ahruijo.js",
2
+ "_components-1MfQimGx.js": {
3
+ "file": "assets/components-1MfQimGx.js",
4
4
  "name": "components",
5
5
  "imports": [
6
6
  "_vendor-aSQri0vz.js",
7
7
  "_vendor-arizeai-CsdcB1NH.js",
8
- "_pages-CFS6mPnW.js",
8
+ "_pages-CqZDVx20.js",
9
9
  "_vendor-three-DwGkEfCM.js",
10
10
  "_vendor-codemirror-CYHkhs7D.js"
11
11
  ]
12
12
  },
13
- "_pages-CFS6mPnW.js": {
14
- "file": "assets/pages-CFS6mPnW.js",
13
+ "_pages-CqZDVx20.js": {
14
+ "file": "assets/pages-CqZDVx20.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
17
  "_vendor-aSQri0vz.js",
18
- "_components-1Ahruijo.js",
18
+ "_components-1MfQimGx.js",
19
19
  "_vendor-arizeai-CsdcB1NH.js",
20
20
  "_vendor-recharts-B0sannek.js",
21
21
  "_vendor-codemirror-CYHkhs7D.js"
@@ -61,15 +61,15 @@
61
61
  "name": "vendor-three"
62
62
  },
63
63
  "index.tsx": {
64
- "file": "assets/index-BEE_RWJx.js",
64
+ "file": "assets/index-B263sE2x.js",
65
65
  "name": "index",
66
66
  "src": "index.tsx",
67
67
  "isEntry": true,
68
68
  "imports": [
69
69
  "_vendor-aSQri0vz.js",
70
70
  "_vendor-arizeai-CsdcB1NH.js",
71
- "_pages-CFS6mPnW.js",
72
- "_components-1Ahruijo.js",
71
+ "_pages-CqZDVx20.js",
72
+ "_components-1MfQimGx.js",
73
73
  "_vendor-three-DwGkEfCM.js",
74
74
  "_vendor-recharts-B0sannek.js",
75
75
  "_vendor-codemirror-CYHkhs7D.js"