arize-phoenix 4.12.0__tar.gz → 4.12.1rc1__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 (298) hide show
  1. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/PKG-INFO +4 -3
  2. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/pyproject.toml +17 -9
  3. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/context.py +3 -7
  4. arize_phoenix-4.12.1rc1/src/phoenix/server/api/openapi/main.py +22 -0
  5. arize_phoenix-4.12.1rc1/src/phoenix/server/api/openapi/schema.py +16 -0
  6. arize_phoenix-4.12.1rc1/src/phoenix/server/api/routers/v1/__init__.py +42 -0
  7. arize_phoenix-4.12.1rc1/src/phoenix/server/api/routers/v1/dataset_examples.py +157 -0
  8. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/routers/v1/datasets.py +390 -506
  9. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/routers/v1/evaluations.py +73 -66
  10. arize_phoenix-4.12.1rc1/src/phoenix/server/api/routers/v1/experiment_evaluations.py +113 -0
  11. arize_phoenix-4.12.1rc1/src/phoenix/server/api/routers/v1/experiment_runs.py +160 -0
  12. arize_phoenix-4.12.1rc1/src/phoenix/server/api/routers/v1/experiments.py +252 -0
  13. arize_phoenix-4.12.1rc1/src/phoenix/server/api/routers/v1/pydantic_compat.py +78 -0
  14. arize_phoenix-4.12.1rc1/src/phoenix/server/api/routers/v1/spans.py +246 -0
  15. arize_phoenix-4.12.1rc1/src/phoenix/server/api/routers/v1/traces.py +215 -0
  16. arize_phoenix-4.12.1rc1/src/phoenix/server/api/routers/v1/utils.py +95 -0
  17. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Project.py +33 -0
  18. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/app.py +172 -176
  19. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/main.py +3 -0
  20. arize_phoenix-4.12.1rc1/src/phoenix/server/static/.vite/manifest.json +78 -0
  21. arize_phoenix-4.12.1rc1/src/phoenix/server/static/assets/components-C8sm_r1F.js +1142 -0
  22. arize_phoenix-4.12.1rc1/src/phoenix/server/static/assets/index-BEKPzgQs.js +100 -0
  23. arize_phoenix-4.12.1rc1/src/phoenix/server/static/assets/pages-bN7juCjh.js +2885 -0
  24. arize_phoenix-4.12.1rc1/src/phoenix/server/static/assets/vendor-CUDAPm8e.js +641 -0
  25. arize_phoenix-4.12.1rc1/src/phoenix/server/static/assets/vendor-DxkFTwjz.css +1 -0
  26. arize_phoenix-4.12.1rc1/src/phoenix/server/static/assets/vendor-arizeai-Do2HOmcL.js +662 -0
  27. arize_phoenix-4.12.1rc1/src/phoenix/server/static/assets/vendor-codemirror-CrdxOlMs.js +12 -0
  28. arize_phoenix-4.12.1rc1/src/phoenix/server/static/assets/vendor-recharts-PKRvByVe.js +59 -0
  29. arize_phoenix-4.12.1rc1/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js +2998 -0
  30. arize_phoenix-4.12.1rc1/src/phoenix/server/templates/index.html +107 -0
  31. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/thread_server.py +2 -2
  32. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/session/client.py +3 -2
  33. arize_phoenix-4.12.1rc1/src/phoenix/version.py +1 -0
  34. arize_phoenix-4.12.0/src/phoenix/server/api/openapi/main.py +0 -6
  35. arize_phoenix-4.12.0/src/phoenix/server/api/openapi/schema.py +0 -16
  36. arize_phoenix-4.12.0/src/phoenix/server/api/routers/v1/__init__.py +0 -89
  37. arize_phoenix-4.12.0/src/phoenix/server/api/routers/v1/dataset_examples.py +0 -178
  38. arize_phoenix-4.12.0/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -136
  39. arize_phoenix-4.12.0/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -217
  40. arize_phoenix-4.12.0/src/phoenix/server/api/routers/v1/experiments.py +0 -301
  41. arize_phoenix-4.12.0/src/phoenix/server/api/routers/v1/spans.py +0 -275
  42. arize_phoenix-4.12.0/src/phoenix/server/api/routers/v1/traces.py +0 -228
  43. arize_phoenix-4.12.0/src/phoenix/server/openapi/docs.py +0 -221
  44. arize_phoenix-4.12.0/src/phoenix/server/static/index.css +0 -6
  45. arize_phoenix-4.12.0/src/phoenix/server/static/index.js +0 -8548
  46. arize_phoenix-4.12.0/src/phoenix/server/templates/index.html +0 -48
  47. arize_phoenix-4.12.0/src/phoenix/version.py +0 -1
  48. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/.gitignore +0 -0
  49. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/IP_NOTICE +0 -0
  50. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/LICENSE +0 -0
  51. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/README.md +0 -0
  52. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/examples/manually-instrumented-chatbot/chat-service/chat/__init__.py +0 -0
  53. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/examples/manually-instrumented-chatbot/chat-service/chat/app.py +0 -0
  54. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/examples/manually-instrumented-chatbot/chat-service/chat/types.py +0 -0
  55. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/examples/manually-instrumented-chatbot/frontend/Dockerfile +0 -0
  56. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/examples/manually-instrumented-chatbot/frontend/Makefile +0 -0
  57. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/examples/manually-instrumented-chatbot/frontend/__init__.py +0 -0
  58. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/examples/manually-instrumented-chatbot/frontend/pyproject.toml +0 -0
  59. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/examples/manually-instrumented-chatbot/frontend/requirements.txt +0 -0
  60. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/examples/manually-instrumented-chatbot/frontend/schema.json +0 -0
  61. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/__init__.py +0 -0
  62. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/config.py +0 -0
  63. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/core/__init__.py +0 -0
  64. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/core/embedding_dimension.py +0 -0
  65. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/core/model.py +0 -0
  66. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/core/model_schema.py +0 -0
  67. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/core/model_schema_adapter.py +0 -0
  68. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/datetime_utils.py +0 -0
  69. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/README.md +0 -0
  70. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/__init__.py +0 -0
  71. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/alembic.ini +0 -0
  72. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/bulk_inserter.py +0 -0
  73. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/engines.py +0 -0
  74. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/helpers.py +0 -0
  75. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/insertion/__init__.py +0 -0
  76. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/insertion/dataset.py +0 -0
  77. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/insertion/evaluation.py +0 -0
  78. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/insertion/helpers.py +0 -0
  79. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/insertion/span.py +0 -0
  80. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/migrate.py +0 -0
  81. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/migrations/__init__.py +0 -0
  82. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/migrations/env.py +0 -0
  83. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/migrations/script.py.mako +0 -0
  84. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/migrations/types.py +0 -0
  85. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  86. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  87. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/db/models.py +0 -0
  88. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/exceptions.py +0 -0
  89. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/__init__.py +0 -0
  90. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  91. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/evaluators/base.py +0 -0
  92. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  93. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  94. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/evaluators/utils.py +0 -0
  95. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/functions.py +0 -0
  96. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/tracing.py +0 -0
  97. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/types.py +0 -0
  98. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/experiments/utils.py +0 -0
  99. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/inferences/__init__.py +0 -0
  100. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/inferences/errors.py +0 -0
  101. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/inferences/fixtures.py +0 -0
  102. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/inferences/inferences.py +0 -0
  103. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/inferences/schema.py +0 -0
  104. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/inferences/validation.py +0 -0
  105. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/metrics/README.md +0 -0
  106. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/metrics/__init__.py +0 -0
  107. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/metrics/binning.py +0 -0
  108. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/metrics/metrics.py +0 -0
  109. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/metrics/mixins.py +0 -0
  110. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  111. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/metrics/timeseries.py +0 -0
  112. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/metrics/wrappers.py +0 -0
  113. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/pointcloud/__init__.py +0 -0
  114. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/pointcloud/clustering.py +0 -0
  115. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/pointcloud/pointcloud.py +0 -0
  116. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/pointcloud/projectors.py +0 -0
  117. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  118. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/py.typed +0 -0
  119. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/__init__.py +0 -0
  120. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/__init__.py +0 -0
  121. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  122. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  123. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  124. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  125. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  126. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  127. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  128. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  129. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  130. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/evaluation_summaries.py +0 -0
  131. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  132. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  133. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  134. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  135. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  136. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  137. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  138. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  139. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  140. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  141. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/span_evaluations.py +0 -0
  142. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  143. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  144. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/trace_evaluations.py +0 -0
  145. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/dataloaders/trace_row_ids.py +0 -0
  146. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/helpers/__init__.py +0 -0
  147. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  148. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  149. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  150. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  151. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  152. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  153. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  154. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/CreateSpanAnnotationsInput.py +0 -0
  155. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/CreateTraceAnnotationsInput.py +0 -0
  156. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  157. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  158. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  159. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  160. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  161. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  162. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  163. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  164. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  165. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  166. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  167. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/PatchAnnotationsInput.py +0 -0
  168. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  169. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  170. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  171. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  172. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  173. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/input_types/__init__.py +0 -0
  174. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/interceptor.py +0 -0
  175. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/mutations/__init__.py +0 -0
  176. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/mutations/auth.py +0 -0
  177. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  178. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  179. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  180. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  181. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  182. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  183. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/openapi/__init__.py +0 -0
  184. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/queries.py +0 -0
  185. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/routers/__init__.py +0 -0
  186. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/routers/utils.py +0 -0
  187. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/schema.py +0 -0
  188. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Annotation.py +0 -0
  189. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  190. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Cluster.py +0 -0
  191. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  192. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  193. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Dataset.py +0 -0
  194. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  195. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  196. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  197. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  198. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Dimension.py +0 -0
  199. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  200. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  201. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DimensionType.py +0 -0
  202. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  203. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  204. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  205. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  206. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  207. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Evaluation.py +0 -0
  208. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  209. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Event.py +0 -0
  210. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  211. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  212. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Experiment.py +0 -0
  213. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  214. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  215. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  216. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  217. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  218. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Functionality.py +0 -0
  219. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Inferences.py +0 -0
  220. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  221. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/MimeType.py +0 -0
  222. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Model.py +0 -0
  223. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/NumericRange.py +0 -0
  224. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  225. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  226. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Retrieval.py +0 -0
  227. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  228. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Segments.py +0 -0
  229. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/SortDir.py +0 -0
  230. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Span.py +0 -0
  231. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  232. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  233. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/Trace.py +0 -0
  234. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  235. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  236. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  237. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  238. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/__init__.py +0 -0
  239. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/node.py +0 -0
  240. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/types/pagination.py +0 -0
  241. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/api/utils.py +0 -0
  242. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/grpc_server.py +0 -0
  243. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/openapi/__init__.py +0 -0
  244. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/prometheus.py +0 -0
  245. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  246. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  247. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  248. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  249. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  250. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  251. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  252. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  253. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/favicon.ico +0 -0
  254. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/static/modernizr.js +0 -0
  255. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/telemetry.py +0 -0
  256. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/server/templates/__init__.py +0 -0
  257. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/services.py +0 -0
  258. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/session/__init__.py +0 -0
  259. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/session/data_extractor.py +0 -0
  260. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/session/evaluation.py +0 -0
  261. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/session/session.py +0 -0
  262. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/settings.py +0 -0
  263. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/__init__.py +0 -0
  264. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/attributes.py +0 -0
  265. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/dsl/README.md +0 -0
  266. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/dsl/__init__.py +0 -0
  267. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/dsl/filter.py +0 -0
  268. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/dsl/helpers.py +0 -0
  269. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/dsl/query.py +0 -0
  270. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/errors.py +0 -0
  271. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/evaluation_conventions.py +0 -0
  272. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/exporter.py +0 -0
  273. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/fixtures.py +0 -0
  274. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/langchain/__init__.py +0 -0
  275. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/langchain/instrumentor.py +0 -0
  276. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/llama_index/__init__.py +0 -0
  277. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/llama_index/callback.py +0 -0
  278. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/openai/__init__.py +0 -0
  279. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/openai/instrumentor.py +0 -0
  280. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/otel.py +0 -0
  281. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/projects.py +0 -0
  282. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/schemas.py +0 -0
  283. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/span_evaluations.py +0 -0
  284. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/span_json_decoder.py +0 -0
  285. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/span_json_encoder.py +0 -0
  286. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/trace_dataset.py +0 -0
  287. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/utils.py +0 -0
  288. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/v1/__init__.py +0 -0
  289. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  290. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  291. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/utilities/__init__.py +0 -0
  292. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/utilities/deprecation.py +0 -0
  293. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/utilities/error_handling.py +0 -0
  294. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/utilities/json.py +0 -0
  295. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/utilities/logging.py +0 -0
  296. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/utilities/project.py +0 -0
  297. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/src/phoenix/utilities/re.py +0 -0
  298. {arize_phoenix-4.12.0 → arize_phoenix-4.12.1rc1}/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.12.0
