arize-phoenix 5.2.1__tar.gz → 5.3.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 (326) hide show
  1. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/.gitignore +8 -0
  2. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/PKG-INFO +4 -3
  3. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/pyproject.toml +6 -39
  4. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/config.py +24 -0
  5. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/core/model_schema_adapter.py +2 -2
  6. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +1 -1
  7. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +1 -1
  8. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +1 -1
  9. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/models.py +6 -6
  10. arize_phoenix-5.3.0/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +12 -0
  11. arize_phoenix-5.3.0/src/phoenix/server/api/input_types/InvocationParameters.py +20 -0
  12. arize_phoenix-5.3.0/src/phoenix/server/api/openapi/main.py +17 -0
  13. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/queries.py +74 -0
  14. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/schema.py +2 -0
  15. arize_phoenix-5.3.0/src/phoenix/server/api/subscriptions.py +430 -0
  16. arize_phoenix-5.3.0/src/phoenix/server/api/types/ChatCompletionMessageRole.py +11 -0
  17. arize_phoenix-5.3.0/src/phoenix/server/api/types/GenerativeModel.py +9 -0
  18. arize_phoenix-5.3.0/src/phoenix/server/api/types/GenerativeProvider.py +16 -0
  19. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/app.py +69 -7
  20. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/bearer_auth.py +12 -4
  21. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/main.py +2 -2
  22. arize_phoenix-5.3.0/src/phoenix/server/static/.vite/manifest.json +78 -0
  23. arize_phoenix-5.2.1/src/phoenix/server/static/assets/components-BqfGSfjl.js → arize_phoenix-5.3.0/src/phoenix/server/static/assets/components-DwERj42u.js +153 -130
  24. arize_phoenix-5.2.1/src/phoenix/server/static/assets/index-CCZJh73q.js → arize_phoenix-5.3.0/src/phoenix/server/static/assets/index-CyOjvLOr.js +2 -2
  25. arize_phoenix-5.2.1/src/phoenix/server/static/assets/pages-CCfzLmwR.js → arize_phoenix-5.3.0/src/phoenix/server/static/assets/pages-BNYMd7SU.js +360 -255
  26. arize_phoenix-5.3.0/src/phoenix/server/static/assets/vendor-D-NIjePD.js +872 -0
  27. arize_phoenix-5.2.1/src/phoenix/server/static/assets/vendor-arizeai-BCDjSYK3.js → arize_phoenix-5.3.0/src/phoenix/server/static/assets/vendor-arizeai-DoY5jUTO.js +30 -28
  28. arize_phoenix-5.3.0/src/phoenix/server/static/assets/vendor-codemirror-CIhY_nEU.js +24 -0
  29. arize_phoenix-5.2.1/src/phoenix/server/static/assets/vendor-recharts-CJm3CJf0.js → arize_phoenix-5.3.0/src/phoenix/server/static/assets/vendor-recharts-Dgcm35Jq.js +1 -1
  30. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/fixtures.py +7 -9
  31. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/utilities/client.py +2 -2
  32. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/utilities/json.py +11 -0
  33. arize_phoenix-5.3.0/src/phoenix/utilities/template_formatters.py +70 -0
  34. arize_phoenix-5.3.0/src/phoenix/version.py +1 -0
  35. arize_phoenix-5.2.1/src/phoenix/server/api/openapi/main.py +0 -22
  36. arize_phoenix-5.2.1/src/phoenix/server/static/.vite/manifest.json +0 -78
  37. arize_phoenix-5.2.1/src/phoenix/server/static/assets/vendor-WKqfwbiB.js +0 -641
  38. arize_phoenix-5.2.1/src/phoenix/server/static/assets/vendor-codemirror-B_z6EOTv.js +0 -27
  39. arize_phoenix-5.2.1/src/phoenix/version.py +0 -1
  40. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/IP_NOTICE +0 -0
  41. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/LICENSE +0 -0
  42. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/README.md +0 -0
  43. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/__init__.py +0 -0
  44. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/auth.py +0 -0
  45. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/core/__init__.py +0 -0
  46. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/core/embedding_dimension.py +0 -0
  47. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/core/model.py +0 -0
  48. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/core/model_schema.py +0 -0
  49. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/datetime_utils.py +0 -0
  50. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/README.md +0 -0
  51. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/__init__.py +0 -0
  52. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/alembic.ini +0 -0
  53. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/bulk_inserter.py +0 -0
  54. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/engines.py +0 -0
  55. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/enums.py +0 -0
  56. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/facilitator.py +0 -0
  57. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/helpers.py +0 -0
  58. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/__init__.py +0 -0
  59. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/constants.py +0 -0
  60. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/dataset.py +0 -0
  61. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  62. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  63. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/helpers.py +0 -0
  64. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/span.py +0 -0
  65. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  66. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  67. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/insertion/types.py +0 -0
  68. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/migrate.py +0 -0
  69. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/migrations/__init__.py +0 -0
  70. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/migrations/env.py +0 -0
  71. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  72. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  73. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/exceptions.py +0 -0
  74. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/__init__.py +0 -0
  75. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  76. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  77. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  78. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  79. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  80. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/functions.py +0 -0
  81. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/tracing.py +0 -0
  82. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/types.py +0 -0
  83. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/experiments/utils.py +0 -0
  84. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/inferences/__init__.py +0 -0
  85. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/inferences/errors.py +0 -0
  86. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/inferences/fixtures.py +0 -0
  87. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/inferences/inferences.py +0 -0
  88. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/inferences/schema.py +0 -0
  89. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/inferences/validation.py +0 -0
  90. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/logging/__init__.py +0 -0
  91. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/logging/_config.py +0 -0
  92. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/logging/_filter.py +0 -0
  93. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/logging/_formatter.py +0 -0
  94. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/metrics/README.md +0 -0
  95. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/metrics/__init__.py +0 -0
  96. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/metrics/binning.py +0 -0
  97. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/metrics/metrics.py +0 -0
  98. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/metrics/mixins.py +0 -0
  99. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  100. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/metrics/timeseries.py +0 -0
  101. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/metrics/wrappers.py +0 -0
  102. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/pointcloud/__init__.py +0 -0
  103. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/pointcloud/clustering.py +0 -0
  104. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  105. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/pointcloud/projectors.py +0 -0
  106. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  107. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/py.typed +0 -0
  108. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/__init__.py +0 -0
  109. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/README.md +0 -0
  110. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/__init__.py +0 -0
  111. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/auth.py +0 -0
  112. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/context.py +0 -0
  113. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  114. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  115. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  116. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  117. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  118. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  119. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  120. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  121. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  122. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  123. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  124. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  125. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  126. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  127. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  128. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  129. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  130. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  131. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  132. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  133. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  134. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  135. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  136. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  137. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
  138. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  139. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  140. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/exceptions.py +0 -0
  141. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  142. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  143. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  144. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  145. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  146. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  147. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  148. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  149. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  150. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  151. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  152. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  153. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  154. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  155. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  156. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  157. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  158. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  159. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  160. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  161. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  162. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  163. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  164. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  165. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  166. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  167. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  168. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  169. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  170. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  171. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  172. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/interceptor.py +0 -0
  173. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  174. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  175. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  176. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  177. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  178. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  179. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  180. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  181. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  182. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  183. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  184. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  185. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/auth.py +0 -0
  186. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  187. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  188. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/utils.py +0 -0
  189. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  190. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  191. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  192. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  193. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  194. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  195. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  196. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  197. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  198. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  199. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  200. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  201. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  202. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  203. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  204. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  205. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  206. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  207. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  208. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  209. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  210. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  211. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  212. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  213. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  214. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  215. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  216. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  217. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  218. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  219. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  220. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  221. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  222. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  223. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Event.py +0 -0
  224. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  225. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  226. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  227. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  228. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  229. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  230. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  231. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  232. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  233. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  234. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  235. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  236. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  237. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Model.py +0 -0
  238. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  239. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  240. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Project.py +0 -0
  241. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  242. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  243. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  244. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Segments.py +0 -0
  245. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  246. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Span.py +0 -0
  247. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  248. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  249. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  250. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/Trace.py +0 -0
  251. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  252. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  253. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/User.py +0 -0
  254. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  255. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  256. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  257. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  258. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/__init__.py +0 -0
  259. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/node.py +0 -0
  260. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/types/pagination.py +0 -0
  261. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/api/utils.py +0 -0
  262. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/dml_event.py +0 -0
  263. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/dml_event_handler.py +0 -0
  264. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/email/__init__.py +0 -0
  265. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/email/sender.py +0 -0
  266. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  267. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  268. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/email/types.py +0 -0
  269. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/grpc_server.py +0 -0
  270. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/jwt_store.py +0 -0
  271. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/oauth2.py +0 -0
  272. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/openapi/__init__.py +0 -0
  273. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/prometheus.py +0 -0
  274. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/rate_limiters.py +0 -0
  275. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  276. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  277. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  278. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  279. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  280. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  281. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  282. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  283. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  284. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  285. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/favicon.ico +0 -0
  286. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/static/modernizr.js +0 -0
  287. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/telemetry.py +0 -0
  288. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/templates/__init__.py +0 -0
  289. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/templates/index.html +0 -0
  290. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/thread_server.py +0 -0
  291. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/server/types.py +0 -0
  292. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/services.py +0 -0
  293. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/session/__init__.py +0 -0
  294. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/session/client.py +0 -0
  295. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/session/data_extractor.py +0 -0
  296. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/session/evaluation.py +0 -0
  297. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/session/session.py +0 -0
  298. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/settings.py +0 -0
  299. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/__init__.py +0 -0
  300. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/attributes.py +0 -0
  301. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/dsl/README.md +0 -0
  302. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  303. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/dsl/filter.py +0 -0
  304. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  305. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/dsl/query.py +0 -0
  306. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/errors.py +0 -0
  307. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  308. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/exporter.py +0 -0
  309. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/otel.py +0 -0
  310. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/projects.py +0 -0
  311. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/schemas.py +0 -0
  312. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/span_evaluations.py +0 -0
  313. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  314. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  315. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/trace_dataset.py +0 -0
  316. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/utils.py +0 -0
  317. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/v1/__init__.py +0 -0
  318. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  319. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  320. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/utilities/__init__.py +0 -0
  321. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/utilities/deprecation.py +0 -0
  322. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/utilities/error_handling.py +0 -0
  323. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/utilities/logging.py +0 -0
  324. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/utilities/project.py +0 -0
  325. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/utilities/re.py +0 -0
  326. {arize_phoenix-5.2.1 → arize_phoenix-5.3.0}/src/phoenix/utilities/span_store.py +0 -0
