arize-phoenix 11.14.0__tar.gz → 11.16.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 (448) hide show
  1. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/PKG-INFO +1 -1
  2. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/pyproject.toml +1 -0
  3. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/config.py +13 -0
  4. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/models.py +35 -0
  5. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/evaluators/utils.py +3 -3
  6. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/functions.py +6 -6
  7. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/types.py +1 -1
  8. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +1 -2
  9. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/datasets.py +4 -4
  10. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/evaluations.py +1 -2
  11. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/spans.py +2 -3
  12. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/traces.py +52 -3
  13. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Project.py +2 -2
  14. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Span.py +1 -2
  15. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/app.py +5 -0
  16. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +1 -2
  17. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/dml_event_handler.py +4 -0
  18. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/templates/index.html +3 -0
  19. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/session/client.py +1 -2
  20. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/dsl/query.py +6 -6
  21. arize_phoenix-11.16.0/src/phoenix/version.py +1 -0
  22. arize_phoenix-11.14.0/src/phoenix/version.py +0 -1
  23. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/.gitignore +0 -0
  24. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/IP_NOTICE +0 -0
  25. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/LICENSE +0 -0
  26. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/README.md +0 -0
  27. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/__init__.py +0 -0
  28. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/auth.py +0 -0
  29. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/core/__init__.py +0 -0
  30. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/core/embedding_dimension.py +0 -0
  31. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/core/model.py +0 -0
  32. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/core/model_schema.py +0 -0
  33. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/core/model_schema_adapter.py +0 -0
  34. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/datetime_utils.py +0 -0
  35. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/README.md +0 -0
  36. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/__init__.py +0 -0
  37. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/alembic.ini +0 -0
  38. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/bulk_inserter.py +0 -0
  39. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/constants.py +0 -0
  40. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/engines.py +0 -0
  41. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/enums.py +0 -0
  42. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/facilitator.py +0 -0
  43. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/helpers.py +0 -0
  44. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/__init__.py +0 -0
  45. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/constants.py +0 -0
  46. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/dataset.py +0 -0
  47. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
  48. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/evaluation.py +0 -0
  49. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/helpers.py +0 -0
  50. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/span.py +0 -0
  51. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
  52. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
  53. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/insertion/types.py +0 -0
  54. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrate.py +0 -0
  55. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/__init__.py +0 -0
  56. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
  57. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
  58. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/env.py +0 -0
  59. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/script.py.mako +0 -0
  60. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
  61. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
  62. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
  63. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
  64. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
  65. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
  66. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
  67. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
  68. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
  69. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
  70. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
  71. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/pg_config.py +0 -0
  72. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/types/__init__.py +0 -0
  73. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/types/annotation_configs.py +0 -0
  74. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/types/db_models.py +0 -0
  75. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/types/identifier.py +0 -0
  76. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/types/model_provider.py +0 -0
  77. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/types/token_price_customization.py +0 -0
  78. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/db/types/trace_retention.py +0 -0
  79. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/exceptions.py +0 -0
  80. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/__init__.py +0 -0
  81. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
  82. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/evaluators/base.py +0 -0
  83. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
  84. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
  85. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/tracing.py +0 -0
  86. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/experiments/utils.py +0 -0
  87. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/inferences/__init__.py +0 -0
  88. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/inferences/errors.py +0 -0
  89. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/inferences/fixtures.py +0 -0
  90. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/inferences/inferences.py +0 -0
  91. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/inferences/schema.py +0 -0
  92. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/inferences/validation.py +0 -0
  93. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/logging/__init__.py +0 -0
  94. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/logging/_config.py +0 -0
  95. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/logging/_filter.py +0 -0
  96. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/logging/_formatter.py +0 -0
  97. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/metrics/README.md +0 -0
  98. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/metrics/__init__.py +0 -0
  99. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/metrics/binning.py +0 -0
  100. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/metrics/metrics.py +0 -0
  101. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/metrics/mixins.py +0 -0
  102. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
  103. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/metrics/timeseries.py +0 -0
  104. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/metrics/wrappers.py +0 -0
  105. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/pointcloud/__init__.py +0 -0
  106. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/pointcloud/clustering.py +0 -0
  107. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
  108. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/pointcloud/projectors.py +0 -0
  109. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
  110. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/py.typed +0 -0
  111. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/__init__.py +0 -0
  112. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/README.md +0 -0
  113. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/__init__.py +0 -0
  114. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/auth.py +0 -0
  115. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/context.py +0 -0
  116. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
  117. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
  118. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
  119. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
  120. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
  121. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
  122. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
  123. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
  124. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
  125. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
  126. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
  127. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
  128. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
  129. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
  130. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
  131. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
  132. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
  133. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
  134. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
  135. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
  136. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
  137. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
  138. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
  139. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
  140. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
  141. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
  142. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
  143. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
  144. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
  145. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
  146. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
  147. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
  148. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
  149. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
  150. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
  151. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
  152. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
  153. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
  154. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
  155. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
  156. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
  157. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
  158. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
  159. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
  160. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
  161. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
  162. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
  163. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
  164. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
  165. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
  166. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
  167. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
  168. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
  169. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
  170. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
  171. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
  172. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/exceptions.py +0 -0
  173. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
  174. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
  175. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
  176. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
  177. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
  178. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
  179. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
  180. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
  181. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
  182. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
  183. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
  184. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
  185. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
  186. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
  187. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
  188. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
  189. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
  190. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
  191. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
  192. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
  193. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
  194. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
  195. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
  196. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
  197. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
  198. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
  199. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
  200. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
  201. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
  202. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
  203. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
  204. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
  205. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
  206. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
  207. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
  208. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
  209. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
  210. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
  211. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
  212. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
  213. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
  214. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
  215. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
  216. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
  217. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
  218. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
  219. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/PromptFilter.py +0 -0
  220. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
  221. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
  222. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
  223. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
  224. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
  225. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
  226. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
  227. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
  228. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
  229. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
  230. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/interceptor.py +0 -0
  231. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
  232. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
  233. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
  234. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
  235. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
  236. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
  237. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
  238. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
  239. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
  240. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
  241. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
  242. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
  243. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
  244. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
  245. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
  246. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
  247. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
  248. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/openapi/main.py +0 -0
  249. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/openapi/schema.py +0 -0
  250. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/queries.py +0 -0
  251. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/__init__.py +0 -0
  252. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/auth.py +0 -0
  253. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
  254. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/oauth2.py +0 -0
  255. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/utils.py +0 -0
  256. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
  257. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
  258. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
  259. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
  260. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
  261. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
  262. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
  263. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
  264. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
  265. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
  266. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
  267. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/schema.py +0 -0
  268. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/subscriptions.py +0 -0
  269. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Annotation.py +0 -0
  270. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
  271. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
  272. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
  273. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
  274. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
  275. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
  276. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
  277. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
  278. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Cluster.py +0 -0
  279. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
  280. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
  281. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
  282. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
  283. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Dataset.py +0 -0
  284. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
  285. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
  286. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
  287. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
  288. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Dimension.py +0 -0
  289. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
  290. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
  291. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
  292. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
  293. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
  294. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
  295. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
  296. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
  297. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
  298. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
  299. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Event.py +0 -0
  300. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
  301. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
  302. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Experiment.py +0 -0
  303. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
  304. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
  305. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
  306. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
  307. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
  308. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Functionality.py +0 -0
  309. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
  310. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
  311. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Identifier.py +0 -0
  312. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
  313. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Inferences.py +0 -0
  314. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
  315. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
  316. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/MimeType.py +0 -0
  317. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
  318. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
  319. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
  320. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
  321. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
  322. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
  323. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Prompt.py +0 -0
  324. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
  325. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
  326. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
  327. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
  328. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
  329. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
  330. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
  331. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
  332. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Segments.py +0 -0
  333. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ServerStatus.py +0 -0
  334. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/SortDir.py +0 -0
  335. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
  336. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
  337. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
  338. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
  339. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
  340. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
  341. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
  342. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
  343. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
  344. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
  345. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/Trace.py +0 -0
  346. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
  347. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
  348. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/User.py +0 -0
  349. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
  350. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/UserRole.py +0 -0
  351. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
  352. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
  353. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/__init__.py +0 -0
  354. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/node.py +0 -0
  355. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/types/pagination.py +0 -0
  356. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/api/utils.py +0 -0
  357. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/authorization.py +0 -0
  358. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/bearer_auth.py +0 -0
  359. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
  360. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
  361. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
  362. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
  363. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
  364. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
  365. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
  366. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/daemons/__init__.py +0 -0
  367. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
  368. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/daemons/span_cost_calculator.py +0 -0
  369. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/dml_event.py +0 -0
  370. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/email/__init__.py +0 -0
  371. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/email/sender.py +0 -0
  372. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/email/templates/__init__.py +0 -0
  373. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
  374. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
  375. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/email/templates/welcome.html +0 -0
  376. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/email/types.py +0 -0
  377. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/grpc_server.py +0 -0
  378. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/jwt_store.py +0 -0
  379. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/main.py +0 -0
  380. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/middleware/__init__.py +0 -0
  381. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/middleware/gzip.py +0 -0
  382. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/oauth2.py +0 -0
  383. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/openapi/__init__.py +0 -0
  384. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/prometheus.py +0 -0
  385. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/rate_limiters.py +0 -0
  386. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/retention.py +0 -0
  387. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/.vite/manifest.json +0 -0
  388. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
  389. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
  390. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
  391. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
  392. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
  393. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
  394. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
  395. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
  396. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/components-CK8hwrPx.js +0 -0
  397. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/index-ByWTGseQ.js +0 -0
  398. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/pages-D8Hgmz1V.js +0 -0
  399. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/vendor-CqDb5u4o.css +0 -0
  400. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/vendor-_6rG8OMg.js +0 -0
  401. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/vendor-arizeai-BznCmJFh.js +0 -0
  402. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/vendor-codemirror-29fWLPAy.js +0 -0
  403. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/vendor-recharts-Cu431IpB.js +0 -0
  404. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/vendor-shiki-Ce9e01lU.js +0 -0
  405. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/assets/vendor-three-C5WAXd5r.js +0 -0
  406. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/favicon.ico +0 -0
  407. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/static/modernizr.js +0 -0
  408. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/telemetry.py +0 -0
  409. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/templates/__init__.py +0 -0
  410. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/thread_server.py +0 -0
  411. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/server/types.py +0 -0
  412. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/services.py +0 -0
  413. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/session/__init__.py +0 -0
  414. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/session/data_extractor.py +0 -0
  415. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/session/evaluation.py +0 -0
  416. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/session/session.py +0 -0
  417. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/settings.py +0 -0
  418. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/__init__.py +0 -0
  419. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/attributes.py +0 -0
  420. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/dsl/README.md +0 -0
  421. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/dsl/__init__.py +0 -0
  422. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/dsl/filter.py +0 -0
  423. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/dsl/helpers.py +0 -0
  424. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/errors.py +0 -0
  425. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
  426. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/exporter.py +0 -0
  427. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/fixtures.py +0 -0
  428. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/otel.py +0 -0
  429. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/projects.py +0 -0
  430. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/schemas.py +0 -0
  431. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/span_evaluations.py +0 -0
  432. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/span_json_decoder.py +0 -0
  433. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/span_json_encoder.py +0 -0
  434. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/trace_dataset.py +0 -0
  435. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/utils.py +0 -0
  436. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/v1/__init__.py +0 -0
  437. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
  438. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
  439. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/__init__.py +0 -0
  440. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/client.py +0 -0
  441. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/deprecation.py +0 -0
  442. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/error_handling.py +0 -0
  443. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/json.py +0 -0
  444. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/logging.py +0 -0
  445. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/project.py +0 -0
  446. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/re.py +0 -0
  447. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/span_store.py +0 -0
  448. {arize_phoenix-11.14.0 → arize_phoenix-11.16.0}/src/phoenix/utilities/template_formatters.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arize-phoenix
