arize-phoenix 11.24.1__tar.gz → 11.25.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 (452) hide show
  1. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/PKG-INFO +1 -1
  2. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/__init__.py +2 -1
  3. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/engines.py +12 -18
  4. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/document_annotation.py +0 -1
  5. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/span_annotation.py +0 -1
  6. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/trace_annotation.py +0 -1
  7. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/types.py +0 -15
  8. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/models.py +2 -2
  9. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +60 -8
  10. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +40 -8
  11. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/record_counts.py +37 -10
  12. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +28 -14
  13. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/playground_clients.py +10 -4
  14. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/spans.py +17 -17
  15. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Project.py +106 -44
  16. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/sender.py +5 -2
  17. arize_phoenix-11.25.0/src/phoenix/server/session_filters.py +49 -0
  18. arize_phoenix-11.25.0/src/phoenix/server/static/.vite/manifest.json +93 -0
  19. arize_phoenix-11.24.1/src/phoenix/server/static/assets/components-CBjkyAZ_.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/components-Dpf_EwE7.js +334 -332
  20. arize_phoenix-11.24.1/src/phoenix/server/static/assets/index-kl9TdGAc.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/index-gkM1FDH4.js +5 -2
  21. arize_phoenix-11.24.1/src/phoenix/server/static/assets/pages-B8T9ap-6.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/pages-Dz3WExiG.js +703 -462
  22. arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-CU36oj8y.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-RdRDaQiR.js +1 -1
  23. arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-arizeai-Ctgw0e1G.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-arizeai-DsYDNOqt.js +2 -2
  24. arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-codemirror-Cojjzqb9.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-codemirror-BzJDUbEx.js +3 -3
  25. arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-recharts-Bw30oz1A.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-recharts-BTHn5Y2R.js +1 -1
  26. arize_phoenix-11.24.1/src/phoenix/server/static/assets/vendor-shiki-DZajAPeq.js → arize_phoenix-11.25.0/src/phoenix/server/static/assets/vendor-shiki-BAcocHFl.js +1 -1
  27. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/query.py +2 -0
  28. arize_phoenix-11.25.0/src/phoenix/version.py +1 -0
  29. arize_phoenix-11.24.1/src/phoenix/server/static/.vite/manifest.json +0 -93
  30. arize_phoenix-11.24.1/src/phoenix/version.py +0 -1
  31. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/.gitignore +0 -0
  32. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/IP_NOTICE +0 -0
  33. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/LICENSE +0 -0
  34. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/README.md +0 -0
  35. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/pyproject.toml +0 -0
  36. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/auth.py +0 -0
  37. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/config.py +0 -0
  38. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/__init__.py +0 -0
  39. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/embedding_dimension.py +0 -0
  40. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/model.py +0 -0
  41. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/model_schema.py +0 -0
  42. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  43. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/datetime_utils.py +0 -0
  44. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/README.md +0 -0
  45. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/__init__.py +0 -0
  46. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/alembic.ini +0 -0
  47. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/bulk_inserter.py +0 -0
  48. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/constants.py +0 -0
  49. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/enums.py +0 -0
  50. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/facilitator.py +0 -0
  51. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/helpers.py +0 -0
  52. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/__init__.py +0 -0
  53. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/constants.py +0 -0
  54. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/dataset.py +0 -0
  55. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  56. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/helpers.py +0 -0
  57. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/insertion/span.py +0 -0
  58. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrate.py +0 -0
  59. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/__init__.py +0 -0
  60. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  61. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  62. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/env.py +0 -0
  63. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  64. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  65. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
  66. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  67. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  68. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
  69. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
  70. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
  71. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
  72. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  73. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  74. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  75. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/pg_config.py +0 -0
  76. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/__init__.py +0 -0
  77. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/annotation_configs.py +0 -0
  78. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/db_models.py +0 -0
  79. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/identifier.py +0 -0
  80. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/model_provider.py +0 -0
  81. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/token_price_customization.py +0 -0
  82. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/db/types/trace_retention.py +0 -0
  83. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/exceptions.py +0 -0
  84. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/__init__.py +0 -0
  85. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  86. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  87. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  88. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  89. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  90. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/functions.py +0 -0
  91. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/tracing.py +0 -0
  92. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/types.py +0 -0
  93. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/experiments/utils.py +0 -0
  94. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/__init__.py +0 -0
  95. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/errors.py +0 -0
  96. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/fixtures.py +0 -0
  97. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/inferences.py +0 -0
  98. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/schema.py +0 -0
  99. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/inferences/validation.py +0 -0
  100. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/logging/__init__.py +0 -0
  101. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/logging/_config.py +0 -0
  102. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/logging/_filter.py +0 -0
  103. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/logging/_formatter.py +0 -0
  104. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/README.md +0 -0
  105. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/__init__.py +0 -0
  106. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/binning.py +0 -0
  107. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/metrics.py +0 -0
  108. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/mixins.py +0 -0
  109. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  110. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/timeseries.py +0 -0
  111. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/metrics/wrappers.py +0 -0
  112. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/__init__.py +0 -0
  113. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/clustering.py +0 -0
  114. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  115. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/projectors.py +0 -0
  116. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  117. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/py.typed +0 -0
  118. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/__init__.py +0 -0
  119. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/README.md +0 -0
  120. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/__init__.py +0 -0
  121. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/auth.py +0 -0
  122. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/context.py +0 -0
  123. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  124. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
  125. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  126. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  127. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  128. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  129. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  130. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  131. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  132. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  133. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  134. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  135. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  136. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  137. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  138. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
  139. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  140. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  141. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
  142. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  143. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
  144. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  145. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  146. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  147. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  148. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  149. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  150. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  151. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  152. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
  153. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
  154. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
  155. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
  156. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
  157. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
  158. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
  159. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
  160. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
  161. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
  162. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
  163. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
  164. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  165. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  166. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  167. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  168. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  169. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  170. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
  171. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  172. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
  173. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  174. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  175. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/exceptions.py +0 -0
  176. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  177. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
  178. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  179. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  180. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  181. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  182. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  183. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  184. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  185. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
  186. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  187. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  188. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  189. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  190. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  191. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  192. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  193. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  194. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  195. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  196. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
  197. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  198. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  199. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  200. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  201. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
  202. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  203. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  204. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  205. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  206. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  207. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  208. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  209. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  210. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
  211. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  212. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  213. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  214. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  215. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  216. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  217. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  218. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
  219. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  220. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
  221. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PromptFilter.py +0 -0
  222. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  223. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  224. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
  225. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  226. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  227. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
  228. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  229. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  230. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  231. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  232. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/interceptor.py +0 -0
  233. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  234. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
  235. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  236. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  237. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  238. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  239. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  240. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
  241. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  242. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
  243. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  244. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  245. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  246. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  247. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  248. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
  249. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  250. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  251. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/openapi/main.py +0 -0
  252. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  253. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/queries.py +0 -0
  254. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  255. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/auth.py +0 -0
  256. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  257. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  258. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/utils.py +0 -0
  259. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  260. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
  261. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
  262. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  263. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  264. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  265. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  266. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  267. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  268. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
  269. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  270. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  271. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
  272. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  273. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/schema.py +0 -0
  274. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/subscriptions.py +0 -0
  275. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  276. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
  277. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
  278. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  279. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  280. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  281. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  282. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  283. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  284. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  285. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
  286. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  287. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
  288. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  289. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  290. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  291. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  292. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  293. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  294. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  295. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  296. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  297. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  298. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  299. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  300. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  301. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  302. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  303. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  304. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  305. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Event.py +0 -0
  306. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  307. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  308. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  309. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  310. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  311. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  312. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  313. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  314. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  315. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  316. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  317. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  318. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
  319. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  320. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  321. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  322. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  323. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
  324. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  325. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  326. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
  327. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  328. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
  329. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Prompt.py +0 -0
  330. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  331. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  332. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  333. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  334. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  335. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  336. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  337. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  338. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Segments.py +0 -0
  339. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ServerStatus.py +0 -0
  340. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  341. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Span.py +0 -0
  342. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  343. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
  344. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
  345. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  346. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  347. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  348. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
  349. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
  350. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  351. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  352. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/Trace.py +0 -0
  353. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  354. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  355. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/User.py +0 -0
  356. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  357. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  358. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  359. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  360. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/__init__.py +0 -0
  361. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/node.py +0 -0
  362. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/types/pagination.py +0 -0
  363. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/api/utils.py +0 -0
  364. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/app.py +0 -0
  365. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/authorization.py +0 -0
  366. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/bearer_auth.py +0 -0
  367. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
  368. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
  369. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
  370. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
  371. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
  372. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
  373. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
  374. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/daemons/__init__.py +0 -0
  375. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
  376. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
  377. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/daemons/span_cost_calculator.py +0 -0
  378. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/dml_event.py +0 -0
  379. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/dml_event_handler.py +0 -0
  380. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/__init__.py +0 -0
  381. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  382. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
  383. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  384. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/templates/welcome.html +0 -0
  385. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/email/types.py +0 -0
  386. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/experiments/__init__.py +0 -0
  387. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/experiments/utils.py +0 -0
  388. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/grpc_server.py +0 -0
  389. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/jwt_store.py +0 -0
  390. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/main.py +0 -0
  391. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/middleware/__init__.py +0 -0
  392. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/middleware/gzip.py +0 -0
  393. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/oauth2.py +0 -0
  394. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/openapi/__init__.py +0 -0
  395. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/prometheus.py +0 -0
  396. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/rate_limiters.py +0 -0
  397. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/retention.py +0 -0
  398. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  399. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  400. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  401. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  402. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  403. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  404. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  405. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  406. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/assets/vendor-CqDb5u4o.css +0 -0
  407. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/assets/vendor-three-BLWp5bic.js +0 -0
  408. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/favicon.ico +0 -0
  409. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/static/modernizr.js +0 -0
  410. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/telemetry.py +0 -0
  411. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/templates/__init__.py +0 -0
  412. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/templates/index.html +0 -0
  413. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/thread_server.py +0 -0
  414. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/server/types.py +0 -0
  415. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/services.py +0 -0
  416. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/__init__.py +0 -0
  417. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/client.py +0 -0
  418. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/data_extractor.py +0 -0
  419. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/evaluation.py +0 -0
  420. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/session/session.py +0 -0
  421. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/settings.py +0 -0
  422. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/__init__.py +0 -0
  423. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/attributes.py +0 -0
  424. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/README.md +0 -0
  425. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  426. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/filter.py +0 -0
  427. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  428. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/errors.py +0 -0
  429. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  430. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/exporter.py +0 -0
  431. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/fixtures.py +0 -0
  432. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/otel.py +0 -0
  433. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/projects.py +0 -0
  434. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/schemas.py +0 -0
  435. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/span_evaluations.py +0 -0
  436. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  437. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  438. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/trace_dataset.py +0 -0
  439. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/utils.py +0 -0
  440. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/v1/__init__.py +0 -0
  441. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  442. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  443. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/__init__.py +0 -0
  444. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/client.py +0 -0
  445. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/deprecation.py +0 -0
  446. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/error_handling.py +0 -0
  447. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/json.py +0 -0
  448. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/logging.py +0 -0
  449. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/project.py +0 -0
  450. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/re.py +0 -0
  451. {arize_phoenix-11.24.1 → arize_phoenix-11.25.0}/src/phoenix/utilities/span_store.py +0 -0
  452. {arize_phoenix-11.24.1 → arize_phoenix-11.25.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: 11.24.1
3
+ Version: 11.25.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
@@ -87,8 +87,9 @@ class PhoenixTraceOpenAILoader(Loader):
87
87
  "https://arize.com/docs/phoenix/tracing/integrations-tracing/openai"
88
88
  "\n\n"
89
89
  "Example usage:\n\n"
90
+ "pip install openinference-instrumentation-openai\n\n"
90
91
  "```python\n"
91
- "from phoenix.otel register\n"
92
+ "from phoenix.otel import register\n"
92
93
  "from openinference.instrumentation.openai import OpenAIInstrumentor\n\n"
93
94
  "tracer_provider = register()\n"
94
95
  "OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)\n"
@@ -1,16 +1,15 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
- import json
5
4
  import logging
6
5
  from collections.abc import Callable
7
- from datetime import datetime
8
6
  from enum import Enum
9
7
  from sqlite3 import Connection
10
8
  from typing import Any
11
9
 
12
10
  import aiosqlite
13
11
  import numpy as np
12
+ import orjson
14
13
  import sqlalchemy
15
14
  import sqlean
16
15
  from sqlalchemy import URL, StaticPool, event, make_url
@@ -193,19 +192,14 @@ def aio_postgresql_engine(
193
192
 
194
193
 
195
194
  def _dumps(obj: Any) -> str:
196
- return json.dumps(obj, cls=_Encoder)
197
-
198
-
199
- class _Encoder(json.JSONEncoder):
200
- def default(self, obj: Any) -> Any:
201
- if isinstance(obj, datetime):
202
- return obj.isoformat()
203
- elif isinstance(obj, Enum):
204
- return obj.value
205
- elif isinstance(obj, np.ndarray):
206
- return list(obj)
207
- elif isinstance(obj, np.integer):
208
- return int(obj)
209
- elif isinstance(obj, np.floating):
210
- return float(obj)
211
- return super().default(obj)
195
+ return orjson.dumps(obj, default=_default).decode()
196
+
197
+
198
+ def _default(obj: Any) -> Any:
199
+ if isinstance(obj, np.ndarray):
200
+ return obj.tolist()
201
+ if isinstance(obj, (np.integer, np.floating, np.bool_)):
202
+ return obj.item()
203
+ if isinstance(obj, Enum):
204
+ return obj.value
205
+ raise TypeError(f"Object of type {type(obj).__name__} is not serializable")
@@ -107,7 +107,6 @@ class DocumentAnnotationQueueInserter(
107
107
  received_at=p.received_at,
108
108
  item=p.item.as_insertable(
109
109
  span_rowid=anno.span_rowid,
110
- id_=anno.id_,
111
110
  ),
112
111
  )
113
112
  )
@@ -100,7 +100,6 @@ class SpanAnnotationQueueInserter(
100
100
  received_at=p.received_at,
101
101
  item=p.item.as_insertable(
102
102
  span_rowid=anno.span_rowid,
103
- id_=anno.id_,
104
103
  ),
105
104
  )
106
105
  )
