arize-phoenix 4.30.0__tar.gz → 4.30.2__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 (311) hide show
  1. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/PKG-INFO +1 -1
  2. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/context.py +2 -0
  3. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/__init__.py +2 -0
  4. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +54 -17
  5. arize_phoenix-4.30.2/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +40 -0
  6. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/ExperimentRun.py +1 -9
  7. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/app.py +2 -0
  8. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/session/client.py +34 -22
  9. arize_phoenix-4.30.2/src/phoenix/version.py +1 -0
  10. arize_phoenix-4.30.0/src/phoenix/version.py +0 -1
  11. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/.gitignore +0 -0
  12. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/IP_NOTICE +0 -0
  13. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/LICENSE +0 -0
  14. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/README.md +0 -0
  15. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/examples/manually-instrumented-chatbot/chat-service/chat/__init__.py +0 -0
  16. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/examples/manually-instrumented-chatbot/chat-service/chat/app.py +0 -0
  17. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/examples/manually-instrumented-chatbot/chat-service/chat/types.py +0 -0
  18. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/examples/manually-instrumented-chatbot/frontend/Dockerfile +0 -0
  19. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/examples/manually-instrumented-chatbot/frontend/Makefile +0 -0
  20. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/examples/manually-instrumented-chatbot/frontend/__init__.py +0 -0
  21. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/examples/manually-instrumented-chatbot/frontend/pyproject.toml +0 -0
  22. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/examples/manually-instrumented-chatbot/frontend/requirements.txt +0 -0
  23. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/examples/manually-instrumented-chatbot/frontend/schema.json +0 -0
  24. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/pyproject.toml +0 -0
  25. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/__init__.py +0 -0
  26. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/auth.py +0 -0
  27. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/config.py +0 -0
  28. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/core/__init__.py +0 -0
  29. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/core/embedding_dimension.py +0 -0
  30. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/core/model.py +0 -0
  31. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/core/model_schema.py +0 -0
  32. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/core/model_schema_adapter.py +0 -0
  33. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/datetime_utils.py +0 -0
  34. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/README.md +0 -0
  35. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/__init__.py +0 -0
  36. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/alembic.ini +0 -0
  37. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/bulk_inserter.py +0 -0
  38. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/engines.py +0 -0
  39. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/helpers.py +0 -0
  40. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/__init__.py +0 -0
  41. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/constants.py +0 -0
  42. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/dataset.py +0 -0
  43. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/document_annotation.py +0 -0
  44. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/evaluation.py +0 -0
  45. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/helpers.py +0 -0
  46. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/span.py +0 -0
  47. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/span_annotation.py +0 -0
  48. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  49. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/insertion/types.py +0 -0
  50. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrate.py +0 -0
  51. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrations/__init__.py +0 -0
  52. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrations/env.py +0 -0
  53. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrations/future_versions/README.md +0 -0
  54. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrations/future_versions/cd164e83824f_users_and_tokens.py +0 -0
  55. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrations/script.py.mako +0 -0
  56. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrations/versions/.gitignore +0 -0
  57. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  58. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  59. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  60. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/db/models.py +0 -0
  61. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/exceptions.py +0 -0
  62. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/__init__.py +0 -0
  63. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  64. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/evaluators/base.py +0 -0
  65. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  66. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  67. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/evaluators/utils.py +0 -0
  68. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/functions.py +0 -0
  69. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/tracing.py +0 -0
  70. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/types.py +0 -0
  71. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/experiments/utils.py +0 -0
  72. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/inferences/__init__.py +0 -0
  73. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/inferences/errors.py +0 -0
  74. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/inferences/fixtures.py +0 -0
  75. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/inferences/inferences.py +0 -0
  76. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/inferences/schema.py +0 -0
  77. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/inferences/validation.py +0 -0
  78. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/metrics/README.md +0 -0
  79. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/metrics/__init__.py +0 -0
  80. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/metrics/binning.py +0 -0
  81. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/metrics/metrics.py +0 -0
  82. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/metrics/mixins.py +0 -0
  83. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  84. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/metrics/timeseries.py +0 -0
  85. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/metrics/wrappers.py +0 -0
  86. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/pointcloud/__init__.py +0 -0
  87. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/pointcloud/clustering.py +0 -0
  88. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/pointcloud/pointcloud.py +0 -0
  89. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/pointcloud/projectors.py +0 -0
  90. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  91. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/py.typed +0 -0
  92. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/__init__.py +0 -0
  93. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/__init__.py +0 -0
  94. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  95. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  96. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  97. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  98. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  99. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  100. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  101. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  102. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  103. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  104. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  105. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  106. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  107. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  108. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  109. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  110. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  111. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  112. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  113. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  114. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  115. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
  116. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/exceptions.py +0 -0
  117. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/helpers/__init__.py +0 -0
  118. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  119. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  120. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  121. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  122. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  123. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  124. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  125. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  126. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  127. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  128. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  129. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  130. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  131. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  132. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  133. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  134. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  135. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  136. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  137. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  138. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  139. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  140. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  141. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  142. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  143. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  144. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  145. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  146. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  147. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/input_types/__init__.py +0 -0
  148. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/interceptor.py +0 -0
  149. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/__init__.py +0 -0
  150. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  151. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/auth.py +0 -0
  152. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/auth_mutations.py +0 -0
  153. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  154. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  155. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  156. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  157. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  158. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  159. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  160. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/openapi/__init__.py +0 -0
  161. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/openapi/main.py +0 -0
  162. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/openapi/schema.py +0 -0
  163. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/queries.py +0 -0
  164. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/__init__.py +0 -0
  165. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/utils.py +0 -0
  166. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  167. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  168. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  169. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  170. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  171. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  172. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  173. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  174. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  175. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  176. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/schema.py +0 -0
  177. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Annotation.py +0 -0
  178. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  179. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  180. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/ApiKey.py +0 -0
  181. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Cluster.py +0 -0
  182. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  183. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  184. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Dataset.py +0 -0
  185. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  186. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  187. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  188. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  189. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Dimension.py +0 -0
  190. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  191. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  192. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DimensionType.py +0 -0
  193. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  194. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  195. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  196. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  197. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  198. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Evaluation.py +0 -0
  199. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  200. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Event.py +0 -0
  201. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  202. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  203. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Experiment.py +0 -0
  204. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  205. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  206. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  207. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  208. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Functionality.py +0 -0
  209. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Inferences.py +0 -0
  210. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  211. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  212. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/MimeType.py +0 -0
  213. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Model.py +0 -0
  214. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/NumericRange.py +0 -0
  215. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  216. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Project.py +0 -0
  217. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  218. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Retrieval.py +0 -0
  219. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  220. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Segments.py +0 -0
  221. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/SortDir.py +0 -0
  222. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Span.py +0 -0
  223. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  224. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  225. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  226. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/Trace.py +0 -0
  227. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  228. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  229. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/User.py +0 -0
  230. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  231. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/UserRole.py +0 -0
  232. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  233. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  234. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/__init__.py +0 -0
  235. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/node.py +0 -0
  236. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/types/pagination.py +0 -0
  237. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/api/utils.py +0 -0
  238. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/dml_event.py +0 -0
  239. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/dml_event_handler.py +0 -0
  240. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/grpc_server.py +0 -0
  241. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/main.py +0 -0
  242. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/openapi/__init__.py +0 -0
  243. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/prometheus.py +0 -0
  244. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/.vite/manifest.json +0 -0
  245. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  246. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  247. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  248. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  249. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  250. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  251. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  252. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  253. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/assets/components-CkSg5zK4.js +0 -0
  254. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/assets/index-DTecsU5w.js +0 -0
  255. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/assets/pages-C6emDFIO.js +0 -0
  256. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/assets/vendor-DsnEJuEV.js +0 -0
  257. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  258. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/assets/vendor-arizeai-DtynTLNi.js +0 -0
  259. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/assets/vendor-codemirror-C5to5cK4.js +0 -0
  260. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/assets/vendor-recharts-reihe2SJ.js +0 -0
  261. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  262. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/favicon.ico +0 -0
  263. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/static/modernizr.js +0 -0
  264. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/telemetry.py +0 -0
  265. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/templates/__init__.py +0 -0
  266. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/templates/index.html +0 -0
  267. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/thread_server.py +0 -0
  268. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/server/types.py +0 -0
  269. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/services.py +0 -0
  270. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/session/__init__.py +0 -0
  271. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/session/data_extractor.py +0 -0
  272. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/session/evaluation.py +0 -0
  273. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/session/session.py +0 -0
  274. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/settings.py +0 -0
  275. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/__init__.py +0 -0
  276. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/attributes.py +0 -0
  277. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/dsl/README.md +0 -0
  278. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/dsl/__init__.py +0 -0
  279. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/dsl/filter.py +0 -0
  280. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/dsl/helpers.py +0 -0
  281. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/dsl/query.py +0 -0
  282. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/errors.py +0 -0
  283. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/evaluation_conventions.py +0 -0
  284. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/exporter.py +0 -0
  285. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/fixtures.py +0 -0
  286. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/langchain/__init__.py +0 -0
  287. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/langchain/instrumentor.py +0 -0
  288. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/llama_index/__init__.py +0 -0
  289. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/llama_index/callback.py +0 -0
  290. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/openai/__init__.py +0 -0
  291. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/openai/instrumentor.py +0 -0
  292. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/otel.py +0 -0
  293. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/projects.py +0 -0
  294. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/schemas.py +0 -0
  295. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/span_evaluations.py +0 -0
  296. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/span_json_decoder.py +0 -0
  297. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/span_json_encoder.py +0 -0
  298. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/trace_dataset.py +0 -0
  299. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/utils.py +0 -0
  300. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/v1/__init__.py +0 -0
  301. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  302. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  303. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/utilities/__init__.py +0 -0
  304. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/utilities/client.py +0 -0
  305. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/utilities/deprecation.py +0 -0
  306. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/utilities/error_handling.py +0 -0
  307. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/utilities/json.py +0 -0
  308. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/utilities/logging.py +0 -0
  309. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/utilities/project.py +0 -0
  310. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/src/phoenix/utilities/re.py +0 -0
  311. {arize_phoenix-4.30.0 → arize_phoenix-4.30.2}/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.30.0
