arize-phoenix 12.6.1__tar.gz → 12.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of arize-phoenix might be problematic. Click here for more details.

Files changed (492) hide show
  1. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/PKG-INFO +17 -11
  2. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/README.md +16 -10
  3. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/pyproject.toml +1 -1
  4. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/context.py +2 -0
  5. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/__init__.py +2 -0
  6. arize_phoenix-12.7.1/src/phoenix/server/api/dataloaders/experiment_dataset_splits.py +43 -0
  7. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/ChatCompletionInput.py +1 -0
  8. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DatasetFilter.py +5 -2
  9. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/chat_mutations.py +17 -3
  10. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/queries.py +53 -28
  11. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/datasets.py +150 -1
  12. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/experiments.py +19 -0
  13. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/subscriptions.py +22 -19
  14. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Dataset.py +1 -1
  15. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Experiment.py +14 -0
  16. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/app.py +2 -0
  17. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/cost_tracking/model_cost_manifest.json +142 -0
  18. arize_phoenix-12.7.1/src/phoenix/server/static/.vite/manifest.json +93 -0
  19. arize_phoenix-12.6.1/src/phoenix/server/static/assets/components-XKc983B9.js → arize_phoenix-12.7.1/src/phoenix/server/static/assets/components-BLK5vehh.js +777 -696
  20. arize_phoenix-12.6.1/src/phoenix/server/static/assets/index-DG8e74sg.js → arize_phoenix-12.7.1/src/phoenix/server/static/assets/index-BP0Shd90.js +2 -2
  21. arize_phoenix-12.6.1/src/phoenix/server/static/assets/pages-CSZW-lt0.js → arize_phoenix-12.7.1/src/phoenix/server/static/assets/pages-DIVgyYyy.js +595 -604
  22. arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-3BvTzoBp.js +920 -0
  23. arize_phoenix-12.6.1/src/phoenix/server/static/assets/vendor-arizeai-Cb1ncvYH.js → arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-arizeai-C6_oC0y8.js +1 -1
  24. arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-codemirror-DPnZGAZA.js +25 -0
  25. arize_phoenix-12.6.1/src/phoenix/server/static/assets/vendor-recharts-BC1ysIKu.js → arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-recharts-CjgSbsB0.js +7 -7
  26. arize_phoenix-12.6.1/src/phoenix/server/static/assets/vendor-shiki-B45T-YxN.js → arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-shiki-CJyhDG0E.js +1 -1
  27. arize_phoenix-12.7.1/src/phoenix/version.py +1 -0
  28. arize_phoenix-12.6.1/src/phoenix/server/static/.vite/manifest.json +0 -93
  29. arize_phoenix-12.6.1/src/phoenix/server/static/assets/vendor-CQ4tN9P7.js +0 -918
  30. arize_phoenix-12.6.1/src/phoenix/server/static/assets/vendor-codemirror-CckmKopH.js +0 -25
  31. arize_phoenix-12.6.1/src/phoenix/version.py +0 -1
  32. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/.gitignore +0 -0
  33. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/IP_NOTICE +0 -0
  34. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/LICENSE +0 -0
  35. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/__init__.py +0 -0
  36. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/auth.py +0 -0
  37. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/config.py +0 -0
  38. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/core/__init__.py +0 -0
  39. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/core/embedding_dimension.py +0 -0
  40. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/core/model.py +0 -0
  41. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/core/model_schema.py +0 -0
  42. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/core/model_schema_adapter.py +0 -0
  43. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/datetime_utils.py +0 -0
  44. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/README.md +0 -0
  45. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/__init__.py +0 -0
  46. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/alembic.ini +0 -0
  47. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/bulk_inserter.py +0 -0
  48. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/constants.py +0 -0
  49. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/engines.py +0 -0
  50. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/enums.py +0 -0
  51. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/facilitator.py +0 -0
  52. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/helpers.py +0 -0
  53. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/__init__.py +0 -0
  54. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/constants.py +0 -0
  55. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/dataset.py +0 -0
  56. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/document_annotation.py +0 -0
  57. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/evaluation.py +0 -0
  58. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/helpers.py +0 -0
  59. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/session_annotation.py +0 -0
  60. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/span.py +0 -0
  61. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/span_annotation.py +0 -0
  62. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  63. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/insertion/types.py +0 -0
  64. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrate.py +0 -0
  65. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/__init__.py +0 -0
  66. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  67. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  68. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/env.py +0 -0
  69. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/script.py.mako +0 -0
  70. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/01a8342c9cdf_add_user_id_on_datasets.py +0 -0
  71. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/0df286449799_add_session_annotations_table.py +0 -0
  72. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  73. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/272b66ff50f8_drop_single_indices.py +0 -0
  74. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
  75. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  76. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  77. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/58228d933c91_dataset_labels.py +0 -0
  78. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/699f655af132_experiment_tags.py +0 -0
  79. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
  80. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/735d3d93c33e_add_composite_indices.py +0 -0
  81. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
  82. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
  83. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/ab513d89518b_add_user_id_on_dataset_versions.py +0 -0
  84. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
  85. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  86. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  87. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  88. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/d0690a79ea51_users_on_experiments.py +0 -0
  89. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/deb2c81c0bb2_dataset_splits.py +0 -0
  90. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/migrations/versions/e76cbd66ffc3_add_experiments_dataset_examples.py +0 -0
  91. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/models.py +0 -0
  92. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/pg_config.py +0 -0
  93. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/types/__init__.py +0 -0
  94. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/types/annotation_configs.py +0 -0
  95. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/types/db_models.py +0 -0
  96. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/types/identifier.py +0 -0
  97. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/types/model_provider.py +0 -0
  98. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/types/token_price_customization.py +0 -0
  99. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/db/types/trace_retention.py +0 -0
  100. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/exceptions.py +0 -0
  101. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/__init__.py +0 -0
  102. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  103. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/evaluators/base.py +0 -0
  104. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  105. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  106. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/evaluators/utils.py +0 -0
  107. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/functions.py +0 -0
  108. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/tracing.py +0 -0
  109. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/types.py +0 -0
  110. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/experiments/utils.py +0 -0
  111. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/inferences/__init__.py +0 -0
  112. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/inferences/errors.py +0 -0
  113. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/inferences/fixtures.py +0 -0
  114. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/inferences/inferences.py +0 -0
  115. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/inferences/schema.py +0 -0
  116. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/inferences/validation.py +0 -0
  117. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/logging/__init__.py +0 -0
  118. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/logging/_config.py +0 -0
  119. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/logging/_filter.py +0 -0
  120. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/logging/_formatter.py +0 -0
  121. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/metrics/README.md +0 -0
  122. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/metrics/__init__.py +0 -0
  123. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/metrics/binning.py +0 -0
  124. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/metrics/metrics.py +0 -0
  125. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/metrics/mixins.py +0 -0
  126. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  127. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/metrics/timeseries.py +0 -0
  128. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/metrics/wrappers.py +0 -0
  129. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/pointcloud/__init__.py +0 -0
  130. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/pointcloud/clustering.py +0 -0
  131. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/pointcloud/pointcloud.py +0 -0
  132. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/pointcloud/projectors.py +0 -0
  133. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  134. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/py.typed +0 -0
  135. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/__init__.py +0 -0
  136. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/README.md +0 -0
  137. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/__init__.py +0 -0
  138. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/auth.py +0 -0
  139. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/auth_messages.py +0 -0
  140. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
  141. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  142. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/average_experiment_repeated_run_group_latency.py +0 -0
  143. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  144. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  145. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  146. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/dataset_dataset_splits.py +0 -0
  147. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  148. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  149. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/dataset_example_splits.py +0 -0
  150. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/dataset_examples_and_versions_by_experiment_run.py +0 -0
  151. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/dataset_labels.py +0 -0
  152. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  153. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  154. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  155. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  156. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  157. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/experiment_repeated_run_group_annotation_summaries.py +0 -0
  158. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/experiment_repeated_run_groups.py +0 -0
  159. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  160. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  161. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  162. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
  163. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  164. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  165. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  166. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
  167. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  168. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
  169. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  170. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  171. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/session_annotations_by_session.py +0 -0
  172. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  173. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  174. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  175. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  176. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  177. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  178. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  179. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
  180. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
  181. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
  182. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
  183. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
  184. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
  185. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
  186. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_repeated_run_group.py +0 -0
  187. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
  188. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
  189. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
  190. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
  191. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
  192. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
  193. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  194. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  195. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  196. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  197. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  198. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/trace_annotations_by_trace.py +0 -0
  199. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  200. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
  201. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  202. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/types.py +0 -0
  203. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  204. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/dataloaders/users.py +0 -0
  205. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/exceptions.py +0 -0
  206. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/__init__.py +0 -0
  207. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/annotations.py +0 -0
  208. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  209. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  210. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
  211. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  212. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  213. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/playground_users.py +0 -0
  214. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  215. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  216. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  217. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
  218. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  219. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  220. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  221. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  222. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/AnnotationFilter.py +0 -0
  223. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  224. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  225. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  226. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  227. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  228. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
  229. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/CreateProjectSessionAnnotationInput.py +0 -0
  230. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  231. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  232. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  233. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  234. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  235. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  236. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  237. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  238. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  239. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  240. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  241. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  242. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/ExperimentRunSort.py +0 -0
  243. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
  244. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  245. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  246. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  247. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  248. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  249. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  250. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  251. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
  252. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  253. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
  254. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/PromptFilter.py +0 -0
  255. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  256. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  257. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  258. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  259. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
  260. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  261. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  262. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/UpdateAnnotationInput.py +0 -0
  263. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  264. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/input_types/__init__.py +0 -0
  265. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/interceptor.py +0 -0
  266. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/__init__.py +0 -0
  267. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
  268. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  269. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/dataset_label_mutations.py +0 -0
  270. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  271. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/dataset_split_mutations.py +0 -0
  272. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  273. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  274. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
  275. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  276. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/project_session_annotations_mutations.py +0 -0
  277. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
  278. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  279. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  280. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  281. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  282. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  283. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
  284. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  285. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/openapi/__init__.py +0 -0
  286. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/openapi/main.py +0 -0
  287. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/openapi/schema.py +0 -0
  288. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/__init__.py +0 -0
  289. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/auth.py +0 -0
  290. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/embeddings.py +0 -0
  291. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/oauth2.py +0 -0
  292. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/utils.py +0 -0
  293. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  294. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
  295. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
  296. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/documents.py +0 -0
  297. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  298. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  299. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  300. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/models.py +0 -0
  301. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/projects.py +0 -0
  302. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  303. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/sessions.py +0 -0
  304. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  305. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  306. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/users.py +0 -0
  307. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  308. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/schema.py +0 -0
  309. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Annotation.py +0 -0
  310. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
  311. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
  312. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  313. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  314. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ApiKey.py +0 -0
  315. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  316. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  317. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  318. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Cluster.py +0 -0
  319. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
  320. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  321. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/CronExpression.py +0 -0
  322. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  323. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  324. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  325. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DatasetExperimentAnnotationSummary.py +0 -0
  326. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DatasetLabel.py +0 -0
  327. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DatasetSplit.py +0 -0
  328. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  329. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  330. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Dimension.py +0 -0
  331. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  332. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  333. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DimensionType.py +0 -0
  334. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  335. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DocumentAnnotation.py +0 -0
  336. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  337. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  338. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  339. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  340. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  341. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Event.py +0 -0
  342. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  343. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  344. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  345. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  346. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ExperimentRepeatedRunGroup.py +0 -0
  347. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ExperimentRepeatedRunGroupAnnotationSummary.py +0 -0
  348. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  349. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  350. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  351. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Functionality.py +0 -0
  352. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  353. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  354. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Identifier.py +0 -0
  355. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/InferenceModel.py +0 -0
  356. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Inferences.py +0 -0
  357. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  358. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  359. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/MimeType.py +0 -0
  360. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ModelInterface.py +0 -0
  361. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/NumericRange.py +0 -0
  362. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  363. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
  364. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Project.py +0 -0
  365. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  366. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ProjectSessionAnnotation.py +0 -0
  367. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
  368. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Prompt.py +0 -0
  369. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  370. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  371. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  372. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  373. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  374. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  375. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Retrieval.py +0 -0
  376. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  377. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Segments.py +0 -0
  378. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ServerStatus.py +0 -0
  379. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/SortDir.py +0 -0
  380. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Span.py +0 -0
  381. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  382. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
  383. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
  384. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  385. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  386. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  387. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
  388. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/TokenPrice.py +0 -0
  389. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  390. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  391. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/Trace.py +0 -0
  392. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  393. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  394. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/User.py +0 -0
  395. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  396. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/UserRole.py +0 -0
  397. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  398. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  399. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/__init__.py +0 -0
  400. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/node.py +0 -0
  401. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/types/pagination.py +0 -0
  402. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/api/utils.py +0 -0
  403. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/authorization.py +0 -0
  404. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/bearer_auth.py +0 -0
  405. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/cost_tracking/__init__.py +0 -0
  406. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
  407. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
  408. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/cost_tracking/helpers.py +0 -0
  409. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
  410. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
  411. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/daemons/__init__.py +0 -0
  412. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
  413. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/daemons/generative_model_store.py +0 -0
  414. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/daemons/span_cost_calculator.py +0 -0
  415. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/dml_event.py +0 -0
  416. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/dml_event_handler.py +0 -0
  417. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/email/__init__.py +0 -0
  418. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/email/sender.py +0 -0
  419. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/email/templates/__init__.py +0 -0
  420. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
  421. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/email/templates/password_reset.html +0 -0
  422. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/email/templates/welcome.html +0 -0
  423. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/email/types.py +0 -0
  424. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/experiments/__init__.py +0 -0
  425. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/experiments/utils.py +0 -0
  426. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/grpc_server.py +0 -0
  427. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/jwt_store.py +0 -0
  428. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/main.py +0 -0
  429. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/middleware/__init__.py +0 -0
  430. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/middleware/gzip.py +0 -0
  431. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/oauth2.py +0 -0
  432. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/openapi/__init__.py +0 -0
  433. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/prometheus.py +0 -0
  434. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/rate_limiters.py +0 -0
  435. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/retention.py +0 -0
  436. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/session_filters.py +0 -0
  437. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  438. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  439. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  440. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  441. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  442. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  443. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  444. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  445. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/assets/vendor-BGzfc4EU.css +0 -0
  446. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/assets/vendor-three-BtCyLs1w.js +0 -0
  447. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/favicon.ico +0 -0
  448. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/static/modernizr.js +0 -0
  449. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/telemetry.py +0 -0
  450. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/templates/__init__.py +0 -0
  451. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/templates/index.html +0 -0
  452. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/thread_server.py +0 -0
  453. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/types.py +0 -0
  454. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/server/utils.py +0 -0
  455. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/services.py +0 -0
  456. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/session/__init__.py +0 -0
  457. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/session/client.py +0 -0
  458. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/session/data_extractor.py +0 -0
  459. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/session/evaluation.py +0 -0
  460. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/session/session.py +0 -0
  461. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/settings.py +0 -0
  462. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/__init__.py +0 -0
  463. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/attributes.py +0 -0
  464. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/dsl/README.md +0 -0
  465. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/dsl/__init__.py +0 -0
  466. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/dsl/filter.py +0 -0
  467. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/dsl/helpers.py +0 -0
  468. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/dsl/query.py +0 -0
  469. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/errors.py +0 -0
  470. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/evaluation_conventions.py +0 -0
  471. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/exporter.py +0 -0
  472. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/fixtures.py +0 -0
  473. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/otel.py +0 -0
  474. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/projects.py +0 -0
  475. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/schemas.py +0 -0
  476. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/span_evaluations.py +0 -0
  477. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/span_json_decoder.py +0 -0
  478. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/span_json_encoder.py +0 -0
  479. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/trace_dataset.py +0 -0
  480. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/utils.py +0 -0
  481. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/v1/__init__.py +0 -0
  482. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  483. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  484. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/utilities/__init__.py +0 -0
  485. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/utilities/client.py +0 -0
  486. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/utilities/error_handling.py +0 -0
  487. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/utilities/json.py +0 -0
  488. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/utilities/logging.py +0 -0
  489. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/utilities/project.py +0 -0
  490. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/utilities/re.py +0 -0
  491. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/src/phoenix/utilities/span_store.py +0 -0
  492. {arize_phoenix-12.6.1 → arize_phoenix-12.7.1}/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.6.1
