arize-phoenix 10.5.0__tar.gz → 10.6.1__tar.gz

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

Potentially problematic release.


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

Files changed (410) hide show
  1. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/.gitignore +2 -0
  2. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/PKG-INFO +3 -3
  3. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/pyproject.toml +2 -2
  4. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/annotations.py +26 -4
  5. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/spans.py +180 -35
  6. arize_phoenix-10.6.1/src/phoenix/server/static/.vite/manifest.json +87 -0
  7. arize_phoenix-10.5.0/src/phoenix/server/static/assets/components-i0MTMvxr.js → arize_phoenix-10.6.1/src/phoenix/server/static/assets/components-J06J_j9O.js +303 -247
  8. arize_phoenix-10.5.0/src/phoenix/server/static/assets/index-BBU9ybeN.js → arize_phoenix-10.6.1/src/phoenix/server/static/assets/index-DfT39tc3.js +22 -8
  9. arize_phoenix-10.5.0/src/phoenix/server/static/assets/pages-Dmq64JIh.js → arize_phoenix-10.6.1/src/phoenix/server/static/assets/pages-nxs-tDxQ.js +389 -406
  10. arize_phoenix-10.6.1/src/phoenix/server/static/assets/vendor-B52WHALA.js +911 -0
  11. arize_phoenix-10.6.1/src/phoenix/server/static/assets/vendor-arizeai-DGHetzZW.js +642 -0
  12. arize_phoenix-10.5.0/src/phoenix/server/static/assets/vendor-codemirror-c6BZvTq5.js → arize_phoenix-10.6.1/src/phoenix/server/static/assets/vendor-codemirror-QIdVJrP_.js +1 -1
  13. arize_phoenix-10.5.0/src/phoenix/server/static/assets/vendor-recharts-ButLmGII.js → arize_phoenix-10.6.1/src/phoenix/server/static/assets/vendor-recharts-GmWamXB4.js +1 -1
  14. arize_phoenix-10.5.0/src/phoenix/server/static/assets/vendor-shiki-BDqcZGjN.js → arize_phoenix-10.6.1/src/phoenix/server/static/assets/vendor-shiki-C8cTrXI5.js +1 -1
  15. arize_phoenix-10.6.1/src/phoenix/version.py +1 -0
  16. arize_phoenix-10.5.0/src/phoenix/server/static/.vite/manifest.json +0 -87
  17. arize_phoenix-10.5.0/src/phoenix/server/static/assets/vendor-Cm32tkMA.js +0 -905
  18. arize_phoenix-10.5.0/src/phoenix/server/static/assets/vendor-arizeai-CB-pngCZ.js +0 -649
  19. arize_phoenix-10.5.0/src/phoenix/version.py +0 -1
  20. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/IP_NOTICE +0 -0
  21. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/LICENSE +0 -0
  22. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/README.md +0 -0
  23. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/__init__.py +0 -0
  24. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/auth.py +0 -0
  25. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/config.py +0 -0
  26. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/core/__init__.py +0 -0
  27. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/core/embedding_dimension.py +0 -0
  28. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/core/model.py +0 -0
  29. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/core/model_schema.py +0 -0
  30. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/core/model_schema_adapter.py +0 -0
  31. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/datetime_utils.py +0 -0
  32. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/README.md +0 -0
  33. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/__init__.py +0 -0
  34. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/alembic.ini +0 -0
  35. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/bulk_inserter.py +0 -0
  36. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/constants.py +0 -0
  37. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/engines.py +0 -0
  38. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/enums.py +0 -0
  39. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/facilitator.py +0 -0
  40. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/helpers.py +0 -0
  41. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/__init__.py +0 -0
  42. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/constants.py +0 -0
  43. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/dataset.py +0 -0
  44. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/document_annotation.py +0 -0
  45. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/evaluation.py +0 -0
  46. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/helpers.py +0 -0
  47. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/span.py +0 -0
  48. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/span_annotation.py +0 -0
  49. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  50. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/insertion/types.py +0 -0
  51. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrate.py +0 -0
  52. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/__init__.py +0 -0
  53. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  54. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  55. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/env.py +0 -0
  56. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/script.py.mako +0 -0
  57. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  58. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
  59. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  60. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  61. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
  62. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
  63. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
  64. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  65. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  66. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  67. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/models.py +0 -0
  68. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/pg_config.py +0 -0
  69. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/types/__init__.py +0 -0
  70. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/types/annotation_configs.py +0 -0
  71. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/types/db_models.py +0 -0
  72. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/types/identifier.py +0 -0
  73. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/types/model_provider.py +0 -0
  74. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/db/types/trace_retention.py +0 -0
  75. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/exceptions.py +0 -0
  76. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/__init__.py +0 -0
  77. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  78. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/evaluators/base.py +0 -0
  79. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  80. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  81. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/evaluators/utils.py +0 -0
  82. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/functions.py +0 -0
  83. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/tracing.py +0 -0
  84. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/types.py +0 -0
  85. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/experiments/utils.py +0 -0
  86. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/inferences/__init__.py +0 -0
  87. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/inferences/errors.py +0 -0
  88. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/inferences/fixtures.py +0 -0
  89. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/inferences/inferences.py +0 -0
  90. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/inferences/schema.py +0 -0
  91. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/inferences/validation.py +0 -0
  92. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/logging/__init__.py +0 -0
  93. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/logging/_config.py +0 -0
  94. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/logging/_filter.py +0 -0
  95. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/logging/_formatter.py +0 -0
  96. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/metrics/README.md +0 -0
  97. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/metrics/__init__.py +0 -0
  98. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/metrics/binning.py +0 -0
  99. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/metrics/metrics.py +0 -0
  100. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/metrics/mixins.py +0 -0
  101. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  102. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/metrics/timeseries.py +0 -0
  103. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/metrics/wrappers.py +0 -0
  104. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/pointcloud/__init__.py +0 -0
  105. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/pointcloud/clustering.py +0 -0
  106. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/pointcloud/pointcloud.py +0 -0
  107. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/pointcloud/projectors.py +0 -0
  108. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  109. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/py.typed +0 -0
  110. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/__init__.py +0 -0
  111. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/README.md +0 -0
  112. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/__init__.py +0 -0
  113. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/auth.py +0 -0
  114. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/context.py +0 -0
  115. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  116. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  117. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  118. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  119. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  120. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  121. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  122. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  123. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  124. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  125. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  126. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  127. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  128. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  129. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  130. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  131. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  132. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  133. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
  134. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  135. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
  136. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  137. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  138. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  139. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  140. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  141. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  142. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  143. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  144. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  145. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  146. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  147. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  148. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  149. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  150. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  151. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
  152. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  153. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  154. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/dataloaders/users.py +0 -0
  155. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/exceptions.py +0 -0
  156. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/__init__.py +0 -0
  157. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/annotations.py +0 -0
  158. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  159. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  160. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
  161. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  162. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  163. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  164. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  165. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  166. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  167. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  168. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  169. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  170. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  171. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  172. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  173. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  174. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  175. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  176. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  177. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  178. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  179. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  180. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  181. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  182. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  183. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  184. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  185. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  186. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  187. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  188. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  189. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  190. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  191. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  192. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  193. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  194. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  195. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
  196. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  197. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
  198. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  199. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  200. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
  201. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  202. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  203. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  204. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  205. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  206. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/input_types/__init__.py +0 -0
  207. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/interceptor.py +0 -0
  208. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/__init__.py +0 -0
  209. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
  210. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  211. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  212. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  213. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  214. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  215. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  216. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
  217. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  218. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  219. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  220. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  221. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  222. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
  223. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  224. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/openapi/__init__.py +0 -0
  225. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/openapi/main.py +0 -0
  226. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/openapi/schema.py +0 -0
  227. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/queries.py +0 -0
  228. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/__init__.py +0 -0
  229. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/auth.py +0 -0
  230. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/embeddings.py +0 -0
  231. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/oauth2.py +0 -0
  232. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/utils.py +0 -0
  233. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  234. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
  235. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  236. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  237. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  238. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  239. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  240. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/models.py +0 -0
  241. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/projects.py +0 -0
  242. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  243. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  244. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/users.py +0 -0
  245. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  246. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/schema.py +0 -0
  247. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/subscriptions.py +0 -0
  248. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Annotation.py +0 -0
  249. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
  250. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
  251. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  252. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  253. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ApiKey.py +0 -0
  254. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  255. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  256. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  257. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Cluster.py +0 -0
  258. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  259. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/CronExpression.py +0 -0
  260. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  261. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Dataset.py +0 -0
  262. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  263. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  264. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  265. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  266. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Dimension.py +0 -0
  267. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  268. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  269. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DimensionType.py +0 -0
  270. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  271. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  272. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  273. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  274. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  275. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Evaluation.py +0 -0
  276. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  277. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Event.py +0 -0
  278. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  279. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  280. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Experiment.py +0 -0
  281. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  282. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  283. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  284. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  285. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  286. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Functionality.py +0 -0
  287. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  288. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  289. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Identifier.py +0 -0
  290. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Inferences.py +0 -0
  291. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  292. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  293. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/MimeType.py +0 -0
  294. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Model.py +0 -0
  295. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/NumericRange.py +0 -0
  296. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  297. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Project.py +0 -0
  298. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  299. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
  300. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Prompt.py +0 -0
  301. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  302. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  303. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  304. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  305. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  306. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  307. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Retrieval.py +0 -0
  308. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  309. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Segments.py +0 -0
  310. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/SortDir.py +0 -0
  311. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Span.py +0 -0
  312. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  313. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  314. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  315. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  316. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
  317. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  318. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  319. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/Trace.py +0 -0
  320. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  321. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  322. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/User.py +0 -0
  323. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  324. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/UserRole.py +0 -0
  325. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  326. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  327. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/__init__.py +0 -0
  328. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/node.py +0 -0
  329. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/types/pagination.py +0 -0
  330. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/api/utils.py +0 -0
  331. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/app.py +0 -0
  332. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/authorization.py +0 -0
  333. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/bearer_auth.py +0 -0
  334. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/cost_tracking/__init__.py +0 -0
  335. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/cost_tracking/cost_lookup.py +0 -0
  336. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
  337. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/dml_event.py +0 -0
  338. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/dml_event_handler.py +0 -0
  339. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/email/__init__.py +0 -0
  340. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/email/sender.py +0 -0
  341. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/email/templates/__init__.py +0 -0
  342. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/email/templates/password_reset.html +0 -0
  343. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/email/templates/welcome.html +0 -0
  344. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/email/types.py +0 -0
  345. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/grpc_server.py +0 -0
  346. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/jwt_store.py +0 -0
  347. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/main.py +0 -0
  348. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/middleware/__init__.py +0 -0
  349. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/middleware/gzip.py +0 -0
  350. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/oauth2.py +0 -0
  351. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/openapi/__init__.py +0 -0
  352. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/prometheus.py +0 -0
  353. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/rate_limiters.py +0 -0
  354. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/retention.py +0 -0
  355. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  356. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  357. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  358. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  359. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  360. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  361. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  362. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  363. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/assets/vendor-WIZid84E.css +0 -0
  364. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/assets/vendor-three-C5WAXd5r.js +0 -0
  365. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/favicon.ico +0 -0
  366. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/static/modernizr.js +0 -0
  367. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/telemetry.py +0 -0
  368. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/templates/__init__.py +0 -0
  369. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/templates/index.html +0 -0
  370. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/thread_server.py +0 -0
  371. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/server/types.py +0 -0
  372. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/services.py +0 -0
  373. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/session/__init__.py +0 -0
  374. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/session/client.py +0 -0
  375. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/session/data_extractor.py +0 -0
  376. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/session/evaluation.py +0 -0
  377. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/session/session.py +0 -0
  378. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/settings.py +0 -0
  379. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/__init__.py +0 -0
  380. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/attributes.py +0 -0
  381. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/dsl/README.md +0 -0
  382. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/dsl/__init__.py +0 -0
  383. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/dsl/filter.py +0 -0
  384. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/dsl/helpers.py +0 -0
  385. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/dsl/query.py +0 -0
  386. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/errors.py +0 -0
  387. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/evaluation_conventions.py +0 -0
  388. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/exporter.py +0 -0
  389. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/fixtures.py +0 -0
  390. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/otel.py +0 -0
  391. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/projects.py +0 -0
  392. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/schemas.py +0 -0
  393. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/span_evaluations.py +0 -0
  394. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/span_json_decoder.py +0 -0
  395. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/span_json_encoder.py +0 -0
  396. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/trace_dataset.py +0 -0
  397. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/utils.py +0 -0
  398. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/v1/__init__.py +0 -0
  399. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  400. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  401. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/__init__.py +0 -0
  402. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/client.py +0 -0
  403. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/deprecation.py +0 -0
  404. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/error_handling.py +0 -0
  405. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/json.py +0 -0
  406. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/logging.py +0 -0
  407. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/project.py +0 -0
  408. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/re.py +0 -0
  409. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/span_store.py +0 -0
  410. {arize_phoenix-10.5.0 → arize_phoenix-10.6.1}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -32,6 +32,8 @@ pyrightconfig.json
