arize-phoenix 12.0.0__tar.gz → 12.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 (488) hide show
  1. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/PKG-INFO +1 -1
  2. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/document_annotation.py +1 -1
  3. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/session_annotation.py +1 -1
  4. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/span_annotation.py +1 -1
  5. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/trace_annotation.py +1 -1
  6. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/types.py +0 -4
  7. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/models.py +22 -1
  8. arize_phoenix-12.3.0/src/phoenix/server/api/auth_messages.py +46 -0
  9. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/context.py +2 -0
  10. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/__init__.py +2 -0
  11. arize_phoenix-12.3.0/src/phoenix/server/api/dataloaders/dataset_labels.py +36 -0
  12. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/playground_clients.py +1 -0
  13. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/__init__.py +2 -0
  14. arize_phoenix-12.3.0/src/phoenix/server/api/mutations/dataset_label_mutations.py +291 -0
  15. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/dataset_split_mutations.py +38 -2
  16. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/queries.py +21 -0
  17. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/auth.py +5 -5
  18. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/oauth2.py +53 -51
  19. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Dataset.py +8 -0
  20. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DatasetExample.py +7 -0
  21. arize_phoenix-12.3.0/src/phoenix/server/api/types/DatasetLabel.py +23 -0
  22. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Prompt.py +18 -1
  23. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/app.py +12 -12
  24. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +54 -54
  25. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/oauth2.py +2 -4
  26. arize_phoenix-12.3.0/src/phoenix/server/static/.vite/manifest.json +93 -0
  27. arize_phoenix-12.0.0/src/phoenix/server/static/assets/components-Dl9SUw1U.js → arize_phoenix-12.3.0/src/phoenix/server/static/assets/components-Bs8eJEpU.js +699 -378
  28. arize_phoenix-12.0.0/src/phoenix/server/static/assets/index-CqQS0dTo.js → arize_phoenix-12.3.0/src/phoenix/server/static/assets/index-C6WEu5UP.js +3 -3
  29. arize_phoenix-12.0.0/src/phoenix/server/static/assets/pages-DKSjVA_E.js → arize_phoenix-12.3.0/src/phoenix/server/static/assets/pages-D-n2pkoG.js +1149 -1142
  30. arize_phoenix-12.3.0/src/phoenix/server/static/assets/vendor-D2eEI-6h.js +914 -0
  31. arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-arizeai-D-lWOwIS.js → arize_phoenix-12.3.0/src/phoenix/server/static/assets/vendor-arizeai-kfOei7nf.js +15 -24
  32. arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-codemirror-BRBpy3_z.js → arize_phoenix-12.3.0/src/phoenix/server/static/assets/vendor-codemirror-1bq_t1Ec.js +3 -3
  33. arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-recharts--KdSwB3m.js → arize_phoenix-12.3.0/src/phoenix/server/static/assets/vendor-recharts-DQ4xfrf4.js +1 -1
  34. arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-shiki-CvRzZnIo.js → arize_phoenix-12.3.0/src/phoenix/server/static/assets/vendor-shiki-GGmcIQxA.js +1 -1
  35. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/templates/index.html +1 -0
  36. arize_phoenix-12.3.0/src/phoenix/server/utils.py +74 -0
  37. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/session/session.py +25 -5
  38. arize_phoenix-12.3.0/src/phoenix/version.py +1 -0
  39. arize_phoenix-12.0.0/src/phoenix/server/static/.vite/manifest.json +0 -93
  40. arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-CtbHQYl8.js +0 -903
  41. arize_phoenix-12.0.0/src/phoenix/version.py +0 -1
  42. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/.gitignore +0 -0
  43. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/IP_NOTICE +0 -0
  44. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/LICENSE +0 -0
  45. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/README.md +0 -0
  46. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/pyproject.toml +0 -0
  47. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/__init__.py +0 -0
  48. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/auth.py +0 -0
  49. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/config.py +0 -0
  50. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/core/__init__.py +0 -0
  51. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/core/embedding_dimension.py +0 -0
  52. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/core/model.py +0 -0
  53. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/core/model_schema.py +0 -0
  54. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  55. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/datetime_utils.py +0 -0
  56. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/README.md +0 -0
  57. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/__init__.py +0 -0
  58. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/alembic.ini +0 -0
  59. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/bulk_inserter.py +0 -0
  60. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/constants.py +0 -0
  61. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/engines.py +0 -0
  62. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/enums.py +0 -0
  63. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/facilitator.py +0 -0
  64. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/helpers.py +0 -0
  65. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/__init__.py +0 -0
  66. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/constants.py +0 -0
  67. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/dataset.py +0 -0
  68. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  69. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/helpers.py +0 -0
  70. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/insertion/span.py +0 -0
  71. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrate.py +0 -0
  72. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/__init__.py +0 -0
  73. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  74. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  75. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/env.py +0 -0
  76. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  77. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/01a8342c9cdf_add_user_id_on_datasets.py +0 -0
  78. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/0df286449799_add_session_annotations_table.py +0 -0
  79. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  80. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/272b66ff50f8_drop_single_indices.py +0 -0
  81. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
  82. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  83. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  84. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/58228d933c91_dataset_labels.py +0 -0
  85. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/699f655af132_experiment_tags.py +0 -0
  86. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
  87. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/735d3d93c33e_add_composite_indices.py +0 -0
  88. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
  89. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
  90. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/ab513d89518b_add_user_id_on_dataset_versions.py +0 -0
  91. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
  92. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  93. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  94. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  95. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/d0690a79ea51_users_on_experiments.py +0 -0
  96. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/deb2c81c0bb2_dataset_splits.py +0 -0
  97. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/migrations/versions/e76cbd66ffc3_add_experiments_dataset_examples.py +0 -0
  98. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/pg_config.py +0 -0
  99. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/types/__init__.py +0 -0
  100. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/types/annotation_configs.py +0 -0
  101. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/types/db_models.py +0 -0
  102. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/types/identifier.py +0 -0
  103. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/types/model_provider.py +0 -0
  104. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/types/token_price_customization.py +0 -0
  105. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/db/types/trace_retention.py +0 -0
  106. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/exceptions.py +0 -0
  107. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/__init__.py +0 -0
  108. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  109. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  110. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  111. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  112. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  113. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/functions.py +0 -0
  114. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/tracing.py +0 -0
  115. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/types.py +0 -0
  116. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/experiments/utils.py +0 -0
  117. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/inferences/__init__.py +0 -0
  118. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/inferences/errors.py +0 -0
  119. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/inferences/fixtures.py +0 -0
  120. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/inferences/inferences.py +0 -0
  121. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/inferences/schema.py +0 -0
  122. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/inferences/validation.py +0 -0
  123. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/logging/__init__.py +0 -0
  124. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/logging/_config.py +0 -0
  125. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/logging/_filter.py +0 -0
  126. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/logging/_formatter.py +0 -0
  127. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/metrics/README.md +0 -0
  128. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/metrics/__init__.py +0 -0
  129. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/metrics/binning.py +0 -0
  130. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/metrics/metrics.py +0 -0
  131. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/metrics/mixins.py +0 -0
  132. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  133. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/metrics/timeseries.py +0 -0
  134. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/metrics/wrappers.py +0 -0
  135. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/pointcloud/__init__.py +0 -0
  136. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/pointcloud/clustering.py +0 -0
  137. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  138. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/pointcloud/projectors.py +0 -0
  139. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  140. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/py.typed +0 -0
  141. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/__init__.py +0 -0
  142. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/README.md +0 -0
  143. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/__init__.py +0 -0
  144. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/auth.py +0 -0
  145. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
  146. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  147. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/average_experiment_repeated_run_group_latency.py +0 -0
  148. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  149. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  150. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  151. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  152. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  153. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/dataset_example_splits.py +0 -0
  154. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/dataset_examples_and_versions_by_experiment_run.py +0 -0
  155. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  156. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  157. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  158. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  159. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  160. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_group_annotation_summaries.py +0 -0
  161. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_groups.py +0 -0
  162. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  163. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  164. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  165. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
  166. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  167. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  168. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  169. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
  170. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  171. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
  172. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  173. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  174. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/session_annotations_by_session.py +0 -0
  175. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  176. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  177. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  178. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  179. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  180. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  181. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  182. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
  183. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
  184. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
  185. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
  186. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
  187. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
  188. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
  189. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_repeated_run_group.py +0 -0
  190. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
  191. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
  192. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
  193. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
  194. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
  195. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
  196. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  197. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  198. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  199. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  200. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  201. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/trace_annotations_by_trace.py +0 -0
  202. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  203. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
  204. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  205. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
  206. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  207. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  208. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/exceptions.py +0 -0
  209. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  210. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
  211. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  212. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  213. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  214. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  215. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/playground_users.py +0 -0
  216. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  217. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  218. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  219. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
  220. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  221. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  222. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  223. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  224. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/AnnotationFilter.py +0 -0
  225. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  226. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  227. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  228. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  229. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  230. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  231. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
  232. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/CreateProjectSessionAnnotationInput.py +0 -0
  233. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  234. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  235. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  236. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  237. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
  238. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  239. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  240. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  241. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  242. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  243. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  244. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  245. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  246. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
  247. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  248. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  249. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  250. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  251. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  252. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  253. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  254. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
  255. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  256. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
  257. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/PromptFilter.py +0 -0
  258. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  259. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  260. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  261. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  262. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
  263. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  264. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  265. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/UpdateAnnotationInput.py +0 -0
  266. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  267. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  268. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/interceptor.py +0 -0
  269. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
  270. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  271. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  272. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  273. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  274. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  275. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
  276. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  277. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/project_session_annotations_mutations.py +0 -0
  278. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
  279. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  280. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  281. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  282. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  283. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  284. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
  285. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  286. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  287. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/openapi/main.py +0 -0
  288. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  289. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  290. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  291. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/utils.py +0 -0
  292. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  293. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
  294. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
  295. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  296. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/documents.py +0 -0
  297. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  298. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  299. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  300. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  301. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  302. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
  303. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  304. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/sessions.py +0 -0
  305. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  306. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  307. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
  308. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  309. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/schema.py +0 -0
  310. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/subscriptions.py +0 -0
  311. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  312. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
  313. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
  314. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  315. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  316. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  317. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  318. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  319. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  320. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  321. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
  322. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  323. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
  324. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  325. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  326. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DatasetExperimentAnnotationSummary.py +0 -0
  327. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DatasetSplit.py +0 -0
  328. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  329. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  330. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  331. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  332. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  333. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  334. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  335. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DocumentAnnotation.py +0 -0
  336. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  337. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  338. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  339. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  340. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  341. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Event.py +0 -0
  342. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  343. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  344. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  345. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  346. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  347. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroup.py +0 -0
  348. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroupAnnotationSummary.py +0 -0
  349. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  350. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  351. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  352. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  353. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  354. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  355. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  356. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
  357. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  358. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  359. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  360. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  361. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
  362. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  363. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  364. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
  365. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Project.py +0 -0
  366. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  367. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ProjectSessionAnnotation.py +0 -0
  368. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
  369. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  370. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  371. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  372. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  373. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  374. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  375. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  376. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  377. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Segments.py +0 -0
  378. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ServerStatus.py +0 -0
  379. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  380. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Span.py +0 -0
  381. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  382. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
  383. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
  384. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  385. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  386. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  387. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
  388. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
  389. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  390. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  391. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/Trace.py +0 -0
  392. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  393. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  394. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/User.py +0 -0
  395. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  396. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  397. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  398. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  399. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/__init__.py +0 -0
  400. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/node.py +0 -0
  401. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/types/pagination.py +0 -0
  402. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/api/utils.py +0 -0
  403. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/authorization.py +0 -0
  404. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/bearer_auth.py +0 -0
  405. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
  406. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
  407. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
  408. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
  409. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
  410. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
  411. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/daemons/__init__.py +0 -0
  412. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
  413. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
  414. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/daemons/span_cost_calculator.py +0 -0
  415. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/dml_event.py +0 -0
  416. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/dml_event_handler.py +0 -0
  417. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/email/__init__.py +0 -0
  418. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/email/sender.py +0 -0
  419. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  420. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
  421. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  422. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/email/templates/welcome.html +0 -0
  423. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/email/types.py +0 -0
  424. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/experiments/__init__.py +0 -0
  425. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/experiments/utils.py +0 -0
  426. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/grpc_server.py +0 -0
  427. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/jwt_store.py +0 -0
  428. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/main.py +0 -0
  429. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/middleware/__init__.py +0 -0
  430. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/middleware/gzip.py +0 -0
  431. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/openapi/__init__.py +0 -0
  432. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/prometheus.py +0 -0
  433. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/rate_limiters.py +0 -0
  434. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/retention.py +0 -0
  435. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/session_filters.py +0 -0
  436. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  437. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  438. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  439. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  440. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  441. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  442. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  443. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  444. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/assets/vendor-BGzfc4EU.css +0 -0
  445. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/assets/vendor-three-BLWp5bic.js +0 -0
  446. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/favicon.ico +0 -0
  447. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/static/modernizr.js +0 -0
  448. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/telemetry.py +0 -0
  449. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/templates/__init__.py +0 -0
  450. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/thread_server.py +0 -0
  451. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/server/types.py +0 -0
  452. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/services.py +0 -0
  453. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/session/__init__.py +0 -0
  454. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/session/client.py +0 -0
  455. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/session/data_extractor.py +0 -0
  456. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/session/evaluation.py +0 -0
  457. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/settings.py +0 -0
  458. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/__init__.py +0 -0
  459. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/attributes.py +0 -0
  460. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/dsl/README.md +0 -0
  461. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  462. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/dsl/filter.py +0 -0
  463. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  464. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/dsl/query.py +0 -0
  465. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/errors.py +0 -0
  466. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  467. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/exporter.py +0 -0
  468. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/fixtures.py +0 -0
  469. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/otel.py +0 -0
  470. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/projects.py +0 -0
  471. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/schemas.py +0 -0
  472. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/span_evaluations.py +0 -0
  473. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  474. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  475. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/trace_dataset.py +0 -0
  476. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/utils.py +0 -0
  477. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/v1/__init__.py +0 -0
  478. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  479. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  480. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/utilities/__init__.py +0 -0
  481. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/utilities/client.py +0 -0
  482. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/utilities/error_handling.py +0 -0
  483. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/utilities/json.py +0 -0
  484. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/utilities/logging.py +0 -0
  485. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/utilities/project.py +0 -0
  486. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/utilities/re.py +0 -0
  487. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/utilities/span_store.py +0 -0
  488. {arize_phoenix-12.0.0 → arize_phoenix-12.3.0}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 12.0.0
