arize-phoenix 7.0.1__tar.gz → 7.1.1__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 (349) hide show
  1. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/PKG-INFO +9 -8
  2. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/README.md +1 -1
  3. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/pyproject.toml +8 -7
  4. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/auth.py +12 -0
  5. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/context.py +1 -0
  6. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/helpers/playground_clients.py +1 -0
  7. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +5 -2
  8. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +5 -2
  9. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/api_key_mutations.py +3 -3
  10. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/chat_mutations.py +3 -3
  11. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/dataset_mutations.py +8 -8
  12. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/span_annotations_mutations.py +3 -3
  13. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +3 -3
  14. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/user_mutations.py +5 -5
  15. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/subscriptions.py +3 -3
  16. arize_phoenix-7.1.1/src/phoenix/server/api/types/DataQualityMetric.py +40 -0
  17. arize_phoenix-7.1.1/src/phoenix/server/api/types/PerformanceMetric.py +16 -0
  18. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/TimeSeries.py +5 -2
  19. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Trace.py +13 -0
  20. arize_phoenix-7.1.1/src/phoenix/server/static/.vite/manifest.json +87 -0
  21. arize_phoenix-7.0.1/src/phoenix/server/static/assets/components-DKH6AzJw.js → arize_phoenix-7.1.1/src/phoenix/server/static/assets/components-DaxEPah8.js +206 -117
  22. arize_phoenix-7.0.1/src/phoenix/server/static/assets/index-DLV87qiO.js → arize_phoenix-7.1.1/src/phoenix/server/static/assets/index-DxfKd3lv.js +2 -2
  23. arize_phoenix-7.0.1/src/phoenix/server/static/assets/pages-CVY3Nv4Z.js → arize_phoenix-7.1.1/src/phoenix/server/static/assets/pages-CY7Swxhi.js +292 -291
  24. arize_phoenix-7.1.1/src/phoenix/server/static/assets/vendor-DwOx_a-2.js +894 -0
  25. arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-arizeai-Buo4e1A6.js → arize_phoenix-7.1.1/src/phoenix/server/static/assets/vendor-arizeai-BWSsCZNG.js +1 -1
  26. arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-codemirror-BuAQiUVf.js → arize_phoenix-7.1.1/src/phoenix/server/static/assets/vendor-codemirror-WrxmCiOZ.js +1 -1
  27. arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-recharts-Cl9dK5tC.js → arize_phoenix-7.1.1/src/phoenix/server/static/assets/vendor-recharts-Bj7q9ORc.js +1 -1
  28. arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-shiki-CazYUixL.js → arize_phoenix-7.1.1/src/phoenix/server/static/assets/vendor-shiki-RnWcZtzE.js +1 -1
  29. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/types.py +5 -5
  30. arize_phoenix-7.1.1/src/phoenix/version.py +1 -0
  31. arize_phoenix-7.0.1/src/phoenix/server/api/types/DataQualityMetric.py +0 -22
  32. arize_phoenix-7.0.1/src/phoenix/server/api/types/PerformanceMetric.py +0 -13
  33. arize_phoenix-7.0.1/src/phoenix/server/static/.vite/manifest.json +0 -87
  34. arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-Cb3zlNNd.js +0 -894
  35. arize_phoenix-7.0.1/src/phoenix/version.py +0 -1
  36. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/.gitignore +0 -0
  37. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/IP_NOTICE +0 -0
  38. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/LICENSE +0 -0
  39. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/__init__.py +0 -0
  40. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/auth.py +0 -0
  41. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/config.py +0 -0
  42. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/core/__init__.py +0 -0
  43. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/core/embedding_dimension.py +0 -0
  44. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/core/model.py +0 -0
  45. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/core/model_schema.py +0 -0
  46. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/core/model_schema_adapter.py +0 -0
  47. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/datetime_utils.py +0 -0
  48. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/README.md +0 -0
  49. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/__init__.py +0 -0
  50. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/alembic.ini +0 -0
  51. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/bulk_inserter.py +0 -0
  52. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/engines.py +0 -0
  53. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/enums.py +0 -0
  54. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/facilitator.py +0 -0
  55. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/helpers.py +0 -0
  56. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/__init__.py +0 -0
  57. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/constants.py +0 -0
  58. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/dataset.py +0 -0
  59. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/document_annotation.py +0 -0
  60. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/evaluation.py +0 -0
  61. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/helpers.py +0 -0
  62. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/span.py +0 -0
  63. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/span_annotation.py +0 -0
  64. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  65. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/insertion/types.py +0 -0
  66. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrate.py +0 -0
  67. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/__init__.py +0 -0
  68. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  69. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  70. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/env.py +0 -0
  71. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/script.py.mako +0 -0
  72. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  73. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  74. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  75. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  76. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  77. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/db/models.py +0 -0
  78. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/exceptions.py +0 -0
  79. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/__init__.py +0 -0
  80. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  81. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/evaluators/base.py +0 -0
  82. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  83. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  84. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/evaluators/utils.py +0 -0
  85. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/functions.py +0 -0
  86. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/tracing.py +0 -0
  87. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/types.py +0 -0
  88. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/experiments/utils.py +0 -0
  89. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/inferences/__init__.py +0 -0
  90. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/inferences/errors.py +0 -0
  91. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/inferences/fixtures.py +0 -0
  92. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/inferences/inferences.py +0 -0
  93. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/inferences/schema.py +0 -0
  94. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/inferences/validation.py +0 -0
  95. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/logging/__init__.py +0 -0
  96. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/logging/_config.py +0 -0
  97. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/logging/_filter.py +0 -0
  98. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/logging/_formatter.py +0 -0
  99. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/metrics/README.md +0 -0
  100. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/metrics/__init__.py +0 -0
  101. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/metrics/binning.py +0 -0
  102. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/metrics/metrics.py +0 -0
  103. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/metrics/mixins.py +0 -0
  104. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  105. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/metrics/timeseries.py +0 -0
  106. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/metrics/wrappers.py +0 -0
  107. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/pointcloud/__init__.py +0 -0
  108. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/pointcloud/clustering.py +0 -0
  109. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/pointcloud/pointcloud.py +0 -0
  110. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/pointcloud/projectors.py +0 -0
  111. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  112. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/py.typed +0 -0
  113. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/__init__.py +0 -0
  114. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/README.md +0 -0
  115. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/__init__.py +0 -0
  116. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  117. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  118. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  119. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  120. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  121. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  122. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  123. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  124. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  125. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  126. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  127. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  128. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  129. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  130. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  131. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  132. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  133. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  134. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  135. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  136. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  137. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  138. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  139. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  140. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  141. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  142. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  143. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  144. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  145. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  146. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  147. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  148. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/dataloaders/users.py +0 -0
  149. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/exceptions.py +0 -0
  150. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/helpers/__init__.py +0 -0
  151. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  152. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  153. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  154. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  155. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  156. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  157. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  158. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  159. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  160. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  161. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  162. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  163. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  164. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  165. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  166. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  167. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  168. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  169. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  170. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  171. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  172. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  173. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  174. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  175. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  176. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  177. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  178. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  179. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  180. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  181. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  182. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/TemplateOptions.py +0 -0
  183. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  184. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  185. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  186. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/input_types/__init__.py +0 -0
  187. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/interceptor.py +0 -0
  188. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/__init__.py +0 -0
  189. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  190. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  191. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  192. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/openapi/__init__.py +0 -0
  193. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/openapi/main.py +0 -0
  194. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/openapi/schema.py +0 -0
  195. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/queries.py +0 -0
  196. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/__init__.py +0 -0
  197. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/auth.py +0 -0
  198. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/embeddings.py +0 -0
  199. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/oauth2.py +0 -0
  200. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/utils.py +0 -0
  201. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  202. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  203. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  204. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  205. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  206. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  207. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  208. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  209. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  210. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  211. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/schema.py +0 -0
  212. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Annotation.py +0 -0
  213. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  214. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  215. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ApiKey.py +0 -0
  216. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  217. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  218. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  219. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Cluster.py +0 -0
  220. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  221. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Dataset.py +0 -0
  222. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  223. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  224. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  225. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  226. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Dimension.py +0 -0
  227. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  228. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  229. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DimensionType.py +0 -0
  230. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  231. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  232. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  233. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  234. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  235. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Evaluation.py +0 -0
  236. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  237. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Event.py +0 -0
  238. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  239. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  240. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Experiment.py +0 -0
  241. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  242. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  243. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  244. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  245. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  246. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Functionality.py +0 -0
  247. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  248. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  249. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Inferences.py +0 -0
  250. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  251. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  252. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/MimeType.py +0 -0
  253. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Model.py +0 -0
  254. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/NumericRange.py +0 -0
  255. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Project.py +0 -0
  256. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  257. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  258. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Retrieval.py +0 -0
  259. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  260. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Segments.py +0 -0
  261. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/SortDir.py +0 -0
  262. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/Span.py +0 -0
  263. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  264. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  265. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  266. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/TemplateLanguage.py +0 -0
  267. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  268. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  269. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  270. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/User.py +0 -0
  271. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  272. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/UserRole.py +0 -0
  273. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  274. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  275. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/__init__.py +0 -0
  276. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/node.py +0 -0
  277. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/types/pagination.py +0 -0
  278. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/api/utils.py +0 -0
  279. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/app.py +0 -0
  280. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/bearer_auth.py +0 -0
  281. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/dml_event.py +0 -0
  282. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/dml_event_handler.py +0 -0
  283. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/email/__init__.py +0 -0
  284. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/email/sender.py +0 -0
  285. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/email/templates/__init__.py +0 -0
  286. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/email/templates/password_reset.html +0 -0
  287. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/email/types.py +0 -0
  288. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/grpc_server.py +0 -0
  289. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/jwt_store.py +0 -0
  290. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/main.py +0 -0
  291. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/oauth2.py +0 -0
  292. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/openapi/__init__.py +0 -0
  293. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/prometheus.py +0 -0
  294. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/rate_limiters.py +0 -0
  295. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  296. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  297. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  298. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  299. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  300. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  301. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  302. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  303. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  304. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  305. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/favicon.ico +0 -0
  306. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/static/modernizr.js +0 -0
  307. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/telemetry.py +0 -0
  308. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/templates/__init__.py +0 -0
  309. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/templates/index.html +0 -0
  310. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/server/thread_server.py +0 -0
  311. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/services.py +0 -0
  312. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/session/__init__.py +0 -0
  313. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/session/client.py +0 -0
  314. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/session/data_extractor.py +0 -0
  315. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/session/evaluation.py +0 -0
  316. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/session/session.py +0 -0
  317. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/settings.py +0 -0
  318. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/__init__.py +0 -0
  319. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/attributes.py +0 -0
  320. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/dsl/README.md +0 -0
  321. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/dsl/__init__.py +0 -0
  322. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/dsl/filter.py +0 -0
  323. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/dsl/helpers.py +0 -0
  324. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/dsl/query.py +0 -0
  325. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/errors.py +0 -0
  326. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/evaluation_conventions.py +0 -0
  327. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/exporter.py +0 -0
  328. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/fixtures.py +0 -0
  329. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/otel.py +0 -0
  330. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/projects.py +0 -0
  331. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/schemas.py +0 -0
  332. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/span_evaluations.py +0 -0
  333. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/span_json_decoder.py +0 -0
  334. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/span_json_encoder.py +0 -0
  335. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/trace_dataset.py +0 -0
  336. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/utils.py +0 -0
  337. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/v1/__init__.py +0 -0
  338. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  339. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  340. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/__init__.py +0 -0
  341. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/client.py +0 -0
  342. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/deprecation.py +0 -0
  343. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/error_handling.py +0 -0
  344. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/json.py +0 -0
  345. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/logging.py +0 -0
  346. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/project.py +0 -0
  347. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/re.py +0 -0
  348. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/span_store.py +0 -0
  349. {arize_phoenix-7.0.1 → arize_phoenix-7.1.1}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 7.0.1
