arize-phoenix 6.2.0__tar.gz → 7.0.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 (348) hide show
  1. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/PKG-INFO +4 -4
  2. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/pyproject.toml +4 -4
  3. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/engines.py +14 -2
  4. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/span.py +65 -30
  5. arize_phoenix-7.0.1/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +199 -0
  6. arize_phoenix-7.0.1/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +66 -0
  7. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/models.py +27 -0
  8. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/context.py +15 -2
  9. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/__init__.py +14 -2
  10. arize_phoenix-7.0.1/src/phoenix/server/api/dataloaders/session_io.py +75 -0
  11. arize_phoenix-7.0.1/src/phoenix/server/api/dataloaders/session_num_traces.py +30 -0
  12. arize_phoenix-7.0.1/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +32 -0
  13. arize_phoenix-7.0.1/src/phoenix/server/api/dataloaders/session_token_usages.py +41 -0
  14. arize_phoenix-7.0.1/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +55 -0
  15. arize_phoenix-7.0.1/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +25 -0
  16. arize_phoenix-7.0.1/src/phoenix/server/api/dataloaders/trace_root_spans.py +32 -0
  17. arize_phoenix-7.0.1/src/phoenix/server/api/input_types/ProjectSessionSort.py +29 -0
  18. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/project_mutations.py +12 -2
  19. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/queries.py +14 -9
  20. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ExperimentRun.py +3 -4
  21. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +3 -4
  22. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Project.py +150 -12
  23. arize_phoenix-7.0.1/src/phoenix/server/api/types/ProjectSession.py +139 -0
  24. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Span.py +6 -19
  25. arize_phoenix-7.0.1/src/phoenix/server/api/types/SpanIOValue.py +15 -0
  26. arize_phoenix-7.0.1/src/phoenix/server/api/types/TokenUsage.py +11 -0
  27. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Trace.py +59 -2
  28. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/app.py +15 -2
  29. arize_phoenix-7.0.1/src/phoenix/server/static/.vite/manifest.json +87 -0
  30. arize_phoenix-6.2.0/src/phoenix/server/static/assets/components-DrwPLMB6.js → arize_phoenix-7.0.1/src/phoenix/server/static/assets/components-DKH6AzJw.js +276 -276
  31. arize_phoenix-7.0.1/src/phoenix/server/static/assets/index-DLV87qiO.js +93 -0
  32. arize_phoenix-6.2.0/src/phoenix/server/static/assets/pages-Cmqh2i4E.js → arize_phoenix-7.0.1/src/phoenix/server/static/assets/pages-CVY3Nv4Z.js +611 -290
  33. arize_phoenix-6.2.0/src/phoenix/server/static/assets/vendor-Cdrqqth8.js → arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-Cb3zlNNd.js +45 -45
  34. arize_phoenix-6.2.0/src/phoenix/server/static/assets/vendor-arizeai-BSCL03yQ.js → arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-arizeai-Buo4e1A6.js +2 -2
  35. arize_phoenix-6.2.0/src/phoenix/server/static/assets/vendor-codemirror-Utqu7Snw.js → arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-codemirror-BuAQiUVf.js +1 -1
  36. arize_phoenix-6.2.0/src/phoenix/server/static/assets/vendor-recharts-CNNUvc5T.js → arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-recharts-Cl9dK5tC.js +1 -1
  37. arize_phoenix-6.2.0/src/phoenix/server/static/assets/vendor-shiki-B6bHerDK.js → arize_phoenix-7.0.1/src/phoenix/server/static/assets/vendor-shiki-CazYUixL.js +1 -1
  38. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/fixtures.py +8 -0
  39. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/schemas.py +16 -0
  40. arize_phoenix-7.0.1/src/phoenix/utilities/span_store.py +0 -0
  41. arize_phoenix-7.0.1/src/phoenix/version.py +1 -0
  42. arize_phoenix-6.2.0/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -33
  43. arize_phoenix-6.2.0/src/phoenix/server/static/.vite/manifest.json +0 -87
  44. arize_phoenix-6.2.0/src/phoenix/server/static/assets/index-CTN-OfBU.js +0 -93
  45. arize_phoenix-6.2.0/src/phoenix/version.py +0 -1
  46. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/.gitignore +0 -0
  47. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/IP_NOTICE +0 -0
  48. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/LICENSE +0 -0
  49. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/README.md +0 -0
  50. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/__init__.py +0 -0
  51. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/auth.py +0 -0
  52. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/config.py +0 -0
  53. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/core/__init__.py +0 -0
  54. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/core/embedding_dimension.py +0 -0
  55. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/core/model.py +0 -0
  56. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/core/model_schema.py +0 -0
  57. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/core/model_schema_adapter.py +0 -0
  58. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/datetime_utils.py +0 -0
  59. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/README.md +0 -0
  60. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/__init__.py +0 -0
  61. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/alembic.ini +0 -0
  62. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/bulk_inserter.py +0 -0
  63. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/enums.py +0 -0
  64. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/facilitator.py +0 -0
  65. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/helpers.py +0 -0
  66. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/__init__.py +0 -0
  67. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/constants.py +0 -0
  68. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/dataset.py +0 -0
  69. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/document_annotation.py +0 -0
  70. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/evaluation.py +0 -0
  71. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/helpers.py +0 -0
  72. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/span_annotation.py +0 -0
  73. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  74. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/insertion/types.py +0 -0
  75. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/migrate.py +0 -0
  76. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/migrations/__init__.py +0 -0
  77. {arize_phoenix-6.2.0/src/phoenix/inferences → arize_phoenix-7.0.1/src/phoenix/db/migrations/data_migration_scripts}/__init__.py +0 -0
  78. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/migrations/env.py +0 -0
  79. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/migrations/script.py.mako +0 -0
  80. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  81. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  82. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  83. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  84. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/exceptions.py +0 -0
  85. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/__init__.py +0 -0
  86. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  87. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/evaluators/base.py +0 -0
  88. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  89. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  90. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/evaluators/utils.py +0 -0
  91. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/functions.py +0 -0
  92. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/tracing.py +0 -0
  93. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/types.py +0 -0
  94. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/experiments/utils.py +0 -0
  95. {arize_phoenix-6.2.0/src/phoenix/server → arize_phoenix-7.0.1/src/phoenix/inferences}/__init__.py +0 -0
  96. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/inferences/errors.py +0 -0
  97. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/inferences/fixtures.py +0 -0
  98. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/inferences/inferences.py +0 -0
  99. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/inferences/schema.py +0 -0
  100. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/inferences/validation.py +0 -0
  101. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/logging/__init__.py +0 -0
  102. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/logging/_config.py +0 -0
  103. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/logging/_filter.py +0 -0
  104. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/logging/_formatter.py +0 -0
  105. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/metrics/README.md +0 -0
  106. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/metrics/__init__.py +0 -0
  107. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/metrics/binning.py +0 -0
  108. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/metrics/metrics.py +0 -0
  109. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/metrics/mixins.py +0 -0
  110. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  111. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/metrics/timeseries.py +0 -0
  112. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/metrics/wrappers.py +0 -0
  113. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/pointcloud/__init__.py +0 -0
  114. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/pointcloud/clustering.py +0 -0
  115. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/pointcloud/pointcloud.py +0 -0
  116. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/pointcloud/projectors.py +0 -0
  117. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  118. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/py.typed +0 -0
  119. {arize_phoenix-6.2.0/src/phoenix/server/api → arize_phoenix-7.0.1/src/phoenix/server}/__init__.py +0 -0
  120. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/README.md +0 -0
  121. {arize_phoenix-6.2.0/src/phoenix/server/api/input_types → arize_phoenix-7.0.1/src/phoenix/server/api}/__init__.py +0 -0
  122. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/auth.py +0 -0
  123. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  124. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  125. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  126. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  127. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  128. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  129. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  130. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  131. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  132. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  133. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  134. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  135. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  136. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  137. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  138. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  139. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  140. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  141. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  142. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  143. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  144. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  145. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  146. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  147. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/dataloaders/users.py +0 -0
  148. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/exceptions.py +0 -0
  149. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/helpers/__init__.py +0 -0
  150. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  151. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
  152. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  153. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  154. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  155. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  156. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  157. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  158. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  159. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  160. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  161. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  162. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  163. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  164. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  165. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  166. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  167. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  168. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  169. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  170. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  171. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  172. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  173. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  174. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  175. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  176. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  177. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  178. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  179. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  180. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  181. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  182. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  183. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/TemplateOptions.py +0 -0
  184. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  185. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  186. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  187. {arize_phoenix-6.2.0/src/phoenix/server/api/openapi → arize_phoenix-7.0.1/src/phoenix/server/api/input_types}/__init__.py +0 -0
  188. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/interceptor.py +0 -0
  189. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/__init__.py +0 -0
  190. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  191. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  192. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  193. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  194. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  195. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  196. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  197. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  198. {arize_phoenix-6.2.0/src/phoenix/server/api/types → arize_phoenix-7.0.1/src/phoenix/server/api/openapi}/__init__.py +0 -0
  199. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/openapi/main.py +0 -0
  200. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/openapi/schema.py +0 -0
  201. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/__init__.py +0 -0
  202. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/auth.py +0 -0
  203. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/embeddings.py +0 -0
  204. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/oauth2.py +0 -0
  205. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/utils.py +0 -0
  206. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  207. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
  208. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  209. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  210. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  211. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  212. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -0
  213. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/spans.py +0 -0
  214. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/traces.py +0 -0
  215. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  216. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/schema.py +0 -0
  217. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/subscriptions.py +0 -0
  218. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Annotation.py +0 -0
  219. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  220. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  221. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ApiKey.py +0 -0
  222. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  223. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  224. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  225. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Cluster.py +0 -0
  226. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  227. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  228. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Dataset.py +0 -0
  229. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  230. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  231. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  232. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  233. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Dimension.py +0 -0
  234. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  235. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  236. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DimensionType.py +0 -0
  237. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  238. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  239. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  240. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  241. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  242. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Evaluation.py +0 -0
  243. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  244. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Event.py +0 -0
  245. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  246. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  247. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Experiment.py +0 -0
  248. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  249. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  250. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  251. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Functionality.py +0 -0
  252. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  253. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  254. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Inferences.py +0 -0
  255. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  256. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  257. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/MimeType.py +0 -0
  258. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Model.py +0 -0
  259. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/NumericRange.py +0 -0
  260. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  261. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  262. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Retrieval.py +0 -0
  263. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  264. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/Segments.py +0 -0
  265. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/SortDir.py +0 -0
  266. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  267. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  268. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/TemplateLanguage.py +0 -0
  269. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  270. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  271. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  272. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/User.py +0 -0
  273. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  274. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/UserRole.py +0 -0
  275. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  276. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  277. {arize_phoenix-6.2.0/src/phoenix/server/email → arize_phoenix-7.0.1/src/phoenix/server/api/types}/__init__.py +0 -0
  278. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/node.py +0 -0
  279. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/types/pagination.py +0 -0
  280. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/api/utils.py +0 -0
  281. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/bearer_auth.py +0 -0
  282. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/dml_event.py +0 -0
  283. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/dml_event_handler.py +0 -0
  284. {arize_phoenix-6.2.0/src/phoenix/server/email/templates → arize_phoenix-7.0.1/src/phoenix/server/email}/__init__.py +0 -0
  285. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/email/sender.py +0 -0
  286. {arize_phoenix-6.2.0/src/phoenix/server/openapi → arize_phoenix-7.0.1/src/phoenix/server/email/templates}/__init__.py +0 -0
  287. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/email/templates/password_reset.html +0 -0
  288. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/email/types.py +0 -0
  289. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/grpc_server.py +0 -0
  290. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/jwt_store.py +0 -0
  291. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/main.py +0 -0
  292. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/oauth2.py +0 -0
  293. {arize_phoenix-6.2.0/src/phoenix/server/templates → arize_phoenix-7.0.1/src/phoenix/server/openapi}/__init__.py +0 -0
  294. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/prometheus.py +0 -0
  295. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/rate_limiters.py +0 -0
  296. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  297. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  298. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  299. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  300. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  301. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  302. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  303. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  304. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +0 -0
  305. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +0 -0
  306. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/favicon.ico +0 -0
  307. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/static/modernizr.js +0 -0
  308. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/telemetry.py +0 -0
  309. {arize_phoenix-6.2.0/src/phoenix/session → arize_phoenix-7.0.1/src/phoenix/server/templates}/__init__.py +0 -0
  310. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/templates/index.html +0 -0
  311. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/thread_server.py +0 -0
  312. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/server/types.py +0 -0
  313. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/services.py +0 -0
  314. {arize_phoenix-6.2.0/src/phoenix/utilities → arize_phoenix-7.0.1/src/phoenix/session}/__init__.py +0 -0
  315. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/session/client.py +0 -0
  316. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/session/data_extractor.py +0 -0
  317. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/session/evaluation.py +0 -0
  318. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/session/session.py +0 -0
  319. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/settings.py +0 -0
  320. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/__init__.py +0 -0
  321. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/attributes.py +0 -0
  322. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/dsl/README.md +0 -0
  323. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/dsl/__init__.py +0 -0
  324. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/dsl/filter.py +0 -0
  325. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/dsl/helpers.py +0 -0
  326. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/dsl/query.py +0 -0
  327. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/errors.py +0 -0
  328. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/evaluation_conventions.py +0 -0
  329. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/exporter.py +0 -0
  330. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/otel.py +0 -0
  331. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/projects.py +0 -0
  332. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/span_evaluations.py +0 -0
  333. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/span_json_decoder.py +0 -0
  334. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/span_json_encoder.py +0 -0
  335. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/trace_dataset.py +0 -0
  336. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/utils.py +0 -0
  337. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/v1/__init__.py +0 -0
  338. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  339. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  340. /arize_phoenix-6.2.0/src/phoenix/utilities/span_store.py → /arize_phoenix-7.0.1/src/phoenix/utilities/__init__.py +0 -0
  341. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/utilities/client.py +0 -0
  342. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/utilities/deprecation.py +0 -0
  343. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/utilities/error_handling.py +0 -0
  344. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/utilities/json.py +0 -0
  345. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/utilities/logging.py +0 -0
  346. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/utilities/project.py +0 -0
  347. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/utilities/re.py +0 -0
  348. {arize_phoenix-6.2.0 → arize_phoenix-7.0.1}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 6.2.0