3
+ Version: 12.3.0
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://arize.com/docs/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -181,7 +181,7 @@ def _key(p: Received[Precursors.DocumentAnnotation]) -> _Key:
181
181
 
182
182
 
183
183
  def _unique_by(p: Received[Insertables.DocumentAnnotation]) -> _UniqueBy:
184
- return p.item.obj.name, p.item.span_rowid, p.item.document_position, p.item.identifier
184
+ return p.item.obj.name, p.item.span_rowid, p.item.document_position, p.item.obj.identifier
185
185
 
186
186
 
187
187
  def _time(p: Received[Any]) -> datetime:
@@ -169,7 +169,7 @@ def _key(p: Received[Precursors.SessionAnnotation]) -> _Key:
169
169
 
170
170
 
171
171
  def _unique_by(p: Received[Insertables.SessionAnnotation]) -> _UniqueBy:
172
- return p.item.obj.name, p.item.project_session_rowid, p.item.identifier
172
+ return p.item.obj.name, p.item.project_session_rowid, p.item.obj.identifier
173
173
 
174
174
 
175
175
  def _time(p: Received[Any]) -> datetime:
@@ -167,7 +167,7 @@ def _key(p: Received[Precursors.SpanAnnotation]) -> _Key:
167
167
 
168
168
 
