arize-phoenix 4.19.0__tar.gz → 4.20.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 (297) hide show
  1. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/PKG-INFO +1 -1
  2. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/span_annotations.py +6 -9
  3. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/mutations/dataset_mutations.py +35 -1
  4. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/spans.py +3 -1
  5. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/traces.py +3 -1
  6. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Span.py +14 -13
  7. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/session/client.py +2 -2
  8. arize_phoenix-4.20.0/src/phoenix/version.py +1 -0
  9. arize_phoenix-4.19.0/src/phoenix/version.py +0 -1
  10. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/.gitignore +0 -0
  11. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/IP_NOTICE +0 -0
  12. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/LICENSE +0 -0
  13. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/README.md +0 -0
  14. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/examples/manually-instrumented-chatbot/chat-service/chat/__init__.py +0 -0
  15. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/examples/manually-instrumented-chatbot/chat-service/chat/app.py +0 -0
  16. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/examples/manually-instrumented-chatbot/chat-service/chat/types.py +0 -0
  17. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/examples/manually-instrumented-chatbot/frontend/Dockerfile +0 -0
  18. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/examples/manually-instrumented-chatbot/frontend/Makefile +0 -0
  19. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/examples/manually-instrumented-chatbot/frontend/__init__.py +0 -0
  20. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/examples/manually-instrumented-chatbot/frontend/pyproject.toml +0 -0
  21. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/examples/manually-instrumented-chatbot/frontend/requirements.txt +0 -0
  22. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/examples/manually-instrumented-chatbot/frontend/schema.json +0 -0
  23. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/pyproject.toml +0 -0
  24. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/__init__.py +0 -0
  25. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/config.py +0 -0
  26. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/core/__init__.py +0 -0
  27. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/core/embedding_dimension.py +0 -0
  28. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/core/model.py +0 -0
  29. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/core/model_schema.py +0 -0
  30. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  31. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/datetime_utils.py +0 -0
  32. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/README.md +0 -0
  33. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/__init__.py +0 -0
  34. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/alembic.ini +0 -0
  35. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/bulk_inserter.py +0 -0
  36. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/engines.py +0 -0
  37. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/helpers.py +0 -0
  38. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/__init__.py +0 -0
  39. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/constants.py +0 -0
  40. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/dataset.py +0 -0
  41. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  42. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  43. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/helpers.py +0 -0
  44. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/span.py +0 -0
  45. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  46. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  47. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/insertion/types.py +0 -0
  48. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/migrate.py +0 -0
  49. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/migrations/__init__.py +0 -0
  50. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/migrations/env.py +0 -0
  51. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  52. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/migrations/types.py +0 -0
  53. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  54. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  55. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/db/models.py +0 -0
  56. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/exceptions.py +0 -0
  57. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/__init__.py +0 -0
  58. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  59. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  60. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  61. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  62. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  63. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/functions.py +0 -0
  64. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/tracing.py +0 -0
  65. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/types.py +0 -0
  66. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/experiments/utils.py +0 -0
  67. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/inferences/__init__.py +0 -0
  68. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/inferences/errors.py +0 -0
  69. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/inferences/fixtures.py +0 -0
  70. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/inferences/inferences.py +0 -0
  71. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/inferences/schema.py +0 -0
  72. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/inferences/validation.py +0 -0
  73. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/metrics/README.md +0 -0
  74. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/metrics/__init__.py +0 -0
  75. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/metrics/binning.py +0 -0
  76. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/metrics/metrics.py +0 -0
  77. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/metrics/mixins.py +0 -0
  78. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  79. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/metrics/timeseries.py +0 -0
  80. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/metrics/wrappers.py +0 -0
  81. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/pointcloud/__init__.py +0 -0
  82. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/pointcloud/clustering.py +0 -0
  83. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  84. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/pointcloud/projectors.py +0 -0
  85. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  86. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/py.typed +0 -0
  87. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/__init__.py +0 -0
  88. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/__init__.py +0 -0
  89. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/context.py +1 -1
  90. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  91. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  92. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  93. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  94. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  95. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  96. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  97. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  98. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  99. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  100. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/evaluation_summaries.py +0 -0
  101. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  102. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  103. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  104. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  105. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  106. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  107. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  108. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  109. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  110. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  111. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/span_evaluations.py +0 -0
  112. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  113. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  114. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/trace_evaluations.py +0 -0
  115. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
  116. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  117. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  118. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  119. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  120. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  121. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  122. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  123. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  124. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  125. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  126. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  127. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  128. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  129. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  130. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  131. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  132. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  133. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  134. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  135. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  136. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  137. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  138. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  139. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  140. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  141. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  142. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  143. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  144. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  145. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  146. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/interceptor.py +0 -0
  147. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  148. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/mutations/auth.py +0 -0
  149. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  150. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  151. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  152. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  153. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  154. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  155. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/openapi/main.py +0 -0
  156. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  157. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/queries.py +0 -0
  158. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  159. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/utils.py +0 -0
  160. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  161. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  162. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  163. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  164. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  165. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  166. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  167. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  168. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/schema.py +0 -0
  169. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  170. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  171. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  172. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  173. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  174. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  175. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  176. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  177. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  178. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  179. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  180. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  181. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  182. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  183. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  184. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  185. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  186. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  187. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  188. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  189. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  190. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  191. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Event.py +0 -0
  192. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  193. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  194. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  195. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  196. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  197. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  198. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  199. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  200. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  201. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  202. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  203. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  204. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  205. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Model.py +0 -0
  206. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  207. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  208. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Project.py +0 -0
  209. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  210. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  211. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  212. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Segments.py +0 -0
  213. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  214. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  215. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  216. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/Trace.py +0 -0
  217. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  218. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  219. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  220. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  221. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/__init__.py +0 -0
  222. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/node.py +0 -0
  223. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/types/pagination.py +0 -0
  224. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/api/utils.py +0 -0
  225. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/app.py +0 -0
  226. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/grpc_server.py +0 -0
  227. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/main.py +0 -0
  228. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/openapi/__init__.py +0 -0
  229. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/prometheus.py +0 -0
  230. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/.vite/manifest.json +0 -0
  231. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  232. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  233. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  234. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  235. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  236. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  237. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  238. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  239. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/assets/components-CAummAJx.js +0 -0
  240. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/assets/index-Cg5hdf3g.js +0 -0
  241. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/assets/pages-BU__X1UX.js +0 -0
  242. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/assets/vendor-BMWfu6zp.js +0 -0
  243. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  244. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/assets/vendor-arizeai-CkyzG9Wl.js +0 -0
  245. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/assets/vendor-codemirror-DO3VqEcD.js +0 -0
  246. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/assets/vendor-recharts-BGN0SxgJ.js +0 -0
  247. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  248. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/favicon.ico +0 -0
  249. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/static/modernizr.js +0 -0
  250. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/telemetry.py +0 -0
  251. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/templates/__init__.py +0 -0
  252. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/templates/index.html +0 -0
  253. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/thread_server.py +0 -0
  254. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/server/types.py +0 -0
  255. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/services.py +0 -0
  256. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/session/__init__.py +0 -0
  257. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/session/data_extractor.py +0 -0
  258. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/session/evaluation.py +0 -0
  259. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/session/session.py +0 -0
  260. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/settings.py +0 -0
  261. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/__init__.py +0 -0
  262. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/attributes.py +0 -0
  263. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/dsl/README.md +0 -0
  264. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  265. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/dsl/filter.py +0 -0
  266. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  267. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/dsl/query.py +0 -0
  268. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/errors.py +0 -0
  269. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  270. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/exporter.py +0 -0
  271. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/fixtures.py +0 -0
  272. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/langchain/__init__.py +0 -0
  273. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/langchain/instrumentor.py +0 -0
  274. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/llama_index/__init__.py +0 -0
  275. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/llama_index/callback.py +0 -0
  276. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/openai/__init__.py +0 -0
  277. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/openai/instrumentor.py +0 -0
  278. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/otel.py +0 -0
  279. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/projects.py +0 -0
  280. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/schemas.py +0 -0
  281. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/span_evaluations.py +0 -0
  282. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  283. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  284. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/trace_dataset.py +0 -0
  285. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/utils.py +0 -0
  286. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/v1/__init__.py +0 -0
  287. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  288. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  289. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/utilities/__init__.py +0 -0
  290. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/utilities/client.py +0 -0
  291. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/utilities/deprecation.py +0 -0
  292. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/utilities/error_handling.py +0 -0
  293. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/utilities/json.py +0 -0
  294. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/utilities/logging.py +0 -0
  295. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/utilities/project.py +0 -0
  296. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/utilities/re.py +0 -0
  297. {arize_phoenix-4.19.0 → arize_phoenix-4.20.0}/src/phoenix/utilities/span_store.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 4.19.0
