arize-phoenix 7.12.2__tar.gz → 8.0.0__tar.gz

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

Potentially problematic release.


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

Files changed (381) hide show
  1. arize_phoenix-8.0.0/.gitignore +70 -0
  2. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/PKG-INFO +31 -28
  3. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/README.md +25 -25
  4. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/pyproject.toml +5 -2
  5. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/config.py +61 -36
  6. arize_phoenix-8.0.0/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +197 -0
  7. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/models.py +307 -0
  8. arize_phoenix-8.0.0/src/phoenix/db/types/identifier.py +7 -0
  9. arize_phoenix-8.0.0/src/phoenix/db/types/model_provider.py +8 -0
  10. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/context.py +2 -0
  11. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/__init__.py +2 -0
  12. arize_phoenix-8.0.0/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +35 -0
  13. arize_phoenix-8.0.0/src/phoenix/server/api/helpers/jsonschema.py +135 -0
  14. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/helpers/playground_clients.py +23 -27
  15. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/helpers/playground_spans.py +9 -0
  16. arize_phoenix-8.0.0/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +87 -0
  17. arize_phoenix-8.0.0/src/phoenix/server/api/helpers/prompts/conversions/openai.py +78 -0
  18. arize_phoenix-8.0.0/src/phoenix/server/api/helpers/prompts/models.py +575 -0
  19. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +9 -4
  20. arize_phoenix-8.0.0/src/phoenix/server/api/input_types/PromptTemplateOptions.py +10 -0
  21. arize_phoenix-8.0.0/src/phoenix/server/api/input_types/PromptVersionInput.py +133 -0
  22. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/__init__.py +6 -0
  23. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/chat_mutations.py +18 -16
  24. arize_phoenix-8.0.0/src/phoenix/server/api/mutations/prompt_label_mutations.py +191 -0
  25. arize_phoenix-8.0.0/src/phoenix/server/api/mutations/prompt_mutations.py +312 -0
  26. arize_phoenix-8.0.0/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +148 -0
  27. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/user_mutations.py +7 -6
  28. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/openapi/schema.py +1 -0
  29. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/queries.py +84 -31
  30. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/oauth2.py +3 -2
  31. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/v1/__init__.py +2 -0
  32. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/v1/datasets.py +1 -1
  33. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +1 -1
  34. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +1 -1
  35. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/v1/experiments.py +1 -1
  36. arize_phoenix-8.0.0/src/phoenix/server/api/routers/v1/models.py +45 -0
  37. arize_phoenix-8.0.0/src/phoenix/server/api/routers/v1/prompts.py +412 -0
  38. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/v1/spans.py +1 -1
  39. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/v1/traces.py +1 -1
  40. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/v1/utils.py +1 -1
  41. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/subscriptions.py +21 -24
  42. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/GenerativeProvider.py +6 -6
  43. arize_phoenix-8.0.0/src/phoenix/server/api/types/Identifier.py +15 -0
  44. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Project.py +5 -7
  45. arize_phoenix-8.0.0/src/phoenix/server/api/types/Prompt.py +134 -0
  46. arize_phoenix-8.0.0/src/phoenix/server/api/types/PromptLabel.py +41 -0
  47. arize_phoenix-8.0.0/src/phoenix/server/api/types/PromptVersion.py +148 -0
  48. arize_phoenix-8.0.0/src/phoenix/server/api/types/PromptVersionTag.py +27 -0
  49. arize_phoenix-8.0.0/src/phoenix/server/api/types/PromptVersionTemplate.py +148 -0
  50. arize_phoenix-8.0.0/src/phoenix/server/api/types/ResponseFormat.py +9 -0
  51. arize_phoenix-8.0.0/src/phoenix/server/api/types/ToolDefinition.py +9 -0
  52. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/app.py +3 -0
  53. arize_phoenix-8.0.0/src/phoenix/server/static/.vite/manifest.json +87 -0
  54. arize_phoenix-8.0.0/src/phoenix/server/static/assets/components-B-qgPyHv.js +2699 -0
  55. arize_phoenix-8.0.0/src/phoenix/server/static/assets/index-D4KO1IcF.js +1125 -0
  56. arize_phoenix-8.0.0/src/phoenix/server/static/assets/pages-DdcuL3Rh.js +5634 -0
  57. arize_phoenix-8.0.0/src/phoenix/server/static/assets/vendor-DQp7CrDA.js +894 -0
  58. arize_phoenix-8.0.0/src/phoenix/server/static/assets/vendor-arizeai-C1nEIEQq.js +657 -0
  59. arize_phoenix-8.0.0/src/phoenix/server/static/assets/vendor-codemirror-BZXYUIkP.js +24 -0
  60. arize_phoenix-8.0.0/src/phoenix/server/static/assets/vendor-recharts-BUFpwCVD.js +59 -0
  61. arize_phoenix-7.12.2/src/phoenix/server/static/assets/vendor-shiki-Cl9QBraO.js → arize_phoenix-8.0.0/src/phoenix/server/static/assets/vendor-shiki-C8L-c9jT.js +2 -2
  62. arize_phoenix-7.12.2/src/phoenix/server/static/assets/vendor-three-DwGkEfCM.js → arize_phoenix-8.0.0/src/phoenix/server/static/assets/vendor-three-C-AGeJYv.js +1 -1
  63. arize_phoenix-8.0.0/src/phoenix/session/__init__.py +0 -0
  64. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/session/client.py +25 -21
  65. arize_phoenix-8.0.0/src/phoenix/utilities/__init__.py +0 -0
  66. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/utilities/client.py +6 -0
  67. arize_phoenix-8.0.0/src/phoenix/utilities/span_store.py +0 -0
  68. arize_phoenix-8.0.0/src/phoenix/version.py +1 -0
  69. arize_phoenix-7.12.2/.gitignore +0 -49
  70. arize_phoenix-7.12.2/src/phoenix/server/api/input_types/TemplateOptions.py +0 -10
  71. arize_phoenix-7.12.2/src/phoenix/server/api/routers/v1/pydantic_compat.py +0 -78
  72. arize_phoenix-7.12.2/src/phoenix/server/api/types/TemplateLanguage.py +0 -10
  73. arize_phoenix-7.12.2/src/phoenix/server/static/.vite/manifest.json +0 -87
  74. arize_phoenix-7.12.2/src/phoenix/server/static/assets/components-DckIzNmE.js +0 -2125
  75. arize_phoenix-7.12.2/src/phoenix/server/static/assets/index-Bf25Ogon.js +0 -113
  76. arize_phoenix-7.12.2/src/phoenix/server/static/assets/pages-DL7J9q9w.js +0 -4463
  77. arize_phoenix-7.12.2/src/phoenix/server/static/assets/vendor-DvC8cT4X.js +0 -894
  78. arize_phoenix-7.12.2/src/phoenix/server/static/assets/vendor-arizeai-Do1793cv.js +0 -662
  79. arize_phoenix-7.12.2/src/phoenix/server/static/assets/vendor-codemirror-BzwZPyJM.js +0 -24
  80. arize_phoenix-7.12.2/src/phoenix/server/static/assets/vendor-recharts-_Jb7JjhG.js +0 -59
  81. arize_phoenix-7.12.2/src/phoenix/version.py +0 -1
  82. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/IP_NOTICE +0 -0
  83. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/LICENSE +0 -0
  84. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/__init__.py +0 -0
  85. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/auth.py +0 -0
  86. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/core/__init__.py +0 -0
  87. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/core/embedding_dimension.py +0 -0
  88. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/core/model.py +0 -0
  89. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/core/model_schema.py +0 -0
  90. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  91. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/datetime_utils.py +0 -0
  92. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/README.md +0 -0
  93. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/__init__.py +0 -0
  94. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/alembic.ini +0 -0
  95. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/bulk_inserter.py +0 -0
  96. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/engines.py +0 -0
  97. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/enums.py +0 -0
  98. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/facilitator.py +0 -0
  99. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/helpers.py +0 -0
  100. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/__init__.py +0 -0
  101. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/constants.py +0 -0
  102. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/dataset.py +0 -0
  103. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  104. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  105. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/helpers.py +0 -0
  106. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/span.py +0 -0
  107. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  108. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  109. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/insertion/types.py +0 -0
  110. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrate.py +0 -0
  111. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/__init__.py +0 -0
  112. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  113. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  114. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/env.py +0 -0
  115. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  116. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  117. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  118. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  119. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  120. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  121. {arize_phoenix-7.12.2/src/phoenix/inferences → arize_phoenix-8.0.0/src/phoenix/db/types}/__init__.py +0 -0
  122. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/exceptions.py +0 -0
  123. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/__init__.py +0 -0
  124. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  125. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  126. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  127. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  128. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
  129. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/functions.py +0 -0
  130. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/tracing.py +0 -0
  131. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/types.py +0 -0
  132. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/experiments/utils.py +0 -0
  133. {arize_phoenix-7.12.2/src/phoenix/server → arize_phoenix-8.0.0/src/phoenix/inferences}/__init__.py +0 -0
  134. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/inferences/errors.py +0 -0
  135. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/inferences/fixtures.py +0 -0
  136. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/inferences/inferences.py +0 -0
  137. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/inferences/schema.py +0 -0
  138. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/inferences/validation.py +0 -0
  139. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/logging/__init__.py +0 -0
  140. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/logging/_config.py +0 -0
  141. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/logging/_filter.py +0 -0
  142. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/logging/_formatter.py +0 -0
  143. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/metrics/README.md +0 -0
  144. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/metrics/__init__.py +0 -0
  145. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/metrics/binning.py +0 -0
  146. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/metrics/metrics.py +0 -0
  147. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/metrics/mixins.py +0 -0
  148. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  149. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/metrics/timeseries.py +0 -0
  150. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/metrics/wrappers.py +0 -0
  151. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/pointcloud/__init__.py +0 -0
  152. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/pointcloud/clustering.py +0 -0
  153. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  154. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/pointcloud/projectors.py +0 -0
  155. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  156. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/py.typed +0 -0
  157. {arize_phoenix-7.12.2/src/phoenix/server/api → arize_phoenix-8.0.0/src/phoenix/server}/__init__.py +0 -0
  158. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/README.md +0 -0
  159. {arize_phoenix-7.12.2/src/phoenix/server/api/input_types → arize_phoenix-8.0.0/src/phoenix/server/api}/__init__.py +0 -0
  160. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/auth.py +0 -0
  161. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  162. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  163. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  164. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  165. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  166. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  167. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  168. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  169. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  170. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  171. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  172. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  173. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  174. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  175. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  176. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  177. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  178. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  179. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  180. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  181. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  182. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  183. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  184. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  185. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  186. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  187. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  188. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  189. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  190. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  191. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  192. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  193. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/exceptions.py +0 -0
  194. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  195. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  196. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  197. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  198. {arize_phoenix-7.12.2/src/phoenix/server/api/openapi → arize_phoenix-8.0.0/src/phoenix/server/api/helpers/prompts}/__init__.py +0 -0
  199. {arize_phoenix-7.12.2/src/phoenix/server/api/types → arize_phoenix-8.0.0/src/phoenix/server/api/helpers/prompts/conversions}/__init__.py +0 -0
  200. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  201. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  202. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  203. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  204. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  205. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  206. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  207. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  208. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  209. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  210. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  211. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  212. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  213. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  214. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  215. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  216. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  217. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  218. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  219. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  220. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  221. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  222. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  223. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  224. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  225. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  226. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  227. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  228. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  229. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  230. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  231. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  232. {arize_phoenix-7.12.2/src/phoenix/server/email → arize_phoenix-8.0.0/src/phoenix/server/api/input_types}/__init__.py +0 -0
  233. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/interceptor.py +0 -0
  234. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  235. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  236. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  237. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  238. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  239. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  240. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
  241. {arize_phoenix-7.12.2/src/phoenix/server/email/templates → arize_phoenix-8.0.0/src/phoenix/server/api/openapi}/__init__.py +0 -0
  242. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/openapi/main.py +0 -0
  243. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  244. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/auth.py +0 -0
  245. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  246. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/utils.py +0 -0
  247. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
  248. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/schema.py +0 -0
  249. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  250. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  251. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  252. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  253. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  254. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  255. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  256. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  257. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  258. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  259. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  260. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  261. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  262. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  263. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  264. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  265. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  266. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  267. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  268. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  269. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  270. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  271. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  272. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  273. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  274. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  275. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Event.py +0 -0
  276. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  277. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  278. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  279. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  280. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  281. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  282. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  283. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  284. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  285. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  286. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  287. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  288. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  289. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  290. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Model.py +0 -0
  291. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  292. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  293. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  294. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  295. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  296. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  297. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Segments.py +0 -0
  298. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  299. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Span.py +0 -0
  300. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  301. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  302. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  303. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  304. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  305. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/Trace.py +0 -0
  306. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  307. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  308. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/User.py +0 -0
  309. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  310. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  311. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  312. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  313. {arize_phoenix-7.12.2/src/phoenix/server/openapi → arize_phoenix-8.0.0/src/phoenix/server/api/types}/__init__.py +0 -0
  314. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/node.py +0 -0
  315. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/types/pagination.py +0 -0
  316. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/api/utils.py +0 -0
  317. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/bearer_auth.py +0 -0
  318. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/dml_event.py +0 -0
  319. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/dml_event_handler.py +0 -0
  320. {arize_phoenix-7.12.2/src/phoenix/server/templates → arize_phoenix-8.0.0/src/phoenix/server/email}/__init__.py +0 -0
  321. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/email/sender.py +0 -0
  322. {arize_phoenix-7.12.2/src/phoenix/session → arize_phoenix-8.0.0/src/phoenix/server/email/templates}/__init__.py +0 -0
  323. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  324. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/email/types.py +0 -0
  325. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/grpc_server.py +0 -0
  326. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/jwt_store.py +0 -0
  327. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/main.py +0 -0
  328. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/oauth2.py +0 -0
  329. {arize_phoenix-7.12.2/src/phoenix/utilities → arize_phoenix-8.0.0/src/phoenix/server/openapi}/__init__.py +0 -0
  330. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/prometheus.py +0 -0
  331. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/rate_limiters.py +0 -0
  332. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  333. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  334. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  335. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  336. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  337. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  338. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  339. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  340. /arize_phoenix-7.12.2/src/phoenix/server/static/assets/vendor-DxkFTwjz.css → /arize_phoenix-8.0.0/src/phoenix/server/static/assets/vendor-Cg6lcjUC.css +0 -0
  341. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/favicon.ico +0 -0
  342. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/static/modernizr.js +0 -0
  343. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/telemetry.py +0 -0
  344. /arize_phoenix-7.12.2/src/phoenix/utilities/span_store.py → /arize_phoenix-8.0.0/src/phoenix/server/templates/__init__.py +0 -0
  345. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/templates/index.html +0 -0
  346. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/thread_server.py +0 -0
  347. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/server/types.py +0 -0
  348. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/services.py +0 -0
  349. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/session/data_extractor.py +0 -0
  350. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/session/evaluation.py +0 -0
  351. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/session/session.py +0 -0
  352. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/settings.py +0 -0
  353. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/__init__.py +0 -0
  354. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/attributes.py +0 -0
  355. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/dsl/README.md +0 -0
  356. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  357. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/dsl/filter.py +0 -0
  358. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  359. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/dsl/query.py +0 -0
  360. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/errors.py +0 -0
  361. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  362. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/exporter.py +0 -0
  363. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/fixtures.py +0 -0
  364. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/otel.py +0 -0
  365. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/projects.py +0 -0
  366. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/schemas.py +0 -0
  367. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/span_evaluations.py +0 -0
  368. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  369. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  370. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/trace_dataset.py +0 -0
  371. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/utils.py +0 -0
  372. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/v1/__init__.py +0 -0
  373. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  374. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  375. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/utilities/deprecation.py +0 -0
  376. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/utilities/error_handling.py +0 -0
  377. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/utilities/json.py +0 -0
  378. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/utilities/logging.py +0 -0
  379. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/utilities/project.py +0 -0
  380. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/utilities/re.py +0 -0
  381. {arize_phoenix-7.12.2 → arize_phoenix-8.0.0}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -0,0 +1,70 @@
