aeri-python 4.0.0__py3-none-any.whl
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.
- aeri/__init__.py +72 -0
- aeri/_client/_validation.py +204 -0
- aeri/_client/attributes.py +188 -0
- aeri/_client/client.py +3761 -0
- aeri/_client/constants.py +65 -0
- aeri/_client/datasets.py +302 -0
- aeri/_client/environment_variables.py +158 -0
- aeri/_client/get_client.py +149 -0
- aeri/_client/observe.py +661 -0
- aeri/_client/propagation.py +475 -0
- aeri/_client/resource_manager.py +510 -0
- aeri/_client/span.py +1519 -0
- aeri/_client/span_filter.py +76 -0
- aeri/_client/span_processor.py +206 -0
- aeri/_client/utils.py +132 -0
- aeri/_task_manager/media_manager.py +331 -0
- aeri/_task_manager/media_upload_consumer.py +44 -0
- aeri/_task_manager/media_upload_queue.py +12 -0
- aeri/_task_manager/score_ingestion_consumer.py +208 -0
- aeri/_task_manager/task_manager.py +475 -0
- aeri/_utils/__init__.py +19 -0
- aeri/_utils/environment.py +34 -0
- aeri/_utils/error_logging.py +47 -0
- aeri/_utils/parse_error.py +99 -0
- aeri/_utils/prompt_cache.py +188 -0
- aeri/_utils/request.py +137 -0
- aeri/_utils/serializer.py +205 -0
- aeri/api/.fern/metadata.json +14 -0
- aeri/api/__init__.py +836 -0
- aeri/api/annotation_queues/__init__.py +82 -0
- aeri/api/annotation_queues/client.py +1111 -0
- aeri/api/annotation_queues/raw_client.py +2288 -0
- aeri/api/annotation_queues/types/__init__.py +84 -0
- aeri/api/annotation_queues/types/annotation_queue.py +28 -0
- aeri/api/annotation_queues/types/annotation_queue_assignment_request.py +16 -0
- aeri/api/annotation_queues/types/annotation_queue_item.py +34 -0
- aeri/api/annotation_queues/types/annotation_queue_object_type.py +26 -0
- aeri/api/annotation_queues/types/annotation_queue_status.py +22 -0
- aeri/api/annotation_queues/types/create_annotation_queue_assignment_response.py +18 -0
- aeri/api/annotation_queues/types/create_annotation_queue_item_request.py +25 -0
- aeri/api/annotation_queues/types/create_annotation_queue_request.py +20 -0
- aeri/api/annotation_queues/types/delete_annotation_queue_assignment_response.py +14 -0
- aeri/api/annotation_queues/types/delete_annotation_queue_item_response.py +15 -0
- aeri/api/annotation_queues/types/paginated_annotation_queue_items.py +17 -0
- aeri/api/annotation_queues/types/paginated_annotation_queues.py +17 -0
- aeri/api/annotation_queues/types/update_annotation_queue_item_request.py +15 -0
- aeri/api/blob_storage_integrations/__init__.py +73 -0
- aeri/api/blob_storage_integrations/client.py +550 -0
- aeri/api/blob_storage_integrations/raw_client.py +976 -0
- aeri/api/blob_storage_integrations/types/__init__.py +77 -0
- aeri/api/blob_storage_integrations/types/blob_storage_export_frequency.py +26 -0
- aeri/api/blob_storage_integrations/types/blob_storage_export_mode.py +26 -0
- aeri/api/blob_storage_integrations/types/blob_storage_integration_deletion_response.py +14 -0
- aeri/api/blob_storage_integrations/types/blob_storage_integration_file_type.py +26 -0
- aeri/api/blob_storage_integrations/types/blob_storage_integration_response.py +64 -0
- aeri/api/blob_storage_integrations/types/blob_storage_integration_status_response.py +50 -0
- aeri/api/blob_storage_integrations/types/blob_storage_integration_type.py +26 -0
- aeri/api/blob_storage_integrations/types/blob_storage_integrations_response.py +15 -0
- aeri/api/blob_storage_integrations/types/blob_storage_sync_status.py +47 -0
- aeri/api/blob_storage_integrations/types/create_blob_storage_integration_request.py +91 -0
- aeri/api/client.py +679 -0
- aeri/api/comments/__init__.py +44 -0
- aeri/api/comments/client.py +407 -0
- aeri/api/comments/raw_client.py +750 -0
- aeri/api/comments/types/__init__.py +46 -0
- aeri/api/comments/types/create_comment_request.py +47 -0
- aeri/api/comments/types/create_comment_response.py +17 -0
- aeri/api/comments/types/get_comments_response.py +17 -0
- aeri/api/commons/__init__.py +210 -0
- aeri/api/commons/errors/__init__.py +56 -0
- aeri/api/commons/errors/access_denied_error.py +12 -0
- aeri/api/commons/errors/error.py +12 -0
- aeri/api/commons/errors/method_not_allowed_error.py +12 -0
- aeri/api/commons/errors/not_found_error.py +12 -0
- aeri/api/commons/errors/unauthorized_error.py +12 -0
- aeri/api/commons/types/__init__.py +190 -0
- aeri/api/commons/types/base_score.py +90 -0
- aeri/api/commons/types/base_score_v1.py +70 -0
- aeri/api/commons/types/boolean_score.py +26 -0
- aeri/api/commons/types/boolean_score_v1.py +26 -0
- aeri/api/commons/types/categorical_score.py +26 -0
- aeri/api/commons/types/categorical_score_v1.py +26 -0
- aeri/api/commons/types/comment.py +36 -0
- aeri/api/commons/types/comment_object_type.py +30 -0
- aeri/api/commons/types/config_category.py +15 -0
- aeri/api/commons/types/correction_score.py +26 -0
- aeri/api/commons/types/create_score_value.py +5 -0
- aeri/api/commons/types/dataset.py +49 -0
- aeri/api/commons/types/dataset_item.py +58 -0
- aeri/api/commons/types/dataset_run.py +63 -0
- aeri/api/commons/types/dataset_run_item.py +40 -0
- aeri/api/commons/types/dataset_run_with_items.py +19 -0
- aeri/api/commons/types/dataset_status.py +22 -0
- aeri/api/commons/types/map_value.py +11 -0
- aeri/api/commons/types/model.py +125 -0
- aeri/api/commons/types/model_price.py +14 -0
- aeri/api/commons/types/model_usage_unit.py +42 -0
- aeri/api/commons/types/numeric_score.py +17 -0
- aeri/api/commons/types/numeric_score_v1.py +17 -0
- aeri/api/commons/types/observation.py +142 -0
- aeri/api/commons/types/observation_level.py +30 -0
- aeri/api/commons/types/observation_v2.py +235 -0
- aeri/api/commons/types/observations_view.py +89 -0
- aeri/api/commons/types/pricing_tier.py +91 -0
- aeri/api/commons/types/pricing_tier_condition.py +68 -0
- aeri/api/commons/types/pricing_tier_input.py +76 -0
- aeri/api/commons/types/pricing_tier_operator.py +42 -0
- aeri/api/commons/types/score.py +201 -0
- aeri/api/commons/types/score_config.py +66 -0
- aeri/api/commons/types/score_config_data_type.py +26 -0
- aeri/api/commons/types/score_data_type.py +30 -0
- aeri/api/commons/types/score_source.py +26 -0
- aeri/api/commons/types/score_v1.py +131 -0
- aeri/api/commons/types/session.py +25 -0
- aeri/api/commons/types/session_with_traces.py +15 -0
- aeri/api/commons/types/trace.py +84 -0
- aeri/api/commons/types/trace_with_details.py +43 -0
- aeri/api/commons/types/trace_with_full_details.py +45 -0
- aeri/api/commons/types/usage.py +59 -0
- aeri/api/core/__init__.py +111 -0
- aeri/api/core/api_error.py +23 -0
- aeri/api/core/client_wrapper.py +141 -0
- aeri/api/core/datetime_utils.py +30 -0
- aeri/api/core/enum.py +20 -0
- aeri/api/core/file.py +70 -0
- aeri/api/core/force_multipart.py +18 -0
- aeri/api/core/http_client.py +711 -0
- aeri/api/core/http_response.py +55 -0
- aeri/api/core/http_sse/__init__.py +48 -0
- aeri/api/core/http_sse/_api.py +114 -0
- aeri/api/core/http_sse/_decoders.py +66 -0
- aeri/api/core/http_sse/_exceptions.py +7 -0
- aeri/api/core/http_sse/_models.py +17 -0
- aeri/api/core/jsonable_encoder.py +102 -0
- aeri/api/core/pydantic_utilities.py +310 -0
- aeri/api/core/query_encoder.py +60 -0
- aeri/api/core/remove_none_from_dict.py +11 -0
- aeri/api/core/request_options.py +35 -0
- aeri/api/core/serialization.py +282 -0
- aeri/api/dataset_items/__init__.py +52 -0
- aeri/api/dataset_items/client.py +499 -0
- aeri/api/dataset_items/raw_client.py +973 -0
- aeri/api/dataset_items/types/__init__.py +50 -0
- aeri/api/dataset_items/types/create_dataset_item_request.py +37 -0
- aeri/api/dataset_items/types/delete_dataset_item_response.py +17 -0
- aeri/api/dataset_items/types/paginated_dataset_items.py +17 -0
- aeri/api/dataset_run_items/__init__.py +43 -0
- aeri/api/dataset_run_items/client.py +323 -0
- aeri/api/dataset_run_items/raw_client.py +547 -0
- aeri/api/dataset_run_items/types/__init__.py +44 -0
- aeri/api/dataset_run_items/types/create_dataset_run_item_request.py +51 -0
- aeri/api/dataset_run_items/types/paginated_dataset_run_items.py +17 -0
- aeri/api/datasets/__init__.py +55 -0
- aeri/api/datasets/client.py +661 -0
- aeri/api/datasets/raw_client.py +1368 -0
- aeri/api/datasets/types/__init__.py +53 -0
- aeri/api/datasets/types/create_dataset_request.py +31 -0
- aeri/api/datasets/types/delete_dataset_run_response.py +14 -0
- aeri/api/datasets/types/paginated_dataset_runs.py +17 -0
- aeri/api/datasets/types/paginated_datasets.py +17 -0
- aeri/api/health/__init__.py +44 -0
- aeri/api/health/client.py +112 -0
- aeri/api/health/errors/__init__.py +42 -0
- aeri/api/health/errors/service_unavailable_error.py +13 -0
- aeri/api/health/raw_client.py +227 -0
- aeri/api/health/types/__init__.py +40 -0
- aeri/api/health/types/health_response.py +30 -0
- aeri/api/ingestion/__init__.py +169 -0
- aeri/api/ingestion/client.py +221 -0
- aeri/api/ingestion/raw_client.py +293 -0
- aeri/api/ingestion/types/__init__.py +169 -0
- aeri/api/ingestion/types/base_event.py +27 -0
- aeri/api/ingestion/types/create_event_body.py +14 -0
- aeri/api/ingestion/types/create_event_event.py +15 -0
- aeri/api/ingestion/types/create_generation_body.py +40 -0
- aeri/api/ingestion/types/create_generation_event.py +15 -0
- aeri/api/ingestion/types/create_observation_event.py +15 -0
- aeri/api/ingestion/types/create_span_body.py +19 -0
- aeri/api/ingestion/types/create_span_event.py +15 -0
- aeri/api/ingestion/types/ingestion_error.py +17 -0
- aeri/api/ingestion/types/ingestion_event.py +155 -0
- aeri/api/ingestion/types/ingestion_response.py +17 -0
- aeri/api/ingestion/types/ingestion_success.py +15 -0
- aeri/api/ingestion/types/ingestion_usage.py +8 -0
- aeri/api/ingestion/types/observation_body.py +53 -0
- aeri/api/ingestion/types/observation_type.py +54 -0
- aeri/api/ingestion/types/open_ai_completion_usage_schema.py +26 -0
- aeri/api/ingestion/types/open_ai_response_usage_schema.py +24 -0
- aeri/api/ingestion/types/open_ai_usage.py +28 -0
- aeri/api/ingestion/types/optional_observation_body.py +36 -0
- aeri/api/ingestion/types/score_body.py +75 -0
- aeri/api/ingestion/types/score_event.py +15 -0
- aeri/api/ingestion/types/sdk_log_body.py +14 -0
- aeri/api/ingestion/types/sdk_log_event.py +15 -0
- aeri/api/ingestion/types/trace_body.py +36 -0
- aeri/api/ingestion/types/trace_event.py +15 -0
- aeri/api/ingestion/types/update_event_body.py +14 -0
- aeri/api/ingestion/types/update_generation_body.py +40 -0
- aeri/api/ingestion/types/update_generation_event.py +15 -0
- aeri/api/ingestion/types/update_observation_event.py +15 -0
- aeri/api/ingestion/types/update_span_body.py +19 -0
- aeri/api/ingestion/types/update_span_event.py +15 -0
- aeri/api/ingestion/types/usage_details.py +10 -0
- aeri/api/legacy/__init__.py +61 -0
- aeri/api/legacy/client.py +105 -0
- aeri/api/legacy/metrics_v1/__init__.py +40 -0
- aeri/api/legacy/metrics_v1/client.py +214 -0
- aeri/api/legacy/metrics_v1/raw_client.py +322 -0
- aeri/api/legacy/metrics_v1/types/__init__.py +40 -0
- aeri/api/legacy/metrics_v1/types/metrics_response.py +19 -0
- aeri/api/legacy/observations_v1/__init__.py +43 -0
- aeri/api/legacy/observations_v1/client.py +523 -0
- aeri/api/legacy/observations_v1/raw_client.py +759 -0
- aeri/api/legacy/observations_v1/types/__init__.py +44 -0
- aeri/api/legacy/observations_v1/types/observations.py +17 -0
- aeri/api/legacy/observations_v1/types/observations_views.py +17 -0
- aeri/api/legacy/raw_client.py +13 -0
- aeri/api/legacy/score_v1/__init__.py +43 -0
- aeri/api/legacy/score_v1/client.py +329 -0
- aeri/api/legacy/score_v1/raw_client.py +545 -0
- aeri/api/legacy/score_v1/types/__init__.py +44 -0
- aeri/api/legacy/score_v1/types/create_score_request.py +75 -0
- aeri/api/legacy/score_v1/types/create_score_response.py +17 -0
- aeri/api/llm_connections/__init__.py +55 -0
- aeri/api/llm_connections/client.py +311 -0
- aeri/api/llm_connections/raw_client.py +541 -0
- aeri/api/llm_connections/types/__init__.py +53 -0
- aeri/api/llm_connections/types/llm_adapter.py +38 -0
- aeri/api/llm_connections/types/llm_connection.py +77 -0
- aeri/api/llm_connections/types/paginated_llm_connections.py +17 -0
- aeri/api/llm_connections/types/upsert_llm_connection_request.py +69 -0
- aeri/api/media/__init__.py +58 -0
- aeri/api/media/client.py +427 -0
- aeri/api/media/raw_client.py +739 -0
- aeri/api/media/types/__init__.py +56 -0
- aeri/api/media/types/get_media_response.py +55 -0
- aeri/api/media/types/get_media_upload_url_request.py +51 -0
- aeri/api/media/types/get_media_upload_url_response.py +28 -0
- aeri/api/media/types/media_content_type.py +232 -0
- aeri/api/media/types/patch_media_body.py +43 -0
- aeri/api/metrics/__init__.py +40 -0
- aeri/api/metrics/client.py +422 -0
- aeri/api/metrics/raw_client.py +530 -0
- aeri/api/metrics/types/__init__.py +40 -0
- aeri/api/metrics/types/metrics_v2response.py +19 -0
- aeri/api/models/__init__.py +43 -0
- aeri/api/models/client.py +523 -0
- aeri/api/models/raw_client.py +993 -0
- aeri/api/models/types/__init__.py +44 -0
- aeri/api/models/types/create_model_request.py +103 -0
- aeri/api/models/types/paginated_models.py +17 -0
- aeri/api/observations/__init__.py +43 -0
- aeri/api/observations/client.py +522 -0
- aeri/api/observations/raw_client.py +641 -0
- aeri/api/observations/types/__init__.py +44 -0
- aeri/api/observations/types/observations_v2meta.py +21 -0
- aeri/api/observations/types/observations_v2response.py +28 -0
- aeri/api/opentelemetry/__init__.py +67 -0
- aeri/api/opentelemetry/client.py +276 -0
- aeri/api/opentelemetry/raw_client.py +291 -0
- aeri/api/opentelemetry/types/__init__.py +65 -0
- aeri/api/opentelemetry/types/otel_attribute.py +27 -0
- aeri/api/opentelemetry/types/otel_attribute_value.py +46 -0
- aeri/api/opentelemetry/types/otel_resource.py +24 -0
- aeri/api/opentelemetry/types/otel_resource_span.py +32 -0
- aeri/api/opentelemetry/types/otel_scope.py +34 -0
- aeri/api/opentelemetry/types/otel_scope_span.py +28 -0
- aeri/api/opentelemetry/types/otel_span.py +76 -0
- aeri/api/opentelemetry/types/otel_trace_response.py +16 -0
- aeri/api/organizations/__init__.py +73 -0
- aeri/api/organizations/client.py +756 -0
- aeri/api/organizations/raw_client.py +1707 -0
- aeri/api/organizations/types/__init__.py +71 -0
- aeri/api/organizations/types/delete_membership_request.py +16 -0
- aeri/api/organizations/types/membership_deletion_response.py +17 -0
- aeri/api/organizations/types/membership_request.py +18 -0
- aeri/api/organizations/types/membership_response.py +20 -0
- aeri/api/organizations/types/membership_role.py +30 -0
- aeri/api/organizations/types/memberships_response.py +15 -0
- aeri/api/organizations/types/organization_api_key.py +31 -0
- aeri/api/organizations/types/organization_api_keys_response.py +19 -0
- aeri/api/organizations/types/organization_project.py +25 -0
- aeri/api/organizations/types/organization_projects_response.py +15 -0
- aeri/api/projects/__init__.py +67 -0
- aeri/api/projects/client.py +760 -0
- aeri/api/projects/raw_client.py +1577 -0
- aeri/api/projects/types/__init__.py +65 -0
- aeri/api/projects/types/api_key_deletion_response.py +18 -0
- aeri/api/projects/types/api_key_list.py +23 -0
- aeri/api/projects/types/api_key_response.py +30 -0
- aeri/api/projects/types/api_key_summary.py +35 -0
- aeri/api/projects/types/organization.py +22 -0
- aeri/api/projects/types/project.py +34 -0
- aeri/api/projects/types/project_deletion_response.py +15 -0
- aeri/api/projects/types/projects.py +15 -0
- aeri/api/prompt_version/__init__.py +4 -0
- aeri/api/prompt_version/client.py +157 -0
- aeri/api/prompt_version/raw_client.py +264 -0
- aeri/api/prompts/__init__.py +100 -0
- aeri/api/prompts/client.py +550 -0
- aeri/api/prompts/raw_client.py +987 -0
- aeri/api/prompts/types/__init__.py +96 -0
- aeri/api/prompts/types/base_prompt.py +42 -0
- aeri/api/prompts/types/chat_message.py +17 -0
- aeri/api/prompts/types/chat_message_type.py +15 -0
- aeri/api/prompts/types/chat_message_with_placeholders.py +8 -0
- aeri/api/prompts/types/chat_prompt.py +15 -0
- aeri/api/prompts/types/create_chat_prompt_request.py +37 -0
- aeri/api/prompts/types/create_chat_prompt_type.py +15 -0
- aeri/api/prompts/types/create_prompt_request.py +8 -0
- aeri/api/prompts/types/create_text_prompt_request.py +36 -0
- aeri/api/prompts/types/create_text_prompt_type.py +15 -0
- aeri/api/prompts/types/placeholder_message.py +16 -0
- aeri/api/prompts/types/placeholder_message_type.py +15 -0
- aeri/api/prompts/types/prompt.py +58 -0
- aeri/api/prompts/types/prompt_meta.py +35 -0
- aeri/api/prompts/types/prompt_meta_list_response.py +17 -0
- aeri/api/prompts/types/prompt_type.py +20 -0
- aeri/api/prompts/types/text_prompt.py +14 -0
- aeri/api/scim/__init__.py +94 -0
- aeri/api/scim/client.py +686 -0
- aeri/api/scim/raw_client.py +1528 -0
- aeri/api/scim/types/__init__.py +92 -0
- aeri/api/scim/types/authentication_scheme.py +20 -0
- aeri/api/scim/types/bulk_config.py +22 -0
- aeri/api/scim/types/empty_response.py +16 -0
- aeri/api/scim/types/filter_config.py +17 -0
- aeri/api/scim/types/resource_meta.py +17 -0
- aeri/api/scim/types/resource_type.py +27 -0
- aeri/api/scim/types/resource_types_response.py +21 -0
- aeri/api/scim/types/schema_extension.py +17 -0
- aeri/api/scim/types/schema_resource.py +19 -0
- aeri/api/scim/types/schemas_response.py +21 -0
- aeri/api/scim/types/scim_email.py +16 -0
- aeri/api/scim/types/scim_feature_support.py +14 -0
- aeri/api/scim/types/scim_name.py +14 -0
- aeri/api/scim/types/scim_user.py +24 -0
- aeri/api/scim/types/scim_users_list_response.py +25 -0
- aeri/api/scim/types/service_provider_config.py +36 -0
- aeri/api/scim/types/user_meta.py +20 -0
- aeri/api/score_configs/__init__.py +44 -0
- aeri/api/score_configs/client.py +526 -0
- aeri/api/score_configs/raw_client.py +1012 -0
- aeri/api/score_configs/types/__init__.py +46 -0
- aeri/api/score_configs/types/create_score_config_request.py +46 -0
- aeri/api/score_configs/types/score_configs.py +17 -0
- aeri/api/score_configs/types/update_score_config_request.py +53 -0
- aeri/api/scores/__init__.py +76 -0
- aeri/api/scores/client.py +420 -0
- aeri/api/scores/raw_client.py +656 -0
- aeri/api/scores/types/__init__.py +76 -0
- aeri/api/scores/types/get_scores_response.py +17 -0
- aeri/api/scores/types/get_scores_response_data.py +211 -0
- aeri/api/scores/types/get_scores_response_data_boolean.py +15 -0
- aeri/api/scores/types/get_scores_response_data_categorical.py +15 -0
- aeri/api/scores/types/get_scores_response_data_correction.py +15 -0
- aeri/api/scores/types/get_scores_response_data_numeric.py +15 -0
- aeri/api/scores/types/get_scores_response_trace_data.py +38 -0
- aeri/api/sessions/__init__.py +40 -0
- aeri/api/sessions/client.py +262 -0
- aeri/api/sessions/raw_client.py +500 -0
- aeri/api/sessions/types/__init__.py +40 -0
- aeri/api/sessions/types/paginated_sessions.py +17 -0
- aeri/api/trace/__init__.py +44 -0
- aeri/api/trace/client.py +728 -0
- aeri/api/trace/raw_client.py +1208 -0
- aeri/api/trace/types/__init__.py +46 -0
- aeri/api/trace/types/delete_trace_response.py +14 -0
- aeri/api/trace/types/sort.py +14 -0
- aeri/api/trace/types/traces.py +17 -0
- aeri/api/utils/__init__.py +44 -0
- aeri/api/utils/pagination/__init__.py +40 -0
- aeri/api/utils/pagination/types/__init__.py +40 -0
- aeri/api/utils/pagination/types/meta_response.py +38 -0
- aeri/batch_evaluation.py +1643 -0
- aeri/experiment.py +1044 -0
- aeri/langchain/CallbackHandler.py +1377 -0
- aeri/langchain/__init__.py +5 -0
- aeri/langchain/utils.py +212 -0
- aeri/logger.py +28 -0
- aeri/media.py +352 -0
- aeri/model.py +477 -0
- aeri/openai.py +1124 -0
- aeri/py.typed +0 -0
- aeri/span_filter.py +17 -0
- aeri/types.py +79 -0
- aeri/version.py +3 -0
- aeri_python-4.0.0.dist-info/METADATA +51 -0
- aeri_python-4.0.0.dist-info/RECORD +391 -0
- aeri_python-4.0.0.dist-info/WHEEL +4 -0
- aeri_python-4.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from ...core import enum
|
|
6
|
+
|
|
7
|
+
T_Result = typing.TypeVar("T_Result")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ScoreSource(enum.StrEnum):
|
|
11
|
+
ANNOTATION = "ANNOTATION"
|
|
12
|
+
API = "API"
|
|
13
|
+
EVAL = "EVAL"
|
|
14
|
+
|
|
15
|
+
def visit(
|
|
16
|
+
self,
|
|
17
|
+
annotation: typing.Callable[[], T_Result],
|
|
18
|
+
api: typing.Callable[[], T_Result],
|
|
19
|
+
eval: typing.Callable[[], T_Result],
|
|
20
|
+
) -> T_Result:
|
|
21
|
+
if self is ScoreSource.ANNOTATION:
|
|
22
|
+
return annotation()
|
|
23
|
+
if self is ScoreSource.API:
|
|
24
|
+
return api()
|
|
25
|
+
if self is ScoreSource.EVAL:
|
|
26
|
+
return eval()
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import datetime as dt
|
|
6
|
+
import typing
|
|
7
|
+
|
|
8
|
+
import pydantic
|
|
9
|
+
import typing_extensions
|
|
10
|
+
from ...core.pydantic_utilities import UniversalBaseModel
|
|
11
|
+
from ...core.serialization import FieldMetadata
|
|
12
|
+
from .score_source import ScoreSource
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ScoreV1_Numeric(UniversalBaseModel):
|
|
16
|
+
data_type: typing_extensions.Annotated[
|
|
17
|
+
typing.Literal["NUMERIC"], FieldMetadata(alias="dataType")
|
|
18
|
+
] = "NUMERIC"
|
|
19
|
+
value: float
|
|
20
|
+
id: str
|
|
21
|
+
trace_id: typing_extensions.Annotated[str, FieldMetadata(alias="traceId")]
|
|
22
|
+
name: str
|
|
23
|
+
source: ScoreSource
|
|
24
|
+
observation_id: typing_extensions.Annotated[
|
|
25
|
+
typing.Optional[str], FieldMetadata(alias="observationId")
|
|
26
|
+
] = None
|
|
27
|
+
timestamp: dt.datetime
|
|
28
|
+
created_at: typing_extensions.Annotated[
|
|
29
|
+
dt.datetime, FieldMetadata(alias="createdAt")
|
|
30
|
+
]
|
|
31
|
+
updated_at: typing_extensions.Annotated[
|
|
32
|
+
dt.datetime, FieldMetadata(alias="updatedAt")
|
|
33
|
+
]
|
|
34
|
+
author_user_id: typing_extensions.Annotated[
|
|
35
|
+
typing.Optional[str], FieldMetadata(alias="authorUserId")
|
|
36
|
+
] = None
|
|
37
|
+
comment: typing.Optional[str] = None
|
|
38
|
+
metadata: typing.Any
|
|
39
|
+
config_id: typing_extensions.Annotated[
|
|
40
|
+
typing.Optional[str], FieldMetadata(alias="configId")
|
|
41
|
+
] = None
|
|
42
|
+
queue_id: typing_extensions.Annotated[
|
|
43
|
+
typing.Optional[str], FieldMetadata(alias="queueId")
|
|
44
|
+
] = None
|
|
45
|
+
environment: str
|
|
46
|
+
|
|
47
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
48
|
+
extra="allow", frozen=True
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class ScoreV1_Categorical(UniversalBaseModel):
|
|
53
|
+
data_type: typing_extensions.Annotated[
|
|
54
|
+
typing.Literal["CATEGORICAL"], FieldMetadata(alias="dataType")
|
|
55
|
+
] = "CATEGORICAL"
|
|
56
|
+
value: float
|
|
57
|
+
string_value: typing_extensions.Annotated[str, FieldMetadata(alias="stringValue")]
|
|
58
|
+
id: str
|
|
59
|
+
trace_id: typing_extensions.Annotated[str, FieldMetadata(alias="traceId")]
|
|
60
|
+
name: str
|
|
61
|
+
source: ScoreSource
|
|
62
|
+
observation_id: typing_extensions.Annotated[
|
|
63
|
+
typing.Optional[str], FieldMetadata(alias="observationId")
|
|
64
|
+
] = None
|
|
65
|
+
timestamp: dt.datetime
|
|
66
|
+
created_at: typing_extensions.Annotated[
|
|
67
|
+
dt.datetime, FieldMetadata(alias="createdAt")
|
|
68
|
+
]
|
|
69
|
+
updated_at: typing_extensions.Annotated[
|
|
70
|
+
dt.datetime, FieldMetadata(alias="updatedAt")
|
|
71
|
+
]
|
|
72
|
+
author_user_id: typing_extensions.Annotated[
|
|
73
|
+
typing.Optional[str], FieldMetadata(alias="authorUserId")
|
|
74
|
+
] = None
|
|
75
|
+
comment: typing.Optional[str] = None
|
|
76
|
+
metadata: typing.Any
|
|
77
|
+
config_id: typing_extensions.Annotated[
|
|
78
|
+
typing.Optional[str], FieldMetadata(alias="configId")
|
|
79
|
+
] = None
|
|
80
|
+
queue_id: typing_extensions.Annotated[
|
|
81
|
+
typing.Optional[str], FieldMetadata(alias="queueId")
|
|
82
|
+
] = None
|
|
83
|
+
environment: str
|
|
84
|
+
|
|
85
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
86
|
+
extra="allow", frozen=True
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class ScoreV1_Boolean(UniversalBaseModel):
|
|
91
|
+
data_type: typing_extensions.Annotated[
|
|
92
|
+
typing.Literal["BOOLEAN"], FieldMetadata(alias="dataType")
|
|
93
|
+
] = "BOOLEAN"
|
|
94
|
+
value: float
|
|
95
|
+
string_value: typing_extensions.Annotated[str, FieldMetadata(alias="stringValue")]
|
|
96
|
+
id: str
|
|
97
|
+
trace_id: typing_extensions.Annotated[str, FieldMetadata(alias="traceId")]
|
|
98
|
+
name: str
|
|
99
|
+
source: ScoreSource
|
|
100
|
+
observation_id: typing_extensions.Annotated[
|
|
101
|
+
typing.Optional[str], FieldMetadata(alias="observationId")
|
|
102
|
+
] = None
|
|
103
|
+
timestamp: dt.datetime
|
|
104
|
+
created_at: typing_extensions.Annotated[
|
|
105
|
+
dt.datetime, FieldMetadata(alias="createdAt")
|
|
106
|
+
]
|
|
107
|
+
updated_at: typing_extensions.Annotated[
|
|
108
|
+
dt.datetime, FieldMetadata(alias="updatedAt")
|
|
109
|
+
]
|
|
110
|
+
author_user_id: typing_extensions.Annotated[
|
|
111
|
+
typing.Optional[str], FieldMetadata(alias="authorUserId")
|
|
112
|
+
] = None
|
|
113
|
+
comment: typing.Optional[str] = None
|
|
114
|
+
metadata: typing.Any
|
|
115
|
+
config_id: typing_extensions.Annotated[
|
|
116
|
+
typing.Optional[str], FieldMetadata(alias="configId")
|
|
117
|
+
] = None
|
|
118
|
+
queue_id: typing_extensions.Annotated[
|
|
119
|
+
typing.Optional[str], FieldMetadata(alias="queueId")
|
|
120
|
+
] = None
|
|
121
|
+
environment: str
|
|
122
|
+
|
|
123
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
124
|
+
extra="allow", frozen=True
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
ScoreV1 = typing_extensions.Annotated[
|
|
129
|
+
typing.Union[ScoreV1_Numeric, ScoreV1_Categorical, ScoreV1_Boolean],
|
|
130
|
+
pydantic.Field(discriminator="data_type"),
|
|
131
|
+
]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import datetime as dt
|
|
4
|
+
import typing
|
|
5
|
+
|
|
6
|
+
import pydantic
|
|
7
|
+
import typing_extensions
|
|
8
|
+
from ...core.pydantic_utilities import UniversalBaseModel
|
|
9
|
+
from ...core.serialization import FieldMetadata
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Session(UniversalBaseModel):
|
|
13
|
+
id: str
|
|
14
|
+
created_at: typing_extensions.Annotated[
|
|
15
|
+
dt.datetime, FieldMetadata(alias="createdAt")
|
|
16
|
+
]
|
|
17
|
+
project_id: typing_extensions.Annotated[str, FieldMetadata(alias="projectId")]
|
|
18
|
+
environment: str = pydantic.Field()
|
|
19
|
+
"""
|
|
20
|
+
The environment from which this session originated.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
24
|
+
extra="allow", frozen=True
|
|
25
|
+
)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
from .session import Session
|
|
7
|
+
from .trace import Trace
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SessionWithTraces(Session):
|
|
11
|
+
traces: typing.List[Trace]
|
|
12
|
+
|
|
13
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
14
|
+
extra="allow", frozen=True
|
|
15
|
+
)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import datetime as dt
|
|
4
|
+
import typing
|
|
5
|
+
|
|
6
|
+
import pydantic
|
|
7
|
+
import typing_extensions
|
|
8
|
+
from ...core.pydantic_utilities import UniversalBaseModel
|
|
9
|
+
from ...core.serialization import FieldMetadata
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Trace(UniversalBaseModel):
|
|
13
|
+
id: str = pydantic.Field()
|
|
14
|
+
"""
|
|
15
|
+
The unique identifier of a trace
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
timestamp: dt.datetime = pydantic.Field()
|
|
19
|
+
"""
|
|
20
|
+
The timestamp when the trace was created
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
name: typing.Optional[str] = pydantic.Field(default=None)
|
|
24
|
+
"""
|
|
25
|
+
The name of the trace
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
input: typing.Optional[typing.Any] = pydantic.Field(default=None)
|
|
29
|
+
"""
|
|
30
|
+
The input data of the trace. Can be any JSON.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
output: typing.Optional[typing.Any] = pydantic.Field(default=None)
|
|
34
|
+
"""
|
|
35
|
+
The output data of the trace. Can be any JSON.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
session_id: typing_extensions.Annotated[
|
|
39
|
+
typing.Optional[str], FieldMetadata(alias="sessionId")
|
|
40
|
+
] = pydantic.Field(default=None)
|
|
41
|
+
"""
|
|
42
|
+
The session identifier associated with the trace
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
release: typing.Optional[str] = pydantic.Field(default=None)
|
|
46
|
+
"""
|
|
47
|
+
The release version of the application when the trace was created
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
version: typing.Optional[str] = pydantic.Field(default=None)
|
|
51
|
+
"""
|
|
52
|
+
The version of the trace
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
user_id: typing_extensions.Annotated[
|
|
56
|
+
typing.Optional[str], FieldMetadata(alias="userId")
|
|
57
|
+
] = pydantic.Field(default=None)
|
|
58
|
+
"""
|
|
59
|
+
The user identifier associated with the trace
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
metadata: typing.Optional[typing.Any] = pydantic.Field(default=None)
|
|
63
|
+
"""
|
|
64
|
+
The metadata associated with the trace. Can be any JSON.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
tags: typing.List[str] = pydantic.Field()
|
|
68
|
+
"""
|
|
69
|
+
The tags associated with the trace.
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
public: bool = pydantic.Field()
|
|
73
|
+
"""
|
|
74
|
+
Public traces are accessible via url without login
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
environment: str = pydantic.Field()
|
|
78
|
+
"""
|
|
79
|
+
The environment from which this trace originated. Can be any lowercase alphanumeric string with hyphens and underscores that does not start with 'aeri'.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
83
|
+
extra="allow", frozen=True
|
|
84
|
+
)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
import typing_extensions
|
|
7
|
+
from ...core.serialization import FieldMetadata
|
|
8
|
+
from .trace import Trace
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class TraceWithDetails(Trace):
|
|
12
|
+
html_path: typing_extensions.Annotated[str, FieldMetadata(alias="htmlPath")] = (
|
|
13
|
+
pydantic.Field()
|
|
14
|
+
)
|
|
15
|
+
"""
|
|
16
|
+
Path of trace in Aeri UI
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
latency: typing.Optional[float] = pydantic.Field(default=None)
|
|
20
|
+
"""
|
|
21
|
+
Latency of trace in seconds
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
total_cost: typing_extensions.Annotated[
|
|
25
|
+
typing.Optional[float], FieldMetadata(alias="totalCost")
|
|
26
|
+
] = pydantic.Field(default=None)
|
|
27
|
+
"""
|
|
28
|
+
Cost of trace in USD
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
observations: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
|
|
32
|
+
"""
|
|
33
|
+
List of observation ids
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
scores: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
|
|
37
|
+
"""
|
|
38
|
+
List of score ids
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
42
|
+
extra="allow", frozen=True
|
|
43
|
+
)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
import typing_extensions
|
|
7
|
+
from ...core.serialization import FieldMetadata
|
|
8
|
+
from .observations_view import ObservationsView
|
|
9
|
+
from .score_v1 import ScoreV1
|
|
10
|
+
from .trace import Trace
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class TraceWithFullDetails(Trace):
|
|
14
|
+
html_path: typing_extensions.Annotated[str, FieldMetadata(alias="htmlPath")] = (
|
|
15
|
+
pydantic.Field()
|
|
16
|
+
)
|
|
17
|
+
"""
|
|
18
|
+
Path of trace in Aeri UI
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
latency: typing.Optional[float] = pydantic.Field(default=None)
|
|
22
|
+
"""
|
|
23
|
+
Latency of trace in seconds
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
total_cost: typing_extensions.Annotated[
|
|
27
|
+
typing.Optional[float], FieldMetadata(alias="totalCost")
|
|
28
|
+
] = pydantic.Field(default=None)
|
|
29
|
+
"""
|
|
30
|
+
Cost of trace in USD
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
observations: typing.List[ObservationsView] = pydantic.Field()
|
|
34
|
+
"""
|
|
35
|
+
List of observations
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
scores: typing.List[ScoreV1] = pydantic.Field()
|
|
39
|
+
"""
|
|
40
|
+
List of scores
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
44
|
+
extra="allow", frozen=True
|
|
45
|
+
)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
import pydantic
|
|
6
|
+
import typing_extensions
|
|
7
|
+
from ...core.pydantic_utilities import UniversalBaseModel
|
|
8
|
+
from ...core.serialization import FieldMetadata
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Usage(UniversalBaseModel):
|
|
12
|
+
"""
|
|
13
|
+
(Deprecated. Use usageDetails and costDetails instead.) Standard interface for usage and cost
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
input: int = pydantic.Field()
|
|
17
|
+
"""
|
|
18
|
+
Number of input units (e.g. tokens)
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
output: int = pydantic.Field()
|
|
22
|
+
"""
|
|
23
|
+
Number of output units (e.g. tokens)
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
total: int = pydantic.Field()
|
|
27
|
+
"""
|
|
28
|
+
Defaults to input+output if not set
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
unit: typing.Optional[str] = pydantic.Field(default=None)
|
|
32
|
+
"""
|
|
33
|
+
Unit of measurement
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
input_cost: typing_extensions.Annotated[
|
|
37
|
+
typing.Optional[float], FieldMetadata(alias="inputCost")
|
|
38
|
+
] = pydantic.Field(default=None)
|
|
39
|
+
"""
|
|
40
|
+
USD input cost
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
output_cost: typing_extensions.Annotated[
|
|
44
|
+
typing.Optional[float], FieldMetadata(alias="outputCost")
|
|
45
|
+
] = pydantic.Field(default=None)
|
|
46
|
+
"""
|
|
47
|
+
USD output cost
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
total_cost: typing_extensions.Annotated[
|
|
51
|
+
typing.Optional[float], FieldMetadata(alias="totalCost")
|
|
52
|
+
] = pydantic.Field(default=None)
|
|
53
|
+
"""
|
|
54
|
+
USD total cost, defaults to input+output
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
|
|
58
|
+
extra="allow", frozen=True
|
|
59
|
+
)
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
# isort: skip_file
|
|
4
|
+
|
|
5
|
+
import typing
|
|
6
|
+
from importlib import import_module
|
|
7
|
+
|
|
8
|
+
if typing.TYPE_CHECKING:
|
|
9
|
+
from .api_error import ApiError
|
|
10
|
+
from .client_wrapper import AsyncClientWrapper, BaseClientWrapper, SyncClientWrapper
|
|
11
|
+
from .datetime_utils import serialize_datetime
|
|
12
|
+
from .file import File, convert_file_dict_to_httpx_tuples, with_content_type
|
|
13
|
+
from .http_client import AsyncHttpClient, HttpClient
|
|
14
|
+
from .http_response import AsyncHttpResponse, HttpResponse
|
|
15
|
+
from .jsonable_encoder import jsonable_encoder
|
|
16
|
+
from .pydantic_utilities import (
|
|
17
|
+
IS_PYDANTIC_V2,
|
|
18
|
+
UniversalBaseModel,
|
|
19
|
+
UniversalRootModel,
|
|
20
|
+
parse_obj_as,
|
|
21
|
+
universal_field_validator,
|
|
22
|
+
universal_root_validator,
|
|
23
|
+
update_forward_refs,
|
|
24
|
+
)
|
|
25
|
+
from .query_encoder import encode_query
|
|
26
|
+
from .remove_none_from_dict import remove_none_from_dict
|
|
27
|
+
from .request_options import RequestOptions
|
|
28
|
+
from .serialization import FieldMetadata, convert_and_respect_annotation_metadata
|
|
29
|
+
_dynamic_imports: typing.Dict[str, str] = {
|
|
30
|
+
"ApiError": ".api_error",
|
|
31
|
+
"AsyncClientWrapper": ".client_wrapper",
|
|
32
|
+
"AsyncHttpClient": ".http_client",
|
|
33
|
+
"AsyncHttpResponse": ".http_response",
|
|
34
|
+
"BaseClientWrapper": ".client_wrapper",
|
|
35
|
+
"FieldMetadata": ".serialization",
|
|
36
|
+
"File": ".file",
|
|
37
|
+
"HttpClient": ".http_client",
|
|
38
|
+
"HttpResponse": ".http_response",
|
|
39
|
+
"IS_PYDANTIC_V2": ".pydantic_utilities",
|
|
40
|
+
"RequestOptions": ".request_options",
|
|
41
|
+
"SyncClientWrapper": ".client_wrapper",
|
|
42
|
+
"UniversalBaseModel": ".pydantic_utilities",
|
|
43
|
+
"UniversalRootModel": ".pydantic_utilities",
|
|
44
|
+
"convert_and_respect_annotation_metadata": ".serialization",
|
|
45
|
+
"convert_file_dict_to_httpx_tuples": ".file",
|
|
46
|
+
"encode_query": ".query_encoder",
|
|
47
|
+
"jsonable_encoder": ".jsonable_encoder",
|
|
48
|
+
"parse_obj_as": ".pydantic_utilities",
|
|
49
|
+
"remove_none_from_dict": ".remove_none_from_dict",
|
|
50
|
+
"serialize_datetime": ".datetime_utils",
|
|
51
|
+
"universal_field_validator": ".pydantic_utilities",
|
|
52
|
+
"universal_root_validator": ".pydantic_utilities",
|
|
53
|
+
"update_forward_refs": ".pydantic_utilities",
|
|
54
|
+
"with_content_type": ".file",
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def __getattr__(attr_name: str) -> typing.Any:
|
|
59
|
+
module_name = _dynamic_imports.get(attr_name)
|
|
60
|
+
if module_name is None:
|
|
61
|
+
raise AttributeError(
|
|
62
|
+
f"No {attr_name} found in _dynamic_imports for module name -> {__name__}"
|
|
63
|
+
)
|
|
64
|
+
try:
|
|
65
|
+
module = import_module(module_name, __package__)
|
|
66
|
+
if module_name == f".{attr_name}":
|
|
67
|
+
return module
|
|
68
|
+
else:
|
|
69
|
+
return getattr(module, attr_name)
|
|
70
|
+
except ImportError as e:
|
|
71
|
+
raise ImportError(
|
|
72
|
+
f"Failed to import {attr_name} from {module_name}: {e}"
|
|
73
|
+
) from e
|
|
74
|
+
except AttributeError as e:
|
|
75
|
+
raise AttributeError(
|
|
76
|
+
f"Failed to get {attr_name} from {module_name}: {e}"
|
|
77
|
+
) from e
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def __dir__():
|
|
81
|
+
lazy_attrs = list(_dynamic_imports.keys())
|
|
82
|
+
return sorted(lazy_attrs)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
__all__ = [
|
|
86
|
+
"ApiError",
|
|
87
|
+
"AsyncClientWrapper",
|
|
88
|
+
"AsyncHttpClient",
|
|
89
|
+
"AsyncHttpResponse",
|
|
90
|
+
"BaseClientWrapper",
|
|
91
|
+
"FieldMetadata",
|
|
92
|
+
"File",
|
|
93
|
+
"HttpClient",
|
|
94
|
+
"HttpResponse",
|
|
95
|
+
"IS_PYDANTIC_V2",
|
|
96
|
+
"RequestOptions",
|
|
97
|
+
"SyncClientWrapper",
|
|
98
|
+
"UniversalBaseModel",
|
|
99
|
+
"UniversalRootModel",
|
|
100
|
+
"convert_and_respect_annotation_metadata",
|
|
101
|
+
"convert_file_dict_to_httpx_tuples",
|
|
102
|
+
"encode_query",
|
|
103
|
+
"jsonable_encoder",
|
|
104
|
+
"parse_obj_as",
|
|
105
|
+
"remove_none_from_dict",
|
|
106
|
+
"serialize_datetime",
|
|
107
|
+
"universal_field_validator",
|
|
108
|
+
"universal_root_validator",
|
|
109
|
+
"update_forward_refs",
|
|
110
|
+
"with_content_type",
|
|
111
|
+
]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from typing import Any, Dict, Optional
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ApiError(Exception):
|
|
7
|
+
headers: Optional[Dict[str, str]]
|
|
8
|
+
status_code: Optional[int]
|
|
9
|
+
body: Any
|
|
10
|
+
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
*,
|
|
14
|
+
headers: Optional[Dict[str, str]] = None,
|
|
15
|
+
status_code: Optional[int] = None,
|
|
16
|
+
body: Any = None,
|
|
17
|
+
) -> None:
|
|
18
|
+
self.headers = headers
|
|
19
|
+
self.status_code = status_code
|
|
20
|
+
self.body = body
|
|
21
|
+
|
|
22
|
+
def __str__(self) -> str:
|
|
23
|
+
return f"headers: {self.headers}, status_code: {self.status_code}, body: {self.body}"
|