3
+ Version: 4.12.1rc1
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
@@ -22,6 +22,7 @@ Requires-Dist: aiosqlite
22
22
  Requires-Dist: alembic<2,>=1.3.0
23
23
  Requires-Dist: arize-phoenix-evals>=0.13.1
24
24
  Requires-Dist: cachetools
25
+ Requires-Dist: fastapi
25
26
  Requires-Dist: grpcio
26
27
  Requires-Dist: hdbscan>=0.8.33
27
28
  Requires-Dist: httpx
@@ -40,8 +41,8 @@ Requires-Dist: pandas>=1.0
40
41
  Requires-Dist: protobuf<6.0,>=3.20
41
42
  Requires-Dist: psutil
42
43
  Requires-Dist: pyarrow
44
+ Requires-Dist: pydantic!=2.0.*,<3,>=1.0
43
45
  Requires-Dist: python-multipart
44
- Requires-Dist: pyyaml
45
46
  Requires-Dist: scikit-learn
46
47
  Requires-Dist: scipy
47
48
  Requires-Dist: sqlalchemy[asyncio]<3,>=2.0.4
@@ -56,9 +57,9 @@ Requires-Dist: uvicorn
56
57
  Requires-Dist: wrapt
57
58
  Provides-Extra: container
58
59
  Requires-Dist: opentelemetry-exporter-otlp; extra == 'container'
