arize-phoenix 11.33.0__tar.gz → 11.35.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 (461) hide show
  1. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/PKG-INFO +12 -9
  2. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/README.md +10 -1
  3. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/pyproject.toml +1 -8
  4. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/config.py +44 -0
  5. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/bulk_inserter.py +111 -116
  6. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/documents.py +1 -1
  7. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/evaluations.py +4 -4
  8. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/spans.py +2 -2
  9. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/traces.py +18 -3
  10. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/app.py +56 -18
  11. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/daemons/span_cost_calculator.py +10 -8
  12. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/grpc_server.py +9 -9
  13. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/prometheus.py +30 -6
  14. arize_phoenix-11.35.0/src/phoenix/server/static/.vite/manifest.json +93 -0
  15. arize_phoenix-11.33.0/src/phoenix/server/static/assets/components-YTHUASXI.js → arize_phoenix-11.35.0/src/phoenix/server/static/assets/components-CdQiQTvs.js +1 -1
  16. arize_phoenix-11.33.0/src/phoenix/server/static/assets/index-CugQp26L.js → arize_phoenix-11.35.0/src/phoenix/server/static/assets/index-B1VuXYRI.js +2 -2
  17. arize_phoenix-11.33.0/src/phoenix/server/static/assets/pages-4Qu8GNlt.js → arize_phoenix-11.35.0/src/phoenix/server/static/assets/pages-CnfZ3RhB.js +498 -494
  18. arize_phoenix-11.33.0/src/phoenix/server/static/assets/vendor-CRRxHwSp.js → arize_phoenix-11.35.0/src/phoenix/server/static/assets/vendor-Cfrr9FCF.js +135 -135
  19. arize_phoenix-11.33.0/src/phoenix/server/static/assets/vendor-arizeai-CUN6lRd9.js → arize_phoenix-11.35.0/src/phoenix/server/static/assets/vendor-arizeai-Dz0kN-lQ.js +1 -1
  20. arize_phoenix-11.33.0/src/phoenix/server/static/assets/vendor-codemirror-sJXwoqrE.js → arize_phoenix-11.35.0/src/phoenix/server/static/assets/vendor-codemirror-ClqtONZQ.js +11 -11
  21. arize_phoenix-11.33.0/src/phoenix/server/static/assets/vendor-recharts-BT_PeGhc.js → arize_phoenix-11.35.0/src/phoenix/server/static/assets/vendor-recharts-D6kvOpmb.js +1 -1
  22. arize_phoenix-11.33.0/src/phoenix/server/static/assets/vendor-shiki-1F3op0QC.js → arize_phoenix-11.35.0/src/phoenix/server/static/assets/vendor-shiki-xSOiKxt0.js +1 -1
  23. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/thread_server.py +1 -2
  24. arize_phoenix-11.35.0/src/phoenix/version.py +1 -0
  25. arize_phoenix-11.33.0/src/phoenix/server/static/.vite/manifest.json +0 -93
  26. arize_phoenix-11.33.0/src/phoenix/version.py +0 -1
  27. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/.gitignore +0 -0
  28. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/IP_NOTICE +0 -0
  29. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/LICENSE +0 -0
  30. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/__init__.py +0 -0
  31. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/auth.py +0 -0
  32. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/core/__init__.py +0 -0
  33. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/core/embedding_dimension.py +0 -0
  34. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/core/model.py +0 -0
  35. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/core/model_schema.py +0 -0
  36. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  37. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/datetime_utils.py +0 -0
  38. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/README.md +0 -0
  39. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/__init__.py +0 -0
  40. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/alembic.ini +0 -0
  41. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/constants.py +0 -0
  42. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/engines.py +0 -0
  43. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/enums.py +0 -0
  44. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/facilitator.py +0 -0
  45. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/helpers.py +0 -0
  46. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/__init__.py +0 -0
  47. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/constants.py +0 -0
  48. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/dataset.py +0 -0
  49. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  50. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  51. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/helpers.py +0 -0
  52. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/span.py +0 -0
  53. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  54. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  55. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/insertion/types.py +0 -0
  56. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrate.py +0 -0
  57. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/__init__.py +0 -0
  58. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  59. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  60. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/env.py +0 -0
  61. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  62. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  63. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
  64. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  65. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  66. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
  67. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
  68. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
  69. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
  70. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  71. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  72. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  73. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/models.py +0 -0
  74. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/pg_config.py +0 -0
  75. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/types/__init__.py +0 -0
  76. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/types/annotation_configs.py +0 -0
  77. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/types/db_models.py +0 -0
  78. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/types/identifier.py +0 -0
  79. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/types/model_provider.py +0 -0
  80. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/types/token_price_customization.py +0 -0
  81. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/db/types/trace_retention.py +0 -0
  82. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/exceptions.py +0 -0
  83. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/__init__.py +0 -0
  84. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  85. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  86. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  87. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  88. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  89. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/functions.py +0 -0
  90. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/tracing.py +0 -0
  91. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/types.py +0 -0
  92. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/experiments/utils.py +0 -0
  93. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/inferences/__init__.py +0 -0
  94. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/inferences/errors.py +0 -0
  95. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/inferences/fixtures.py +0 -0
  96. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/inferences/inferences.py +0 -0
  97. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/inferences/schema.py +0 -0
  98. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/inferences/validation.py +0 -0
  99. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/logging/__init__.py +0 -0
  100. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/logging/_config.py +0 -0
  101. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/logging/_filter.py +0 -0
  102. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/logging/_formatter.py +0 -0
  103. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/metrics/README.md +0 -0
  104. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/metrics/__init__.py +0 -0
  105. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/metrics/binning.py +0 -0
  106. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/metrics/metrics.py +0 -0
  107. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/metrics/mixins.py +0 -0
  108. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  109. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/metrics/timeseries.py +0 -0
  110. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/metrics/wrappers.py +0 -0
  111. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/pointcloud/__init__.py +0 -0
  112. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/pointcloud/clustering.py +0 -0
  113. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  114. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/pointcloud/projectors.py +0 -0
  115. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  116. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/py.typed +0 -0
  117. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/__init__.py +0 -0
  118. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/README.md +0 -0
  119. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/__init__.py +0 -0
  120. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/auth.py +0 -0
  121. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/context.py +0 -0
  122. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  123. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
  124. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  125. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/average_experiment_repeated_run_group_latency.py +0 -0
  126. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  127. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  128. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  129. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  130. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  131. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/dataset_examples_and_versions_by_experiment_run.py +0 -0
  132. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  133. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  134. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  135. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  136. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  137. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_group_annotation_summaries.py +0 -0
  138. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_groups.py +0 -0
  139. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/experiment_repetition_counts.py +0 -0
  140. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  141. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  142. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  143. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
  144. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  145. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  146. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  147. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
  148. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  149. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
  150. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  151. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  152. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  153. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  154. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  155. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  156. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  157. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  158. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  159. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
  160. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
  161. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
  162. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
  163. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
  164. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
  165. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
  166. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_repeated_run_group.py +0 -0
  167. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
  168. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
  169. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
  170. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
  171. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
  172. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
  173. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  174. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  175. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  176. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  177. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  178. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  179. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
  180. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  181. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
  182. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  183. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  184. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/exceptions.py +0 -0
  185. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  186. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
  187. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  188. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  189. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
  190. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  191. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  192. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  193. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  194. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  195. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
  196. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  197. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  198. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  199. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  200. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  201. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  202. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  203. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  204. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  205. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  206. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
  207. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  208. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  209. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  210. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  211. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
  212. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  213. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  214. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  215. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  216. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  217. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  218. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  219. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  220. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
  221. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  222. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  223. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  224. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  225. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  226. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  227. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  228. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
  229. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  230. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
  231. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/PromptFilter.py +0 -0
  232. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  233. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  234. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
  235. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  236. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  237. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
  238. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  239. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  240. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  241. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  242. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/interceptor.py +0 -0
  243. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  244. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
  245. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  246. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  247. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  248. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  249. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  250. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
  251. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  252. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
  253. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  254. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  255. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  256. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  257. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  258. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
  259. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  260. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  261. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/openapi/main.py +0 -0
  262. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  263. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/queries.py +0 -0
  264. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  265. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/auth.py +0 -0
  266. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  267. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  268. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/utils.py +0 -0
  269. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  270. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
  271. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
  272. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  273. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  274. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  275. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  276. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  277. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
  278. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  279. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
  280. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  281. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/schema.py +0 -0
  282. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/subscriptions.py +0 -0
  283. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  284. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
  285. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
  286. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  287. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  288. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  289. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  290. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  291. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  292. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  293. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
  294. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  295. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
  296. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  297. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  298. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  299. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  300. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DatasetExperimentAnnotationSummary.py +0 -0
  301. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  302. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  303. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  304. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  305. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  306. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  307. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  308. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DocumentAnnotation.py +0 -0
  309. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  310. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  311. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  312. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  313. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  314. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Event.py +0 -0
  315. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  316. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  317. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  318. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  319. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  320. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroup.py +0 -0
  321. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroupAnnotationSummary.py +0 -0
  322. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  323. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  324. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  325. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  326. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  327. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  328. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  329. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
  330. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  331. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  332. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  333. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  334. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
  335. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  336. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  337. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
  338. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Project.py +0 -0
  339. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  340. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
  341. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Prompt.py +0 -0
  342. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  343. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  344. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  345. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  346. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  347. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  348. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  349. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  350. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Segments.py +0 -0
  351. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ServerStatus.py +0 -0
  352. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  353. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Span.py +0 -0
  354. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  355. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
  356. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
  357. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  358. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  359. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  360. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
  361. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
  362. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  363. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  364. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/Trace.py +0 -0
  365. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  366. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  367. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/User.py +0 -0
  368. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  369. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  370. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  371. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  372. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/__init__.py +0 -0
  373. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/node.py +0 -0
  374. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/types/pagination.py +0 -0
  375. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/api/utils.py +0 -0
  376. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/authorization.py +0 -0
  377. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/bearer_auth.py +0 -0
  378. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
  379. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
  380. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
  381. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
  382. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
  383. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
  384. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
  385. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/daemons/__init__.py +0 -0
  386. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
  387. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
  388. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/dml_event.py +0 -0
  389. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/dml_event_handler.py +0 -0
  390. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/email/__init__.py +0 -0
  391. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/email/sender.py +0 -0
  392. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  393. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
  394. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  395. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/email/templates/welcome.html +0 -0
  396. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/email/types.py +0 -0
  397. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/experiments/__init__.py +0 -0
  398. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/experiments/utils.py +0 -0
  399. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/jwt_store.py +0 -0
  400. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/main.py +0 -0
  401. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/middleware/__init__.py +0 -0
  402. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/middleware/gzip.py +0 -0
  403. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/oauth2.py +0 -0
  404. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/openapi/__init__.py +0 -0
  405. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/rate_limiters.py +0 -0
  406. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/retention.py +0 -0
  407. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/session_filters.py +0 -0
  408. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  409. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  410. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  411. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  412. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  413. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  414. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  415. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  416. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/assets/vendor-BGzfc4EU.css +0 -0
  417. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/assets/vendor-three-BLWp5bic.js +0 -0
  418. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/favicon.ico +0 -0
  419. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/static/modernizr.js +0 -0
  420. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/telemetry.py +0 -0
  421. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/templates/__init__.py +0 -0
  422. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/templates/index.html +0 -0
  423. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/server/types.py +0 -0
  424. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/services.py +0 -0
  425. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/session/__init__.py +0 -0
  426. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/session/client.py +0 -0
  427. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/session/data_extractor.py +0 -0
  428. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/session/evaluation.py +0 -0
  429. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/session/session.py +0 -0
  430. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/settings.py +0 -0
  431. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/__init__.py +0 -0
  432. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/attributes.py +0 -0
  433. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/dsl/README.md +0 -0
  434. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  435. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/dsl/filter.py +0 -0
  436. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  437. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/dsl/query.py +0 -0
  438. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/errors.py +0 -0
  439. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  440. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/exporter.py +0 -0
  441. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/fixtures.py +0 -0
  442. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/otel.py +0 -0
  443. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/projects.py +0 -0
  444. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/schemas.py +0 -0
  445. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/span_evaluations.py +0 -0
  446. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  447. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  448. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/trace_dataset.py +0 -0
  449. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/utils.py +0 -0
  450. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/v1/__init__.py +0 -0
  451. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  452. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  453. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/utilities/__init__.py +0 -0
  454. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/utilities/client.py +0 -0
  455. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/utilities/error_handling.py +0 -0
  456. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/utilities/json.py +0 -0
  457. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/utilities/logging.py +0 -0
  458. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/utilities/project.py +0 -0
  459. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/utilities/re.py +0 -0
  460. {arize_phoenix-11.33.0 → arize_phoenix-11.35.0}/src/phoenix/utilities/span_store.py +0 -0
  461. {arize_phoenix-11.33.0 → arize_phoenix-11.35.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.33.0
3
+ Version: 11.35.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
@@ -21,7 +21,7 @@ Requires-Dist: aioitertools
21
21
  Requires-Dist: aiosqlite
22
22
  Requires-Dist: alembic<2,>=1.3.0
23
23
  Requires-Dist: arize-phoenix-client
24
- Requires-Dist: arize-phoenix-evals>=0.20.6
24
+ Requires-Dist: arize-phoenix-evals>=2.0.0
25
25
  Requires-Dist: arize-phoenix-otel>=0.10.3
26
26
  Requires-Dist: authlib
27
27
  Requires-Dist: cachetools
@@ -121,12 +121,6 @@ Requires-Dist: numba>=0.60.0; extra == 'embeddings'
121
121
  Requires-Dist: umap-learn; extra == 'embeddings'
122
122
  Provides-Extra: evals
123
123
  Provides-Extra: experimental
124
- Provides-Extra: llama-index
125
- Requires-Dist: llama-index-agent-openai>=0.2.7; extra == 'llama-index'
126
- Requires-Dist: llama-index-embeddings-openai>=0.1.10; extra == 'llama-index'
127
- Requires-Dist: llama-index-llms-openai>=0.1.24; extra == 'llama-index'
128
- Requires-Dist: llama-index-readers-file>=0.1.25; extra == 'llama-index'
129
- Requires-Dist: llama-index==0.11.0; extra == 'llama-index'
130
124
  Provides-Extra: pg
131
125
  Requires-Dist: asyncpg; extra == 'pg'
132
126
  Requires-Dist: psycopg[binary,pool]; extra == 'pg'
@@ -241,6 +235,15 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
241
235
  | [Autogen AgentChat](https://arize.com/docs/phoenix/integrations/frameworks/autogen/autogen-tracing) | `openinference-instrumentation-autogen-agentchat` | [![PyPI Version](https://img.shields.io/pypi/v/openinference-instrumentation-autogen-agentchat.svg)](https://pypi.python.org/pypi/openinference-instrumentation-autogen-agentchat) |
242
236
  | [Portkey](https://arize.com/docs/phoenix/integrations/portkey) | `openinference-instrumentation-portkey` | [![PyPI Version](https://img.shields.io/pypi/v/openinference-instrumentation-portkey.svg)](https://pypi.python.org/pypi/openinference-instrumentation-portkey) |
243
237
 
238
+ ## Span Processors
239
+
240
+ Normalize and convert data across other instrumentation libraries by adding span processors that unify data.
241
+
242
+ | Package | Description | Version |
243
+ | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
244
+ | [`openinference-instrumentation-openlit`](./python/instrumentation/openinference-instrumentation-openlit) | OpenInference Span Processor for OpenLIT traces. | [![PyPI Version](https://img.shields.io/pypi/v/openinference-instrumentation-openlit.svg)](https://pypi.python.org/pypi/openinference-instrumentation-openlit) |
245
+ | [`openinference-instrumentation-openllmetry`](./python/instrumentation/openinference-instrumentation-openllmetry) | OpenInference Span Processor for OpenLLMetry (Traceloop) traces. | [![PyPI Version](https://img.shields.io/pypi/v/openinference-instrumentation-openllmetry.svg)](https://pypi.python.org/pypi/openinference-instrumentation-openllmetry) |
246
+
244
247
  ### JavaScript Integrations
245
248
 
246
249
  | Integration | Package | Version Badge |
@@ -256,7 +259,7 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
256
259
  | Integration | Package | Version Badge |
257
260
  | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
258
261
  | [LangChain4j](https://github.com/Arize-ai/openinference/tree/main/java/instrumentation/openinference-instrumentation-langchain4j) | `openinference-instrumentation-langchain4j` | [![Maven Central](https://img.shields.io/maven-central/v/com.arize/openinference-instrumentation-langchain4j.svg)](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-langchain4j) |
259
- | [SpringAI](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-springAI) | `openinference-instrumentation-springAI` | [![Maven Central](https://img.shields.io/maven-central/v/com.arize/openinference-instrumentation-springAI.svg)](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-springAI) |
262
+ | SpringAI | `openinference-instrumentation-springAI` | [![Maven Central](https://img.shields.io/maven-central/v/com.arize/openinference-instrumentation-springAI.svg)](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-springAI) |
260
263
 
261
264
  ### Platforms
262
265
 
@@ -106,6 +106,15 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
106
106
  | [Autogen AgentChat](https://arize.com/docs/phoenix/integrations/frameworks/autogen/autogen-tracing) | `openinference-instrumentation-autogen-agentchat` | [![PyPI Version](https://img.shields.io/pypi/v/openinference-instrumentation-autogen-agentchat.svg)](https://pypi.python.org/pypi/openinference-instrumentation-autogen-agentchat) |
107
107
  | [Portkey](https://arize.com/docs/phoenix/integrations/portkey) | `openinference-instrumentation-portkey` | [![PyPI Version](https://img.shields.io/pypi/v/openinference-instrumentation-portkey.svg)](https://pypi.python.org/pypi/openinference-instrumentation-portkey) |
108
108
 
109
+ ## Span Processors
110
+
111
+ Normalize and convert data across other instrumentation libraries by adding span processors that unify data.
112
+
113
+ | Package | Description | Version |
114
+ | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
115
+ | [`openinference-instrumentation-openlit`](./python/instrumentation/openinference-instrumentation-openlit) | OpenInference Span Processor for OpenLIT traces. | [![PyPI Version](https://img.shields.io/pypi/v/openinference-instrumentation-openlit.svg)](https://pypi.python.org/pypi/openinference-instrumentation-openlit) |
116
+ | [`openinference-instrumentation-openllmetry`](./python/instrumentation/openinference-instrumentation-openllmetry) | OpenInference Span Processor for OpenLLMetry (Traceloop) traces. | [![PyPI Version](https://img.shields.io/pypi/v/openinference-instrumentation-openllmetry.svg)](https://pypi.python.org/pypi/openinference-instrumentation-openllmetry) |
117
+
109
118
  ### JavaScript Integrations
110
119
 
111
120
  | Integration | Package | Version Badge |
@@ -121,7 +130,7 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
121
130
  | Integration | Package | Version Badge |
122
131
  | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
123
132
  | [LangChain4j](https://github.com/Arize-ai/openinference/tree/main/java/instrumentation/openinference-instrumentation-langchain4j) | `openinference-instrumentation-langchain4j` | [![Maven Central](https://img.shields.io/maven-central/v/com.arize/openinference-instrumentation-langchain4j.svg)](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-langchain4j) |
124
- | [SpringAI](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-springAI) | `openinference-instrumentation-springAI` | [![Maven Central](https://img.shields.io/maven-central/v/com.arize/openinference-instrumentation-springAI.svg)](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-springAI) |
133
+ | SpringAI | `openinference-instrumentation-springAI` | [![Maven Central](https://img.shields.io/maven-central/v/com.arize/openinference-instrumentation-springAI.svg)](https://central.sonatype.com/artifact/com.arize/openinference-instrumentation-springAI) |
125
134
 
126
135
  ### Platforms
127
136
 
@@ -53,7 +53,7 @@ dependencies = [
53
53
  "sqlean.py>=3.45.1,<3.50; platform_system == 'Windows'", # https://github.com/nalgeon/sqlean.py/commit/2714a4789998811b7dd9f102f5b45ea071ed879e
54
54
  "cachetools",
55
55
  "python-multipart", # see https://www.starlette.io/#dependencies
56
- "arize-phoenix-evals>=0.20.6",
56
+ "arize-phoenix-evals>=2.0.0",
57
57
  "arize-phoenix-otel>=0.10.3",
58
58
  "fastapi",
59
59
  "pydantic>=2.1.0", # exclude 2.0.* since it does not support the `json_encoders` configuration setting
@@ -115,13 +115,6 @@ embeddings = [
115
115
  ]
116
116
  evals = []
117
117
  experimental = []
118
- llama-index = [
119
- "llama-index==0.11.0", # always pin to a version that keeps our notebooks working
120
- "llama-index-readers-file>=0.1.25",
121
- "llama-index-llms-openai>=0.1.24",
122
- "llama-index-embeddings-openai>=0.1.10",
123
- "llama-index-agent-openai>=0.2.7",
124
- ]
125
118
  pg = [
126
119
  "asyncpg",
127
120
  "psycopg[binary,pool]",
@@ -134,6 +134,25 @@ ENV_PHOENIX_ENABLE_PROMETHEUS = "PHOENIX_ENABLE_PROMETHEUS"
134
134
  """
135
135
  Whether to enable Prometheus. Defaults to false.
136
136
  """
137
+ ENV_PHOENIX_MAX_SPANS_QUEUE_SIZE = "PHOENIX_MAX_SPANS_QUEUE_SIZE"
138
+ """
139
+ The maximum number of spans to hold in the processing queue before rejecting new requests.
140
+
141
+ This is a heuristic to prevent memory issues when spans accumulate faster than they can be
142
+ written to the database. When this limit is reached, new incoming requests will be rejected
143
+ to protect system memory.
144
+
145
+ Note: The actual queue size may exceed this limit due to batch processing. Requests are
146
+ accepted or rejected before spans are deserialized, but a single accepted request may
147
+ contain multiple spans. This behavior is intentional to balance memory protection with
148
+ processing efficiency.
149
+
150
+ Memory usage: If an average span takes ~50KiB of memory, then 20,000 spans would use ~1GiB
151
+ of memory. Adjust this value based on your system's available memory and expected database
152
+ throughput.
153
+
154
+ Defaults to 20000.
155
+ """
137
156
  ENV_LOGGING_MODE = "PHOENIX_LOGGING_MODE"
138
157
  """
139
158
  The logging mode (either 'default' or 'structured').
@@ -1422,6 +1441,30 @@ def get_env_enable_prometheus() -> bool:
1422
1441
  )
1423
1442
 
1424
1443
 
1444
+ def get_env_max_spans_queue_size() -> int:
1445
+ """
1446
+ Gets the maximum spans queue size from the PHOENIX_MAX_SPANS_QUEUE_SIZE environment variable.
1447
+
1448
+ Returns:
1449
+ int: The maximum number of spans to hold in queue before rejecting requests.
1450
+ Defaults to 20,000 if not set.
1451
+
1452
+ Raises:
1453
+ ValueError: If the value is not a positive integer.
1454
+
1455
+ Note:
1456
+ The actual queue size may exceed this limit due to batch processing where a single
1457
+ accepted request can contain multiple spans. This is a heuristic for memory protection.
1458
+ """
1459
+ max_size = _int_val(ENV_PHOENIX_MAX_SPANS_QUEUE_SIZE, 20_000)
1460
+ if max_size <= 0:
1461
+ raise ValueError(
1462
+ f"Invalid value for environment variable {ENV_PHOENIX_MAX_SPANS_QUEUE_SIZE}: "
1463
+ f"{max_size}. Value must be a positive integer."
1464
+ )
1465
+ return max_size
1466
+
1467
+
1425
1468
  def get_env_client_headers() -> dict[str, str]:
1426
1469
  headers = parse_env_headers(getenv(ENV_PHOENIX_CLIENT_HEADERS))
1427
1470
  if (api_key := get_env_phoenix_api_key()) and "authorization" not in [
@@ -1684,6 +1727,7 @@ def verify_server_environment_variables() -> None:
1684
1727
  get_env_database_allocated_storage_capacity_gibibytes()
1685
1728
  get_env_database_usage_email_warning_threshold_percentage()
1686
1729
  get_env_database_usage_insertion_blocking_threshold_percentage()
1730
+ get_env_max_spans_queue_size()
1687
1731
  validate_env_support_email()
1688
1732
 
1689
1733
  # Notify users about deprecated environment variables if they are being used.
@@ -1,17 +1,17 @@
1
1
  import asyncio
2
2
  import logging
3
3
  from asyncio import Queue, as_completed
4
- from collections.abc import AsyncIterator, Awaitable, Callable, Iterable
4
+ from collections import deque
5
5
  from dataclasses import dataclass, field
6
6
  from functools import singledispatchmethod
7
- from itertools import islice
8
- from time import perf_counter
9
- from typing import Any, Optional, cast
7
+ from time import perf_counter, time
8
+ from typing import Any, AsyncIterator, Awaitable, Callable, Iterable, Optional, cast
10
9
 
11
10
  from openinference.semconv.trace import SpanAttributes
12
11
  from typing_extensions import TypeAlias
13
12
 
14
13
  import phoenix.trace.v1 as pb
14
+ from phoenix.db import models
15
15
  from phoenix.db.insertion.constants import DEFAULT_RETRY_ALLOWANCE, DEFAULT_RETRY_DELAY_SEC
16
16
  from phoenix.db.insertion.document_annotation import DocumentAnnotationQueueInserter
17
17
  from phoenix.db.insertion.evaluation import (
@@ -29,15 +29,23 @@ from phoenix.db.insertion.trace_annotation import TraceAnnotationQueueInserter
29
29
  from phoenix.db.insertion.types import Insertables, Precursors
30
30
  from phoenix.server.daemons.span_cost_calculator import (
31
31
  SpanCostCalculator,
32
- SpanCostCalculatorQueueItem,
33
32
  )
34
33
  from phoenix.server.dml_event import DmlEvent, SpanInsertEvent
34
+ from phoenix.server.prometheus import (
35
+ BULK_LOADER_EVALUATION_INSERTIONS,
36
+ BULK_LOADER_EXCEPTIONS,
37
+ BULK_LOADER_LAST_ACTIVITY,
38
+ BULK_LOADER_SPAN_EXCEPTIONS,
39
+ BULK_LOADER_SPAN_INSERTION_TIME,
40
+ SPAN_QUEUE_SIZE,
41
+ )
35
42
  from phoenix.server.types import CanPutItem, DbSessionFactory
36
43
  from phoenix.trace.schemas import Span
37
44
 
38
45
  logger = logging.getLogger(__name__)
39
46
 
40
47
  ProjectRowId: TypeAlias = int
48
+ ProjectName: TypeAlias = str
41
49
 
42
50
 
43
51
  @dataclass(frozen=True)
@@ -52,12 +60,12 @@ class BulkInserter:
52
60
  *,
53
61
  event_queue: CanPutItem[DmlEvent],
54
62
  span_cost_calculator: SpanCostCalculator,
55
- initial_batch_of_spans: Optional[Iterable[tuple[Span, str]]] = None,
56
- initial_batch_of_evaluations: Optional[Iterable[pb.Evaluation]] = None,
63
+ initial_batch_of_spans: Iterable[tuple[Span, ProjectName]] = (),
64
+ initial_batch_of_evaluations: Iterable[pb.Evaluation] = (),
57
65
  sleep: float = 0.1,
58
66
  max_ops_per_transaction: int = 1000,
59
67
  max_queue_size: int = 1000,
60
- enable_prometheus: bool = False,
68
+ max_spans_queue_size: Optional[int] = None,
61
69
  retry_delay_sec: float = DEFAULT_RETRY_DELAY_SEC,
62
70
  retry_allowance: int = DEFAULT_RETRY_ALLOWANCE,
63
71
  ) -> None:
@@ -68,7 +76,6 @@ class BulkInserter:
68
76
  :param max_ops_per_transaction: The maximum number of operations to dequeue from
69
77
  the operations queue for each transaction.
70
78
  :param max_queue_size: The maximum length of the operations queue.
71
- :param enable_prometheus: Whether Prometheus is enabled.
72
79
  """
73
80
  self._db = db
74
81
  self._running = False
@@ -76,20 +83,20 @@ class BulkInserter:
76
83
  self._max_ops_per_transaction = max_ops_per_transaction
77
84
  self._operations: Optional[Queue[DataManipulation]] = None
78
85
  self._max_queue_size = max_queue_size
79
- self._spans: list[tuple[Span, str]] = (
80
- [] if initial_batch_of_spans is None else list(initial_batch_of_spans)
81
- )
82
- self._evaluations: list[pb.Evaluation] = (
83
- [] if initial_batch_of_evaluations is None else list(initial_batch_of_evaluations)
84
- )
86
+ self._max_spans_queue_size = max_spans_queue_size
87
+ self._spans: deque[tuple[Span, ProjectName]] = deque(initial_batch_of_spans)
88
+ self._evaluations: deque[pb.Evaluation] = deque(initial_batch_of_evaluations)
85
89
  self._task: Optional[asyncio.Task[None]] = None
86
90
  self._event_queue = event_queue
87
- self._enable_prometheus = enable_prometheus
88
91
  self._retry_delay_sec = retry_delay_sec
89
92
  self._retry_allowance = retry_allowance
90
93
  self._queue_inserters = _QueueInserters(db, self._retry_delay_sec, self._retry_allowance)
91
94
  self._span_cost_calculator = span_cost_calculator
92
95
 
96
+ @property
97
+ def is_full(self) -> bool:
98
+ return bool(self._max_spans_queue_size and self._max_spans_queue_size <= len(self._spans))
99
+
93
100
  async def __aenter__(
94
101
  self,
95
102
  ) -> tuple[
@@ -102,9 +109,9 @@ class BulkInserter:
102
109
  self._operations = Queue(maxsize=self._max_queue_size)
103
110
  self._task = asyncio.create_task(self._bulk_insert())
104
111
  return (
105
- self._enqueue,
106
- self._queue_span,
107
- self._queue_evaluation,
112
+ self._enqueue_annotations,
113
+ self._enqueue_span,
114
+ self._enqueue_evaluation,
108
115
  self._enqueue_operation,
109
116
  )
110
117
 
@@ -114,23 +121,22 @@ class BulkInserter:
114
121
  self._task.cancel()
115
122
  self._task = None
116
123
 
117
- async def _enqueue(self, *items: Any) -> None:
124
+ async def _enqueue_annotations(self, *items: Any) -> None:
118
125
  await self._queue_inserters.enqueue(*items)
119
126
 
120
127
  def _enqueue_operation(self, operation: DataManipulation) -> None:
121
128
  cast("Queue[DataManipulation]", self._operations).put_nowait(operation)
122
129
 
123
- async def _queue_span(self, span: Span, project_name: str) -> None:
130
+ async def _enqueue_span(self, span: Span, project_name: str) -> None:
124
131
  self._spans.append((span, project_name))
125
132
 
126
- async def _queue_evaluation(self, evaluation: pb.Evaluation) -> None:
133
+ async def _enqueue_evaluation(self, evaluation: pb.Evaluation) -> None:
127
134
  self._evaluations.append(evaluation)
128
135
 
129
136
  async def _process_events(self, events: Iterable[Optional[DataManipulationEvent]]) -> None: ...
130
137
 
131
138
  async def _bulk_insert(self) -> None:
132
139
  assert isinstance(self._operations, Queue)
133
- spans_buffer, evaluations_buffer = None, None
134
140
  # start first insert immediately if the inserter has not run recently
135
141
  while (
136
142
  self._running
@@ -139,6 +145,8 @@ class BulkInserter:
139
145
  or self._spans
140
146
  or self._evaluations
141
147
  ):
148
+ BULK_LOADER_LAST_ACTIVITY.set(time())
149
+ SPAN_QUEUE_SIZE.set(len(self._spans))
142
150
  if (
143
151
  self._queue_inserters.empty
144
152
  and self._operations.empty()
@@ -156,113 +164,100 @@ class BulkInserter:
156
164
  async with session.begin_nested():
157
165
  await op(session)
158
166
  except Exception as e:
159
- if self._enable_prometheus:
160
- from phoenix.server.prometheus import BULK_LOADER_EXCEPTIONS
161
-
162
- BULK_LOADER_EXCEPTIONS.inc()
167
+ BULK_LOADER_EXCEPTIONS.inc()
163
168
  logger.exception(str(e))
164
169
  # It's important to grab the buffers at the same time so there's
165
170
  # no race condition, since an eval insertion will fail if the span
166
171
  # it references doesn't exist. Grabbing the eval buffer later may
167
172
  # include an eval whose span is in the queue but missed being
168
173
  # included in the span buffer that was grabbed previously.
169
- if self._spans:
170
- spans_buffer = self._spans
171
- self._spans = []
172
- if self._evaluations:
173
- evaluations_buffer = self._evaluations
174
- self._evaluations = []
174
+ num_spans_to_insert = min(self._max_ops_per_transaction, len(self._spans))
175
+ num_evals_to_insert = min(self._max_ops_per_transaction, len(self._evaluations))
175
176
  # Spans should be inserted before the evaluations, since an evaluation
176
177
  # insertion will fail if the span it references doesn't exist.
177
- if spans_buffer:
178
- await self._insert_spans(spans_buffer)
179
- spans_buffer = None
180
- if evaluations_buffer:
181
- await self._insert_evaluations(evaluations_buffer)
182
- evaluations_buffer = None
178
+ await self._insert_spans(num_spans_to_insert)
179
+ await self._insert_evaluations(num_evals_to_insert)
183
180
  async for event in self._queue_inserters.insert():
184
181
  self._event_queue.put(event)
185
182
  await asyncio.sleep(self._sleep)
186
183
 
187
- async def _insert_spans(self, spans: list[tuple[Span, str]]) -> None:
184
+ async def _insert_spans(self, num_spans_to_insert: int) -> None:
185
+ if not num_spans_to_insert or not self._spans:
186
+ return
188
187
  project_ids = set()
189
- span_cost_calculator_queue: list[SpanCostCalculatorQueueItem] = []
190
- for i in range(0, len(spans), self._max_ops_per_transaction):
191
- try:
192
- start = perf_counter()
193
- async with self._db() as session:
194
- for span, project_name in islice(spans, i, i + self._max_ops_per_transaction):
195
- if self._enable_prometheus:
196
- from phoenix.server.prometheus import BULK_LOADER_SPAN_INSERTIONS
197
-
198
- BULK_LOADER_SPAN_INSERTIONS.inc()
199
- result: Optional[SpanInsertionEvent] = None
200
- try:
201
- async with session.begin_nested():
202
- result = await insert_span(session, span, project_name)
203
- except Exception:
204
- if self._enable_prometheus:
205
- from phoenix.server.prometheus import BULK_LOADER_EXCEPTIONS
206
-
207
- BULK_LOADER_EXCEPTIONS.inc()
208
- logger.exception(
209
- f"Failed to insert span with span_id={span.context.span_id}"
210
- )
211
- if result is not None:
212
- project_ids.add(result.project_rowid)
213
- if should_calculate_span_cost(span.attributes):
214
- span_cost_calculator_queue.append(
215
- SpanCostCalculatorQueueItem(
216
- span_rowid=result.span_rowid,
217
- trace_rowid=result.trace_rowid,
218
- attributes=span.attributes,
219
- span_start_time=span.start_time,
220
- )
221
- )
222
-
223
- if self._enable_prometheus:
224
- from phoenix.server.prometheus import BULK_LOADER_INSERTION_TIME
225
-
226
- BULK_LOADER_INSERTION_TIME.observe(perf_counter() - start)
227
- except Exception:
228
- if self._enable_prometheus:
229
- from phoenix.server.prometheus import BULK_LOADER_EXCEPTIONS
230
-
231
- BULK_LOADER_EXCEPTIONS.inc()
232
- logger.exception("Failed to insert spans")
233
- self._event_queue.put(SpanInsertEvent(tuple(project_ids)))
234
- for item in span_cost_calculator_queue:
235
- self._span_cost_calculator.put_nowait(item)
236
-
237
- async def _insert_evaluations(self, evaluations: list[pb.Evaluation]) -> None:
238
- for i in range(0, len(evaluations), self._max_ops_per_transaction):
239
- try:
240
- start = perf_counter()
241
- async with self._db() as session:
242
- for evaluation in islice(evaluations, i, i + self._max_ops_per_transaction):
243
- if self._enable_prometheus:
244
- from phoenix.server.prometheus import BULK_LOADER_EVALUATION_INSERTIONS
245
-
246
- BULK_LOADER_EVALUATION_INSERTIONS.inc()
247
- try:
248
- async with session.begin_nested():
249
- await insert_evaluation(session, evaluation)
250
- except InsertEvaluationError as error:
251
- if self._enable_prometheus:
252
- from phoenix.server.prometheus import BULK_LOADER_EXCEPTIONS
253
-
254
- BULK_LOADER_EXCEPTIONS.inc()
255
- logger.exception(f"Failed to insert evaluation: {str(error)}")
256
- if self._enable_prometheus:
257
- from phoenix.server.prometheus import BULK_LOADER_INSERTION_TIME
258
-
259
- BULK_LOADER_INSERTION_TIME.observe(perf_counter() - start)
260
- except Exception:
261
- if self._enable_prometheus:
262
- from phoenix.server.prometheus import BULK_LOADER_EXCEPTIONS
188
+ span_costs: list[models.SpanCost] = []
189
+ try:
190
+ start = perf_counter()
191
+ async with self._db() as session:
192
+ while num_spans_to_insert > 0:
193
+ num_spans_to_insert -= 1
194
+ if not self._spans:
195
+ break
196
+ span, project_name = self._spans.popleft()
197
+ result: Optional[SpanInsertionEvent] = None
198
+ try:
199
+ async with session.begin_nested():
200
+ result = await insert_span(session, span, project_name)
201
+ except Exception:
202
+ BULK_LOADER_SPAN_EXCEPTIONS.inc()
203
+ logger.exception(
204
+ f"Failed to insert span with span_id={span.context.span_id}"
205
+ )
206
+ if result is None:
207
+ continue
208
+ project_ids.add(result.project_rowid)
209
+ try:
210
+ if not should_calculate_span_cost(span.attributes):
211
+ continue
212
+ span_cost = self._span_cost_calculator.calculate_cost(
213
+ span.start_time,
214
+ span.attributes,
215
+ )
216
+ except Exception:
217
+ logger.exception(
218
+ f"Failed to calculate span cost for span with "
219
+ f"span_id={span.context.span_id}"
220
+ )
221
+ else:
222
+ if span_cost is None:
223
+ continue
224
+ span_cost.span_rowid = result.span_rowid
225
+ span_cost.trace_rowid = result.trace_rowid
226
+ span_costs.append(span_cost)
227
+ BULK_LOADER_SPAN_INSERTION_TIME.observe(perf_counter() - start)
228
+ except Exception:
229
+ BULK_LOADER_SPAN_EXCEPTIONS.inc()
230
+ logger.exception("Failed to insert spans")
231
+ if project_ids:
232
+ self._event_queue.put(SpanInsertEvent(tuple(project_ids)))
233
+ if not span_costs:
234
+ return
235
+ try:
236
+ async with self._db() as session:
237
+ session.add_all(span_costs)
238
+ except Exception:
239
+ logger.exception("Failed to insert span costs")
263
240
 
264
- BULK_LOADER_EXCEPTIONS.inc()
265
- logger.exception("Failed to insert evaluations")
241
+ async def _insert_evaluations(self, num_evals_to_insert: int) -> None:
242
+ if not num_evals_to_insert or not self._evaluations:
243
+ return
244
+ try:
245
+ async with self._db() as session:
246
+ while num_evals_to_insert > 0:
247
+ num_evals_to_insert -= 1
248
+ if not self._evaluations:
249
+ break
250
+ evaluation = self._evaluations.popleft()
251
+ BULK_LOADER_EVALUATION_INSERTIONS.inc()
252
+ try:
253
+ async with session.begin_nested():
254
+ await insert_evaluation(session, evaluation)
255
+ except InsertEvaluationError as error:
256
+ BULK_LOADER_EXCEPTIONS.inc()
257
+ logger.exception(f"Failed to insert evaluation: {str(error)}")
258
+ except Exception:
259
+ BULK_LOADER_EXCEPTIONS.inc()
260
+ logger.exception("Failed to insert evaluations")
266
261
 
267
262
 
268
263
  class _QueueInserters:
@@ -82,7 +82,7 @@ async def annotate_span_documents(
82
82
  annotation.as_precursor(user_id=user_id) for annotation in span_document_annotations
83
83
  ]
84
84
  if not sync:
85
- await request.state.enqueue(*precursors)
85
+ await request.state.enqueue_annotations(*precursors)
86
86
  return AnnotateSpanDocumentsResponseBody(data=[])
87
87
 
88
88
  span_ids = {p.span_id for p in precursors}
@@ -102,7 +102,7 @@ async def post_evaluations(
102
102
  detail="Evaluation name must not be blank/empty",
103
103
  status_code=HTTP_422_UNPROCESSABLE_ENTITY,
104
104
  )
105
- await request.state.queue_evaluation_for_bulk_insert(evaluation)
105
+ await request.state.enqueue_evaluation(evaluation)
106
106
  return Response()
107
107
 
108
108
 
@@ -221,7 +221,7 @@ async def _add_evaluations(state: State, evaluations: Evaluations) -> None:
221
221
  explanation=explanation,
222
222
  metadata_={},
223
223
  )
224
- await state.enqueue(document_annotation)
224
+ await state.enqueue_annotations(document_annotation)
225
225
  elif len(names) == 1 and names[0] in ("context.span_id", "span_id"):
226
226
  for index, row in dataframe.iterrows():
227
227
  score, label, explanation = _get_annotation_result(row)
@@ -235,7 +235,7 @@ async def _add_evaluations(state: State, evaluations: Evaluations) -> None:
235
235
  explanation=explanation,
236
236
  metadata_={},
237
237
  )
238
- await state.enqueue(span_annotation)
238
+ await state.enqueue_annotations(span_annotation)
239
239
  elif len(names) == 1 and names[0] in ("context.trace_id", "trace_id"):
240
240
  for index, row in dataframe.iterrows():
241
241
  score, label, explanation = _get_annotation_result(row)
@@ -249,7 +249,7 @@ async def _add_evaluations(state: State, evaluations: Evaluations) -> None:
249
249
  explanation=explanation,
250
250
  metadata_={},
251
251
  )
252
- await state.enqueue(trace_annotation)
252
+ await state.enqueue_annotations(trace_annotation)
253
253
 
254
254
 
255
255
  def _get_annotation_result(
@@ -897,7 +897,7 @@ async def annotate_spans(
897
897
  )
898
898
  precursors = [d.as_precursor(user_id=user_id) for d in filtered_span_annotations]
899
899
  if not sync:
900
- await request.state.enqueue(*precursors)
900
+ await request.state.enqueue_annotations(*precursors)
901
901
  return AnnotateSpansResponseBody(data=[])
902
902
 
903
903
  span_ids = {p.span_id for p in precursors}
@@ -1072,7 +1072,7 @@ async def create_spans(
1072
1072
 
1073
1073
  # All spans are valid, queue them all
1074
1074
  for span_for_insertion, project_name in spans_to_queue:
1075
- await request.state.queue_span_for_bulk_insert(span_for_insertion, project_name)
1075
+ await request.state.enqueue_span(span_for_insertion, project_name)
1076
1076
 
1077
1077
  return CreateSpansResponseBody(
1078
1078
  total_received=total_received,
@@ -18,6 +18,7 @@ from starlette.status import (
18
18
  HTTP_404_NOT_FOUND,
19
19
  HTTP_415_UNSUPPORTED_MEDIA_TYPE,
20
20
  HTTP_422_UNPROCESSABLE_ENTITY,
21
+ HTTP_503_SERVICE_UNAVAILABLE,
21
22
  )
22
23
  from strawberry.relay import GlobalID
23
24
 
@@ -29,6 +30,7 @@ from phoenix.server.api.types.node import from_global_id_with_expected_type
29
30
  from phoenix.server.authorization import is_not_locked
30
31
  from phoenix.server.bearer_auth import PhoenixUser
31
32
  from phoenix.server.dml_event import SpanDeleteEvent, TraceAnnotationInsertEvent
33
+ from phoenix.server.prometheus import SPAN_QUEUE_REJECTIONS
32
34
  from phoenix.trace.otel import decode_otlp_span
33
35
  from phoenix.utilities.project import get_project_name
34
36
 
@@ -42,9 +44,18 @@ from .utils import (
42
44
  router = APIRouter(tags=["traces"])
43
45
 
44
46
 
47
+ def is_not_at_capacity(request: Request) -> None:
48
+ if request.app.state.span_queue_is_full():
49
+ SPAN_QUEUE_REJECTIONS.inc()
50
+ raise HTTPException(
51
+ detail="Server is at capacity and cannot process more requests",
52
+ status_code=HTTP_503_SERVICE_UNAVAILABLE,
53
+ )
54
+
55
+
45
56
  @router.post(
46
57
  "/traces",
47
- dependencies=[Depends(is_not_locked)],
58
+ dependencies=[Depends(is_not_locked), Depends(is_not_at_capacity)],
48
59
  operation_id="addTraces",
49
60
  summary="Send traces",
50
61
  responses=add_errors_to_responses(
@@ -56,6 +67,10 @@ router = APIRouter(tags=["traces"])
56
67
  ),
57
68
  },
58
69
  {"status_code": HTTP_422_UNPROCESSABLE_ENTITY, "description": "Invalid request body"},
70
+ {
71
+ "status_code": HTTP_503_SERVICE_UNAVAILABLE,
72
+ "description": "Server is at capacity and cannot process more requests",
73
+ },
59
74
  ]
60
75
  ),
61
76
  openapi_extra={
@@ -145,7 +160,7 @@ async def annotate_traces(
145
160
 
146
161
  precursors = [d.as_precursor(user_id=user_id) for d in request_body.data]
147
162
  if not sync:
148
- await request.state.enqueue(*precursors)
163
+ await request.state.enqueue_annotations(*precursors)
149
164
  return AnnotateTracesResponseBody(data=[])
150
165
 
151
166
  trace_ids = {p.trace_id for p in precursors}
@@ -193,7 +208,7 @@ async def _add_spans(req: ExportTraceServiceRequest, state: State) -> None:
193
208
  for scope_span in resource_spans.scope_spans:
194
209
  for otlp_span in scope_span.spans:
195
210
  span = await run_in_threadpool(decode_otlp_span, otlp_span)
196
- await state.queue_span_for_bulk_insert(span, project_name)
211
+ await state.enqueue_span(span, project_name)
197
212
 
198
213
 
199
214
  @router.delete(