1
+ # Generated dirs
2
+ .vscode
3
+ .idea
4
+ .coverage
5
+ node_modules
6
+ dist
7
+ sdist
8
+ *__pycache__*
9
+ **/.pytest_cache
10
+ **/.ipynb_checkpoints/
11
+ **/.DS_Store
12
+
13
+ # Server static files
14
+ /src/phoenix/server/static/*
15
+
16
+ # Data files
17
+ *.csv
18
+ !tests/**/fixtures/*.csv
19
+ *.hdf
20
+ *.hdf5
21
+
22
+ # Testing
23
+ coverage.xml
24
+ .tox
25
+
26
+ # devtools
27
+ pyrightconfig.json
28
+ !/packages/phoenix-client/src/phoenix/client/helpers/sdk/pyrightconfig.json
29
+ !/packages/phoenix-client/tests/canary/sdk/pyrightconfig.json
30
+ !/tests/integration/pyrightconfig.json
31
+
32
+ # Demo data
33
+ tutorials/internal/demo_llama_index/*.json
34
+ examples/agent_framework_comparison/utils/saved_traces/*.parquet
35
+ .env
36
+
37
+ # python environments
38
+ .conda
39
+ .venv
40
+
41
+ # Deno Notebook Environment
42
+ js/examples/notebooks/**/deno.lock
43
+
44
+ # These can be generated by code refactoring via IntelliJ,
45
+ # but they should be excluded from their Python packages, as
46
+ # they would clobber the same files in phoenix when they are
47
+ # installed as submodules.
48
+ /packages/__init__.py
49
+ /packages/phoenix-client/__init__.py
50
+ /packages/phoenix-client/src/__init__.py
51
+ /packages/phoenix-client/src/phoenix/__init__.py
52
+ /packages/phoenix-evals/__init__.py
53
+ /packages/phoenix-evals/src/__init__.py
54
+ /packages/phoenix-evals/src/phoenix/__init__.py
55
+ /packages/phoenix-otel/__init__.py
56
+ /packages/phoenix-otel/src/__init__.py
57
+ /packages/phoenix-otel/src/phoenix/__init__.py
58
+
59
+ # Symbolic links
60
+ # Note that this can affect hatch build for those packages. That's why
61
+ # we need to un-ignore it if it's an actual folder (i.e. with the trailing /).
62
+ /src/phoenix/client
63
+ !src/phoenix/client/
64
+ /src/phoenix/evals
65
+ !src/phoenix/evals/
66
+ /src/phoenix/otel
67
+ !src/phoenix/otel/
68
+
69
+ # Caches
70
+ .pnpm-store
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 7.12.2
3
+ Version: 8.0.0
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://docs.arize.com/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -20,6 +20,7 @@ Requires-Python: <3.14,>=3.9
20
20
  Requires-Dist: aioitertools
