arize-phoenix 10.2.2__tar.gz → 10.3.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-10.2.2 → arize_phoenix-10.3.0}/PKG-INFO +5 -2
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/README.md +4 -1
- arize_phoenix-10.3.0/src/phoenix/db/enums.py +10 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/facilitator.py +25 -33
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/models.py +6 -1
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/api_key_mutations.py +5 -4
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/user_mutations.py +3 -11
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/queries.py +5 -5
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/oauth2.py +1 -4
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/__init__.py +2 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/models.py +7 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/projects.py +2 -3
- arize_phoenix-10.3.0/src/phoenix/server/api/routers/v1/users.py +346 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/bearer_auth.py +3 -4
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/jwt_store.py +9 -9
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/.vite/manifest.json +9 -9
- arize_phoenix-10.2.2/src/phoenix/server/static/assets/components-ClD3sHta.js → arize_phoenix-10.3.0/src/phoenix/server/static/assets/components-DVEsaeYg.js +2 -2
- arize_phoenix-10.2.2/src/phoenix/server/static/assets/index-CXawXHw0.js → arize_phoenix-10.3.0/src/phoenix/server/static/assets/index-cY-swWDK.js +2 -2
- arize_phoenix-10.2.2/src/phoenix/server/static/assets/pages-BFtNRfTL.js → arize_phoenix-10.3.0/src/phoenix/server/static/assets/pages-xeDsefDx.js +389 -389
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/types.py +3 -2
- arize_phoenix-10.3.0/src/phoenix/version.py +1 -0
- arize_phoenix-10.2.2/src/phoenix/db/enums.py +0 -19
- arize_phoenix-10.2.2/src/phoenix/version.py +0 -1
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/.gitignore +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/IP_NOTICE +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/LICENSE +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/pyproject.toml +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/auth.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/config.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/core/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/core/embedding_dimension.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/core/model.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/core/model_schema.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/core/model_schema_adapter.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/datetime_utils.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/README.md +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/alembic.ini +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/bulk_inserter.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/constants.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/engines.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/helpers.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/constants.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/dataset.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/document_annotation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/evaluation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/helpers.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/span.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/span_annotation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/trace_annotation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/insertion/types.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrate.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/data_migration_scripts/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/data_migration_scripts/populate_project_sessions.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/env.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/script.py.mako +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/10460e46d750_datasets.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/2f9d1a65945f_annotation_config_migration.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/4ded9e43755f_create_project_sessions_table.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/6a88424799fe_update_users_with_auth_method.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/8a3764fe7f1a_change_jsonb_to_json_for_prompts.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/bb8139330879_create_project_trace_retention_policies_table.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/bc8fea3c2bc8_add_prompt_tables.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/cd164e83824f_users_and_tokens.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/migrations/versions/cf03bd6bae1d_init.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/pg_config.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/types/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/types/annotation_configs.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/types/db_models.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/types/identifier.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/types/model_provider.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/db/types/trace_retention.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/exceptions.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/evaluators/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/evaluators/base.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/evaluators/code_evaluators.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/evaluators/llm_evaluators.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/evaluators/utils.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/functions.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/tracing.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/types.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/experiments/utils.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/inferences/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/inferences/errors.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/inferences/fixtures.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/inferences/inferences.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/inferences/schema.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/inferences/validation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/logging/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/logging/_config.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/logging/_filter.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/logging/_formatter.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/metrics/README.md +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/metrics/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/metrics/binning.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/metrics/metrics.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/metrics/mixins.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/metrics/retrieval_metrics.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/metrics/timeseries.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/metrics/wrappers.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/pointcloud/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/pointcloud/clustering.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/pointcloud/pointcloud.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/pointcloud/projectors.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/pointcloud/umap_parameters.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/py.typed +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/README.md +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/auth.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/context.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/annotation_summaries.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/average_experiment_run_latency.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/cache/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/cache/two_tier_cache.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/dataset_example_revisions.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/dataset_example_spans.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/document_evaluation_summaries.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/document_evaluations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/document_retrieval_metrics.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/experiment_annotation_summaries.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/experiment_error_rates.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/experiment_run_annotations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/experiment_run_counts.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/experiment_sequence_number.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/latency_ms_quantile.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/min_start_or_max_end_times.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/num_child_spans.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/num_spans_per_trace.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/project_by_name.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/project_ids_by_trace_retention_policy_id.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/prompt_version_sequence_number.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/record_counts.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/session_io.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/session_num_traces.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/session_num_traces_with_error.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/session_token_usages.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/session_trace_latency_ms_quantile.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/span_annotations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/span_by_id.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/span_dataset_examples.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/span_descendants.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/span_projects.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/table_fields.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/token_counts.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/trace_by_trace_ids.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/trace_retention_policy_id_by_project_id.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/trace_root_spans.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/user_roles.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/dataloaders/users.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/exceptions.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/annotations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/dataset_helpers.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/experiment_run_filters.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/playground_clients.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/playground_registry.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/playground_spans.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/prompts/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/prompts/conversions/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/prompts/conversions/anthropic.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/prompts/conversions/openai.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/helpers/prompts/models.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/AddExamplesToDatasetInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/AddSpansToDatasetInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/ChatCompletionInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/ChatCompletionMessageInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/ClearProjectInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/ClusterInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/Coordinates.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/CreateDatasetInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/CreateSpanAnnotationInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/CreateTraceAnnotationInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DataQualityMetricInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DatasetExampleInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DatasetSort.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DatasetVersionSort.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DeleteAnnotationsInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DeleteDatasetExamplesInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DeleteDatasetInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DeleteExperimentsInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DimensionFilter.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/DimensionInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/GenerativeModelInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/Granularity.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/InvocationParameters.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/PatchAnnotationInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/PatchDatasetExamplesInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/PatchDatasetInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/PerformanceMetricInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/ProjectFilter.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/ProjectSessionSort.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/ProjectSort.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/PromptTemplateOptions.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/PromptVersionInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/SpanAnnotationFilter.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/SpanAnnotationSort.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/SpanSort.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/TimeRange.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/TraceAnnotationSort.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/UserRoleInput.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/input_types/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/interceptor.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/annotation_config_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/chat_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/dataset_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/experiment_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/export_events_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/project_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/project_trace_retention_policy_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/prompt_label_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/prompt_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/prompt_version_tag_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/span_annotations_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/trace_annotations_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/trace_mutations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/openapi/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/openapi/main.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/openapi/schema.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/auth.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/embeddings.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/utils.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/annotation_configs.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/annotations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/datasets.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/evaluations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/experiment_evaluations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/experiment_runs.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/experiments.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/prompts.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/spans.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/traces.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/routers/v1/utils.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/schema.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/subscriptions.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Annotation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/AnnotationConfig.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/AnnotationSource.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/AnnotationSummary.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/AnnotatorKind.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ApiKey.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/AuthMethod.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ChatCompletionMessageRole.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ChatCompletionSubscriptionPayload.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Cluster.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/CreateDatasetPayload.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/CronExpression.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DataQualityMetric.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Dataset.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DatasetExample.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DatasetExampleRevision.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DatasetValues.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DatasetVersion.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Dimension.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DimensionDataType.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DimensionShape.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DimensionType.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DimensionWithValue.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DocumentEvaluationSummary.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/DocumentRetrievalMetrics.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/EmbeddingDimension.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/EmbeddingMetadata.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Evaluation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/EvaluationSummary.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Event.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/EventMetadata.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ExampleRevisionInterface.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Experiment.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ExperimentAnnotationSummary.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ExperimentComparison.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ExperimentRun.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ExperimentRunAnnotation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ExportedFile.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Functionality.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/GenerativeModel.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/GenerativeProvider.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Identifier.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Inferences.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/InferencesRole.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/LabelFraction.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/MimeType.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Model.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/NumericRange.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/PerformanceMetric.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Project.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ProjectSession.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ProjectTraceRetentionPolicy.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Prompt.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/PromptLabel.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/PromptResponse.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/PromptVersion.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/PromptVersionTag.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/PromptVersionTemplate.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ResponseFormat.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Retrieval.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ScalarDriftMetricEnum.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Segments.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/SortDir.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Span.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/SpanAnnotation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/SpanIOValue.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/SystemApiKey.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/TimeSeries.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/TokenCountPromptDetails.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/TokenUsage.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ToolDefinition.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/Trace.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/TraceAnnotation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/UMAPPoints.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/User.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/UserApiKey.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/UserRole.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/ValidationResult.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/VectorDriftMetricEnum.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/node.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/types/pagination.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/utils.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/app.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/authorization.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/cost_tracking/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/cost_tracking/cost_lookup.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/cost_tracking/model_cost_manifest.json +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/dml_event.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/dml_event_handler.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/email/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/email/sender.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/email/templates/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/email/templates/password_reset.html +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/email/templates/welcome.html +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/email/types.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/grpc_server.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/main.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/middleware/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/middleware/gzip.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/oauth2.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/openapi/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/prometheus.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/rate_limiters.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/retention.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/apple-touch-icon-114x114.png +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/apple-touch-icon-120x120.png +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/apple-touch-icon-144x144.png +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/apple-touch-icon-152x152.png +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/apple-touch-icon-180x180.png +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/apple-touch-icon-72x72.png +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/apple-touch-icon-76x76.png +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/apple-touch-icon.png +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/assets/vendor-DOUbLVp5.js +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/assets/vendor-WIZid84E.css +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/assets/vendor-arizeai-DHqMQzfV.js +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/assets/vendor-codemirror-DWdZV1Is.js +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/assets/vendor-recharts-BfHdRd1Y.js +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/assets/vendor-shiki-CHu75YVL.js +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/assets/vendor-three-C5WAXd5r.js +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/favicon.ico +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/static/modernizr.js +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/telemetry.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/templates/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/templates/index.html +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/thread_server.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/services.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/session/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/session/client.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/session/data_extractor.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/session/evaluation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/session/session.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/settings.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/attributes.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/dsl/README.md +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/dsl/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/dsl/filter.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/dsl/helpers.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/dsl/query.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/errors.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/evaluation_conventions.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/exporter.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/fixtures.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/otel.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/projects.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/schemas.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/span_evaluations.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/span_json_decoder.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/span_json_encoder.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/trace_dataset.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/utils.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/v1/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/v1/evaluation_pb2.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/trace/v1/evaluation_pb2.pyi +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/utilities/__init__.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/utilities/client.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/utilities/deprecation.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/utilities/error_handling.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/utilities/json.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/utilities/logging.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/utilities/project.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/utilities/re.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/utilities/span_store.py +0 -0
- {arize_phoenix-10.2.2 → arize_phoenix-10.3.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: 10.
|
|
3
|
+
Version: 10.3.0
|
|
4
4
|
Summary: AI Observability and Evaluation
|
|
5
5
|
Project-URL: Documentation, https://docs.arize.com/phoenix/
|
|
6
6
|
Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
|
|
@@ -158,6 +158,9 @@ Description-Content-Type: text/markdown
|
|
|
158
158
|
<a target="_blank" href="https://hub.docker.com/r/arizephoenix/phoenix/tags">
|
|
159
159
|
<img src="https://img.shields.io/docker/v/arizephoenix/phoenix?sort=semver&logo=docker&label=image&color=blue">
|
|
160
160
|
</a>
|
|
161
|
+
<a target="_blank" href="https://hub.docker.com/r/arizephoenix/phoenix-helm">
|
|
162
|
+
<img src="https://img.shields.io/badge/Helm-blue?style=flat&logo=helm&labelColor=grey"/>
|
|
163
|
+
</a>
|
|
161
164
|
<a target="_blank" href="https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp">
|
|
162
165
|
<img src="https://badge.mcpx.dev?status=on" title="MCP Enabled"/>
|
|
163
166
|
</a>
|
|
@@ -238,7 +241,7 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
|
|
|
238
241
|
| [LangChain.js](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain.js) | `@arizeai/openinference-instrumentation-langchain` | [](https://www.npmjs.com/package/@arizeai/openinference-instrumentation-langchain) |
|
|
239
242
|
| [Vercel AI SDK](https://docs.arize.com/phoenix/tracing/integrations-tracing/vercel-ai-sdk) | `@arizeai/openinference-vercel` | [](https://www.npmjs.com/package/@arizeai/openinference-vercel) |
|
|
240
243
|
| [BeeAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/beeai) | `@arizeai/openinference-instrumentation-beeai` | [](https://www.npmjs.com/package/@arizeai/openinference-instrumentation-beeai) |
|
|
241
|
-
| [Mastra](https://docs.arize.com/phoenix/integrations/mastra) | `@arizeai/openinference-
|
|
244
|
+
| [Mastra](https://docs.arize.com/phoenix/integrations/mastra) | `@arizeai/openinference-mastra` | [](https://www.npmjs.com/package/@arizeai/openinference-mastra) |
|
|
242
245
|
|
|
243
246
|
### Platforms
|
|
244
247
|
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
<a target="_blank" href="https://hub.docker.com/r/arizephoenix/phoenix/tags">
|
|
29
29
|
<img src="https://img.shields.io/docker/v/arizephoenix/phoenix?sort=semver&logo=docker&label=image&color=blue">
|
|
30
30
|
</a>
|
|
31
|
+
<a target="_blank" href="https://hub.docker.com/r/arizephoenix/phoenix-helm">
|
|
32
|
+
<img src="https://img.shields.io/badge/Helm-blue?style=flat&logo=helm&labelColor=grey"/>
|
|
33
|
+
</a>
|
|
31
34
|
<a target="_blank" href="https://github.com/Arize-ai/phoenix/tree/main/js/packages/phoenix-mcp">
|
|
32
35
|
<img src="https://badge.mcpx.dev?status=on" title="MCP Enabled"/>
|
|
33
36
|
</a>
|
|
@@ -108,7 +111,7 @@ Phoenix is built on top of OpenTelemetry and is vendor, language, and framework
|
|
|
108
111
|
| [LangChain.js](https://docs.arize.com/phoenix/tracing/integrations-tracing/langchain.js) | `@arizeai/openinference-instrumentation-langchain` | [](https://www.npmjs.com/package/@arizeai/openinference-instrumentation-langchain) |
|
|
109
112
|
| [Vercel AI SDK](https://docs.arize.com/phoenix/tracing/integrations-tracing/vercel-ai-sdk) | `@arizeai/openinference-vercel` | [](https://www.npmjs.com/package/@arizeai/openinference-vercel) |
|
|
110
113
|
| [BeeAI](https://docs.arize.com/phoenix/tracing/integrations-tracing/beeai) | `@arizeai/openinference-instrumentation-beeai` | [](https://www.npmjs.com/package/@arizeai/openinference-instrumentation-beeai) |
|
|
111
|
-
| [Mastra](https://docs.arize.com/phoenix/integrations/mastra) | `@arizeai/openinference-
|
|
114
|
+
| [Mastra](https://docs.arize.com/phoenix/integrations/mastra) | `@arizeai/openinference-mastra` | [](https://www.npmjs.com/package/@arizeai/openinference-mastra) |
|
|
112
115
|
|
|
113
116
|
### Platforms
|
|
114
117
|
|
|
@@ -7,12 +7,7 @@ from asyncio import gather
|
|
|
7
7
|
from functools import partial
|
|
8
8
|
from typing import Optional
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
distinct,
|
|
12
|
-
exists,
|
|
13
|
-
insert,
|
|
14
|
-
select,
|
|
15
|
-
)
|
|
10
|
+
import sqlalchemy as sa
|
|
16
11
|
|
|
17
12
|
from phoenix import config
|
|
18
13
|
from phoenix.auth import (
|
|
@@ -30,7 +25,8 @@ from phoenix.config import (
|
|
|
30
25
|
)
|
|
31
26
|
from phoenix.db import models
|
|
32
27
|
from phoenix.db.constants import DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID
|
|
33
|
-
from phoenix.db.enums import
|
|
28
|
+
from phoenix.db.enums import ENUM_COLUMNS
|
|
29
|
+
from phoenix.db.models import UserRoleName
|
|
34
30
|
from phoenix.db.types.trace_retention import (
|
|
35
31
|
MaxDaysRule,
|
|
36
32
|
TraceRetentionCronExpression,
|
|
@@ -76,18 +72,17 @@ async def _ensure_enums(db: DbSessionFactory) -> None:
|
|
|
76
72
|
they will be added. If any values are present in the database but not in the enum, an error will
|
|
77
73
|
be raised. This function is idempotent: it will not add duplicate values to the database.
|
|
78
74
|
"""
|
|
79
|
-
for column
|
|
75
|
+
for column in ENUM_COLUMNS:
|
|
80
76
|
table = column.class_
|
|
77
|
+
assert isinstance(column.type, sa.Enum)
|
|
81
78
|
async with db() as session:
|
|
82
|
-
existing = set(
|
|
83
|
-
|
|
84
|
-
)
|
|
85
|
-
expected = set(e.value for e in enum)
|
|
79
|
+
existing = set(await session.scalars(sa.select(column)))
|
|
80
|
+
expected = set(column.type.enums)
|
|
86
81
|
if unexpected := existing - expected:
|
|
87
82
|
raise ValueError(f"Unexpected values in {table.name}.{column.key}: {unexpected}")
|
|
88
83
|
if not (missing := expected - existing):
|
|
89
84
|
continue
|
|
90
|
-
await session.execute(insert(table), [{column.key: v} for v in missing])
|
|
85
|
+
await session.execute(sa.insert(table), [{column.key: v} for v in missing])
|
|
91
86
|
|
|
92
87
|
|
|
93
88
|
async def _ensure_user_roles(db: DbSessionFactory) -> None:
|
|
@@ -97,21 +92,22 @@ async def _ensure_user_roles(db: DbSessionFactory) -> None:
|
|
|
97
92
|
the email "admin@localhost".
|
|
98
93
|
"""
|
|
99
94
|
async with db() as session:
|
|
100
|
-
role_ids = {
|
|
95
|
+
role_ids: dict[UserRoleName, int] = {
|
|
101
96
|
name: id_
|
|
102
97
|
async for name, id_ in await session.stream(
|
|
103
|
-
select(models.UserRole.name, models.UserRole.id)
|
|
98
|
+
sa.select(models.UserRole.name, models.UserRole.id)
|
|
104
99
|
)
|
|
105
100
|
}
|
|
106
|
-
existing_roles = [
|
|
101
|
+
existing_roles: list[UserRoleName] = [
|
|
107
102
|
name
|
|
108
103
|
async for name in await session.stream_scalars(
|
|
109
|
-
select(distinct(models.UserRole.name)).join_from(models.User, models.UserRole)
|
|
104
|
+
sa.select(sa.distinct(models.UserRole.name)).join_from(models.User, models.UserRole)
|
|
110
105
|
)
|
|
111
106
|
]
|
|
112
|
-
if (
|
|
113
|
-
|
|
114
|
-
|
|
107
|
+
if (
|
|
108
|
+
"SYSTEM" not in existing_roles
|
|
109
|
+
and (system_role_id := role_ids.get("SYSTEM")) is not None
|
|
110
|
+
):
|
|
115
111
|
system_user = models.LocalUser(
|
|
116
112
|
user_role_id=system_role_id,
|
|
117
113
|
username=DEFAULT_SYSTEM_USERNAME,
|
|
@@ -121,9 +117,7 @@ async def _ensure_user_roles(db: DbSessionFactory) -> None:
|
|
|
121
117
|
password_hash=secrets.token_bytes(DEFAULT_SECRET_LENGTH),
|
|
122
118
|
)
|
|
123
119
|
session.add(system_user)
|
|
124
|
-
if
|
|
125
|
-
admin_role_id := role_ids.get(admin_role)
|
|
126
|
-
) is not None:
|
|
120
|
+
if "ADMIN" not in existing_roles and (admin_role_id := role_ids.get("ADMIN")) is not None:
|
|
127
121
|
salt = secrets.token_bytes(DEFAULT_SECRET_LENGTH)
|
|
128
122
|
password = get_env_default_admin_initial_password()
|
|
129
123
|
compute = partial(compute_password_hash, password=password, salt=salt)
|
|
@@ -147,9 +141,9 @@ async def _get_system_user_id(db: DbSessionFactory) -> None:
|
|
|
147
141
|
"""
|
|
148
142
|
async with db() as session:
|
|
149
143
|
system_user_id = await session.scalar(
|
|
150
|
-
select(models.User.id)
|
|
144
|
+
sa.select(models.User.id)
|
|
151
145
|
.join(models.UserRole)
|
|
152
|
-
.where(models.UserRole.name ==
|
|
146
|
+
.where(models.UserRole.name == "SYSTEM")
|
|
153
147
|
.order_by(models.User.id)
|
|
154
148
|
.limit(1)
|
|
155
149
|
)
|
|
@@ -173,7 +167,7 @@ async def _ensure_admins(
|
|
|
173
167
|
async with db() as session:
|
|
174
168
|
existing_emails = set(
|
|
175
169
|
await session.scalars(
|
|
176
|
-
select(models.User.email).where(models.User.email.in_(admins.keys()))
|
|
170
|
+
sa.select(models.User.email).where(models.User.email.in_(admins.keys()))
|
|
177
171
|
)
|
|
178
172
|
)
|
|
179
173
|
admins = {
|
|
@@ -183,7 +177,7 @@ async def _ensure_admins(
|
|
|
183
177
|
return
|
|
184
178
|
existing_usernames = set(
|
|
185
179
|
await session.scalars(
|
|
186
|
-
select(models.User.username).where(models.User.username.in_(admins.values()))
|
|
180
|
+
sa.select(models.User.username).where(models.User.username.in_(admins.values()))
|
|
187
181
|
)
|
|
188
182
|
)
|
|
189
183
|
admins = {
|
|
@@ -193,9 +187,7 @@ async def _ensure_admins(
|
|
|
193
187
|
}
|
|
194
188
|
if not admins:
|
|
195
189
|
return
|
|
196
|
-
admin_role_id = await session.scalar(
|
|
197
|
-
select(models.UserRole.id).filter_by(name=UserRole.ADMIN.value)
|
|
198
|
-
)
|
|
190
|
+
admin_role_id = await session.scalar(sa.select(models.UserRole.id).filter_by(name="ADMIN"))
|
|
199
191
|
assert admin_role_id is not None, "Admin role not found in database"
|
|
200
192
|
user: models.User
|
|
201
193
|
for email, username in admins.items():
|
|
@@ -248,8 +240,8 @@ async def _ensure_default_project_trace_retention_policy(db: DbSessionFactory) -
|
|
|
248
240
|
assert DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID == 0
|
|
249
241
|
async with db() as session:
|
|
250
242
|
if await session.scalar(
|
|
251
|
-
select(
|
|
252
|
-
exists().where(
|
|
243
|
+
sa.select(
|
|
244
|
+
sa.exists().where(
|
|
253
245
|
models.ProjectTraceRetentionPolicy.id
|
|
254
246
|
== DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID
|
|
255
247
|
)
|
|
@@ -259,7 +251,7 @@ async def _ensure_default_project_trace_retention_policy(db: DbSessionFactory) -
|
|
|
259
251
|
cron_expression = TraceRetentionCronExpression(root="0 0 * * 0")
|
|
260
252
|
rule = TraceRetentionRule(root=MaxDaysRule(max_days=0))
|
|
261
253
|
await session.execute(
|
|
262
|
-
insert(models.ProjectTraceRetentionPolicy),
|
|
254
|
+
sa.insert(models.ProjectTraceRetentionPolicy),
|
|
263
255
|
[
|
|
264
256
|
{
|
|
265
257
|
"id": DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID,
|
|
@@ -146,6 +146,7 @@ def render_values_w_union(
|
|
|
146
146
|
return compiler.process(subquery, from_linter=from_linter, **kw)
|
|
147
147
|
|
|
148
148
|
|
|
149
|
+
UserRoleName: TypeAlias = Literal["SYSTEM", "ADMIN", "MEMBER"]
|
|
149
150
|
AuthMethod: TypeAlias = Literal["LOCAL", "OAUTH2"]
|
|
150
151
|
|
|
151
152
|
|
|
@@ -1132,7 +1133,7 @@ class ExperimentRunAnnotation(Base):
|
|
|
1132
1133
|
|
|
1133
1134
|
class UserRole(Base):
|
|
1134
1135
|
__tablename__ = "user_roles"
|
|
1135
|
-
name: Mapped[
|
|
1136
|
+
name: Mapped[UserRoleName] = mapped_column(unique=True, index=True)
|
|
1136
1137
|
users: Mapped[list["User"]] = relationship("User", back_populates="role")
|
|
1137
1138
|
|
|
1138
1139
|
|
|
@@ -1231,6 +1232,8 @@ class OAuth2User(User):
|
|
|
1231
1232
|
*,
|
|
1232
1233
|
email: str,
|
|
1233
1234
|
username: str,
|
|
1235
|
+
oauth2_client_id: Optional[str] = None,
|
|
1236
|
+
oauth2_user_id: Optional[str] = None,
|
|
1234
1237
|
user_role_id: Optional[int] = None,
|
|
1235
1238
|
) -> None:
|
|
1236
1239
|
super().__init__(
|
|
@@ -1239,6 +1242,8 @@ class OAuth2User(User):
|
|
|
1239
1242
|
user_role_id=user_role_id,
|
|
1240
1243
|
reset_password=False,
|
|
1241
1244
|
auth_method="OAUTH2",
|
|
1245
|
+
oauth2_client_id=oauth2_client_id,
|
|
1246
|
+
oauth2_user_id=oauth2_user_id,
|
|
1242
1247
|
)
|
|
1243
1248
|
|
|
1244
1249
|
|
{arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/api_key_mutations.py
RENAMED
|
@@ -7,7 +7,8 @@ from strawberry import UNSET
|
|
|
7
7
|
from strawberry.relay import GlobalID
|
|
8
8
|
from strawberry.types import Info
|
|
9
9
|
|
|
10
|
-
from phoenix.db import
|
|
10
|
+
from phoenix.db import models
|
|
11
|
+
from phoenix.db.models import UserRoleName
|
|
11
12
|
from phoenix.server.api.auth import IsAdmin, IsLocked, IsNotReadOnly
|
|
12
13
|
from phoenix.server.api.context import Context
|
|
13
14
|
from phoenix.server.api.exceptions import Unauthorized
|
|
@@ -65,13 +66,13 @@ class ApiKeyMutationMixin:
|
|
|
65
66
|
self, info: Info[Context, None], input: CreateApiKeyInput
|
|
66
67
|
) -> CreateSystemApiKeyMutationPayload:
|
|
67
68
|
assert (token_store := info.context.token_store) is not None
|
|
68
|
-
user_role =
|
|
69
|
+
user_role: UserRoleName = "SYSTEM"
|
|
69
70
|
async with info.context.db() as session:
|
|
70
71
|
# Get the system user - note this could be pushed into a dataloader
|
|
71
72
|
system_user = await session.scalar(
|
|
72
73
|
select(models.User)
|
|
73
74
|
.join(models.UserRole) # Join User with UserRole
|
|
74
|
-
.where(models.UserRole.name == user_role
|
|
75
|
+
.where(models.UserRole.name == user_role) # Filter where role is SYSTEM
|
|
75
76
|
.order_by(models.User.id)
|
|
76
77
|
.limit(1)
|
|
77
78
|
)
|
|
@@ -117,7 +118,7 @@ class ApiKeyMutationMixin:
|
|
|
117
118
|
issued_at=issued_at,
|
|
118
119
|
expiration_time=input.expires_at or None,
|
|
119
120
|
attributes=ApiKeyAttributes(
|
|
120
|
-
user_role=
|
|
121
|
+
user_role="ADMIN" if user.is_admin else "MEMBER",
|
|
121
122
|
name=input.name,
|
|
122
123
|
description=input.description,
|
|
123
124
|
),
|
{arize_phoenix-10.2.2 → arize_phoenix-10.3.0}/src/phoenix/server/api/mutations/user_mutations.py
RENAMED
|
@@ -25,7 +25,7 @@ from phoenix.auth import (
|
|
|
25
25
|
validate_password_format,
|
|
26
26
|
)
|
|
27
27
|
from phoenix.config import get_env_disable_basic_auth
|
|
28
|
-
from phoenix.db import
|
|
28
|
+
from phoenix.db import models
|
|
29
29
|
from phoenix.server.api.auth import IsAdmin, IsLocked, IsNotReadOnly
|
|
30
30
|
from phoenix.server.api.context import Context
|
|
31
31
|
from phoenix.server.api.exceptions import BadRequest, Conflict, NotFound, Unauthorized
|
|
@@ -256,16 +256,8 @@ class UserMutationMixin:
|
|
|
256
256
|
set(input.user_ids),
|
|
257
257
|
)
|
|
258
258
|
)
|
|
259
|
-
system_user_role_id = (
|
|
260
|
-
|
|
261
|
-
.where(models.UserRole.name == enums.UserRole.SYSTEM.value)
|
|
262
|
-
.scalar_subquery()
|
|
263
|
-
)
|
|
264
|
-
admin_user_role_id = (
|
|
265
|
-
select(models.UserRole.id)
|
|
266
|
-
.where(models.UserRole.name == enums.UserRole.ADMIN.value)
|
|
267
|
-
.scalar_subquery()
|
|
268
|
-
)
|
|
259
|
+
system_user_role_id = select(models.UserRole.id).filter_by(name="SYSTEM").scalar_subquery()
|
|
260
|
+
admin_user_role_id = select(models.UserRole.id).filter_by(name="ADMIN").scalar_subquery()
|
|
269
261
|
default_admin_user_id = (
|
|
270
262
|
select(models.User.id)
|
|
271
263
|
.where(
|
|
@@ -18,7 +18,7 @@ from phoenix.config import (
|
|
|
18
18
|
get_env_database_allocated_storage_capacity_gibibytes,
|
|
19
19
|
getenv,
|
|
20
20
|
)
|
|
21
|
-
from phoenix.db import
|
|
21
|
+
from phoenix.db import models
|
|
22
22
|
from phoenix.db.constants import DEFAULT_PROJECT_TRACE_RETENTION_POLICY_ID
|
|
23
23
|
from phoenix.db.helpers import SupportedSQLDialect, exclude_experiment_projects
|
|
24
24
|
from phoenix.db.models import DatasetExample as OrmExample
|
|
@@ -165,7 +165,7 @@ class Query:
|
|
|
165
165
|
stmt = (
|
|
166
166
|
select(models.User)
|
|
167
167
|
.join(models.UserRole)
|
|
168
|
-
.where(models.UserRole.name !=
|
|
168
|
+
.where(models.UserRole.name != "SYSTEM")
|
|
169
169
|
.order_by(models.User.email)
|
|
170
170
|
.options(joinedload(models.User.role))
|
|
171
171
|
)
|
|
@@ -181,7 +181,7 @@ class Query:
|
|
|
181
181
|
) -> list[UserRole]:
|
|
182
182
|
async with info.context.db() as session:
|
|
183
183
|
roles = await session.scalars(
|
|
184
|
-
select(models.UserRole).where(models.UserRole.name !=
|
|
184
|
+
select(models.UserRole).where(models.UserRole.name != "SYSTEM")
|
|
185
185
|
)
|
|
186
186
|
return [
|
|
187
187
|
UserRole(
|
|
@@ -197,7 +197,7 @@ class Query:
|
|
|
197
197
|
select(models.ApiKey)
|
|
198
198
|
.join(models.User)
|
|
199
199
|
.join(models.UserRole)
|
|
200
|
-
.where(models.UserRole.name !=
|
|
200
|
+
.where(models.UserRole.name != "SYSTEM")
|
|
201
201
|
)
|
|
202
202
|
async with info.context.db() as session:
|
|
203
203
|
api_keys = await session.scalars(stmt)
|
|
@@ -209,7 +209,7 @@ class Query:
|
|
|
209
209
|
select(models.ApiKey)
|
|
210
210
|
.join(models.User)
|
|
211
211
|
.join(models.UserRole)
|
|
212
|
-
.where(models.UserRole.name ==
|
|
212
|
+
.where(models.UserRole.name == "SYSTEM")
|
|
213
213
|
)
|
|
214
214
|
async with info.context.db() as session:
|
|
215
215
|
api_keys = await session.scalars(stmt)
|
|
@@ -37,7 +37,6 @@ from phoenix.config import (
|
|
|
37
37
|
get_env_disable_rate_limit,
|
|
38
38
|
)
|
|
39
39
|
from phoenix.db import models
|
|
40
|
-
from phoenix.db.enums import UserRole
|
|
41
40
|
from phoenix.server.bearer_auth import create_access_and_refresh_tokens
|
|
42
41
|
from phoenix.server.oauth2 import OAuth2Client
|
|
43
42
|
from phoenix.server.rate_limiters import (
|
|
@@ -457,9 +456,7 @@ async def _create_user(
|
|
|
457
456
|
if email_exists:
|
|
458
457
|
raise EmailAlreadyInUse(f"An account for {email} is already in use.")
|
|
459
458
|
member_role_id = (
|
|
460
|
-
select(models.UserRole.id)
|
|
461
|
-
.where(models.UserRole.name == UserRole.MEMBER.value)
|
|
462
|
-
.scalar_subquery()
|
|
459
|
+
select(models.UserRole.id).where(models.UserRole.name == "MEMBER").scalar_subquery()
|
|
463
460
|
)
|
|
464
461
|
user_id = await session.scalar(
|
|
465
462
|
insert(models.User)
|
|
@@ -15,6 +15,7 @@ from .projects import router as projects_router
|
|
|
15
15
|
from .prompts import router as prompts_router
|
|
16
16
|
from .spans import router as spans_router
|
|
17
17
|
from .traces import router as traces_router
|
|
18
|
+
from .users import router as users_router
|
|
18
19
|
from .utils import add_errors_to_responses
|
|
19
20
|
|
|
20
21
|
REST_API_VERSION = "1.0"
|
|
@@ -69,4 +70,5 @@ def create_v1_router(authentication_enabled: bool) -> APIRouter:
|
|
|
69
70
|
router.include_router(evaluations_router)
|
|
70
71
|
router.include_router(prompts_router)
|
|
71
72
|
router.include_router(projects_router)
|
|
73
|
+
router.include_router(users_router)
|
|
72
74
|
return router
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
|
+
from typing import Any
|
|
2
3
|
|
|
3
4
|
from pydantic import BaseModel, ConfigDict
|
|
4
5
|
|
|
6
|
+
from phoenix.db.types.db_models import UNDEFINED
|
|
7
|
+
|
|
5
8
|
|
|
6
9
|
def datetime_encoder(dt: datetime) -> str:
|
|
7
10
|
"""
|
|
@@ -43,3 +46,7 @@ class V1RoutesBaseModel(BaseModel):
|
|
|
43
46
|
[]
|
|
44
47
|
), # suppress warnings about protected namespaces starting with `model_` on pydantic 2.9
|
|
45
48
|
)
|
|
49
|
+
|
|
50
|
+
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
|
51
|
+
kwargs = {k: v for k, v in kwargs.items() if v is not UNDEFINED}
|
|
52
|
+
super().__init__(*args, **kwargs)
|
|
@@ -14,7 +14,6 @@ from strawberry.relay import GlobalID
|
|
|
14
14
|
|
|
15
15
|
from phoenix.config import DEFAULT_PROJECT_NAME
|
|
16
16
|
from phoenix.db import models
|
|
17
|
-
from phoenix.db.enums import UserRole
|
|
18
17
|
from phoenix.db.helpers import exclude_experiment_projects
|
|
19
18
|
from phoenix.server.api.routers.v1.models import V1RoutesBaseModel
|
|
20
19
|
from phoenix.server.api.routers.v1.utils import (
|
|
@@ -257,7 +256,7 @@ async def update_project(
|
|
|
257
256
|
.where(models.User.id == int(request.user.identity))
|
|
258
257
|
)
|
|
259
258
|
role_name = await session.scalar(stmt)
|
|
260
|
-
if role_name !=
|
|
259
|
+
if role_name != "ADMIN":
|
|
261
260
|
raise HTTPException(
|
|
262
261
|
status_code=HTTP_403_FORBIDDEN,
|
|
263
262
|
detail="Only admins can update projects",
|
|
@@ -317,7 +316,7 @@ async def delete_project(
|
|
|
317
316
|
.where(models.User.id == int(request.user.identity))
|
|
318
317
|
)
|
|
319
318
|
role_name = await session.scalar(stmt)
|
|
320
|
-
if role_name !=
|
|
319
|
+
if role_name != "ADMIN":
|
|
321
320
|
raise HTTPException(
|
|
322
321
|
status_code=HTTP_403_FORBIDDEN,
|
|
323
322
|
detail="Only admins can delete projects",
|