169
169
  def _unique_by(p: Received[Insertables.SpanAnnotation]) -> _UniqueBy:
170
- return p.item.obj.name, p.item.span_rowid, p.item.identifier
170
+ return p.item.obj.name, p.item.span_rowid, p.item.obj.identifier
171
171
 
172
172
 
173
173
  def _time(p: Received[Any]) -> datetime:
@@ -166,7 +166,7 @@ def _key(p: Received[Precursors.TraceAnnotation]) -> _Key:
166
166
 
167
167
 
168
168
  def _unique_by(p: Received[Insertables.TraceAnnotation]) -> _UniqueBy:
169
- return p.item.obj.name, p.item.trace_rowid, p.item.identifier
169
+ return p.item.obj.name, p.item.trace_rowid, p.item.obj.identifier
170
170
 
171
171
 
172
172
  def _time(p: Received[Any]) -> datetime:
@@ -248,7 +248,6 @@ class Insertables(ABC):
248
248
  class SpanAnnotation(Precursors.SpanAnnotation):
249
249
  updated_at: datetime
250
250
  span_rowid: int
251
- identifier: str = ""
252
251
 
253
252
  @property
254
253
  def row(self) -> models.SpanAnnotation:
@@ -261,7 +260,6 @@ class Insertables(ABC):
261
260
  class TraceAnnotation(Precursors.TraceAnnotation):