21
21
  Requires-Dist: aiosqlite
22
22
  Requires-Dist: alembic<2,>=1.3.0
23
+ Requires-Dist: arize-phoenix-client
23
24
  Requires-Dist: arize-phoenix-evals>=0.13.1
24
25
  Requires-Dist: arize-phoenix-otel>=0.5.1
25
26
  Requires-Dist: authlib
@@ -29,6 +30,7 @@ Requires-Dist: grpc-interceptor
29
30
  Requires-Dist: grpcio
30
31
  Requires-Dist: httpx
31
32
  Requires-Dist: jinja2
33
+ Requires-Dist: jsonschema<=4.23.0,>=4.0.0
32
34
  Requires-Dist: numpy!=2.0.0
33
35
  Requires-Dist: openinference-instrumentation>=0.1.12
34
36
  Requires-Dist: openinference-semantic-conventions>=0.1.12
@@ -40,7 +42,7 @@ Requires-Dist: pandas>=1.0
40
42
  Requires-Dist: protobuf<6.0,>=3.20.2
41
43
  Requires-Dist: psutil
42
44
  Requires-Dist: pyarrow
43
- Requires-Dist: pydantic!=2.0.*,<3,>=1.0
45
+ Requires-Dist: pydantic>=2.1.0
44
46
  Requires-Dist: python-multipart
