arize-phoenix 5.1.0__tar.gz → 5.1.2__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 (336) hide show
  1. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/PKG-INFO +4 -3
  2. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/pyproject.toml +24 -6
  3. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/pointcloud/clustering.py +2 -1
  4. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/pointcloud/projectors.py +5 -6
  5. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/EmbeddingDimension.py +10 -10
  6. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/fixtures.py +4 -4
  7. arize_phoenix-5.1.2/src/phoenix/version.py +1 -0
  8. arize_phoenix-5.1.0/examples/manually-instrumented-chatbot/chat-service/chat/app.py +0 -227
  9. arize_phoenix-5.1.0/examples/manually-instrumented-chatbot/chat-service/chat/types.py +0 -25
  10. arize_phoenix-5.1.0/examples/manually-instrumented-chatbot/frontend/Dockerfile +0 -15
  11. arize_phoenix-5.1.0/examples/manually-instrumented-chatbot/frontend/Makefile +0 -20
  12. arize_phoenix-5.1.0/examples/manually-instrumented-chatbot/frontend/pyproject.toml +0 -24
  13. arize_phoenix-5.1.0/examples/manually-instrumented-chatbot/frontend/requirements.txt +0 -123
  14. arize_phoenix-5.1.0/examples/manually-instrumented-chatbot/frontend/schema.json +0 -149
  15. arize_phoenix-5.1.0/integration_tests/_helpers.py +0 -1023
  16. arize_phoenix-5.1.0/integration_tests/auth/conftest.py +0 -79
  17. arize_phoenix-5.1.0/integration_tests/auth/test_auth.py +0 -959
  18. arize_phoenix-5.1.0/integration_tests/conftest.py +0 -210
  19. arize_phoenix-5.1.0/integration_tests/mypy.ini +0 -3
  20. arize_phoenix-5.1.0/integration_tests/pytest.ini +0 -11
  21. arize_phoenix-5.1.0/integration_tests/requirements.txt +0 -12
  22. arize_phoenix-5.1.0/integration_tests/ruff.toml +0 -15
  23. arize_phoenix-5.1.0/integration_tests/server/test_launch_app.py +0 -36
  24. arize_phoenix-5.1.0/src/phoenix/server/email/templates/__init__.py +0 -0
  25. arize_phoenix-5.1.0/src/phoenix/server/openapi/__init__.py +0 -0
  26. arize_phoenix-5.1.0/src/phoenix/server/templates/__init__.py +0 -0
  27. arize_phoenix-5.1.0/src/phoenix/session/__init__.py +0 -0
  28. arize_phoenix-5.1.0/src/phoenix/utilities/__init__.py +0 -0
  29. arize_phoenix-5.1.0/src/phoenix/version.py +0 -1
  30. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/.gitignore +0 -0
  31. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/IP_NOTICE +0 -0
  32. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/LICENSE +0 -0
  33. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/README.md +0 -0
  34. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/__init__.py +0 -0
  35. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/auth.py +0 -0
  36. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/config.py +0 -0
  37. {arize_phoenix-5.1.0/examples/manually-instrumented-chatbot/chat-service/chat → arize_phoenix-5.1.2/src/phoenix/core}/__init__.py +0 -0
  38. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/core/embedding_dimension.py +0 -0
  39. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/core/model.py +0 -0
  40. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/core/model_schema.py +0 -0
  41. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/core/model_schema_adapter.py +0 -0
  42. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/datetime_utils.py +0 -0
  43. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/README.md +0 -0
  44. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/__init__.py +0 -0
  45. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/alembic.ini +0 -0
  46. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/bulk_inserter.py +0 -0
  47. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/engines.py +0 -0
  48. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/enums.py +0 -0
  49. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/facilitator.py +0 -0
  50. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/helpers.py +0 -0
  51. {arize_phoenix-5.1.0/examples/manually-instrumented-chatbot/frontend → arize_phoenix-5.1.2/src/phoenix/db/insertion}/__init__.py +0 -0
  52. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/insertion/constants.py +0 -0
  53. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/insertion/dataset.py +0 -0
  54. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/insertion/document_annotation.py +0 -0
  55. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/insertion/evaluation.py +0 -0
  56. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/insertion/helpers.py +0 -0
  57. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/insertion/span.py +0 -0
  58. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/insertion/span_annotation.py +0 -0
  59. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  60. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/insertion/types.py +0 -0
  61. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/migrate.py +0 -0
  62. {arize_phoenix-5.1.0/integration_tests → arize_phoenix-5.1.2/src/phoenix/db/migrations}/__init__.py +0 -0
  63. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/migrations/env.py +0 -0
  64. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/migrations/script.py.mako +0 -0
  65. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  66. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  67. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  68. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  69. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/db/models.py +0 -0
  70. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/exceptions.py +0 -0
  71. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/__init__.py +0 -0
  72. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  73. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/evaluators/base.py +0 -0
  74. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  75. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  76. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/evaluators/utils.py +0 -0
  77. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/functions.py +0 -0
  78. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/tracing.py +0 -0
  79. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/types.py +0 -0
  80. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/experiments/utils.py +0 -0
  81. {arize_phoenix-5.1.0/integration_tests/auth → arize_phoenix-5.1.2/src/phoenix/inferences}/__init__.py +0 -0
  82. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/inferences/errors.py +0 -0
  83. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/inferences/fixtures.py +0 -0
  84. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/inferences/inferences.py +0 -0
  85. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/inferences/schema.py +0 -0
  86. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/inferences/validation.py +0 -0
  87. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/logging/__init__.py +0 -0
  88. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/logging/_config.py +0 -0
  89. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/logging/_filter.py +0 -0
  90. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/logging/_formatter.py +0 -0
  91. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/metrics/README.md +0 -0
  92. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/metrics/__init__.py +0 -0
  93. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/metrics/binning.py +0 -0
  94. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/metrics/metrics.py +0 -0
  95. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/metrics/mixins.py +0 -0
  96. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  97. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/metrics/timeseries.py +0 -0
  98. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/metrics/wrappers.py +0 -0
  99. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/pointcloud/__init__.py +0 -0
  100. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/pointcloud/pointcloud.py +0 -0
  101. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  102. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/py.typed +0 -0
  103. {arize_phoenix-5.1.0/integration_tests → arize_phoenix-5.1.2/src/phoenix}/server/__init__.py +0 -0
  104. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/README.md +0 -0
  105. {arize_phoenix-5.1.0/src/phoenix/core → arize_phoenix-5.1.2/src/phoenix/server/api}/__init__.py +0 -0
  106. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/auth.py +0 -0
  107. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/context.py +0 -0
  108. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  109. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  110. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  111. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  112. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  113. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  114. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  115. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  116. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  117. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  118. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  119. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  120. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  121. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  122. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  123. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  124. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  125. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  126. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  127. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  128. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  129. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  130. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  131. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  132. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
  133. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  134. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/dataloaders/users.py +0 -0
  135. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/exceptions.py +0 -0
  136. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/helpers/__init__.py +0 -0
  137. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  138. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  139. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  140. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  141. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  142. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  143. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  144. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  145. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  146. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  147. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  148. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  149. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  150. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  151. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  152. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  153. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  154. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  155. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  156. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  157. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  158. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  159. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  160. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  161. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  162. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  163. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  164. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  165. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  166. {arize_phoenix-5.1.0/src/phoenix/db/insertion → arize_phoenix-5.1.2/src/phoenix/server/api/input_types}/__init__.py +0 -0
  167. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/interceptor.py +0 -0
  168. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/mutations/__init__.py +0 -0
  169. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  170. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  171. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  172. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  173. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  174. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  175. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  176. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  177. {arize_phoenix-5.1.0/src/phoenix/db/migrations → arize_phoenix-5.1.2/src/phoenix/server/api/openapi}/__init__.py +0 -0
  178. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/openapi/main.py +0 -0
  179. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/openapi/schema.py +0 -0
  180. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/queries.py +0 -0
  181. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/__init__.py +0 -0
  182. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/auth.py +0 -0
  183. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/embeddings.py +0 -0
  184. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/oauth2.py +0 -0
  185. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/utils.py +0 -0
  186. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  187. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  188. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  189. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  190. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  191. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  192. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  193. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  194. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  195. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  196. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/schema.py +0 -0
  197. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Annotation.py +0 -0
  198. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  199. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  200. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/ApiKey.py +0 -0
  201. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  202. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Cluster.py +0 -0
  203. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  204. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  205. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Dataset.py +0 -0
  206. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  207. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  208. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  209. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  210. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Dimension.py +0 -0
  211. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  212. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  213. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DimensionType.py +0 -0
  214. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  215. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  216. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  217. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  218. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Evaluation.py +0 -0
  219. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  220. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Event.py +0 -0
  221. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  222. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  223. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Experiment.py +0 -0
  224. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  225. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  226. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  227. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  228. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  229. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Functionality.py +0 -0
  230. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Inferences.py +0 -0
  231. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  232. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  233. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/MimeType.py +0 -0
  234. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Model.py +0 -0
  235. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/NumericRange.py +0 -0
  236. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  237. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Project.py +0 -0
  238. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  239. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Retrieval.py +0 -0
  240. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  241. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Segments.py +0 -0
  242. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/SortDir.py +0 -0
  243. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Span.py +0 -0
  244. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  245. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  246. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  247. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/Trace.py +0 -0
  248. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  249. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  250. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/User.py +0 -0
  251. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  252. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/UserRole.py +0 -0
  253. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  254. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  255. {arize_phoenix-5.1.0/src/phoenix/inferences → arize_phoenix-5.1.2/src/phoenix/server/api/types}/__init__.py +0 -0
  256. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/node.py +0 -0
  257. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/types/pagination.py +0 -0
  258. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/api/utils.py +0 -0
  259. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/app.py +0 -0
  260. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/bearer_auth.py +0 -0
  261. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/dml_event.py +0 -0
  262. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/dml_event_handler.py +0 -0
  263. {arize_phoenix-5.1.0/src/phoenix/server → arize_phoenix-5.1.2/src/phoenix/server/email}/__init__.py +0 -0
  264. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/email/sender.py +0 -0
  265. {arize_phoenix-5.1.0/src/phoenix/server/api → arize_phoenix-5.1.2/src/phoenix/server/email/templates}/__init__.py +0 -0
  266. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/email/templates/password_reset.html +0 -0
  267. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/email/types.py +0 -0
  268. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/grpc_server.py +0 -0
  269. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/jwt_store.py +0 -0
  270. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/main.py +0 -0
  271. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/oauth2.py +0 -0
  272. {arize_phoenix-5.1.0/src/phoenix/server/api/input_types → arize_phoenix-5.1.2/src/phoenix/server/openapi}/__init__.py +0 -0
  273. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/prometheus.py +0 -0
  274. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/rate_limiters.py +0 -0
  275. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/.vite/manifest.json +0 -0
  276. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  277. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  278. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  279. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  280. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  281. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  282. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  283. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  284. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/assets/components-REunxTt6.js +0 -0
  285. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/assets/index-DAPJxlCw.js +0 -0
  286. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/assets/pages-1VrMk2pW.js +0 -0
  287. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/assets/vendor-B5IC0ivG.js +0 -0
  288. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  289. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/assets/vendor-arizeai-aFbT4kl1.js +0 -0
  290. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/assets/vendor-codemirror-BEGorXSV.js +0 -0
  291. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/assets/vendor-recharts-6nUU7gU_.js +0 -0
  292. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  293. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/favicon.ico +0 -0
  294. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/static/modernizr.js +0 -0
  295. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/telemetry.py +0 -0
  296. {arize_phoenix-5.1.0/src/phoenix/server/api/openapi → arize_phoenix-5.1.2/src/phoenix/server/templates}/__init__.py +0 -0
  297. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/templates/index.html +0 -0
  298. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/thread_server.py +0 -0
  299. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/server/types.py +0 -0
  300. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/services.py +0 -0
  301. {arize_phoenix-5.1.0/src/phoenix/server/api/types → arize_phoenix-5.1.2/src/phoenix/session}/__init__.py +0 -0
  302. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/session/client.py +0 -0
  303. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/session/data_extractor.py +0 -0
  304. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/session/evaluation.py +0 -0
  305. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/session/session.py +0 -0
  306. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/settings.py +0 -0
  307. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/__init__.py +0 -0
  308. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/attributes.py +0 -0
  309. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/dsl/README.md +0 -0
  310. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/dsl/__init__.py +0 -0
  311. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/dsl/filter.py +0 -0
  312. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/dsl/helpers.py +0 -0
  313. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/dsl/query.py +0 -0
  314. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/errors.py +0 -0
  315. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/evaluation_conventions.py +0 -0
  316. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/exporter.py +0 -0
  317. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/otel.py +0 -0
  318. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/projects.py +0 -0
  319. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/schemas.py +0 -0
  320. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/span_evaluations.py +0 -0
  321. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/span_json_decoder.py +0 -0
  322. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/span_json_encoder.py +0 -0
  323. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/trace_dataset.py +0 -0
  324. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/utils.py +0 -0
  325. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/v1/__init__.py +0 -0
  326. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  327. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  328. {arize_phoenix-5.1.0/src/phoenix/server/email → arize_phoenix-5.1.2/src/phoenix/utilities}/__init__.py +0 -0
  329. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/utilities/client.py +0 -0
  330. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/utilities/deprecation.py +0 -0
  331. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/utilities/error_handling.py +0 -0
  332. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/utilities/json.py +0 -0
  333. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/utilities/logging.py +0 -0
  334. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/utilities/project.py +0 -0
  335. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/src/phoenix/utilities/re.py +0 -0
  336. {arize_phoenix-5.1.0 → arize_phoenix-5.1.2}/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: 5.1.0
