arize-phoenix 12.0.0__tar.gz → 12.2.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.
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/PKG-INFO +1 -1
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/document_annotation.py +1 -1
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/session_annotation.py +1 -1
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/span_annotation.py +1 -1
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/trace_annotation.py +1 -1
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/types.py +0 -4
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/models.py +22 -1
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/context.py +2 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/__init__.py +2 -0
- arize_phoenix-12.2.0/src/phoenix/server/api/dataloaders/dataset_labels.py +36 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/playground_clients.py +1 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/__init__.py +2 -0
- arize_phoenix-12.2.0/src/phoenix/server/api/mutations/dataset_label_mutations.py +291 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/dataset_split_mutations.py +38 -2
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/queries.py +21 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/auth.py +5 -5
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/oauth2.py +5 -23
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Dataset.py +8 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DatasetExample.py +7 -0
- arize_phoenix-12.2.0/src/phoenix/server/api/types/DatasetLabel.py +23 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Prompt.py +18 -1
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/app.py +7 -12
- arize_phoenix-12.2.0/src/phoenix/server/static/.vite/manifest.json +93 -0
- arize_phoenix-12.0.0/src/phoenix/server/static/assets/components-Dl9SUw1U.js → arize_phoenix-12.2.0/src/phoenix/server/static/assets/components-BG6v0EM8.js +665 -389
- arize_phoenix-12.0.0/src/phoenix/server/static/assets/index-CqQS0dTo.js → arize_phoenix-12.2.0/src/phoenix/server/static/assets/index-CSVcULw1.js +13 -13
- arize_phoenix-12.0.0/src/phoenix/server/static/assets/pages-DKSjVA_E.js → arize_phoenix-12.2.0/src/phoenix/server/static/assets/pages-DgaM7kpM.js +1135 -1182
- arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-CtbHQYl8.js → arize_phoenix-12.2.0/src/phoenix/server/static/assets/vendor-BqTEkGQU.js +183 -183
- arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-arizeai-D-lWOwIS.js → arize_phoenix-12.2.0/src/phoenix/server/static/assets/vendor-arizeai-DlOj0PQQ.js +15 -24
- arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-codemirror-BRBpy3_z.js → arize_phoenix-12.2.0/src/phoenix/server/static/assets/vendor-codemirror-B2PHH5yZ.js +3 -3
- arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-recharts--KdSwB3m.js → arize_phoenix-12.2.0/src/phoenix/server/static/assets/vendor-recharts-CKsi4IjN.js +1 -1
- arize_phoenix-12.0.0/src/phoenix/server/static/assets/vendor-shiki-CvRzZnIo.js → arize_phoenix-12.2.0/src/phoenix/server/static/assets/vendor-shiki-DN26BkKE.js +1 -1
- arize_phoenix-12.2.0/src/phoenix/server/utils.py +74 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/session/session.py +25 -5
- arize_phoenix-12.2.0/src/phoenix/version.py +1 -0
- arize_phoenix-12.0.0/src/phoenix/server/static/.vite/manifest.json +0 -93
- arize_phoenix-12.0.0/src/phoenix/version.py +0 -1
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/.gitignore +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/IP_NOTICE +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/LICENSE +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/README.md +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/pyproject.toml +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/auth.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/config.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/core/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/core/embedding_dimension.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/core/model.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/core/model_schema.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/core/model_schema_adapter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/datetime_utils.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/README.md +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/alembic.ini +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/bulk_inserter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/constants.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/engines.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/enums.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/facilitator.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/helpers.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/constants.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/dataset.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/evaluation.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/helpers.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/span.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrate.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/env.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/script.py.mako +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/01a8342c9cdf_add_user_id_on_datasets.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/0df286449799_add_session_annotations_table.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/272b66ff50f8_drop_single_indices.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/58228d933c91_dataset_labels.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/699f655af132_experiment_tags.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/735d3d93c33e_add_composite_indices.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/a20694b15f82_cost.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/ab513d89518b_add_user_id_on_dataset_versions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/d0690a79ea51_users_on_experiments.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/deb2c81c0bb2_dataset_splits.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/migrations/versions/e76cbd66ffc3_add_experiments_dataset_examples.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/pg_config.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/types/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/types/annotation_configs.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/types/db_models.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/types/identifier.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/types/model_provider.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/types/token_price_customization.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/types/trace_retention.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/exceptions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/evaluators/base.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/functions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/tracing.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/types.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/experiments/utils.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/inferences/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/inferences/errors.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/inferences/fixtures.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/inferences/inferences.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/inferences/schema.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/inferences/validation.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/logging/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/logging/_config.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/logging/_filter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/logging/_formatter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/metrics/README.md +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/metrics/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/metrics/binning.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/metrics/metrics.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/metrics/mixins.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/metrics/timeseries.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/metrics/wrappers.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/pointcloud/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/pointcloud/clustering.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/pointcloud/projectors.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/py.typed +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/README.md +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/auth.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/annotation_configs_by_project.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/average_experiment_repeated_run_group_latency.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/dataset_example_splits.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/dataset_examples_and_versions_by_experiment_run.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_group_annotation_summaries.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/experiment_repeated_run_groups.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/last_used_times_by_generative_model_id.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/session_annotations_by_session.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_by_span.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_generative_model.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_project_session.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_span.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_detail_summary_entries_by_trace.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_details_by_span_cost.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_repeated_run_group.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_experiment_run.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_generative_model.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_project_session.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_cost_summary_by_trace.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_costs.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/trace_annotations_by_trace.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/types.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/exceptions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/playground_users.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/prompts/conversions/aws.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/AnnotationFilter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/CreateProjectInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/CreateProjectSessionAnnotationInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DatasetFilter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/GenerativeCredentialInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/PromptFilter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/TimeBinConfig.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/UpdateAnnotationInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/interceptor.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/api_key_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/model_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/project_session_annotations_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/mutations/user_mutations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/openapi/main.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/openapi/schema.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/utils.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/documents.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/models.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/projects.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/sessions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/users.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/schema.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/subscriptions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Annotation.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Cluster.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/CostBreakdown.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DatasetExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DatasetSplit.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Dimension.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DocumentAnnotation.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Event.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Experiment.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroup.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ExperimentRepeatedRunGroupAnnotationSummary.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Functionality.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Identifier.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/InferenceModel.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Inferences.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/MimeType.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ModelInterface.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/PlaygroundModel.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Project.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ProjectSessionAnnotation.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Segments.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ServerStatus.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/SortDir.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Span.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/SpanCostDetailSummaryEntry.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/SpanCostSummary.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/TokenPrice.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/Trace.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/User.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/UserRole.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/node.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/types/pagination.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/utils.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/authorization.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/bearer_auth.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/cost_tracking/cost_details_calculator.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/cost_tracking/cost_model_lookup.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/cost_tracking/helpers.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/cost_tracking/regex_specificity.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/cost_tracking/token_cost_calculator.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/daemons/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/daemons/db_disk_usage_monitor.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/daemons/generative_model_store.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/daemons/span_cost_calculator.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/dml_event.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/dml_event_handler.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/email/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/email/sender.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/email/templates/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/email/templates/db_disk_usage_notification.html +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/email/templates/welcome.html +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/email/types.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/experiments/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/experiments/utils.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/grpc_server.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/jwt_store.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/main.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/middleware/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/middleware/gzip.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/oauth2.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/openapi/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/prometheus.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/rate_limiters.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/retention.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/session_filters.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/assets/vendor-BGzfc4EU.css +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/assets/vendor-three-BLWp5bic.js +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/favicon.ico +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/static/modernizr.js +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/telemetry.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/templates/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/templates/index.html +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/thread_server.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/types.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/services.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/session/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/session/client.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/session/data_extractor.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/session/evaluation.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/settings.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/attributes.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/dsl/README.md +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/dsl/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/dsl/filter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/dsl/helpers.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/dsl/query.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/errors.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/exporter.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/fixtures.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/otel.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/projects.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/schemas.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/span_evaluations.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/span_json_decoder.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/span_json_encoder.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/trace_dataset.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/utils.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/v1/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/utilities/__init__.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/utilities/client.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/utilities/error_handling.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/utilities/json.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/utilities/logging.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/utilities/project.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/utilities/re.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/utilities/span_store.py +0 -0
- {arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/utilities/template_formatters.py +0 -0
{arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/document_annotation.py
RENAMED
|
@@ -181,7 +181,7 @@ def _key(p: Received[Precursors.DocumentAnnotation]) -> _Key:
|
|
|
181
181
|
|
|
182
182
|
|
|
183
183
|
def _unique_by(p: Received[Insertables.DocumentAnnotation]) -> _UniqueBy:
|
|
184
|
-
return p.item.obj.name, p.item.span_rowid, p.item.document_position, p.item.identifier
|
|
184
|
+
return p.item.obj.name, p.item.span_rowid, p.item.document_position, p.item.obj.identifier
|
|
185
185
|
|
|
186
186
|
|
|
187
187
|
def _time(p: Received[Any]) -> datetime:
|
{arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/db/insertion/session_annotation.py
RENAMED
|
@@ -169,7 +169,7 @@ def _key(p: Received[Precursors.SessionAnnotation]) -> _Key:
|
|
|
169
169
|
|
|
170
170
|
|
|
171
171
|
def _unique_by(p: Received[Insertables.SessionAnnotation]) -> _UniqueBy:
|
|
172
|
-
return p.item.obj.name, p.item.project_session_rowid, p.item.identifier
|
|
172
|
+
return p.item.obj.name, p.item.project_session_rowid, p.item.obj.identifier
|
|
173
173
|
|
|
174
174
|
|
|
175
175
|
def _time(p: Received[Any]) -> datetime:
|
|
@@ -167,7 +167,7 @@ def _key(p: Received[Precursors.SpanAnnotation]) -> _Key:
|
|
|
167
167
|
|
|
168
168
|
|
|
169
169
|
def _unique_by(p: Received[Insertables.SpanAnnotation]) -> _UniqueBy:
|
|
170
|
-
return p.item.obj.name, p.item.span_rowid, p.item.identifier
|
|
170
|
+
return p.item.obj.name, p.item.span_rowid, p.item.obj.identifier
|
|
171
171
|
|
|
172
172
|
|
|
173
173
|
def _time(p: Received[Any]) -> datetime:
|
|
@@ -166,7 +166,7 @@ def _key(p: Received[Precursors.TraceAnnotation]) -> _Key:
|
|
|
166
166
|
|
|
167
167
|
|
|
168
168
|
def _unique_by(p: Received[Insertables.TraceAnnotation]) -> _UniqueBy:
|
|
169
|
-
return p.item.obj.name, p.item.trace_rowid, p.item.identifier
|
|
169
|
+
return p.item.obj.name, p.item.trace_rowid, p.item.obj.identifier
|
|
170
170
|
|
|
171
171
|
|
|
172
172
|
def _time(p: Received[Any]) -> datetime:
|
|
@@ -248,7 +248,6 @@ class Insertables(ABC):
|
|
|
248
248
|
class SpanAnnotation(Precursors.SpanAnnotation):
|
|
249
249
|
updated_at: datetime
|
|
250
250
|
span_rowid: int
|
|
251
|
-
identifier: str = ""
|
|
252
251
|
|
|
253
252
|
@property
|
|
254
253
|
def row(self) -> models.SpanAnnotation:
|
|
@@ -261,7 +260,6 @@ class Insertables(ABC):
|
|
|
261
260
|
class TraceAnnotation(Precursors.TraceAnnotation):
|
|
262
261
|
updated_at: datetime
|
|
263
262
|
trace_rowid: int
|
|
264
|
-
identifier: str = ""
|
|
265
263
|
|
|
266
264
|
@property
|
|
267
265
|
def row(self) -> models.TraceAnnotation:
|
|
@@ -274,7 +272,6 @@ class Insertables(ABC):
|
|
|
274
272
|
class DocumentAnnotation(Precursors.DocumentAnnotation):
|
|
275
273
|
updated_at: datetime
|
|
276
274
|
span_rowid: int
|
|
277
|
-
identifier: str = ""
|
|
278
275
|
|
|
279
276
|
@property
|
|
280
277
|
def row(self) -> models.DocumentAnnotation:
|
|
@@ -287,7 +284,6 @@ class Insertables(ABC):
|
|
|
287
284
|
class SessionAnnotation(Precursors.SessionAnnotation):
|
|
288
285
|
updated_at: datetime
|
|
289
286
|
project_session_rowid: int
|
|
290
|
-
identifier: str = ""
|
|
291
287
|
|
|
292
288
|
@property
|
|
293
289
|
def row(self) -> models.ProjectSessionAnnotation:
|
|
@@ -443,6 +443,27 @@ class _RegexStr(TypeDecorator[re.Pattern[str]]):
|
|
|
443
443
|
return re.compile(value)
|
|
444
444
|
|
|
445
445
|
|
|
446
|
+
_HEX_COLOR_PATTERN = re.compile(r"^#([0-9a-f]{6})$")
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
class _HexColor(TypeDecorator[str]):
|
|
450
|
+
# See https://docs.sqlalchemy.org/en/20/core/custom_types.html
|
|
451
|
+
cache_ok = True
|
|
452
|
+
impl = String
|
|
453
|
+
|
|
454
|
+
def process_bind_param(self, value: Optional[str], _: Dialect) -> Optional[str]:
|
|
455
|
+
if value is None:
|
|
456
|
+
return None
|
|
457
|
+
if not _HEX_COLOR_PATTERN.match(value):
|
|
458
|
+
raise ValueError(f"Expected a hex color, got {value}")
|
|
459
|
+
return value
|
|
460
|
+
|
|
461
|
+
def process_result_value(self, value: Optional[str], _: Dialect) -> Optional[str]:
|
|
462
|
+
if value is None:
|
|
463
|
+
return None
|
|
464
|
+
return value
|
|
465
|
+
|
|
466
|
+
|
|
446
467
|
class ExperimentRunOutput(TypedDict, total=False):
|
|
447
468
|
task_output: Any
|
|
448
469
|
|
|
@@ -1125,7 +1146,7 @@ class DatasetLabel(HasId):
|
|
|
1125
1146
|
__tablename__ = "dataset_labels"
|
|
1126
1147
|
name: Mapped[str] = mapped_column(unique=True)
|
|
1127
1148
|
description: Mapped[Optional[str]]
|
|
1128
|
-
color: Mapped[str] = mapped_column(
|
|
1149
|
+
color: Mapped[str] = mapped_column(_HexColor, nullable=False)
|
|
1129
1150
|
datasets_dataset_labels: Mapped[list["DatasetsDatasetLabel"]] = relationship(
|
|
1130
1151
|
"DatasetsDatasetLabel", back_populates="dataset_label"
|
|
1131
1152
|
)
|
|
@@ -76,6 +76,7 @@ from phoenix.server.api.dataloaders import (
|
|
|
76
76
|
UserRolesDataLoader,
|
|
77
77
|
UsersDataLoader,
|
|
78
78
|
)
|
|
79
|
+
from phoenix.server.api.dataloaders.dataset_labels import DatasetLabelsDataLoader
|
|
79
80
|
from phoenix.server.bearer_auth import PhoenixUser
|
|
80
81
|
from phoenix.server.daemons.span_cost_calculator import SpanCostCalculator
|
|
81
82
|
from phoenix.server.dml_event import DmlEvent
|
|
@@ -99,6 +100,7 @@ class DataLoaders:
|
|
|
99
100
|
average_experiment_run_latency: AverageExperimentRunLatencyDataLoader
|
|
100
101
|
dataset_example_revisions: DatasetExampleRevisionsDataLoader
|
|
101
102
|
dataset_example_spans: DatasetExampleSpansDataLoader
|
|
103
|
+
dataset_labels: DatasetLabelsDataLoader
|
|
102
104
|
dataset_examples_and_versions_by_experiment_run: (
|
|
103
105
|
DatasetExamplesAndVersionsByExperimentRunDataLoader
|
|
104
106
|
)
|
{arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/dataloaders/__init__.py
RENAMED
|
@@ -16,6 +16,7 @@ from .dataset_example_splits import DatasetExampleSplitsDataLoader
|
|
|
16
16
|
from .dataset_examples_and_versions_by_experiment_run import (
|
|
17
17
|
DatasetExamplesAndVersionsByExperimentRunDataLoader,
|
|
18
18
|
)
|
|
19
|
+
from .dataset_labels import DatasetLabelsDataLoader
|
|
19
20
|
from .document_evaluation_summaries import (
|
|
20
21
|
DocumentEvaluationSummaryCache,
|
|
21
22
|
DocumentEvaluationSummaryDataLoader,
|
|
@@ -87,6 +88,7 @@ __all__ = [
|
|
|
87
88
|
"DatasetExampleSpansDataLoader",
|
|
88
89
|
"DatasetExamplesAndVersionsByExperimentRunDataLoader",
|
|
89
90
|
"DatasetExampleSplitsDataLoader",
|
|
91
|
+
"DatasetLabelsDataLoader",
|
|
90
92
|
"DocumentEvaluationSummaryDataLoader",
|
|
91
93
|
"DocumentEvaluationsDataLoader",
|
|
92
94
|
"DocumentRetrievalMetricsDataLoader",
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from sqlalchemy import select
|
|
2
|
+
from strawberry.dataloader import DataLoader
|
|
3
|
+
from typing_extensions import TypeAlias
|
|
4
|
+
|
|
5
|
+
from phoenix.db import models
|
|
6
|
+
from phoenix.server.types import DbSessionFactory
|
|
7
|
+
|
|
8
|
+
DatasetID: TypeAlias = int
|
|
9
|
+
Key: TypeAlias = DatasetID
|
|
10
|
+
Result: TypeAlias = list[models.DatasetLabel]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DatasetLabelsDataLoader(DataLoader[Key, Result]):
|
|
14
|
+
def __init__(self, db: DbSessionFactory) -> None:
|
|
15
|
+
super().__init__(load_fn=self._load_fn)
|
|
16
|
+
self._db = db
|
|
17
|
+
|
|
18
|
+
async def _load_fn(self, keys: list[Key]) -> list[Result]:
|
|
19
|
+
dataset_ids = keys
|
|
20
|
+
async with self._db() as session:
|
|
21
|
+
labels: dict[Key, Result] = {}
|
|
22
|
+
for dataset_id, label in await session.execute(
|
|
23
|
+
select(models.DatasetsDatasetLabel.dataset_id, models.DatasetLabel)
|
|
24
|
+
.select_from(models.DatasetLabel)
|
|
25
|
+
.join(
|
|
26
|
+
models.DatasetsDatasetLabel,
|
|
27
|
+
models.DatasetLabel.id == models.DatasetsDatasetLabel.dataset_label_id,
|
|
28
|
+
)
|
|
29
|
+
.where(models.DatasetsDatasetLabel.dataset_id.in_(dataset_ids))
|
|
30
|
+
):
|
|
31
|
+
if dataset_id not in labels:
|
|
32
|
+
labels[dataset_id] = []
|
|
33
|
+
labels[dataset_id].append(label)
|
|
34
|
+
return [
|
|
35
|
+
sorted(labels.get(dataset_id, []), key=lambda label: label.name) for dataset_id in keys
|
|
36
|
+
]
|
{arize_phoenix-12.0.0 → arize_phoenix-12.2.0}/src/phoenix/server/api/helpers/playground_clients.py
RENAMED
|
@@ -1677,6 +1677,7 @@ class AnthropicStreamingClient(PlaygroundStreamingClient):
|
|
|
1677
1677
|
@register_llm_client(
|
|
1678
1678
|
provider_key=GenerativeProviderKey.ANTHROPIC,
|
|
1679
1679
|
model_names=[
|
|
1680
|
+
"claude-sonnet-4-5",
|
|
1680
1681
|
"claude-sonnet-4-0",
|
|
1681
1682
|
"claude-sonnet-4-20250514",
|
|
1682
1683
|
"claude-opus-4-1",
|
|
@@ -5,6 +5,7 @@ from phoenix.server.api.mutations.api_key_mutations import ApiKeyMutationMixin
|
|
|
5
5
|
from phoenix.server.api.mutations.chat_mutations import (
|
|
6
6
|
ChatCompletionMutationMixin,
|
|
7
7
|
)
|
|
8
|
+
from phoenix.server.api.mutations.dataset_label_mutations import DatasetLabelMutationMixin
|
|
8
9
|
from phoenix.server.api.mutations.dataset_mutations import DatasetMutationMixin
|
|
9
10
|
from phoenix.server.api.mutations.dataset_split_mutations import DatasetSplitMutationMixin
|
|
10
11
|
from phoenix.server.api.mutations.experiment_mutations import ExperimentMutationMixin
|
|
@@ -31,6 +32,7 @@ class Mutation(
|
|
|
31
32
|
AnnotationConfigMutationMixin,
|
|
32
33
|
ApiKeyMutationMixin,
|
|
33
34
|
ChatCompletionMutationMixin,
|
|
35
|
+
DatasetLabelMutationMixin,
|
|
34
36
|
DatasetMutationMixin,
|
|
35
37
|
DatasetSplitMutationMixin,
|
|
36
38
|
ExperimentMutationMixin,
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
import sqlalchemy
|
|
4
|
+
import strawberry
|
|
5
|
+
from sqlalchemy import delete, select
|
|
6
|
+
from sqlalchemy.exc import IntegrityError as PostgreSQLIntegrityError
|
|
7
|
+
from sqlean.dbapi2 import IntegrityError as SQLiteIntegrityError # type: ignore[import-untyped]
|
|
8
|
+
from strawberry import UNSET
|
|
9
|
+
from strawberry.relay.types import GlobalID
|
|
10
|
+
from strawberry.types import Info
|
|
11
|
+
|
|
12
|
+
from phoenix.db import models
|
|
13
|
+
from phoenix.server.api.auth import IsLocked, IsNotReadOnly
|
|
14
|
+
from phoenix.server.api.context import Context
|
|
15
|
+
from phoenix.server.api.exceptions import BadRequest, Conflict, NotFound
|
|
16
|
+
from phoenix.server.api.queries import Query
|
|
17
|
+
from phoenix.server.api.types.Dataset import Dataset
|
|
18
|
+
from phoenix.server.api.types.DatasetLabel import DatasetLabel, to_gql_dataset_label
|
|
19
|
+
from phoenix.server.api.types.node import from_global_id_with_expected_type
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@strawberry.input
|
|
23
|
+
class CreateDatasetLabelInput:
|
|
24
|
+
name: str
|
|
25
|
+
description: Optional[str] = UNSET
|
|
26
|
+
color: str
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@strawberry.type
|
|
30
|
+
class CreateDatasetLabelMutationPayload:
|
|
31
|
+
dataset_label: DatasetLabel
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@strawberry.input
|
|
35
|
+
class DeleteDatasetLabelsInput:
|
|
36
|
+
dataset_label_ids: list[GlobalID]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@strawberry.type
|
|
40
|
+
class DeleteDatasetLabelsMutationPayload:
|
|
41
|
+
dataset_labels: list[DatasetLabel]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@strawberry.input
|
|
45
|
+
class UpdateDatasetLabelInput:
|
|
46
|
+
dataset_label_id: GlobalID
|
|
47
|
+
name: str
|
|
48
|
+
description: Optional[str] = None
|
|
49
|
+
color: str
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@strawberry.type
|
|
53
|
+
class UpdateDatasetLabelMutationPayload:
|
|
54
|
+
dataset_label: DatasetLabel
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@strawberry.input
|
|
58
|
+
class SetDatasetLabelsInput:
|
|
59
|
+
dataset_label_ids: list[GlobalID]
|
|
60
|
+
dataset_ids: list[GlobalID]
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@strawberry.type
|
|
64
|
+
class SetDatasetLabelsMutationPayload:
|
|
65
|
+
query: "Query"
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@strawberry.input
|
|
69
|
+
class UnsetDatasetLabelsInput:
|
|
70
|
+
dataset_label_ids: list[GlobalID]
|
|
71
|
+
dataset_ids: list[GlobalID]
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
@strawberry.type
|
|
75
|
+
class UnsetDatasetLabelsMutationPayload:
|
|
76
|
+
query: "Query"
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@strawberry.type
|
|
80
|
+
class DatasetLabelMutationMixin:
|
|
81
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
82
|
+
async def create_dataset_label(
|
|
83
|
+
self,
|
|
84
|
+
info: Info[Context, None],
|
|
85
|
+
input: CreateDatasetLabelInput,
|
|
86
|
+
) -> CreateDatasetLabelMutationPayload:
|
|
87
|
+
name = input.name
|
|
88
|
+
description = input.description
|
|
89
|
+
color = input.color
|
|
90
|
+
async with info.context.db() as session:
|
|
91
|
+
dataset_label_orm = models.DatasetLabel(name=name, description=description, color=color)
|
|
92
|
+
session.add(dataset_label_orm)
|
|
93
|
+
try:
|
|
94
|
+
await session.commit()
|
|
95
|
+
except (PostgreSQLIntegrityError, SQLiteIntegrityError):
|
|
96
|
+
raise Conflict(f"A dataset label named '{name}' already exists")
|
|
97
|
+
except sqlalchemy.exc.StatementError as error:
|
|
98
|
+
raise BadRequest(str(error.orig))
|
|
99
|
+
return CreateDatasetLabelMutationPayload(
|
|
100
|
+
dataset_label=to_gql_dataset_label(dataset_label_orm)
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
104
|
+
async def update_dataset_label(
|
|
105
|
+
self, info: Info[Context, None], input: UpdateDatasetLabelInput
|
|
106
|
+
) -> UpdateDatasetLabelMutationPayload:
|
|
107
|
+
if not input.name or not input.name.strip():
|
|
108
|
+
raise BadRequest("Dataset label name cannot be empty")
|
|
109
|
+
|
|
110
|
+
try:
|
|
111
|
+
dataset_label_id = from_global_id_with_expected_type(
|
|
112
|
+
input.dataset_label_id, DatasetLabel.__name__
|
|
113
|
+
)
|
|
114
|
+
except ValueError:
|
|
115
|
+
raise BadRequest(f"Invalid dataset label ID: {input.dataset_label_id}")
|
|
116
|
+
|
|
117
|
+
async with info.context.db() as session:
|
|
118
|
+
dataset_label_orm = await session.get(models.DatasetLabel, dataset_label_id)
|
|
119
|
+
if not dataset_label_orm:
|
|
120
|
+
raise NotFound(f"DatasetLabel with ID {input.dataset_label_id} not found")
|
|
121
|
+
|
|
122
|
+
dataset_label_orm.name = input.name.strip()
|
|
123
|
+
dataset_label_orm.description = input.description
|
|
124
|
+
dataset_label_orm.color = input.color.strip()
|
|
125
|
+
|
|
126
|
+
try:
|
|
127
|
+
await session.commit()
|
|
128
|
+
except (PostgreSQLIntegrityError, SQLiteIntegrityError):
|
|
129
|
+
raise Conflict(f"A dataset label named '{input.name}' already exists")
|
|
130
|
+
except sqlalchemy.exc.StatementError as error:
|
|
131
|
+
raise BadRequest(str(error.orig))
|
|
132
|
+
return UpdateDatasetLabelMutationPayload(
|
|
133
|
+
dataset_label=to_gql_dataset_label(dataset_label_orm)
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
137
|
+
async def delete_dataset_labels(
|
|
138
|
+
self, info: Info[Context, None], input: DeleteDatasetLabelsInput
|
|
139
|
+
) -> DeleteDatasetLabelsMutationPayload:
|
|
140
|
+
dataset_label_row_ids: dict[int, None] = {}
|
|
141
|
+
for dataset_label_node_id in input.dataset_label_ids:
|
|
142
|
+
try:
|
|
143
|
+
dataset_label_row_id = from_global_id_with_expected_type(
|
|
144
|
+
dataset_label_node_id, DatasetLabel.__name__
|
|
145
|
+
)
|
|
146
|
+
except ValueError:
|
|
147
|
+
raise BadRequest(f"Unknown dataset label: {dataset_label_node_id}")
|
|
148
|
+
dataset_label_row_ids[dataset_label_row_id] = None
|
|
149
|
+
async with info.context.db() as session:
|
|
150
|
+
stmt = (
|
|
151
|
+
delete(models.DatasetLabel)
|
|
152
|
+
.where(models.DatasetLabel.id.in_(dataset_label_row_ids.keys()))
|
|
153
|
+
.returning(models.DatasetLabel)
|
|
154
|
+
)
|
|
155
|
+
deleted_dataset_labels = (await session.scalars(stmt)).all()
|
|
156
|
+
if len(deleted_dataset_labels) < len(dataset_label_row_ids):
|
|
157
|
+
await session.rollback()
|
|
158
|
+
raise NotFound("Could not find one or more dataset labels with given IDs")
|
|
159
|
+
deleted_dataset_labels_by_id = {
|
|
160
|
+
dataset_label.id: dataset_label for dataset_label in deleted_dataset_labels
|
|
161
|
+
}
|
|
162
|
+
return DeleteDatasetLabelsMutationPayload(
|
|
163
|
+
dataset_labels=[
|
|
164
|
+
to_gql_dataset_label(deleted_dataset_labels_by_id[dataset_label_row_id])
|
|
165
|
+
for dataset_label_row_id in dataset_label_row_ids
|
|
166
|
+
]
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
170
|
+
async def set_dataset_labels(
|
|
171
|
+
self, info: Info[Context, None], input: SetDatasetLabelsInput
|
|
172
|
+
) -> SetDatasetLabelsMutationPayload:
|
|
173
|
+
if not input.dataset_ids:
|
|
174
|
+
raise BadRequest("No datasets provided.")
|
|
175
|
+
if not input.dataset_label_ids:
|
|
176
|
+
raise BadRequest("No dataset labels provided.")
|
|
177
|
+
|
|
178
|
+
unique_dataset_rowids: set[int] = set()
|
|
179
|
+
for dataset_gid in input.dataset_ids:
|
|
180
|
+
try:
|
|
181
|
+
dataset_rowid = from_global_id_with_expected_type(dataset_gid, Dataset.__name__)
|
|
182
|
+
except ValueError:
|
|
183
|
+
raise BadRequest(f"Invalid dataset ID: {dataset_gid}")
|
|
184
|
+
unique_dataset_rowids.add(dataset_rowid)
|
|
185
|
+
dataset_rowids = list(unique_dataset_rowids)
|
|
186
|
+
|
|
187
|
+
unique_dataset_label_rowids: set[int] = set()
|
|
188
|
+
for dataset_label_gid in input.dataset_label_ids:
|
|
189
|
+
try:
|
|
190
|
+
dataset_label_rowid = from_global_id_with_expected_type(
|
|
191
|
+
dataset_label_gid, DatasetLabel.__name__
|
|
192
|
+
)
|
|
193
|
+
except ValueError:
|
|
194
|
+
raise BadRequest(f"Invalid dataset label ID: {dataset_label_gid}")
|
|
195
|
+
unique_dataset_label_rowids.add(dataset_label_rowid)
|
|
196
|
+
dataset_label_rowids = list(unique_dataset_label_rowids)
|
|
197
|
+
|
|
198
|
+
async with info.context.db() as session:
|
|
199
|
+
existing_dataset_ids = (
|
|
200
|
+
await session.scalars(
|
|
201
|
+
select(models.Dataset.id).where(models.Dataset.id.in_(dataset_rowids))
|
|
202
|
+
)
|
|
203
|
+
).all()
|
|
204
|
+
if len(existing_dataset_ids) != len(dataset_rowids):
|
|
205
|
+
raise NotFound("One or more datasets not found")
|
|
206
|
+
|
|
207
|
+
existing_dataset_label_ids = (
|
|
208
|
+
await session.scalars(
|
|
209
|
+
select(models.DatasetLabel.id).where(
|
|
210
|
+
models.DatasetLabel.id.in_(dataset_label_rowids)
|
|
211
|
+
)
|
|
212
|
+
)
|
|
213
|
+
).all()
|
|
214
|
+
if len(existing_dataset_label_ids) != len(dataset_label_rowids):
|
|
215
|
+
raise NotFound("One or more dataset labels not found")
|
|
216
|
+
|
|
217
|
+
existing_dataset_label_keys = await session.execute(
|
|
218
|
+
select(
|
|
219
|
+
models.DatasetsDatasetLabel.dataset_id,
|
|
220
|
+
models.DatasetsDatasetLabel.dataset_label_id,
|
|
221
|
+
).where(
|
|
222
|
+
models.DatasetsDatasetLabel.dataset_id.in_(dataset_rowids)
|
|
223
|
+
& models.DatasetsDatasetLabel.dataset_label_id.in_(dataset_label_rowids)
|
|
224
|
+
)
|
|
225
|
+
)
|
|
226
|
+
unique_dataset_label_keys = set(existing_dataset_label_keys.all())
|
|
227
|
+
|
|
228
|
+
datasets_dataset_labels = []
|
|
229
|
+
for dataset_rowid in dataset_rowids:
|
|
230
|
+
for dataset_label_rowid in dataset_label_rowids:
|
|
231
|
+
if (dataset_rowid, dataset_label_rowid) in unique_dataset_label_keys:
|
|
232
|
+
continue
|
|
233
|
+
datasets_dataset_labels.append(
|
|
234
|
+
models.DatasetsDatasetLabel(
|
|
235
|
+
dataset_id=dataset_rowid,
|
|
236
|
+
dataset_label_id=dataset_label_rowid,
|
|
237
|
+
)
|
|
238
|
+
)
|
|
239
|
+
session.add_all(datasets_dataset_labels)
|
|
240
|
+
|
|
241
|
+
if datasets_dataset_labels:
|
|
242
|
+
try:
|
|
243
|
+
await session.commit()
|
|
244
|
+
except (PostgreSQLIntegrityError, SQLiteIntegrityError) as e:
|
|
245
|
+
raise Conflict("Failed to add dataset labels to datasets.") from e
|
|
246
|
+
|
|
247
|
+
return SetDatasetLabelsMutationPayload(
|
|
248
|
+
query=Query(),
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
252
|
+
async def unset_dataset_labels(
|
|
253
|
+
self, info: Info[Context, None], input: UnsetDatasetLabelsInput
|
|
254
|
+
) -> UnsetDatasetLabelsMutationPayload:
|
|
255
|
+
if not input.dataset_ids:
|
|
256
|
+
raise BadRequest("No datasets provided.")
|
|
257
|
+
if not input.dataset_label_ids:
|
|
258
|
+
raise BadRequest("No dataset labels provided.")
|
|
259
|
+
|
|
260
|
+
unique_dataset_rowids: set[int] = set()
|
|
261
|
+
for dataset_gid in input.dataset_ids:
|
|
262
|
+
try:
|
|
263
|
+
dataset_rowid = from_global_id_with_expected_type(dataset_gid, Dataset.__name__)
|
|
264
|
+
except ValueError:
|
|
265
|
+
raise BadRequest(f"Invalid dataset ID: {dataset_gid}")
|
|
266
|
+
unique_dataset_rowids.add(dataset_rowid)
|
|
267
|
+
dataset_rowids = list(unique_dataset_rowids)
|
|
268
|
+
|
|
269
|
+
unique_dataset_label_rowids: set[int] = set()
|
|
270
|
+
for dataset_label_gid in input.dataset_label_ids:
|
|
271
|
+
try:
|
|
272
|
+
dataset_label_rowid = from_global_id_with_expected_type(
|
|
273
|
+
dataset_label_gid, DatasetLabel.__name__
|
|
274
|
+
)
|
|
275
|
+
except ValueError:
|
|
276
|
+
raise BadRequest(f"Invalid dataset label ID: {dataset_label_gid}")
|
|
277
|
+
unique_dataset_label_rowids.add(dataset_label_rowid)
|
|
278
|
+
dataset_label_rowids = list(unique_dataset_label_rowids)
|
|
279
|
+
|
|
280
|
+
async with info.context.db() as session:
|
|
281
|
+
await session.execute(
|
|
282
|
+
delete(models.DatasetsDatasetLabel).where(
|
|
283
|
+
models.DatasetsDatasetLabel.dataset_id.in_(dataset_rowids)
|
|
284
|
+
& models.DatasetsDatasetLabel.dataset_label_id.in_(dataset_label_rowids)
|
|
285
|
+
)
|
|
286
|
+
)
|
|
287
|
+
await session.commit()
|
|
288
|
+
|
|
289
|
+
return UnsetDatasetLabelsMutationPayload(
|
|
290
|
+
query=Query(),
|
|
291
|
+
)
|
|
@@ -15,6 +15,7 @@ from phoenix.server.api.context import Context
|
|
|
15
15
|
from phoenix.server.api.exceptions import BadRequest, Conflict, NotFound
|
|
16
16
|
from phoenix.server.api.helpers.playground_users import get_user
|
|
17
17
|
from phoenix.server.api.queries import Query
|
|
18
|
+
from phoenix.server.api.types.DatasetExample import DatasetExample, to_gql_dataset_example
|
|
18
19
|
from phoenix.server.api.types.DatasetSplit import DatasetSplit, to_gql_dataset_split
|
|
19
20
|
from phoenix.server.api.types.node import from_global_id_with_expected_type
|
|
20
21
|
|
|
@@ -68,6 +69,13 @@ class DatasetSplitMutationPayload:
|
|
|
68
69
|
query: "Query"
|
|
69
70
|
|
|
70
71
|
|
|
72
|
+
@strawberry.type
|
|
73
|
+
class DatasetSplitMutationPayloadWithExamples:
|
|
74
|
+
dataset_split: DatasetSplit
|
|
75
|
+
query: "Query"
|
|
76
|
+
examples: list[DatasetExample]
|
|
77
|
+
|
|
78
|
+
|
|
71
79
|
@strawberry.type
|
|
72
80
|
class DeleteDatasetSplitsMutationPayload:
|
|
73
81
|
dataset_splits: list[DatasetSplit]
|
|
@@ -77,11 +85,13 @@ class DeleteDatasetSplitsMutationPayload:
|
|
|
77
85
|
@strawberry.type
|
|
78
86
|
class AddDatasetExamplesToDatasetSplitsMutationPayload:
|
|
79
87
|
query: "Query"
|
|
88
|
+
examples: list[DatasetExample]
|
|
80
89
|
|
|
81
90
|
|
|
82
91
|
@strawberry.type
|
|
83
92
|
class RemoveDatasetExamplesFromDatasetSplitsMutationPayload:
|
|
84
93
|
query: "Query"
|
|
94
|
+
examples: list[DatasetExample]
|
|
85
95
|
|
|
86
96
|
|
|
87
97
|
@strawberry.type
|
|
@@ -262,8 +272,16 @@ class DatasetSplitMutationMixin:
|
|
|
262
272
|
except (PostgreSQLIntegrityError, SQLiteIntegrityError) as e:
|
|
263
273
|
raise Conflict("Failed to add examples to dataset splits.") from e
|
|
264
274
|
|
|
275
|
+
examples = (
|
|
276
|
+
await session.scalars(
|
|
277
|
+
select(models.DatasetExample).where(
|
|
278
|
+
models.DatasetExample.id.in_(example_rowids)
|
|
279
|
+
)
|
|
280
|
+
)
|
|
281
|
+
).all()
|
|
265
282
|
return AddDatasetExamplesToDatasetSplitsMutationPayload(
|
|
266
283
|
query=Query(),
|
|
284
|
+
examples=[to_gql_dataset_example(example) for example in examples],
|
|
267
285
|
)
|
|
268
286
|
|
|
269
287
|
@strawberry.mutation(permission_classes=[IsNotReadOnly]) # type: ignore
|
|
@@ -314,14 +332,23 @@ class DatasetSplitMutationMixin:
|
|
|
314
332
|
|
|
315
333
|
await session.execute(stmt)
|
|
316
334
|
|
|
335
|
+
examples = (
|
|
336
|
+
await session.scalars(
|
|
337
|
+
select(models.DatasetExample).where(
|
|
338
|
+
models.DatasetExample.id.in_(example_rowids)
|
|
339
|
+
)
|
|
340
|
+
)
|
|
341
|
+
).all()
|
|
342
|
+
|
|
317
343
|
return RemoveDatasetExamplesFromDatasetSplitsMutationPayload(
|
|
318
344
|
query=Query(),
|
|
345
|
+
examples=[to_gql_dataset_example(example) for example in examples],
|
|
319
346
|
)
|
|
320
347
|
|
|
321
348
|
@strawberry.mutation(permission_classes=[IsNotReadOnly, IsLocked]) # type: ignore
|
|
322
349
|
async def create_dataset_split_with_examples(
|
|
323
350
|
self, info: Info[Context, None], input: CreateDatasetSplitWithExamplesInput
|
|
324
|
-
) ->
|
|
351
|
+
) -> DatasetSplitMutationPayloadWithExamples:
|
|
325
352
|
user_id = get_user(info)
|
|
326
353
|
validated_name = _validated_name(input.name)
|
|
327
354
|
unique_example_rowids: set[int] = set()
|
|
@@ -374,9 +401,18 @@ class DatasetSplitMutationMixin:
|
|
|
374
401
|
"Failed to associate examples with the new dataset split."
|
|
375
402
|
) from e
|
|
376
403
|
|
|
377
|
-
|
|
404
|
+
examples = (
|
|
405
|
+
await session.scalars(
|
|
406
|
+
select(models.DatasetExample).where(
|
|
407
|
+
models.DatasetExample.id.in_(example_rowids)
|
|
408
|
+
)
|
|
409
|
+
)
|
|
410
|
+
).all()
|
|
411
|
+
|
|
412
|
+
return DatasetSplitMutationPayloadWithExamples(
|
|
378
413
|
dataset_split=to_gql_dataset_split(dataset_split_orm),
|
|
379
414
|
query=Query(),
|
|
415
|
+
examples=[to_gql_dataset_example(example) for example in examples],
|
|
380
416
|
)
|
|
381
417
|
|
|
382
418
|
|
|
@@ -48,6 +48,7 @@ from phoenix.server.api.types.AnnotationConfig import AnnotationConfig, to_gql_a
|
|
|
48
48
|
from phoenix.server.api.types.Cluster import Cluster, to_gql_clusters
|
|
49
49
|
from phoenix.server.api.types.Dataset import Dataset, to_gql_dataset
|
|
50
50
|
from phoenix.server.api.types.DatasetExample import DatasetExample
|
|
51
|
+
from phoenix.server.api.types.DatasetLabel import DatasetLabel, to_gql_dataset_label
|
|
51
52
|
from phoenix.server.api.types.DatasetSplit import DatasetSplit, to_gql_dataset_split
|
|
52
53
|
from phoenix.server.api.types.Dimension import to_gql_dimension
|
|
53
54
|
from phoenix.server.api.types.EmbeddingDimension import (
|
|
@@ -1149,6 +1150,26 @@ class Query:
|
|
|
1149
1150
|
args=args,
|
|
1150
1151
|
)
|
|
1151
1152
|
|
|
1153
|
+
@strawberry.field
|
|
1154
|
+
async def dataset_labels(
|
|
1155
|
+
self,
|
|
1156
|
+
info: Info[Context, None],
|
|
1157
|
+
first: Optional[int] = 50,
|
|
1158
|
+
last: Optional[int] = UNSET,
|
|
1159
|
+
after: Optional[CursorString] = UNSET,
|
|
1160
|
+
before: Optional[CursorString] = UNSET,
|
|
1161
|
+
) -> Connection[DatasetLabel]:
|
|
1162
|
+
args = ConnectionArgs(
|
|
1163
|
+
first=first,
|
|
1164
|
+
after=after if isinstance(after, CursorString) else None,
|
|
1165
|
+
last=last,
|
|
1166
|
+
before=before if isinstance(before, CursorString) else None,
|
|
1167
|
+
)
|
|
1168
|
+
async with info.context.db() as session:
|
|
1169
|
+
dataset_labels = await session.scalars(select(models.DatasetLabel))
|
|
1170
|
+
data = [to_gql_dataset_label(dataset_label) for dataset_label in dataset_labels]
|
|
1171
|
+
return connection_from_list(data=data, args=args)
|
|
1172
|
+
|
|
1152
1173
|
@strawberry.field
|
|
1153
1174
|
async def dataset_splits(
|
|
1154
1175
|
self,
|