262
261
  updated_at: datetime
263
262
  trace_rowid: int
264
- identifier: str = ""
265
263
 
266
264
  @property
267
265
  def row(self) -> models.TraceAnnotation:
@@ -274,7 +272,6 @@ class Insertables(ABC):
274
272
  class DocumentAnnotation(Precursors.DocumentAnnotation):
275
273
  updated_at: datetime
276
274
  span_rowid: int
277
- identifier: str = ""
278
275
 
279
276
  @property
280
277
  def row(self) -> models.DocumentAnnotation:
@@ -287,7 +284,6 @@ class Insertables(ABC):
287
284
  class SessionAnnotation(Precursors.SessionAnnotation):
288
285
  updated_at: datetime
289
286
  project_session_rowid: int
290
- identifier: str = ""
291
287
 
292
288
  @property
293
289
  def row(self) -> models.ProjectSessionAnnotation:
@@ -443,6 +443,27 @@ class _RegexStr(TypeDecorator[re.Pattern[str]]):
443
443
  return re.compile(value)
444
444
 
445
445
 
446
+ _HEX_COLOR_PATTERN = re.compile(r"^#([0-9a-f]{6})$")
447
+
448
+
449
+ class _HexColor(TypeDecorator[str]):
450
+ # See https://docs.sqlalchemy.org/en/20/core/custom_types.html
451
+ cache_ok = True
452
+ impl = String
453
+
454
+ def process_bind_param(self, value: Optional[str], _: Dialect) -> Optional[str]:
455
+ if value is None:
456
+ return None
457
+ if not _HEX_COLOR_PATTERN.match(value):
458
+ raise ValueError(f"Expected a hex color, got {value}")
459
+ return value
460
+
461
+ def process_result_value(self, value: Optional[str], _: Dialect) -> Optional[str]:
462
+ if value is None:
463
+ return None
464
+ return value
465
+
466
+
446
467
  class ExperimentRunOutput(TypedDict, total=False):
447
468
  task_output: Any
448
469
 
@@ -1125,7 +1146,7 @@ class DatasetLabel(HasId):
1125
1146
  __tablename__ = "dataset_labels"
1126
1147
  name: Mapped[str] = mapped_column(unique=True)
1127
1148
  description: Mapped[Optional[str]]
1128
- color: Mapped[str] = mapped_column(String, nullable=False)
1149
+ color: Mapped[str] = mapped_column(_HexColor, nullable=False)
1129
1150
  datasets_dataset_labels: Mapped[list["DatasetsDatasetLabel"]] = relationship(
1130
1151
  "DatasetsDatasetLabel", back_populates="dataset_label"
1131
1152
  )
@@ -0,0 +1,46 @@
1
+ # ruff: noqa: E501
2
+ """
3
+ Authentication error and success message codes.
4
+
5
+ These codes are used in authentication flows to safely communicate status
6
+ to users via query parameters. Using codes instead of raw messages prevents
7
+ social engineering and phishing attacks.
8
+
9
+ The messages are passed to the frontend via window.Config to ensure a single
10
+ source of truth between backend and frontend.
11
+ """
12
+
13
+ from types import MappingProxyType
14
+ from typing import Literal, Mapping, get_args
15
+
16
+ # Error code type - used for type hints in redirect functions
17
+ AuthErrorCode = Literal[
18
+ "unknown_idp",
19
+ "auth_failed",
20
+ "invalid_state",
21
+ "unsafe_return_url",
22
+ "oauth_error",
23
+ "no_oidc_support",
24
+ "missing_email_scope",
25
+ "email_in_use",
26
+ "sign_in_not_allowed",
27
+ ]
28
+
29
+ # Error messages - passed to frontend via window.Config.authErrorMessages
30
+ # Backend generates these codes when redirecting users after OAuth errors
31
+ AUTH_ERROR_MESSAGES: Mapping[AuthErrorCode, str] = MappingProxyType(
32
+ {
33
+ "unknown_idp": "Unknown identity provider.",
34
+ "auth_failed": "Authentication failed. Please contact your administrator.",
35
+ "invalid_state": "Invalid authentication state. Please try again.",
36
+ "unsafe_return_url": "Invalid return URL. Please try again.",
37
+ "oauth_error": "Authentication failed. Please try again.",
38
+ "no_oidc_support": "Your identity provider does not appear to support OpenID Connect. Please contact your administrator.",
39
+ "missing_email_scope": "Please ensure your identity provider is configured to use the 'email' scope.",
40
+ "email_in_use": "An account with this email already exists.",
41
+ "sign_in_not_allowed": "Sign in is not allowed. Please contact your administrator.",
42
+ }
43
+ )
44
+
45
+ # Runtime assertion to ensure AUTH_ERROR_MESSAGES keys match AuthErrorCode Literal values
46
+ assert set(AUTH_ERROR_MESSAGES.keys()) == set(get_args(AuthErrorCode))
@@ -76,6 +76,7 @@ from phoenix.server.api.dataloaders import (
76
76
  UserRolesDataLoader,
77
77
  UsersDataLoader,
78
78
  )