@@ -99,7 +99,6 @@ class TraceAnnotationQueueInserter(
99
99
  received_at=p.received_at,
100
100
  item=p.item.as_insertable(
101
101
  trace_rowid=anno.trace_rowid,
102
- id_=anno.id_,
103
102
  ),
104
103
  )
105
104
  )
@@ -180,13 +180,11 @@ class Precursors(ABC):
180
180
  def as_insertable(
181
181
  self,
182
182
  span_rowid: int,
183
- id_: Optional[int] = None,
184
183
  ) -> Insertables.SpanAnnotation:
185
184
  return Insertables.SpanAnnotation(
186
185
  span_id=self.span_id,
187
186
  obj=self.obj,
188
187
  span_rowid=span_rowid,
189
- id_=id_,
190
188
  )
191
189
 
192
190
  @dataclass(frozen=True)
@@ -197,13 +195,11 @@ class Precursors(ABC):
197
195
  def as_insertable(
198
196
  self,
199
197
  trace_rowid: int,
200
- id_: Optional[int] = None,
201
198
  ) -> Insertables.TraceAnnotation:
202
199
  return Insertables.TraceAnnotation(
203
200
  trace_id=self.trace_id,
204
201
  obj=self.obj,
205
202
  trace_rowid=trace_rowid,
206
- id_=id_,
207
203
  )