45
47
  Requires-Dist: scikit-learn
46
48
  Requires-Dist: scipy
@@ -83,7 +85,7 @@ Requires-Dist: grpc-interceptor[testing]; extra == 'dev'
83
85
  Requires-Dist: hatch; extra == 'dev'
84
86
  Requires-Dist: jupyter; extra == 'dev'
85
87
  Requires-Dist: langchain>=0.0.334; extra == 'dev'
86
- Requires-Dist: litellm>=1.0.3; extra == 'dev'
88
+ Requires-Dist: litellm<1.57.5,>=1.0.3; extra == 'dev'
87
89
  Requires-Dist: llama-index>=0.10.3; extra == 'dev'
88
90
  Requires-Dist: mypy==1.12.1; extra == 'dev'
89
91
  Requires-Dist: nbqa; extra == 'dev'
@@ -103,6 +105,7 @@ Requires-Dist: strawberry-graphql[debug-server,opentelemetry]==0.253.1; extra ==
103
105
  Requires-Dist: tabulate; extra == 'dev'
104
106
  Requires-Dist: tox-uv==1.11.3; extra == 'dev'
105
107
  Requires-Dist: tox==4.18.1; extra == 'dev'
108
+ Requires-Dist: types-jsonschema; extra == 'dev'
106
109
  Requires-Dist: types-tabulate; extra == 'dev'
107
110
  Requires-Dist: uv==0.4.8; extra == 'dev'
108
111
  Requires-Dist: uvloop; (platform_system != 'Windows') and extra == 'dev'
