arize-phoenix 12.7.1__tar.gz → 12.9.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 (512) hide show
  1. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/PKG-INFO +3 -1
  2. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/pyproject.toml +3 -0
  3. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/config.py +131 -9
  4. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/engines.py +127 -14
  5. arize_phoenix-12.9.0/src/phoenix/db/iam_auth.py +64 -0
  6. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/pg_config.py +10 -0
  7. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/context.py +23 -0
  8. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/__init__.py +6 -0
  9. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_groups.py +0 -2
  10. arize_phoenix-12.9.0/src/phoenix/server/api/dataloaders/experiment_runs_by_experiment_and_example.py +44 -0
  11. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_costs.py +3 -9
  12. arize_phoenix-12.9.0/src/phoenix/server/api/dataloaders/token_prices_by_model.py +30 -0
  13. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/playground_clients.py +3 -3
  14. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +47 -1
  15. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +2 -2
  16. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/api_key_mutations.py +2 -15
  17. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/chat_mutations.py +3 -2
  18. arize_phoenix-12.9.0/src/phoenix/server/api/mutations/dataset_label_mutations.py +243 -0
  19. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/dataset_mutations.py +8 -8
  20. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/dataset_split_mutations.py +13 -9
  21. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/model_mutations.py +4 -4
  22. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/project_session_annotations_mutations.py +4 -7
  23. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +3 -3
  24. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/prompt_mutations.py +24 -117
  25. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +8 -5
  26. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +10 -5
  27. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +9 -4
  28. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/user_mutations.py +4 -4
  29. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/queries.py +80 -213
  30. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/subscriptions.py +4 -4
  31. arize_phoenix-12.9.0/src/phoenix/server/api/types/Annotation.py +98 -0
  32. arize_phoenix-12.9.0/src/phoenix/server/api/types/ApiKey.py +23 -0
  33. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Dataset.py +88 -48
  34. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DatasetExample.py +34 -30
  35. arize_phoenix-12.9.0/src/phoenix/server/api/types/DatasetLabel.py +57 -0
  36. arize_phoenix-12.9.0/src/phoenix/server/api/types/DatasetSplit.py +98 -0
  37. arize_phoenix-12.9.0/src/phoenix/server/api/types/DatasetVersion.py +59 -0
  38. arize_phoenix-12.9.0/src/phoenix/server/api/types/DocumentAnnotation.py +212 -0
  39. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Experiment.py +146 -55
  40. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroup.py +10 -1
  41. arize_phoenix-12.9.0/src/phoenix/server/api/types/ExperimentRun.py +223 -0
  42. arize_phoenix-12.9.0/src/phoenix/server/api/types/ExperimentRunAnnotation.py +175 -0
  43. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/GenerativeModel.py +95 -42
  44. arize_phoenix-12.9.0/src/phoenix/server/api/types/ModelInterface.py +16 -0
  45. arize_phoenix-12.9.0/src/phoenix/server/api/types/PlaygroundModel.py +20 -0
  46. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Project.py +70 -75
  47. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ProjectSession.py +69 -37
  48. arize_phoenix-12.9.0/src/phoenix/server/api/types/ProjectSessionAnnotation.py +187 -0
  49. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +1 -1
  50. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Prompt.py +82 -44
  51. arize_phoenix-12.9.0/src/phoenix/server/api/types/PromptLabel.py +58 -0
  52. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/PromptVersion.py +11 -8
  53. arize_phoenix-12.9.0/src/phoenix/server/api/types/PromptVersionTag.py +80 -0
  54. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Span.py +116 -115
  55. arize_phoenix-12.9.0/src/phoenix/server/api/types/SpanAnnotation.py +214 -0
  56. arize_phoenix-12.9.0/src/phoenix/server/api/types/SystemApiKey.py +73 -0
  57. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Trace.py +45 -44
  58. arize_phoenix-12.9.0/src/phoenix/server/api/types/TraceAnnotation.py +167 -0
  59. arize_phoenix-12.9.0/src/phoenix/server/api/types/User.py +140 -0
  60. arize_phoenix-12.9.0/src/phoenix/server/api/types/UserApiKey.py +92 -0
  61. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/app.py +29 -0
  62. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +2 -2
  63. arize_phoenix-12.9.0/src/phoenix/server/static/.vite/manifest.json +93 -0
  64. arize_phoenix-12.7.1/src/phoenix/server/static/assets/components-BLK5vehh.js → arize_phoenix-12.9.0/src/phoenix/server/static/assets/components-v927s3NF.js +471 -484
  65. arize_phoenix-12.7.1/src/phoenix/server/static/assets/index-BP0Shd90.js → arize_phoenix-12.9.0/src/phoenix/server/static/assets/index-DrD9eSrN.js +20 -16
  66. arize_phoenix-12.7.1/src/phoenix/server/static/assets/pages-DIVgyYyy.js → arize_phoenix-12.9.0/src/phoenix/server/static/assets/pages-GVybXa_W.js +754 -753
  67. arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-3BvTzoBp.js → arize_phoenix-12.9.0/src/phoenix/server/static/assets/vendor-D-csRHGZ.js +1 -1
  68. arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-arizeai-C6_oC0y8.js → arize_phoenix-12.9.0/src/phoenix/server/static/assets/vendor-arizeai-BJLCG_Gc.js +1 -1
  69. arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-codemirror-DPnZGAZA.js → arize_phoenix-12.9.0/src/phoenix/server/static/assets/vendor-codemirror-Cr963DyP.js +3 -3
  70. arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-recharts-CjgSbsB0.js → arize_phoenix-12.9.0/src/phoenix/server/static/assets/vendor-recharts-DgmPLgIp.js +1 -1
  71. arize_phoenix-12.7.1/src/phoenix/server/static/assets/vendor-shiki-CJyhDG0E.js → arize_phoenix-12.9.0/src/phoenix/server/static/assets/vendor-shiki-wYOt1s7u.js +1 -1
  72. arize_phoenix-12.9.0/src/phoenix/version.py +1 -0
  73. arize_phoenix-12.7.1/src/phoenix/server/api/mutations/dataset_label_mutations.py +0 -291
  74. arize_phoenix-12.7.1/src/phoenix/server/api/types/Annotation.py +0 -31
  75. arize_phoenix-12.7.1/src/phoenix/server/api/types/ApiKey.py +0 -27
  76. arize_phoenix-12.7.1/src/phoenix/server/api/types/DatasetLabel.py +0 -23
  77. arize_phoenix-12.7.1/src/phoenix/server/api/types/DatasetSplit.py +0 -32
  78. arize_phoenix-12.7.1/src/phoenix/server/api/types/DatasetVersion.py +0 -14
  79. arize_phoenix-12.7.1/src/phoenix/server/api/types/DocumentAnnotation.py +0 -92
  80. arize_phoenix-12.7.1/src/phoenix/server/api/types/ExperimentRun.py +0 -166
  81. arize_phoenix-12.7.1/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -56
  82. arize_phoenix-12.7.1/src/phoenix/server/api/types/ModelInterface.py +0 -11
  83. arize_phoenix-12.7.1/src/phoenix/server/api/types/PlaygroundModel.py +0 -10
  84. arize_phoenix-12.7.1/src/phoenix/server/api/types/ProjectSessionAnnotation.py +0 -68
  85. arize_phoenix-12.7.1/src/phoenix/server/api/types/PromptLabel.py +0 -24
  86. arize_phoenix-12.7.1/src/phoenix/server/api/types/PromptVersionTag.py +0 -40
  87. arize_phoenix-12.7.1/src/phoenix/server/api/types/SpanAnnotation.py +0 -67
  88. arize_phoenix-12.7.1/src/phoenix/server/api/types/SystemApiKey.py +0 -9
  89. arize_phoenix-12.7.1/src/phoenix/server/api/types/TraceAnnotation.py +0 -71
  90. arize_phoenix-12.7.1/src/phoenix/server/api/types/User.py +0 -70
  91. arize_phoenix-12.7.1/src/phoenix/server/api/types/UserApiKey.py +0 -45
  92. arize_phoenix-12.7.1/src/phoenix/server/static/.vite/manifest.json +0 -93
  93. arize_phoenix-12.7.1/src/phoenix/version.py +0 -1
  94. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/.gitignore +0 -0
  95. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/IP_NOTICE +0 -0
  96. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/LICENSE +0 -0
  97. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/README.md +0 -0
  98. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/__init__.py +0 -0
  99. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/auth.py +0 -0
  100. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/core/__init__.py +0 -0
  101. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/core/embedding_dimension.py +0 -0
  102. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/core/model.py +0 -0
  103. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/core/model_schema.py +0 -0
  104. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  105. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/datetime_utils.py +0 -0
  106. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/README.md +0 -0
  107. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/__init__.py +0 -0
  108. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/alembic.ini +0 -0
  109. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/bulk_inserter.py +0 -0
  110. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/constants.py +0 -0
  111. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/enums.py +0 -0
  112. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/facilitator.py +0 -0
  113. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/helpers.py +0 -0
  114. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/__init__.py +0 -0
  115. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/constants.py +0 -0
  116. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/dataset.py +0 -0
  117. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  118. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  119. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/helpers.py +0 -0
  120. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/session_annotation.py +0 -0
  121. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/span.py +0 -0
  122. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  123. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  124. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/insertion/types.py +0 -0
  125. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrate.py +0 -0
  126. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/__init__.py +0 -0
  127. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  128. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  129. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/env.py +0 -0
  130. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  131. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/01a8342c9cdf_add_user_id_on_datasets.py +0 -0
  132. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/0df286449799_add_session_annotations_table.py +0 -0
  133. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  134. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/272b66ff50f8_drop_single_indices.py +0 -0
  135. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
  136. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  137. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  138. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/58228d933c91_dataset_labels.py +0 -0
  139. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/699f655af132_experiment_tags.py +0 -0
  140. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
  141. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/735d3d93c33e_add_composite_indices.py +0 -0
  142. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
  143. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
  144. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/ab513d89518b_add_user_id_on_dataset_versions.py +0 -0
  145. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
  146. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  147. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  148. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  149. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/d0690a79ea51_users_on_experiments.py +0 -0
  150. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/deb2c81c0bb2_dataset_splits.py +0 -0
  151. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/migrations/versions/e76cbd66ffc3_add_experiments_dataset_examples.py +0 -0
  152. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/models.py +0 -0
  153. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/types/__init__.py +0 -0
  154. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/types/annotation_configs.py +0 -0
  155. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/types/db_models.py +0 -0
  156. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/types/identifier.py +0 -0
  157. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/types/model_provider.py +0 -0
  158. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/types/token_price_customization.py +0 -0
  159. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/db/types/trace_retention.py +0 -0
  160. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/exceptions.py +0 -0
  161. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/__init__.py +0 -0
  162. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  163. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  164. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  165. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  166. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  167. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/functions.py +0 -0
  168. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/tracing.py +0 -0
  169. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/types.py +0 -0
  170. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/experiments/utils.py +0 -0
  171. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/inferences/__init__.py +0 -0
  172. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/inferences/errors.py +0 -0
  173. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/inferences/fixtures.py +0 -0
  174. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/inferences/inferences.py +0 -0
  175. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/inferences/schema.py +0 -0
  176. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/inferences/validation.py +0 -0
  177. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/logging/__init__.py +0 -0
  178. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/logging/_config.py +0 -0
  179. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/logging/_filter.py +0 -0
  180. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/logging/_formatter.py +0 -0
  181. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/metrics/README.md +0 -0
  182. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/metrics/__init__.py +0 -0
  183. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/metrics/binning.py +0 -0
  184. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/metrics/metrics.py +0 -0
  185. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/metrics/mixins.py +0 -0
  186. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  187. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/metrics/timeseries.py +0 -0
  188. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/metrics/wrappers.py +0 -0
  189. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/pointcloud/__init__.py +0 -0
  190. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/pointcloud/clustering.py +0 -0
  191. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  192. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/pointcloud/projectors.py +0 -0
  193. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  194. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/py.typed +0 -0
  195. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/__init__.py +0 -0
  196. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/README.md +0 -0
  197. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/__init__.py +0 -0
  198. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/auth.py +0 -0
  199. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/auth_messages.py +0 -0
  200. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
  201. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  202. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/average_experiment_repeated_run_group_latency.py +0 -0
  203. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  204. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  205. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  206. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/dataset_dataset_splits.py +0 -0
  207. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  208. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  209. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/dataset_example_splits.py +0 -0
  210. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/dataset_examples_and_versions_by_experiment_run.py +0 -0
  211. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/dataset_labels.py +0 -0
  212. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  213. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  214. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  215. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  216. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/experiment_dataset_splits.py +0 -0
  217. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  218. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_group_annotation_summaries.py +0 -0
  219. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  220. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  221. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  222. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
  223. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  224. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  225. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  226. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
  227. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  228. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
  229. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  230. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  231. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/session_annotations_by_session.py +0 -0
  232. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  233. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  234. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  235. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  236. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  237. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  238. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  239. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
  240. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
  241. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
  242. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
  243. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
  244. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
  245. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
  246. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_repeated_run_group.py +0 -0
  247. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
  248. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
  249. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
  250. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
  251. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
  252. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  253. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  254. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  255. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  256. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  257. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/trace_annotations_by_trace.py +0 -0
  258. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  259. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
  260. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  261. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
  262. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  263. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  264. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/exceptions.py +0 -0
  265. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  266. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
  267. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  268. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  269. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  270. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  271. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/playground_users.py +0 -0
  272. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  273. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  274. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  275. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
  276. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  277. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  278. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  279. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  280. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/AnnotationFilter.py +0 -0
  281. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  282. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  283. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  284. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  285. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  286. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  287. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
  288. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/CreateProjectSessionAnnotationInput.py +0 -0
  289. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  290. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  291. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  292. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  293. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
  294. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  295. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  296. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  297. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  298. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  299. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  300. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  301. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  302. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/ExperimentRunSort.py +0 -0
  303. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
  304. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  305. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  306. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  307. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  308. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  309. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  310. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  311. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
  312. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  313. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
  314. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/PromptFilter.py +0 -0
  315. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  316. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  317. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  318. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
  319. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  320. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  321. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/UpdateAnnotationInput.py +0 -0
  322. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  323. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  324. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/interceptor.py +0 -0
  325. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  326. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  327. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  328. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  329. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
  330. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
  331. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  332. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/openapi/main.py +0 -0
  333. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  334. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  335. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/auth.py +0 -0
  336. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  337. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  338. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/utils.py +0 -0
  339. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  340. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
  341. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
  342. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  343. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/documents.py +0 -0
  344. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  345. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  346. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  347. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  348. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  349. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
  350. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  351. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/sessions.py +0 -0
  352. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  353. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  354. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
  355. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  356. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/schema.py +0 -0
  357. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
  358. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
  359. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  360. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  361. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  362. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  363. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  364. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  365. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
  366. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  367. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
  368. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  369. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  370. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DatasetExperimentAnnotationSummary.py +0 -0
  371. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  372. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  373. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  374. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  375. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  376. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  377. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  378. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  379. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  380. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  381. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  382. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Event.py +0 -0
  383. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  384. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  385. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  386. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  387. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroupAnnotationSummary.py +0 -0
  388. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  389. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  390. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  391. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  392. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
  393. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  394. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  395. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  396. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  397. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  398. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  399. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  400. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  401. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  402. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  403. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  404. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/Segments.py +0 -0
  405. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ServerStatus.py +0 -0
  406. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  407. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
  408. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
  409. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  410. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  411. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
  412. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
  413. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  414. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  415. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  416. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  417. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  418. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  419. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/__init__.py +0 -0
  420. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/node.py +0 -0
  421. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/types/pagination.py +0 -0
  422. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/api/utils.py +0 -0
  423. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/authorization.py +0 -0
  424. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/bearer_auth.py +0 -0
  425. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
  426. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
  427. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
  428. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
  429. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
  430. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
  431. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/daemons/__init__.py +0 -0
  432. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
  433. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
  434. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/daemons/span_cost_calculator.py +0 -0
  435. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/dml_event.py +0 -0
  436. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/dml_event_handler.py +0 -0
  437. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/email/__init__.py +0 -0
  438. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/email/sender.py +0 -0
  439. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  440. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
  441. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  442. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/email/templates/welcome.html +0 -0
  443. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/email/types.py +0 -0
  444. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/experiments/__init__.py +0 -0
  445. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/experiments/utils.py +0 -0
  446. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/grpc_server.py +0 -0
  447. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/jwt_store.py +0 -0
  448. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/main.py +0 -0
  449. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/middleware/__init__.py +0 -0
  450. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/middleware/gzip.py +0 -0
  451. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/oauth2.py +0 -0
  452. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/openapi/__init__.py +0 -0
  453. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/prometheus.py +0 -0
  454. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/rate_limiters.py +0 -0
  455. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/retention.py +0 -0
  456. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/session_filters.py +0 -0
  457. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  458. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  459. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  460. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  461. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  462. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  463. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  464. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  465. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/assets/vendor-BGzfc4EU.css +0 -0
  466. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/assets/vendor-three-BtCyLs1w.js +0 -0
  467. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/favicon.ico +0 -0
  468. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/static/modernizr.js +0 -0
  469. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/telemetry.py +0 -0
  470. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/templates/__init__.py +0 -0
  471. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/templates/index.html +0 -0
  472. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/thread_server.py +0 -0
  473. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/types.py +0 -0
  474. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/server/utils.py +0 -0
  475. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/services.py +0 -0
  476. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/session/__init__.py +0 -0
  477. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/session/client.py +0 -0
  478. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/session/data_extractor.py +0 -0
  479. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/session/evaluation.py +0 -0
  480. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/session/session.py +0 -0
  481. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/settings.py +0 -0
  482. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/__init__.py +0 -0
  483. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/attributes.py +0 -0
  484. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/dsl/README.md +0 -0
  485. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  486. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/dsl/filter.py +0 -0
  487. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  488. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/dsl/query.py +0 -0
  489. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/errors.py +0 -0
  490. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  491. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/exporter.py +0 -0
  492. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/fixtures.py +0 -0
  493. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/otel.py +0 -0
  494. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/projects.py +0 -0
  495. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/schemas.py +0 -0
  496. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/span_evaluations.py +0 -0
  497. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  498. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  499. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/trace_dataset.py +0 -0
  500. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/utils.py +0 -0
  501. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/v1/__init__.py +0 -0
  502. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  503. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  504. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/utilities/__init__.py +0 -0
  505. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/utilities/client.py +0 -0
  506. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/utilities/error_handling.py +0 -0
  507. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/utilities/json.py +0 -0
  508. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/utilities/logging.py +0 -0
  509. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/utilities/project.py +0 -0
  510. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/utilities/re.py +0 -0
  511. {arize_phoenix-12.7.1 → arize_phoenix-12.9.0}/src/phoenix/utilities/span_store.py +0 -0
  512. {arize_phoenix-12.7.1 → arize_phoenix-12.9.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.7.1
3
+ Version: 12.9.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
@@ -59,6 +59,8 @@ Requires-Dist: tqdm
59
59
  Requires-Dist: typing-extensions>=4.6
60
60
  Requires-Dist: uvicorn
61
61
  Requires-Dist: wrapt<2,>=1.17.2
62
+ Provides-Extra: aws
63
+ Requires-Dist: boto3; extra == 'aws'
62
64
  Provides-Extra: container
63
65
  Requires-Dist: aiohttp; extra == 'container'
64
66
  Requires-Dist: anthropic>=0.49.0; extra == 'container'
@@ -120,6 +120,9 @@ pg = [
120
120
  "asyncpg",
121
121
  "psycopg[binary,pool]",
122
122
  ]
123
+ aws = [
124
+ "boto3",
125
+ ]
123
126
  container = [
124
127
  "anthropic>=0.49.0",
125
128
  "google-genai",
@@ -91,16 +91,44 @@ Used with PHOENIX_POSTGRES_HOST to specify the port to use for the PostgreSQL da
91
91
  ENV_PHOENIX_POSTGRES_USER = "PHOENIX_POSTGRES_USER"
92
92
  """
93
93
  Used with PHOENIX_POSTGRES_HOST to specify the user to use for the PostgreSQL database (required).
94
+
95
+ When using AWS RDS IAM authentication (PHOENIX_POSTGRES_USE_AWS_IAM_AUTH=true), this should be
96
+ set to the IAM-enabled database username configured in your RDS/Aurora instance.
94
97
  """
95
98
  ENV_PHOENIX_POSTGRES_PASSWORD = "PHOENIX_POSTGRES_PASSWORD"
96
99
  """
97
100
  Used with PHOENIX_POSTGRES_HOST to specify the password to use for the PostgreSQL database
98
- (required).
101
+ (required, unless PHOENIX_POSTGRES_USE_AWS_IAM_AUTH is enabled).
102
+
103
+ When using AWS RDS IAM authentication (PHOENIX_POSTGRES_USE_AWS_IAM_AUTH=true), this password
104
+ is NOT used. Instead, authentication tokens are generated dynamically using AWS IAM credentials.
99
105
  """
100
106
  ENV_PHOENIX_POSTGRES_DB = "PHOENIX_POSTGRES_DB"
101
107
  """
102
108
  Used with PHOENIX_POSTGRES_HOST to specify the database to use for the PostgreSQL database.
103
109
  """
110
+ ENV_PHOENIX_POSTGRES_USE_AWS_IAM_AUTH = "PHOENIX_POSTGRES_USE_AWS_IAM_AUTH"
111
+ """
112
+ Enable AWS RDS IAM database authentication. When enabled, Phoenix will use AWS IAM credentials
113
+ to generate short-lived authentication tokens instead of using a static password.
114
+
115
+ This requires:
116
+ - boto3 to be installed: pip install 'arize-phoenix[aws]'
117
+ - AWS credentials configured (via environment, ~/.aws/credentials, or IAM role)
118
+ - AWS region configured via standard AWS methods
119
+ - The database user to be configured for IAM authentication in RDS/Aurora
120
+ - SSL to be enabled (required by AWS RDS IAM auth)
121
+
122
+ When enabled, PHOENIX_POSTGRES_PASSWORD should NOT be set.
123
+ """
124
+ ENV_PHOENIX_POSTGRES_AWS_IAM_TOKEN_LIFETIME_SECONDS = (
125
+ "PHOENIX_POSTGRES_AWS_IAM_TOKEN_LIFETIME_SECONDS"
126
+ )
127
+ """
128
+ Token lifetime in seconds for connection pool recycling when using AWS RDS IAM authentication.
129
+ AWS RDS auth tokens are valid for 15 minutes. This should be set slightly lower to ensure
130
+ tokens are refreshed before expiration. Defaults to 840 seconds (14 minutes).
131
+ """
104
132
  ENV_PHOENIX_SQL_DATABASE_SCHEMA = "PHOENIX_SQL_DATABASE_SCHEMA"
105
133
  """
106
134
  The schema to use for the PostgresSQL database. (This is ignored for SQLite.)
@@ -1400,18 +1428,36 @@ def get_env_postgres_connection_str() -> Optional[str]:
1400
1428
  """
1401
1429
  Build PostgreSQL connection string from environment variables.
1402
1430
  """
1403
- if not (
1404
- (pg_host := getenv(ENV_PHOENIX_POSTGRES_HOST, "").rstrip("/"))
1405
- and (pg_user := getenv(ENV_PHOENIX_POSTGRES_USER))
1406
- and (pg_password := getenv(ENV_PHOENIX_POSTGRES_PASSWORD))
1407
- ):
1431
+ pg_host = getenv(ENV_PHOENIX_POSTGRES_HOST, "").rstrip("/")
1432
+ pg_user = getenv(ENV_PHOENIX_POSTGRES_USER)
1433
+ pg_password = getenv(ENV_PHOENIX_POSTGRES_PASSWORD)
1434
+ use_iam_auth = _bool_val(ENV_PHOENIX_POSTGRES_USE_AWS_IAM_AUTH, False)
1435
+
1436
+ if not (pg_host and pg_user):
1408
1437
  return None
1438
+
1439
+ if use_iam_auth:
1440
+ if pg_password:
1441
+ raise ValueError(
1442
+ f"The environment variable {ENV_PHOENIX_POSTGRES_PASSWORD} is set but will be "
1443
+ "ignored when using AWS RDS IAM authentication "
1444
+ f"({ENV_PHOENIX_POSTGRES_USE_AWS_IAM_AUTH}=true). Authentication tokens will be "
1445
+ "generated using AWS credentials."
1446
+ )
1447
+ connection_str = f"postgresql://{quote(pg_user)}@{pg_host}"
1448
+ else:
1449
+ if not pg_password:
1450
+ raise ValueError(
1451
+ f"The environment variable {ENV_PHOENIX_POSTGRES_PASSWORD} is not set. "
1452
+ "Please set it to the password for the PostgreSQL database."
1453
+ )
1454
+ encoded_user = quote(pg_user)
1455
+ encoded_password = quote(pg_password)
1456
+ connection_str = f"postgresql://{encoded_user}:{encoded_password}@{pg_host}"
1457
+
1409
1458
  pg_port = getenv(ENV_PHOENIX_POSTGRES_PORT)
1410
1459
  pg_db = getenv(ENV_PHOENIX_POSTGRES_DB)
1411
1460
 
1412
- encoded_user = quote(pg_user)
1413
- encoded_password = quote(pg_password)
1414
- connection_str = f"postgresql://{encoded_user}:{encoded_password}@{pg_host}"
1415
1461
  if pg_port:
1416
1462
  connection_str = f"{connection_str}:{pg_port}"
1417
1463
  if pg_db:
@@ -1968,6 +2014,7 @@ def verify_server_environment_variables() -> None:
1968
2014
  get_env_database_usage_insertion_blocking_threshold_percentage()
1969
2015
  get_env_max_spans_queue_size()
1970
2016
  validate_env_support_email()
2017
+ _validate_iam_auth_config()
1971
2018
 
1972
2019
  # Notify users about deprecated environment variables if they are being used.
1973
2020
  if os.getenv("PHOENIX_ENABLE_WEBSOCKETS") is not None:
@@ -2026,3 +2073,78 @@ def get_env_allow_external_resources() -> bool:
2026
2073
  Defaults to True if not set.
2027
2074
  """
2028
2075
  return _bool_val(ENV_PHOENIX_ALLOW_EXTERNAL_RESOURCES, True)
2076
+
2077
+
2078
+ def get_env_postgres_use_iam_auth() -> bool:
2079
+ """
2080
+ Gets whether AWS RDS IAM authentication is enabled for PostgreSQL connections.
2081
+
2082
+ Returns:
2083
+ bool: True if IAM authentication should be used, False otherwise (default)
2084
+ """
2085
+ return _bool_val(ENV_PHOENIX_POSTGRES_USE_AWS_IAM_AUTH, False)
2086
+
2087
+
2088
+ def get_env_postgres_iam_token_lifetime() -> int:
2089
+ """
2090
+ Gets the token lifetime in seconds for AWS RDS IAM authentication pool recycling.
2091
+
2092
+ AWS RDS IAM tokens are valid for 15 minutes (900 seconds). This value should be
2093
+ set slightly lower to ensure connections are recycled before token expiration.
2094
+
2095
+ Returns:
2096
+ int: Token lifetime in seconds (default: 840 = 14 minutes)
2097
+ """
2098
+ lifetime = _int_val(ENV_PHOENIX_POSTGRES_AWS_IAM_TOKEN_LIFETIME_SECONDS, 840)
2099
+ if lifetime <= 0:
2100
+ raise ValueError(
2101
+ f"{ENV_PHOENIX_POSTGRES_AWS_IAM_TOKEN_LIFETIME_SECONDS} must be a positive integer. "
2102
+ f"Got: {lifetime}"
2103
+ )
2104
+ if lifetime > 900:
2105
+ logger.warning(
2106
+ f"{ENV_PHOENIX_POSTGRES_AWS_IAM_TOKEN_LIFETIME_SECONDS} is set to {lifetime} seconds, "
2107
+ f"which exceeds AWS RDS IAM token validity (900 seconds / 15 minutes). "
2108
+ f"Consider setting it to 840 seconds (14 minutes) or less."
2109
+ )
2110
+ return lifetime
2111
+
2112
+
2113
+ def _validate_iam_auth_config() -> None:
2114
+ """
2115
+ Validate AWS RDS IAM authentication configuration if enabled.
2116
+
2117
+ Raises:
2118
+ ImportError: If boto3 is not installed when IAM auth is enabled
2119
+ ValueError: If configuration is invalid
2120
+ """
2121
+ if not get_env_postgres_use_iam_auth():
2122
+ return
2123
+
2124
+ pg_host = getenv(ENV_PHOENIX_POSTGRES_HOST)
2125
+ if not pg_host:
2126
+ return
2127
+
2128
+ try:
2129
+ import boto3 # type: ignore # noqa: F401
2130
+ except ImportError:
2131
+ raise ImportError(
2132
+ f"boto3 is required when {ENV_PHOENIX_POSTGRES_USE_AWS_IAM_AUTH} is enabled. "
2133
+ "Install it with: pip install 'arize-phoenix[aws]'"
2134
+ )
2135
+
2136
+ if not getenv(ENV_PHOENIX_POSTGRES_USER):
2137
+ raise ValueError(
2138
+ f"{ENV_PHOENIX_POSTGRES_USER} must be set when using AWS RDS IAM authentication"
2139
+ )
2140
+
2141
+ try:
2142
+ client = boto3.client("sts") # pyright: ignore
2143
+ client.get_caller_identity() # pyright: ignore
2144
+ logger.info("✓ AWS credentials validated for RDS IAM authentication")
2145
+ except Exception as e:
2146
+ raise ValueError(
2147
+ f"Failed to validate AWS credentials for RDS IAM authentication: {e}. "
2148
+ "Ensure AWS credentials are configured via environment variables, "
2149
+ "~/.aws/credentials, or IAM role."
2150
+ )
@@ -5,7 +5,7 @@ import logging
5
5
  from collections.abc import Callable
6
6
  from enum import Enum
7
7
  from sqlite3 import Connection
8
- from typing import Any
8
+ from typing import Any, Optional
9
9
 
10
10
  import aiosqlite
11
11
  import numpy as np
@@ -168,29 +168,142 @@ def aio_postgresql_engine(
168
168
  log_to_stdout: bool = False,
169
169
  log_migrations_to_stdout: bool = True,
170
170
  ) -> AsyncEngine:
171
- asyncpg_url, asyncpg_args = get_pg_config(url, "asyncpg")
172
- engine = create_async_engine(
173
- url=asyncpg_url,
174
- connect_args=asyncpg_args,
175
- echo=log_to_stdout,
176
- json_serializer=_dumps,
171
+ from phoenix.config import (
172
+ get_env_postgres_iam_token_lifetime,
173
+ get_env_postgres_use_iam_auth,
177
174
  )
175
+
176
+ use_iam_auth = get_env_postgres_use_iam_auth()
177
+
178
+ asyncpg_url, asyncpg_args = get_pg_config(url, "asyncpg", enforce_ssl=use_iam_auth)
179
+
180
+ iam_config: Optional[dict[str, Any]] = None
181
+ token_lifetime: int = 0
182
+ if use_iam_auth:
183
+ iam_config = _extract_iam_config_from_url(url)
184
+ token_lifetime = get_env_postgres_iam_token_lifetime()
185
+
186
+ async def iam_async_creator() -> Any:
187
+ import asyncpg # type: ignore
188
+
189
+ from phoenix.db.iam_auth import generate_aws_rds_token
190
+
191
+ assert iam_config is not None
192
+ token = generate_aws_rds_token(
193
+ host=iam_config["host"],
194
+ port=iam_config["port"],
195
+ user=iam_config["user"],
196
+ )
197
+
198
+ conn_kwargs = {
199
+ "host": iam_config["host"],
200
+ "port": iam_config["port"],
201
+ "user": iam_config["user"],
202
+ "password": token,
203
+ "database": iam_config["database"],
204
+ }
205
+
206
+ if asyncpg_args:
207
+ conn_kwargs.update(asyncpg_args)
208
+
209
+ return await asyncpg.connect(**conn_kwargs)
210
+
211
+ engine = create_async_engine(
212
+ url=asyncpg_url,
213
+ async_creator=iam_async_creator,
214
+ echo=log_to_stdout,
215
+ json_serializer=_dumps,
216
+ pool_recycle=token_lifetime,
217
+ )
218
+ else:
219
+ engine = create_async_engine(
220
+ url=asyncpg_url,
221
+ connect_args=asyncpg_args,
222
+ echo=log_to_stdout,
223
+ json_serializer=_dumps,
224
+ )
225
+
178
226
  if not migrate:
179
227
  return engine
180
228
 
181
- psycopg_url, psycopg_args = get_pg_config(url, "psycopg")
182
- sync_engine = sqlalchemy.create_engine(
183
- url=psycopg_url,
184
- connect_args=psycopg_args,
185
- echo=log_migrations_to_stdout,
186
- json_serializer=_dumps,
187
- )
229
+ psycopg_url, psycopg_args = get_pg_config(url, "psycopg", enforce_ssl=use_iam_auth)
230
+
231
+ if use_iam_auth:
232
+ assert iam_config is not None
233
+
234
+ def iam_sync_creator() -> Any:
235
+ import psycopg
236
+
237
+ from phoenix.db.iam_auth import generate_aws_rds_token
238
+
239
+ token = generate_aws_rds_token(
240
+ host=iam_config["host"],
241
+ port=iam_config["port"],
242
+ user=iam_config["user"],
243
+ )
244
+
245
+ conn_kwargs = {
246
+ "host": iam_config["host"],
247
+ "port": iam_config["port"],
248
+ "user": iam_config["user"],
249
+ "password": token,
250
+ "dbname": iam_config["database"],
251
+ }
252
+
253
+ if psycopg_args:
254
+ conn_kwargs.update(psycopg_args)
255
+
256
+ return psycopg.connect(**conn_kwargs)
257
+
258
+ sync_engine = sqlalchemy.create_engine(
259
+ url=psycopg_url,
260
+ creator=iam_sync_creator,
261
+ echo=log_migrations_to_stdout,
262
+ json_serializer=_dumps,
263
+ pool_recycle=token_lifetime,
264
+ )
265
+ else:
266
+ sync_engine = sqlalchemy.create_engine(
267
+ url=psycopg_url,
268
+ connect_args=psycopg_args,
269
+ echo=log_migrations_to_stdout,
270
+ json_serializer=_dumps,
271
+ )
272
+
188
273
  if schema := get_env_database_schema():
189
274
  event.listen(sync_engine, "connect", set_postgresql_search_path(schema))
190
275
  migrate_in_thread(sync_engine)
191
276
  return engine
192
277
 
193
278
 
279
+ def _extract_iam_config_from_url(url: URL) -> dict[str, Any]:
280
+ """Extract connection parameters needed for IAM authentication from a SQLAlchemy URL.
281
+
282
+ Args:
283
+ url: SQLAlchemy database URL
284
+
285
+ Returns:
286
+ Dictionary with host, port, user, and database
287
+ """
288
+ host = url.host
289
+ if not host:
290
+ raise ValueError("Database host is required for IAM authentication")
291
+
292
+ port = url.port or 5432
293
+ user = url.username
294
+ if not user:
295
+ raise ValueError("Database user is required for IAM authentication")
296
+
297
+ database = url.database or "postgres"
298
+
299
+ return {
300
+ "host": host,
301
+ "port": port,
302
+ "user": user,
303
+ "database": database,
304
+ }
305
+
306
+
194
307
  def _dumps(obj: Any) -> str:
195
308
  return orjson.dumps(obj, default=_default).decode()
196
309
 
@@ -0,0 +1,64 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+
5
+ logger = logging.getLogger(__name__)
6
+
7
+
8
+ def generate_aws_rds_token(
9
+ host: str,
10
+ port: int,
11
+ user: str,
12
+ ) -> str:
13
+ """Generate an AWS RDS IAM authentication token.
14
+
15
+ This function creates a short-lived (15 minutes) authentication token for connecting
16
+ to AWS RDS/Aurora PostgreSQL instances using IAM database authentication.
17
+
18
+ The AWS region is automatically resolved using boto3.
19
+
20
+ Args:
21
+ host: The database hostname (e.g., 'mydb.abc123.us-west-2.rds.amazonaws.com')
22
+ port: The database port (typically 5432 for PostgreSQL)
23
+ user: The database username (must match an IAM-enabled database user)
24
+
25
+ Returns:
26
+ A temporary authentication token string to use as the database password
27
+
28
+ Raises:
29
+ ImportError: If boto3 is not installed
30
+ Exception: If AWS credentials/region are not configured or token generation fails
31
+
32
+ Example:
33
+ >>> token = generate_aws_rds_token(
34
+ ... host='mydb.us-west-2.rds.amazonaws.com',
35
+ ... port=5432,
36
+ ... user='myuser'
37
+ ... )
38
+ """
39
+ try:
40
+ import boto3 # type: ignore
41
+ except ImportError as e:
42
+ raise ImportError(
43
+ "boto3 is required for AWS RDS IAM authentication. "
44
+ "Install it with: pip install 'arize-phoenix[aws]'"
45
+ ) from e
46
+
47
+ try:
48
+ client = boto3.client("rds")
49
+
50
+ logger.debug(f"Generating AWS RDS IAM auth token for user '{user}' at {host}:{port}")
51
+ token = client.generate_db_auth_token( # pyright: ignore
52
+ DBHostname=host,
53
+ Port=port,
54
+ DBUsername=user,
55
+ )
56
+
57
+ return str(token) # pyright: ignore
58
+
59
+ except Exception as e:
60
+ logger.error(
61
+ f"Failed to generate AWS RDS IAM authentication token: {e}. "
62
+ "Ensure AWS credentials are configured and have 'rds-db:connect' permission."
63
+ )
64
+ raise
@@ -10,12 +10,14 @@ from typing_extensions import assert_never
10
10
  def get_pg_config(
11
11
  url: URL,
12
12
  driver: Literal["psycopg", "asyncpg"],
13
+ enforce_ssl: bool = False,
13
14
  ) -> tuple[URL, dict[str, Any]]:
14
15
  """Convert SQLAlchemy URL to driver-specific configuration.
15
16
 
16
17
  Args:
17
18
  url: SQLAlchemy URL
18
19
  driver: "psycopg" or "asyncpg"
20
+ enforce_ssl: If True, ensure SSL is enabled (required for AWS RDS IAM auth)
19
21
 
20
22
  Returns:
21
23
  Tuple of (base_url, connect_args):
@@ -26,6 +28,14 @@ def get_pg_config(
26
28
  query = url.query
27
29
  ssl_args = _get_ssl_args(query)
28
30
 
31
+ if enforce_ssl and not ssl_args:
32
+ ssl_args = {"sslmode": "require"}
33
+ elif enforce_ssl and ssl_args.get("sslmode") == "disable":
34
+ raise ValueError(
35
+ "SSL cannot be disabled when using AWS RDS IAM authentication. "
36
+ "Remove 'sslmode=disable' from the connection string."
37
+ )
38
+
29
39
  # Create base URL without SSL parameters
30
40
  base_url = url.set(
31
41
  drivername=f"postgresql+{driver}",
@@ -35,6 +35,7 @@ from phoenix.server.api.dataloaders import (
35
35
  ExperimentRepeatedRunGroupsDataLoader,
36
36
  ExperimentRunAnnotations,
37
37
  ExperimentRunCountsDataLoader,
38
+ ExperimentRunsByExperimentAndExampleDataLoader,
38
39
  ExperimentSequenceNumberDataLoader,
39
40
  LastUsedTimesByGenerativeModelIdDataLoader,
40
41
  LatencyMsQuantileDataLoader,
@@ -71,6 +72,7 @@ from phoenix.server.api.dataloaders import (
71
72
  SpanProjectsDataLoader,
72
73
  TableFieldsDataLoader,
73
74
  TokenCountDataLoader,
75
+ TokenPricesByModelDataLoader,
74
76
  TraceAnnotationsByTraceDataLoader,
75
77
  TraceByTraceIdsDataLoader,
76
78
  TraceRetentionPolicyIdByProjectIdDataLoader,
@@ -100,27 +102,38 @@ class DataLoaders:
100
102
  AverageExperimentRepeatedRunGroupLatencyDataLoader
101
103
  )
102
104
  average_experiment_run_latency: AverageExperimentRunLatencyDataLoader
105
+ dataset_example_fields: TableFieldsDataLoader
103
106
  dataset_example_revisions: DatasetExampleRevisionsDataLoader
104
107
  dataset_example_spans: DatasetExampleSpansDataLoader
105
108
  dataset_labels: DatasetLabelsDataLoader
109
+ dataset_label_fields: TableFieldsDataLoader
106
110
  dataset_dataset_splits: DatasetDatasetSplitsDataLoader
107
111
  dataset_examples_and_versions_by_experiment_run: (
108
112
  DatasetExamplesAndVersionsByExperimentRunDataLoader
109
113
  )
110
114
  dataset_example_splits: DatasetExampleSplitsDataLoader
115
+ dataset_fields: TableFieldsDataLoader
116
+ dataset_split_fields: TableFieldsDataLoader
117
+ dataset_version_fields: TableFieldsDataLoader
118
+ document_annotation_fields: TableFieldsDataLoader
111
119
  document_evaluation_summaries: DocumentEvaluationSummaryDataLoader
112
120
  document_evaluations: DocumentEvaluationsDataLoader
113
121
  document_retrieval_metrics: DocumentRetrievalMetricsDataLoader
114
122
  experiment_annotation_summaries: ExperimentAnnotationSummaryDataLoader
115
123
  experiment_dataset_splits: ExperimentDatasetSplitsDataLoader
116
124
  experiment_error_rates: ExperimentErrorRatesDataLoader
125
+ experiment_fields: TableFieldsDataLoader
117
126
  experiment_repeated_run_group_annotation_summaries: (
118
127
  ExperimentRepeatedRunGroupAnnotationSummariesDataLoader
119
128
  )
120
129
  experiment_repeated_run_groups: ExperimentRepeatedRunGroupsDataLoader
130
+ experiment_run_annotation_fields: TableFieldsDataLoader
121
131
  experiment_run_annotations: ExperimentRunAnnotations
122
132
  experiment_run_counts: ExperimentRunCountsDataLoader
133
+ experiment_run_fields: TableFieldsDataLoader
134
+ experiment_runs_by_experiment_and_example: ExperimentRunsByExperimentAndExampleDataLoader
123
135
  experiment_sequence_number: ExperimentSequenceNumberDataLoader
136
+ generative_model_fields: TableFieldsDataLoader
124
137
  last_used_times_by_generative_model_id: LastUsedTimesByGenerativeModelIdDataLoader
125
138
  latency_ms_quantile: LatencyMsQuantileDataLoader
126
139
  min_start_or_max_end_times: MinStartOrMaxEndTimeDataLoader
@@ -130,7 +143,12 @@ class DataLoaders:
130
143
  project_fields: TableFieldsDataLoader
131
144
  project_trace_retention_policy_fields: TableFieldsDataLoader
132
145
  projects_by_trace_retention_policy_id: ProjectIdsByTraceRetentionPolicyIdDataLoader
146
+ prompt_fields: TableFieldsDataLoader
147
+ prompt_label_fields: TableFieldsDataLoader
133
148
  prompt_version_sequence_number: PromptVersionSequenceNumberDataLoader
149
+ prompt_version_tag_fields: TableFieldsDataLoader
150
+ project_session_annotation_fields: TableFieldsDataLoader
151
+ project_session_fields: TableFieldsDataLoader
134
152
  record_counts: RecordCountDataLoader
135
153
  session_annotations_by_session: SessionAnnotationsBySessionDataLoader
136
154
  session_first_inputs: SessionIODataLoader
@@ -139,6 +157,7 @@ class DataLoaders:
139
157
  session_num_traces_with_error: SessionNumTracesWithErrorDataLoader
140
158
  session_token_usages: SessionTokenUsagesDataLoader
141
159
  session_trace_latency_ms_quantile: SessionTraceLatencyMsQuantileDataLoader
160
+ span_annotation_fields: TableFieldsDataLoader
142
161
  span_annotations: SpanAnnotationsDataLoader
143
162
  span_by_id: SpanByIdDataLoader
144
163
  span_cost_by_span: SpanCostBySpanDataLoader
@@ -167,12 +186,16 @@ class DataLoaders:
167
186
  span_fields: TableFieldsDataLoader
168
187
  span_projects: SpanProjectsDataLoader
169
188
  token_counts: TokenCountDataLoader
189
+ token_prices_by_model: TokenPricesByModelDataLoader
190
+ trace_annotation_fields: TableFieldsDataLoader
170
191
  trace_annotations_by_trace: TraceAnnotationsByTraceDataLoader
171
192
  trace_by_trace_ids: TraceByTraceIdsDataLoader
172
193
  trace_fields: TableFieldsDataLoader
173
194
  trace_retention_policy_id_by_project_id: TraceRetentionPolicyIdByProjectIdDataLoader
174
195
  trace_root_spans: TraceRootSpansDataLoader
175
196
  user_roles: UserRolesDataLoader
197
+ user_api_key_fields: TableFieldsDataLoader
198
+ user_fields: TableFieldsDataLoader
176
199
  users: UsersDataLoader
177
200
 
178
201
 
@@ -33,6 +33,9 @@ from .experiment_repeated_run_group_annotation_summaries import (
33
33
  from .experiment_repeated_run_groups import ExperimentRepeatedRunGroupsDataLoader
34
34
  from .experiment_run_annotations import ExperimentRunAnnotations
35
35
  from .experiment_run_counts import ExperimentRunCountsDataLoader
36
+ from .experiment_runs_by_experiment_and_example import (
37
+ ExperimentRunsByExperimentAndExampleDataLoader,
38
+ )
36
39
  from .experiment_sequence_number import ExperimentSequenceNumberDataLoader
37
40
  from .last_used_times_by_generative_model_id import LastUsedTimesByGenerativeModelIdDataLoader
38
41
  from .latency_ms_quantile import LatencyMsQuantileCache, LatencyMsQuantileDataLoader
@@ -73,6 +76,7 @@ from .span_descendants import SpanDescendantsDataLoader
73
76
  from .span_projects import SpanProjectsDataLoader
74
77
  from .table_fields import TableFieldsDataLoader
75
78
  from .token_counts import TokenCountCache, TokenCountDataLoader
79
+ from .token_prices_by_model import TokenPricesByModelDataLoader
76
80
  from .trace_annotations_by_trace import TraceAnnotationsByTraceDataLoader
77
81
  from .trace_by_trace_ids import TraceByTraceIdsDataLoader
78
82
  from .trace_retention_policy_id_by_project_id import TraceRetentionPolicyIdByProjectIdDataLoader
@@ -102,6 +106,7 @@ __all__ = [
102
106
  "ExperimentRepeatedRunGroupAnnotationSummariesDataLoader",
103
107
  "ExperimentRunAnnotations",
104
108
  "ExperimentRunCountsDataLoader",
109
+ "ExperimentRunsByExperimentAndExampleDataLoader",
105
110
  "ExperimentSequenceNumberDataLoader",
106
111
  "LastUsedTimesByGenerativeModelIdDataLoader",
107
112
  "LatencyMsQuantileDataLoader",
@@ -139,6 +144,7 @@ __all__ = [
139
144
  "SpanProjectsDataLoader",
140
145
  "TableFieldsDataLoader",
141
146
  "TokenCountDataLoader",
147
+ "TokenPricesByModelDataLoader",
142
148
  "TraceAnnotationsByTraceDataLoader",
143
149
  "TraceByTraceIdsDataLoader",
144
150
  "TraceRetentionPolicyIdByProjectIdDataLoader",
@@ -1,7 +1,6 @@
1
1
  from dataclasses import dataclass
2
2
 
3
3
  from sqlalchemy import select, tuple_
4
- from sqlalchemy.orm import joinedload
5
4
  from strawberry.dataloader import DataLoader
6
5
  from typing_extensions import TypeAlias
7
6
 
@@ -38,7 +37,6 @@ class ExperimentRepeatedRunGroupsDataLoader(DataLoader[Key, Result]):
38
37
  ).in_(set(keys))
39
38
  )
40
39
  .order_by(models.ExperimentRun.repetition_number)
41
- .options(joinedload(models.ExperimentRun.trace).load_only(models.Trace.trace_id))
42
40
  )
43
41
 
44
42
  async with self._db() as session:
@@ -0,0 +1,44 @@
1
+ from collections import defaultdict
2
+
3
+ from sqlalchemy import select, tuple_
4
+ from strawberry.dataloader import DataLoader
5
+ from typing_extensions import TypeAlias
6
+
7
+ from phoenix.db import models
8
+ from phoenix.server.types import DbSessionFactory
9
+
10
+ ExperimentId: TypeAlias = int
11
+ DatasetExampleId: TypeAlias = int
12
+ Key: TypeAlias = tuple[ExperimentId, DatasetExampleId]
13
+ Result: TypeAlias = list[models.ExperimentRun]
14
+
15
+
16
+ class ExperimentRunsByExperimentAndExampleDataLoader(DataLoader[Key, Result]):
17
+ def __init__(self, db: DbSessionFactory) -> None:
18
+ super().__init__(load_fn=self._load_fn)
19
+ self._db = db
20
+
21
+ async def _load_fn(self, keys: list[Key]) -> list[Result]:
22
+ runs_by_key: defaultdict[Key, Result] = defaultdict(list)
23
+
24
+ async with self._db() as session:
25
+ stmt = (
26
+ select(models.ExperimentRun)
27
+ .where(
28
+ tuple_(
29
+ models.ExperimentRun.experiment_id,
30
+ models.ExperimentRun.dataset_example_id,
31
+ ).in_(keys)
32
+ )
33
+ .order_by(
34
+ models.ExperimentRun.experiment_id,
35
+ models.ExperimentRun.dataset_example_id,
36
+ models.ExperimentRun.repetition_number,
37
+ )
38
+ )
39
+ result = await session.stream_scalars(stmt)
40
+ async for run in result:
41
+ key = (run.experiment_id, run.dataset_example_id)
42
+ runs_by_key[key].append(run)
43
+
44
+ return [runs_by_key[key] for key in keys]
@@ -1,7 +1,6 @@
1
1
  from typing import Optional
2
2
 
3
3
  from sqlalchemy import select
4
- from sqlalchemy.orm import joinedload, load_only
5
4
  from strawberry.dataloader import DataLoader
6
5
  from typing_extensions import TypeAlias
7
6
 
@@ -22,14 +21,9 @@ class SpanCostsDataLoader(DataLoader[Key, Result]):
22
21
  span_ids = list(set(keys))
23
22
  async with self._db() as session:
24
23
  costs = {
25
- span.id: span.span_cost
26
- async for span in await session.stream_scalars(
27
- select(models.Span)
28
- .where(models.Span.id.in_(span_ids))
29
- .options(
30
- load_only(models.Span.id),
31
- joinedload(models.Span.span_cost),
32
- )
24
+ span_cost.span_rowid: span_cost
25
+ async for span_cost in await session.stream_scalars(
26
+ select(models.SpanCost).where(models.SpanCost.span_rowid.in_(span_ids))
33
27
  )
34
28
  }
35
29
  return [costs.get(span_id) for span_id in keys]