3
+ Version: 12.7.1
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
@@ -58,7 +58,7 @@ Requires-Dist: strawberry-graphql==0.270.1
58
58
  Requires-Dist: tqdm
59
59
  Requires-Dist: typing-extensions>=4.6
60
60
  Requires-Dist: uvicorn
61
- Requires-Dist: wrapt>=1.17.2
61
+ Requires-Dist: wrapt<2,>=1.17.2
62
62
  Provides-Extra: container
63
63
  Requires-Dist: aiohttp; extra == 'container'
64
64
  Requires-Dist: anthropic>=0.49.0; extra == 'container'
@@ -194,16 +194,22 @@ Phoenix container images are available via [Docker Hub](https://hub.docker.com/r
194
194
 
195
195
  The `arize-phoenix` package includes the entire Phoenix platfom. However if you have deployed the Phoenix platform, there are light-weight Python sub-packages and TypeScript packages that can be used in conjunction with the platfrom.
196
196
 
197
- ### Subpackages
197
+ ### Python Subpackages
198
198
 
199
- | Package | Version & Docs | Description |
200
- | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
201
- | [arize-phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-otel) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-otel)](https://pypi.org/project/arize-phoenix-otel/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/otel/en/latest/index.html) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
202
- | [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-client)](https://pypi.org/project/arize-phoenix-client/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/client/en/latest/index.html) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
203
- | [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-evals)](https://pypi.org/project/arize-phoenix-evals/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/evals/en/latest/index.html) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
204
- | [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-client)](https://www.npmjs.com/package/@arizeai/phoenix-client) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | Client for the Arize Phoenix API |
205
- | [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-evals)](https://www.npmjs.com/package/@arizeai/phoenix-evals) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | TypeScript evaluation library for LLM applications (alpha release) |
206
- | [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-mcp)](https://www.npmjs.com/package/@arizeai/phoenix-mcp) [![Docs](https://img.shields.io/badge/docs-blue?logo=markdown&logoColor=white)](./js/packages/phoenix-mcp/README.md) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
199
+ | Package | Version & Docs | Description |
200
+ | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
201
+ | [arize-phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-otel) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-otel)](https://pypi.org/project/arize-phoenix-otel/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/otel/en/latest/index.html) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
202
+ | [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-client)](https://pypi.org/project/arize-phoenix-client/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/client/en/latest/index.html) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
203
+ | [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-evals)](https://pypi.org/project/arize-phoenix-evals/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/evals/en/latest/index.html) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
204
+
205
+ ### TypeScript Subpackages
206
+
207
+ | Package | Version & Docs | Description |
208
+ | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
209
+ | [@arizeai/phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-otel) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-otel)](https://www.npmjs.com/package/@arizeai/phoenix-otel) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
210
+ | [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-client)](https://www.npmjs.com/package/@arizeai/phoenix-client) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | Client for the Arize Phoenix API |
211
+ | [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-evals)](https://www.npmjs.com/package/@arizeai/phoenix-evals) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | TypeScript evaluation library for LLM applications (alpha release) |
212
+ | [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-mcp)](https://www.npmjs.com/package/@arizeai/phoenix-mcp) [![Docs](https://img.shields.io/badge/docs-blue?logo=markdown&logoColor=white)](./js/packages/phoenix-mcp/README.md) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
207
213
 
208
214
  ## Tracing Integrations
209
215
 
@@ -64,16 +64,22 @@ Phoenix container images are available via [Docker Hub](https://hub.docker.com/r
64
64
 
65
65
  The `arize-phoenix` package includes the entire Phoenix platfom. However if you have deployed the Phoenix platform, there are light-weight Python sub-packages and TypeScript packages that can be used in conjunction with the platfrom.
66
66
 
67
- ### Subpackages
68
-
69
- | Package | Version & Docs | Description |
70
- | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
71
- | [arize-phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-otel) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-otel)](https://pypi.org/project/arize-phoenix-otel/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/otel/en/latest/index.html) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
72
- | [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-client)](https://pypi.org/project/arize-phoenix-client/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/client/en/latest/index.html) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
73
- | [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-evals)](https://pypi.org/project/arize-phoenix-evals/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/evals/en/latest/index.html) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
74
- | [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-client)](https://www.npmjs.com/package/@arizeai/phoenix-client) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | Client for the Arize Phoenix API |
75
- | [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-evals)](https://www.npmjs.com/package/@arizeai/phoenix-evals) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | TypeScript evaluation library for LLM applications (alpha release) |
76
- | [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-mcp)](https://www.npmjs.com/package/@arizeai/phoenix-mcp) [![Docs](https://img.shields.io/badge/docs-blue?logo=markdown&logoColor=white)](./js/packages/phoenix-mcp/README.md) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
67
+ ### Python Subpackages
68
+
69
+ | Package | Version & Docs | Description |
70
+ | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
71
+ | [arize-phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-otel) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-otel)](https://pypi.org/project/arize-phoenix-otel/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/otel/en/latest/index.html) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
72
+ | [arize-phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-client) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-client)](https://pypi.org/project/arize-phoenix-client/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/client/en/latest/index.html) | Lightweight client for interacting with the Phoenix server via its OpenAPI REST interface |
73
+ | [arize-phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/packages/phoenix-evals) | [![PyPI Version](https://img.shields.io/pypi/v/arize-phoenix-evals)](https://pypi.org/project/arize-phoenix-evals/) [![Docs](https://img.shields.io/badge/docs-blue?logo=readthedocs&logoColor=white)](https://arize-phoenix.readthedocs.io/projects/evals/en/latest/index.html) | Tooling to evaluate LLM applications including RAG relevance, answer relevance, and more |
74
+
75
+ ### TypeScript Subpackages
76
+
77
+ | Package | Version & Docs | Description |
78
+ | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
79
+ | [@arizeai/phoenix-otel](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-otel) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-otel)](https://www.npmjs.com/package/@arizeai/phoenix-otel) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | Provides a lightweight wrapper around OpenTelemetry primitives with Phoenix-aware defaults |
80
+ | [@arizeai/phoenix-client](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-client) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-client)](https://www.npmjs.com/package/@arizeai/phoenix-client) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | Client for the Arize Phoenix API |
81
+ | [@arizeai/phoenix-evals](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-evals) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-evals)](https://www.npmjs.com/package/@arizeai/phoenix-evals) [![Docs](https://img.shields.io/badge/docs-blue?logo=typescript&logoColor=white)](https://arize-ai.github.io/phoenix/) | TypeScript evaluation library for LLM applications (alpha release) |
82
+ | [@arizeai/phoenix-mcp](https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp) | [![NPM Version](https://img.shields.io/npm/v/%40arizeai%2Fphoenix-mcp)](https://www.npmjs.com/package/@arizeai/phoenix-mcp) [![Docs](https://img.shields.io/badge/docs-blue?logo=markdown&logoColor=white)](./js/packages/phoenix-mcp/README.md) | MCP server implementation for Arize Phoenix providing unified interface to Phoenix's capabilities |
77
83
 
78
84
  ## Tracing Integrations
79
85
 
@@ -33,7 +33,7 @@ dependencies = [
33
33
  "pyarrow",
34
34
  "typing-extensions>=4.6",
35
35
  "scipy",
36
- "wrapt>=1.17.2",
36
+ "wrapt>=1.17.2,<2",
37
37
  "protobuf>=4.25.8",
38
38
  "grpcio",
39
39
  "grpc-interceptor",
@@ -29,6 +29,7 @@ from phoenix.server.api.dataloaders import (
29
29
  DocumentEvaluationSummaryDataLoader,
30
30
  DocumentRetrievalMetricsDataLoader,
31
31
  ExperimentAnnotationSummaryDataLoader,
32
+ ExperimentDatasetSplitsDataLoader,
32
33
  ExperimentErrorRatesDataLoader,
33
34
  ExperimentRepeatedRunGroupAnnotationSummariesDataLoader,
34
35
  ExperimentRepeatedRunGroupsDataLoader,
@@ -111,6 +112,7 @@ class DataLoaders:
111
112
  document_evaluations: DocumentEvaluationsDataLoader
112
113
  document_retrieval_metrics: DocumentRetrievalMetricsDataLoader
113
114
  experiment_annotation_summaries: ExperimentAnnotationSummaryDataLoader
115
+ experiment_dataset_splits: ExperimentDatasetSplitsDataLoader
114
116
  experiment_error_rates: ExperimentErrorRatesDataLoader
115
117
  experiment_repeated_run_group_annotation_summaries: (
116
118
  ExperimentRepeatedRunGroupAnnotationSummariesDataLoader
@@ -25,6 +25,7 @@ from .document_evaluation_summaries import (
25
25
  from .document_evaluations import DocumentEvaluationsDataLoader
26
26
  from .document_retrieval_metrics import DocumentRetrievalMetricsDataLoader
27
27
  from .experiment_annotation_summaries import ExperimentAnnotationSummaryDataLoader
28
+ from .experiment_dataset_splits import ExperimentDatasetSplitsDataLoader
28
29
  from .experiment_error_rates import ExperimentErrorRatesDataLoader
29
30
  from .experiment_repeated_run_group_annotation_summaries import (
30
31
  ExperimentRepeatedRunGroupAnnotationSummariesDataLoader,
@@ -91,6 +92,7 @@ __all__ = [
91
92
  "DatasetExamplesAndVersionsByExperimentRunDataLoader",
92
93
  "DatasetExampleSplitsDataLoader",
93
94
  "DatasetLabelsDataLoader",
95
+ "ExperimentDatasetSplitsDataLoader",
94
96
  "DocumentEvaluationSummaryDataLoader",
95
97
  "DocumentEvaluationsDataLoader",
96
98
  "DocumentRetrievalMetricsDataLoader",
@@ -0,0 +1,43 @@
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
+ ExperimentID: TypeAlias = int
9
+ Key: TypeAlias = ExperimentID
10
+ Result: TypeAlias = list[models.DatasetSplit]
11
+
12
+
13
+ class ExperimentDatasetSplitsDataLoader(DataLoader[Key, Result]):
14
+ def __init__(self, db: DbSessionFactory) -> None:
15
+ super().__init__(
16
+ load_fn=self._load_fn,
17
+ )
18
+ self._db = db
19
+
20
+ async def _load_fn(self, keys: list[Key]) -> list[Result]:
21
+ experiment_ids = keys
22
+ async with self._db() as session:
23
+ splits: dict[ExperimentID, list[models.DatasetSplit]] = {}
24
+
25
+ async for experiment_id, split in await session.stream(
26
+ select(models.ExperimentDatasetSplit.experiment_id, models.DatasetSplit)
27
+ .select_from(models.DatasetSplit)
28
+ .join(
29
+ models.ExperimentDatasetSplit,
30
+ onclause=(
31
+ models.DatasetSplit.id == models.ExperimentDatasetSplit.dataset_split_id
32
+ ),
33
+ )
34
+ .where(models.ExperimentDatasetSplit.experiment_id.in_(experiment_ids))
35
+ ):
36
+ if experiment_id not in splits:
37
+ splits[experiment_id] = []
38
+ splits[experiment_id].append(split)
39
+
40
+ return [
41
+ sorted(splits.get(experiment_id, []), key=lambda x: x.name)
42
+ for experiment_id in keys
43
+ ]
@@ -40,6 +40,7 @@ class ChatCompletionOverDatasetInput:
40
40
  repetitions: int
41
41
  dataset_id: GlobalID
42
42
  dataset_version_id: Optional[GlobalID] = None
43
+ split_ids: Optional[list[GlobalID]] = None
43
44
  experiment_name: Optional[str] = None
44
45
  experiment_description: Optional[str] = None
45
46
  experiment_metadata: Optional[JSON] = strawberry.field(default_factory=dict)
@@ -1,6 +1,8 @@
1
1
  from enum import Enum
2
+ from typing import Optional
2
3
 
3
4
  import strawberry
5
+ from strawberry import UNSET
4
6
 
5
7
 
6
8
  @strawberry.enum
@@ -10,5 +12,6 @@ class DatasetFilterColumn(Enum):
10
12
 
11
13
  @strawberry.input(description="A filter for datasets")
12
14
  class DatasetFilter:
13
- col: DatasetFilterColumn
14
- value: str
15
+ col: Optional[DatasetFilterColumn] = None
16
+ value: Optional[str] = None
17
+ filter_labels: Optional[list[str]] = UNSET
@@ -186,12 +186,21 @@ class ChatCompletionMutationMixin:
186
186
  raise NotFound("No versions found for the given dataset")
187
187
  else:
188
188
  resolved_version_id = dataset_version_id
189
+ # Parse split IDs if provided
190
+ resolved_split_ids: Optional[list[int]] = None
191
+ if input.split_ids is not None and len(input.split_ids) > 0:
192
+ resolved_split_ids = [
193
+ from_global_id_with_expected_type(split_id, models.DatasetSplit.__name__)
194
+ for split_id in input.split_ids
195
+ ]
196
+
189
197
  revisions = [
190
198
  revision
191
199
  async for revision in await session.stream_scalars(
192
- get_dataset_example_revisions(resolved_version_id).order_by(
193
- models.DatasetExampleRevision.id
194
- )
200
+ get_dataset_example_revisions(
201
+ resolved_version_id,
202
+ split_ids=resolved_split_ids,
203
+ ).order_by(models.DatasetExampleRevision.id)
195
204
  )
196
205
  ]
197
206
  if not revisions:
@@ -208,6 +217,11 @@ class ChatCompletionMutationMixin:
208
217
  project_name=project_name,
209
218
  user_id=user_id,
210
219
  )
220
+ if resolved_split_ids:
221
+ experiment.experiment_dataset_splits = [
222
+ models.ExperimentDatasetSplit(dataset_split_id=split_id)
223
+ for split_id in resolved_split_ids
224
+ ]
211
225
  await insert_experiment_with_examples_snapshot(session, experiment)
212
226
 
213
227
  results: list[Union[ChatCompletionMutationPayload, BaseException]] = []
@@ -22,7 +22,10 @@ from phoenix.config import (
22
22
  )
23
23
  from phoenix.db import models
24
24
  from phoenix.db.constants import DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID
25
- from phoenix.db.helpers import SupportedSQLDialect, exclude_experiment_projects
25
+ from phoenix.db.helpers import (
26
+ SupportedSQLDialect,
27
+ exclude_experiment_projects,
28
+ )
26
29
  from phoenix.db.models import LatencyMs
27
30
  from phoenix.pointcloud.clustering import Hdbscan
28
31
  from phoenix.server.api.auth import MSG_ADMIN_ONLY, IsAdmin
@@ -385,7 +388,35 @@ class Query:
385
388
  sort_col = getattr(models.Dataset, sort.col.value)
386
389
  stmt = stmt.order_by(sort_col.desc() if sort.dir is SortDir.desc else sort_col.asc())
387
390
  if filter:
388
- stmt = stmt.where(getattr(models.Dataset, filter.col.value).ilike(f"%{filter.value}%"))
391
+ # Apply name filter
392
+ if filter.col and filter.value:
393
+ stmt = stmt.where(
394
+ getattr(models.Dataset, filter.col.value).ilike(f"%{filter.value}%")
395
+ )
396
+
397
+ # Apply label filter
398
+ if filter.filter_labels and filter.filter_labels is not UNSET:
399
+ label_rowids = []
400
+ for label_id in filter.filter_labels:
401
+ try:
402
+ label_rowid = from_global_id_with_expected_type(
403
+ global_id=GlobalID.from_id(label_id),
404
+ expected_type_name="DatasetLabel",
405
+ )
406
+ label_rowids.append(label_rowid)
407
+ except ValueError:
408
+ continue # Skip invalid label IDs
409
+
410
+ if label_rowids:
411
+ # Join with the junction table to filter by labels
412
+ stmt = (
413
+ stmt.join(
414
+ models.DatasetsDatasetLabel,
415
+ models.Dataset.id == models.DatasetsDatasetLabel.dataset_id,
416
+ )
417
+ .where(models.DatasetsDatasetLabel.dataset_label_id.in_(label_rowids))
418
+ .distinct()
419
+ )
389
420
  async with info.context.db() as session:
390
421
  datasets = await session.scalars(stmt)
391
422
  return connection_from_list(
@@ -448,6 +479,7 @@ class Query:
448
479
  )
449
480
  )
450
481
  ).all()
482
+
451
483
  if not experiments or len(experiments) < len(experiment_rowids):
452
484
  raise NotFound("Unable to resolve one or more experiment IDs.")
453
485
  num_datasets = len(set(experiment.dataset_id for experiment in experiments))
@@ -456,37 +488,19 @@ class Query:
456
488
  base_experiment = next(
457
489
  experiment for experiment in experiments if experiment.id == base_experiment_rowid
458
490
  )
459
- revision_ids = (
460
- select(func.max(models.DatasetExampleRevision.id))
461
- .join(
462
- models.DatasetExample,
463
- models.DatasetExample.id == models.DatasetExampleRevision.dataset_example_id,
464
- )
465
- .where(
466
- and_(
467
- models.DatasetExampleRevision.dataset_version_id
468
- <= base_experiment.dataset_version_id,
469
- models.DatasetExample.dataset_id == base_experiment.dataset_id,
470
- )
471
- )
472
- .group_by(models.DatasetExampleRevision.dataset_example_id)
473
- .scalar_subquery()
474
- )
491
+
492
+ # Use ExperimentDatasetExample to pull down examples.
493
+ # Splits are mutable and should not be used for comparison.
494
+ # The comparison should only occur against examples which were assigned to the same
495
+ # splits at the time of execution of the ExperimentRun.
475
496
  examples_query = (
476
497
  select(models.DatasetExample)
477
- .distinct(models.DatasetExample.id)
478
- .join(
479
- models.DatasetExampleRevision,
480
- onclause=and_(
481
- models.DatasetExample.id
482
- == models.DatasetExampleRevision.dataset_example_id,
483
- models.DatasetExampleRevision.id.in_(revision_ids),
484
- models.DatasetExampleRevision.revision_kind != "DELETE",
485
- ),
486
- )
498
+ .join(models.ExperimentDatasetExample)
499
+ .where(models.ExperimentDatasetExample.experiment_id == base_experiment_rowid)
487
500
  .order_by(models.DatasetExample.id.desc())
488
501
  .limit(page_size + 1)
489
502
  )
503
+
490
504
  if cursor is not None:
491
505
  examples_query = examples_query.where(models.DatasetExample.id < cursor.rowid)
492
506
 
@@ -1103,6 +1117,7 @@ class Query:
1103
1117
  after: Optional[CursorString] = UNSET,
1104
1118
  before: Optional[CursorString] = UNSET,
1105
1119
  filter: Optional[PromptFilter] = UNSET,
1120
+ labelIds: Optional[list[GlobalID]] = UNSET,
1106
1121
  ) -> Connection[Prompt]:
1107
1122
  args = ConnectionArgs(
1108
1123
  first=first,
@@ -1119,6 +1134,16 @@ class Query:
1119
1134
  stmt = stmt.where(column.ilike(f"%{filter.value}%")).order_by(
1120
1135
  models.Prompt.updated_at.desc()
1121
1136
  )
1137
+ if labelIds:
1138
+ stmt = stmt.join(models.PromptPromptLabel).where(
1139
+ models.PromptPromptLabel.prompt_label_id.in_(
1140
+ from_global_id_with_expected_type(
1141
+ global_id=label_id, expected_type_name="PromptLabel"
1142
+ )
1143
+ for label_id in labelIds
1144
+ )
1145
+ )
1146
+ stmt = stmt.distinct()
1122
1147
  async with info.context.db() as session:
1123
1148
  orm_prompts = await session.stream_scalars(stmt)
1124
1149
  data = [to_gql_prompt_from_orm(orm_prompt) async for orm_prompt in orm_prompts]
@@ -23,6 +23,9 @@ from starlette.concurrency import run_in_threadpool
23
23
  from starlette.datastructures import FormData, UploadFile
24
24
  from starlette.requests import Request
25
25
  from starlette.responses import Response
26
+ from starlette.status import (
27
+ HTTP_404_NOT_FOUND,
28
+ )
26
29
  from strawberry.relay import GlobalID
27
30
  from typing_extensions import TypeAlias, assert_never
28
31
 
@@ -34,8 +37,10 @@ from phoenix.db.insertion.dataset import (
34
37
  ExampleContent,
35
38
  add_dataset_examples,
36
39
  )
40
+ from phoenix.db.types.db_models import UNDEFINED
37
41
  from phoenix.server.api.types.Dataset import Dataset as DatasetNodeType
38
42
  from phoenix.server.api.types.DatasetExample import DatasetExample as DatasetExampleNodeType
43
+ from phoenix.server.api.types.DatasetSplit import DatasetSplit as DatasetSplitNodeType
39
44
  from phoenix.server.api.types.DatasetVersion import DatasetVersion as DatasetVersionNodeType
40
45
  from phoenix.server.api.types.node import from_global_id_with_expected_type
41
46
  from phoenix.server.api.utils import delete_projects, delete_traces
@@ -697,6 +702,7 @@ class DatasetExample(V1RoutesBaseModel):
697
702
  class ListDatasetExamplesData(V1RoutesBaseModel):
698
703
  dataset_id: str
699
704
  version_id: str
705
+ filtered_splits: list[str] = UNDEFINED
700
706
  examples: list[DatasetExample]
701
707
 
702
708
 
@@ -719,6 +725,10 @@ async def get_dataset_examples(
719
725
  "The ID of the dataset version (if omitted, returns data from the latest version)"
720
726
  ),
721
727
  ),
728
+ split: Optional[list[str]] = Query(
729
+ default=None,
730
+ description="List of dataset split identifiers (GlobalIDs or names) to filter by",
731
+ ),
722
732
  ) -> ListDatasetExamplesResponseBody:
723
733
  try:
724
734
  dataset_gid = GlobalID.from_id(id)
@@ -795,9 +805,13 @@ async def get_dataset_examples(
795
805
  )
796
806
 
797
807
  subquery = partial_subquery.subquery()
808
+
798
809
  # Query for the most recent example revisions that are not deleted
799
810
  query = (
800
- select(models.DatasetExample, models.DatasetExampleRevision)
811
+ select(
812
+ models.DatasetExample,
813
+ models.DatasetExampleRevision,
814
+ )
801
815
  .join(
802
816
  models.DatasetExampleRevision,
803
817
  models.DatasetExample.id == models.DatasetExampleRevision.dataset_example_id,
@@ -810,6 +824,28 @@ async def get_dataset_examples(
810
824
  .filter(models.DatasetExampleRevision.revision_kind != "DELETE")
811
825
  .order_by(models.DatasetExample.id.asc())
812
826
  )
827
+
828
+ # If splits are provided, filter by dataset splits
829
+ resolved_split_names: list[str] = []
830
+ if split:
831
+ # Resolve split identifiers (IDs or names) to IDs and names
832
+ resolved_split_ids, resolved_split_names = await _resolve_split_identifiers(
833
+ session, split
834
+ )
835
+
836
+ # Add filter for splits (join with the association table)
837
+ # Use distinct() to prevent duplicates when an example belongs to
838
+ # multiple splits
839
+ query = (
840
+ query.join(
841
+ models.DatasetSplitDatasetExample,
842
+ models.DatasetExample.id
843
+ == models.DatasetSplitDatasetExample.dataset_example_id,
844
+ )
845
+ .filter(models.DatasetSplitDatasetExample.dataset_split_id.in_(resolved_split_ids))
846
+ .distinct()
847
+ )
848
+
813
849
  examples = [
814
850
  DatasetExample(
815
851
  id=str(GlobalID("DatasetExample", str(example.id))),
@@ -824,6 +860,7 @@ async def get_dataset_examples(
824
860
  data=ListDatasetExamplesData(
825
861
  dataset_id=str(GlobalID("Dataset", str(resolved_dataset_id))),
826
862
  version_id=str(GlobalID("DatasetVersion", str(resolved_version_id))),
863
+ filtered_splits=resolved_split_names,
827
864
  examples=examples,
828
865
  )
829
866
  )
@@ -1080,3 +1117,115 @@ async def _get_db_examples(
1080
1117
 
1081
1118
  def _is_all_dict(seq: Sequence[Any]) -> bool:
1082
1119
  return all(map(lambda obj: isinstance(obj, dict), seq))
1120
+
1121
+
1122
+ # Split identifier helper types and functions
1123
+ class _SplitId(int): ...
1124
+
1125
+
1126
+ _SplitIdentifier: TypeAlias = Union[_SplitId, str]
1127
+
1128
+
1129
+ def _parse_split_identifier(split_identifier: str) -> _SplitIdentifier:
1130
+ """
1131
+ Parse a split identifier as either a GlobalID or a name.
1132
+
1133
+ Args:
1134
+ split_identifier: The identifier string (GlobalID or name)
1135
+
1136
+ Returns:
1137
+ Either a _SplitId or an Identifier
1138
+
1139
+ Raises:
1140
+ HTTPException: If the identifier format is invalid
1141
+ """
1142
+ if not split_identifier:
1143
+ raise HTTPException(422, "Invalid split identifier")
1144
+ try:
1145
+ split_id = from_global_id_with_expected_type(
1146
+ GlobalID.from_id(split_identifier),
1147
+ DatasetSplitNodeType.__name__,
1148
+ )
1149
+ except ValueError:
1150
+ return split_identifier
1151
+ return _SplitId(split_id)
1152
+
1153
+
1154
+ async def _resolve_split_identifiers(
1155
+ session: AsyncSession,
1156
+ split_identifiers: list[str],
1157
+ ) -> tuple[list[int], list[str]]:
1158
+ """
1159
+ Resolve a list of split identifiers (IDs or names) to split IDs and names.
1160
+
1161
+ Args:
1162
+ session: The database session
1163
+ split_identifiers: List of split identifiers (GlobalIDs or names)
1164
+
1165
+ Returns:
1166
+ Tuple of (list of split IDs, list of split names)
1167
+
1168
+ Raises:
1169
+ HTTPException: If any split identifier is invalid or not found
1170
+ """
1171
+ split_ids: list[int] = []
1172
+ split_names: list[str] = []
1173
+
1174
+ # Parse all identifiers first
1175
+ parsed_identifiers: list[_SplitIdentifier] = []
1176
+ for identifier_str in split_identifiers:
1177
+ parsed_identifiers.append(_parse_split_identifier(identifier_str.strip()))
1178
+
1179
+ # Separate IDs and names
1180
+ requested_ids: list[int] = []
1181
+ requested_names: list[str] = []
1182
+ for identifier in parsed_identifiers:
1183
+ if isinstance(identifier, _SplitId):
1184
+ requested_ids.append(int(identifier))
1185
+ elif isinstance(identifier, str):
1186
+ requested_names.append(identifier)
1187
+ else:
1188
+ assert_never(identifier)
1189
+
1190
+ # Query for splits by ID
1191
+ if requested_ids:
1192
+ id_results = await session.stream(
1193
+ select(models.DatasetSplit.id, models.DatasetSplit.name).where(
1194
+ models.DatasetSplit.id.in_(requested_ids)
1195
+ )
1196
+ )
1197
+ async for split_id, split_name in id_results:
1198
+ split_ids.append(split_id)
1199
+ split_names.append(split_name)
1200
+
1201
+ # Check if all requested IDs were found
1202
+ found_ids = set(split_ids[-len(requested_ids) :] if requested_ids else [])
1203
+ missing_ids = [sid for sid in requested_ids if sid not in found_ids]
1204
+ if missing_ids:
1205
+ raise HTTPException(
1206
+ status_code=HTTP_404_NOT_FOUND,
1207
+ detail=f"Dataset splits not found for IDs: {', '.join(map(str, missing_ids))}",
1208
+ )
1209
+
1210
+ # Query for splits by name
1211
+ if requested_names:
1212
+ name_results = await session.stream(
1213
+ select(models.DatasetSplit.id, models.DatasetSplit.name).where(
1214
+ models.DatasetSplit.name.in_(requested_names)
1215
+ )
1216
+ )
1217
+ name_to_id: dict[str, int] = {}
1218
+ async for split_id, split_name in name_results:
1219
+ split_ids.append(split_id)
1220
+ split_names.append(split_name)
1221
+ name_to_id[split_name] = split_id
1222
+
1223
+ # Check if all requested names were found
1224
+ missing_names = [name for name in requested_names if name not in name_to_id]
1225
+ if missing_names:
1226
+ raise HTTPException(
1227
+ status_code=HTTP_404_NOT_FOUND,
1228
+ detail=f"Dataset splits not found: {', '.join(missing_names)}",
1229
+ )
1230
+
1231
+ return split_ids, split_names
@@ -25,6 +25,7 @@ from phoenix.server.bearer_auth import PhoenixUser
25
25
  from phoenix.server.dml_event import ExperimentInsertEvent
26
26
  from phoenix.server.experiments.utils import generate_experiment_project_name
27
27
 
28
+ from .datasets import _resolve_split_identifiers
28
29
  from .models import V1RoutesBaseModel
29
30
  from .utils import ResponseBody, add_errors_to_responses, add_text_csv_content_to_responses
30
31
 
@@ -80,6 +81,10 @@ class CreateExperimentRequestBody(V1RoutesBaseModel):
80
81
  "(if omitted, the latest version will be used)"
81
82
  ),
82
83
  )
84
+ splits: Optional[list[str]] = Field(
85
+ default=None,
86
+ description="List of dataset split identifiers (GlobalIDs or names) to filter by",
87
+ )
83
88
  repetitions: int = Field(
84
89
  default=1, description="Number of times the experiment should be repeated for each example"
85
90
  )
@@ -192,6 +197,20 @@ async def create_experiment(
192
197
  project_name=project_name,
193
198
  user_id=user_id,
194
199
  )
200
+
201
+ if request_body.splits is not None:
202
+ # Resolve split identifiers (IDs or names) to IDs and names
203
+ resolved_split_ids, _ = await _resolve_split_identifiers(session, request_body.splits)
204
+
205
+ # Generate experiment dataset splits relation
206
+ # prior to the crosswalk table insert
207
+ # in insert_experiment_with_examples_snapshot
208
+ experiment.experiment_dataset_splits = [
209
+ models.ExperimentDatasetSplit(dataset_split_id=split_id)
210
+ for split_id in resolved_split_ids
211
+ ]
212
+
213
+ # crosswalk table assumes the relation is already present
195
214
  await insert_experiment_with_examples_snapshot(session, experiment)
196
215
 
197
216
  dialect = SupportedSQLDialect(session.bind.dialect.name)