3
+ Version: 7.1.1
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
@@ -13,7 +13,8 @@ Classifier: Programming Language :: Python :: 3.9
13
13
  Classifier: Programming Language :: Python :: 3.10
14
14
  Classifier: Programming Language :: Python :: 3.11
15
15
  Classifier: Programming Language :: Python :: 3.12
16
- Requires-Python: <3.13,>=3.9
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Requires-Python: <3.14,>=3.9
17
18
  Requires-Dist: aioitertools
18
19
  Requires-Dist: aiosqlite
19
20
  Requires-Dist: alembic<2,>=1.3.0
@@ -44,13 +45,13 @@ Requires-Dist: scipy
44
45
  Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.4
45
46
  Requires-Dist: sqlean-py>=3.45.1
46
47
  Requires-Dist: starlette
47
- Requires-Dist: strawberry-graphql==0.247.0
48
+ Requires-Dist: strawberry-graphql==0.253.1
48
49
  Requires-Dist: tqdm
49
50
  Requires-Dist: typing-extensions>=4.6
50
51
  Requires-Dist: uvicorn
51
52
  Requires-Dist: websockets
52
- Requires-Dist: wrapt; sys_platform != 'darwin'
53
- Requires-Dist: wrapt<1.17; sys_platform == 'darwin'
53
+ Requires-Dist: wrapt<1.17; sys_platform == 'darwin' and platform_machine == 'x86_64'
54
+ Requires-Dist: wrapt>=1.17; sys_platform != 'darwin' or platform_machine != 'x86_64'
54
55
  Provides-Extra: container