3
- Version: 11.14.0
3
+ Version: 11.16.0
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://arize.com/docs/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -302,6 +302,7 @@ target-version = "py39"
302
302
  [tool.ruff.lint.per-file-ignores]
303
303
  "*.ipynb" = ["E402", "E501"]
304
304
  "examples/**/*.py" = ["E501"]
305
+ "tests/**/*.py" = ["E501"]
305
306
 
306
307
  [tool.ruff.lint]
307
308
  select = ["E", "F", "W", "I", "NPY201"]
@@ -57,6 +57,11 @@ ENV_PHOENIX_FULLSTORY_ORG = "PHOENIX_FULLSTORY_ORG"
57
57
  The FullStory organization ID for web analytics tracking. When set, FullStory tracking
58
58
  will be enabled in the Phoenix web interface.
59
59
  """
60
+ ENV_PHOENIX_ALLOW_EXTERNAL_RESOURCES = "PHOENIX_ALLOW_EXTERNAL_RESOURCES"
61
+ """
62
+ Allows calls to external resources, like Google Fonts in the web interface
63
+ Defaults to True. Set to False in air-gapped environments to prevent external requests.
64
+ """
60
65
  ENV_PHOENIX_SQL_DATABASE_URL = "PHOENIX_SQL_DATABASE_URL"
61
66
  """