60
+ Requires-Dist: opentelemetry-instrumentation-fastapi; extra == 'container'
59
61
  Requires-Dist: opentelemetry-instrumentation-grpc; extra == 'container'
60
62
  Requires-Dist: opentelemetry-instrumentation-sqlalchemy; extra == 'container'
61
- Requires-Dist: opentelemetry-instrumentation-starlette; extra == 'container'
62
63
  Requires-Dist: opentelemetry-proto>=1.12.0; extra == 'container'
63
64
  Requires-Dist: opentelemetry-sdk; extra == 'container'
64
65
  Requires-Dist: opentelemetry-semantic-conventions; extra == 'container'
@@ -59,7 +59,8 @@ dependencies = [
59
59
  "cachetools",
60
60
  "python-multipart", # see https://www.starlette.io/#dependencies
61
61
  "arize-phoenix-evals>=0.13.1",
62
- "pyyaml", # for OpenAPI
62
+ "fastapi",
63
+ "pydantic>=1.0,!=2.0.*,<3,", # exclude 2.0.* since it does not support the `json_encoders` configuration setting
63
64
  ]
64
65
  dynamic = ["version"]
65
66
 
@@ -109,7 +110,7 @@ container = [
109
110
  "opentelemetry-proto>=1.12.0",
110
111
  "opentelemetry-exporter-otlp",
111
112
  "opentelemetry-semantic-conventions",
112
- "opentelemetry-instrumentation-starlette",
113
+ "opentelemetry-instrumentation-fastapi",
113
114
  "opentelemetry-instrumentation-sqlalchemy",
114
115
  "opentelemetry-instrumentation-grpc",
115
116
  "py-grpc-prometheus",
@@ -159,8 +160,10 @@ dependencies = [
159
160
  "protobuf==3.20", # version minimum (for tests)
160
161
  "responses",
161
162
  "tiktoken",
162
- "typing-extensions==4.5.0; python_version<'3.12'",
163
- "typing-extensions==4.6.0; python_version>='3.12'",
163
+ "typing-extensions==4.5.0; python_version=='3.8'",
164
+ "typing-extensions==4.6.0; python_version=='3.9'",
165
+ "pydantic==1.9.0; python_version<='3.9'", # minimum version of pydantic compatible with openai
166
+ "pydantic==2.8.2; python_version=='3.12'",
164
167
  "httpx", # For OpenAI testing
165
168
  "respx", # For OpenAI testing
166
169
  "nest-asyncio", # for executor testing
@@ -187,12 +190,15 @@ dependencies = [
187
190
  "opentelemetry-proto>=1.12.0",
188
191
  "opentelemetry-exporter-otlp",
189
192
  "opentelemetry-semantic-conventions",
190
- "opentelemetry-instrumentation-starlette",
193
+ "opentelemetry-instrumentation-fastapi",
191
194
  "opentelemetry-instrumentation-sqlalchemy",
192
195
  "opentelemetry-instrumentation-grpc",
193
196
  "py-grpc-prometheus",
194
197
  "strawberry-graphql[opentelemetry]==0.235.0", # need to pin version because we're monkey-patching
195
198
  "requests", # this is needed to type-check third-party packages
199
+ "pydantic==1.10.17; python_version=='3.8'", # lower minor versions of pydantic break strawberry mypy plugin
200
+ "pydantic==1.10.17; python_version=='3.9'", # lower minor versions of pydantic break strawberry mypy plugin
201
+ "pydantic==2.8.2; python_version=='3.12'",
196
202
  ]
197
203
 
198
204
  [[tool.hatch.envs.type.matrix]]
@@ -283,11 +289,11 @@ dependencies = [
283
289
 
284
290
  [tool.hatch.envs.publish.scripts]
285
291
  testpypi = [
286
- "check-wheel-contents dist/",
292
+ #"check-wheel-contents dist/",
287
293
  "twine upload --verbose --repository testpypi dist/*",
288
294
  ]
289
295
  pypi = [
290
- "check-wheel-contents dist/",
296
+ #"check-wheel-contents dist/",
291
297
  "twine upload --verbose dist/*",
292
298
  ]
293
299
 
@@ -307,11 +313,12 @@ build = 'strawberry export-schema phoenix.server.api.schema:schema > app/schema.
307
313
 
308
314
  [tool.hatch.envs.openapi]
309
315
  dependencies = [
310
- "pyyaml",
316
+ "pydantic==2.8.2",
317
+ "fastapi==0.111.0",
311
318
  ]
312
319
 
313
320
  [tool.hatch.envs.openapi.scripts]
314
- build = 'python -m phoenix.server.api.openapi.main > schemas/openapi.yaml'
321
+ build = "python -m phoenix.server.api.openapi.main > schemas/openapi.json"
315
322
 
316
323
  [tool.hatch.envs.proto]
317
324
  detached = true
@@ -376,6 +383,7 @@ module = [
376
383
  "sqlean",
377
384
  "grpc.*",
378
385
  "py_grpc_prometheus.*",
386
+ "orjson", # suppress fastapi internal type errors
379
387
  ]
380
388
  ignore_missing_imports = true
381
389
 
@@ -1,12 +1,10 @@
1
1
  from dataclasses import dataclass
2
2
  from datetime import datetime
3
3
  from pathlib import Path
4
- from typing import AsyncContextManager, Callable, Optional, Union
4
+ from typing import AsyncContextManager, Callable, Optional
5
5
 
6
6
  from sqlalchemy.ext.asyncio import AsyncSession
7
- from starlette.requests import Request
8
- from starlette.responses import Response
9
- from starlette.websockets import WebSocket
7
+ from strawberry.fastapi import BaseContext
10
8
  from typing_extensions import TypeAlias
11
9
 
12
10
  from phoenix.core.model_schema import Model
@@ -67,9 +65,7 @@ ProjectRowId: TypeAlias = int
67
65
 
68
66
 
69
67
  @dataclass
70
- class Context:
71
- request: Union[Request, WebSocket]
72
- response: Optional[Response]
68
+ class Context(BaseContext):
73
69
  db: Callable[[], AsyncContextManager[AsyncSession]]
74
70
  data_loaders: DataLoaders
75
71
  cache_for_dataloaders: Optional[CacheForDataLoaders]
@@ -0,0 +1,22 @@
1
+ import json
2
+ from argparse import ArgumentParser
3
+ from typing import Optional, Tuple
4
+
5
+ from .schema import get_openapi_schema
6
+
7
+ if __name__ == "__main__":
8
+ parser = ArgumentParser()
9
+ parser.add_argument(
10
+ "--compress",
11
+ action="store_true",
12
+ help="Whether to output a compressed version of the OpenAPI schema",
13
+ )
14
+ args = parser.parse_args()
15
+
16
+ indent: Optional[int] = None
17
+ separator: Optional[Tuple[str, str]] = None
18
+ if args.compress:
19
+ separator = (",", ":")
20
+ else:
21
+ indent = 2
22
+ print(json.dumps(get_openapi_schema(), indent=indent, separators=separator))
@@ -0,0 +1,16 @@
1
+ from typing import Any, Dict
2
+
3
+ from fastapi.openapi.utils import get_openapi
4
+
5
+ from phoenix.server.api.routers.v1 import REST_API_VERSION
6
+ from phoenix.server.api.routers.v1 import router as v1_router
7
+
8
+
9
+ def get_openapi_schema() -> Dict[str, Any]:
10
+ return get_openapi(
11
+ title="Arize-Phoenix REST API",
12
+ version=REST_API_VERSION,
13
+ openapi_version="3.1.0",
14
+ description="Schema for Arize-Phoenix REST API",
15
+ routes=v1_router.routes,
16
+ )
@@ -0,0 +1,42 @@
1
+ from fastapi import APIRouter, Depends, HTTPException, Request
2
+ from starlette.status import HTTP_403_FORBIDDEN
3
+
4
+ from .datasets import router as datasets_router
5
+ from .evaluations import router as evaluations_router
6
+ from .experiment_evaluations import router as experiment_evaluations_router
7
+ from .experiment_runs import router as experiment_runs_router
8
+ from .experiments import router as experiments_router
9
+ from .spans import router as spans_router
10
+ from .traces import router as traces_router
11
+ from .utils import add_errors_to_responses
12
+
13
+ REST_API_VERSION = "1.0"
14
+
15
+
16
+ async def prevent_access_in_read_only_mode(request: Request) -> None:
17
+ """
18
+ Prevents access to the REST API in read-only mode.
19
+ """
20
+ if request.app.state.read_only:
21
+ raise HTTPException(
22
+ detail="The Phoenix REST API is disabled in read-only mode.",
23
+ status_code=HTTP_403_FORBIDDEN,
24
+ )
25
+
26
+
27
+ router = APIRouter(
28
+ prefix="/v1",
29
+ dependencies=[Depends(prevent_access_in_read_only_mode)],
30
+ responses=add_errors_to_responses(
31
+ [
32
+ HTTP_403_FORBIDDEN # adds a 403 response to each route in the generated OpenAPI schema
33
+ ]
34
+ ),
35
+ )
36
+ router.include_router(datasets_router)
37
+ router.include_router(experiments_router)
38
+ router.include_router(experiment_runs_router)
39
+ router.include_router(experiment_evaluations_router)
40
+ router.include_router(traces_router)
41
+ router.include_router(spans_router)
42
+ router.include_router(evaluations_router)
@@ -0,0 +1,157 @@
1
+ from datetime import datetime
2
+ from typing import Any, Dict, List, Optional
3
+
4
+ from fastapi import APIRouter, HTTPException, Path, Query
5
+ from sqlalchemy import and_, func, select
6
+ from starlette.requests import Request
7
+ from starlette.status import HTTP_404_NOT_FOUND
8
+ from strawberry.relay import GlobalID
9
+
10
+ from phoenix.db.models import (
11
+ Dataset as ORMDataset,
12
+ )
13
+ from phoenix.db.models import (
14
+ DatasetExample as ORMDatasetExample,
15
+ )
16
+ from phoenix.db.models import (
17
+ DatasetExampleRevision as ORMDatasetExampleRevision,
18
+ )
19
+ from phoenix.db.models import (
20
+ DatasetVersion as ORMDatasetVersion,
21
+ )
22
+
23
+ from .pydantic_compat import V1RoutesBaseModel
24
+ from .utils import ResponseBody, add_errors_to_responses
25
+
26
+ router = APIRouter(tags=["datasets"])
27
+
28
+
29
+ class DatasetExample(V1RoutesBaseModel):
30
+ id: str
31
+ input: Dict[str, Any]
32
+ output: Dict[str, Any]
33
+ metadata: Dict[str, Any]
34
+ updated_at: datetime
35
+
36
+
37
+ class ListDatasetExamplesData(V1RoutesBaseModel):
38
+ dataset_id: str
39
+ version_id: str
40
+ examples: List[DatasetExample]
41
+
42
+
43
+ class ListDatasetExamplesResponseBody(ResponseBody[ListDatasetExamplesData]):
44
+ pass
45
+
46
+
47
+ @router.get(
48
+ "/datasets/{id}/examples",
49
+ operation_id="getDatasetExamples",
50
+ summary="Get examples from a dataset",
51
+ responses=add_errors_to_responses([HTTP_404_NOT_FOUND]),
52
+ )
53
+ async def get_dataset_examples(
54
+ request: Request,
55
+ id: str = Path(description="The ID of the dataset"),
56
+ version_id: Optional[str] = Query(
57
+ default=None,
58
+ description=(
59
+ "The ID of the dataset version " "(if omitted, returns data from the latest version)"
60
+ ),
61
+ ),
62
+ ) -> ListDatasetExamplesResponseBody:
63
+ dataset_gid = GlobalID.from_id(id)
64
+ version_gid = GlobalID.from_id(version_id) if version_id else None
65
+
66
+ if (dataset_type := dataset_gid.type_name) != "Dataset":
67
+ raise HTTPException(
68
+ detail=f"ID {dataset_gid} refers to a {dataset_type}", status_code=HTTP_404_NOT_FOUND
69
+ )
70
+
71
+ if version_gid and (version_type := version_gid.type_name) != "DatasetVersion":
72
+ raise HTTPException(
73
+ detail=f"ID {version_gid} refers to a {version_type}", status_code=HTTP_404_NOT_FOUND
74
+ )
75
+
76
+ async with request.app.state.db() as session:
77
+ if (
78
+ resolved_dataset_id := await session.scalar(
79
+ select(ORMDataset.id).where(ORMDataset.id == int(dataset_gid.node_id))
80
+ )
81
+ ) is None:
82
+ raise HTTPException(
83
+ detail=f"No dataset with id {dataset_gid} can be found.",
84
+ status_code=HTTP_404_NOT_FOUND,
85
+ )
86
+
87
+ # Subquery to find the maximum created_at for each dataset_example_id
88
+ # timestamp tiebreaks are resolved by the largest id
89
+ partial_subquery = select(
90
+ func.max(ORMDatasetExampleRevision.id).label("max_id"),
91
+ ).group_by(ORMDatasetExampleRevision.dataset_example_id)
92
+
93
+ if version_gid:
94
+ if (
95
+ resolved_version_id := await session.scalar(
96
+ select(ORMDatasetVersion.id).where(
97
+ and_(
98
+ ORMDatasetVersion.dataset_id == resolved_dataset_id,
99
+ ORMDatasetVersion.id == int(version_gid.node_id),
100
+ )
101
+ )
102
+ )
103
+ ) is None:
104
+ raise HTTPException(
105
+ detail=f"No dataset version with id {version_id} can be found.",
106
+ status_code=HTTP_404_NOT_FOUND,
107
+ )
108
+ # if a version_id is provided, filter the subquery to only include revisions from that
109
+ partial_subquery = partial_subquery.filter(
110
+ ORMDatasetExampleRevision.dataset_version_id <= resolved_version_id
111
+ )
112
+ else:
113
+ if (
114
+ resolved_version_id := await session.scalar(
115
+ select(func.max(ORMDatasetVersion.id)).where(
116
+ ORMDatasetVersion.dataset_id == resolved_dataset_id
117
+ )
118
+ )
119
+ ) is None:
120
+ raise HTTPException(
121
+ detail="Dataset has no versions.",
122
+ status_code=HTTP_404_NOT_FOUND,
123
+ )
124
+
125
+ subquery = partial_subquery.subquery()
126
+ # Query for the most recent example revisions that are not deleted
127
+ query = (
128
+ select(ORMDatasetExample, ORMDatasetExampleRevision)
129
+ .join(
130
+ ORMDatasetExampleRevision,
131
+ ORMDatasetExample.id == ORMDatasetExampleRevision.dataset_example_id,
132
+ )
133
+ .join(
134
+ subquery,
135
+ (subquery.c.max_id == ORMDatasetExampleRevision.id),
136
+ )
137
+ .filter(ORMDatasetExample.dataset_id == resolved_dataset_id)
138
+ .filter(ORMDatasetExampleRevision.revision_kind != "DELETE")
139
+ .order_by(ORMDatasetExample.id.asc())
140
+ )
141
+ examples = [
142
+ DatasetExample(
143
+ id=str(GlobalID("DatasetExample", str(example.id))),
144
+ input=revision.input,
145
+ output=revision.output,
146
+ metadata=revision.metadata_,
147
+ updated_at=revision.created_at,
148
+ )
149
+ async for example, revision in await session.stream(query)
150
+ ]
151
+ return ListDatasetExamplesResponseBody(
152
+ data=ListDatasetExamplesData(
153
+ dataset_id=str(GlobalID("Dataset", str(resolved_dataset_id))),
154
+ version_id=str(GlobalID("DatasetVersion", str(resolved_version_id))),
155
+ examples=examples,
156
+ )
157
+ )