arize-phoenix 8.2.2__tar.gz → 8.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 (370) hide show
  1. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/.gitignore +3 -0
  2. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/PKG-INFO +3 -3
  3. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/pyproject.toml +2 -2
  4. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/config.py +32 -5
  5. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/models.py +1 -25
  6. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/context.py +4 -2
  7. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/__init__.py +2 -2
  8. arize_phoenix-8.2.2/src/phoenix/server/api/dataloaders/span_fields.py → arize_phoenix-8.3.0/src/phoenix/server/api/dataloaders/table_fields.py +21 -19
  9. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/playground_clients.py +4 -0
  10. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/prompts/models.py +1 -0
  11. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/queries.py +8 -17
  12. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Experiment.py +2 -4
  13. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ExperimentRun.py +2 -2
  14. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +2 -2
  15. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Project.py +67 -38
  16. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ProjectSession.py +2 -2
  17. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Span.py +31 -2
  18. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Trace.py +98 -30
  19. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/app.py +4 -2
  20. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/.vite/manifest.json +9 -9
  21. arize_phoenix-8.2.2/src/phoenix/server/static/assets/components-MeFAEc1z.js → arize_phoenix-8.3.0/src/phoenix/server/static/assets/components-T5K9z49d.js +3 -3
  22. arize_phoenix-8.2.2/src/phoenix/server/static/assets/index-BSRuZ-_J.js → arize_phoenix-8.3.0/src/phoenix/server/static/assets/index-DvHwFF8e.js +2 -2
  23. arize_phoenix-8.2.2/src/phoenix/server/static/assets/pages-NrL4hb9q.js → arize_phoenix-8.3.0/src/phoenix/server/static/assets/pages-CY3ZXSHj.js +375 -356
  24. arize_phoenix-8.3.0/src/phoenix/version.py +1 -0
  25. arize_phoenix-8.2.2/src/phoenix/version.py +0 -1
  26. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/IP_NOTICE +0 -0
  27. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/LICENSE +0 -0
  28. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/README.md +0 -0
  29. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/__init__.py +0 -0
  30. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/auth.py +0 -0
  31. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/core/__init__.py +0 -0
  32. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/core/embedding_dimension.py +0 -0
  33. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/core/model.py +0 -0
  34. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/core/model_schema.py +0 -0
  35. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  36. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/datetime_utils.py +0 -0
  37. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/README.md +0 -0
  38. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/__init__.py +0 -0
  39. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/alembic.ini +0 -0
  40. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/bulk_inserter.py +0 -0
  41. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/engines.py +0 -0
  42. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/enums.py +0 -0
  43. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/facilitator.py +0 -0
  44. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/helpers.py +0 -0
  45. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/__init__.py +0 -0
  46. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/constants.py +0 -0
  47. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/dataset.py +0 -0
  48. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  49. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  50. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/helpers.py +0 -0
  51. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/span.py +0 -0
  52. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  53. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  54. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/insertion/types.py +0 -0
  55. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrate.py +0 -0
  56. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/__init__.py +0 -0
  57. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  58. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  59. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/env.py +0 -0
  60. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  61. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  62. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  63. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  64. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  65. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  66. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  67. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/types/__init__.py +0 -0
  68. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/types/identifier.py +0 -0
  69. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/db/types/model_provider.py +0 -0
  70. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/exceptions.py +0 -0
  71. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/__init__.py +0 -0
  72. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  73. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  74. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  75. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  76. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  77. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/functions.py +0 -0
  78. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/tracing.py +0 -0
  79. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/types.py +0 -0
  80. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/experiments/utils.py +0 -0
  81. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/inferences/__init__.py +0 -0
  82. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/inferences/errors.py +0 -0
  83. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/inferences/fixtures.py +0 -0
  84. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/inferences/inferences.py +0 -0
  85. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/inferences/schema.py +0 -0
  86. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/inferences/validation.py +0 -0
  87. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/logging/__init__.py +0 -0
  88. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/logging/_config.py +0 -0
  89. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/logging/_filter.py +0 -0
  90. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/logging/_formatter.py +0 -0
  91. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/metrics/README.md +0 -0
  92. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/metrics/__init__.py +0 -0
  93. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/metrics/binning.py +0 -0
  94. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/metrics/metrics.py +0 -0
  95. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/metrics/mixins.py +0 -0
  96. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  97. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/metrics/timeseries.py +0 -0
  98. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/metrics/wrappers.py +0 -0
  99. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/pointcloud/__init__.py +0 -0
  100. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/pointcloud/clustering.py +0 -0
  101. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  102. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/pointcloud/projectors.py +0 -0
  103. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  104. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/py.typed +0 -0
  105. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/__init__.py +0 -0
  106. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/README.md +0 -0
  107. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/__init__.py +0 -0
  108. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/auth.py +0 -0
  109. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  110. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  111. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  112. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  113. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  114. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  115. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  116. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  117. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  118. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  119. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  120. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  121. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  122. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  123. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  124. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  125. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  126. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  127. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  128. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  129. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  130. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  131. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  132. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  133. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  134. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  135. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  136. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  137. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  138. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  139. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  140. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  141. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  142. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  143. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/exceptions.py +0 -0
  144. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  145. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  146. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  147. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  148. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  149. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  150. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  151. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  152. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  153. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  154. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  155. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  156. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  157. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  158. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  159. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  160. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  161. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  162. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  163. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  164. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  165. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  166. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  167. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  168. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  169. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  170. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  171. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  172. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  173. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  174. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  175. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  176. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  177. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  178. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  179. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  180. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  181. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  182. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  183. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  184. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  185. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  186. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  187. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  188. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  189. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/interceptor.py +0 -0
  190. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  191. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  192. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  193. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  194. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  195. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  196. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  197. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  198. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  199. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  200. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  201. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  202. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  203. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  204. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/openapi/main.py +0 -0
  205. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  206. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  207. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/auth.py +0 -0
  208. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  209. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  210. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/utils.py +0 -0
  211. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  212. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  213. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  214. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  215. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  216. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  217. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  218. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  219. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  220. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  221. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  222. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/schema.py +0 -0
  223. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/subscriptions.py +0 -0
  224. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  225. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  226. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  227. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  228. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  229. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  230. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  231. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  232. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  233. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  234. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  235. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  236. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  237. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  238. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  239. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  240. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  241. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  242. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  243. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  244. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  245. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  246. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  247. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  248. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  249. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  250. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Event.py +0 -0
  251. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  252. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  253. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  254. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  255. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  256. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  257. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  258. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  259. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  260. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  261. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  262. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  263. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  264. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Model.py +0 -0
  265. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  266. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  267. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Prompt.py +0 -0
  268. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  269. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  270. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  271. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  272. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  273. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  274. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  275. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  276. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/Segments.py +0 -0
  277. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  278. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  279. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  280. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  281. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  282. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  283. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  284. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  285. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  286. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/User.py +0 -0
  287. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  288. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  289. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  290. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  291. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/__init__.py +0 -0
  292. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/node.py +0 -0
  293. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/types/pagination.py +0 -0
  294. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/api/utils.py +0 -0
  295. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/bearer_auth.py +0 -0
  296. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/dml_event.py +0 -0
  297. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/dml_event_handler.py +0 -0
  298. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/email/__init__.py +0 -0
  299. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/email/sender.py +0 -0
  300. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  301. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  302. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/email/types.py +0 -0
  303. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/grpc_server.py +0 -0
  304. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/jwt_store.py +0 -0
  305. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/main.py +0 -0
  306. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/oauth2.py +0 -0
  307. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/openapi/__init__.py +0 -0
  308. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/prometheus.py +0 -0
  309. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/rate_limiters.py +0 -0
  310. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  311. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  312. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  313. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  314. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  315. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  316. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  317. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  318. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/assets/vendor-Cg6lcjUC.css +0 -0
  319. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/assets/vendor-Cqfydjep.js +0 -0
  320. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/assets/vendor-arizeai-WnerlUPN.js +0 -0
  321. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/assets/vendor-codemirror-D-ZZKLFq.js +0 -0
  322. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/assets/vendor-recharts-KY97ZPfK.js +0 -0
  323. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/assets/vendor-shiki-D5K9GnFn.js +0 -0
  324. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/assets/vendor-three-C-AGeJYv.js +0 -0
  325. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/favicon.ico +0 -0
  326. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/static/modernizr.js +0 -0
  327. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/telemetry.py +0 -0
  328. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/templates/__init__.py +0 -0
  329. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/templates/index.html +0 -0
  330. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/thread_server.py +0 -0
  331. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/server/types.py +0 -0
  332. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/services.py +0 -0
  333. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/session/__init__.py +0 -0
  334. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/session/client.py +0 -0
  335. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/session/data_extractor.py +0 -0
  336. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/session/evaluation.py +0 -0
  337. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/session/session.py +0 -0
  338. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/settings.py +0 -0
  339. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/__init__.py +0 -0
  340. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/attributes.py +0 -0
  341. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/dsl/README.md +0 -0
  342. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  343. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/dsl/filter.py +0 -0
  344. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  345. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/dsl/query.py +0 -0
  346. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/errors.py +0 -0
  347. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  348. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/exporter.py +0 -0
  349. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/fixtures.py +0 -0
  350. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/otel.py +0 -0
  351. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/projects.py +0 -0
  352. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/schemas.py +0 -0
  353. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/span_evaluations.py +0 -0
  354. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  355. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  356. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/trace_dataset.py +0 -0
  357. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/utils.py +0 -0
  358. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/v1/__init__.py +0 -0
  359. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  360. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  361. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/__init__.py +0 -0
  362. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/client.py +0 -0
  363. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/deprecation.py +0 -0
  364. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/error_handling.py +0 -0
  365. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/json.py +0 -0
  366. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/logging.py +0 -0
  367. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/project.py +0 -0
  368. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/re.py +0 -0
  369. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/span_store.py +0 -0
  370. {arize_phoenix-8.2.2 → arize_phoenix-8.3.0}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -13,6 +13,9 @@ sdist