3
+ Version: 4.20.0
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://docs.arize.com/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -8,12 +8,11 @@ from sqlalchemy import select
8
8
  from strawberry.dataloader import DataLoader
9
9
  from typing_extensions import TypeAlias
10
10
 
11
- from phoenix.db import models
12
- from phoenix.server.api.types.SpanAnnotation import SpanAnnotation, to_gql_span_annotation
11
+ from phoenix.db.models import SpanAnnotation as ORMSpanAnnotation
13
12
  from phoenix.server.types import DbSessionFactory
14
13
 
15
14
  Key: TypeAlias = int
16
- Result: TypeAlias = List[SpanAnnotation]
15
+ Result: TypeAlias = List[ORMSpanAnnotation]
17
16
 
18
17
 
19
18
  class SpanAnnotationsDataLoader(DataLoader[Key, Result]):
@@ -23,11 +22,9 @@ class SpanAnnotationsDataLoader(DataLoader[Key, Result]):
23
22
 
24
23
  async def _load_fn(self, keys: List[Key]) -> List[Result]:
25
24
  span_annotations_by_id: DefaultDict[Key, Result] = defaultdict(list)
26
- msa = models.SpanAnnotation
27
25
  async with self._db() as session:
28
- data = await session.stream_scalars(select(msa).where(msa.span_rowid.in_(keys)))
29
- async for span_annotation in data:
30
- span_annotations_by_id[span_annotation.span_rowid].append(
31
- to_gql_span_annotation(span_annotation)
32
- )
26
+ async for span_annotation in await session.stream_scalars(
27
+ select(ORMSpanAnnotation).where(ORMSpanAnnotation.span_rowid.in_(keys))
28
+ ):
29
+ span_annotations_by_id[span_annotation.span_rowid].append(span_annotation)
33
30
  return [span_annotations_by_id[key] for key in keys]