208
204
 
209
205
  @dataclass(frozen=True)
@@ -215,14 +211,12 @@ class Precursors(ABC):
215
211
  def as_insertable(
216
212
  self,
217
213
  span_rowid: int,
218
- id_: Optional[int] = None,
219
214
  ) -> Insertables.DocumentAnnotation:
220
215
  return Insertables.DocumentAnnotation(
221
216
  span_id=self.span_id,
222
217
  document_position=self.document_position,
223
218
  obj=self.obj,
224
219
  span_rowid=span_rowid,
225
- id_=id_,
226
220
  )
227
221
 
228
222
 
@@ -231,40 +225,31 @@ class Insertables(ABC):
231
225
  class SpanAnnotation(Precursors.SpanAnnotation):
232
226
  span_rowid: int
233
227
  identifier: str = ""
234
- id_: Optional[int] = None
235
228
 
236
229
  @property
237
230
  def row(self) -> models.SpanAnnotation:
238
231
  obj = copy(self.obj)
239
232
  obj.span_rowid = self.span_rowid
240
- if self.id_ is not None:
241
- obj.id = self.id_
242
233
  return obj
243
234
 
244
235
  @dataclass(frozen=True)
245
236
  class TraceAnnotation(Precursors.TraceAnnotation):
246
237
  trace_rowid: int