79
+ from phoenix.server.api.dataloaders.dataset_labels import DatasetLabelsDataLoader
79
80
  from phoenix.server.bearer_auth import PhoenixUser
80
81
  from phoenix.server.daemons.span_cost_calculator import SpanCostCalculator
81
82
  from phoenix.server.dml_event import DmlEvent
@@ -99,6 +100,7 @@ class DataLoaders:
99
100
  average_experiment_run_latency: AverageExperimentRunLatencyDataLoader
100
101
  dataset_example_revisions: DatasetExampleRevisionsDataLoader
101
102
  dataset_example_spans: DatasetExampleSpansDataLoader
103
+ dataset_labels: DatasetLabelsDataLoader
102
104
  dataset_examples_and_versions_by_experiment_run: (
103
105
  DatasetExamplesAndVersionsByExperimentRunDataLoader
104
106
  )
@@ -16,6 +16,7 @@ from .dataset_example_splits import DatasetExampleSplitsDataLoader
16
16
  from .dataset_examples_and_versions_by_experiment_run import (
17
17
  DatasetExamplesAndVersionsByExperimentRunDataLoader,
18
18
  )
19
+ from .dataset_labels import DatasetLabelsDataLoader
19
20
  from .document_evaluation_summaries import (
20
21
  DocumentEvaluationSummaryCache,
21
22
  DocumentEvaluationSummaryDataLoader,
@@ -87,6 +88,7 @@ __all__ = [
87
88
  "DatasetExampleSpansDataLoader",
88
89
  "DatasetExamplesAndVersionsByExperimentRunDataLoader",
89
90
  "DatasetExampleSplitsDataLoader",
91
+ "DatasetLabelsDataLoader",
90
92
  "DocumentEvaluationSummaryDataLoader",
91
93
  "DocumentEvaluationsDataLoader",
92
94
  "DocumentRetrievalMetricsDataLoader",
@@ -0,0 +1,36 @@
1
+ from sqlalchemy import select
2
+ from strawberry.dataloader import DataLoader
3
+ from typing_extensions import TypeAlias
4
+
5
+ from phoenix.db import models
6
+ from phoenix.server.types import DbSessionFactory
7
+
8
+ DatasetID: TypeAlias = int
9
+ Key: TypeAlias = DatasetID
10
+ Result: TypeAlias = list[models.DatasetLabel]
11
+
12
+
13
+ class DatasetLabelsDataLoader(DataLoader[Key, Result]):
14
+ def __init__(self, db: DbSessionFactory) -> None:
15
+ super().__init__(load_fn=self._load_fn)
16
+ self._db = db
17
+
18
+ async def _load_fn(self, keys: list[Key]) -> list[Result]:
19
+ dataset_ids = keys
20
+ async with self._db() as session:
21
+ labels: dict[Key, Result] = {}
22
+ for dataset_id, label in await session.execute(
23
+ select(models.DatasetsDatasetLabel.dataset_id, models.DatasetLabel)
24
+ .select_from(models.DatasetLabel)
25
+ .join(
26
+ models.DatasetsDatasetLabel,
27
+ models.DatasetLabel.id == models.DatasetsDatasetLabel.dataset_label_id,
28
+ )
29
+ .where(models.DatasetsDatasetLabel.dataset_id.in_(dataset_ids))
30
+ ):
31
+ if dataset_id not in labels:
32
+ labels[dataset_id] = []
33
+ labels[dataset_id].append(label)
34
+ return [
35
+ sorted(labels.get(dataset_id, []), key=lambda label: label.name) for dataset_id in keys
36
+ ]
@@ -1677,6 +1677,7 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
1677
1677
  @register_llm_client(
1678
1678
  provider_key=GenerativeProviderKey.ANTHROPIC,
1679
1679
  model_names=[
1680
+ "claude-sonnet-4-5",
1680
1681
  "claude-sonnet-4-0",
1681
1682
  "claude-sonnet-4-20250514",
1682
1683
  "claude-opus-4-1",
@@ -5,6 +5,7 @@ from phoenix.server.api.mutations.api_key_mutations import ApiKeyMutationMixin
5
5
  from phoenix.server.api.mutations.chat_mutations import (
6
6
  ChatCompletionMutationMixin,
7
7
  )
8
+ from phoenix.server.api.mutations.dataset_label_mutations import DatasetLabelMutationMixin
8
9
  from phoenix.server.api.mutations.dataset_mutations import DatasetMutationMixin
9
10
  from phoenix.server.api.mutations.dataset_split_mutations import DatasetSplitMutationMixin
10
11
  from phoenix.server.api.mutations.experiment_mutations import ExperimentMutationMixin
@@ -31,6 +32,7 @@ class Mutation(
31
32
  AnnotationConfigMutationMixin,
32
33
  ApiKeyMutationMixin,
33
34
  ChatCompletionMutationMixin,
35
+ DatasetLabelMutationMixin,
34
36
  DatasetMutationMixin,
35
37
  DatasetSplitMutationMixin,
36
38
  ExperimentMutationMixin,
@@ -0,0 +1,291 @@
1
+ from typing import Optional
2
+
3
+ import sqlalchemy
4
+ import strawberry
5
+ from sqlalchemy import delete, select
6
+ from sqlalchemy.exc import IntegrityError as PostgreSQLIntegrityError
7
+ from sqlean.dbapi2 import IntegrityError as SQLiteIntegrityError # type: ignore[import-untyped]
8
+ from strawberry import UNSET
9
+ from strawberry.relay.types import GlobalID
10
+ from strawberry.types import Info
11
+
12
+ from phoenix.db import models
13
+ from phoenix.server.api.auth import IsLocked, IsNotReadOnly
14
+ from phoenix.server.api.context import Context
15
+ from phoenix.server.api.exceptions import BadRequest, Conflict, NotFound
16
+ from phoenix.server.api.queries import Query
17
+ from phoenix.server.api.types.Dataset import Dataset
18
+ from phoenix.server.api.types.DatasetLabel import DatasetLabel, to_gql_dataset_label
19
+ from phoenix.server.api.types.node import from_global_id_with_expected_type
20
+
21
+
22
+ @strawberry.input
23
+ class CreateDatasetLabelInput:
24
+ name: str
25
+ description: Optional[str] = UNSET
26
+ color: str
27
+
28
+
29
+ @strawberry.type
30
+ class CreateDatasetLabelMutationPayload:
31
+ dataset_label: DatasetLabel
32
+
33
+
34
+ @strawberry.input
35
+ class DeleteDatasetLabelsInput:
36
+ dataset_label_ids: list[GlobalID]
37
+
38
+
39
+ @strawberry.type
40
+ class DeleteDatasetLabelsMutationPayload:
41
+ dataset_labels: list[DatasetLabel]
42
+
43
+
44
+ @strawberry.input
45
+ class UpdateDatasetLabelInput:
46
+ dataset_label_id: GlobalID
47
+ name: str
48
+ description: Optional[str] = None
49
+ color: str
50
+
51
+
52
+ @strawberry.type
53
+ class UpdateDatasetLabelMutationPayload:
54
+ dataset_label: DatasetLabel
55
+
56
+
57
+ @strawberry.input
58
+ class SetDatasetLabelsInput:
59
+ dataset_label_ids: list[GlobalID]
60
+ dataset_ids: list[GlobalID]
61
+
62
+
63
+ @strawberry.type
64
+ class SetDatasetLabelsMutationPayload:
65
+ query: "Query"
66
+
67
+
68
+ @strawberry.input
69
+ class UnsetDatasetLabelsInput:
70
+ dataset_label_ids: list[GlobalID]
71
+ dataset_ids: list[GlobalID]
72
+
73
+
74
+ @strawberry.type
75
+ class UnsetDatasetLabelsMutationPayload:
76
+ query: "Query"
77
+
78
+
79
+ @strawberry.type
80
+ class DatasetLabelMutationMixin:
81
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
82
+ async def create_dataset_label(
83
+ self,
84
+ info: Info[Context, None],
85
+ input: CreateDatasetLabelInput,
86
+ ) -> CreateDatasetLabelMutationPayload:
87
+ name = input.name
88
+ description = input.description
89
+ color = input.color
90
+ async with info.context.db() as session:
91
+ dataset_label_orm = models.DatasetLabel(name=name, description=description, color=color)
92
+ session.add(dataset_label_orm)
93
+ try:
94
+ await session.commit()
95
+ except (PostgreSQLIntegrityError, SQLiteIntegrityError):
96
+ raise Conflict(f"A dataset label named '{name}' already exists")
97
+ except sqlalchemy.exc.StatementError as error:
98
+ raise BadRequest(str(error.orig))
99
+ return CreateDatasetLabelMutationPayload(
100
+ dataset_label=to_gql_dataset_label(dataset_label_orm)
101
+ )
102
+
103
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
104
+ async def update_dataset_label(
105
+ self, info: Info[Context, None], input: UpdateDatasetLabelInput
106
+ ) -> UpdateDatasetLabelMutationPayload:
107
+ if not input.name or not input.name.strip():
108
+ raise BadRequest("Dataset label name cannot be empty")
109
+
110
+ try:
111
+ dataset_label_id = from_global_id_with_expected_type(
112
+ input.dataset_label_id, DatasetLabel.__name__
113
+ )
114
+ except ValueError:
115
+ raise BadRequest(f"Invalid dataset label ID: {input.dataset_label_id}")
116
+
117
+ async with info.context.db() as session:
118
+ dataset_label_orm = await session.get(models.DatasetLabel, dataset_label_id)
119
+ if not dataset_label_orm:
120
+ raise NotFound(f"DatasetLabel with ID {input.dataset_label_id} not found")
121
+
122
+ dataset_label_orm.name = input.name.strip()
123
+ dataset_label_orm.description = input.description
124
+ dataset_label_orm.color = input.color.strip()
125
+
126
+ try:
127
+ await session.commit()
128
+ except (PostgreSQLIntegrityError, SQLiteIntegrityError):
129
+ raise Conflict(f"A dataset label named '{input.name}' already exists")
130
+ except sqlalchemy.exc.StatementError as error:
131
+ raise BadRequest(str(error.orig))
132
+ return UpdateDatasetLabelMutationPayload(
133
+ dataset_label=to_gql_dataset_label(dataset_label_orm)
134
+ )
135
+
136
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
137
+ async def delete_dataset_labels(
138
+ self, info: Info[Context, None], input: DeleteDatasetLabelsInput
139
+ ) -> DeleteDatasetLabelsMutationPayload:
140
+ dataset_label_row_ids: dict[int, None] = {}
141
+ for dataset_label_node_id in input.dataset_label_ids:
142
+ try:
143
+ dataset_label_row_id = from_global_id_with_expected_type(
144
+ dataset_label_node_id, DatasetLabel.__name__
145
+ )
146
+ except ValueError:
147
+ raise BadRequest(f"Unknown dataset label: {dataset_label_node_id}")
148
+ dataset_label_row_ids[dataset_label_row_id] = None
149
+ async with info.context.db() as session:
150
+ stmt = (
151
+ delete(models.DatasetLabel)
152
+ .where(models.DatasetLabel.id.in_(dataset_label_row_ids.keys()))
153
+ .returning(models.DatasetLabel)
154
+ )
155
+ deleted_dataset_labels = (await session.scalars(stmt)).all()
156
+ if len(deleted_dataset_labels) < len(dataset_label_row_ids):
157
+ await session.rollback()
158
+ raise NotFound("Could not find one or more dataset labels with given IDs")
159
+ deleted_dataset_labels_by_id = {
160
+ dataset_label.id: dataset_label for dataset_label in deleted_dataset_labels
161
+ }
162
+ return DeleteDatasetLabelsMutationPayload(
163
+ dataset_labels=[
164
+ to_gql_dataset_label(deleted_dataset_labels_by_id[dataset_label_row_id])
165
+ for dataset_label_row_id in dataset_label_row_ids
166
+ ]
167
+ )
168
+
169
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
170
+ async def set_dataset_labels(
171
+ self, info: Info[Context, None], input: SetDatasetLabelsInput
172
+ ) -> SetDatasetLabelsMutationPayload:
173
+ if not input.dataset_ids:
174
+ raise BadRequest("No datasets provided.")
175
+ if not input.dataset_label_ids:
176
+ raise BadRequest("No dataset labels provided.")
177
+
178
+ unique_dataset_rowids: set[int] = set()
179
+ for dataset_gid in input.dataset_ids:
180
+ try:
181
+ dataset_rowid = from_global_id_with_expected_type(dataset_gid, Dataset.__name__)
182
+ except ValueError:
183
+ raise BadRequest(f"Invalid dataset ID: {dataset_gid}")
184
+ unique_dataset_rowids.add(dataset_rowid)
185
+ dataset_rowids = list(unique_dataset_rowids)
186
+
187
+ unique_dataset_label_rowids: set[int] = set()
188
+ for dataset_label_gid in input.dataset_label_ids:
189
+ try:
190
+ dataset_label_rowid = from_global_id_with_expected_type(
191
+ dataset_label_gid, DatasetLabel.__name__
192
+ )
193
+ except ValueError:
194
+ raise BadRequest(f"Invalid dataset label ID: {dataset_label_gid}")
195
+ unique_dataset_label_rowids.add(dataset_label_rowid)
196
+ dataset_label_rowids = list(unique_dataset_label_rowids)
197
+
198
+ async with info.context.db() as session:
199
+ existing_dataset_ids = (
200
+ await session.scalars(
201
+ select(models.Dataset.id).where(models.Dataset.id.in_(dataset_rowids))
202
+ )
203
+ ).all()
204
+ if len(existing_dataset_ids) != len(dataset_rowids):
205
+ raise NotFound("One or more datasets not found")
206
+
207
+ existing_dataset_label_ids = (
208
+ await session.scalars(
209
+ select(models.DatasetLabel.id).where(
210
+ models.DatasetLabel.id.in_(dataset_label_rowids)
211
+ )
212
+ )
213
+ ).all()
214
+ if len(existing_dataset_label_ids) != len(dataset_label_rowids):
215
+ raise NotFound("One or more dataset labels not found")
216
+
217
+ existing_dataset_label_keys = await session.execute(
218
+ select(
219
+ models.DatasetsDatasetLabel.dataset_id,
220
+ models.DatasetsDatasetLabel.dataset_label_id,
221
+ ).where(
222
+ models.DatasetsDatasetLabel.dataset_id.in_(dataset_rowids)
223
+ & models.DatasetsDatasetLabel.dataset_label_id.in_(dataset_label_rowids)
224
+ )
225
+ )
226
+ unique_dataset_label_keys = set(existing_dataset_label_keys.all())
227
+
228
+ datasets_dataset_labels = []
229
+ for dataset_rowid in dataset_rowids:
230
+ for dataset_label_rowid in dataset_label_rowids:
231
+ if (dataset_rowid, dataset_label_rowid) in unique_dataset_label_keys:
232
+ continue
233
+ datasets_dataset_labels.append(
234
+ models.DatasetsDatasetLabel(
235
+ dataset_id=dataset_rowid,
236
+ dataset_label_id=dataset_label_rowid,
237
+ )
238
+ )
239
+ session.add_all(datasets_dataset_labels)
240
+
241
+ if datasets_dataset_labels:
242
+ try:
243
+ await session.commit()
244
+ except (PostgreSQLIntegrityError, SQLiteIntegrityError) as e:
245
+ raise Conflict("Failed to add dataset labels to datasets.") from e
246
+
247
+ return SetDatasetLabelsMutationPayload(
248
+ query=Query(),
249
+ )
250
+
251
+ @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
252
+ async def unset_dataset_labels(
253
+ self, info: Info[Context, None], input: UnsetDatasetLabelsInput
254
+ ) -> UnsetDatasetLabelsMutationPayload:
255
+ if not input.dataset_ids:
256
+ raise BadRequest("No datasets provided.")
257
+ if not input.dataset_label_ids:
258
+ raise BadRequest("No dataset labels provided.")
259
+
260
+ unique_dataset_rowids: set[int] = set()
261
+ for dataset_gid in input.dataset_ids:
262
+ try:
263
+ dataset_rowid = from_global_id_with_expected_type(dataset_gid, Dataset.__name__)
264
+ except ValueError:
265
+ raise BadRequest(f"Invalid dataset ID: {dataset_gid}")
266
+ unique_dataset_rowids.add(dataset_rowid)
267
+ dataset_rowids = list(unique_dataset_rowids)
268
+
269
+ unique_dataset_label_rowids: set[int] = set()
270
+ for dataset_label_gid in input.dataset_label_ids:
271
+ try:
272
+ dataset_label_rowid = from_global_id_with_expected_type(
273
+ dataset_label_gid, DatasetLabel.__name__
274
+ )
275
+ except ValueError:
276
+ raise BadRequest(f"Invalid dataset label ID: {dataset_label_gid}")
277
+ unique_dataset_label_rowids.add(dataset_label_rowid)
278
+ dataset_label_rowids = list(unique_dataset_label_rowids)
279
+
280
+ async with info.context.db() as session:
281
+ await session.execute(
282
+ delete(models.DatasetsDatasetLabel).where(
283
+ models.DatasetsDatasetLabel.dataset_id.in_(dataset_rowids)
284
+ & models.DatasetsDatasetLabel.dataset_label_id.in_(dataset_label_rowids)
285
+ )
286
+ )
287
+ await session.commit()
288
+
289
+ return UnsetDatasetLabelsMutationPayload(
290
+ query=Query(),
291
+ )
@@ -15,6 +15,7 @@ from phoenix.server.api.context import Context
15
15
  from phoenix.server.api.exceptions import BadRequest, Conflict, NotFound
16
16
  from phoenix.server.api.helpers.playground_users import get_user
17
17
  from phoenix.server.api.queries import Query
18
+ from phoenix.server.api.types.DatasetExample import DatasetExample, to_gql_dataset_example
18
19
  from phoenix.server.api.types.DatasetSplit import DatasetSplit, to_gql_dataset_split
19
20
  from phoenix.server.api.types.node import from_global_id_with_expected_type
20
21
 
@@ -68,6 +69,13 @@ class DatasetSplitMutationPayload:
68
69
  query: "Query"
69
70
 
70
71
 
72
+ @strawberry.type
73
+ class DatasetSplitMutationPayloadWithExamples:
74
+ dataset_split: DatasetSplit
75
+ query: "Query"
76
+ examples: list[DatasetExample]
77
+
78
+
71
79
  @strawberry.type
72
80
  class DeleteDatasetSplitsMutationPayload:
73
81
  dataset_splits: list[DatasetSplit]
@@ -77,11 +85,13 @@ class DeleteDatasetSplitsMutationPayload:
77
85
  @strawberry.type
78
86
  class AddDatasetExamplesToDatasetSplitsMutationPayload:
79
87
  query: "Query"
88
+ examples: list[DatasetExample]
80
89
 
81
90
 
82
91
  @strawberry.type
83
92
  class RemoveDatasetExamplesFromDatasetSplitsMutationPayload:
84
93
  query: "Query"
94
+ examples: list[DatasetExample]
85
95
 
86
96
 
87
97
  @strawberry.type
@@ -262,8 +272,16 @@ class DatasetSplitMutationMixin:
262
272
  except (PostgreSQLIntegrityError, SQLiteIntegrityError) as e:
263
273
  raise Conflict("Failed to add examples to dataset splits.") from e
264
274
 
275
+ examples = (
276
+ await session.scalars(
277
+ select(models.DatasetExample).where(
278
+ models.DatasetExample.id.in_(example_rowids)
279
+ )
280
+ )
281
+ ).all()
265
282
  return AddDatasetExamplesToDatasetSplitsMutationPayload(
266
283
  query=Query(),
284
+ examples=[to_gql_dataset_example(example) for example in examples],
267
285
  )
268
286
 
269
287
  @strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
@@ -314,14 +332,23 @@ class DatasetSplitMutationMixin:
314
332
 
315
333
  await session.execute(stmt)
316
334
 
335
+ examples = (
336
+ await session.scalars(
337
+ select(models.DatasetExample).where(
338
+ models.DatasetExample.id.in_(example_rowids)
339
+ )
340
+ )
341
+ ).all()
342
+
317
343
  return RemoveDatasetExamplesFromDatasetSplitsMutationPayload(
318
344
  query=Query(),
345
+ examples=[to_gql_dataset_example(example) for example in examples],
319
346
  )
320
347
 
321
348
  @strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
322
349
  async def create_dataset_split_with_examples(
323
350
  self, info: Info[Context, None], input: CreateDatasetSplitWithExamplesInput
324
- ) -> DatasetSplitMutationPayload:
351
+ ) -> DatasetSplitMutationPayloadWithExamples:
325
352
  user_id = get_user(info)
326
353
  validated_name = _validated_name(input.name)
327
354
  unique_example_rowids: set[int] = set()
@@ -374,9 +401,18 @@ class DatasetSplitMutationMixin:
374
401
  "Failed to associate examples with the new dataset split."
375
402
  ) from e
376
403
 
377
- return DatasetSplitMutationPayload(
404
+ examples = (
405
+ await session.scalars(
406
+ select(models.DatasetExample).where(
407
+ models.DatasetExample.id.in_(example_rowids)
408
+ )
409
+ )
410
+ ).all()
411
+
412
+ return DatasetSplitMutationPayloadWithExamples(
378
413
  dataset_split=to_gql_dataset_split(dataset_split_orm),
379
414
  query=Query(),
415
+ examples=[to_gql_dataset_example(example) for example in examples],
380
416
  )
381
417
 
382
418