@@ -154,6 +154,36 @@ class DatasetMutationMixin:
154
154
  raise ValueError(
155
155
  f"Could not find spans with rowids: {', '.join(map(str, missing_span_rowids))}"
156
156
  ) # todo: implement error handling types https://github.com/Arize-ai/phoenix/issues/3221
157
+
158
+ span_annotations = (
159
+ await session.execute(
160
+ select(
161
+ models.SpanAnnotation.span_rowid,
162
+ models.SpanAnnotation.name,
163
+ models.SpanAnnotation.label,
164
+ models.SpanAnnotation.score,
165
+ models.SpanAnnotation.explanation,
166
+ models.SpanAnnotation.metadata_,
167
+ models.SpanAnnotation.annotator_kind,
168
+ )
169
+ .select_from(models.SpanAnnotation)
170
+ .where(models.SpanAnnotation.span_rowid.in_(span_rowids))
171
+ )
172
+ ).all()
173
+
174
+ span_annotations_by_span: Dict[int, Dict[Any, Any]] = {span.id: {} for span in spans}
175
+ for annotation in span_annotations:
176
+ span_id = annotation.span_rowid
177
+ if span_id not in span_annotations_by_span:
178
+ span_annotations_by_span[span_id] = dict()
179
+ span_annotations_by_span[span_id][annotation.name] = {
180
+ "label": annotation.label,
181
+ "score": annotation.score,
182
+ "explanation": annotation.explanation,
183
+ "metadata": annotation.metadata_,
184
+ "annotator_kind": annotation.annotator_kind,
185
+ }
186
+
157
187
  DatasetExample = models.DatasetExample