247
238
  identifier: str = ""
248
- id_: Optional[int] = None
249
239
 
250
240
  @property
251
241
  def row(self) -> models.TraceAnnotation:
252
242
  obj = copy(self.obj)
253
243
  obj.trace_rowid = self.trace_rowid
254
- if self.id_ is not None:
255
- obj.id = self.id_
256
244
  return obj
257
245
 
258
246
  @dataclass(frozen=True)
259
247
  class DocumentAnnotation(Precursors.DocumentAnnotation):
260
248
  span_rowid: int
261
249
  identifier: str = ""
262
- id_: Optional[int] = None
263
250
 
264
251
  @property
265
252
  def row(self) -> models.DocumentAnnotation:
266
253
  obj = copy(self.obj)
267
254
  obj.span_rowid = self.span_rowid
268
- if self.id_ is not None:
269
- obj.id = self.id_
270
255
  return obj
@@ -188,7 +188,7 @@ class JsonDict(TypeDecorator[dict[str, Any]]):
188
188
  impl = JSON_
189
189
 
190
190
  def process_bind_param(self, value: Optional[dict[str, Any]], _: Dialect) -> dict[str, Any]:
191
- return orjson.loads(orjson.dumps(value)) if isinstance(value, dict) else {}
191
+ return value if isinstance(value, dict) else {}
192
192
 
193
193
  def process_result_value(self, value: Optional[Any], _: Dialect) -> Optional[dict[str, Any]]:
194
194
  return orjson.loads(orjson.dumps(value)) if isinstance(value, dict) and value else value
@@ -200,7 +200,7 @@ class JsonList(TypeDecorator[list[Any]]):
200
200
  impl = JSON_
201
201
 
202
202
  def process_bind_param(self, value: Optional[list[Any]], _: Dialect) -> list[Any]:
203
- return orjson.loads(orjson.dumps(value)) if isinstance(value, list) else []
203
+ return value if isinstance(value, list) else []
204
204
 
205
205
  def process_result_value(self, value: Optional[Any], _: Dialect) -> Optional[list[Any]]:
206
206
  return orjson.loads(orjson.dumps(value)) if isinstance(value, list) and value else value
@@ -13,6 +13,7 @@ from phoenix.db import models
13
13
  from phoenix.server.api.dataloaders.cache import TwoTierCache
14
14
  from phoenix.server.api.input_types.TimeRange import TimeRange
15
15
  from phoenix.server.api.types.AnnotationSummary import AnnotationSummary
16
+ from phoenix.server.session_filters import get_filtered_session_rowids_subquery
16
17
  from phoenix.server.types import DbSessionFactory
17
18
  from phoenix.trace.dsl import SpanFilter
18
19
 
@@ -20,27 +21,41 @@ Kind: TypeAlias = Literal["span", "trace"]
20
21
  ProjectRowId: TypeAlias = int
21
22
  TimeInterval: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
22
23
  FilterCondition: TypeAlias = Optional[str]
24
+ SessionFilterCondition: TypeAlias = Optional[str]
23
25
  AnnotationName: TypeAlias = str
24
26
 
25
- Segment: TypeAlias = tuple[Kind, ProjectRowId, TimeInterval, FilterCondition]
27
+ Segment: TypeAlias = tuple[
28
+ Kind,
29
+ ProjectRowId,
30
+ TimeInterval,
31
+ FilterCondition,
32
+ SessionFilterCondition,
33
+ ]
26
34
  Param: TypeAlias = AnnotationName
27
35
 