@@ -34,3 +34,11 @@ examples/agent_framework_comparison/utils/saved_traces/*.parquet
34
34
  # python environments
35
35
  .conda
36
36
  .venv
37
+
38
+ # Symbolic links
39
+ # Note that this can affect hatch build for those packages. That's why
40
+ # we need to un-ignore it if it's an actual folder (i.e. with the trailing /).
41
+ /src/phoenix/evals
42
+ !src/phoenix/evals/
43
+ /src/phoenix/otel
44
+ !src/phoenix/otel/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 5.2.1
3
+ Version: 5.3.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
@@ -38,7 +38,7 @@ Requires-Dist: opentelemetry-proto>=1.12.0
38
38
  Requires-Dist: opentelemetry-sdk
39
39
  Requires-Dist: opentelemetry-semantic-conventions
40
40
  Requires-Dist: pandas>=1.0
41
- Requires-Dist: protobuf<6.0,>=3.20
41
+ Requires-Dist: protobuf<6.0,>=3.20.2
42
42
  Requires-Dist: psutil
43
43
  Requires-Dist: pyarrow
44
44
  Requires-Dist: pydantic!=2.0.*,<3,>=1.0
@@ -53,6 +53,7 @@ Requires-Dist: tqdm
53
53
  Requires-Dist: typing-extensions>=4.6
54
54
  Requires-Dist: umap-learn
55
55
  Requires-Dist: uvicorn
56
+ Requires-Dist: websockets
56
57
  Requires-Dist: wrapt
57
58
  Provides-Extra: container
58
59
  Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
@@ -96,7 +97,7 @@ Requires-Dist: pytest-cov; extra == 'dev'
96
97
  Requires-Dist: pytest-postgresql; extra == 'dev'
97
98
  Requires-Dist: pytest-xdist; extra == 'dev'
98
99
  Requires-Dist: pytest==8.3.3; extra == 'dev'
99
- Requires-Dist: ruff==0.6.8; extra == 'dev'
100
+ Requires-Dist: ruff==0.6.9; extra == 'dev'
100
101
  Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.243.1; extra == 'dev'
101
102
  Requires-Dist: tabulate; extra == 'dev'
102
103
  Requires-Dist: tox-uv==1.11.3; extra == 'dev'
@@ -36,7 +36,7 @@ dependencies = [
36
36
  "typing-extensions>=4.6",
37
37
  "scipy",
38
38
  "wrapt",
39
- "protobuf>=3.20, <6.0",
39
+ "protobuf>=3.20.2, <6.0",
40
40
  "grpcio",
41
41
  "grpc-interceptor",
42
42
  "tqdm",
@@ -59,6 +59,7 @@ dependencies = [
59
59
  "fastapi",
60
60
  "pydantic>=1.0,!=2.0.*,<3", # exclude 2.0.* since it does not support the `json_encoders` configuration setting
61
61
  "authlib",
62
+ "websockets",
62
63
  ]
63
64
  dynamic = ["version"]
64
65
 
@@ -75,7 +76,7 @@ dev = [
75
76
  "uv==0.4.8",
76
77
  "jupyter",
77
78
  "nbqa",
78
- "ruff==0.6.8",
79
+ "ruff==0.6.9",
79
80
  "mypy==1.11.2",
80
81
  "pandas>=1.0",
81
82
  "tabulate", # used by DataFrame.to_markdown()
@@ -195,7 +196,7 @@ dependencies = [
195
196
  "litellm>=1.0.3",
196
197
  "openai>=1.0.0",
197
198
  "tenacity",
198
- "protobuf==3.20", # version minimum (for tests)
199
+ "protobuf==3.20.2", # version minimum (for tests)
199
200
  "grpc-interceptor[testing]",
200
201
  "responses",
201
202
  "tiktoken",
@@ -244,7 +245,7 @@ python = ["3.9", "3.12"]
244
245
  [tool.hatch.envs.style]
245
246
  detached = true
246
247
  dependencies = [
247
- "ruff==0.6.8",
248
+ "ruff==0.6.9",
248
249
  ]
249
250
 
250
251
  [[tool.hatch.envs.style.matrix]]
@@ -320,10 +321,6 @@ clean = [
320
321
  "jupyter nbconvert --ClearOutputPreprocessor.enabled=True --ClearMetadataPreprocessor.enabled=True --inplace **/*.ipynb **/internal/*.ipynb **/tracing/*.ipynb **/dolly-pythia-fine-tuned/*.ipynb",
321
322
  ]
322
323
 
323
- [tool.hatch.envs.auth.scripts]
324
- up = "cd src/phoenix/db && alembic upgrade cd164e83824f && echo 'ran auth up-migration'"
325
- down = "cd src/phoenix/db && alembic downgrade 3be8647b87d8 && echo 'ran auth down-migration'"
326
-
327
324
  [tool.hatch.envs.publish]
328
325
  dependencies = [
329
326
  "check-wheel-contents",
@@ -345,36 +342,6 @@ check = [
345
342
  "interrogate -vv src/",
346
343
  ]
347
344
 
348
- [tool.hatch.envs.gql]
349
- dependencies = [
350
- "strawberry-graphql[cli]==0.243.1", # need to pin version because we're monkey-patching
351
- "requests",
352
- ]
353
-
354
- [tool.hatch.envs.gql.scripts]
355
- build = 'strawberry export-schema phoenix.server.api.schema:schema > app/schema.graphql'
356
-
357
- [tool.hatch.envs.openapi]
358
- dependencies = [
359
- "pydantic==2.8.2",
360
- "fastapi==0.111.0",
361
- ]
362
-
363
- [tool.hatch.envs.openapi.scripts]
364
- build = "python -m phoenix.server.api.openapi.main > schemas/openapi.json"
365
-
366
- [tool.hatch.envs.proto]
367
- detached = true
368
- dependencies = [
369
- "grpcio-tools==1.54.3",
370
- "mypy-protobuf==3.5.0",
371
- ]
372
-
373
- [tool.hatch.envs.proto.scripts]
374
- recompile = """
375
- python -m grpc_tools.protoc -I src/phoenix/proto --python_out=src/phoenix --mypy_out=src/phoenix src/phoenix/proto/trace/v1/evaluation.proto
376
- """
377
-
378
345
  [tool.interrogate]
379
346
  fail-under = 0
380
347
  # generate-badge = "badges/"
@@ -443,7 +410,7 @@ exclude = [
443
410
  "docs/",
444
411
  ]
445
412
  line-length = 100
446
- target-version = "py38"
413
+ target-version = "py39"
447
414
 
448
415
  [tool.ruff.lint.per-file-ignores]
449
416
  "*.ipynb" = ["E402", "E501"]
@@ -107,6 +107,14 @@ ENV_PHOENIX_PASSWORD_RESET_TOKEN_EXPIRY_MINUTES = "PHOENIX_PASSWORD_RESET_TOKEN_
107
107
  """
108
108
  The duration, in minutes, before password reset tokens expire.
109
109
  """
110
+ ENV_PHOENIX_CSRF_TRUSTED_ORIGINS = "PHOENIX_CSRF_TRUSTED_ORIGINS"
111
+ """
112
+ A comma-separated list of origins allowed to bypass Cross-Site Request Forgery (CSRF)
113
+ protection. This setting is recommended when configuring OAuth2 clients or sending
114
+ password reset emails. If this variable is left unspecified or contains no origins, CSRF
115
+ protection will not be enabled. In such cases, when a request includes `origin` or `referer`
116
+ headers, those values will not be validated.
117
+ """
110
118
 
111
119
  # SMTP settings
112
120
  ENV_PHOENIX_SMTP_HOSTNAME = "PHOENIX_SMTP_HOSTNAME"
@@ -321,6 +329,22 @@ def get_env_refresh_token_expiry() -> timedelta:
321
329
  return timedelta(minutes=minutes)
322
330
 
323
331
 
332
+ def get_env_csrf_trusted_origins() -> List[str]:
333
+ origins: List[str] = []
334
+ if not (csrf_trusted_origins := os.getenv(ENV_PHOENIX_CSRF_TRUSTED_ORIGINS)):
335
+ return origins
336
+ for origin in csrf_trusted_origins.split(","):
337
+ if not origin:
338
+ continue
339
+ if not urlparse(origin).hostname:
340
+ raise ValueError(
341
+ f"The environment variable `{ENV_PHOENIX_CSRF_TRUSTED_ORIGINS}` contains a url "
342
+ f"with missing hostname. Please ensure that each url has a valid hostname."
343
+ )
344
+ origins.append(origin)
345
+ return sorted(set(origins))
346
+
347
+
324
348
  def get_env_smtp_username() -> str:
325
349
  return os.getenv(ENV_PHOENIX_SMTP_USERNAME) or ""
326
350
 
@@ -6,10 +6,10 @@ import pandas as pd
6
6
  from pandas.api.types import is_object_dtype
7
7
  from typing_extensions import TypeAlias, TypeGuard
8
8
 
9
- from phoenix import EmbeddingColumnNames, Inferences
10
9
  from phoenix.core.model import _get_embedding_dimensions
11
10
  from phoenix.core.model_schema import Embedding, Model, RetrievalEmbedding, Schema
12
- from phoenix.inferences.schema import RetrievalEmbeddingColumnNames
11
+ from phoenix.inferences.inferences import Inferences
12
+ from phoenix.inferences.schema import EmbeddingColumnNames, RetrievalEmbeddingColumnNames
13
13
  from phoenix.inferences.schema import Schema as InferencesSchema
14
14
 
15
15
  InferencesName: TypeAlias = str
@@ -20,7 +20,7 @@ class JSONB(JSON):
20
20
  __visit_name__ = "JSONB"
21
21
 
22
22
 
23
- @compiles(JSONB, "sqlite") # type: ignore
23
+ @compiles(JSONB, "sqlite")
24
24
  def _(*args: Any, **kwargs: Any) -> str:
25
25
  # See https://docs.sqlalchemy.org/en/20/core/custom_types.html
26
26
  return "JSONB"
@@ -32,7 +32,7 @@ class JSONB(JSON):
32
32
  __visit_name__ = "JSONB"
33
33
 
34
34
 
35
- @compiles(JSONB, "sqlite") # type: ignore
35
+ @compiles(JSONB, "sqlite")
36
36
  def _(*args: Any, **kwargs: Any) -> str:
37
37
  # See https://docs.sqlalchemy.org/en/20/core/custom_types.html
38
38
  return "JSONB"
@@ -20,7 +20,7 @@ class JSONB(JSON):
20
20
  __visit_name__ = "JSONB"
21
21
 
22
22
 
23
- @compiles(JSONB, "sqlite") # type: ignore
23
+ @compiles(JSONB, "sqlite")
24
24
  def _(*args: Any, **kwargs: Any) -> str:
25
25
  # See https://docs.sqlalchemy.org/en/20/core/custom_types.html
26
26
  return "JSONB"
@@ -50,7 +50,7 @@ class JSONB(JSON):
50
50
  __visit_name__ = "JSONB"
51
51
 
52
52
 
53
- @compiles(JSONB, "sqlite") # type: ignore
53
+ @compiles(JSONB, "sqlite")
54
54
  def _(*args: Any, **kwargs: Any) -> str:
55
55
  # See https://docs.sqlalchemy.org/en/20/core/custom_types.html
56
56
  return "JSONB"
@@ -271,7 +271,7 @@ class LatencyMs(expression.FunctionElement[float]):
271
271
  name = "latency_ms"
272
272
 
273
273
 
274
- @compiles(LatencyMs) # type: ignore
274
+ @compiles(LatencyMs)
275
275
  def _(element: Any, compiler: Any, **kw: Any) -> Any:
276
276
  # See https://docs.sqlalchemy.org/en/20/core/compiler.html
277
277
  start_time, end_time = list(element.clauses)
@@ -287,7 +287,7 @@ def _(element: Any, compiler: Any, **kw: Any) -> Any:
287
287
  )
288
288
 
289
289
 
290
- @compiles(LatencyMs, "sqlite") # type: ignore
290
+ @compiles(LatencyMs, "sqlite")
291
291
  def _(element: Any, compiler: Any, **kw: Any) -> Any:
292
292
  # See https://docs.sqlalchemy.org/en/20/core/compiler.html
293
293
  start_time, end_time = list(element.clauses)
@@ -308,21 +308,21 @@ class TextContains(expression.FunctionElement[str]):
308
308
  name = "text_contains"
309
309
 
310
310
 
311
- @compiles(TextContains) # type: ignore
311
+ @compiles(TextContains)
312
312
  def _(element: Any, compiler: Any, **kw: Any) -> Any:
313
313
  # See https://docs.sqlalchemy.org/en/20/core/compiler.html
314
314
  string, substring = list(element.clauses)
315
315
  return compiler.process(string.contains(substring), **kw)
316
316
 
317
317
 
318
- @compiles(TextContains, "postgresql") # type: ignore
318
+ @compiles(TextContains, "postgresql")
319
319
  def _(element: Any, compiler: Any, **kw: Any) -> Any:
320
320
  # See https://docs.sqlalchemy.org/en/20/core/compiler.html
321
321
  string, substring = list(element.clauses)
322
322
  return compiler.process(func.strpos(string, substring) > 0, **kw)
323
323
 
324
324
 
325
- @compiles(TextContains, "sqlite") # type: ignore
325
+ @compiles(TextContains, "sqlite")
326
326
  def _(element: Any, compiler: Any, **kw: Any) -> Any:
327
327
  # See https://docs.sqlalchemy.org/en/20/core/compiler.html
328
328
  string, substring = list(element.clauses)
@@ -0,0 +1,12 @@
1
+ import strawberry
2
+ from strawberry.scalars import JSON
3
+
4
+ from phoenix.server.api.types.ChatCompletionMessageRole import ChatCompletionMessageRole
5
+
6
+
7
+ @strawberry.input
8
+ class ChatCompletionMessageInput:
9
+ role: ChatCompletionMessageRole
10
+ content: JSON = strawberry.field(
11
+ description="The content of the message as JSON to support text and tools",
12
+ )
@@ -0,0 +1,20 @@
1
+ from typing import List, Optional
2
+
3
+ import strawberry
4
+ from strawberry import UNSET
5
+ from strawberry.scalars import JSON
6
+
7
+
8
+ @strawberry.input
9
+ class InvocationParameters:
10
+ """
11
+ Invocation parameters interface shared between different providers.
12
+ """
13
+
14
+ temperature: Optional[float] = UNSET
15
+ max_completion_tokens: Optional[int] = UNSET
16
+ max_tokens: Optional[int] = UNSET
17
+ top_p: Optional[float] = UNSET
18
+ stop: Optional[List[str]] = UNSET
19
+ seed: Optional[int] = UNSET
20
+ tool_choice: Optional[JSON] = UNSET
@@ -0,0 +1,17 @@
1
+ import json
2
+ from argparse import ArgumentParser
3
+
4
+ from phoenix.server.api.openapi.schema import get_openapi_schema
5
+
6
+ if __name__ == "__main__":
7
+ parser = ArgumentParser()
8
+ parser.add_argument(
9
+ "-o",
10
+ "--output",
11
+ type=str,
12
+ required=True,
13
+ help="Path to the output file (e.g., openapi.json)",
14
+ )
15
+ args = parser.parse_args()
16
+ with open(args.output, "w") as f:
17
+ json.dump(get_openapi_schema(), f, indent=2)
@@ -58,6 +58,11 @@ from phoenix.server.api.types.Experiment import Experiment
58
58
  from phoenix.server.api.types.ExperimentComparison import ExperimentComparison, RunComparisonItem
59
59
  from phoenix.server.api.types.ExperimentRun import ExperimentRun, to_gql_experiment_run
60
60
  from phoenix.server.api.types.Functionality import Functionality
61
+ from phoenix.server.api.types.GenerativeModel import GenerativeModel
62
+ from phoenix.server.api.types.GenerativeProvider import (
63
+ GenerativeProvider,
64
+ GenerativeProviderKey,
65
+ )
61
66
  from phoenix.server.api.types.InferencesRole import AncillaryInferencesRole, InferencesRole
62
67
  from phoenix.server.api.types.Model import Model
63
68
  from phoenix.server.api.types.node import from_global_id, from_global_id_with_expected_type
@@ -76,8 +81,77 @@ from phoenix.server.api.types.UserApiKey import UserApiKey, to_gql_api_key
76
81
  from phoenix.server.api.types.UserRole import UserRole
77
82
 
78
83
 
84
+ @strawberry.input
85
+ class ModelsInput:
86
+ provider_key: Optional[GenerativeProviderKey]
87
+
88
+
79
89
  @strawberry.type
80
90
  class Query:
91
+ @strawberry.field
92
+ async def model_providers(self) -> List[GenerativeProvider]:
93
+ return [
94
+ GenerativeProvider(
95
+ name="OpenAI",
96
+ key=GenerativeProviderKey.OPENAI,
97
+ ),
98
+ GenerativeProvider(
99
+ name="Azure OpenAI",
100
+ key=GenerativeProviderKey.AZURE_OPENAI,
101
+ ),
102
+ GenerativeProvider(
103
+ name="Anthropic",
104
+ key=GenerativeProviderKey.ANTHROPIC,
105
+ ),
106
+ ]
107
+
108
+ @strawberry.field
109
+ async def models(self, input: Optional[ModelsInput] = None) -> List[GenerativeModel]:
110
+ openai_models = [
111
+ "o1-preview",
112
+ "o1-preview-2024-09-12",
113
+ "o1-mini",
114
+ "o1-mini-2024-09-12",
115
+ "gpt-4o",
116
+ "gpt-4o-2024-08-06",
117
+ "gpt-4o-2024-05-13",
118
+ "chatgpt-4o-latest",
119
+ "gpt-4o-mini",
120
+ "gpt-4o-mini-2024-07-18",
121
+ "gpt-4-turbo",
122
+ "gpt-4-turbo-2024-04-09",
123
+ "gpt-4-turbo-preview",
124
+ "gpt-4-0125-preview",
125
+ "gpt-4-1106-preview",
126
+ "gpt-4",
127
+ "gpt-4-0613",
128
+ "gpt-3.5-turbo-0125",
129
+ "gpt-3.5-turbo",
130
+ "gpt-3.5-turbo-1106",
131
+ "gpt-3.5-turbo-instruct",
132
+ ]
133
+ anthropic_models = [
134
+ "claude-3-5-sonnet-20240620",
135
+ "claude-3-opus-20240229",
136
+ "claude-3-sonnet-20240229",
137
+ "claude-3-haiku-20240307",
138
+ ]
139
+ openai_generative_models = [
140
+ GenerativeModel(name=model_name, provider_key=GenerativeProviderKey.OPENAI)
141
+ for model_name in openai_models
142
+ ]
143
+ anthropic_generative_models = [
144
+ GenerativeModel(name=model_name, provider_key=GenerativeProviderKey.ANTHROPIC)
145
+ for model_name in anthropic_models
146
+ ]
147
+
148
+ all_models = openai_generative_models + anthropic_generative_models
149
+
150
+ if input is not None and input.provider_key is not None:
151
+ return [model for model in all_models if model.provider_key == input.provider_key]
152
+
153
+ return all_models
154
+
81
155
  @strawberry.field(permission_classes=[IsAdmin]) # type: ignore
82
156
  async def users(
83
157
  self,
@@ -3,6 +3,7 @@ import strawberry
3
3
  from phoenix.server.api.exceptions import get_mask_errors_extension
4
4
  from phoenix.server.api.mutations import Mutation
5
5
  from phoenix.server.api.queries import Query
6
+ from phoenix.server.api.subscriptions import Subscription
6
7
 
7
8
  # This is the schema for generating `schema.graphql`.
8
9
  # See https://strawberry.rocks/docs/guides/schema-export
@@ -12,4 +13,5 @@ schema = strawberry.Schema(
12
13
  query=Query,
13
14
  mutation=Mutation,
14
15
  extensions=[get_mask_errors_extension()],
16
+ subscription=Subscription,
15
17
  )