158
188
  dataset_example_rowids = (
159
189
  await session.scalars(
@@ -170,6 +200,7 @@ class DatasetMutationMixin:
170
200
  assert len(dataset_example_rowids) == len(spans)
171
201
  assert all(map(lambda id: isinstance(id, int), dataset_example_rowids))
172
202
  DatasetExampleRevision = models.DatasetExampleRevision
203
+
173
204
  await session.execute(
174
205
  insert(DatasetExampleRevision),
175
206
  [
@@ -178,7 +209,10 @@ class DatasetMutationMixin:
178
209
  DatasetExampleRevision.dataset_version_id.key: dataset_version_rowid,
179
210
  DatasetExampleRevision.input.key: get_dataset_example_input(span),
180
211
  DatasetExampleRevision.output.key: get_dataset_example_output(span),
181
- DatasetExampleRevision.metadata_.key: span.attributes,
212
+ DatasetExampleRevision.metadata_.key: {
213
+ **span.attributes,
214
+ "annotations": span_annotations_by_span[span.id],
215
+ },
182
216
  DatasetExampleRevision.revision_kind.key: "CREATE",
183
217
  }
184
218
  for dataset_example_rowid, span in zip(dataset_example_rowids, spans)
@@ -23,7 +23,7 @@ from .utils import RequestBody, ResponseBody, add_errors_to_responses
23
23
 
24
24
  DEFAULT_SPAN_LIMIT = 1000
25
25
 
26
- router = APIRouter(tags=["traces"], include_in_schema=False)
26
+ router = APIRouter(tags=["spans"])
27
27
 
28
28
 
29
29
  class SpanQuery(V1RoutesBaseModel):
@@ -65,6 +65,7 @@ class QuerySpansRequestBody(V1RoutesBaseModel):
65
65
  operation_id="querySpans",
66
66
  summary="Query spans with query DSL",
67
67
  responses=add_errors_to_responses([HTTP_404_NOT_FOUND, HTTP_422_UNPROCESSABLE_ENTITY]),
68
+ include_in_schema=False,
68
69
  )
69
70
  async def query_spans_handler(
70
71
  request: Request,
@@ -189,6 +190,7 @@ class AnnotateSpansResponseBody(ResponseBody[List[InsertedSpanAnnotation]]):
189
190
  [{"status_code": HTTP_404_NOT_FOUND, "description": "Span not found"}]
190
191
  ),
191
192
  response_description="Span annotations inserted successfully",
193
+ include_in_schema=True,
192
194
  )
193
195
  async def annotate_spans(
194
196
  request: Request,
@@ -30,7 +30,7 @@ from phoenix.utilities.project import get_project_name
30
30
  from .pydantic_compat import V1RoutesBaseModel
31
31
  from .utils import RequestBody, ResponseBody, add_errors_to_responses
32
32
 
33
- router = APIRouter(tags=["traces"], include_in_schema=False)
33
+ router = APIRouter(tags=["traces"])
34
34
 
35
35
 
36
36
  @router.post(
@@ -57,6 +57,7 @@ router = APIRouter(tags=["traces"], include_in_schema=False)
57
57
  },
58
58
  }
59
59
  },
60
+ include_in_schema=False,
60
61
  )
61
62
  async def post_traces(
62
63
  request: Request,
@@ -145,6 +146,7 @@ class AnnotateTracesResponseBody(ResponseBody[List[InsertedTraceAnnotation]]):
145
146
  responses=add_errors_to_responses(
146
147
  [{"status_code": HTTP_404_NOT_FOUND, "description": "Trace not found"}]
147
148
  ),
149
+ include_in_schema=False,
148
150
  )