28
- Key: TypeAlias = tuple[Kind, ProjectRowId, Optional[TimeRange], FilterCondition, AnnotationName]
36
+ Key: TypeAlias = tuple[
37
+ Kind,
38
+ ProjectRowId,
39
+ Optional[TimeRange],
40
+ FilterCondition,
41
+ SessionFilterCondition,
42
+ AnnotationName,
43
+ ]
29
44
  Result: TypeAlias = Optional[AnnotationSummary]
30
45
  ResultPosition: TypeAlias = int
31
46
  DEFAULT_VALUE: Result = None
32
47
 
33
48
 
34
49
  def _cache_key_fn(key: Key) -> tuple[Segment, Param]:
35
- kind, project_rowid, time_range, filter_condition, eval_name = key
50
+ kind, project_rowid, time_range, filter_condition, session_filter_condition, eval_name = key
36
51
  interval = (
37
52
  (time_range.start, time_range.end) if isinstance(time_range, TimeRange) else (None, None)
38
53
  )
39
- return (kind, project_rowid, interval, filter_condition), eval_name
54
+ return (kind, project_rowid, interval, filter_condition, session_filter_condition), eval_name
40
55
 
41
56
 
42
57
  _Section: TypeAlias = tuple[ProjectRowId, AnnotationName, Kind]
43
- _SubKey: TypeAlias = tuple[TimeInterval, FilterCondition]
58
+ _SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, SessionFilterCondition]
44
59
 
45
60
 