32
32
  !/packages/phoenix-client/tests/canary/sdk/pyrightconfig.json
33
33
  !/tests/integration/pyrightconfig.json
34
34
 
35
+ .cursorrules
36
+
35
37
  # Demo data
36
38
  tutorials/internal/demo_llama_index/*.json
37
39
  examples/agent_framework_comparison/utils/saved_traces/*.parquet
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 10.5.0
3
+ Version: 10.6.1
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://arize.com/docs/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -32,8 +32,8 @@ Requires-Dist: grpcio
32
32
  Requires-Dist: httpx
33
33
  Requires-Dist: jinja2
34
34
  Requires-Dist: numpy!=2.0.0
35
- Requires-Dist: openinference-instrumentation>=0.1.12
36
- Requires-Dist: openinference-semantic-conventions>=0.1.12
35
+ Requires-Dist: openinference-instrumentation>=0.1.32
36
+ Requires-Dist: openinference-semantic-conventions>=0.1.17
37
37
  Requires-Dist: opentelemetry-exporter-otlp
38
38
  Requires-Dist: opentelemetry-proto>=1.12.0
39
39
  Requires-Dist: opentelemetry-sdk
@@ -43,8 +43,8 @@ dependencies = [
43
43
  "opentelemetry-proto>=1.12.0", # needed to avoid this issue: https://github.com/Arize-ai/phoenix/issues/2695
44
44
  "opentelemetry-exporter-otlp",
45
45
  "opentelemetry-semantic-conventions",
46
- "openinference-semantic-conventions>=0.1.12",
47
- "openinference-instrumentation>=0.1.12",
46
+ "openinference-semantic-conventions>=0.1.17",
47
+ "openinference-instrumentation>=0.1.32",
48
48
  "sqlalchemy[asyncio]>=2.0.4, <3",
49
49
  "alembic>=1.3.0, <2",
50
50
  "aiosqlite",
@@ -62,6 +62,17 @@ async def list_span_annotations(
62
62
  span_ids: list[str] = Query(
63
63
  ..., min_length=1, description="One or more span id to fetch annotations for"
64
64
  ),
65
+ include_annotation_names: Optional[list[str]] = Query(
66
+ default=None,
67
+ description=(
68
+ "Optional list of annotation names to include. If provided, only annotations with "
69
+ "these names will be returned. 'note' annotations are excluded by default unless "
70
+ "explicitly included in this list."
71
+ ),
72
+ ),
73
+ exclude_annotation_names: Optional[list[str]] = Query(
74
+ default=None, description="Optional list of annotation names to exclude from results."
75
+ ),
65
76
  cursor: Optional[str] = Query(default=None, description="A cursor for pagination"),
66
77
  limit: int = Query(
67
78
  default=10,
@@ -84,15 +95,26 @@ async def list_span_annotations(
84
95
  status_code=HTTP_404_NOT_FOUND,
85
96
  detail=f"Project with identifier {project_identifier} not found",
86
97
  )
98
+
99
+ # Build the base query
100
+ where_conditions = [
101
+ models.Project.id == project.id,
102
+ models.Span.span_id.in_(span_ids),
103
+ ]
104
+
105
+ # Add annotation name filtering
106
+ if include_annotation_names:
107
+ where_conditions.append(models.SpanAnnotation.name.in_(include_annotation_names))
108
+
109
+ if exclude_annotation_names:
110
+ where_conditions.append(models.SpanAnnotation.name.not_in(exclude_annotation_names))
111
+
87
112
  stmt = (
88
113
  select(models.Span.span_id, models.SpanAnnotation)
89
114
  .join(models.Trace, models.Span.trace_rowid == models.Trace.id)
90
115
  .join(models.Project, models.Trace.project_rowid == models.Project.id)
91
116
  .join(models.SpanAnnotation, models.SpanAnnotation.span_rowid == models.Span.id)
92
- .where(
93
- models.Project.id == project.id,
94
- models.Span.span_id.in_(span_ids),
95
- )
117
+ .where(*where_conditions)
96
118
  .order_by(models.SpanAnnotation.id.desc())
97
119
  .limit(limit + 1)
98
120
  )
@@ -370,12 +370,48 @@ class OtlpSpan(BaseModel):
370
370
  )
371
371
 
372
372
 
373
- class SpanSearchResponseBody(PaginatedResponseBody[OtlpSpan]):
373
+ class OtlpSpansResponseBody(PaginatedResponseBody[OtlpSpan]):
374
374
  """Paginated response where each span follows OTLP JSON structure."""
375
375
 
376
376
  pass
377
377
 
378
378
 
379
+ ################################################################################
380
+ # Phoenix Span Models
381
+ ################################################################################
382
+
383
+
384
+ class SpanContext(V1RoutesBaseModel):
385
+ trace_id: str = Field(description="OpenTelemetry trace ID")
386
+ span_id: str = Field(description="OpenTelemetry span ID")
387
+
388
+
389
+ class SpanEvent(V1RoutesBaseModel):
390
+ name: str = Field(description="Name of the event")
391
+ timestamp: datetime = Field(description="When the event occurred")
392
+ attributes: dict[str, Any] = Field(default_factory=dict, description="Event attributes")
393
+
394
+
395
+ class Span(V1RoutesBaseModel):
396
+ id: str = Field(description="Span Global ID, distinct from the OpenTelemetry span ID")
397
+ name: str = Field(description="Name of the span operation")
398
+ context: SpanContext = Field(description="Span context containing trace_id and span_id")
399
+ span_kind: str = Field(description="Type of work that the span encapsulates")
400
+ parent_id: Optional[str] = Field(
401
+ default=None, description="OpenTelemetry span ID of the parent span"
402
+ )
403
+ start_time: datetime = Field(description="Start time of the span")
404
+ end_time: datetime = Field(description="End time of the span")
405
+ status_code: str = Field(description="Status code of the span")
406
+ status_message: str = Field(default="", description="Status message")
407
+ attributes: dict[str, Any] = Field(default_factory=dict, description="Span attributes")
408
+ events: list[SpanEvent] = Field(default_factory=list, description="Span events")
409
+
410
+
411
+ class SpansResponseBody(PaginatedResponseBody[Span]):
412
+ pass
413
+
414
+
379
415
  # TODO: Add property details to SpanQuery schema
380
416
  @router.post(
381
417
  "/spans",
@@ -513,11 +549,11 @@ def _to_any_value(value: Any) -> OtlpAnyValue:
513
549
  "/projects/{project_identifier}/spans/otlpv1",
514
550
  operation_id="spanSearch",
515
551
  summary="Search spans with simple filters (no DSL)",
516
- description="Return spans within a project filtered by time range, annotation names, "
517
- "and ordered by start_time. Supports cursor-based pagination.",
552
+ description="Return spans within a project filtered by time range. "
553
+ "Supports cursor-based pagination.",
518
554
  responses=add_errors_to_responses([HTTP_404_NOT_FOUND, HTTP_422_UNPROCESSABLE_ENTITY]),
519
555
  )
520
- async def span_search(
556
+ async def span_search_otlpv1(
521
557
  request: Request,
522
558
  project_identifier: str = Path(
523
559
  description=(
@@ -525,30 +561,18 @@ async def span_search(
525
561
  "it cannot contain slash (/), question mark (?), or pound sign (#) characters."
526
562
  )
527
563
  ),
528
- cursor: Optional[str] = Query(default=None, description="Pagination cursor (GlobalID of Span)"),
564
+ cursor: Optional[str] = Query(default=None, description="Pagination cursor (Span Global ID)"),
529
565
  limit: int = Query(default=100, gt=0, le=1000, description="Maximum number of spans to return"),
530
- sort_direction: Literal["asc", "desc"] = Query(
531
- default="desc",
532
- description="Sort direction for the sort field",
533
- ),
534
566
  start_time: Optional[datetime] = Query(default=None, description="Inclusive lower bound time"),
535
567
  end_time: Optional[datetime] = Query(default=None, description="Exclusive upper bound time"),
536
- annotation_names: Optional[list[str]] = Query(
537
- default=None,
538
- description=(
539
- "If provided, only include spans that have at least one annotation with one "
540
- "of these names."
541
- ),
542
- alias="annotationNames",
543
- ),
544
- ) -> SpanSearchResponseBody:
568
+ ) -> OtlpSpansResponseBody:
545
569
  """Search spans with minimal filters instead of the old SpanQuery DSL."""
546
570
 
547
571
  async with request.app.state.db() as session:
548
572
  project = await _get_project_by_identifier(session, project_identifier)
549
573
 
550
574
  project_id: int = project.id
551
- order_by = [models.Span.id.asc() if sort_direction == "asc" else models.Span.id.desc()]
575
+ order_by = [models.Span.id.desc()]
552
576
 
553
577
  stmt = (
554
578
  select(
@@ -565,23 +589,10 @@ async def span_search(
565
589
  if end_time:
566
590
  stmt = stmt.where(models.Span.start_time < normalize_datetime(end_time, timezone.utc))
567
591
 
568
- if annotation_names:
569
- stmt = (
570
- stmt.join(
571
- models.SpanAnnotation,
572
- onclause=models.SpanAnnotation.span_rowid == models.Span.id,
573
- )
574
- .where(models.SpanAnnotation.name.in_(annotation_names))
575
- .group_by(models.Span.id, models.Trace.trace_id)
576
- )
577
-
578
592
  if cursor:
579
593
  try:
580
594
  cursor_rowid = int(GlobalID.from_id(cursor).node_id)
581
- if sort_direction == "asc":
582
- stmt = stmt.where(models.Span.id >= cursor_rowid)
583
- else:
584
- stmt = stmt.where(models.Span.id <= cursor_rowid)
595
+ stmt = stmt.where(models.Span.id <= cursor_rowid)
585
596
  except Exception:
586
597
  raise HTTPException(status_code=HTTP_422_UNPROCESSABLE_ENTITY, detail="Invalid cursor")
587
598
 
@@ -591,7 +602,7 @@ async def span_search(
591
602
  rows: list[tuple[models.Span, str]] = [r async for r in await session.stream(stmt)]
592
603
 
593
604
  if not rows:
594
- return SpanSearchResponseBody(next_cursor=None, data=[])
605
+ return OtlpSpansResponseBody(next_cursor=None, data=[])
595
606
 
596
607
  next_cursor: Optional[str] = None
597
608
  if len(rows) == limit + 1:
@@ -668,7 +679,141 @@ async def span_search(
668
679
  )
669
680
  )
670
681
 
671
- return SpanSearchResponseBody(next_cursor=next_cursor, data=result_spans)
682
+ return OtlpSpansResponseBody(next_cursor=next_cursor, data=result_spans)
683
+
684
+
685
+ @router.get(
686
+ "/projects/{project_identifier}/spans",
687
+ operation_id="getSpans",
688
+ summary="List spans with simple filters (no DSL)",
689
+ description="Return spans within a project filtered by time range. "
690
+ "Supports cursor-based pagination.",
691
+ responses=add_errors_to_responses([HTTP_404_NOT_FOUND, HTTP_422_UNPROCESSABLE_ENTITY]),
692
+ )
693
+ async def span_search(
694
+ request: Request,
695
+ project_identifier: str = Path(
696
+ description=(
697
+ "The project identifier: either project ID or project name. If using a project name, "
698
+ "it cannot contain slash (/), question mark (?), or pound sign (#) characters."
699
+ )
700
+ ),
701
+ cursor: Optional[str] = Query(default=None, description="Pagination cursor (Span Global ID)"),
702
+ limit: int = Query(default=100, gt=0, le=1000, description="Maximum number of spans to return"),
703
+ start_time: Optional[datetime] = Query(default=None, description="Inclusive lower bound time"),
704
+ end_time: Optional[datetime] = Query(default=None, description="Exclusive upper bound time"),
705
+ ) -> SpansResponseBody:
706
+ async with request.app.state.db() as session:
707
+ project = await _get_project_by_identifier(session, project_identifier)
708
+
709
+ project_id: int = project.id
710
+ order_by = [models.Span.id.desc()]
711
+
712
+ stmt = (
713
+ select(
714
+ models.Span,
715
+ models.Trace.trace_id,
716
+ )
717
+ .join(models.Trace, onclause=models.Trace.id == models.Span.trace_rowid)
718
+ .join(models.Project, onclause=models.Project.id == project_id)
719
+ .order_by(*order_by)
720
+ )
721
+
722
+ if start_time:
723
+ stmt = stmt.where(models.Span.start_time >= normalize_datetime(start_time, timezone.utc))
724
+ if end_time:
725
+ stmt = stmt.where(models.Span.start_time < normalize_datetime(end_time, timezone.utc))
726
+
727
+ if cursor:
728
+ try:
729
+ cursor_rowid = int(GlobalID.from_id(cursor).node_id)
730
+ except Exception:
731
+ raise HTTPException(status_code=HTTP_422_UNPROCESSABLE_ENTITY, detail="Invalid cursor")
732
+ stmt = stmt.where(models.Span.id <= cursor_rowid)
733
+
734
+ stmt = stmt.limit(limit + 1)
735
+
736
+ async with request.app.state.db() as session:
737
+ rows: list[tuple[models.Span, str]] = [r async for r in await session.stream(stmt)]
738
+
739
+ if not rows:
740
+ return SpansResponseBody(next_cursor=None, data=[])
741
+
742
+ next_cursor: Optional[str] = None
743
+ if len(rows) == limit + 1:
744
+ *rows, extra = rows # extra is first item of next page
745
+ span_extra, _ = extra
746
+ next_cursor = str(GlobalID("Span", str(span_extra.id)))
747
+
748
+ # Convert ORM rows -> Phoenix spans
749
+ result_spans: list[Span] = []
750
+ for span_orm, trace_id in rows:
751
+ # Convert events to Phoenix Event list
752
+ events: list[SpanEvent] = []
753
+ for event in span_orm.events:
754
+ event_time = event.get("timestamp")
755
+ parsed_time = None
756
+
757
+ if event_time:
758
+ if isinstance(event_time, datetime):
759
+ parsed_time = normalize_datetime(event_time, timezone.utc)
760
+ elif isinstance(event_time, str):
761
+ try:
762
+ naive_time = datetime.fromisoformat(event_time)
763
+ parsed_time = normalize_datetime(naive_time, timezone.utc)
764
+ except ValueError:
765
+ # If ISO format fails, try to parse as timestamp
766
+ try:
767
+ parsed_time = datetime.fromtimestamp(float(event_time), tz=timezone.utc)
768
+ except (ValueError, TypeError):
769
+ parsed_time = datetime.now(timezone.utc) # fallback
770
+ elif isinstance(event_time, (int, float)):
771
+ try:
772
+ # Assume nanoseconds if very large, otherwise seconds
773
+ if event_time > 1e12: # nanoseconds
774
+ parsed_time = datetime.fromtimestamp(
775
+ event_time / 1_000_000_000, tz=timezone.utc
776
+ )
777
+ else: # seconds
778
+ parsed_time = datetime.fromtimestamp(event_time, tz=timezone.utc)
779
+ except (ValueError, OSError):
780
+ parsed_time = datetime.now(timezone.utc) # fallback
781
+ else:
782
+ parsed_time = datetime.now(timezone.utc) # fallback
783
+
784
+ events.append(
785
+ SpanEvent(
786
+ name=event.get("name", ""),
787
+ timestamp=parsed_time,
788
+ attributes=event.get("attributes", {}),
789
+ )
790
+ )
791
+
792
+ attributes = {
793
+ k: v for k, v in flatten(span_orm.attributes or dict(), recurse_on_sequence=True)
794
+ }
795
+ openinference_span_kind = attributes.pop("openinference.span.kind", "UNKNOWN")
796
+
797
+ result_spans.append(
798
+ Span(
799
+ id=str(GlobalID("Span", str(span_orm.id))),
800
+ name=span_orm.name or "",
801
+ context=SpanContext(
802
+ trace_id=trace_id,
803
+ span_id=span_orm.span_id or "",
804
+ ),
805
+ span_kind=openinference_span_kind,
806
+ parent_id=span_orm.parent_id,
807
+ start_time=span_orm.start_time,
808
+ end_time=span_orm.end_time,
809
+ status_code=span_orm.status_code,
810
+ status_message=span_orm.status_message or "",
811
+ attributes=attributes,
812
+ events=events,
813
+ )
814
+ )
815
+
816
+ return SpansResponseBody(next_cursor=next_cursor, data=result_spans)
672
817
 
673
818
 
674
819
  @router.get("/spans", include_in_schema=False, deprecated=True)
@@ -0,0 +1,87 @@
1
+ {
2
+ "_components-J06J_j9O.js": {
3
+ "file": "assets/components-J06J_j9O.js",
4
+ "name": "components",
5
+ "imports": [
6
+ "_vendor-B52WHALA.js",
7
+ "_pages-nxs-tDxQ.js",
8
+ "_vendor-arizeai-DGHetzZW.js",
9
+ "_vendor-codemirror-QIdVJrP_.js",
10
+ "_vendor-three-C5WAXd5r.js"
11
+ ]
12
+ },
13
+ "_pages-nxs-tDxQ.js": {
14
+ "file": "assets/pages-nxs-tDxQ.js",
15
+ "name": "pages",
16
+ "imports": [
17
+ "_vendor-B52WHALA.js",
18
+ "_vendor-arizeai-DGHetzZW.js",
19
+ "_components-J06J_j9O.js",
20
+ "_vendor-codemirror-QIdVJrP_.js",
21
+ "_vendor-recharts-GmWamXB4.js"
22
+ ]
23
+ },
24
+ "_vendor-B52WHALA.js": {
25
+ "file": "assets/vendor-B52WHALA.js",
26
+ "name": "vendor",
27
+ "imports": [
28
+ "_vendor-three-C5WAXd5r.js"
29
+ ],
30
+ "css": [
31
+ "assets/vendor-WIZid84E.css"
32
+ ]
33
+ },
34
+ "_vendor-WIZid84E.css": {
35
+ "file": "assets/vendor-WIZid84E.css",
36
+ "src": "_vendor-WIZid84E.css"
37
+ },
38
+ "_vendor-arizeai-DGHetzZW.js": {
39
+ "file": "assets/vendor-arizeai-DGHetzZW.js",
40
+ "name": "vendor-arizeai",
41
+ "imports": [
42
+ "_vendor-B52WHALA.js"
43
+ ]
44
+ },
45
+ "_vendor-codemirror-QIdVJrP_.js": {
46
+ "file": "assets/vendor-codemirror-QIdVJrP_.js",
47
+ "name": "vendor-codemirror",
48
+ "imports": [
49
+ "_vendor-B52WHALA.js",
50
+ "_vendor-shiki-C8cTrXI5.js"
51
+ ]
52
+ },
53
+ "_vendor-recharts-GmWamXB4.js": {
54
+ "file": "assets/vendor-recharts-GmWamXB4.js",
55
+ "name": "vendor-recharts",
56
+ "imports": [
57
+ "_vendor-B52WHALA.js"
58
+ ]
59
+ },
60
+ "_vendor-shiki-C8cTrXI5.js": {
61
+ "file": "assets/vendor-shiki-C8cTrXI5.js",
62
+ "name": "vendor-shiki",
63
+ "imports": [
64
+ "_vendor-B52WHALA.js"
65
+ ]
66
+ },
67
+ "_vendor-three-C5WAXd5r.js": {
68
+ "file": "assets/vendor-three-C5WAXd5r.js",
69
+ "name": "vendor-three"
70
+ },
71
+ "index.tsx": {
72
+ "file": "assets/index-DfT39tc3.js",
73
+ "name": "index",
74
+ "src": "index.tsx",
75
+ "isEntry": true,
76
+ "imports": [
77
+ "_vendor-B52WHALA.js",
78
+ "_vendor-arizeai-DGHetzZW.js",
79
+ "_pages-nxs-tDxQ.js",
80
+ "_components-J06J_j9O.js",
81
+ "_vendor-three-C5WAXd5r.js",
82
+ "_vendor-codemirror-QIdVJrP_.js",
83
+ "_vendor-shiki-C8cTrXI5.js",
84
+ "_vendor-recharts-GmWamXB4.js"
85
+ ]
86
+ }
87
+ }