62
67
  The SQL database URL to use when logging traces and evals.
@@ -1690,3 +1695,11 @@ def _validate_file_exists_and_is_readable(
1690
1695
  f.read(1) # Read just one byte to verify readability
1691
1696
  except Exception as e:
1692
1697
  raise ValueError(f"{description} file is not readable: {e}")
1698
+
1699
+
1700
+ def get_env_allow_external_resources() -> bool:
1701
+ """
1702
+ Gets the value of the PHOENIX_ALLOW_EXTERNAL_RESOURCES environment variable.
1703
+ Defaults to True if not set.
1704
+ """
1705
+ return _bool_val(ENV_PHOENIX_ALLOW_EXTERNAL_RESOURCES, True)
@@ -841,6 +841,41 @@ def _(element: Any, compiler: Any, **kw: Any) -> Any:
841
841
  return compiler.process(func.text_contains(string, substring) > 0, **kw)
842
842
 
843
843
 
844
+ class CaseInsensitiveContains(expression.FunctionElement[bool]):
845
+ # See https://docs.sqlalchemy.org/en/20/core/compiler.html
846
+ inherit_cache = True
847
+ type = Boolean()
848
+ name = "case_insensitive_contains"
849
+
850
+
851
+ @compiles(CaseInsensitiveContains)
852
+ def _(element: Any, compiler: Any, **kw: Any) -> Any:
853
+ string, substring = list(element.clauses)
854
+ result = compiler.process(func.lower(string).contains(func.lower(substring)), **kw)
855
+ return result
856
+
857
+
858
+ @compiles(CaseInsensitiveContains, "postgresql")
859
+ def _(element: Any, compiler: Any, **kw: Any) -> Any:
860
+ string, substring = list(element.clauses)
861
+ escaped = func.replace(
862
+ func.replace(func.replace(substring, "\\", "\\\\"), "%", "\\%"), "_", "\\_"
863
+ )
864
+ pattern = func.concat("%", escaped, "%")
865
+ result = compiler.process(string.ilike(pattern), **kw)
866
+ return result
867
+
868
+
869
+ @compiles(CaseInsensitiveContains, "sqlite")
870
+ def _(element: Any, compiler: Any, **kw: Any) -> Any:
871
+ # Use sqlean's `text_lower` to handle non-ASCII characters
872
+ string, substring = list(element.clauses)
873
+ result = compiler.process(
874
+ func.text_contains(func.text_lower(string), func.text_lower(substring)), **kw
875
+ )
876
+ return result
877
+
878
+
844
879
  async def init_models(engine: AsyncEngine) -> None:
845
880
  async with engine.begin() as conn:
846
881
  await conn.run_sync(Base.metadata.create_all)
@@ -19,9 +19,9 @@ def unwrap_json(obj: JSONSerializable) -> JSONSerializable:
19
19
  if len(obj) == 1:
20
20
  key = next(iter(obj.keys()))
21
21
  output = obj[key]
22
- assert isinstance(
23
- output, (dict, list, str, int, float, bool, type(None))
24
- ), "Output must be JSON serializable"
22
+ assert isinstance(output, (dict, list, str, int, float, bool, type(None))), (
23
+ "Output must be JSON serializable"
24
+ )
25
25
  return output
26
26
  return obj
27
27
 
@@ -363,9 +363,9 @@ def run_experiment(
363
363
  span.set_attribute(SpanAttributes.OPENINFERENCE_SPAN_KIND, root_span_kind)
364
364
  span.set_status(status)
365
365
 
366
- assert isinstance(
367
- output, (dict, list, str, int, float, bool, type(None))
368
- ), "Output must be JSON serializable"
366
+ assert isinstance(output, (dict, list, str, int, float, bool, type(None))), (
367
+ "Output must be JSON serializable"
368
+ )
369
369
 
370
370
  exp_run = ExperimentRun(
371
371
  start_time=_decode_unix_nano(cast(int, span.start_time)),
@@ -477,9 +477,9 @@ def run_experiment(
477
477
  span.set_attribute(OPENINFERENCE_SPAN_KIND, root_span_kind)
478
478
  span.set_status(status)
479
479
 
480
- assert isinstance(
481
- output, (dict, list, str, int, float, bool, type(None))
482
- ), "Output must be JSON serializable"
480
+ assert isinstance(output, (dict, list, str, int, float, bool, type(None))), (
481
+ "Output must be JSON serializable"
482
+ )
483
483
 
484
484
  exp_run = ExperimentRun(
485
485
  start_time=_decode_unix_nano(cast(int, span.start_time)),
@@ -322,7 +322,7 @@ class _HasStats:
322
322
  text = self.stats.__str__()
323
323
  else:
324
324
  text = self.stats.to_markdown(index=False)
325
- return f"{self.title}\n{'-'*len(self.title)}\n" + text
325
+ return f"{self.title}\n{'-' * len(self.title)}\n" + text
326
326
 
327
327
 
328
328
  @dataclass(frozen=True)
@@ -49,8 +49,7 @@ class TraceAnnotationMutationMixin:
49
49
  trace_rowid = from_global_id_with_expected_type(annotation_input.trace_id, "Trace")
50
50
  except ValueError:
51
51
  raise BadRequest(
52
- f"Invalid trace ID for annotation at index {idx}: "
53
- f"{annotation_input.trace_id}"
52
+ f"Invalid trace ID for annotation at index {idx}: {annotation_input.trace_id}"
54
53
  )
55
54
  trace_rowids.append(trace_rowid)
56
55
 
@@ -714,7 +714,7 @@ async def get_dataset_examples(
714
714
  version_id: Optional[str] = Query(
715
715
  default=None,
716
716
  description=(
717
- "The ID of the dataset version " "(if omitted, returns data from the latest version)"
717
+ "The ID of the dataset version (if omitted, returns data from the latest version)"
718
718
  ),
719
719
  ),
720
720
  ) -> ListDatasetExamplesResponseBody:
@@ -833,7 +833,7 @@ async def get_dataset_csv(
833
833
  version_id: Optional[str] = Query(
834
834
  default=None,
835
835
  description=(
836
- "The ID of the dataset version " "(if omitted, returns data from the latest version)"
836
+ "The ID of the dataset version (if omitted, returns data from the latest version)"
837
837
  ),
838
838
  ),
839
839
  ) -> Response:
@@ -876,7 +876,7 @@ async def get_dataset_jsonl_openai_ft(
876
876
  version_id: Optional[str] = Query(
877
877
  default=None,
878
878
  description=(
879
- "The ID of the dataset version " "(if omitted, returns data from the latest version)"
879
+ "The ID of the dataset version (if omitted, returns data from the latest version)"
880
880
  ),
881
881
  ),
882
882
  ) -> bytes:
@@ -916,7 +916,7 @@ async def get_dataset_jsonl_openai_evals(
916
916
  version_id: Optional[str] = Query(
917
917
  default=None,
918
918
  description=(
919
- "The ID of the dataset version " "(if omitted, returns data from the latest version)"
919
+ "The ID of the dataset version (if omitted, returns data from the latest version)"
920
920
  ),
921
921
  ),
922
922
  ) -> bytes:
@@ -55,8 +55,7 @@ router = APIRouter(tags=["traces"], include_in_schema=True)
55
55
  {
56
56
  "status_code": HTTP_415_UNSUPPORTED_MEDIA_TYPE,
57
57
  "description": (
58
- "Unsupported content type, "
59
- "only gzipped protobuf and pandas-arrow are supported"
58
+ "Unsupported content type, only gzipped protobuf and pandas-arrow are supported"
60
59
  ),
61
60
  },
62
61
  HTTP_422_UNPROCESSABLE_ENTITY,
@@ -205,8 +205,7 @@ class OtlpEvent(BaseModel):
205
205
  name: Optional[str] = Field(
206
206
  None,
207
207
  description=(
208
- "name of the event. "
209
- "This field is semantically required to be set to non-empty string."
208
+ "name of the event. This field is semantically required to be set to non-empty string."
210
209
  ),
211
210
  )
212
211
  time_unix_nano: Optional[
@@ -282,7 +281,7 @@ class OtlpSpan(BaseModel):
282
281
  )
283
282
  events: Optional[list[OtlpEvent]] = Field(
284
283
  None,
285
- description=("events is a collection of Event items. " "A span with no events is valid."),
284
+ description=("events is a collection of Event items. A span with no events is valid."),
286
285
  )
287
286
  flags: Optional[Annotated[int, Field(ge=0, le=4294967295)]] = Field(
288
287
  None,
@@ -2,14 +2,14 @@ import gzip
2
2
  import zlib
3
3
  from typing import Any, Literal, Optional
4
4
 
5
- from fastapi import APIRouter, BackgroundTasks, Depends, Header, HTTPException, Query
5
+ from fastapi import APIRouter, BackgroundTasks, Depends, Header, HTTPException, Path, Query
6
6
  from google.protobuf.message import DecodeError
7
7
  from opentelemetry.proto.collector.trace.v1.trace_service_pb2 import (
8
8
  ExportTraceServiceRequest,
9
9
  ExportTraceServiceResponse,
10
10
  )
11
11
  from pydantic import Field
12
- from sqlalchemy import insert, select
12
+ from sqlalchemy import delete, insert, select
13
13
  from starlette.concurrency import run_in_threadpool
14
14
  from starlette.datastructures import State
15
15
  from starlette.requests import Request
@@ -26,7 +26,7 @@ from phoenix.db.insertion.helpers import as_kv
26
26
  from phoenix.db.insertion.types import Precursors
27
27
  from phoenix.server.authorization import is_not_locked
28
28
  from phoenix.server.bearer_auth import PhoenixUser
29
- from phoenix.server.dml_event import TraceAnnotationInsertEvent
29
+ from phoenix.server.dml_event import SpanDeleteEvent, TraceAnnotationInsertEvent
30
30
  from phoenix.trace.otel import decode_otlp_span
31
31
  from phoenix.utilities.project import get_project_name
32
32
 
@@ -225,3 +225,52 @@ async def _add_spans(req: ExportTraceServiceRequest, state: State) -> None:
225
225
  for otlp_span in scope_span.spans:
226
226
  span = await run_in_threadpool(decode_otlp_span, otlp_span)
227
227
  await state.queue_span_for_bulk_insert(span, project_name)
228
+
229
+
230
+ @router.delete(
231
+ "/traces/{trace_id}",
232
+ operation_id="deleteTrace",
233
+ summary="Delete a trace by trace_id",
234
+ description=(
235
+ "Delete an entire trace by its OpenTelemetry trace_id. "
236
+ "This will permanently remove all spans in the trace and their associated data."
237
+ ),
238
+ responses=add_errors_to_responses([HTTP_404_NOT_FOUND]),
239
+ status_code=204, # No Content for successful deletion
240
+ )
241
+ async def delete_trace(
242
+ request: Request,
243
+ trace_id: str = Path(description="The OpenTelemetry trace_id of the trace to delete"),
244
+ ) -> None:
245
+ """
246
+ Delete a trace by trace_id.
247
+
248
+ This endpoint will:
249
+ 1. Find and delete the trace with the given trace_id (and all its spans via CASCADE)
250
+ 2. Trigger cache invalidation events
251
+ 3. Return 204 No Content on success
252
+
253
+ Note: This deletes the entire trace, including all spans, which maintains data consistency
254
+ and avoids orphaned spans or inconsistent cached cumulative fields.
255
+ """
256
+ async with request.app.state.db() as session:
257
+ # Delete the trace directly and get project_id for cache invalidation
258
+ delete_stmt = (
259
+ delete(models.Trace)
260
+ .where(models.Trace.trace_id == trace_id)
261
+ .returning(models.Trace.project_rowid)
262
+ )
263
+
264
+ project_id = await session.scalar(delete_stmt)
265
+
266
+ if project_id is None:
267
+ raise HTTPException(
268
+ status_code=HTTP_404_NOT_FOUND,
269
+ detail=f"Trace with trace_id '{trace_id}' not found",
270
+ )
271
+
272
+ # Trigger cache invalidation event
273
+ request.state.event_queue.put(SpanDeleteEvent((project_id,)))
274
+
275
+ # Return 204 No Content (successful deletion with no response body)
276
+ return None
@@ -404,11 +404,11 @@ class Project(Node):
404
404
  .where(models.Span.parent_id.is_(None))
405
405
  .where(
406
406
  or_(
407
- models.TextContains(
407
+ models.CaseInsensitiveContains(
408
408
  models.Span.attributes[INPUT_VALUE].as_string(),
409
409
  filter_io_substring,
410
410
  ),
411
- models.TextContains(
411
+ models.CaseInsensitiveContains(
412
412
  models.Span.attributes[OUTPUT_VALUE].as_string(),
413
413
  filter_io_substring,
414
414
  ),
@@ -537,8 +537,7 @@ class Span(Node):
537
537
 
538
538
  @strawberry.field(
539
539
  description=(
540
- "Annotations associated with the span. This encompasses both "
541
- "LLM and human annotations."
540
+ "Annotations associated with the span. This encompasses both LLM and human annotations."
542
541
  )
543
542
  ) # type: ignore
544
543
  async def span_annotations(
@@ -55,6 +55,7 @@ from phoenix.config import (
55
55
  ENV_PHOENIX_CSRF_TRUSTED_ORIGINS,
56
56
  SERVER_DIR,
57
57
  OAuth2ClientConfig,
58
+ get_env_allow_external_resources,
58
59
  get_env_csrf_trusted_origins,
59
60
  get_env_database_allocated_storage_capacity_gibibytes,
60
61
  get_env_database_usage_insertion_blocking_threshold_percentage,
@@ -245,6 +246,8 @@ class AppConfig(NamedTuple):
245
246
  """ Support email address for user assistance """
246
247
  has_db_threshold: bool = False
247
248
  """ Whether the database has a threshold for usage """
249
+ allow_external_resources: bool = True
250
+ """ Whether to allow external resources like Google Fonts in the web interface """
248
251
 
249
252
 
250
253
  class Static(StaticFiles):
@@ -314,6 +317,7 @@ class Static(StaticFiles):
314
317
  "management_url": self._app_config.management_url,
315
318
  "support_email": self._app_config.support_email,
316
319
  "has_db_threshold": self._app_config.has_db_threshold,
320
+ "allow_external_resources": self._app_config.allow_external_resources,
317
321
  },
318
322
  )
319
323
  except Exception as e:
@@ -1085,6 +1089,7 @@ def create_app(
1085
1089
  get_env_database_allocated_storage_capacity_gibibytes()
1086
1090
  and get_env_database_usage_insertion_blocking_threshold_percentage()
1087
1091
  ),
1092
+ allow_external_resources=get_env_allow_external_resources(),
1088
1093
  ),
1089
1094
  ),
1090
1095
  name="static",
@@ -159,8 +159,7 @@ class DbDiskUsageMonitor(DaemonTask):
159
159
  admin_emails = (await session.scalars(stmt)).all()
160
160
  except Exception:
161
161
  logger.exception(
162
- "Failed to fetch admin emails from database, "
163
- "skipping database usage warning emails"
162
+ "Failed to fetch admin emails from database, skipping database usage warning emails"
164
163
  )
165
164
  return
166
165
 
@@ -128,6 +128,10 @@ class _SpanDmlEventHandler(_DmlEventHandler[SpanDmlEvent]):
128
128
  class _SpanDeleteEventHandler(_SpanDmlEventHandler):
129
129
  @staticmethod
130
130
  def _clear(cache: CacheForDataLoaders, project_id: int) -> None:
131
+ # Call parent's cache invalidation first (core span caches)
132
+ _SpanDmlEventHandler._clear(cache, project_id)
133
+
134
+ # Then invalidate annotation-specific caches
131
135
  cache.annotation_summary.invalidate_project(project_id)
132
136
  cache.document_evaluation_summary.invalidate_project(project_id)
133
137
 
@@ -55,9 +55,11 @@
55
55
  <meta property="og:description" content="AI Observability & Evaluation" />
56
56
  <meta property="og:image" content="https://raw.githubusercontent.com/Arize-ai/phoenix-assets/main/images/socal/social-preview-horizontal.jpg" />
57
57
  <meta name="theme-color" content="#ffffff" />
58
+ {% if allow_external_resources %}
58
59
  <link rel="preconnect" href="https://fonts.googleapis.com">
59
60
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
60
61
  <link href="https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap" rel="stylesheet">
62
+ {% endif %}
61
63
  {% if not is_development -%}
62
64
  {% set _ = collect_assets('index.tsx') -%}
63
65
  {{- render_css() -}}
@@ -111,6 +113,7 @@
111
113
  managementUrl: {{management_url | tojson}},
112
114
  supportEmail: {{support_email | tojson}},
113
115
  hasDbThreshold: Boolean("{{has_db_threshold}}" == "True"),
116
+ allowExternalResources: Boolean("{{allow_external_resources}}" == "True"),
114
117
  }),
115
118
  writable: false
116
119
  });
@@ -68,8 +68,7 @@ class Client(TraceDataExtractor):
68
68
  """
69
69
  if kwargs.pop("use_active_session_if_available", None) is not None:
70
70
  print(
71
- "`use_active_session_if_available` is deprecated "
72
- "and will be removed in the future."
71
+ "`use_active_session_if_available` is deprecated and will be removed in the future."
73
72
  )
74
73
  if kwargs:
75
74
  raise TypeError(f"Unexpected keyword arguments: {', '.join(kwargs)}")
@@ -456,16 +456,16 @@ class SpanQuery(_HasTmpSuffix):
456
456
  return replace(self, _filter=_filter)
457
457
 
458
458
  def explode(self, key: str, **kwargs: str) -> "SpanQuery":
459
- assert (
460
- isinstance(key, str) and key
461
- ), "The field name for explosion must be a non-empty string."
459
+ assert isinstance(key, str) and key, (
460
+ "The field name for explosion must be a non-empty string."
461
+ )
462
462
  _explode = Explosion(key=key, kwargs=kwargs, primary_index_key=self._index.key)
463
463
  return replace(self, _explode=_explode)
464
464
 
465
465
  def concat(self, key: str, **kwargs: str) -> "SpanQuery":
466
- assert (
467
- isinstance(key, str) and key
468
- ), "The field name for concatenation must be a non-empty string."
466
+ assert isinstance(key, str) and key, (
467
+ "The field name for concatenation must be a non-empty string."
468
+ )
469
469
  _concat = (
470
470
  Concatenation(key=key, kwargs=kwargs, separator=self._concat.separator)
471
471
  if self._concat
@@ -0,0 +1 @@
1
+ __version__ = "11.16.0"
@@ -1 +0,0 @@
1
- __version__ = "11.14.0"
File without changes