3
+ Version: 4.30.2
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
@@ -17,6 +17,7 @@ from phoenix.server.api.dataloaders import (
17
17
  DocumentRetrievalMetricsDataLoader,
18
18
  ExperimentAnnotationSummaryDataLoader,
19
19
  ExperimentErrorRatesDataLoader,
20
+ ExperimentRunAnnotations,
20
21
  ExperimentRunCountsDataLoader,
21
22
  ExperimentSequenceNumberDataLoader,
22
23
  LatencyMsQuantileDataLoader,
@@ -45,6 +46,7 @@ class DataLoaders:
45
46
  annotation_summaries: AnnotationSummaryDataLoader
46
47
  experiment_annotation_summaries: ExperimentAnnotationSummaryDataLoader
47
48
  experiment_error_rates: ExperimentErrorRatesDataLoader
49
+ experiment_run_annotations: ExperimentRunAnnotations
48
50
  experiment_run_counts: ExperimentRunCountsDataLoader
49
51
  experiment_sequence_number: ExperimentSequenceNumberDataLoader
50
52
  latency_ms_quantile: LatencyMsQuantileDataLoader
@@ -12,6 +12,7 @@ from .document_evaluations import DocumentEvaluationsDataLoader
12
12
  from .document_retrieval_metrics import DocumentRetrievalMetricsDataLoader
13
13
  from .experiment_annotation_summaries import ExperimentAnnotationSummaryDataLoader
14
14
  from .experiment_error_rates import ExperimentErrorRatesDataLoader
15
+ from .experiment_run_annotations import ExperimentRunAnnotations
15
16
  from .experiment_run_counts import ExperimentRunCountsDataLoader
16
17
  from .experiment_sequence_number import ExperimentSequenceNumberDataLoader
17
18
  from .latency_ms_quantile import LatencyMsQuantileCache, LatencyMsQuantileDataLoader
@@ -36,6 +37,7 @@ __all__ = [
36
37
  "AnnotationSummaryDataLoader",
37
38
  "ExperimentAnnotationSummaryDataLoader",
38
39
  "ExperimentErrorRatesDataLoader",
40
+ "ExperimentRunAnnotations",
39
41
  "ExperimentRunCountsDataLoader",
40
42
  "ExperimentSequenceNumberDataLoader",
41
43
  "LatencyMsQuantileDataLoader",
@@ -5,7 +5,8 @@ from typing import (
5
5
  Union,
6
6
  )
7
7
 
8
- from sqlalchemy import Integer, case, func, literal, or_, select, union
8
+ from sqlalchemy import and_, case, func, null, or_, select
9
+ from sqlalchemy.sql.expression import literal
9
10
  from strawberry.dataloader import DataLoader
10
11
  from typing_extensions import TypeAlias
11
12
 
@@ -22,40 +23,76 @@ Result: TypeAlias = DatasetExampleRevision
22
23
 
23
24
  class DatasetExampleRevisionsDataLoader(DataLoader[Key, Result]):
24
25
  def __init__(self, db: DbSessionFactory) -> None:
25
- super().__init__(load_fn=self._load_fn)
26
+ super().__init__(
27
+ load_fn=self._load_fn,
28
+ max_batch_size=200, # needed to prevent the size of the query from getting too large
29
+ )
26
30
  self._db = db
27
31
 
28
32
  async def _load_fn(self, keys: List[Key]) -> List[Union[Result, NotFound]]:
29
- # sqlalchemy has limited SQLite support for VALUES, so use UNION ALL instead.
30
- # For details, see https://github.com/sqlalchemy/sqlalchemy/issues/7228
31
- keys_subquery = union(
32
- *(
33
+ example_and_version_ids = tuple(
34
+ set(
35
+ (example_id, version_id)
36
+ for example_id, version_id in keys
37
+ if version_id is not None
38
+ )
39
+ )
40
+ versionless_example_ids = tuple(
41
+ set(example_id for example_id, version_id in keys if version_id is None)
42
+ )
43
+ resolved_example_and_version_ids = (
44
+ (
33
45
  select(
34
- literal(example_id, Integer).label("example_id"),
35
- literal(version_id, Integer).label("version_id"),
46
+ models.DatasetExample.id.label("example_id"),
47
+ models.DatasetVersion.id.label("version_id"),
48
+ )
49
+ .select_from(models.DatasetExample)
50
+ .join(
51
+ models.DatasetVersion,
52
+ onclause=literal(True), # cross join
53
+ )
54
+ .where(
55
+ or_(
56
+ *(
57
+ and_(
58
+ models.DatasetExample.id == example_id,
59
+ models.DatasetVersion.id == version_id,
60
+ )
61
+ for example_id, version_id in example_and_version_ids
62
+ )
63
+ )
36
64
  )
37
- for example_id, version_id in keys
38
65
  )
39
- ).subquery()
66
+ .union(
67
+ select(
68
+ models.DatasetExample.id.label("example_id"), null().label("version_id")
69
+ ).where(models.DatasetExample.id.in_(versionless_example_ids))
70
+ )
71
+ .subquery()
72
+ )
40
73
  revision_ids = (
41
74
  select(
42
- keys_subquery.c.example_id,
43
- keys_subquery.c.version_id,
75
+ resolved_example_and_version_ids.c.example_id,
76
+ resolved_example_and_version_ids.c.version_id,
44
77
  func.max(models.DatasetExampleRevision.id).label("revision_id"),
45
78
  )
46
- .select_from(keys_subquery)
79
+ .select_from(resolved_example_and_version_ids)
47
80
  .join(
48
81
  models.DatasetExampleRevision,
49
- onclause=keys_subquery.c.example_id
82
+ onclause=resolved_example_and_version_ids.c.example_id
50
83
  == models.DatasetExampleRevision.dataset_example_id,
51
84
  )
52
85
  .where(
53
86
  or_(
54
- keys_subquery.c.version_id.is_(None),
55
- models.DatasetExampleRevision.dataset_version_id <= keys_subquery.c.version_id,
87
+ resolved_example_and_version_ids.c.version_id.is_(None),
88
+ models.DatasetExampleRevision.dataset_version_id
89
+ <= resolved_example_and_version_ids.c.version_id,
56
90
  )
57
91
  )
58
- .group_by(keys_subquery.c.example_id, keys_subquery.c.version_id)
92
+ .group_by(
93
+ resolved_example_and_version_ids.c.example_id,
94
+ resolved_example_and_version_ids.c.version_id,
95
+ )
59
96
  ).subquery()
60
97
  query = (
61
98
  select(
@@ -0,0 +1,40 @@
1
+ from collections import defaultdict
2
+ from typing import (
3
+ DefaultDict,
4
+ List,
5
+ )
6
+
7
+ from sqlalchemy import select
8
+ from strawberry.dataloader import DataLoader
9
+ from typing_extensions import TypeAlias
10
+
11
+ from phoenix.db.models import ExperimentRunAnnotation as OrmExperimentRunAnnotation
12
+ from phoenix.server.types import DbSessionFactory
13
+
14
+ ExperimentRunID: TypeAlias = int
15
+ Key: TypeAlias = ExperimentRunID
16
+ Result: TypeAlias = List[OrmExperimentRunAnnotation]
17
+
18
+
19
+ class ExperimentRunAnnotations(DataLoader[Key, Result]):
20
+ def __init__(
21
+ self,
22
+ db: DbSessionFactory,
23
+ ) -> None:
24
+ super().__init__(load_fn=self._load_fn)
25
+ self._db = db
26
+
27
+ async def _load_fn(self, keys: List[Key]) -> List[Result]:
28
+ run_ids = tuple(set(keys))
29
+ annotations: DefaultDict[Key, Result] = defaultdict(list)
30
+ async with self._db() as session:
31
+ async for run_id, annotation in await session.stream(
32
+ select(
33
+ OrmExperimentRunAnnotation.experiment_run_id, OrmExperimentRunAnnotation
34
+ ).where(OrmExperimentRunAnnotation.experiment_run_id.in_(run_ids))
35
+ ):
36
+ annotations[run_id].append(annotation)
37
+ return [
38
+ sorted(annotations[run_id], key=lambda annotation: annotation.name, reverse=True)
39
+ for run_id in run_ids
40
+ ]
@@ -2,7 +2,6 @@ from datetime import datetime
2
2
  from typing import Optional
3
3
 
4
4
  import strawberry
5
- from sqlalchemy import select
6
5
  from strawberry import UNSET
7
6
  from strawberry.relay import Connection, GlobalID, Node, NodeID
8
7
  from strawberry.scalars import JSON
@@ -48,14 +47,7 @@ class ExperimentRun(Node):
48
47
  before=before if isinstance(before, CursorString) else None,
49
48
  )
50
49
  run_id = self.id_attr
51
- async with info.context.db() as session:
52
- annotations = (
53
- await session.scalars(
54
- select(models.ExperimentRunAnnotation)
55
- .where(models.ExperimentRunAnnotation.experiment_run_id == run_id)
56
- .order_by(models.ExperimentRunAnnotation.name.desc())
57
- )
58
- ).all()
50
+ annotations = await info.context.data_loaders.experiment_run_annotations.load(run_id)
59
51
  return connection_from_list(
60
52
  [to_gql_experiment_run_annotation(annotation) for annotation in annotations], args
61
53
  )
@@ -66,6 +66,7 @@ from phoenix.server.api.dataloaders import (
66
66
  DocumentRetrievalMetricsDataLoader,
67
67
  ExperimentAnnotationSummaryDataLoader,
68
68
  ExperimentErrorRatesDataLoader,
69
+ ExperimentRunAnnotations,
69
70
  ExperimentRunCountsDataLoader,
70
71
  ExperimentSequenceNumberDataLoader,
71
72
  LatencyMsQuantileDataLoader,
@@ -446,6 +447,7 @@ def create_graphql_router(
446
447
  ),
447
448
  experiment_annotation_summaries=ExperimentAnnotationSummaryDataLoader(db),
448
449
  experiment_error_rates=ExperimentErrorRatesDataLoader(db),
450
+ experiment_run_annotations=ExperimentRunAnnotations(db),
449
451
  experiment_run_counts=ExperimentRunCountsDataLoader(db),
450
452
  experiment_sequence_number=ExperimentSequenceNumberDataLoader(db),
451
453
  latency_ms_quantile=LatencyMsQuantileDataLoader(
@@ -22,7 +22,6 @@ from typing import (
22
22
  cast,
23
23
  )
24
24
  from urllib.parse import quote, urljoin
25
- from warnings import warn
26
25
 
27
26
  import httpx
28
27
  import pandas as pd
@@ -152,21 +151,37 @@ class Client(TraceDataExtractor):
152
151
  "stop_time is deprecated. Use end_time instead.",
153
152
  )
154
153
  end_time = end_time or stop_time
155
- response = self._client.post(
156
- url=urljoin(self._base_url, "v1/spans"),
157
- params={
158
- "project_name": project_name,
159
- "project-name": project_name, # for backward-compatibility
160
- },
161
- json={
162
- "queries": [q.to_dict() for q in queries],
163
- "start_time": _to_iso_format(normalize_datetime(start_time)),
164
- "end_time": _to_iso_format(normalize_datetime(end_time)),
165
- "limit": limit,
166
- "root_spans_only": root_spans_only,
167
- },
168
- timeout=timeout,
169
- )
154
+ try:
155
+ response = self._client.post(
156
+ url=urljoin(self._base_url, "v1/spans"),
157
+ params={
158
+ "project_name": project_name,
159
+ "project-name": project_name, # for backward-compatibility
160
+ },
161
+ json={
162
+ "queries": [q.to_dict() for q in queries],
163
+ "start_time": _to_iso_format(normalize_datetime(start_time)),
164
+ "end_time": _to_iso_format(normalize_datetime(end_time)),
165
+ "limit": limit,
166
+ "root_spans_only": root_spans_only,
167
+ },
168
+ timeout=timeout,
169
+ )
170
+ except httpx.TimeoutException as error:
171
+ error_message = (
172
+ (
173
+ f"The request timed out after {timeout} seconds. The timeout can be increased "
174
+ "by passing a larger value to the `timeout` parameter "
175
+ "and can be disabled altogether by passing `None`."
176
+ )
177
+ if timeout is not None
178
+ else (
179
+ "The request timed out. The timeout can be adjusted by "
180
+ "passing a number of seconds to the `timeout` parameter "
181
+ "and can be disabled altogether by passing `None`."
182
+ )
183
+ )
184
+ raise TimeoutError(error_message) from error
170
185
  if response.status_code == 404:
171
186
  logger.info("No spans found.")
172
187
  return None
@@ -503,7 +518,6 @@ class Client(TraceDataExtractor):
503
518
  inputs: Iterable[Mapping[str, Any]] = (),
504
519
  outputs: Iterable[Mapping[str, Any]] = (),
505
520
  metadata: Iterable[Mapping[str, Any]] = (),
506
- dataset_description: Optional[str] = None,
507
521
  ) -> Dataset:
508
522
  """
509
523
  Append examples to dataset on the Phoenix server. If `dataframe` or
@@ -537,11 +551,6 @@ class Client(TraceDataExtractor):
537
551
  Returns:
538
552
  A Dataset object with its examples.
539
553
  """
540
- if dataset_description is not None:
541
- warn(
542
- "The `dataset_description` parameter has been deprecated "
543
- "and will be removed in a future release."
544
- )
545
554
  if dataframe is not None or csv_file_path is not None:
546
555
  if dataframe is not None and csv_file_path is not None:
547
556
  raise ValueError(
@@ -838,3 +847,6 @@ def _is_all_dict(seq: Sequence[Any]) -> bool:
838
847
 
839
848
 
840
849
  class DatasetUploadError(Exception): ...
850
+
851
+
852
+ class TimeoutError(Exception): ...
@@ -0,0 +1 @@
1
+ __version__ = "4.30.2"
@@ -1 +0,0 @@
1
- __version__ = "4.30.0"
File without changes
File without changes
File without changes