3
+ Version: 5.1.2
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
@@ -27,10 +27,11 @@ Requires-Dist: fastapi
27
27
  Requires-Dist: fastapi-mail
28
28
  Requires-Dist: grpc-interceptor
29
29
  Requires-Dist: grpcio
30
- Requires-Dist: hdbscan>=0.8.33
30
+ Requires-Dist: hdbscan>=0.8.38
31
31
  Requires-Dist: httpx
32
32
  Requires-Dist: jinja2
33
- Requires-Dist: numpy<2
33
+ Requires-Dist: numba>=0.60.0
34
+ Requires-Dist: numpy!=2.0.0
34
35
  Requires-Dist: openinference-instrumentation>=0.1.12
35
36
  Requires-Dist: openinference-semantic-conventions>=0.1.9
36
37
  Requires-Dist: opentelemetry-exporter-otlp
@@ -22,11 +22,12 @@ classifiers = [
22
22
  ]
23
23
  dependencies = [
24
24
  "scikit-learn",
25
- "numpy<2", # https://github.com/scikit-learn-contrib/hdbscan/issues/642
25
+ "numpy!=2.0.0", # https://github.com/lmcinnes/umap/issues/1138
26
26
  "pandas>=1.0",
27
27
  "jinja2",
28
28
  "umap-learn",
29
- "hdbscan>=0.8.33",
29
+ "hdbscan>=0.8.38",
30
+ "numba>=0.60.0", # https://github.com/astral-sh/uv/issues/6281
30
31
  "starlette",
31
32
  "uvicorn",
32
33
  "psutil",
@@ -145,15 +146,32 @@ build-backend = "hatchling.build"
145
146
 
146
147
  [tool.hatch.build.targets.wheel]
147
148
  packages = ["src/phoenix"]
148
- exclude = ["src/phoenix/evals/"]
149
- artifacts = ["src/phoenix/server/static", "src/phoenix/db/migrations"]
149
+ exclude = [
150
+ "src/phoenix/evals/",
151
+ "src/phoenix/otel/",
152
+ ]
153
+ artifacts = [
154
+ "src/phoenix/server/static",
155
+ "src/phoenix/db/migrations",
156
+ ]
150
157
 
151
158
  [tool.hatch.build]
152
159
  only-packages = true
153
160
 
154
161
  [tool.hatch.build.targets.sdist]
155
- exclude = ["src/phoenix/evals/", "packages/"]
156
- artifacts = ["src/phoenix/server/static", "src/phoenix/db/migrations"]
162
+ exclude = [
163
+ "packages/",
164
+ "src/phoenix/evals/",
165
+ "src/phoenix/otel/",
166
+ "tests/",
167
+ "integration_tests/",
168
+ "scripts/",
169
+ "examples/",
170
+ ]
171
+ artifacts = [
172
+ "src/phoenix/server/static",
173
+ "src/phoenix/db/migrations",
174
+ ]
157
175
 
158
176
  [tool.hatch.envs.default]
159
177
  dependencies = [
@@ -3,7 +3,6 @@ from typing import List, Set
3
3
 
4
4
  import numpy as np
5
5
  import numpy.typing as npt
6
- from hdbscan import HDBSCAN
7
6
  from typing_extensions import TypeAlias
8
7
 
9
8
  RowIndex: TypeAlias = int
@@ -18,6 +17,8 @@ class Hdbscan:
18
17
  cluster_selection_epsilon: float = 0.0
19
18
 
20
19
  def find_clusters(self, mat: Matrix) -> List[RawCluster]:
20
+ from hdbscan import HDBSCAN
21
+
21
22
  cluster_ids: npt.NDArray[np.int_] = HDBSCAN(**asdict(self)).fit_predict(mat)
22
23
  ans: List[RawCluster] = [set() for _ in range(np.max(cluster_ids) + 1)]
23
24
  for row_idx, cluster_id in enumerate(cluster_ids):
@@ -6,12 +6,6 @@ import numpy as np
6
6
  import numpy.typing as npt
7
7
  from typing_extensions import TypeAlias
8
8
 
9
- with warnings.catch_warnings():
10
- from numba.core.errors import NumbaWarning
11
-
12
- warnings.simplefilter("ignore", category=NumbaWarning)
13
- from umap import UMAP
14
-
15
9
  Matrix: TypeAlias = npt.NDArray[np.float64]
16
10
 
17
11
 
@@ -25,6 +19,11 @@ class Umap:
25
19
  min_dist: float = 0.1
26
20
 
27
21
  def project(self, mat: Matrix, n_components: int) -> Matrix:
22
+ with warnings.catch_warnings():
23
+ from numba.core.errors import NumbaWarning
24
+
25
+ warnings.simplefilter("ignore", category=NumbaWarning)
26
+ from umap import UMAP
28
27
  config = asdict(self)
29
28
  config["n_components"] = n_components
30
29
  if len(mat) <= n_components:
@@ -422,17 +422,17 @@ class EmbeddingDimension(Node):
422
422
  if isinstance(inferences_role, InferencesRole):
423
423
  dataset = model[inferences_role.value]
424
424
  embedding_metadata = EmbeddingMetadata(
425
- prediction_id=dataset[PREDICTION_ID][row_id],
426
- link_to_data=dataset[self.dimension.link_to_data][row_id],
427
- raw_data=dataset[self.dimension.raw_data][row_id],
425
+ prediction_id=dataset[PREDICTION_ID].iloc[row_id],
426
+ link_to_data=dataset[self.dimension.link_to_data].iloc[row_id],
427
+ raw_data=dataset[self.dimension.raw_data].iloc[row_id],
428
428
  )
429
429
  elif (corpus := info.context.corpus) is not None:
430
430
  dataset = corpus[PRIMARY]
431
431
  dimension = cast(ms.EmbeddingDimension, corpus[PROMPT])
432
432
  embedding_metadata = EmbeddingMetadata(
433
- prediction_id=dataset[PREDICTION_ID][row_id],
434
- link_to_data=dataset[dimension.link_to_data][row_id],
435
- raw_data=dataset[dimension.raw_data][row_id],
433
+ prediction_id=dataset[PREDICTION_ID].iloc[row_id],
434
+ link_to_data=dataset[dimension.link_to_data].iloc[row_id],
435
+ raw_data=dataset[dimension.raw_data].iloc[row_id],
436
436
  )
437
437
  else:
438
438
  continue
@@ -445,10 +445,10 @@ class EmbeddingDimension(Node):
445
445
  event_id=event_id,
446
446
  coordinates=to_gql_coordinates(vector),
447
447
  event_metadata=EventMetadata(
448
- prediction_label=dataset[PREDICTION_LABEL][row_id],
449
- prediction_score=dataset[PREDICTION_SCORE][row_id],
450
- actual_label=dataset[ACTUAL_LABEL][row_id],
451
- actual_score=dataset[ACTUAL_SCORE][row_id],
448
+ prediction_label=dataset[PREDICTION_LABEL].iloc[row_id],
449
+ prediction_score=dataset[PREDICTION_SCORE].iloc[row_id],
450
+ actual_label=dataset[ACTUAL_LABEL].iloc[row_id],
451
+ actual_score=dataset[ACTUAL_SCORE].iloc[row_id],
452
452
  ),
453
453
  embedding_metadata=embedding_metadata,
454
454
  )
@@ -147,21 +147,21 @@ demo_llama_index_rag_fixture = TracesFixture(
147
147
 
148
148
  demo_code_based_agent_fixture = TracesFixture(
149
149
  name="demo_code_based_agent",
150
- project_name="code_based_agent_demo",
150
+ project_name="demo_code_based_agent",
151
151
  description="Shows traces captured from a code-based agent.",
152
152
  file_name="agent-demo-traces.parquet",
153
153
  )
154
154
 
155
155
  demo_langgraph_agent_fixture = TracesFixture(
156
156
  name="demo_langgraph_agent",
157
- project_name="langgraph_agent_demo",
157
+ project_name="demo_langgraph_agent",
158
158
  description="Shows traces captured from a Langgraph agent.",
159
- file_name="langgraph-demo-traces.parquet",
159
+ file_name="langgraph-demo-traces-format-updated.parquet",
160
160
  )
161
161
 
162
162
  demo_llamaindex_workflows_agent_fixture = TracesFixture(
163
163
  name="demo_llamaindex_workflows_agent",
164
- project_name="llamaindex_workflows_agent_demo",
164
+ project_name="demo_llamaindex_workflows_agent",
165
165
  description="Shows traces captured from a LlamaIndex Workflows agent.",
166
166
  file_name="llamaindex-workflow-demo-traces.parquet",
167
167
  )
@@ -0,0 +1 @@
1
+ __version__ = "5.1.2"
@@ -1,227 +0,0 @@
1
- import json
2
- import os
3
- import warnings
4
- from typing import Any, Dict, Iterator, List, Tuple
5
- from uuid import uuid4
6
-
7
- from fastapi import FastAPI, HTTPException
8
- from httpx import AsyncClient, ConnectError
9
- from openinference.semconv.trace import (
10
- MessageAttributes,
11
- OpenInferenceMimeTypeValues,
12
- OpenInferenceSpanKindValues,
13
- SpanAttributes,
14
- )
15
- from opentelemetry import trace as trace_api
16
- from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
17
- from opentelemetry.sdk import trace as trace_sdk
18
- from opentelemetry.sdk.trace.export import (
19
- SimpleSpanProcessor,
20
- )
21
-
22
- from chat.types import FeedbackRequest, Message, MessagesPayload, MessagesResponse
23
-
24
- COLLECTOR_HOST = os.getenv("COLLECTOR_HOST", "localhost")
25
- endpoint = f"http://{COLLECTOR_HOST}:6006/v1"
26
- tracer_provider = trace_sdk.TracerProvider()
27
- tracer_provider.add_span_processor(
28
- SimpleSpanProcessor(OTLPSpanExporter(f"{endpoint}/traces"))
29
- )
30
- trace_api.set_tracer_provider(tracer_provider)
31
- tracer = trace_api.get_tracer(__name__)
32
-
33
-
34
- def getenv_or_raise(key: str) -> str:
35
- if not (value := os.getenv(key)):
36
- raise ValueError(f"Please set the {key} environment variable.")
37
- return value
38
-
39
-
40
- OPENAI_API_KEY = getenv_or_raise("OPENAI_API_KEY")
41
- OPENAI_API_URL = "https://api.openai.com/v1/chat/completions"
42
- OPENAI_MODEL = "gpt-4"
43
-
44
- http_client = AsyncClient()
45
- app = FastAPI()
46
-
47
-
48
- class OpenAIException(HTTPException):
49
- pass
50
-
51
-
52
- @app.post("/messages/")
53
- async def messages(messages_payload: MessagesPayload) -> MessagesResponse:
54
- messages = messages_payload.messages
55
- invocation_parameters = {"temperature": 0.1}
56
- openai_payload = {
57
- "model": OPENAI_MODEL,
58
- **invocation_parameters,
59
- "messages": [message.model_dump() for message in messages],
60
- }
61
- with tracer.start_as_current_span("OpenAI Async Chat Completion") as span:
62
- for attribute_key, attribute_value in (
63
- *_llm_span_kind_attributes(),
64
- *_llm_model_name_attributes(OPENAI_MODEL),
65
- *_llm_invocation_parameters_attributes(invocation_parameters),
66
- *_input_attributes(openai_payload),
67
- *_llm_input_messages_attributes(messages),
68
- ):
69
- span.set_attribute(attribute_key, attribute_value)
70
- response = await http_client.post(
71
- OPENAI_API_URL,
72
- headers={
73
- "Content-Type": "application/json",
74
- "Authorization": f"Bearer {OPENAI_API_KEY}",
75
- },
76
- json=openai_payload,
77
- )
78
- if not (200 <= response.status_code < 300):
79
- raise OpenAIException(
80
- status_code=500, detail=response.content.decode("utf-8")
81
- )
82
- span.set_status(trace_api.StatusCode.OK)
83
- response_data = response.json()
84
- assistant_message_content = response_data["choices"][0]["message"]["content"]
85
- message_uuid = str(uuid4())
86
- assistant_message = Message(
87
- role="assistant",
88
- content=assistant_message_content,
89
- uuid=message_uuid,
90
- )
91
- for (
92
- attribute_key,
93
- attribute_value,
94
- ) in (
95
- *_output_attributes(response_data),
96
- *_llm_output_message_attributes(assistant_message),
97
- *_llm_token_usage_attributes(response_data),
98
- ):
99
- span.set_attribute(attribute_key, attribute_value)
100
- span_id = span.get_span_context().span_id.to_bytes(8, "big").hex()
101
- assistant_message.span_id = span_id
102
-
103
- return MessagesResponse(message=assistant_message)
104
-
105
-
106
- @app.post("/feedback/")
107
- async def post_feedback(feedback_request: FeedbackRequest) -> None:
108
- if feedback_request.feedback == 1:
109
- label = "👍"
110
- elif feedback_request.feedback == 0:
111
- label = "👎"
112
-
113
- request_body = {
114
- "data": [
115
- {
116
- "span_id": feedback_request.span_id,
117
- "name": "user_feedback",
118
- "annotator_kind": "HUMAN",
119
- "result": {"label": label, "score": feedback_request.feedback},
120
- "metadata": {},
121
- }
122
- ]
123
- }
124
-
125
- try:
126
- await http_client.post(
127
- f"{endpoint}/span_annotations",
128
- json=request_body,
129
- )
130
- except ConnectError:
131
- warnings.warn("Could not connect to Phoenix server.")
132
-
133
-
134
- def _llm_span_kind_attributes() -> Iterator[Tuple[str, str]]:
135
- """
136
- Yields the OpenInference span kind attribute for LLMs.
137
- """
138
- yield SpanAttributes.OPENINFERENCE_SPAN_KIND, OpenInferenceSpanKindValues.LLM.value
139
-
140
-
141
- def _llm_model_name_attributes(model_name: str) -> Iterator[Tuple[str, str]]:
142
- """
143
- Yields the OpenInference model name attribute.
144
- """
145
- yield SpanAttributes.LLM_MODEL_NAME, model_name
146
-
147
-
148
- def _llm_invocation_parameters_attributes(
149
- invocation_parameters: Dict[str, Any],
150
- ) -> Iterator[Tuple[str, str]]:
151
- """
152
- Yields the OpenInference invocation parameters attribute as a JSON string.
153
- """
154
- yield SpanAttributes.LLM_INVOCATION_PARAMETERS, json.dumps(invocation_parameters)
155
-
156
-
157
- def _input_attributes(payload: Any) -> Iterator[Tuple[str, str]]:
158
- """
159
- Yields the OpenInference input value attribute as a JSON string if the
160
- payload can be serialized as JSON, otherwise as a string.
161
- """
162
- try:
163
- yield SpanAttributes.INPUT_VALUE, json.dumps(payload)
164
- yield SpanAttributes.INPUT_MIME_TYPE, OpenInferenceMimeTypeValues.JSON.value
165
- except json.JSONDecodeError:
166
- yield SpanAttributes.INPUT_VALUE, str(payload)
167
- yield SpanAttributes.INPUT_MIME_TYPE, OpenInferenceMimeTypeValues.TEXT.value
168
-
169
-
170
- def _llm_input_messages_attributes(
171
- messages: List[Message],
172
- ) -> Iterator[Tuple[str, str]]:
173
- """
174
- Yields the OpenInference input messages attributes for each message in the list.
175
- """
176
- for messages_index, message in enumerate(messages):
177
- yield (
178
- f"{SpanAttributes.LLM_INPUT_MESSAGES}.{messages_index}.{MessageAttributes.MESSAGE_ROLE}",
179
- message.role,
180
- )
181
- yield (
182
- f"{SpanAttributes.LLM_INPUT_MESSAGES}.{messages_index}.{MessageAttributes.MESSAGE_CONTENT}",
183
- message.content,
184
- )
185
-
186
-
187
- def _output_attributes(payload: Any) -> Iterator[Tuple[str, str]]:
188
- """
189
- Yields the OpenInference output value attribute as a JSON string if the
190
- payload can be serialized as JSON, otherwise as a string.
191
- """
192
- try:
193
- yield SpanAttributes.OUTPUT_VALUE, json.dumps(payload)
194
- yield SpanAttributes.OUTPUT_MIME_TYPE, OpenInferenceMimeTypeValues.JSON.value
195
- except json.JSONDecodeError:
196
- yield SpanAttributes.OUTPUT_VALUE, str(payload)
197
- yield SpanAttributes.OUTPUT_MIME_TYPE, OpenInferenceMimeTypeValues.TEXT.value
198
-
199
-
200
- def _llm_output_message_attributes(message: Message) -> Iterator[Tuple[str, str]]:
201
- """
202
- Yields the OpenInference output message attributes.
203
- """
204
- yield (
205
- f"{SpanAttributes.LLM_OUTPUT_MESSAGES}.0.{MessageAttributes.MESSAGE_ROLE}",
206
- message.role,
207
- )
208
- yield (
209
- f"{SpanAttributes.LLM_OUTPUT_MESSAGES}.0.{MessageAttributes.MESSAGE_CONTENT}",
210
- message.content,
211
- )
212
-
213
-
214
- def _llm_token_usage_attributes(
215
- response_data: Dict[str, Any],
216
- ) -> Iterator[Tuple[str, int]]:
217
- """
218
- Parses and yields token usage attributes from the response data.
219
- """
220
- if not isinstance((usage := response_data.get("usage")), dict):
221
- return
222
- if prompt_tokens := usage.get("prompt_tokens"):
223
- yield SpanAttributes.LLM_TOKEN_COUNT_PROMPT, prompt_tokens
224
- if completion_tokens := usage.get("completion_tokens"):
225
- yield SpanAttributes.LLM_TOKEN_COUNT_COMPLETION, completion_tokens
226
- if total_tokens := usage.get("total_tokens"):
227
- yield SpanAttributes.LLM_TOKEN_COUNT_TOTAL, total_tokens
@@ -1,25 +0,0 @@
1
- from typing import List, Literal, Optional
2
-
3
- from pydantic import BaseModel
4
-
5
- Role = Literal["system", "assistant", "user"]
6
-
7
-
8
- class Message(BaseModel):
9
- role: Role
10
- content: str
11
- uuid: str
12
- span_id: Optional[str] = None
13
-
14
-
15
- class MessagesPayload(BaseModel):
16
- messages: List[Message]
17
-
18
-
19
- class MessagesResponse(BaseModel):
20
- message: Message
21
-
22
-
23
- class FeedbackRequest(BaseModel):
24
- feedback: int
25
- span_id: str
@@ -1,15 +0,0 @@
1
- FROM python:3.11-slim as builder
2
- WORKDIR /app
3
- COPY requirements.txt /app/
4
- RUN pip install uv
5
- RUN uv venv
6
- ENV PATH="/app/.venv/bin:$PATH"
7
- RUN uv pip sync requirements.txt
8
-
9
- FROM gcr.io/distroless/python3-debian12
10
- WORKDIR /app
11
- COPY --from=builder /app/.venv/lib/python3.11/site-packages/ /app/site-packages/
12
- ENV PYTHONPATH="/app/site-packages:$PYTHONPATH"
13
- COPY src/ /app/src/
14
- EXPOSE 8501
15
- CMD ["-m", "streamlit", "run", "src/app.py", "--server.port=8501", "--server.address=0.0.0.0"]
@@ -1,20 +0,0 @@
1
- frontend:
2
- streamlit run ./src/app.py
3
-
4
- format:
5
- ruff check --fix . && ruff format .
6
-
7
- typecheck:
8
- pyright .
9
-
10
- types:
11
- datamodel-codegen --input schema.json --input-file-type openapi --output frontend/request_types.py --enum-field-as-literal all
12
-
13
- requirements:
14
- uv pip compile pyproject.toml > requirements.txt
15
-
16
- docker-build:
17
- docker build -t frontend .
18
-
19
- docker-run:
20
- docker run -p 8501:8501 -it frontend
@@ -1,24 +0,0 @@
1
- [project]
2
- name = "frontend"
3
- version = "0.1.0"
4
- dependencies = [
5
- "streamlit",
6
- "httpx",
7
- "pydantic",
8
- ]
9
- requires-python = ">=3.8"
10
-
11
- [project.optional-dependencies]
12
- dev = [
13
- "pyright",
14
- "ruff",
15
- "datamodel-code-generator",
16
- ]
17
-
18
- [tool.ruff]
19
- exclude = [
20
- "frontend/request_types.py",
21
- ]
22
-
23
- [tool.ruff.lint]
24
- extend-select = ["I"]
@@ -1,123 +0,0 @@
1
- # This file was autogenerated by uv via the following command:
2
- # uv pip compile pyproject.toml
3
- altair==5.3.0
4
- # via streamlit
5
- annotated-types==0.6.0
6
- # via pydantic
7
- anyio==4.3.0
8
- # via httpx
9
- attrs==23.2.0
10
- # via
11
- # jsonschema
12
- # referencing
13
- blinker==1.7.0
14
- # via streamlit
15
- cachetools==5.3.3
16
- # via streamlit
17
- certifi==2024.7.4
18
- # via
19
- # httpcore
20
- # httpx
21
- # requests
22
- charset-normalizer==3.3.2
23
- # via requests
24
- click==8.1.7
25
- # via streamlit
26
- gitdb==4.0.11
27
- # via gitpython
28
- gitpython==3.1.43
29
- # via streamlit
30
- h11==0.14.0
31
- # via httpcore
32
- httpcore==1.0.5
33
- # via httpx
34
- httpx==0.27.0
35
- idna==3.6
36
- # via
37
- # anyio
38
- # httpx
39
- # requests
40
- jinja2==3.1.3
41
- # via
42
- # altair
43
- # pydeck
44
- jsonschema==4.21.1
45
- # via altair
46
- jsonschema-specifications==2023.12.1
47
- # via jsonschema
48
- markdown-it-py==3.0.0
49
- # via rich
50
- markupsafe==2.1.5
51
- # via jinja2
52
- mdurl==0.1.2
53
- # via markdown-it-py
54
- numpy==1.26.4
55
- # via
56
- # altair
57
- # pandas
58
- # pyarrow
59
- # pydeck
60
- # streamlit
61
- packaging==24.0
62
- # via
63
- # altair
64
- # streamlit
65
- pandas==2.2.1
66
- # via
67
- # altair
68
- # streamlit
69
- pillow==10.3.0
70
- # via streamlit
71
- protobuf==4.25.3
72
- # via streamlit
73
- pyarrow==15.0.2
74
- # via streamlit
75
- pydantic==2.6.4
76
- pydantic-core==2.16.3
77
- # via pydantic
78
- pydeck==0.8.0
79
- # via streamlit
80
- pygments==2.17.2
81
- # via rich
82
- python-dateutil==2.9.0.post0
83
- # via pandas
84
- pytz==2024.1
85
- # via pandas
86
- referencing==0.34.0
87
- # via
88
- # jsonschema
89
- # jsonschema-specifications
90
- requests==2.32.2
91
- # via streamlit
92
- rich==13.7.1
93
- # via streamlit
94
- rpds-py==0.18.0
95
- # via
96
- # jsonschema
97
- # referencing
98
- six==1.16.0
99
- # via python-dateutil
100
- smmap==5.0.1
101
- # via gitdb
102
- sniffio==1.3.1
103
- # via
104
- # anyio
105
- # httpx
106
- streamlit==1.37.0
107
- tenacity==8.2.3
108
- # via streamlit
109
- toml==0.10.2
110
- # via streamlit
111
- toolz==0.12.1
112
- # via altair
113
- tornado==6.4.1
114
- # via streamlit
115
- typing-extensions==4.11.0
116
- # via
117
- # pydantic
118
- # pydantic-core
119
- # streamlit
120
- tzdata==2024.1
121
- # via pandas
122
- urllib3==2.2.1
123
- # via requests