3
+ Version: 7.0.1
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
@@ -44,7 +44,7 @@ Requires-Dist: scipy
44
44
  Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.4
45
45
  Requires-Dist: sqlean-py>=3.45.1
46
46
  Requires-Dist: starlette
47
- Requires-Dist: strawberry-graphql==0.243.1
47
+ Requires-Dist: strawberry-graphql==0.247.0
48
48
  Requires-Dist: tqdm
49
49
  Requires-Dist: typing-extensions>=4.6
50
50
  Requires-Dist: uvicorn
@@ -66,7 +66,7 @@ Requires-Dist: opentelemetry-sdk; extra == 'container'
66
66
  Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
67
67
  Requires-Dist: prometheus-client; extra == 'container'
68
68
  Requires-Dist: py-grpc-prometheus; extra == 'container'
69
- Requires-Dist: strawberry-graphql[opentelemetry]==0.243.1; extra == 'container'
69
+ Requires-Dist: strawberry-graphql[opentelemetry]==0.247.0; extra == 'container'
70
70
  Requires-Dist: umap-learn; extra == 'container'
71
71
  Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'container'
72
72
  Provides-Extra: dev
@@ -97,7 +97,7 @@ Requires-Dist: pytest-postgresql; extra == 'dev'
97
97
  Requires-Dist: pytest-xdist; extra == 'dev'