55
56
  Requires-Dist: anthropic; extra == 'container'
56
57
  Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
@@ -66,7 +67,7 @@ Requires-Dist: opentelemetry-sdk; extra == 'container'
66
67
  Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
67
68
  Requires-Dist: prometheus-client; extra == 'container'
68
69
  Requires-Dist: py-grpc-prometheus; extra == 'container'
69
- Requires-Dist: strawberry-graphql[opentelemetry]==0.247.0; extra == 'container'
70
+ Requires-Dist: strawberry-graphql[opentelemetry]==0.253.1; extra == 'container'
70
71
  Requires-Dist: umap-learn; extra == 'container'
71
72
  Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
72
73
  Provides-Extra: dev
@@ -97,7 +98,7 @@ 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
100
  Requires-Dist: ruff==0.6.9; extra == 'dev'
100
- Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.247.0; extra == 'dev'
101
+ Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.253.1; extra == 'dev'
101
102
  Requires-Dist: tabulate; extra == 'dev'
102
103
  Requires-Dist: tox-uv==1.11.3; extra == 'dev'
103
104
  Requires-Dist: tox==4.18.1; extra == 'dev'
@@ -198,7 +199,7 @@ Phoenix container images are available via [Docker Hub](https://hub.docker.com/r
198
199
  | [Self-Hosting](https://docs.arize.com/phoenix/deployment) | ✅ |
199
200
  | Jupyter Notebooks | ✅ |
200
201
  | [Prompt Playground](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts) | ✅ |
201
- | [Sessions](https://github.com/Arize-ai/phoenix/issues/2619) | In Progress 🚧 |
202
+ | [Sessions](https://docs.arize.com/phoenix/tracing/how-to-tracing/setup-sessions) | |
202
203
  | Prompt Management | Coming soon ⏱️ |
203
204
 
204
205
  ## Tracing Integrations
@@ -74,7 +74,7 @@ Phoenix container images are available via [Docker Hub](https://hub.docker.com/r
74
74
  | [Self-Hosting](https://docs.arize.com/phoenix/deployment) | ✅ |
75
75
  | Jupyter Notebooks | ✅ |
76
76
  | [Prompt Playground](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts) | ✅ |
77
- | [Sessions](https://github.com/Arize-ai/phoenix/issues/2619) | In Progress 🚧 |
77
+ | [Sessions](https://docs.arize.com/phoenix/tracing/how-to-tracing/setup-sessions) | |
78
78
  | Prompt Management | Coming soon ⏱️ |
79
79
 
80
80
  ## Tracing Integrations
@@ -2,7 +2,7 @@
2
2
  name = "arize-phoenix"
3
3
  description = "AI Observability and Evaluation"
4
4
  readme = "README.md"
5
- requires-python = ">=3.9, <3.13"
5
+ requires-python = ">=3.9, <3.14"
6
6
  license = {text="Elastic-2.0"}
7
7
  license-files = { paths = ["LICENSE", "IP_NOTICE"] }
8
8
  keywords = [
@@ -19,6 +19,7 @@ classifiers = [
19
19
  "Programming Language :: Python :: 3.10",
20
20
  "Programming Language :: Python :: 3.11",
21
21
  "Programming Language :: Python :: 3.12",
22
+ "Programming Language :: Python :: 3.13",
22
23
  ]
23
24
  dependencies = [
24
25
  "scikit-learn",
@@ -28,12 +29,12 @@ dependencies = [
28
29
  "starlette",
29
30
  "uvicorn",
30
31
  "psutil",
31
- "strawberry-graphql==0.247.0", # need to pin version because we're monkey-patching
32
+ "strawberry-graphql==0.253.1", # need to pin version because we're monkey-patching
32
33
  "pyarrow",
33
34
  "typing-extensions>=4.6",
34
35
  "scipy",
35
- "wrapt<1.17; sys_platform == 'darwin'",
36
- "wrapt; sys_platform != 'darwin'",
36
+ "wrapt<1.17; sys_platform == 'darwin' and platform_machine == 'x86_64'",
37
+ "wrapt>=1.17; sys_platform != 'darwin' or platform_machine != 'x86_64'",
37
38
  "protobuf>=3.20.2, <6.0",
38
39
  "grpcio",
39
40
  "grpc-interceptor",
@@ -87,7 +88,7 @@ dev = [
87
88
  "pytest-postgresql",
88
89
  "asyncpg",
89
90
  "psycopg[binary,pool]",
90
- "strawberry-graphql[debug-server,opentelemetry]==0.247.0", # need to pin version because we're monkey-patching
91
+ "strawberry-graphql[debug-server,opentelemetry]==0.253.1", # need to pin version because we're monkey-patching
91
92
  "pre-commit",
92
93
  "arize[AutoEmbeddings, LLM_Evaluation]",
93
94
  "llama-index>=0.10.3",
@@ -133,7 +134,7 @@ container = [
133
134
  "opentelemetry-instrumentation-sqlalchemy",
134
135
  "opentelemetry-instrumentation-grpc",
135
136
  "py-grpc-prometheus",
136
- "strawberry-graphql[opentelemetry]==0.247.0", # need to pin version because we're monkey-patching
137
+ "strawberry-graphql[opentelemetry]==0.253.1", # need to pin version because we're monkey-patching
137
138
  "uvloop; platform_system != 'Windows'",
138
139
  "fast-hdbscan>=0.2.0",
139
140
  "numba>=0.60.0", # https://github.com/astral-sh/uv/issues/6281
@@ -229,7 +230,7 @@ dependencies = [
229
230
  "py-grpc-prometheus",
230
231
  "pypistats", # this is needed to type-check third-party packages
231
232
  "requests", # this is needed to type-check third-party packages
232
- "strawberry-graphql[opentelemetry]==0.247.0", # need to pin version because we're monkey-patching
233
+ "strawberry-graphql[opentelemetry]==0.253.1", # need to pin version because we're monkey-patching
233
234
  "tenacity",
234
235
  "types-cachetools",
235
236
  "types-protobuf",
@@ -20,6 +20,18 @@ class IsNotReadOnly(Authorization):
20
20
  return not info.context.read_only
21
21
 
22
22
 
23
+ class IsLocked(Authorization):
24
+ """
25
+ Disables mutations and subscriptions that create or update data but allows
26
+ queries and delete mutations.
27
+ """
28
+
29
+ message = "Operations that write or modify data are locked"
30
+
31
+ def has_permission(self, source: Any, info: Info, **kwargs: Any) -> bool:
32
+ return not info.context.locked
33
+
34
+
23
35
  MSG_ADMIN_ONLY = "Only admin can perform this action"
24
36
 
25
37
 
@@ -108,6 +108,7 @@ class Context(BaseContext):
108
108
  event_queue: CanPutItem[DmlEvent] = _NoOp()
109
109
  corpus: Optional[Model] = None
110
110
  read_only: bool = False
111
+ locked: bool = False
111
112
  auth_enabled: bool = False
112
113
  secret: Optional[str] = None
113
114
  token_store: Optional[TokenStore] = None
@@ -772,6 +772,7 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
772
772
  provider_key=GenerativeProviderKey.GEMINI,
773
773
  model_names=[
774
774
  PROVIDER_DEFAULT,
775
+ "gemini-2.0-flash-exp",
775
776
  "gemini-1.5-flash",
776
777
  "gemini-1.5-flash-8b",
777
778
  "gemini-1.5-pro",
@@ -8,7 +8,10 @@ from typing_extensions import Annotated
8
8
  from phoenix.core.model_schema import Column
9
9
  from phoenix.metrics import Metric
10
10
  from phoenix.metrics.mixins import UnaryOperator
11
- from phoenix.server.api.types.DataQualityMetric import DataQualityMetric
11
+ from phoenix.server.api.types.DataQualityMetric import (
12
+ DATA_QUALITY_METRIC_FACTORIES,
13
+ DataQualityMetric,
14
+ )
12
15
 
13
16
 
14
17
  @strawberry.input
@@ -26,7 +29,7 @@ class DataQualityMetricInput:
26
29
  metric_instance: strawberry.Private[Metric] = field(init=False)
27
30
 
28
31
  def __post_init__(self) -> None:
29
- metric_instance = self.metric.value()
32
+ metric_instance = DATA_QUALITY_METRIC_FACTORIES[self.metric]()
30
33
  if isinstance(metric_instance, UnaryOperator):
31
34
  if not isinstance(self.column_name, str):
32
35
  raise ValueError(f"column name must not be null for {self.metric.name}")
@@ -3,7 +3,10 @@ import strawberry
3
3
  from phoenix.core.model_schema import ACTUAL_LABEL, PREDICTION_LABEL, Column, Model
4
4
  from phoenix.metrics import Metric
5
5
  from phoenix.metrics.mixins import EvaluationMetric
6
- from phoenix.server.api.types.PerformanceMetric import PerformanceMetric
6
+ from phoenix.server.api.types.PerformanceMetric import (
7
+ PERFORMANCE_METRIC_FUNCTIONS,
8
+ PerformanceMetric,
9
+ )
7
10
 
8
11
 
9
12
  @strawberry.input
@@ -14,5 +17,5 @@ class PerformanceMetricInput:
14
17
  return EvaluationMetric(
15
18
  actual=Column(model[ACTUAL_LABEL].name),
16
19
  predicted=Column(model[PREDICTION_LABEL].name),
17
- eval=self.metric.value,
20
+ eval=PERFORMANCE_METRIC_FUNCTIONS[self.metric],
18
21
  )
@@ -8,7 +8,7 @@ from strawberry.relay import GlobalID
8
8
  from strawberry.types import Info
9
9
 
10
10
  from phoenix.db import enums, models
11
- from phoenix.server.api.auth import IsAdmin, IsNotReadOnly
11
+ from phoenix.server.api.auth import IsAdmin, IsLocked, IsNotReadOnly
12
12
  from phoenix.server.api.context import Context
13
13
  from phoenix.server.api.exceptions import Unauthorized
14
14
  from phoenix.server.api.queries import Query
@@ -60,7 +60,7 @@ class DeleteApiKeyMutationPayload:
60
60
 
61
61
  @strawberry.type
62
62
  class ApiKeyMutationMixin:
63
- @strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin]) # type: ignore
63
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin, IsLocked]) # type: ignore
64
64
  async def create_system_api_key(
65
65
  self, info: Info[Context, None], input: CreateApiKeyInput
66
66
  ) -> CreateSystemApiKeyMutationPayload:
@@ -101,7 +101,7 @@ class ApiKeyMutationMixin:
101
101
  query=Query(),
102
102
  )
103
103
 
104
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
104
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
105
105
  async def create_user_api_key(
106
106
  self, info: Info[Context, None], input: CreateUserApiKeyInput
107
107
  ) -> CreateUserApiKeyMutationPayload:
@@ -25,7 +25,7 @@ from typing_extensions import assert_never
25
25
  from phoenix.datetime_utils import local_now, normalize_datetime
26
26
  from phoenix.db import models
27
27
  from phoenix.db.helpers import get_dataset_example_revisions
28
- from phoenix.server.api.auth import IsNotReadOnly
28
+ from phoenix.server.api.auth import IsLocked, IsNotReadOnly
29
29
  from phoenix.server.api.context import Context
30
30
  from phoenix.server.api.exceptions import BadRequest, CustomGraphQLError, NotFound
31
31
  from phoenix.server.api.helpers.dataset_helpers import get_dataset_example_output
@@ -120,7 +120,7 @@ class ChatCompletionOverDatasetMutationPayload:
120
120
 
121
121
  @strawberry.type
122
122
  class ChatCompletionMutationMixin:
123
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
123
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
124
124
  @classmethod
125
125
  async def chat_completion_over_dataset(
126
126
  cls,
@@ -275,7 +275,7 @@ class ChatCompletionMutationMixin:
275
275
  payload.examples.append(example_payload)
276
276
  return payload
277
277
 
278
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
278
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
279
279
  @classmethod
280
280
  async def chat_completion(
281
281
  cls, info: Info[Context, None], input: ChatCompletionInput
@@ -12,7 +12,7 @@ from strawberry.types import Info
12
12
 
13
13
  from phoenix.db import models
14
14
  from phoenix.db.helpers import get_eval_trace_ids_for_datasets, get_project_names_for_datasets
15
- from phoenix.server.api.auth import IsNotReadOnly
15
+ from phoenix.server.api.auth import IsLocked, IsNotReadOnly
16
16
  from phoenix.server.api.context import Context
17
17
  from phoenix.server.api.exceptions import BadRequest, NotFound
18
18
  from phoenix.server.api.helpers.dataset_helpers import (
@@ -44,7 +44,7 @@ class DatasetMutationPayload:
44
44
 
45
45
  @strawberry.type
46
46
  class DatasetMutationMixin:
47
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
47
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
48
48
  async def create_dataset(
49
49
  self,
50
50
  info: Info[Context, None],
@@ -67,7 +67,7 @@ class DatasetMutationMixin:
67
67
  info.context.event_queue.put(DatasetInsertEvent((dataset.id,)))
68
68
  return DatasetMutationPayload(dataset=to_gql_dataset(dataset))
69
69
 
70
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
70
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
71
71
  async def patch_dataset(
72
72
  self,
73
73
  info: Info[Context, None],
@@ -96,7 +96,7 @@ class DatasetMutationMixin:
96
96
  info.context.event_queue.put(DatasetInsertEvent((dataset.id,)))
97
97
  return DatasetMutationPayload(dataset=to_gql_dataset(dataset))
98
98
 
99
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
99
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
100
100
  async def add_spans_to_dataset(
101
101
  self,
102
102
  info: Info[Context, None],
@@ -205,7 +205,7 @@ class DatasetMutationMixin:
205
205
  info.context.event_queue.put(DatasetInsertEvent((dataset.id,)))
206
206
  return DatasetMutationPayload(dataset=to_gql_dataset(dataset))
207
207
 
208
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
208
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
209
209
  async def add_examples_to_dataset(
210
210
  self, info: Info[Context, None], input: AddExamplesToDatasetInput
211
211
  ) -> DatasetMutationPayload:
@@ -331,7 +331,7 @@ class DatasetMutationMixin:
331
331
  info.context.event_queue.put(DatasetInsertEvent((dataset.id,)))
332
332
  return DatasetMutationPayload(dataset=to_gql_dataset(dataset))
333
333
 
334
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
334
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
335
335
  async def delete_dataset(
336
336
  self,
337
337
  info: Info[Context, None],
@@ -362,7 +362,7 @@ class DatasetMutationMixin:
362
362
  info.context.event_queue.put(DatasetDeleteEvent((dataset.id,)))
363
363
  return DatasetMutationPayload(dataset=to_gql_dataset(dataset))
364
364
 
365
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
365
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
366
366
  async def patch_dataset_examples(
367
367
  self,
368
368
  info: Info[Context, None],
@@ -454,7 +454,7 @@ class DatasetMutationMixin:
454
454
  info.context.event_queue.put(DatasetInsertEvent((dataset.id,)))
455
455
  return DatasetMutationPayload(dataset=to_gql_dataset(dataset))
456
456
 
457
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
457
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
458
458
  async def delete_dataset_examples(
459
459
  self, info: Info[Context, None], input: DeleteDatasetExamplesInput
460
460
  ) -> DatasetMutationPayload:
@@ -6,7 +6,7 @@ from strawberry import UNSET
6
6
  from strawberry.types import Info
7
7
 
8
8
  from phoenix.db import models
9
- from phoenix.server.api.auth import IsNotReadOnly
9
+ from phoenix.server.api.auth import IsLocked, IsNotReadOnly
10
10
  from phoenix.server.api.context import Context
11
11
  from phoenix.server.api.input_types.CreateSpanAnnotationInput import CreateSpanAnnotationInput
12
12
  from phoenix.server.api.input_types.DeleteAnnotationsInput import DeleteAnnotationsInput
@@ -25,7 +25,7 @@ class SpanAnnotationMutationPayload:
25
25
 
26
26
  @strawberry.type
27
27
  class SpanAnnotationMutationMixin:
28
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
28
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
29
29
  async def create_span_annotations(
30
30
  self, info: Info[Context, None], input: list[CreateSpanAnnotationInput]
31
31
  ) -> SpanAnnotationMutationPayload:
@@ -59,7 +59,7 @@ class SpanAnnotationMutationMixin:
59
59
  query=Query(),
60
60
  )
61
61
 
62
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
62
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
63
63
  async def patch_span_annotations(
64
64
  self, info: Info[Context, None], input: list[PatchAnnotationInput]
65
65
  ) -> SpanAnnotationMutationPayload:
@@ -6,7 +6,7 @@ from strawberry import UNSET
6
6
  from strawberry.types import Info
7
7
 
8
8
  from phoenix.db import models
9
- from phoenix.server.api.auth import IsNotReadOnly
9
+ from phoenix.server.api.auth import IsLocked, IsNotReadOnly
10
10
  from phoenix.server.api.context import Context
11
11
  from phoenix.server.api.input_types.CreateTraceAnnotationInput import CreateTraceAnnotationInput
12
12
  from phoenix.server.api.input_types.DeleteAnnotationsInput import DeleteAnnotationsInput
@@ -25,7 +25,7 @@ class TraceAnnotationMutationPayload:
25
25
 
26
26
  @strawberry.type
27
27
  class TraceAnnotationMutationMixin:
28
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
28
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
29
29
  async def create_trace_annotations(
30
30
  self, info: Info[Context, None], input: list[CreateTraceAnnotationInput]
31
31
  ) -> TraceAnnotationMutationPayload:
@@ -59,7 +59,7 @@ class TraceAnnotationMutationMixin:
59
59
  query=Query(),
60
60
  )
61
61
 
62
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
62
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
63
63
  async def patch_trace_annotations(
64
64
  self, info: Info[Context, None], input: list[PatchAnnotationInput]
65
65
  ) -> TraceAnnotationMutationPayload:
@@ -22,7 +22,7 @@ from phoenix.auth import (
22
22
  validate_password_format,
23
23
  )
24
24
  from phoenix.db import enums, models
25
- from phoenix.server.api.auth import IsAdmin, IsNotReadOnly
25
+ from phoenix.server.api.auth import IsAdmin, IsLocked, IsNotReadOnly
26
26
  from phoenix.server.api.context import Context
27
27
  from phoenix.server.api.exceptions import Conflict, NotFound, Unauthorized
28
28
  from phoenix.server.api.input_types.UserRoleInput import UserRoleInput
@@ -81,7 +81,7 @@ class UserMutationPayload:
81
81
 
82
82
  @strawberry.type
83
83
  class UserMutationMixin:
84
- @strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin]) # type: ignore
84
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin, IsLocked]) # type: ignore
85
85
  async def create_user(
86
86
  self,
87
87
  info: Info[Context, None],
@@ -112,7 +112,7 @@ class UserMutationMixin:
112
112
  raise Conflict(_user_operation_error_message(error))
113
113
  return UserMutationPayload(user=to_gql_user(user))
114
114
 
115
- @strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin]) # type: ignore
115
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin, IsLocked]) # type: ignore
116
116
  async def patch_user(
117
117
  self,
118
118
  info: Info[Context, None],
@@ -155,7 +155,7 @@ class UserMutationMixin:
155
155
  await info.context.log_out(user.id)
156
156
  return UserMutationPayload(user=to_gql_user(user))
157
157
 
158
- @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
158
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
159
159
  async def patch_viewer(
160
160
  self,
161
161
  info: Info[Context, None],
@@ -196,7 +196,7 @@ class UserMutationMixin:
196
196
  response.delete_cookie(PHOENIX_ACCESS_TOKEN_COOKIE_NAME)
197
197
  return UserMutationPayload(user=to_gql_user(user))
198
198
 
199
- @strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin]) # type: ignore
199
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsAdmin, IsLocked]) # type: ignore
200
200
  async def delete_users(
201
201
  self,
202
202
  info: Info[Context, None],
@@ -25,7 +25,7 @@ from typing_extensions import TypeAlias, assert_never
25
25
 
26
26
  from phoenix.datetime_utils import local_now, normalize_datetime
27
27
  from phoenix.db import models
28
- from phoenix.server.api.auth import IsNotReadOnly
28
+ from phoenix.server.api.auth import IsLocked, IsNotReadOnly
29
29
  from phoenix.server.api.context import Context
30
30
  from phoenix.server.api.exceptions import BadRequest, CustomGraphQLError, NotFound
31
31
  from phoenix.server.api.helpers.playground_clients import (
@@ -89,7 +89,7 @@ PLAYGROUND_PROJECT_NAME = "playground"
89
89
 
90
90
  @strawberry.type
91
91
  class Subscription:
92
- @strawberry.subscription(permission_classes=[IsNotReadOnly]) # type: ignore
92
+ @strawberry.subscription(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
93
93
  async def chat_completion(
94
94
  self, info: Info[Context, None], input: ChatCompletionInput
95
95
  ) -> AsyncIterator[ChatCompletionSubscriptionPayload]:
@@ -167,7 +167,7 @@ class Subscription:
167
167
  info.context.event_queue.put(SpanInsertEvent(ids=(playground_project_id,)))
168
168
  yield ChatCompletionSubscriptionResult(span=to_gql_span(db_span))
169
169
 
170
- @strawberry.subscription(permission_classes=[IsNotReadOnly]) # type: ignore
170
+ @strawberry.subscription(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
171
171
  async def chat_completion_over_dataset(
172
172
  self, info: Info[Context, None], input: ChatCompletionOverDatasetInput
173
173
  ) -> AsyncIterator[ChatCompletionSubscriptionPayload]:
@@ -0,0 +1,40 @@
1
+ from enum import Enum, auto
2
+ from functools import partial
3
+ from typing import Callable, Mapping, cast
4
+
5
+ import strawberry
6
+
7
+ from phoenix.metrics import Metric
8
+ from phoenix.metrics.metrics import Cardinality, Count, Max, Mean, Min, PercentEmpty, Quantile, Sum
9
+
10
+
11
+ @strawberry.enum
12
+ class DataQualityMetric(Enum):
13
+ cardinality = auto()
14
+ percentEmpty = auto()
15
+ mean = auto()
16
+ sum = auto()
17
+ min = auto()
18
+ max = auto()
19
+ count = auto()
20
+ p01 = auto()
21
+ p25 = auto()
22
+ p50 = auto()
23
+ p75 = auto()
24
+ p99 = auto()
25
+
26
+
27
+ DATA_QUALITY_METRIC_FACTORIES: Mapping[DataQualityMetric, Callable[[], Metric]] = {
28
+ DataQualityMetric.cardinality: cast(Callable[[], Metric], Cardinality),
29
+ DataQualityMetric.percentEmpty: cast(Callable[[], Metric], PercentEmpty),
30
+ DataQualityMetric.mean: cast(Callable[[], Metric], Mean),
31
+ DataQualityMetric.sum: cast(Callable[[], Metric], Sum),
32
+ DataQualityMetric.min: cast(Callable[[], Metric], Min),
33
+ DataQualityMetric.max: cast(Callable[[], Metric], Max),
34
+ DataQualityMetric.count: cast(Callable[[], Metric], Count),
35
+ DataQualityMetric.p01: cast(Callable[[], Metric], partial(Quantile, probability=0.01)),
36
+ DataQualityMetric.p25: cast(Callable[[], Metric], partial(Quantile, probability=0.25)),
37
+ DataQualityMetric.p50: cast(Callable[[], Metric], partial(Quantile, probability=0.50)),
38
+ DataQualityMetric.p75: cast(Callable[[], Metric], partial(Quantile, probability=0.75)),
39
+ DataQualityMetric.p99: cast(Callable[[], Metric], partial(Quantile, probability=0.99)),
40
+ }
@@ -0,0 +1,16 @@
1
+ from enum import Enum, auto
2
+ from typing import Callable, Mapping, cast
3
+
4
+ import strawberry
5
+
6
+ from phoenix.metrics.wrappers import SkEval
7
+
8
+
9
+ @strawberry.enum
10
+ class PerformanceMetric(Enum):
11
+ accuracyScore = auto()
12
+
13
+
14
+ PERFORMANCE_METRIC_FUNCTIONS: Mapping[PerformanceMetric, Callable[..., float]] = {
15
+ PerformanceMetric.accuracyScore: cast(Callable[..., float], SkEval.accuracy_score),
16
+ }
@@ -15,7 +15,10 @@ from phoenix.metrics.timeseries import timeseries
15
15
  from phoenix.server.api.input_types.Granularity import Granularity, to_timestamps
16
16
  from phoenix.server.api.input_types.TimeRange import TimeRange
17
17
  from phoenix.server.api.interceptor import GqlValueMediator
18
- from phoenix.server.api.types.DataQualityMetric import DataQualityMetric
18
+ from phoenix.server.api.types.DataQualityMetric import (
19
+ DATA_QUALITY_METRIC_FACTORIES,
20
+ DataQualityMetric,
21
+ )
19
22
  from phoenix.server.api.types.InferencesRole import InferencesRole
20
23
  from phoenix.server.api.types.ScalarDriftMetricEnum import ScalarDriftMetric
21
24
  from phoenix.server.api.types.VectorDriftMetricEnum import VectorDriftMetric
@@ -100,7 +103,7 @@ def get_data_quality_timeseries_data(
100
103
  granularity: Granularity,
101
104
  inferences_role: InferencesRole,
102
105
  ) -> list[TimeSeriesDataPoint]:
103
- metric_instance = metric.value()
106
+ metric_instance = DATA_QUALITY_METRIC_FACTORIES[metric]()
104
107
  if isinstance(metric_instance, UnaryOperator):
105
108
  metric_instance = replace(
106
109
  metric_instance,
@@ -36,6 +36,19 @@ class Trace(Node):
36
36
  start_time: datetime
37
37
  end_time: datetime
38
38
 
39
+ @strawberry.field
40
+ async def latency_ms(
41
+ self,
42
+ info: Info[Context, None],
43
+ ) -> Optional[float]:
44
+ async with info.context.db() as session:
45
+ latency = await session.scalar(
46
+ select(
47
+ models.Trace.latency_ms,
48
+ ).where(models.Trace.id == self.id_attr)
49
+ )
50
+ return latency
51
+
39
52
  @strawberry.field
40
53
  async def project_id(self) -> GlobalID:
41
54
  from phoenix.server.api.types.Project import Project
@@ -0,0 +1,87 @@
1
+ {
2
+ "_components-DaxEPah8.js": {
3
+ "file": "assets/components-DaxEPah8.js",
4
+ "name": "components",
5
+ "imports": [
6
+ "_vendor-DwOx_a-2.js",
7
+ "_pages-CY7Swxhi.js",
8
+ "_vendor-arizeai-BWSsCZNG.js",
9
+ "_vendor-codemirror-WrxmCiOZ.js",
10
+ "_vendor-three-DwGkEfCM.js"
11
+ ]
12
+ },
13
+ "_pages-CY7Swxhi.js": {
14
+ "file": "assets/pages-CY7Swxhi.js",
15
+ "name": "pages",
16
+ "imports": [
17
+ "_vendor-DwOx_a-2.js",
18
+ "_vendor-arizeai-BWSsCZNG.js",
19
+ "_components-DaxEPah8.js",
20
+ "_vendor-codemirror-WrxmCiOZ.js",
21
+ "_vendor-recharts-Bj7q9ORc.js"
22
+ ]
23
+ },
24
+ "_vendor-!~{003}~.js": {
25
+ "file": "assets/vendor-DxkFTwjz.css",
26
+ "src": "_vendor-!~{003}~.js"
27
+ },
28
+ "_vendor-DwOx_a-2.js": {
29
+ "file": "assets/vendor-DwOx_a-2.js",
30
+ "name": "vendor",
31
+ "imports": [
32
+ "_vendor-three-DwGkEfCM.js"
33
+ ],
34
+ "css": [
35
+ "assets/vendor-DxkFTwjz.css"
36
+ ]
37
+ },
38
+ "_vendor-arizeai-BWSsCZNG.js": {
39
+ "file": "assets/vendor-arizeai-BWSsCZNG.js",
40
+ "name": "vendor-arizeai",
41
+ "imports": [
42
+ "_vendor-DwOx_a-2.js"
43
+ ]
44
+ },
45
+ "_vendor-codemirror-WrxmCiOZ.js": {
46
+ "file": "assets/vendor-codemirror-WrxmCiOZ.js",
47
+ "name": "vendor-codemirror",
48
+ "imports": [
49
+ "_vendor-DwOx_a-2.js",
50
+ "_vendor-shiki-RnWcZtzE.js"
51
+ ]
52
+ },
53
+ "_vendor-recharts-Bj7q9ORc.js": {
54
+ "file": "assets/vendor-recharts-Bj7q9ORc.js",
55
+ "name": "vendor-recharts",
56
+ "imports": [
57
+ "_vendor-DwOx_a-2.js"
58
+ ]
59
+ },
60
+ "_vendor-shiki-RnWcZtzE.js": {
61
+ "file": "assets/vendor-shiki-RnWcZtzE.js",
62
+ "name": "vendor-shiki",
63
+ "imports": [
64
+ "_vendor-DwOx_a-2.js"
65
+ ]
66
+ },
67
+ "_vendor-three-DwGkEfCM.js": {
68
+ "file": "assets/vendor-three-DwGkEfCM.js",
69
+ "name": "vendor-three"
70
+ },
71
+ "index.tsx": {
72
+ "file": "assets/index-DxfKd3lv.js",
73
+ "name": "index",
74
+ "src": "index.tsx",
75
+ "isEntry": true,
76
+ "imports": [
77
+ "_vendor-DwOx_a-2.js",
78
+ "_vendor-arizeai-BWSsCZNG.js",
79
+ "_pages-CY7Swxhi.js",
80
+ "_components-DaxEPah8.js",
81
+ "_vendor-three-DwGkEfCM.js",
82
+ "_vendor-codemirror-WrxmCiOZ.js",
83
+ "_vendor-shiki-RnWcZtzE.js",
84
+ "_vendor-recharts-Bj7q9ORc.js"
85
+ ]
86
+ }
87
+ }