@@ -179,30 +182,30 @@ Phoenix container images are available via [Docker Hub](https://hub.docker.com/r
179
182
 
180
183
  ## Features
181
184
 
182
- | Key Features | Availability |
183
- | ---------------------------------------------------------------------------------------------------------------- | -------------- |
184
- | [Tracing](https://docs.arize.com/phoenix/tracing/concepts-tracing/what-are-traces) | ✅ |
185
- | [Evaluation](https://docs.arize.com/phoenix/evaluation/llm-evals) | ✅ |
186
- | [Retrieval (RAG) Analysis](https://docs.arize.com/phoenix/tracing/use-cases-tracing/rag-evaluation) | ✅ |
187
- | [Datasets](https://docs.arize.com/phoenix/datasets-and-experiments/overview-datasets) | ✅ |
188
- | [Fine-Tuning Export](https://docs.arize.com/phoenix/datasets-and-experiments/how-to-datasets/exporting-datasets) | ✅ |
189
- | [Annotations](https://docs.arize.com/phoenix/tracing/concepts-tracing/how-to-annotate-traces) | ✅ |
190
- | [Human Feedback](https://docs.arize.com/phoenix/tracing/how-to-tracing/capture-feedback) | ✅ |
191
- | [Experiments](https://docs.arize.com/phoenix/datasets-and-experiments/how-to-experiments/run-experiments) | ✅ |
192
- | [Embeddings Analysis](https://docs.arize.com/phoenix/inferences/phoenix-inferences) | ✅ |
193
- | [Data Export](https://docs.arize.com/phoenix/tracing/how-to-tracing/extract-data-from-spans) | ✅ |
194
- | REST API | ✅ |
195
- | GraphQL API | ✅ |
196
- | Data Retention | Customizable |
197
- | [Authentication](https://docs.arize.com/phoenix/deployment/authentication) | ✅ |
198
- | [Social Login](https://docs.arize.com/phoenix/deployment/authentication#configuring-oauth2-identity-providers) | ✅ |
199
- | [RBAC](https://docs.arize.com/phoenix/deployment/authentication#permissions) | ✅ |
200
- | Projects | ✅ |
201
- | [Self-Hosting](https://docs.arize.com/phoenix/deployment) | ✅ |
202
- | Jupyter Notebooks | ✅ |
203
- | [Prompt Playground](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts) | ✅ |
204
- | [Sessions](https://docs.arize.com/phoenix/tracing/how-to-tracing/setup-sessions) | ✅ |
205
- | Prompt Management | Coming soon ⏱️ |
185
+ | Key Features | Availability |
186
+ | ---------------------------------------------------------------------------------------------------------------- | ------------ |
187
+ | [Tracing](https://docs.arize.com/phoenix/tracing/concepts-tracing/what-are-traces) | ✅ |
188
+ | [Evaluation](https://docs.arize.com/phoenix/evaluation/llm-evals) | ✅ |
189
+ | [Retrieval (RAG) Analysis](https://docs.arize.com/phoenix/tracing/use-cases-tracing/rag-evaluation) | ✅ |
190
+ | [Datasets](https://docs.arize.com/phoenix/datasets-and-experiments/overview-datasets) | ✅ |
191
+ | [Fine-Tuning Export](https://docs.arize.com/phoenix/datasets-and-experiments/how-to-datasets/exporting-datasets) | ✅ |
192
+ | [Annotations](https://docs.arize.com/phoenix/tracing/concepts-tracing/how-to-annotate-traces) | ✅ |
193
+ | [Human Feedback](https://docs.arize.com/phoenix/tracing/how-to-tracing/capture-feedback) | ✅ |
194
+ | [Experiments](https://docs.arize.com/phoenix/datasets-and-experiments/how-to-experiments/run-experiments) | ✅ |
195
+ | [Embeddings Analysis](https://docs.arize.com/phoenix/inferences/phoenix-inferences) | ✅ |
196
+ | [Data Export](https://docs.arize.com/phoenix/tracing/how-to-tracing/extract-data-from-spans) | ✅ |
197
+ | REST API | ✅ |
198
+ | GraphQL API | ✅ |
199
+ | Data Retention | Customizable |
200
+ | [Authentication](https://docs.arize.com/phoenix/deployment/authentication) | ✅ |
201
+ | [Social Login](https://docs.arize.com/phoenix/deployment/authentication#configuring-oauth2-identity-providers) | ✅ |
202
+ | [RBAC](https://docs.arize.com/phoenix/deployment/authentication#permissions) | ✅ |
203
+ | Projects | ✅ |
204
+ | [Self-Hosting](https://docs.arize.com/phoenix/deployment) | ✅ |
205
+ | Jupyter Notebooks | ✅ |
206
+ | [Prompt Playground](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts) | ✅ |
207
+ | [Sessions](https://docs.arize.com/phoenix/tracing/how-to-tracing/setup-sessions) | ✅ |
208
+ | Prompt Management | |
206
209
 
207
210
  ## Tracing Integrations
208
211
 
@@ -257,6 +260,6 @@ See the [migration guide](./MIGRATION.md) for a list of breaking changes.
257
260
 
258
261
  Copyright 2024 Arize AI, Inc. All Rights Reserved.
259
262
 
260
- Portions of this code are patent protected by one or more U.S. Patents. See [IP_NOTICE](https://github.com/Arize-ai/phoenix/blob/main/IP_NOTICE).
263
+ Portions of this code are patent protected by one or more U.S. Patents. See the [IP_NOTICE](https://github.com/Arize-ai/phoenix/blob/main/IP_NOTICE).
261
264
 
262
265
  This software is licensed under the terms of the Elastic License 2.0 (ELv2). See [LICENSE](https://github.com/Arize-ai/phoenix/blob/main/LICENSE).
@@ -53,30 +53,30 @@ Phoenix container images are available via [Docker Hub](https://hub.docker.com/r
53
53
 
54
54
  ## Features
55
55
 
56
- | Key Features | Availability |
57
- | ---------------------------------------------------------------------------------------------------------------- | -------------- |
58
- | [Tracing](https://docs.arize.com/phoenix/tracing/concepts-tracing/what-are-traces) | ✅ |
59
- | [Evaluation](https://docs.arize.com/phoenix/evaluation/llm-evals) | ✅ |
60
- | [Retrieval (RAG) Analysis](https://docs.arize.com/phoenix/tracing/use-cases-tracing/rag-evaluation) | ✅ |
61
- | [Datasets](https://docs.arize.com/phoenix/datasets-and-experiments/overview-datasets) | ✅ |
62
- | [Fine-Tuning Export](https://docs.arize.com/phoenix/datasets-and-experiments/how-to-datasets/exporting-datasets) | ✅ |
63
- | [Annotations](https://docs.arize.com/phoenix/tracing/concepts-tracing/how-to-annotate-traces) | ✅ |
64
- | [Human Feedback](https://docs.arize.com/phoenix/tracing/how-to-tracing/capture-feedback) | ✅ |
65
- | [Experiments](https://docs.arize.com/phoenix/datasets-and-experiments/how-to-experiments/run-experiments) | ✅ |
66
- | [Embeddings Analysis](https://docs.arize.com/phoenix/inferences/phoenix-inferences) | ✅ |
67
- | [Data Export](https://docs.arize.com/phoenix/tracing/how-to-tracing/extract-data-from-spans) | ✅ |
68
- | REST API | ✅ |
69
- | GraphQL API | ✅ |
70
- | Data Retention | Customizable |
71
- | [Authentication](https://docs.arize.com/phoenix/deployment/authentication) | ✅ |
72
- | [Social Login](https://docs.arize.com/phoenix/deployment/authentication#configuring-oauth2-identity-providers) | ✅ |
73
- | [RBAC](https://docs.arize.com/phoenix/deployment/authentication#permissions) | ✅ |
74
- | Projects | ✅ |
75
- | [Self-Hosting](https://docs.arize.com/phoenix/deployment) | ✅ |
76
- | Jupyter Notebooks | ✅ |
77
- | [Prompt Playground](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts) | ✅ |
78
- | [Sessions](https://docs.arize.com/phoenix/tracing/how-to-tracing/setup-sessions) | ✅ |
79
- | Prompt Management | Coming soon ⏱️ |
56
+ | Key Features | Availability |
57
+ | ---------------------------------------------------------------------------------------------------------------- | ------------ |
58
+ | [Tracing](https://docs.arize.com/phoenix/tracing/concepts-tracing/what-are-traces) | ✅ |
59
+ | [Evaluation](https://docs.arize.com/phoenix/evaluation/llm-evals) | ✅ |
60
+ | [Retrieval (RAG) Analysis](https://docs.arize.com/phoenix/tracing/use-cases-tracing/rag-evaluation) | ✅ |
61
+ | [Datasets](https://docs.arize.com/phoenix/datasets-and-experiments/overview-datasets) | ✅ |
62
+ | [Fine-Tuning Export](https://docs.arize.com/phoenix/datasets-and-experiments/how-to-datasets/exporting-datasets) | ✅ |
63
+ | [Annotations](https://docs.arize.com/phoenix/tracing/concepts-tracing/how-to-annotate-traces) | ✅ |
64
+ | [Human Feedback](https://docs.arize.com/phoenix/tracing/how-to-tracing/capture-feedback) | ✅ |
65
+ | [Experiments](https://docs.arize.com/phoenix/datasets-and-experiments/how-to-experiments/run-experiments) | ✅ |
66
+ | [Embeddings Analysis](https://docs.arize.com/phoenix/inferences/phoenix-inferences) | ✅ |
67
+ | [Data Export](https://docs.arize.com/phoenix/tracing/how-to-tracing/extract-data-from-spans) | ✅ |
68
+ | REST API | ✅ |
69
+ | GraphQL API | ✅ |
70
+ | Data Retention | Customizable |
71
+ | [Authentication](https://docs.arize.com/phoenix/deployment/authentication) | ✅ |
72
+ | [Social Login](https://docs.arize.com/phoenix/deployment/authentication#configuring-oauth2-identity-providers) | ✅ |
73
+ | [RBAC](https://docs.arize.com/phoenix/deployment/authentication#permissions) | ✅ |
74
+ | Projects | ✅ |
75
+ | [Self-Hosting](https://docs.arize.com/phoenix/deployment) | ✅ |
76
+ | Jupyter Notebooks | ✅ |
77
+ | [Prompt Playground](https://docs.arize.com/phoenix/prompt-engineering/overview-prompts) | ✅ |
78
+ | [Sessions](https://docs.arize.com/phoenix/tracing/how-to-tracing/setup-sessions) | ✅ |
79
+ | Prompt Management | |
80
80
 
81
81
  ## Tracing Integrations
82
82
 
@@ -131,6 +131,6 @@ See the [migration guide](./MIGRATION.md) for a list of breaking changes.
131
131
 
132
132
  Copyright 2024 Arize AI, Inc. All Rights Reserved.
133
133
 
134
- Portions of this code are patent protected by one or more U.S. Patents. See [IP_NOTICE](https://github.com/Arize-ai/phoenix/blob/main/IP_NOTICE).
134
+ Portions of this code are patent protected by one or more U.S. Patents. See the [IP_NOTICE](https://github.com/Arize-ai/phoenix/blob/main/IP_NOTICE).
135
135
 
136
136
  This software is licensed under the terms of the Elastic License 2.0 (ELv2). See [LICENSE](https://github.com/Arize-ai/phoenix/blob/main/LICENSE).
@@ -55,9 +55,11 @@ dependencies = [
55
55
  "arize-phoenix-evals>=0.13.1",
56
56
  "arize-phoenix-otel>=0.5.1",
57
57
  "fastapi",
58
- "pydantic>=1.0,!=2.0.*,<3", # exclude 2.0.* since it does not support the `json_encoders` configuration setting
58
+ "pydantic>=2.1.0", # exclude 2.0.* since it does not support the `json_encoders` configuration setting
59
59
  "authlib",
60
60
  "websockets",
61
+ "jsonschema>=4.0.0,<=4.23.0", # the upper bound is to keep us off the bleeding edge in case there's a regression since this controls what gets written to the database
62
+ "arize-phoenix-client",
61
63
  ]
62
64
  dynamic = ["version"]
63
65
 
@@ -92,7 +94,7 @@ dev = [
92
94
  "arize[AutoEmbeddings, LLM_Evaluation]",
93
95
  "llama-index>=0.10.3",
94
96
  "langchain>=0.0.334",
95
- "litellm>=1.0.3",
97
+ "litellm>=1.0.3,<1.57.5", # windows compatibility broken on 1.57.5 (https://github.com/BerriAI/litellm/issues/7677)
96
98
  "google-cloud-aiplatform>=1.3",
97
99
  "anthropic",
98
100
  "prometheus_client",
@@ -101,6 +103,7 @@ dev = [
101
103
  "portpicker",
102
104
  "uvloop; platform_system != 'Windows'",
103
105
  "grpc-interceptor[testing]",
106
+ "types-jsonschema",
104
107
  ]
105
108
  embeddings = [
106
109
  "fast-hdbscan>=0.2.0",
@@ -162,8 +162,8 @@ ENV_PHOENIX_GRPC_INTERCEPTOR_PATHS = "PHOENIX_GRPC_INTERCEPTOR_PATHS"
162
162
 
163
163
  def server_instrumentation_is_enabled() -> bool:
164
164
  return bool(
165
- os.getenv(ENV_PHOENIX_SERVER_INSTRUMENTATION_OTLP_TRACE_COLLECTOR_HTTP_ENDPOINT)
166
- ) or bool(os.getenv(ENV_PHOENIX_SERVER_INSTRUMENTATION_OTLP_TRACE_COLLECTOR_GRPC_ENDPOINT))
165
+ getenv(ENV_PHOENIX_SERVER_INSTRUMENTATION_OTLP_TRACE_COLLECTOR_HTTP_ENDPOINT)
166
+ ) or bool(getenv(ENV_PHOENIX_SERVER_INSTRUMENTATION_OTLP_TRACE_COLLECTOR_GRPC_ENDPOINT))
167
167
 
168
168
 
169
169
  def _get_temp_path() -> Path:
@@ -192,7 +192,7 @@ def get_working_dir() -> Path:
192
192
  """
193
193
  Get the working directory for saving, loading, and exporting datasets.
194
194
  """
195
- working_dir_str = os.getenv(ENV_PHOENIX_WORKING_DIR)
195
+ working_dir_str = getenv(ENV_PHOENIX_WORKING_DIR)
196
196
  if working_dir_str is not None:
197
197
  return Path(working_dir_str)
198
198
  # Fall back to ~/.phoenix if PHOENIX_WORKING_DIR is not set
@@ -207,7 +207,7 @@ def _bool_val(env_var: str, default: Optional[bool] = None) -> Optional[bool]:
207
207
  """
208
208
  Parses a boolean environment variable, returning `default` if the variable is not set.
209
209
  """
210
- if (value := os.environ.get(env_var)) is None:
210
+ if (value := getenv(env_var)) is None:
211
211
  return default
212
212
  assert (lower := value.lower()) in (
213
213
  "true",
@@ -224,7 +224,7 @@ def _float_val(env_var: str, default: Optional[float] = None) -> Optional[float]
224
224
  """
225
225
  Parses a numeric environment variable, returning `default` if the variable is not set.
226
226
  """
227
- if (value := os.environ.get(env_var)) is None:
227
+ if (value := getenv(env_var)) is None:
228
228
  return default
229
229
  try:
230
230
  return float(value)
@@ -243,7 +243,7 @@ def _int_val(env_var: str, default: Optional[int] = None) -> Optional[int]:
243
243
  """
244
244
  Parses a numeric environment variable, returning `default` if the variable is not set.
245
245
  """
246
- if (value := os.environ.get(env_var)) is None:
246
+ if (value := getenv(env_var)) is None:
247
247
  return default
248
248
  try:
249
249
  return int(value)
@@ -254,6 +254,33 @@ def _int_val(env_var: str, default: Optional[int] = None) -> Optional[int]:
254
254
  )
255
255
 
256
256
 
257
+ @overload
258
+ def getenv(key: str) -> Optional[str]: ...
259
+ @overload
260
+ def getenv(key: str, default: str) -> str: ...
261
+ def getenv(key: str, default: Optional[str] = None) -> Optional[str]:
262
+ """
263
+ Retrieves the value of an environment variable.
264
+
265
+ Parameters
266
+ ----------
267
+ key : str
268
+ The name of the environment variable.
269
+ default : Optional[str], optional
270
+ The default value to return if the environment variable is not set, by default None.
271
+
272
+ Returns
273
+ -------
274
+ Optional[str]
275
+ The value of the environment variable, or `default` if the variable is not set.
276
+ Leading and trailing whitespaces are stripped from the value, assuming they were
277
+ inadvertently added.
278
+ """
279
+ if (value := os.getenv(key)) is None:
280
+ return default
281
+ return value.strip()
282
+
283
+
257
284
  def get_env_enable_auth() -> bool:
258
285
  """
259
286
  Gets the value of the PHOENIX_ENABLE_AUTH environment variable.
@@ -273,7 +300,7 @@ def get_env_phoenix_secret() -> Optional[str]:
273
300
  Gets the value of the PHOENIX_SECRET environment variable
274
301
  and performs validation.
275
302
  """
276
- phoenix_secret = os.environ.get(ENV_PHOENIX_SECRET)
303
+ phoenix_secret = getenv(ENV_PHOENIX_SECRET)
277
304
  if phoenix_secret is None:
278
305
  return None
279
306
  from phoenix.auth import REQUIREMENTS_FOR_PHOENIX_SECRET
@@ -285,7 +312,7 @@ def get_env_phoenix_secret() -> Optional[str]:
285
312
  def get_env_default_admin_initial_password() -> str:
286
313
  from phoenix.auth import DEFAULT_ADMIN_PASSWORD
287
314
 
288
- return os.environ.get(ENV_PHOENIX_DEFAULT_ADMIN_INITIAL_PASSWORD) or DEFAULT_ADMIN_PASSWORD
315
+ return getenv(ENV_PHOENIX_DEFAULT_ADMIN_INITIAL_PASSWORD) or DEFAULT_ADMIN_PASSWORD
289
316
 
290
317
 
291
318
  def get_env_phoenix_use_secure_cookies() -> bool:
@@ -293,7 +320,7 @@ def get_env_phoenix_use_secure_cookies() -> bool:
293
320
 
294
321
 
295
322
  def get_env_phoenix_api_key() -> Optional[str]:
296
- return os.environ.get(ENV_PHOENIX_API_KEY)
323
+ return getenv(ENV_PHOENIX_API_KEY)
297
324
 
298
325
 
299
326
  def get_env_auth_settings() -> tuple[bool, Optional[str]]:
@@ -354,7 +381,7 @@ def get_env_refresh_token_expiry() -> timedelta:
354
381
 
355
382
  def get_env_csrf_trusted_origins() -> list[str]:
356
383
  origins: list[str] = []
357
- if not (csrf_trusted_origins := os.getenv(ENV_PHOENIX_CSRF_TRUSTED_ORIGINS)):
384
+ if not (csrf_trusted_origins := getenv(ENV_PHOENIX_CSRF_TRUSTED_ORIGINS)):
358
385
  return origins
359
386
  for origin in csrf_trusted_origins.split(","):
360
387
  if not origin:
@@ -369,19 +396,19 @@ def get_env_csrf_trusted_origins() -> list[str]:
369
396
 
370
397
 
371
398
  def get_env_smtp_username() -> str:
372
- return os.getenv(ENV_PHOENIX_SMTP_USERNAME) or ""
399
+ return getenv(ENV_PHOENIX_SMTP_USERNAME, "")
373
400
 
374
401
 
375
402
  def get_env_smtp_password() -> str:
376
- return os.getenv(ENV_PHOENIX_SMTP_PASSWORD) or ""
403
+ return getenv(ENV_PHOENIX_SMTP_PASSWORD, "")
377
404
 
378
405
 
379
406
  def get_env_smtp_mail_from() -> str:
380
- return os.getenv(ENV_PHOENIX_SMTP_MAIL_FROM) or "noreply@arize.com"
407
+ return getenv(ENV_PHOENIX_SMTP_MAIL_FROM) or "noreply@arize.com"
381
408
 
382
409
 
383
410
  def get_env_smtp_hostname() -> str:
384
- return os.getenv(ENV_PHOENIX_SMTP_HOSTNAME) or ""
411
+ return getenv(ENV_PHOENIX_SMTP_HOSTNAME, "")
385
412
 
386
413
 
387
414
  def get_env_smtp_port() -> int:
@@ -410,16 +437,14 @@ class OAuth2ClientConfig:
410
437
  def from_env(cls, idp_name: str) -> "OAuth2ClientConfig":
411
438
  idp_name_upper = idp_name.upper()
412
439
  if not (
413
- client_id := os.getenv(
414
- client_id_env_var := f"PHOENIX_OAUTH2_{idp_name_upper}_CLIENT_ID"
415
- )
440
+ client_id := getenv(client_id_env_var := f"PHOENIX_OAUTH2_{idp_name_upper}_CLIENT_ID")
416
441
  ):
417
442
  raise ValueError(
418
443
  f"A client id must be set for the {idp_name} OAuth2 IDP "
419
444
  f"via the {client_id_env_var} environment variable"
420
445
  )
421
446
  if not (
422
- client_secret := os.getenv(
447
+ client_secret := getenv(
423
448
  client_secret_env_var := f"PHOENIX_OAUTH2_{idp_name_upper}_CLIENT_SECRET"
424
449
  )
425
450
  ):
@@ -429,7 +454,7 @@ class OAuth2ClientConfig:
429
454
  )
430
455
  if not (
431
456
  oidc_config_url := (
432
- os.getenv(
457
+ getenv(
433
458
  oidc_config_url_env_var := f"PHOENIX_OAUTH2_{idp_name_upper}_OIDC_CONFIG_URL",
434
459
  )
435
460
  )
@@ -447,7 +472,7 @@ class OAuth2ClientConfig:
447
472
  )
448
473
  return cls(
449
474
  idp_name=idp_name,
450
- idp_display_name=os.getenv(
475
+ idp_display_name=getenv(
451
476
  f"PHOENIX_OAUTH2_{idp_name_upper}_DISPLAY_NAME",
452
477
  _get_default_idp_display_name(idp_name),
453
478
  ),
@@ -541,7 +566,7 @@ def get_exported_files(directory: Path) -> list[Path]:
541
566
 
542
567
 
543
568
  def get_env_port() -> int:
544
- if not (port := os.getenv(ENV_PHOENIX_PORT)):
569
+ if not (port := getenv(ENV_PHOENIX_PORT)):
545
570
  return PORT
546
571
  if port.isnumeric():
547
572
  return int(port)
@@ -560,7 +585,7 @@ def get_env_port() -> int:
560
585
 
561
586
 
562
587
  def get_env_grpc_port() -> int:
563
- if not (port := os.getenv(ENV_PHOENIX_GRPC_PORT)):
588
+ if not (port := getenv(ENV_PHOENIX_GRPC_PORT)):
564
589
  return GRPC_PORT
565
590
  if port.isnumeric():
566
591
  return int(port)
@@ -571,11 +596,11 @@ def get_env_grpc_port() -> int:
571
596
 
572
597
 
573
598
  def get_env_host() -> str:
574
- return os.getenv(ENV_PHOENIX_HOST) or HOST
599
+ return getenv(ENV_PHOENIX_HOST) or HOST
575
600
 
576
601
 
577
602
  def get_env_host_root_path() -> str:
578
- if (host_root_path := os.getenv(ENV_PHOENIX_HOST_ROOT_PATH)) is None:
603
+ if (host_root_path := getenv(ENV_PHOENIX_HOST_ROOT_PATH)) is None:
579
604
  return HOST_ROOT_PATH
580
605
  if not host_root_path.startswith("/"):
581
606
  raise ValueError(
@@ -591,15 +616,15 @@ def get_env_host_root_path() -> str:
591
616
 
592
617
 
593
618
  def get_env_collector_endpoint() -> Optional[str]:
594
- return os.getenv(ENV_PHOENIX_COLLECTOR_ENDPOINT)
619
+ return getenv(ENV_PHOENIX_COLLECTOR_ENDPOINT)
595
620
 
596
621
 
597
622
  def get_env_project_name() -> str:
598
- return os.getenv(ENV_PHOENIX_PROJECT_NAME) or DEFAULT_PROJECT_NAME
623
+ return getenv(ENV_PHOENIX_PROJECT_NAME, DEFAULT_PROJECT_NAME)
599
624
 
600
625
 
601
626
  def get_env_database_connection_str() -> str:
602
- env_url = os.getenv(ENV_PHOENIX_SQL_DATABASE_URL)
627
+ env_url = getenv(ENV_PHOENIX_SQL_DATABASE_URL)
603
628
  if env_url is None:
604
629
  working_dir = get_working_dir()
605
630
  return f"sqlite:///{working_dir}/phoenix.db"
@@ -609,11 +634,11 @@ def get_env_database_connection_str() -> str:
609
634
  def get_env_database_schema() -> Optional[str]:
610
635
  if get_env_database_connection_str().startswith("sqlite"):
611
636
  return None
612
- return os.getenv(ENV_PHOENIX_SQL_DATABASE_SCHEMA)
637
+ return getenv(ENV_PHOENIX_SQL_DATABASE_SCHEMA)
613
638
 
614
639
 
615
640
  def get_env_enable_prometheus() -> bool:
616
- if (enable_promotheus := os.getenv(ENV_PHOENIX_ENABLE_PROMETHEUS)) is None or (
641
+ if (enable_promotheus := getenv(ENV_PHOENIX_ENABLE_PROMETHEUS)) is None or (
617
642
  enable_promotheus_lower := enable_promotheus.lower()
618
643
  ) == "false":
619
644
  return False
@@ -626,7 +651,7 @@ def get_env_enable_prometheus() -> bool:
626
651
 
627
652
 
628
653
  def get_env_client_headers() -> dict[str, str]:
629
- headers = parse_env_headers(os.getenv(ENV_PHOENIX_CLIENT_HEADERS))
654
+ headers = parse_env_headers(getenv(ENV_PHOENIX_CLIENT_HEADERS))
630
655
  if (api_key := get_env_phoenix_api_key()) and "authorization" not in [
631
656
  k.lower() for k in headers
632
657
  ]:
@@ -661,7 +686,7 @@ class LoggingMode(Enum):
661
686
 
662
687
 
663
688
  def get_env_logging_mode() -> LoggingMode:
664
- if (logging_mode := os.getenv(ENV_LOGGING_MODE)) is None:
689
+ if (logging_mode := getenv(ENV_LOGGING_MODE)) is None:
665
690
  return LoggingMode.DEFAULT
666
691
  try:
667
692
  return LoggingMode(logging_mode.lower().strip())
@@ -688,7 +713,7 @@ def get_env_db_logging_level() -> int:
688
713
 
689
714
 
690
715
  def get_env_fastapi_middleware_paths() -> list[tuple[str, str]]:
691
- env_value = os.getenv(ENV_PHOENIX_FASTAPI_MIDDLEWARE_PATHS, "")
716
+ env_value = getenv(ENV_PHOENIX_FASTAPI_MIDDLEWARE_PATHS, "")
692
717
  paths = []
693
718
  for entry in env_value.split(","):
694
719
  entry = entry.strip()
@@ -703,7 +728,7 @@ def get_env_fastapi_middleware_paths() -> list[tuple[str, str]]:
703
728
 
704
729
 
705
730
  def get_env_gql_extension_paths() -> list[tuple[str, str]]:
706
- env_value = os.getenv(ENV_PHOENIX_GQL_EXTENSION_PATHS, "")
731
+ env_value = getenv(ENV_PHOENIX_GQL_EXTENSION_PATHS, "")
707
732
  paths = []
708
733
  for entry in env_value.split(","):
709
734
  entry = entry.strip()
@@ -718,7 +743,7 @@ def get_env_gql_extension_paths() -> list[tuple[str, str]]:
718
743
 
719
744
 
720
745
  def get_env_grpc_interceptor_paths() -> list[tuple[str, str]]:
721
- env_value = os.getenv(ENV_PHOENIX_GRPC_INTERCEPTOR_PATHS, "")
746
+ env_value = getenv(ENV_PHOENIX_GRPC_INTERCEPTOR_PATHS, "")
722
747
  paths = []
723
748
  for entry in env_value.split(","):
724
749
  entry = entry.strip()
@@ -733,7 +758,7 @@ def get_env_grpc_interceptor_paths() -> list[tuple[str, str]]:
733
758
 
734
759
 
735
760
  def _get_logging_level(env_var: str, default_level: int) -> int:
736
- logging_level = os.getenv(env_var)
761
+ logging_level = getenv(env_var)
737
762
  if not logging_level:
738
763
  return default_level
739
764
 
@@ -753,7 +778,7 @@ def _get_logging_level(env_var: str, default_level: int) -> int:
753
778
 
754
779
 
755
780
  def get_env_log_migrations() -> bool:
756
- log_migrations = os.getenv(ENV_LOG_MIGRATIONS)
781
+ log_migrations = getenv(ENV_LOG_MIGRATIONS)
757
782
  # Default to True
758
783
  if log_migrations is None:
759
784
  return True