46
61
  class AnnotationSummaryCache(
@@ -61,8 +76,21 @@ class AnnotationSummaryCache(
61
76
  del self._cache[section]
62
77
 
63
78
  def _cache_key(self, key: Key) -> tuple[_Section, _SubKey]:
64
- (kind, project_rowid, interval, filter_condition), annotation_name = _cache_key_fn(key)
65
- return (project_rowid, annotation_name, kind), (interval, filter_condition)
79
+ (
80
+ (
81
+ kind,
82
+ project_rowid,
83
+ interval,
84
+ filter_condition,
85
+ session_filter_condition,
86
+ ),
87
+ annotation_name,
88
+ ) = _cache_key_fn(key)
89
+ return (project_rowid, annotation_name, kind), (
90
+ interval,
91
+ filter_condition,
92
+ session_filter_condition,
93
+ )
66
94
 
67
95
 
68
96
  class AnnotationSummaryDataLoader(DataLoader[Key, Result]):
@@ -102,7 +130,9 @@ def _get_stmt(
102
130
  segment: Segment,
103
131
  *annotation_names: Param,
104
132
  ) -> Select[Any]:
105
- kind, project_rowid, (start_time, end_time), filter_condition = segment
133
+ kind, project_rowid, (start_time, end_time), filter_condition, session_filter_condition = (
134
+ segment
135
+ )
106
136
 
107
137
  annotation_model: Union[Type[models.SpanAnnotation], Type[models.TraceAnnotation]]
108
138
  entity_model: Union[Type[models.Span], Type[models.Trace]]
@@ -144,6 +174,19 @@ def _get_stmt(
144
174
  entity_count_query = entity_count_query.where(
145
175
  cast(Type[models.Trace], entity_model).project_rowid == project_rowid
146
176
  )
177
+ else:
178
+ assert_never(kind)
179
+
180
+ if session_filter_condition:
181
+ filtered_session_rowids = get_filtered_session_rowids_subquery(
182
+ session_filter_condition=session_filter_condition,
183
+ project_rowids=[project_rowid],
184
+ start_time=start_time,
185
+ end_time=end_time,
186
+ )
187
+ entity_count_query = entity_count_query.where(
188
+ models.Trace.project_session_rowid.in_(filtered_session_rowids)
189
+ )
147
190
 
148
191
  entity_count_query = entity_count_query.where(
149
192
  or_(score_column.is_not(None), label_column.is_not(None))
@@ -186,6 +229,15 @@ def _get_stmt(
186
229
  else:
187
230
  assert_never(kind)
188
231
 
232
+ if session_filter_condition:
233
+ filtered_session_rowids = get_filtered_session_rowids_subquery(
234
+ session_filter_condition=session_filter_condition,
235
+ project_rowids=[project_rowid],
236
+ start_time=start_time,
237
+ end_time=end_time,
238
+ )
239
+ base_stmt = base_stmt.where(models.Trace.project_session_rowid.in_(filtered_session_rowids))
240
+
189
241
  base_stmt = base_stmt.where(or_(score_column.is_not(None), label_column.is_not(None)))
190
242
  base_stmt = base_stmt.where(name_column.in_(annotation_names))
191
243
 
@@ -25,6 +25,7 @@ from phoenix.db import models
25
25
  from phoenix.db.helpers import SupportedSQLDialect
26
26
  from phoenix.server.api.dataloaders.cache import TwoTierCache
27
27
  from phoenix.server.api.input_types.TimeRange import TimeRange
28
+ from phoenix.server.session_filters import get_filtered_session_rowids_subquery
28
29
  from phoenix.server.types import DbSessionFactory
29
30
  from phoenix.trace.dsl import SpanFilter
30
31
 
@@ -32,13 +33,16 @@ Kind: TypeAlias = Literal["span", "trace"]
32
33
  ProjectRowId: TypeAlias = int
33
34
  TimeInterval: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
34
35
  FilterCondition: TypeAlias = Optional[str]
36
+ SessionFilterCondition: TypeAlias = Optional[str]
35
37
  Probability: TypeAlias = float
36
38
  QuantileValue: TypeAlias = float
37
39
 
38
- Segment: TypeAlias = tuple[Kind, TimeInterval, FilterCondition]
40
+ Segment: TypeAlias = tuple[Kind, TimeInterval, FilterCondition, SessionFilterCondition]
39
41
  Param: TypeAlias = tuple[ProjectRowId, Probability]
40
42
 
41
- Key: TypeAlias = tuple[Kind, ProjectRowId, Optional[TimeRange], FilterCondition, Probability]
43
+ Key: TypeAlias = tuple[
44
+ Kind, ProjectRowId, Optional[TimeRange], FilterCondition, SessionFilterCondition, Probability
45
+ ]
42
46
  Result: TypeAlias = Optional[QuantileValue]
43
47
  ResultPosition: TypeAlias = int
44
48
  DEFAULT_VALUE: Result = None
@@ -47,15 +51,18 @@ FloatCol: TypeAlias = SQLColumnExpression[Float[float]]
47
51
 
48
52
 
49
53
  def _cache_key_fn(key: Key) -> tuple[Segment, Param]:
50
- kind, project_rowid, time_range, filter_condition, probability = key
54
+ kind, project_rowid, time_range, filter_condition, session_filter_condition, probability = key
51
55
  interval = (
52
56
  (time_range.start, time_range.end) if isinstance(time_range, TimeRange) else (None, None)
53
57
  )
54
- return (kind, interval, filter_condition), (project_rowid, probability)
58
+ return (kind, interval, filter_condition, session_filter_condition), (
59
+ project_rowid,
60
+ probability,
61
+ )
55
62
 
56
63
 
57
64
  _Section: TypeAlias = ProjectRowId
58
- _SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, Kind, Probability]
65
+ _SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, SessionFilterCondition, Kind, Probability]
59
66
 
60
67
 
61
68
  class LatencyMsQuantileCache(
@@ -71,8 +78,17 @@ class LatencyMsQuantileCache(
71
78
  )
72
79
 
73
80
  def _cache_key(self, key: Key) -> tuple[_Section, _SubKey]:
74
- (kind, interval, filter_condition), (project_rowid, probability) = _cache_key_fn(key)
75
- return project_rowid, (interval, filter_condition, kind, probability)
81
+ (
82
+ (kind, interval, filter_condition, session_filter_condition),
83
+ (project_rowid, probability),
84
+ ) = _cache_key_fn(key)
85
+ return project_rowid, (
86
+ interval,
87
+ filter_condition,
88
+ session_filter_condition,
89
+ kind,
90
+ probability,
91
+ )
76
92
 
77
93
 
78
94
  class LatencyMsQuantileDataLoader(DataLoader[Key, Result]):
@@ -113,11 +129,18 @@ async def _get_results(
113
129
  segment: Segment,
114
130
  params: Mapping[Param, list[ResultPosition]],
115
131
  ) -> AsyncIterator[tuple[ResultPosition, QuantileValue]]:
116
- kind, (start_time, end_time), filter_condition = segment
132
+ kind, (start_time, end_time), filter_condition, session_filter_condition = segment
117
133
  stmt = select(models.Trace.project_rowid)
118
134
  if kind == "trace":
119
135
  latency_column = cast(FloatCol, models.Trace.latency_ms)
120
136
  time_column = models.Trace.start_time
137
+ if filter_condition:
138
+ sf = SpanFilter(filter_condition)
139
+ stmt = stmt.where(
140
+ models.Trace.id.in_(
141
+ sf(select(models.Span.trace_rowid).distinct()).scalar_subquery()
142
+ )
143
+ )
121
144
  elif kind == "span":
122
145
  latency_column = cast(FloatCol, models.Span.latency_ms)
123
146
  time_column = models.Span.start_time
@@ -127,6 +150,15 @@ async def _get_results(
127
150
  stmt = sf(stmt)
128
151
  else:
129
152
  assert_never(kind)
153
+ if session_filter_condition:
154
+ project_rowids = [project_rowid for project_rowid, _ in params]
155
+ filtered_session_rowids = get_filtered_session_rowids_subquery(
156
+ session_filter_condition=session_filter_condition,
157
+ project_rowids=project_rowids,
158
+ start_time=start_time,
159
+ end_time=end_time,
160
+ )
161
+ stmt = stmt.where(models.Trace.project_session_rowid.in_(filtered_session_rowids))
130
162
  if start_time:
131
163
  stmt = stmt.where(start_time <= time_column)
132
164
  if end_time:
@@ -3,13 +3,14 @@ from datetime import datetime
3
3
  from typing import Any, Literal, Optional
4
4
 
5
5
  from cachetools import LFUCache, TTLCache
6
- from sqlalchemy import Select, func, select
6
+ from sqlalchemy import Select, distinct, func, select
7
7
  from strawberry.dataloader import AbstractCache, DataLoader
8
8
  from typing_extensions import TypeAlias, assert_never
9
9
 
10
10
  from phoenix.db import models
11
11
  from phoenix.server.api.dataloaders.cache import TwoTierCache
12
12
  from phoenix.server.api.input_types.TimeRange import TimeRange
13
+ from phoenix.server.session_filters import get_filtered_session_rowids_subquery
13
14
  from phoenix.server.types import DbSessionFactory
14
15
  from phoenix.trace.dsl import SpanFilter
15
16
 
@@ -17,27 +18,35 @@ Kind: TypeAlias = Literal["span", "trace"]
17
18
  ProjectRowId: TypeAlias = int
18
19
  TimeInterval: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
19
20
  FilterCondition: TypeAlias = Optional[str]
21
+ SessionFilterCondition: TypeAlias = Optional[str]
20
22
  SpanCount: TypeAlias = int
21
23
 
22
- Segment: TypeAlias = tuple[Kind, TimeInterval, FilterCondition]
24
+ Segment: TypeAlias = tuple[Kind, TimeInterval, FilterCondition, SessionFilterCondition]
23
25
  Param: TypeAlias = ProjectRowId
24
26
 
25
- Key: TypeAlias = tuple[Kind, ProjectRowId, Optional[TimeRange], FilterCondition]
27
+ Key: TypeAlias = tuple[
28
+ Kind, ProjectRowId, Optional[TimeRange], FilterCondition, SessionFilterCondition
29
+ ]
26
30
  Result: TypeAlias = SpanCount
27
31
  ResultPosition: TypeAlias = int
28
32
  DEFAULT_VALUE: Result = 0
29
33
 
30
34
 
31
35
  def _cache_key_fn(key: Key) -> tuple[Segment, Param]:
32
- kind, project_rowid, time_range, filter_condition = key
36
+ kind, project_rowid, time_range, filter_condition, session_filter_condition = key
33
37
  interval = (
34
38
  (time_range.start, time_range.end) if isinstance(time_range, TimeRange) else (None, None)
35
39
  )
36
- return (kind, interval, filter_condition), project_rowid
40
+ return (
41
+ kind,
42
+ interval,
43
+ filter_condition,
44
+ session_filter_condition,
45
+ ), project_rowid
37
46
 
38
47
 
39
48
  _Section: TypeAlias = ProjectRowId
40
- _SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, Kind]
49
+ _SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, SessionFilterCondition, Kind]
41
50
 
42
51
 
43
52
  class RecordCountCache(
@@ -53,8 +62,10 @@ class RecordCountCache(
53
62
  )
54
63
 
55
64
  def _cache_key(self, key: Key) -> tuple[_Section, _SubKey]:
56
- (kind, interval, filter_condition), project_rowid = _cache_key_fn(key)
57
- return project_rowid, (interval, filter_condition, kind)
65
+ (kind, interval, filter_condition, session_filter_condition), project_rowid = _cache_key_fn(
66
+ key
67
+ )
68
+ return project_rowid, (interval, filter_condition, session_filter_condition, kind)
58
69
 
59
70
 
60
71
  class RecordCountDataLoader(DataLoader[Key, Result]):
@@ -93,7 +104,7 @@ def _get_stmt(
93
104
  segment: Segment,
94
105
  *project_rowids: Param,
95
106
  ) -> Select[Any]:
96
- kind, (start_time, end_time), filter_condition = segment
107
+ kind, (start_time, end_time), filter_condition, session_filter_condition = segment
97
108
  pid = models.Trace.project_rowid
98
109
  stmt = select(pid)
99
110
  if kind == "span":
@@ -102,12 +113,28 @@ def _get_stmt(
102
113
  if filter_condition:
103
114
  sf = SpanFilter(filter_condition)
104
115
  stmt = sf(stmt)
116
+ stmt = stmt.add_columns(func.count().label("count"))
105
117
  elif kind == "trace":
106
118
  time_column = models.Trace.start_time
119
+ if filter_condition:
120
+ stmt = stmt.join(models.Span, models.Trace.id == models.Span.trace_rowid)
121
+ stmt = stmt.add_columns(func.count(distinct(models.Trace.id)).label("count"))
122
+ sf = SpanFilter(filter_condition)
123
+ stmt = sf(stmt)
124
+ else:
125
+ stmt = stmt.add_columns(func.count().label("count"))
107
126
  else:
108
127
  assert_never(kind)
109
- stmt = stmt.add_columns(func.count().label("count"))
110
128
  stmt = stmt.where(pid.in_(project_rowids))
129
+
130
+ if session_filter_condition:
131
+ filtered_session_rowids = get_filtered_session_rowids_subquery(
132
+ session_filter_condition=session_filter_condition,
133
+ project_rowids=project_rowids,
134
+ start_time=start_time,
135
+ end_time=end_time,
136
+ )
137
+ stmt = stmt.where(models.Trace.project_session_rowid.in_(filtered_session_rowids))
111
138
  stmt = stmt.group_by(pid)
112
139
  if start_time:
113
140
  stmt = stmt.where(start_time <= time_column)
@@ -12,32 +12,38 @@ from phoenix.db import models
12
12
  from phoenix.server.api.dataloaders.cache import TwoTierCache
13
13
  from phoenix.server.api.dataloaders.types import CostBreakdown, SpanCostSummary
14
14
  from phoenix.server.api.input_types.TimeRange import TimeRange
15
+ from phoenix.server.session_filters import get_filtered_session_rowids_subquery
15
16
  from phoenix.server.types import DbSessionFactory
16
17
  from phoenix.trace.dsl import SpanFilter
17
18
 
18
19
  ProjectRowId: TypeAlias = int
19
20
  TimeInterval: TypeAlias = tuple[Optional[datetime], Optional[datetime]]
20
21
  FilterCondition: TypeAlias = Optional[str]
22
+ SessionFilterCondition: TypeAlias = Optional[str]
21
23
 
22
- Segment: TypeAlias = tuple[TimeInterval, FilterCondition]
24
+ Segment: TypeAlias = tuple[
25
+ TimeInterval,
26
+ FilterCondition,
27
+ SessionFilterCondition,
28
+ ]
23
29
  Param: TypeAlias = ProjectRowId
24
30
 
25
- Key: TypeAlias = tuple[ProjectRowId, Optional[TimeRange], FilterCondition]
31
+ Key: TypeAlias = tuple[ProjectRowId, Optional[TimeRange], FilterCondition, SessionFilterCondition]
26
32
  Result: TypeAlias = SpanCostSummary
27
33
  ResultPosition: TypeAlias = int
28
34
  DEFAULT_VALUE: Result = SpanCostSummary()
29
35
 
30
36
 
31
37
  def _cache_key_fn(key: Key) -> tuple[Segment, Param]:
32
- project_rowid, time_range, filter_condition = key
38
+ project_rowid, time_range, filter_condition, session_filter_condition = key
33
39
  interval = (
34
40
  (time_range.start, time_range.end) if isinstance(time_range, TimeRange) else (None, None)
35
41
  )
36
- return (interval, filter_condition), project_rowid
42
+ return (interval, filter_condition, session_filter_condition), project_rowid
37
43
 
38
44
 
39
45
  _Section: TypeAlias = ProjectRowId
40
- _SubKey: TypeAlias = tuple[TimeInterval, FilterCondition]
46
+ _SubKey: TypeAlias = tuple[TimeInterval, FilterCondition, SessionFilterCondition]
41
47
 
42
48
 
43
49
  class SpanCostSummaryCache(
@@ -53,8 +59,8 @@ class SpanCostSummaryCache(
53
59
  )
54
60
 
55
61
  def _cache_key(self, key: Key) -> tuple[_Section, _SubKey]:
56
- (interval, filter_condition), project_rowid = _cache_key_fn(key)
57
- return project_rowid, (interval, filter_condition)
62
+ (interval, filter_condition, session_filter_condition), project_rowid = _cache_key_fn(key)
63
+ return project_rowid, (interval, filter_condition, session_filter_condition)
58
64
 
59
65
 
60
66
  class SpanCostSummaryByProjectDataLoader(DataLoader[Key, Result]):
@@ -106,12 +112,12 @@ def _get_stmt(
106
112
  segment: Segment,
107
113
  *params: Param,
108
114
  ) -> Select[Any]:
109
- (start_time, end_time), filter_condition = segment
110
- pid = models.Trace.project_rowid
115
+ project_rowids = params
116
+ (start_time, end_time), filter_condition, session_filter_condition = segment
111
117
 
112
118
  stmt: Select[Any] = (
113
119
  select(
114
- pid,
120
+ models.Trace.project_rowid,
115
121
  coalesce(func.sum(models.SpanCost.prompt_cost), 0).label("prompt_cost"),
116
122
  coalesce(func.sum(models.SpanCost.completion_cost), 0).label("completion_cost"),
117
123
  coalesce(func.sum(models.SpanCost.total_cost), 0).label("total_cost"),
@@ -119,8 +125,10 @@ def _get_stmt(
119
125
  coalesce(func.sum(models.SpanCost.completion_tokens), 0).label("completion_tokens"),
120
126
  coalesce(func.sum(models.SpanCost.total_tokens), 0).label("total_tokens"),
121
127
  )
122
- .join_from(models.SpanCost, models.Trace)
123
- .group_by(pid)
128
+ .select_from(models.Trace)
129
+ .join(models.SpanCost, models.Trace.id == models.SpanCost.trace_rowid)
130
+ .where(models.Trace.project_rowid.in_(project_rowids))
131
+ .group_by(models.Trace.project_rowid)
124
132
  )
125
133
 
126
134
  if start_time:
@@ -132,7 +140,13 @@ def _get_stmt(
132
140
  sf = SpanFilter(filter_condition)
133
141
  stmt = sf(stmt.join_from(models.SpanCost, models.Span))
134
142
 
135
- project_ids = [rowid for rowid in params]
136
- stmt = stmt.where(pid.in_(project_ids))
143
+ if session_filter_condition:
144
+ filtered_session_rowids = get_filtered_session_rowids_subquery(
145
+ session_filter_condition=session_filter_condition,
146
+ project_rowids=project_rowids,
147
+ start_time=start_time,
148
+ end_time=end_time,
149
+ )
150
+ stmt = stmt.where(models.Trace.project_session_rowid.in_(filtered_session_rowids))
137
151
 
138
152
  return stmt