13
13
  # Server static files
14
14
  /src/phoenix/server/static/*
15
15
 
16
+ # Docgen
17
+ /js/**/docs
18
+
16
19
  # Data files
17
20
  *.csv
18
21
  !tests/**/fixtures/*.csv
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 8.2.2
3
+ Version: 8.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
@@ -55,7 +55,7 @@ Requires-Dist: uvicorn
55
55
  Requires-Dist: websockets
56
56
  Requires-Dist: wrapt>=1.17.2
57
57
  Provides-Extra: container
58
- Requires-Dist: anthropic>=0.45.2; extra == 'container'
58
+ Requires-Dist: anthropic>=0.47.0; extra == 'container'
59
59
  Requires-Dist: fast-hdbscan>=0.2.0; extra == 'container'
60
60
  Requires-Dist: google-generativeai; extra == 'container'
61
61
  Requires-Dist: numba>=0.60.0; extra == 'container'
@@ -73,7 +73,7 @@ Requires-Dist: strawberry-graphql[opentelemetry]==0.253.1; extra == 'container'
73
73
  Requires-Dist: umap-learn; extra == 'container'
74
74
  Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
75
75
  Provides-Extra: dev
76
- Requires-Dist: anthropic; extra == 'dev'
76
+ Requires-Dist: anthropic>=0.47.0; extra == 'dev'
77
77
  Requires-Dist: arize[autoembeddings,llm-evaluation]; extra == 'dev'
78
78
  Requires-Dist: asgi-lifespan; extra == 'dev'
79
79
  Requires-Dist: asyncpg; extra == 'dev'
@@ -95,7 +95,7 @@ dev = [
95
95
  "langchain>=0.0.334",
96
96
  "litellm>=1.0.3,<1.57.5", # windows compatibility broken on 1.57.5 (https://github.com/BerriAI/litellm/issues/7677)
97
97
  "google-cloud-aiplatform>=1.3",
98
- "anthropic",
98
+ "anthropic>=0.47.0",
99
99
  "prometheus_client",
100
100
  "asgi-lifespan",
101
101
  "Faker>=30.1.0",
@@ -123,7 +123,7 @@ pg = [
123
123
  "psycopg[binary,pool]",
124
124
  ]
125
125
  container = [
126
- "anthropic>=0.45.2",
126
+ "anthropic>=0.47.0",
127
127
  "google-generativeai",
128
128
  "prometheus-client",
129
129
  "openai>=1.0.0",
@@ -54,6 +54,33 @@ Phoenix supports two types of database URLs:
54
54
  Note that if you plan on using SQLite, it's advised to to use a persistent volume
55
55
  and simply point the PHOENIX_WORKING_DIR to that volume.
56
56
  """
57
+ ENV_PHOENIX_POSTGRES_HOST = "PHOENIX_POSTGRES_HOST"
58
+ """
59
+ As an alternative to setting PHOENIX_SQL_DATABASE_URL, you can set the following
60
+ environment variables to connect to a PostgreSQL database:
61
+ - PHOENIX_POSTGRES_HOST
62
+ - PHOENIX_POSTGRES_PORT
63
+ - PHOENIX_POSTGRES_USER
64
+ - PHOENIX_POSTGRES_PASSWORD
65
+ - PHOENIX_POSTGRES_DB
66
+ """
67
+ ENV_PHOENIX_POSTGRES_PORT = "PHOENIX_POSTGRES_PORT"
68
+ """
69
+ Used with PHOENIX_POSTGRES_HOST to specify the port to use for the PostgreSQL database.
70
+ """
71
+ ENV_PHOENIX_POSTGRES_USER = "PHOENIX_POSTGRES_USER"
72
+ """
73
+ Used with PHOENIX_POSTGRES_HOST to specify the user to use for the PostgreSQL database (required).
74
+ """
75
+ ENV_PHOENIX_POSTGRES_PASSWORD = "PHOENIX_POSTGRES_PASSWORD"
76
+ """
77
+ Used with PHOENIX_POSTGRES_HOST to specify the password to use for the PostgreSQL database
78
+ (required).
79
+ """
80
+ ENV_PHOENIX_POSTGRES_DB = "PHOENIX_POSTGRES_DB"
81
+ """
82
+ Used with PHOENIX_POSTGRES_HOST to specify the database to use for the PostgreSQL database.
83
+ """
57
84
  ENV_PHOENIX_SQL_DATABASE_SCHEMA = "PHOENIX_SQL_DATABASE_SCHEMA"
58
85
  """
59
86
  The schema to use for the PostgresSQL database. (This is ignored for SQLite.)
@@ -635,11 +662,11 @@ def get_env_database_connection_str() -> str:
635
662
 
636
663
 
637
664
  def get_env_postgres_connection_str() -> Optional[str]:
638
- pg_user = os.getenv("PHOENIX_POSTGRES_USER")
639
- pg_password = os.getenv("PHOENIX_POSTGRES_PASSWORD")
640
- pg_host = os.getenv("PHOENIX_POSTGRES_HOST")
641
- pg_port = os.getenv("PHOENIX_POSTGRES_PORT")
642
- pg_db = os.getenv("PHOENIX_POSTGRES_DB")
665
+ pg_user = os.getenv(ENV_PHOENIX_POSTGRES_USER)
666
+ pg_password = os.getenv(ENV_PHOENIX_POSTGRES_PASSWORD)
667
+ pg_host = os.getenv(ENV_PHOENIX_POSTGRES_HOST)
668
+ pg_port = os.getenv(ENV_PHOENIX_POSTGRES_PORT)
669
+ pg_db = os.getenv(ENV_PHOENIX_POSTGRES_DB)
643
670
 
644
671
  if pg_host and ":" in pg_host:
645
672
  pg_host, parsed_port = pg_host.split(":")
@@ -271,6 +271,7 @@ class ExperimentRunOutput(TypedDict, total=False):
271
271
 
272
272
 
273
273
  class Base(DeclarativeBase):
274
+ id: Mapped[int] = mapped_column(Integer, primary_key=True)
274
275
  # Enforce best practices for naming constraints
275
276
  # https://alembic.sqlalchemy.org/en/latest/naming.html#integration-of-naming-conventions-into-operations-autogenerate
276
277
  metadata = MetaData(
@@ -292,7 +293,6 @@ class Base(DeclarativeBase):
292
293
 
293
294
  class Project(Base):
294
295
  __tablename__ = "projects"
295
- id: Mapped[int] = mapped_column(primary_key=True)
296
296
  name: Mapped[str]
297
297
  description: Mapped[Optional[str]]
298
298
  gradient_start_color: Mapped[str] = mapped_column(
@@ -325,7 +325,6 @@ class Project(Base):
325
325
 
326
326
  class ProjectSession(Base):
327
327
  __tablename__ = "project_sessions"
328
- id: Mapped[int] = mapped_column(primary_key=True)
329
328
  session_id: Mapped[str] = mapped_column(String, nullable=False, unique=True)
330
329
  project_id: Mapped[int] = mapped_column(
331
330
  ForeignKey("projects.id", ondelete="CASCADE"),
@@ -343,7 +342,6 @@ class ProjectSession(Base):
343
342
 
344
343
  class Trace(Base):
345
344
  __tablename__ = "traces"
346
- id: Mapped[int] = mapped_column(primary_key=True)
347
345
  project_rowid: Mapped[int] = mapped_column(
348
346
  ForeignKey("projects.id", ondelete="CASCADE"),
349
347
  nullable=False,
@@ -393,7 +391,6 @@ class Trace(Base):
393
391
 
394
392
  class Span(Base):
395
393
  __tablename__ = "spans"
396
- id: Mapped[int] = mapped_column(primary_key=True)
397
394
  trace_rowid: Mapped[int] = mapped_column(
398
395
  ForeignKey("traces.id", ondelete="CASCADE"),
399
396
  index=True,
@@ -660,7 +657,6 @@ async def init_models(engine: AsyncEngine) -> None:
660
657
 
661
658
  class SpanAnnotation(Base):
662
659
  __tablename__ = "span_annotations"
663
- id: Mapped[int] = mapped_column(primary_key=True)
664
660
  span_rowid: Mapped[int] = mapped_column(
665
661
  ForeignKey("spans.id", ondelete="CASCADE"),
666
662
  index=True,
@@ -687,7 +683,6 @@ class SpanAnnotation(Base):
687
683
 
688
684
  class TraceAnnotation(Base):
689
685
  __tablename__ = "trace_annotations"
690
- id: Mapped[int] = mapped_column(primary_key=True)
691
686
  trace_rowid: Mapped[int] = mapped_column(
692
687
  ForeignKey("traces.id", ondelete="CASCADE"),
693
688
  index=True,
@@ -714,7 +709,6 @@ class TraceAnnotation(Base):
714
709
 
715
710
  class DocumentAnnotation(Base):
716
711
  __tablename__ = "document_annotations"
717
- id: Mapped[int] = mapped_column(primary_key=True)
718
712
  span_rowid: Mapped[int] = mapped_column(
719
713
  ForeignKey("spans.id", ondelete="CASCADE"),
720
714
  index=True,
@@ -745,7 +739,6 @@ class DocumentAnnotation(Base):
745
739
 
746
740
  class Dataset(Base):
747
741
  __tablename__ = "datasets"
748
- id: Mapped[int] = mapped_column(primary_key=True)
749
742
  name: Mapped[str] = mapped_column(unique=True)
750
743
  description: Mapped[Optional[str]]
751
744
  metadata_: Mapped[dict[str, Any]] = mapped_column("metadata")
@@ -805,7 +798,6 @@ class Dataset(Base):
805
798
 
806
799
  class DatasetVersion(Base):
807
800
  __tablename__ = "dataset_versions"
808
- id: Mapped[int] = mapped_column(primary_key=True)
809
801
  dataset_id: Mapped[int] = mapped_column(
810
802
  ForeignKey("datasets.id", ondelete="CASCADE"),
811
803
  index=True,
@@ -817,7 +809,6 @@ class DatasetVersion(Base):
817
809
 
818
810
  class DatasetExample(Base):
819
811
  __tablename__ = "dataset_examples"
820
- id: Mapped[int] = mapped_column(primary_key=True)
821
812
  dataset_id: Mapped[int] = mapped_column(
822
813
  ForeignKey("datasets.id", ondelete="CASCADE"),
823
814
  index=True,
@@ -834,7 +825,6 @@ class DatasetExample(Base):
834
825
 
835
826
  class DatasetExampleRevision(Base):
836
827
  __tablename__ = "dataset_example_revisions"
837
- id: Mapped[int] = mapped_column(primary_key=True)
838
828
  dataset_example_id: Mapped[int] = mapped_column(
839
829
  ForeignKey("dataset_examples.id", ondelete="CASCADE"),
840
830
  index=True,
@@ -863,7 +853,6 @@ class DatasetExampleRevision(Base):
863
853
 
864
854
  class Experiment(Base):
865
855
  __tablename__ = "experiments"
866
- id: Mapped[int] = mapped_column(primary_key=True)
867
856
  dataset_id: Mapped[int] = mapped_column(
868
857
  ForeignKey("datasets.id", ondelete="CASCADE"),
869
858
  index=True,
@@ -885,7 +874,6 @@ class Experiment(Base):
885
874
 
886
875
  class ExperimentRun(Base):
887
876
  __tablename__ = "experiment_runs"
888
- id: Mapped[int] = mapped_column(primary_key=True)
889
877
  experiment_id: Mapped[int] = mapped_column(
890
878
  ForeignKey("experiments.id", ondelete="CASCADE"),
891
879
  index=True,
@@ -928,7 +916,6 @@ class ExperimentRun(Base):
928
916
 
929
917
  class ExperimentRunAnnotation(Base):
930
918
  __tablename__ = "experiment_run_annotations"
931
- id: Mapped[int] = mapped_column(primary_key=True)
932
919
  experiment_run_id: Mapped[int] = mapped_column(
933
920
  ForeignKey("experiment_runs.id", ondelete="CASCADE"),
934
921
  index=True,
@@ -956,14 +943,12 @@ class ExperimentRunAnnotation(Base):
956
943
 
957
944
  class UserRole(Base):
958
945
  __tablename__ = "user_roles"
959
- id: Mapped[int] = mapped_column(primary_key=True)
960
946
  name: Mapped[str] = mapped_column(unique=True, index=True)
961
947
  users: Mapped[list["User"]] = relationship("User", back_populates="role")
962
948
 
963
949
 
964
950
  class User(Base):
965
951
  __tablename__ = "users"
966
- id: Mapped[int] = mapped_column(primary_key=True)
967
952
  user_role_id: Mapped[int] = mapped_column(
968
953
  ForeignKey("user_roles.id", ondelete="CASCADE"),
969
954
  index=True,
@@ -1038,7 +1023,6 @@ class User(Base):
1038
1023
 
1039
1024
  class PasswordResetToken(Base):
1040
1025
  __tablename__ = "password_reset_tokens"
1041
- id: Mapped[int] = mapped_column(primary_key=True)
1042
1026
  user_id: Mapped[int] = mapped_column(
1043
1027
  ForeignKey("users.id", ondelete="CASCADE"),
1044
1028
  unique=True,
@@ -1052,7 +1036,6 @@ class PasswordResetToken(Base):
1052
1036
 
1053
1037
  class RefreshToken(Base):
1054
1038
  __tablename__ = "refresh_tokens"
1055
- id: Mapped[int] = mapped_column(primary_key=True)
1056
1039
  user_id: Mapped[int] = mapped_column(
1057
1040
  ForeignKey("users.id", ondelete="CASCADE"),
1058
1041
  index=True,
@@ -1065,7 +1048,6 @@ class RefreshToken(Base):
1065
1048
 
1066
1049
  class AccessToken(Base):
1067
1050
  __tablename__ = "access_tokens"
1068
- id: Mapped[int] = mapped_column(primary_key=True)
1069
1051
  user_id: Mapped[int] = mapped_column(
1070
1052
  ForeignKey("users.id", ondelete="CASCADE"),
1071
1053
  index=True,
@@ -1083,7 +1065,6 @@ class AccessToken(Base):
1083
1065
 
1084
1066
  class ApiKey(Base):
1085
1067
  __tablename__ = "api_keys"
1086
- id: Mapped[int] = mapped_column(primary_key=True)
1087
1068
  user_id: Mapped[int] = mapped_column(
1088
1069
  ForeignKey("users.id", ondelete="CASCADE"),
1089
1070
  index=True,
@@ -1099,7 +1080,6 @@ class ApiKey(Base):
1099
1080
  class PromptLabel(Base):
1100
1081
  __tablename__ = "prompt_labels"
1101
1082
 
1102
- id: Mapped[int] = mapped_column(primary_key=True)
1103
1083
  name: Mapped[str] = mapped_column(String, unique=True, index=True, nullable=False)
1104
1084
  description: Mapped[Optional[str]]
1105
1085
  color: Mapped[str] = mapped_column(String, nullable=True)
@@ -1115,7 +1095,6 @@ class PromptLabel(Base):
1115
1095
  class Prompt(Base):
1116
1096
  __tablename__ = "prompts"
1117
1097
 
1118
- id: Mapped[int] = mapped_column(primary_key=True)
1119
1098
  source_prompt_id: Mapped[Optional[int]] = mapped_column(
1120
1099
  ForeignKey("prompts.id", ondelete="SET NULL"),
1121
1100
  index=True,
@@ -1154,7 +1133,6 @@ class Prompt(Base):
1154
1133
  class PromptPromptLabel(Base):
1155
1134
  __tablename__ = "prompts_prompt_labels"
1156
1135
 
1157
- id: Mapped[int] = mapped_column(primary_key=True)
1158
1136
  prompt_label_id: Mapped[int] = mapped_column(
1159
1137
  ForeignKey("prompt_labels.id", ondelete="CASCADE"),
1160
1138
  index=True,
@@ -1177,7 +1155,6 @@ class PromptPromptLabel(Base):
1177
1155
  class PromptVersion(Base):
1178
1156
  __tablename__ = "prompt_versions"
1179
1157
 
1180
- id: Mapped[int] = mapped_column(primary_key=True)
1181
1158
  prompt_id: Mapped[int] = mapped_column(
1182
1159
  ForeignKey("prompts.id", ondelete="CASCADE"),
1183
1160
  index=True,
@@ -1227,7 +1204,6 @@ class PromptVersion(Base):
1227
1204
  class PromptVersionTag(Base):
1228
1205
  __tablename__ = "prompt_version_tags"
1229
1206
 
1230
- id: Mapped[int] = mapped_column(primary_key=True)
1231
1207
  name: Mapped[Identifier] = mapped_column(_Identifier, nullable=False)
1232
1208
  description: Mapped[Optional[str]] = mapped_column(String, nullable=True)
1233
1209
  prompt_id: Mapped[int] = mapped_column(
@@ -41,8 +41,8 @@ from phoenix.server.api.dataloaders import (
41
41
  SpanByIdDataLoader,
42
42
  SpanDatasetExamplesDataLoader,
43
43
  SpanDescendantsDataLoader,
44
- SpanFieldsDataLoader,
45
44
  SpanProjectsDataLoader,
45
+ TableFieldsDataLoader,
46
46
  TokenCountDataLoader,
47
47
  TraceByTraceIdsDataLoader,
48
48
  TraceRootSpansDataLoader,
@@ -76,6 +76,7 @@ class DataLoaders:
76
76
  experiment_sequence_number: ExperimentSequenceNumberDataLoader
77
77
  latency_ms_quantile: LatencyMsQuantileDataLoader
78
78
  min_start_or_max_end_times: MinStartOrMaxEndTimeDataLoader
79
+ project_fields: TableFieldsDataLoader
79
80
  prompt_version_sequence_number: PromptVersionSequenceNumberDataLoader
80
81
  record_counts: RecordCountDataLoader
81
82
  session_first_inputs: SessionIODataLoader
@@ -88,10 +89,11 @@ class DataLoaders:
88
89
  span_by_id: SpanByIdDataLoader
89
90
  span_dataset_examples: SpanDatasetExamplesDataLoader
90
91
  span_descendants: SpanDescendantsDataLoader
91
- span_fields: SpanFieldsDataLoader
92
+ span_fields: TableFieldsDataLoader
92
93
  span_projects: SpanProjectsDataLoader
93
94
  token_counts: TokenCountDataLoader
94
95
  trace_by_trace_ids: TraceByTraceIdsDataLoader
96
+ trace_fields: TableFieldsDataLoader
95
97
  trace_root_spans: TraceRootSpansDataLoader
96
98
  project_by_name: ProjectByNameDataLoader
97
99
  users: UsersDataLoader
@@ -29,8 +29,8 @@ from .span_annotations import SpanAnnotationsDataLoader
29
29
  from .span_by_id import SpanByIdDataLoader
30
30
  from .span_dataset_examples import SpanDatasetExamplesDataLoader
31
31
  from .span_descendants import SpanDescendantsDataLoader
32
- from .span_fields import SpanFieldsDataLoader
33
32
  from .span_projects import SpanProjectsDataLoader
33
+ from .table_fields import TableFieldsDataLoader
34
34
  from .token_counts import TokenCountCache, TokenCountDataLoader
35
35
  from .trace_by_trace_ids import TraceByTraceIdsDataLoader
36
36
  from .trace_root_spans import TraceRootSpansDataLoader
@@ -60,11 +60,11 @@ __all__ = [
60
60
  "SessionNumTracesWithErrorDataLoader",
61
61
  "SessionTokenUsagesDataLoader",
62
62
  "SessionTraceLatencyMsQuantileDataLoader",
63
- "SpanFieldsDataLoader",
64
63
  "SpanByIdDataLoader",
65
64
  "SpanDatasetExamplesDataLoader",
66
65
  "SpanDescendantsDataLoader",
67
66
  "SpanProjectsDataLoader",
67
+ "TableFieldsDataLoader",
68
68
  "TokenCountDataLoader",
69
69
  "TraceByTraceIdsDataLoader",
70
70
  "TraceRootSpansDataLoader",
@@ -8,35 +8,36 @@ from typing_extensions import TypeAlias
8
8
  from phoenix.db import models
9
9
  from phoenix.server.types import DbSessionFactory
10
10
 
11
- SpanRowId: TypeAlias = int
11
+ RowId: TypeAlias = int
12
12
 
13
- Key: TypeAlias = tuple[SpanRowId, QueryableAttribute[Any]]
13
+ Key: TypeAlias = tuple[RowId, QueryableAttribute[Any]]
14
14
  Result: TypeAlias = Any
15
15
 
16
-
17
16
  _ResultColumnPosition: TypeAlias = int
18
17
  _AttrStrIdentifier: TypeAlias = str
19
18
 
20
19
 
21
- class SpanFieldsDataLoader(DataLoader[Key, Result]):
22
- def __init__(self, db: DbSessionFactory) -> None:
20
+ class TableFieldsDataLoader(DataLoader[Key, Result]):
21
+ def __init__(self, db: DbSessionFactory, table: type[models.Base]) -> None:
23
22
  super().__init__(load_fn=self._load_fn)
24
23
  self._db = db
24
+ self._table = table
25
25
 
26
26
  async def _load_fn(self, keys: Iterable[Key]) -> list[Union[Result, ValueError]]:
27
- result: dict[tuple[SpanRowId, _AttrStrIdentifier], Result] = {}
28
- stmt, attr_strs = _get_stmt(keys)
27
+ result: dict[tuple[RowId, _AttrStrIdentifier], Result] = {}
28
+ stmt, attr_strs = _get_stmt(keys, self._table)
29
29
  async with self._db() as session:
30
30
  data = await session.stream(stmt)
31
31
  async for row in data:
32
- span_rowid: SpanRowId = row[0] # models.Span's primary key
32
+ rowid: RowId = row[0] # models.Span's primary key
33
33
  for i, value in enumerate(row[1:]):
34
- result[span_rowid, attr_strs[i]] = value
35
- return [result.get((span_rowid, str(attr))) for span_rowid, attr in keys]
34
+ result[rowid, attr_strs[i]] = value
35
+ return [result.get((rowid, str(attr))) for rowid, attr in keys]
36
36
 
37
37
 
38
38
  def _get_stmt(
39
- keys: Iterable[Key],
39
+ keys: Iterable[tuple[RowId, QueryableAttribute[Any]]],
40
+ table: type[models.Base],
40
41
  ) -> tuple[
41
42
  Select[Any],
42
43
  dict[_ResultColumnPosition, _AttrStrIdentifier],
@@ -52,7 +53,8 @@ def _get_stmt(
52
53
 
53
54
  Args:
54
55
  keys (list[Key]): A list of tuples, where each tuple contains an integer ID, i.e. the
55
- primary key of models.Span, and a QueryableAttribute.
56
+ primary key of table, and a QueryableAttribute.
57
+ table (models.Base): The table to query.
56
58
 
57
59
  Returns:
58
60
  tuple: A tuple containing:
@@ -61,16 +63,16 @@ def _get_stmt(
61
63
  at the second column (because the first column is the span's primary key)--in the
62
64
  result to the attribute's string identifier.
63
65
  """
64
- span_rowids: set[SpanRowId] = set()
66
+ rowids: set[RowId] = set()
65
67
  attrs: dict[_AttrStrIdentifier, QueryableAttribute[Any]] = {}
66
68
  joins = set()
67
- for span_rowid, attr in keys:
68
- span_rowids.add(span_rowid)
69
+ for rowid, attr in keys:
70
+ rowids.add(rowid)
69
71
  attrs[str(attr)] = attr
70
- if (entity := attr.parent.entity) is not models.Span:
72
+ if (entity := attr.parent.entity) is not table:
71
73
  joins.add(entity)
72
- stmt = select(models.Span.id).where(models.Span.id.in_(span_rowids))
73
- for table in joins:
74
- stmt = stmt.join(table)
74
+ stmt = select(table.id).where(table.id.in_(rowids))
75
+ for other_table in joins:
76
+ stmt = stmt.join(other_table)
75
77
  identifiers, columns = zip(*attrs.items())
76
78
  return stmt.add_columns(*columns), dict(enumerate(identifiers))
@@ -806,6 +806,10 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
806
806
  raise NotImplementedError
807
807
  elif isinstance(event, anthropic_streaming._types.CitationEvent):
808
808
  raise NotImplementedError
809
+ elif isinstance(event, anthropic_streaming._types.ThinkingEvent):
810
+ raise NotImplementedError
811
+ elif isinstance(event, anthropic_streaming._types.SignatureEvent):
812
+ raise NotImplementedError
809
813
  else:
810
814
  assert_never(event)
811
815
 
@@ -348,6 +348,7 @@ class AnthropicToolDefinition(PromptModel):
348
348
  class PromptOpenAIInvocationParametersContent(PromptModel):
349
349
  temperature: float = UNDEFINED
350
350
  max_tokens: int = UNDEFINED
351
+ max_completion_tokens: int = UNDEFINED
351
352
  frequency_penalty: float = UNDEFINED
352
353
  presence_penalty: float = UNDEFINED
353
354
  top_p: float = UNDEFINED
@@ -66,7 +66,7 @@ from phoenix.server.api.types.PromptVersion import PromptVersion, to_gql_prompt_
66
66
  from phoenix.server.api.types.SortDir import SortDir
67
67
  from phoenix.server.api.types.Span import Span
68
68
  from phoenix.server.api.types.SystemApiKey import SystemApiKey
69
- from phoenix.server.api.types.Trace import to_gql_trace
69
+ from phoenix.server.api.types.Trace import Trace
70
70
  from phoenix.server.api.types.User import User, to_gql_user
71
71
  from phoenix.server.api.types.UserApiKey import UserApiKey, to_gql_api_key
72
72
  from phoenix.server.api.types.UserRole import UserRole
@@ -236,10 +236,8 @@ class Query:
236
236
  projects = await session.stream_scalars(stmt)
237
237
  data = [
238
238
  Project(
239
- id_attr=project.id,
240
- name=project.name,
241
- gradient_start_color=project.gradient_start_color,
242
- gradient_end_color=project.gradient_end_color,
239
+ project_rowid=project.id,
240
+ db_project=project,
243
241
  )
244
242
  async for project in projects
245
243
  ]
@@ -448,21 +446,14 @@ class Query:
448
446
  embedding_dimension = info.context.model.embedding_dimensions[node_id]
449
447
  return to_gql_embedding_dimension(node_id, embedding_dimension)
450
448
  elif type_name == "Project":
451
- project_stmt = select(
452
- models.Project.id,
453
- models.Project.name,
454
- models.Project.gradient_start_color,
455
- models.Project.gradient_end_color,
456
- ).where(models.Project.id == node_id)
449
+ project_stmt = select(models.Project).filter_by(id=node_id)
457
450
  async with info.context.db() as session:
458
- project = (await session.execute(project_stmt)).first()
451
+ project = await session.scalar(project_stmt)
459
452
  if project is None:
460
453
  raise NotFound(f"Unknown project: {id}")
461
454
  return Project(
462
- id_attr=project.id,
463
- name=project.name,
464
- gradient_start_color=project.gradient_start_color,
465
- gradient_end_color=project.gradient_end_color,
455
+ project_rowid=project.id,
456
+ db_project=project,
466
457
  )
467
458
  elif type_name == "Trace":
468
459
  trace_stmt = select(models.Trace).filter_by(id=node_id)
@@ -470,7 +461,7 @@ class Query:
470
461
  trace = await session.scalar(trace_stmt)
471
462
  if trace is None:
472
463
  raise NotFound(f"Unknown trace: {id}")
473
- return to_gql_trace(trace)
464
+ return Trace(trace_rowid=trace.id, db_trace=trace)
474
465
  elif type_name == Span.__name__:
475
466
  span_stmt = (
476
467
  select(models.Span)
@@ -122,10 +122,8 @@ class Experiment(Node):
122
122
  return None
123
123
 
124
124
  return Project(
125
- id_attr=db_project.id,
126
- name=db_project.name,
127
- gradient_start_color=db_project.gradient_start_color,
128
- gradient_end_color=db_project.gradient_end_color,
125
+ project_rowid=db_project.id,
126
+ db_project=db_project,
129
127
  )
130
128
 
131
129
  @strawberry.field
@@ -20,7 +20,7 @@ from phoenix.server.api.types.pagination import (
20
20
  CursorString,
21
21
  connection_from_list,
22
22
  )
23
- from phoenix.server.api.types.Trace import Trace, to_gql_trace
23
+ from phoenix.server.api.types.Trace import Trace
24
24
 
25
25
  if TYPE_CHECKING:
26
26
  from phoenix.server.api.types.DatasetExample import DatasetExample
@@ -64,7 +64,7 @@ class ExperimentRun(Node):
64
64
  dataloader = info.context.data_loaders.trace_by_trace_ids
65
65
  if (trace := await dataloader.load(self.trace_id)) is None:
66
66
  return None
67
- return to_gql_trace(trace)
67
+ return Trace(trace_rowid=trace.id, db_trace=trace)
68
68
 
69
69
  @strawberry.field
70
70
  async def example(
@@ -8,7 +8,7 @@ from strawberry.scalars import JSON
8
8
 
9
9
  from phoenix.db import models
10
10
  from phoenix.server.api.types.AnnotatorKind import ExperimentRunAnnotatorKind
11
- from phoenix.server.api.types.Trace import Trace, to_gql_trace
11
+ from phoenix.server.api.types.Trace import Trace
12
12
 
13
13
 
14
14
  @strawberry.type
@@ -32,7 +32,7 @@ class ExperimentRunAnnotation(Node):
32
32
  dataloader = info.context.data_loaders.trace_by_trace_ids
33
33
  if (trace := await dataloader.load(self.trace_id)) is None:
34
34
  return None
35
- return to_gql_trace(trace)
35
+ return Trace(trace_rowid=trace.id, db_trace=trace)
36
36
 
37
37
 
38
38
  def to_gql_experiment_run_annotation(