98
98
  Requires-Dist: pytest==8.3.3; extra == 'dev'
99
99
  Requires-Dist: ruff==0.6.9; extra == 'dev'
100
- Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.243.1; extra == 'dev'
100
+ Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.247.0; extra == 'dev'
101
101
  Requires-Dist: tabulate; extra == 'dev'
102
102
  Requires-Dist: tox-uv==1.11.3; extra == 'dev'
103
103
  Requires-Dist: tox==4.18.1; extra == 'dev'
@@ -28,7 +28,7 @@ dependencies = [
28
28
  "starlette",
29
29
  "uvicorn",
30
30
  "psutil",
31
- "strawberry-graphql==0.243.1", # need to pin version because we're monkey-patching
31
+ "strawberry-graphql==0.247.0", # need to pin version because we're monkey-patching
32
32
  "pyarrow",
33
33
  "typing-extensions>=4.6",
34
34
  "scipy",
@@ -87,7 +87,7 @@ dev = [
87
87
  "pytest-postgresql",
88
88
  "asyncpg",
89
89
  "psycopg[binary,pool]",
90
- "strawberry-graphql[debug-server,opentelemetry]==0.243.1", # need to pin version because we're monkey-patching
90
+ "strawberry-graphql[debug-server,opentelemetry]==0.247.0", # need to pin version because we're monkey-patching
91
91
  "pre-commit",
92
92
  "arize[AutoEmbeddings, LLM_Evaluation]",
93
93
  "llama-index>=0.10.3",
@@ -133,7 +133,7 @@ container = [
133
133
  "opentelemetry-instrumentation-sqlalchemy",
134
134
  "opentelemetry-instrumentation-grpc",
135
135
  "py-grpc-prometheus",
136
- "strawberry-graphql[opentelemetry]==0.243.1", # need to pin version because we're monkey-patching
136
+ "strawberry-graphql[opentelemetry]==0.247.0", # need to pin version because we're monkey-patching
137
137
  "uvloop; platform_system != 'Windows'",
138
138
  "fast-hdbscan>=0.2.0",
139
139
  "numba>=0.60.0", # https://github.com/astral-sh/uv/issues/6281
@@ -229,7 +229,7 @@ dependencies = [
229
229
  "py-grpc-prometheus",
230
230
  "pypistats", # this is needed to type-check third-party packages
231
231
  "requests", # this is needed to type-check third-party packages
232
- "strawberry-graphql[opentelemetry]==0.243.1", # need to pin version because we're monkey-patching
232
+ "strawberry-graphql[opentelemetry]==0.247.0", # need to pin version because we're monkey-patching
233
233
  "tenacity",
234
234
  "types-cachetools",
235
235
  "types-protobuf",
@@ -163,11 +163,23 @@ def aio_postgresql_engine(
163
163
  log_to_stdout: bool = False,
164
164
  log_migrations_to_stdout: bool = True,
165
165
  ) -> AsyncEngine:
166
- engine = create_async_engine(url=url, echo=log_to_stdout, json_serializer=_dumps)
166
+ url_query = dict(url.query)
167
+ sslmode = url_query.pop("sslmode", None) or url_query.pop("ssl", None)
168
+ engine = create_async_engine(
169
+ url=url.set(
170
+ # https://github.com/MagicStack/asyncpg/issues/737
171
+ query={**url_query, "ssl": sslmode} if sslmode else url_query,
172
+ ),
173
+ echo=log_to_stdout,
174
+ json_serializer=_dumps,
175
+ )
167
176
  if not migrate:
168
177
  return engine
169
178
  sync_engine = sqlalchemy.create_engine(
170
- url=url.set(drivername="postgresql+psycopg"),
179
+ url=url.set(
180
+ drivername="postgresql+psycopg",
181
+ query={**url_query, "sslmode": sslmode} if sslmode else url_query,
182
+ ),
171
183
  echo=log_migrations_to_stdout,
172
184
  json_serializer=_dumps,
173
185
  )
@@ -28,42 +28,77 @@ async def insert_span(
28
28
  dialect = SupportedSQLDialect(session.bind.dialect.name)
29
29
  if (
30
30
  project_rowid := await session.scalar(
31
- select(models.Project.id).where(models.Project.name == project_name)
31
+ select(models.Project.id).filter_by(name=project_name)
32
32
  )
33
33
  ) is None:
34
34
  project_rowid = await session.scalar(
35
- insert(models.Project).values(dict(name=project_name)).returning(models.Project.id)
35
+ insert(models.Project).values(name=project_name).returning(models.Project.id)
36
36
  )
37
37
  assert project_rowid is not None
38
- if trace := await session.scalar(
39
- select(models.Trace).where(models.Trace.trace_id == span.context.trace_id)
40
- ):
41
- trace_rowid = trace.id
42
- if span.start_time < trace.start_time or trace.end_time < span.end_time:
43
- trace_start_time = min(trace.start_time, span.start_time)
44
- trace_end_time = max(trace.end_time, span.end_time)
45
- await session.execute(
46
- update(models.Trace)
47
- .where(models.Trace.id == trace_rowid)
48
- .values(
49
- start_time=trace_start_time,
50
- end_time=trace_end_time,
51
- )
52
- )
38
+
39
+ trace_id = span.context.trace_id
40
+ trace: models.Trace = await session.scalar(
41
+ select(models.Trace).filter_by(trace_id=trace_id)
42
+ ) or models.Trace(trace_id=trace_id)
43
+
44
+ if trace.id is not None:
45
+ # Trace record may need to be updated.
46
+ if trace.end_time < span.end_time:
47
+ trace.end_time = span.end_time
48
+ trace.project_rowid = project_rowid
49
+ if span.start_time < trace.start_time:
50
+ trace.start_time = span.start_time
53
51
  else:
54
- trace_rowid = cast(
55
- int,
56
- await session.scalar(
57
- insert(models.Trace)
58
- .values(
59
- project_rowid=project_rowid,
60
- trace_id=span.context.trace_id,
61
- start_time=span.start_time,
62
- end_time=span.end_time,
63
- )
64
- .returning(models.Trace.id)
65
- ),
52
+ # Trace record needs to be persisted for the first time.
53
+ trace.start_time = span.start_time
54
+ trace.end_time = span.end_time
55
+ trace.project_rowid = project_rowid
56
+ session.add(trace)
57
+
58
+ session_id = get_attribute_value(span.attributes, SpanAttributes.SESSION_ID)
59
+ session_id = str(session_id).strip() if session_id is not None else ""
60
+ assert isinstance(session_id, str)
61
+
62
+ project_session: Optional[models.ProjectSession] = None
63
+ if trace.project_session_rowid is not None:
64
+ # ProjectSession record already exists in database for this Trace record, so we fetch
65
+ # it because it may need to be updated. However, the session_id on the span, if exists,
66
+ # will be ignored at this point. Otherwise, if session_id is different, we will need
67
+ # to create a new ProjectSession record, as well as to determine whether the old record
68
+ # needs to be deleted if this is the last Trace associated with it.
69
+ project_session = await session.scalar(
70
+ select(models.ProjectSession).filter_by(id=trace.project_session_rowid)
66
71
  )
72
+ elif session_id:
73
+ project_session = await session.scalar(
74
+ select(models.ProjectSession).filter_by(session_id=session_id)
75
+ ) or models.ProjectSession(session_id=session_id)
76
+
77
+ if project_session is not None:
78
+ if project_session.id is None:
79
+ # ProjectSession record needs to be persisted for the first time.
80
+ project_session.start_time = trace.start_time
81
+ project_session.end_time = trace.end_time
82
+ project_session.project_id = project_rowid
83
+ session.add(project_session)
84
+ await session.flush()
85
+ assert project_session.id is not None
86
+ trace.project_session_rowid = project_session.id
87
+ else:
88
+ # ProjectSession record may need to be updated.
89
+ if trace.project_session_rowid is None:
90
+ trace.project_session_rowid = project_session.id
91
+ if trace.start_time < project_session.start_time:
92
+ project_session.start_time = trace.start_time
93
+ if project_session.end_time < trace.end_time:
94
+ project_session.end_time = trace.end_time
95
+
96
+ await session.flush()
97
+ assert trace.id is not None
98
+ assert project_session is None or (
99
+ project_session.id is not None and project_session.id == trace.project_session_rowid
100
+ )
101
+
67
102
  cumulative_error_count = int(span.status_code is SpanStatusCode.ERROR)
68
103
  cumulative_llm_token_count_prompt = cast(
69
104
  int, get_attribute_value(span.attributes, SpanAttributes.LLM_TOKEN_COUNT_PROMPT) or 0
@@ -94,7 +129,7 @@ async def insert_span(
94
129
  insert_on_conflict(
95
130
  dict(
96
131
  span_id=span.context.span_id,
97
- trace_rowid=trace_rowid,
132
+ trace_rowid=trace.id,
98
133
  parent_id=span.parent_id,
99
134
  span_kind=span.span_kind.value,
100
135
  name=span.name,
@@ -0,0 +1,199 @@
1
+ # /// script
2
+ # dependencies = [
3
+ # "arize-phoenix[pg]",
4
+ # ]
5
+ # ///
6
+ """
7
+ Populate the `project_sessions` table with data from the traces and spans tables.
8
+
9
+ Environment variables.
10
+
11
+ - `PHOENIX_SQL_DATABASE_URL` must be set to the database connection string.
12
+ - (optional) Postgresql schema can be set via `PHOENIX_SQL_DATABASE_SCHEMA`.
13
+ """
14
+
15
+ import os
16
+ from datetime import datetime
17
+ from time import perf_counter
18
+ from typing import Any, Optional, Union
19
+
20
+ import sqlean
21
+ from openinference.semconv.trace import SpanAttributes
22
+ from sqlalchemy import (
23
+ JSON,
24
+ Engine,
25
+ NullPool,
26
+ create_engine,
27
+ event,
28
+ func,
29
+ insert,
30
+ make_url,
31
+ select,
32
+ update,
33
+ )
34
+ from sqlalchemy.dialects import postgresql
35
+ from sqlalchemy.ext.compiler import compiles
36
+ from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, sessionmaker
37
+
38
+ from phoenix.config import ENV_PHOENIX_SQL_DATABASE_SCHEMA, get_env_database_connection_str
39
+ from phoenix.db.engines import set_postgresql_search_path
40
+
41
+
42
+ class JSONB(JSON):
43
+ # See https://docs.sqlalchemy.org/en/20/core/custom_types.html
44
+ __visit_name__ = "JSONB"
45
+
46
+
47
+ @compiles(JSONB, "sqlite")
48
+ def _(*args: Any, **kwargs: Any) -> str:
49
+ # See https://docs.sqlalchemy.org/en/20/core/custom_types.html
50
+ return "JSONB"
51
+
52
+
53
+ JSON_ = (
54
+ JSON()
55
+ .with_variant(
56
+ postgresql.JSONB(), # type: ignore
57
+ "postgresql",
58
+ )
59
+ .with_variant(
60
+ JSONB(),
61
+ "sqlite",
62
+ )
63
+ )
64
+
65
+
66
+ class Base(DeclarativeBase): ...
67
+
68
+
69
+ class ProjectSession(Base):
70
+ __tablename__ = "project_sessions"
71
+ id: Mapped[int] = mapped_column(primary_key=True)
72
+ session_id: Mapped[str]
73
+ project_id: Mapped[int]
74
+ start_time: Mapped[datetime]
75
+ end_time: Mapped[datetime]
76
+
77
+
78
+ class Trace(Base):
79
+ __tablename__ = "traces"
80
+ id: Mapped[int] = mapped_column(primary_key=True)
81
+ project_session_rowid: Mapped[Union[int, None]]
82
+ project_rowid: Mapped[int]
83
+ start_time: Mapped[datetime]
84
+ end_time: Mapped[datetime]
85
+
86
+
87
+ class Span(Base):
88
+ __tablename__ = "spans"
89
+ id: Mapped[int] = mapped_column(primary_key=True)
90
+ trace_rowid: Mapped[int]
91
+ parent_id: Mapped[Optional[str]]
92
+ attributes: Mapped[dict[str, Any]] = mapped_column(JSON_, nullable=False)
93
+
94
+
95
+ SESSION_ID = SpanAttributes.SESSION_ID.split(".")
96
+ USER_ID = SpanAttributes.USER_ID.split(".")
97
+
98
+
99
+ def populate_project_sessions(
100
+ engine: Engine,
101
+ ) -> None:
102
+ sessions_from_span = (
103
+ select(
104
+ Span.attributes[SESSION_ID].as_string().label("session_id"),
105
+ Trace.project_rowid.label("project_id"),
106
+ Trace.start_time.label("start_time"),
107
+ func.row_number()
108
+ .over(
109
+ partition_by=Span.attributes[SESSION_ID],
110
+ order_by=[Trace.start_time, Trace.id, Span.id],
111
+ )
112
+ .label("rank"),
113
+ func.max(Trace.end_time)
114
+ .over(partition_by=Span.attributes[SESSION_ID])
115
+ .label("end_time"),
116
+ )
117
+ .join_from(Span, Trace, Span.trace_rowid == Trace.id)
118
+ .where(Span.parent_id.is_(None))
119
+ .where(Span.attributes[SESSION_ID].as_string() != "")
120
+ .subquery()
121
+ )
122
+ sessions_for_trace_id = (
123
+ select(
124
+ Span.trace_rowid,
125
+ ProjectSession.id.label("project_session_rowid"),
126
+ )
127
+ .join_from(
128
+ Span,
129
+ ProjectSession,
130
+ Span.attributes[SESSION_ID].as_string() == ProjectSession.session_id,
131
+ )
132
+ .where(Span.parent_id.is_(None))
133
+ .where(Span.attributes[SESSION_ID].as_string() != "")
134
+ .subquery()
135
+ )
136
+ start_time = perf_counter()
137
+ with sessionmaker(engine).begin() as session:
138
+ session.execute(
139
+ insert(ProjectSession).from_select(
140
+ [
141
+ "session_id",
142
+ "project_id",
143
+ "start_time",
144
+ "end_time",
145
+ ],
146
+ select(
147
+ sessions_from_span.c.session_id,
148
+ sessions_from_span.c.project_id,
149
+ sessions_from_span.c.start_time,
150
+ sessions_from_span.c.end_time,
151
+ ).where(sessions_from_span.c.rank == 1),
152
+ )
153
+ )
154
+ session.execute(
155
+ (
156
+ update(Trace)
157
+ .values(project_session_rowid=sessions_for_trace_id.c.project_session_rowid)
158
+ .where(Trace.id == sessions_for_trace_id.c.trace_rowid)
159
+ )
160
+ )
161
+ elapsed_time = perf_counter() - start_time
162
+ print(f"✅ Populated project_sessions in {elapsed_time:.3f} seconds.")
163
+
164
+
165
+ if __name__ == "__main__":
166
+ sql_database_url = make_url(get_env_database_connection_str())
167
+ print(f"Using database URL: {sql_database_url}")
168
+ ans = input("Is that correct? [y]/n: ")
169
+ if ans.lower().startswith("n"):
170
+ url = input("Please enter the correct database URL: ")
171
+ sql_database_url = make_url(url)
172
+ backend = sql_database_url.get_backend_name()
173
+ if backend == "sqlite":
174
+ file = sql_database_url.database
175
+ engine = create_engine(
176
+ url=sql_database_url.set(drivername="sqlite"),
177
+ creator=lambda: sqlean.connect(f"file:///{file}", uri=True),
178
+ poolclass=NullPool,
179
+ echo=True,
180
+ )
181
+ elif backend == "postgresql":
182
+ schema = os.getenv(ENV_PHOENIX_SQL_DATABASE_SCHEMA)
183
+ if schema:
184
+ print(f"Using schema: {schema}")
185
+ else:
186
+ print("No PostgreSQL schema set. (This is the default.)")
187
+ ans = input("Is that correct? [y]/n: ")
188
+ if ans.lower().startswith("n"):
189
+ schema = input("Please enter the correct schema: ")
190
+ engine = create_engine(
191
+ url=sql_database_url.set(drivername="postgresql+psycopg"),
192
+ poolclass=NullPool,
193
+ echo=True,
194
+ )
195
+ if schema:
196
+ event.listen(engine, "connect", set_postgresql_search_path(schema))
197
+ else:
198
+ raise ValueError(f"Unknown database backend: {backend}")
199
+ populate_project_sessions(engine)
@@ -0,0 +1,66 @@
1
+ """create project_session table
2
+
3
+ Revision ID: 4ded9e43755f
4
+ Revises: cd164e83824f
5
+ Create Date: 2024-10-08 22:53:24.539786
6
+
7
+ """
8
+
9
+ from typing import Sequence, Union
10
+
11
+ import sqlalchemy as sa
12
+ from alembic import op
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision: str = "4ded9e43755f"
16
+ down_revision: Union[str, None] = "cd164e83824f"
17
+ branch_labels: Union[str, Sequence[str], None] = None
18
+ depends_on: Union[str, Sequence[str], None] = None
19
+
20
+
21
+ def upgrade() -> None:
22
+ op.create_table(
23
+ "project_sessions",
24
+ sa.Column("id", sa.Integer, primary_key=True),
25
+ sa.Column("session_id", sa.String, unique=True, nullable=False),
26
+ sa.Column(
27
+ "project_id",
28
+ sa.Integer,
29
+ sa.ForeignKey("projects.id", ondelete="CASCADE"),
30
+ nullable=False,
31
+ index=True,
32
+ ),
33
+ sa.Column(
34
+ "start_time",
35
+ sa.TIMESTAMP(timezone=True),
36
+ index=True,
37
+ nullable=False,
38
+ ),
39
+ sa.Column(
40
+ "end_time",
41
+ sa.TIMESTAMP(timezone=True),
42
+ index=True,
43
+ nullable=False,
44
+ ),
45
+ )
46
+ with op.batch_alter_table("traces") as batch_op:
47
+ batch_op.add_column(
48
+ sa.Column(
49
+ "project_session_rowid",
50
+ sa.Integer,
51
+ sa.ForeignKey("project_sessions.id", ondelete="CASCADE"),
52
+ nullable=True,
53
+ ),
54
+ )
55
+ op.create_index(
56
+ "ix_traces_project_session_rowid",
57
+ "traces",
58
+ ["project_session_rowid"],
59
+ )
60
+
61
+
62
+ def downgrade() -> None:
63
+ op.drop_index("ix_traces_project_session_rowid")
64
+ with op.batch_alter_table("traces") as batch_op:
65
+ batch_op.drop_column("project_session_rowid")
66
+ op.drop_table("project_sessions")
@@ -156,14 +156,37 @@ class Project(Base):
156
156
  )
157
157
 
158
158
 
159
+ class ProjectSession(Base):
160
+ __tablename__ = "project_sessions"
161
+ id: Mapped[int] = mapped_column(primary_key=True)
162
+ session_id: Mapped[str] = mapped_column(String, nullable=False, unique=True)
163
+ project_id: Mapped[int] = mapped_column(
164
+ ForeignKey("projects.id", ondelete="CASCADE"),
165
+ nullable=False,
166
+ index=True,
167
+ )
168
+ start_time: Mapped[datetime] = mapped_column(UtcTimeStamp, index=True, nullable=False)
169
+ end_time: Mapped[datetime] = mapped_column(UtcTimeStamp, index=True, nullable=False)
170
+ traces: Mapped[list["Trace"]] = relationship(
171
+ "Trace",
172
+ back_populates="project_session",
173
+ uselist=True,
174
+ )
175
+
176
+
159
177
  class Trace(Base):
160
178
  __tablename__ = "traces"
161
179
  id: Mapped[int] = mapped_column(primary_key=True)
162
180
  project_rowid: Mapped[int] = mapped_column(
163
181
  ForeignKey("projects.id", ondelete="CASCADE"),
182
+ nullable=False,
164
183
  index=True,
165
184
  )
166
185
  trace_id: Mapped[str]
186
+ project_session_rowid: Mapped[Optional[int]] = mapped_column(
187
+ ForeignKey("project_sessions.id", ondelete="CASCADE"),
188
+ index=True,
189
+ )
167
190
  start_time: Mapped[datetime] = mapped_column(UtcTimeStamp, index=True)
168
191
  end_time: Mapped[datetime] = mapped_column(UtcTimeStamp)
169
192
 
@@ -188,6 +211,10 @@ class Trace(Base):
188
211
  cascade="all, delete-orphan",
189
212
  uselist=True,
190
213
  )
214
+ project_session: Mapped[ProjectSession] = relationship(
215
+ "ProjectSession",
216
+ back_populates="traces",
217
+ )
191
218
  experiment_runs: Mapped[list["ExperimentRun"]] = relationship(
192
219
  primaryjoin="foreign(ExperimentRun.trace_id) == Trace.trace_id",
193
220
  back_populates="trace",
@@ -31,12 +31,18 @@ from phoenix.server.api.dataloaders import (
31
31
  MinStartOrMaxEndTimeDataLoader,
32
32
  ProjectByNameDataLoader,
33
33
  RecordCountDataLoader,
34
+ SessionIODataLoader,
35
+ SessionNumTracesDataLoader,
36
+ SessionNumTracesWithErrorDataLoader,
37
+ SessionTokenUsagesDataLoader,
38
+ SessionTraceLatencyMsQuantileDataLoader,
34
39
  SpanAnnotationsDataLoader,
35
40
  SpanDatasetExamplesDataLoader,
36
41
  SpanDescendantsDataLoader,
37
42
  SpanProjectsDataLoader,
38
43
  TokenCountDataLoader,
39
- TraceRowIdsDataLoader,
44
+ TraceByTraceIdsDataLoader,
45
+ TraceRootSpansDataLoader,
40
46
  UserRolesDataLoader,
41
47
  UsersDataLoader,
42
48
  )
@@ -68,12 +74,19 @@ class DataLoaders:
68
74
  latency_ms_quantile: LatencyMsQuantileDataLoader
69
75
  min_start_or_max_end_times: MinStartOrMaxEndTimeDataLoader
70
76
  record_counts: RecordCountDataLoader
77
+ session_first_inputs: SessionIODataLoader
78
+ session_last_outputs: SessionIODataLoader
79
+ session_num_traces: SessionNumTracesDataLoader
80
+ session_num_traces_with_error: SessionNumTracesWithErrorDataLoader
81
+ session_token_usages: SessionTokenUsagesDataLoader
82
+ session_trace_latency_ms_quantile: SessionTraceLatencyMsQuantileDataLoader
71
83
  span_annotations: SpanAnnotationsDataLoader
72
84
  span_dataset_examples: SpanDatasetExamplesDataLoader
73
85
  span_descendants: SpanDescendantsDataLoader
74
86
  span_projects: SpanProjectsDataLoader
75
87
  token_counts: TokenCountDataLoader
76
- trace_row_ids: TraceRowIdsDataLoader
88
+ trace_by_trace_ids: TraceByTraceIdsDataLoader
89
+ trace_root_spans: TraceRootSpansDataLoader
77
90
  project_by_name: ProjectByNameDataLoader
78
91
  users: UsersDataLoader
79
92
  user_roles: UserRolesDataLoader
@@ -19,12 +19,18 @@ from .latency_ms_quantile import LatencyMsQuantileCache, LatencyMsQuantileDataLo
19
19
  from .min_start_or_max_end_times import MinStartOrMaxEndTimeCache, MinStartOrMaxEndTimeDataLoader
20
20
  from .project_by_name import ProjectByNameDataLoader
21
21
  from .record_counts import RecordCountCache, RecordCountDataLoader
22
+ from .session_io import SessionIODataLoader
23
+ from .session_num_traces import SessionNumTracesDataLoader
24
+ from .session_num_traces_with_error import SessionNumTracesWithErrorDataLoader
25
+ from .session_token_usages import SessionTokenUsagesDataLoader
26
+ from .session_trace_latency_ms_quantile import SessionTraceLatencyMsQuantileDataLoader
22
27
  from .span_annotations import SpanAnnotationsDataLoader
23
28
  from .span_dataset_examples import SpanDatasetExamplesDataLoader
24
29
  from .span_descendants import SpanDescendantsDataLoader
25
30
  from .span_projects import SpanProjectsDataLoader
26
31
  from .token_counts import TokenCountCache, TokenCountDataLoader
27
- from .trace_row_ids import TraceRowIdsDataLoader
32
+ from .trace_by_trace_ids import TraceByTraceIdsDataLoader
33
+ from .trace_root_spans import TraceRootSpansDataLoader
28
34
  from .user_roles import UserRolesDataLoader
29
35
  from .users import UsersDataLoader
30
36
 
@@ -45,11 +51,17 @@ __all__ = [
45
51
  "LatencyMsQuantileDataLoader",
46
52
  "MinStartOrMaxEndTimeDataLoader",
47
53
  "RecordCountDataLoader",
54
+ "SessionIODataLoader",
55
+ "SessionNumTracesDataLoader",
56
+ "SessionNumTracesWithErrorDataLoader",
57
+ "SessionTokenUsagesDataLoader",
58
+ "SessionTraceLatencyMsQuantileDataLoader",
48
59
  "SpanDatasetExamplesDataLoader",
49
60
  "SpanDescendantsDataLoader",
50
61
  "SpanProjectsDataLoader",
51
62
  "TokenCountDataLoader",
52
- "TraceRowIdsDataLoader",
63
+ "TraceByTraceIdsDataLoader",
64
+ "TraceRootSpansDataLoader",
53
65
  "ProjectByNameDataLoader",
54
66
  "SpanAnnotationsDataLoader",
55
67
  "UsersDataLoader",