149
151
  async def annotate_traces(
150
152
  request: Request,
@@ -7,7 +7,6 @@ from typing import TYPE_CHECKING, Any, List, Mapping, Optional, Sized, cast
7
7
  import numpy as np
8
8
  import strawberry
9
9
  from openinference.semconv.trace import EmbeddingAttributes, SpanAttributes
10
- from sqlalchemy import select
11
10
  from strawberry import ID, UNSET
12
11
  from strawberry.relay import Node, NodeID
13
12
  from strawberry.types import Info
@@ -20,7 +19,10 @@ from phoenix.server.api.helpers.dataset_helpers import (
20
19
  get_dataset_example_input,
21
20
  get_dataset_example_output,
22
21
  )
23
- from phoenix.server.api.input_types.SpanAnnotationSort import SpanAnnotationSort
22
+ from phoenix.server.api.input_types.SpanAnnotationSort import (
23
+ SpanAnnotationColumn,
24
+ SpanAnnotationSort,
25
+ )
24
26
  from phoenix.server.api.types.SortDir import SortDir
25
27
  from phoenix.server.api.types.SpanAnnotation import to_gql_span_annotation
26
28
  from phoenix.trace.attributes import get_attribute_value
@@ -190,17 +192,16 @@ class Span(Node):
190
192
  info: Info[Context, None],
191
193
  sort: Optional[SpanAnnotationSort] = UNSET,
192
194
  ) -> List[SpanAnnotation]:
193
- async with info.context.db() as session:
194
- stmt = select(models.SpanAnnotation).filter_by(span_rowid=self.id_attr)
195
- if sort:
196
- sort_col = getattr(models.SpanAnnotation, sort.col.value)
197
- if sort.dir is SortDir.desc:
198
- stmt = stmt.order_by(sort_col.desc(), models.SpanAnnotation.id.desc())
199
- else:
200
- stmt = stmt.order_by(sort_col.asc(), models.SpanAnnotation.id.asc())
201
- else:
202
- stmt = stmt.order_by(models.SpanAnnotation.created_at.desc())
203
- annotations = await session.scalars(stmt)
195
+ span_id = self.id_attr
196
+ annotations = await info.context.data_loaders.span_annotations.load(span_id)
197
+ sort_key = SpanAnnotationColumn.createdAt.value
198
+ sort_descending = True
199
+ if sort:
200
+ sort_key = sort.col.value
201
+ sort_descending = sort.dir is SortDir.desc
202
+ annotations.sort(
203
+ key=lambda annotation: getattr(annotation, sort_key), reverse=sort_descending
204
+ )
204
205
  return [to_gql_span_annotation(annotation) for annotation in annotations]
205
206
 
206
207
  @strawberry.field(
@@ -324,7 +324,7 @@ class Client(TraceDataExtractor):
324
324
  Dataset: The dataset object.
325
325
  """
326
326
  response = self._client.get(
327
- urljoin(self._base_url, "/v1/datasets"),
327
+ urljoin(self._base_url, "v1/datasets"),
328
328
  params={"name": name},
329
329
  )
330
330
  response.raise_for_status()
@@ -366,7 +366,7 @@ class Client(TraceDataExtractor):
366
366
  raise ValueError("Dataset id or name must be provided.")
367
367
 
368
368
  response = self._client.get(
369
- urljoin(self._base_url, f"/v1/datasets/{quote(id)}/examples"),
369
+ urljoin(self._base_url, f"v1/datasets/{quote(id)}/examples"),
370
370
  params={"version_id": version_id} if version_id else None,
371
371
  )
372
372
  response.raise_for_status()
@@ -0,0 +1 @@
1
+ __version__ = "4.20.0"
@@ -1 +0,0 @@
1
- __version__ = "4.19.0"
File without changes
File without changes
File without changes
@@ -54,6 +54,7 @@ class DataLoaders:
54
54
  latency_ms_quantile: LatencyMsQuantileDataLoader
55
55
  min_start_or_max_end_times: MinStartOrMaxEndTimeDataLoader
56
56
  record_counts: RecordCountDataLoader
57
+ span_annotations: SpanAnnotationsDataLoader
57
58
  span_dataset_examples: SpanDatasetExamplesDataLoader
58
59
  span_descendants: SpanDescendantsDataLoader
59
60
  span_evaluations: SpanEvaluationsDataLoader
@@ -62,7 +63,6 @@ class DataLoaders:
62
63
  trace_evaluations: TraceEvaluationsDataLoader
63
64
  trace_row_ids: TraceRowIdsDataLoader
64
65
  project_by_name: ProjectByNameDataLoader
65
- span_annotations: SpanAnnotationsDataLoader
66
66
 
67
67
 
68
68
  ProjectRowId: TypeAlias = int