rapidata 2.27.0__py3-none-any.whl → 2.44.4__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.
Potentially problematic release.
This version of rapidata might be problematic. Click here for more details.
- rapidata/__init__.py +12 -9
- rapidata/api_client/__init__.py +83 -329
- rapidata/api_client/api/__init__.py +9 -2
- rapidata/api_client/api/asset_api.py +853 -0
- rapidata/api_client/api/audience_api.py +1133 -0
- rapidata/api_client/api/benchmark_api.py +3966 -0
- rapidata/api_client/api/campaign_api.py +232 -207
- rapidata/api_client/api/client_api.py +349 -71
- rapidata/api_client/api/coco_api.py +0 -571
- rapidata/api_client/api/compare_workflow_api.py +11 -10
- rapidata/api_client/api/customer_rapid_api.py +644 -72
- rapidata/api_client/api/datapoint_api.py +8 -797
- rapidata/api_client/api/dataset_api.py +229 -3452
- rapidata/api_client/api/evaluation_workflow_api.py +29 -82
- rapidata/api_client/api/feedback_api.py +11 -281
- rapidata/api_client/api/grouped_ranking_workflow_api.py +319 -0
- rapidata/api_client/api/identity_api.py +83 -1171
- rapidata/api_client/api/leaderboard_api.py +2550 -0
- rapidata/api_client/api/newsletter_api.py +20 -19
- rapidata/api_client/api/order_api.py +758 -5487
- rapidata/api_client/api/participant_api.py +2181 -0
- rapidata/api_client/api/pipeline_api.py +24 -1783
- rapidata/api_client/api/prompt_api.py +320 -0
- rapidata/api_client/api/rapidata_identity_api_api.py +5 -4
- rapidata/api_client/api/sample_api.py +300 -0
- rapidata/api_client/api/simple_workflow_api.py +11 -10
- rapidata/api_client/api/survey_api.py +304 -0
- rapidata/api_client/api/user_rapid_api.py +35 -31
- rapidata/api_client/api/validation_set_api.py +513 -3233
- rapidata/api_client/api/workflow_api.py +32 -825
- rapidata/api_client/api_client.py +2 -2
- rapidata/api_client/configuration.py +16 -29
- rapidata/api_client/exceptions.py +2 -2
- rapidata/api_client/models/__init__.py +65 -307
- rapidata/api_client/models/ab_test_selection_a_inner.py +27 -13
- rapidata/api_client/models/add_campaign_model.py +3 -3
- rapidata/api_client/models/add_user_response_result.py +10 -5
- rapidata/api_client/models/add_validation_rapid_model.py +55 -24
- rapidata/api_client/models/add_validation_rapid_model_asset.py +154 -0
- rapidata/api_client/models/add_validation_rapid_model_context_asset.py +160 -0
- rapidata/api_client/models/add_validation_rapid_model_metadata_inner.py +140 -0
- rapidata/api_client/models/add_validation_rapid_model_truth.py +7 -1
- rapidata/api_client/models/add_validation_rapid_new_model.py +137 -0
- rapidata/api_client/models/add_validation_rapid_new_model_asset.py +182 -0
- rapidata/api_client/models/add_validation_rapid_new_model_truth.py +286 -0
- rapidata/api_client/models/add_validation_text_rapid_model.py +1 -3
- rapidata/api_client/models/age_user_filter_model.py +2 -2
- rapidata/api_client/models/age_user_filter_model_age_group.py +41 -0
- rapidata/api_client/models/aggregated_orders_model.py +98 -0
- rapidata/api_client/models/aggregator_type.py +4 -2
- rapidata/api_client/models/and_filter.py +121 -0
- rapidata/api_client/models/and_filter_filters_inner.py +282 -0
- rapidata/api_client/models/and_user_filter_model.py +106 -0
- rapidata/api_client/models/and_user_filter_model_filters_inner.py +282 -0
- rapidata/api_client/models/are_rapids_active_result.py +2 -2
- rapidata/api_client/models/asset_metadata.py +11 -9
- rapidata/api_client/models/asset_type.py +40 -0
- rapidata/api_client/models/attach_category_rapid_blueprint.py +13 -3
- rapidata/api_client/models/attach_category_rapid_blueprint_category.py +89 -0
- rapidata/api_client/models/audience_status.py +38 -0
- rapidata/api_client/models/benchmark_query_result.py +98 -0
- rapidata/api_client/models/benchmark_query_result_paged_result.py +105 -0
- rapidata/api_client/models/boost_leaderboard_model.py +89 -0
- rapidata/api_client/models/boost_mode.py +37 -0
- rapidata/api_client/models/boost_query_result.py +97 -0
- rapidata/api_client/models/boost_query_result_boost_mode.py +37 -0
- rapidata/api_client/models/boost_query_result_boost_status.py +39 -0
- rapidata/api_client/models/boost_status.py +39 -0
- rapidata/api_client/models/boosting_profile.py +89 -0
- rapidata/api_client/models/box_shape.py +4 -33
- rapidata/api_client/models/campaign_filter.py +98 -0
- rapidata/api_client/models/campaign_query_result.py +15 -13
- rapidata/api_client/models/campaign_status.py +2 -2
- rapidata/api_client/models/change_boost_model.py +89 -0
- rapidata/api_client/models/classification_metadata.py +12 -1
- rapidata/api_client/models/classify_payload.py +14 -15
- rapidata/api_client/models/classify_payload_category.py +89 -0
- rapidata/api_client/models/client_model.py +181 -0
- rapidata/api_client/models/clients_query_result.py +5 -5
- rapidata/api_client/models/clone_order_model.py +6 -8
- rapidata/api_client/models/clone_order_result.py +9 -4
- rapidata/api_client/models/compare_rapid_blueprint.py +5 -3
- rapidata/api_client/models/compare_rapid_blueprint1.py +96 -0
- rapidata/api_client/models/compare_workflow_config.py +34 -23
- rapidata/api_client/models/compare_workflow_config_context_asset.py +174 -0
- rapidata/api_client/models/compare_workflow_config_metadata_value.py +57 -15
- rapidata/api_client/models/compare_workflow_config_model.py +15 -5
- rapidata/api_client/models/compare_workflow_model.py +34 -6
- rapidata/api_client/models/compare_workflow_model1.py +20 -9
- rapidata/api_client/models/compare_workflow_model_context_asset.py +160 -0
- rapidata/api_client/models/compare_workflow_model_metadata_inner.py +154 -0
- rapidata/api_client/models/compare_workflow_model_pair_maker_config.py +1 -1
- rapidata/api_client/models/comparison_operator.py +2 -2
- rapidata/api_client/models/conditional_validation_selection.py +8 -11
- rapidata/api_client/models/conditional_validation_selection_validation_chance.py +103 -0
- rapidata/api_client/models/confidence_interval.py +89 -0
- rapidata/api_client/models/count_metadata.py +12 -1
- rapidata/api_client/models/country_filter.py +98 -0
- rapidata/api_client/models/create_audience_request.py +99 -0
- rapidata/api_client/models/create_audience_result.py +87 -0
- rapidata/api_client/models/create_benchmark_model.py +87 -0
- rapidata/api_client/models/create_benchmark_participant_model.py +87 -0
- rapidata/api_client/models/create_benchmark_participant_result.py +89 -0
- rapidata/api_client/models/create_benchmark_prompt_result.py +87 -0
- rapidata/api_client/models/create_benchmark_result.py +87 -0
- rapidata/api_client/models/create_bridge_token_result.py +2 -2
- rapidata/api_client/models/create_client_model.py +6 -13
- rapidata/api_client/models/create_complex_order_model.py +9 -9
- rapidata/api_client/models/create_complex_order_result.py +6 -4
- rapidata/api_client/models/create_customer_client_result.py +89 -0
- rapidata/api_client/models/create_datapoint_from_files_model.py +3 -3
- rapidata/api_client/models/create_datapoint_from_text_sources_model.py +3 -3
- rapidata/api_client/models/create_datapoint_from_urls_model.py +3 -3
- rapidata/api_client/models/create_datapoint_model.py +134 -0
- rapidata/api_client/models/create_datapoint_model_asset.py +154 -0
- rapidata/api_client/models/create_datapoint_model_context_asset.py +160 -0
- rapidata/api_client/models/create_datapoint_model_metadata_inner.py +154 -0
- rapidata/api_client/models/create_datapoint_result.py +6 -18
- rapidata/api_client/models/create_demographic_rapid_model.py +45 -7
- rapidata/api_client/models/create_demographic_rapid_model_asset.py +160 -0
- rapidata/api_client/models/create_demographic_rapid_model_context_asset.py +160 -0
- rapidata/api_client/models/create_demographic_rapid_model_new.py +119 -0
- rapidata/api_client/models/create_empty_validation_set_result.py +2 -2
- rapidata/api_client/models/create_leaderboard_model.py +140 -0
- rapidata/api_client/models/create_leaderboard_participant_model.py +87 -0
- rapidata/api_client/models/create_leaderboard_participant_result.py +89 -0
- rapidata/api_client/models/create_leaderboard_result.py +99 -0
- rapidata/api_client/models/create_order_model.py +30 -101
- rapidata/api_client/models/create_order_model_referee.py +12 -12
- rapidata/api_client/models/create_order_model_workflow.py +35 -21
- rapidata/api_client/models/create_order_result.py +6 -4
- rapidata/api_client/models/create_rapid_result.py +2 -2
- rapidata/api_client/models/create_sample_model.py +93 -0
- rapidata/api_client/models/create_sample_model_asset.py +154 -0
- rapidata/api_client/models/create_sample_model_obsolete.py +87 -0
- rapidata/api_client/models/create_simple_pipeline_model_pipeline_steps_inner.py +8 -22
- rapidata/api_client/models/create_unsupported_order_model.py +6 -6
- rapidata/api_client/models/create_validation_set_model.py +5 -5
- rapidata/api_client/models/datapoint_model.py +3 -3
- rapidata/api_client/models/datapoint_model_paged_result.py +105 -0
- rapidata/api_client/models/datapoint_state.py +2 -2
- rapidata/api_client/models/demographic_filter.py +100 -0
- rapidata/api_client/models/dynamic_client_registration_request.py +160 -0
- rapidata/api_client/models/early_stopping_referee_model.py +3 -3
- rapidata/api_client/models/effort_capped_selection.py +106 -0
- rapidata/api_client/models/elo_config.py +2 -2
- rapidata/api_client/models/elo_config_model.py +6 -6
- rapidata/api_client/models/entity_tag_header_value.py +93 -0
- rapidata/api_client/models/evaluation_workflow_config.py +13 -3
- rapidata/api_client/models/evaluation_workflow_model.py +16 -6
- rapidata/api_client/models/existing_asset_input.py +120 -0
- rapidata/api_client/models/existing_asset_input_metadata_value.py +126 -0
- rapidata/api_client/models/feature_flag.py +2 -2
- rapidata/api_client/models/feature_flag_model.py +6 -6
- rapidata/api_client/models/feedback_model.py +7 -7
- rapidata/api_client/models/file_asset.py +3 -5
- rapidata/api_client/models/file_asset_input.py +104 -0
- rapidata/api_client/models/file_asset_input1.py +104 -0
- rapidata/api_client/models/file_asset_input1_file.py +168 -0
- rapidata/api_client/models/file_asset_input2.py +104 -0
- rapidata/api_client/models/file_asset_input3.py +104 -0
- rapidata/api_client/models/file_asset_input_file.py +168 -0
- rapidata/api_client/models/file_asset_metadata_value.py +252 -0
- rapidata/api_client/models/file_asset_model_metadata_value.py +43 -71
- rapidata/api_client/models/file_stream_result.py +122 -0
- rapidata/api_client/models/file_type.py +39 -0
- rapidata/api_client/models/file_type_metadata.py +110 -0
- rapidata/api_client/models/file_type_metadata_model.py +97 -0
- rapidata/api_client/models/filter.py +7 -25
- rapidata/api_client/models/filter_operator.py +3 -2
- rapidata/api_client/models/fork_benchmark_result.py +87 -0
- rapidata/api_client/models/form_file_wrapper.py +135 -0
- rapidata/api_client/models/free_text_payload.py +10 -3
- rapidata/api_client/models/free_text_rapid_blueprint.py +10 -3
- rapidata/api_client/models/gender_user_filter_model.py +2 -2
- rapidata/api_client/models/gender_user_filter_model_gender.py +38 -0
- rapidata/api_client/models/get_asset_metadata_result.py +100 -0
- rapidata/api_client/models/get_audience_by_id_result.py +111 -0
- rapidata/api_client/models/get_available_validation_sets_result.py +2 -2
- rapidata/api_client/models/get_benchmark_by_id_query.py +96 -0
- rapidata/api_client/models/get_benchmark_by_id_query_result.py +94 -0
- rapidata/api_client/models/get_benchmark_by_id_query_result_paged_result.py +105 -0
- rapidata/api_client/models/get_benchmark_by_id_result.py +96 -0
- rapidata/api_client/models/get_boost_result.py +97 -0
- rapidata/api_client/models/get_boost_result_boost_mode.py +37 -0
- rapidata/api_client/models/get_boost_result_boost_status.py +39 -0
- rapidata/api_client/models/get_compare_ab_summary_result.py +5 -5
- rapidata/api_client/models/get_compare_workflow_results_model.py +7 -7
- rapidata/api_client/models/get_compare_workflow_results_result.py +5 -5
- rapidata/api_client/models/get_datapoint_by_id_result.py +10 -21
- rapidata/api_client/models/get_datapoint_by_id_result_asset.py +170 -0
- rapidata/api_client/models/get_dataset_by_id_result.py +2 -2
- rapidata/api_client/models/get_dataset_progress_result.py +2 -2
- rapidata/api_client/models/get_evaluation_workflow_results_model.py +119 -0
- rapidata/api_client/models/get_failed_datapoints_result.py +5 -5
- rapidata/api_client/models/get_failed_datapoints_result_datapoint.py +100 -0
- rapidata/api_client/models/get_file_metadata_result.py +100 -0
- rapidata/api_client/models/get_grouped_ranking_workflow_results_model.py +106 -0
- rapidata/api_client/models/get_grouped_ranking_workflow_results_result.py +97 -0
- rapidata/api_client/models/get_grouped_ranking_workflow_results_result_paged_result.py +105 -0
- rapidata/api_client/models/get_leaderboard_by_id_result.py +135 -0
- rapidata/api_client/models/get_order_by_id_result.py +12 -5
- rapidata/api_client/models/get_participant_by_id_result.py +91 -0
- rapidata/api_client/models/get_pipeline_by_id_result.py +5 -5
- rapidata/api_client/models/get_public_orders_result.py +2 -2
- rapidata/api_client/models/get_public_responses_result.py +95 -0
- rapidata/api_client/models/get_public_responses_result_response.py +112 -0
- rapidata/api_client/models/get_rapid_responses_result.py +6 -12
- rapidata/api_client/models/get_recommended_validation_set_result.py +95 -0
- rapidata/api_client/models/get_responses_for_rapid_result.py +106 -0
- rapidata/api_client/models/get_responses_for_rapid_result_response.py +103 -0
- rapidata/api_client/models/get_responses_for_rapid_result_response_result.py +266 -0
- rapidata/api_client/models/get_responses_result.py +5 -5
- rapidata/api_client/models/get_responses_result_response.py +103 -0
- rapidata/api_client/models/get_sample_by_id_result.py +125 -0
- rapidata/api_client/models/get_simple_workflow_results_model.py +20 -15
- rapidata/api_client/models/get_standing_by_id_result.py +96 -0
- rapidata/api_client/models/get_validation_rapids_result.py +32 -41
- rapidata/api_client/models/get_validation_set_by_id_result.py +10 -4
- rapidata/api_client/models/get_workflow_by_id_result.py +5 -5
- rapidata/api_client/models/get_workflow_by_id_result_workflow.py +23 -9
- rapidata/api_client/models/get_workflow_progress_result.py +5 -11
- rapidata/api_client/models/get_workflow_results_result.py +34 -23
- rapidata/api_client/models/get_workflow_results_result_response.py +103 -0
- rapidata/api_client/models/google_one_tap_login_model.py +4 -4
- rapidata/api_client/models/grouped_ranking_workflow_config.py +155 -0
- rapidata/api_client/models/grouped_ranking_workflow_config_context_assets_value.py +170 -0
- rapidata/api_client/models/grouped_ranking_workflow_model.py +147 -0
- rapidata/api_client/models/grouped_ranking_workflow_model1.py +121 -0
- rapidata/api_client/models/i_artifact_model.py +182 -0
- rapidata/api_client/models/i_artifact_model_campaign_artifact_model.py +98 -0
- rapidata/api_client/models/i_artifact_model_dataset_artifact_model.py +98 -0
- rapidata/api_client/models/i_artifact_model_file_artifact_model.py +98 -0
- rapidata/api_client/models/i_artifact_model_workflow_artifact_model.py +98 -0
- rapidata/api_client/models/i_artifact_model_workflow_config_artifact_model.py +102 -0
- rapidata/api_client/models/i_asset.py +170 -0
- rapidata/api_client/models/i_asset_file_asset.py +111 -0
- rapidata/api_client/models/i_asset_input.py +156 -0
- rapidata/api_client/models/i_asset_input_existing_asset_input.py +118 -0
- rapidata/api_client/models/i_asset_input_multi_asset_input.py +128 -0
- rapidata/api_client/models/i_asset_input_text_asset_input.py +118 -0
- rapidata/api_client/models/i_asset_model.py +170 -0
- rapidata/api_client/models/i_asset_model_file_asset_model.py +113 -0
- rapidata/api_client/models/i_asset_model_multi_asset_model.py +123 -0
- rapidata/api_client/models/i_asset_model_null_asset_model.py +111 -0
- rapidata/api_client/models/i_asset_model_text_asset_model.py +113 -0
- rapidata/api_client/models/i_asset_multi_asset.py +121 -0
- rapidata/api_client/models/i_asset_null_asset.py +109 -0
- rapidata/api_client/models/i_asset_text_asset.py +111 -0
- rapidata/api_client/models/i_campaign_filter.py +282 -0
- rapidata/api_client/models/i_campaign_filter_and_filter.py +117 -0
- rapidata/api_client/models/i_campaign_filter_campaign_filter.py +98 -0
- rapidata/api_client/models/i_campaign_filter_country_filter.py +98 -0
- rapidata/api_client/models/i_campaign_filter_demographic_filter.py +100 -0
- rapidata/api_client/models/i_campaign_filter_language_filter.py +98 -0
- rapidata/api_client/models/i_campaign_filter_new_user_filter.py +96 -0
- rapidata/api_client/models/i_campaign_filter_not_filter.py +113 -0
- rapidata/api_client/models/i_campaign_filter_or_filter.py +117 -0
- rapidata/api_client/models/i_campaign_filter_response_count_filter.py +103 -0
- rapidata/api_client/models/i_campaign_filter_user_action_restriction_filter.py +106 -0
- rapidata/api_client/models/i_campaign_filter_user_score_filter.py +102 -0
- rapidata/api_client/models/i_campaign_filter_user_state_filter.py +106 -0
- rapidata/api_client/models/i_dataset_metadata_input.py +154 -0
- rapidata/api_client/models/i_dataset_metadata_input_prompt_asset_metadata_input.py +100 -0
- rapidata/api_client/models/i_dataset_metadata_input_prompt_metadata_input.py +96 -0
- rapidata/api_client/models/i_dataset_metadata_input_transcription_metadata_input.py +96 -0
- rapidata/api_client/models/i_dataset_model.py +126 -0
- rapidata/api_client/models/i_dataset_model_clone_dataset_model.py +98 -0
- rapidata/api_client/models/i_metadata.py +252 -0
- rapidata/api_client/models/i_metadata_classification_metadata.py +109 -0
- rapidata/api_client/models/i_metadata_count_metadata.py +109 -0
- rapidata/api_client/models/i_metadata_file_type_metadata.py +110 -0
- rapidata/api_client/models/i_metadata_image_dimension_metadata.py +111 -0
- rapidata/api_client/models/i_metadata_input.py +126 -0
- rapidata/api_client/models/i_metadata_input_text_metadata_input.py +111 -0
- rapidata/api_client/models/i_metadata_location_metadata.py +111 -0
- rapidata/api_client/models/i_metadata_model.py +252 -0
- rapidata/api_client/models/i_metadata_model_classification_metadata_model.py +96 -0
- rapidata/api_client/models/i_metadata_model_count_metadata_model.py +96 -0
- rapidata/api_client/models/i_metadata_model_file_type_metadata_model.py +97 -0
- rapidata/api_client/models/i_metadata_model_image_dimension_metadata_model.py +98 -0
- rapidata/api_client/models/i_metadata_model_location_metadata_model.py +98 -0
- rapidata/api_client/models/i_metadata_model_original_filename_metadata_model.py +96 -0
- rapidata/api_client/models/i_metadata_model_source_url_metadata_model.py +96 -0
- rapidata/api_client/models/i_metadata_model_streams_metadata_model.py +100 -0
- rapidata/api_client/models/i_metadata_model_text_metadata_model.py +101 -0
- rapidata/api_client/models/i_metadata_model_video_duration_metadata_model.py +97 -0
- rapidata/api_client/models/i_metadata_original_filename_metadata.py +109 -0
- rapidata/api_client/models/i_metadata_source_url_metadata.py +109 -0
- rapidata/api_client/models/i_metadata_streams_metadata.py +113 -0
- rapidata/api_client/models/i_metadata_text_metadata.py +114 -0
- rapidata/api_client/models/i_metadata_video_duration_metadata.py +110 -0
- rapidata/api_client/models/i_order_workflow_model.py +168 -0
- rapidata/api_client/models/i_order_workflow_model_compare_workflow_model.py +146 -0
- rapidata/api_client/models/i_order_workflow_model_evaluation_workflow_model.py +108 -0
- rapidata/api_client/models/i_order_workflow_model_grouped_ranking_workflow_model.py +147 -0
- rapidata/api_client/models/i_order_workflow_model_simple_workflow_model.py +110 -0
- rapidata/api_client/models/i_pair_maker_config.py +126 -0
- rapidata/api_client/models/i_pair_maker_config_model.py +126 -0
- rapidata/api_client/models/i_pair_maker_config_model_online_pair_maker_config_model.py +98 -0
- rapidata/api_client/models/i_pair_maker_config_online_pair_maker_config.py +98 -0
- rapidata/api_client/models/i_pair_maker_information.py +126 -0
- rapidata/api_client/models/i_pair_maker_information_online_pair_maker_information.py +100 -0
- rapidata/api_client/models/i_pipeline_artifact_model.py +126 -0
- rapidata/api_client/models/i_pipeline_artifact_model_create_dataset_artifact_model.py +102 -0
- rapidata/api_client/models/i_pipeline_model.py +126 -0
- rapidata/api_client/models/i_pipeline_model_create_simple_pipeline_model.py +116 -0
- rapidata/api_client/models/i_pipeline_step_model.py +168 -0
- rapidata/api_client/models/i_pipeline_step_model_dataset_evaluation_step_model.py +102 -0
- rapidata/api_client/models/i_pipeline_step_model_send_completion_mail_step_model.py +98 -0
- rapidata/api_client/models/i_pipeline_step_model_workflow_aggregation_step_model.py +103 -0
- rapidata/api_client/models/i_pipeline_step_model_workflow_labeling_step_model.py +96 -0
- rapidata/api_client/models/i_rapid_blueprint.py +252 -0
- rapidata/api_client/models/i_rapid_blueprint_attach_category_rapid_blueprint.py +108 -0
- rapidata/api_client/models/i_rapid_blueprint_bounding_box_rapid_blueprint.py +96 -0
- rapidata/api_client/models/i_rapid_blueprint_compare_rapid_blueprint.py +98 -0
- rapidata/api_client/models/i_rapid_blueprint_free_text_rapid_blueprint.py +103 -0
- rapidata/api_client/models/i_rapid_blueprint_line_rapid_blueprint.py +96 -0
- rapidata/api_client/models/i_rapid_blueprint_locate_rapid_blueprint.py +96 -0
- rapidata/api_client/models/i_rapid_blueprint_named_entity_rapid_blueprint.py +98 -0
- rapidata/api_client/models/i_rapid_blueprint_polygon_rapid_blueprint.py +96 -0
- rapidata/api_client/models/i_rapid_blueprint_scrub_rapid_blueprint.py +96 -0
- rapidata/api_client/models/i_rapid_blueprint_transcription_rapid_blueprint.py +96 -0
- rapidata/api_client/models/i_rapid_payload.py +252 -0
- rapidata/api_client/models/i_rapid_payload_bounding_box_payload.py +96 -0
- rapidata/api_client/models/i_rapid_payload_classify_payload.py +106 -0
- rapidata/api_client/models/i_rapid_payload_compare_payload.py +96 -0
- rapidata/api_client/models/i_rapid_payload_free_text_payload.py +103 -0
- rapidata/api_client/models/i_rapid_payload_line_payload.py +96 -0
- rapidata/api_client/models/i_rapid_payload_locate_payload.py +96 -0
- rapidata/api_client/models/i_rapid_payload_named_entity_payload.py +98 -0
- rapidata/api_client/models/i_rapid_payload_polygon_payload.py +96 -0
- rapidata/api_client/models/i_rapid_payload_scrub_payload.py +96 -0
- rapidata/api_client/models/i_rapid_payload_transcription_payload.py +106 -0
- rapidata/api_client/models/i_rapid_result.py +266 -0
- rapidata/api_client/models/i_rapid_result_attach_category_result.py +98 -0
- rapidata/api_client/models/i_rapid_result_bounding_box_result.py +106 -0
- rapidata/api_client/models/i_rapid_result_compare_result.py +98 -0
- rapidata/api_client/models/i_rapid_result_free_text_result.py +98 -0
- rapidata/api_client/models/i_rapid_result_line_result.py +106 -0
- rapidata/api_client/models/i_rapid_result_locate_result.py +106 -0
- rapidata/api_client/models/i_rapid_result_named_entity_result.py +106 -0
- rapidata/api_client/models/i_rapid_result_polygon_result.py +106 -0
- rapidata/api_client/models/i_rapid_result_scrub_result.py +98 -0
- rapidata/api_client/models/i_rapid_result_skip_result.py +96 -0
- rapidata/api_client/models/i_rapid_result_transcription_result.py +106 -0
- rapidata/api_client/models/i_referee_config.py +154 -0
- rapidata/api_client/models/i_referee_config_naive_referee_config.py +96 -0
- rapidata/api_client/models/i_referee_config_never_ending_referee_config.py +94 -0
- rapidata/api_client/models/i_referee_config_probabilistic_attach_category_referee_config.py +98 -0
- rapidata/api_client/models/i_referee_info.py +154 -0
- rapidata/api_client/models/i_referee_info_naive_referee_info.py +96 -0
- rapidata/api_client/models/i_referee_info_never_ending_referee_info.py +94 -0
- rapidata/api_client/models/i_referee_info_probabilistic_attach_category_referee_info.py +98 -0
- rapidata/api_client/models/i_referee_model.py +140 -0
- rapidata/api_client/models/i_referee_model_early_stopping_referee_model.py +98 -0
- rapidata/api_client/models/i_referee_model_naive_referee_model.py +96 -0
- rapidata/api_client/models/i_selection.py +240 -0
- rapidata/api_client/models/i_selection_ab_test_selection.py +122 -0
- rapidata/api_client/models/i_selection_capped_selection.py +108 -0
- rapidata/api_client/models/i_selection_conditional_validation_selection.py +110 -0
- rapidata/api_client/models/i_selection_demographic_selection.py +98 -0
- rapidata/api_client/models/i_selection_effort_capped_selection.py +101 -0
- rapidata/api_client/models/i_selection_labeling_selection.py +103 -0
- rapidata/api_client/models/i_selection_shuffling_selection.py +106 -0
- rapidata/api_client/models/i_selection_static_selection.py +96 -0
- rapidata/api_client/models/i_selection_validation_selection.py +98 -0
- rapidata/api_client/models/i_user_filter_model.py +282 -0
- rapidata/api_client/models/i_user_filter_model_age_user_filter_model.py +104 -0
- rapidata/api_client/models/i_user_filter_model_and_user_filter_model.py +106 -0
- rapidata/api_client/models/i_user_filter_model_campaign_user_filter_model.py +96 -0
- rapidata/api_client/models/i_user_filter_model_country_user_filter_model.py +96 -0
- rapidata/api_client/models/i_user_filter_model_custom_user_filter_model.py +98 -0
- rapidata/api_client/models/i_user_filter_model_gender_user_filter_model.py +104 -0
- rapidata/api_client/models/i_user_filter_model_language_user_filter_model.py +96 -0
- rapidata/api_client/models/i_user_filter_model_new_user_filter_model.py +94 -0
- rapidata/api_client/models/i_user_filter_model_not_user_filter_model.py +102 -0
- rapidata/api_client/models/i_user_filter_model_or_user_filter_model.py +106 -0
- rapidata/api_client/models/i_user_filter_model_response_count_user_filter_model.py +101 -0
- rapidata/api_client/models/i_user_filter_model_user_score_user_filter_model.py +105 -0
- rapidata/api_client/models/i_validation_metadata_input.py +140 -0
- rapidata/api_client/models/i_validation_metadata_input_prompt_asset_metadata_input.py +100 -0
- rapidata/api_client/models/i_validation_metadata_input_prompt_metadata_input.py +96 -0
- rapidata/api_client/models/i_validation_truth.py +280 -0
- rapidata/api_client/models/i_validation_truth_attach_category_truth.py +96 -0
- rapidata/api_client/models/i_validation_truth_bounding_box_truth.py +102 -0
- rapidata/api_client/models/i_validation_truth_compare_truth.py +96 -0
- rapidata/api_client/models/i_validation_truth_empty_validation_truth.py +94 -0
- rapidata/api_client/models/i_validation_truth_line_truth.py +94 -0
- rapidata/api_client/models/i_validation_truth_locate_box_truth.py +104 -0
- rapidata/api_client/models/i_validation_truth_multi_compare_truth.py +96 -0
- rapidata/api_client/models/i_validation_truth_named_entity_truth.py +104 -0
- rapidata/api_client/models/i_validation_truth_polygon_truth.py +94 -0
- rapidata/api_client/models/i_validation_truth_scrub_truth.py +104 -0
- rapidata/api_client/models/i_validation_truth_skip_truth.py +94 -0
- rapidata/api_client/models/i_validation_truth_transcription_truth.py +115 -0
- rapidata/api_client/models/i_workflow_config.py +168 -0
- rapidata/api_client/models/i_workflow_config_compare_workflow_config.py +142 -0
- rapidata/api_client/models/i_workflow_config_evaluation_workflow_config.py +114 -0
- rapidata/api_client/models/i_workflow_config_grouped_ranking_workflow_config.py +155 -0
- rapidata/api_client/models/i_workflow_config_simple_workflow_config.py +116 -0
- rapidata/api_client/models/i_workflow_model.py +168 -0
- rapidata/api_client/models/i_workflow_model_compare_workflow_model.py +145 -0
- rapidata/api_client/models/i_workflow_model_evaluation_workflow_model.py +115 -0
- rapidata/api_client/models/i_workflow_model_grouped_ranking_workflow_model.py +121 -0
- rapidata/api_client/models/i_workflow_model_simple_workflow_model.py +119 -0
- rapidata/api_client/models/image_dimension_metadata.py +12 -1
- rapidata/api_client/models/inquire_file_metadata_result.py +100 -0
- rapidata/api_client/models/inspect_report_result.py +2 -2
- rapidata/api_client/models/json_web_key.py +224 -0
- rapidata/api_client/models/json_web_key_set.py +95 -0
- rapidata/api_client/models/labeling_selection.py +11 -13
- rapidata/api_client/models/language_filter.py +98 -0
- rapidata/api_client/models/leaderboard_query_result.py +135 -0
- rapidata/api_client/models/leaderboard_query_result_paged_result.py +105 -0
- rapidata/api_client/models/leaderboards_query_result.py +135 -0
- rapidata/api_client/models/line_result.py +3 -3
- rapidata/api_client/models/line_result_line.py +97 -0
- rapidata/api_client/models/line_result_line_point.py +89 -0
- rapidata/api_client/models/local_file_wrapper.py +120 -0
- rapidata/api_client/models/locate_coordinate.py +4 -13
- rapidata/api_client/models/location_metadata.py +12 -1
- rapidata/api_client/models/logic_operator.py +2 -2
- rapidata/api_client/models/metadata_i_order_metadata_input.py +154 -0
- rapidata/api_client/models/metadata_i_order_metadata_input_metadata_prompt_asset_metadata_input.py +100 -0
- rapidata/api_client/models/metadata_i_order_metadata_input_metadata_prompt_metadata_input.py +96 -0
- rapidata/api_client/models/metadata_i_order_metadata_input_metadata_transcription_metadata_input.py +96 -0
- rapidata/api_client/models/metadata_prompt_asset_metadata_input.py +100 -0
- rapidata/api_client/models/metadata_prompt_metadata_input.py +96 -0
- rapidata/api_client/models/metadata_transcription_metadata_input.py +96 -0
- rapidata/api_client/models/multi_asset.py +6 -6
- rapidata/api_client/models/multi_asset_assets_inner.py +170 -0
- rapidata/api_client/models/multi_asset_input.py +130 -0
- rapidata/api_client/models/multi_asset_input1.py +110 -0
- rapidata/api_client/models/multi_asset_input1_assets_inner.py +198 -0
- rapidata/api_client/models/multi_asset_input2.py +110 -0
- rapidata/api_client/models/multi_asset_input3.py +110 -0
- rapidata/api_client/models/multi_asset_input3_assets_inner.py +198 -0
- rapidata/api_client/models/multi_asset_input_assets_inner.py +156 -0
- rapidata/api_client/models/multi_asset_model.py +3 -3
- rapidata/api_client/models/naive_referee_model.py +2 -2
- rapidata/api_client/models/named_classification.py +4 -13
- rapidata/api_client/models/new_user_filter.py +96 -0
- rapidata/api_client/models/newsletter_model.py +6 -6
- rapidata/api_client/models/not_available_yet_result.py +4 -13
- rapidata/api_client/models/not_filter.py +117 -0
- rapidata/api_client/models/not_user_filter_model.py +3 -3
- rapidata/api_client/models/null_asset.py +3 -5
- rapidata/api_client/models/online_pair_maker_config_model.py +3 -3
- rapidata/api_client/models/or_filter.py +121 -0
- rapidata/api_client/models/or_user_filter_model.py +3 -3
- rapidata/api_client/models/order_model.py +15 -14
- rapidata/api_client/models/order_state.py +2 -2
- rapidata/api_client/models/original_filename_metadata.py +12 -1
- rapidata/api_client/models/page_info.py +2 -7
- rapidata/api_client/models/paged_result_aggregated_orders_model.py +105 -0
- rapidata/api_client/models/paged_result_benchmark_query_result.py +105 -0
- rapidata/api_client/models/paged_result_campaign_query_result.py +105 -0
- rapidata/api_client/models/paged_result_clients_query_result.py +105 -0
- rapidata/api_client/models/paged_result_datapoint_model.py +105 -0
- rapidata/api_client/models/paged_result_get_compare_workflow_results_result.py +105 -0
- rapidata/api_client/models/paged_result_get_grouped_ranking_workflow_results_result.py +105 -0
- rapidata/api_client/models/paged_result_get_validation_rapids_result.py +105 -0
- rapidata/api_client/models/paged_result_get_workflow_results_result.py +105 -0
- rapidata/api_client/models/paged_result_i_workflow_model.py +105 -0
- rapidata/api_client/models/paged_result_leaderboard_query_result.py +105 -0
- rapidata/api_client/models/paged_result_leaderboards_query_result.py +105 -0
- rapidata/api_client/models/paged_result_of_aggregated_orders_model.py +103 -0
- rapidata/api_client/models/paged_result_of_benchmark_query_result.py +103 -0
- rapidata/api_client/models/paged_result_of_campaign_query_result.py +103 -0
- rapidata/api_client/models/paged_result_of_clients_query_result.py +103 -0
- rapidata/api_client/models/paged_result_of_get_compare_workflow_results_result.py +103 -0
- rapidata/api_client/models/paged_result_of_get_grouped_ranking_workflow_results_result.py +103 -0
- rapidata/api_client/models/paged_result_of_get_validation_rapids_result.py +103 -0
- rapidata/api_client/models/paged_result_of_get_workflow_results_result.py +103 -0
- rapidata/api_client/models/paged_result_of_i_workflow_model.py +103 -0
- rapidata/api_client/models/paged_result_of_leaderboards_query_result.py +103 -0
- rapidata/api_client/models/paged_result_of_order_model.py +103 -0
- rapidata/api_client/models/paged_result_of_participant_by_benchmark.py +103 -0
- rapidata/api_client/models/paged_result_of_prompt_by_benchmark_result.py +103 -0
- rapidata/api_client/models/paged_result_of_query_audiences_result.py +103 -0
- rapidata/api_client/models/paged_result_of_query_datapoints_by_dataset_id_result.py +103 -0
- rapidata/api_client/models/paged_result_of_query_validation_rapid_eligibility_result.py +103 -0
- rapidata/api_client/models/paged_result_of_rapid_model.py +103 -0
- rapidata/api_client/models/paged_result_of_runs_by_leaderboard_result.py +103 -0
- rapidata/api_client/models/paged_result_of_sample_by_identifier.py +103 -0
- rapidata/api_client/models/paged_result_of_sample_by_participant.py +103 -0
- rapidata/api_client/models/paged_result_of_standing_by_leaderboard.py +103 -0
- rapidata/api_client/models/paged_result_of_validation_set_model.py +103 -0
- rapidata/api_client/models/paged_result_order_model.py +105 -0
- rapidata/api_client/models/paged_result_participant_by_benchmark.py +105 -0
- rapidata/api_client/models/paged_result_potential_validation_rapid.py +105 -0
- rapidata/api_client/models/paged_result_prompt_by_benchmark_result.py +105 -0
- rapidata/api_client/models/paged_result_query_audiences_result.py +105 -0
- rapidata/api_client/models/paged_result_query_datapoints_by_dataset_id_result.py +105 -0
- rapidata/api_client/models/paged_result_query_validation_rapid_eligibility_result.py +105 -0
- rapidata/api_client/models/paged_result_rapid_model.py +105 -0
- rapidata/api_client/models/paged_result_runs_by_leaderboard_result.py +105 -0
- rapidata/api_client/models/paged_result_sample_by_identifier.py +105 -0
- rapidata/api_client/models/paged_result_sample_by_participant.py +105 -0
- rapidata/api_client/models/paged_result_standing_by_leaderboard.py +105 -0
- rapidata/api_client/models/paged_result_validation_set_model.py +105 -0
- rapidata/api_client/models/participant_by_benchmark.py +94 -0
- rapidata/api_client/models/participant_by_benchmark_paged_result.py +105 -0
- rapidata/api_client/models/participant_by_leaderboard.py +113 -0
- rapidata/api_client/models/participant_by_leaderboard_paged_result.py +105 -0
- rapidata/api_client/models/participant_status.py +38 -0
- rapidata/api_client/models/pipeline_id_workflow_config_put_request.py +140 -0
- rapidata/api_client/models/polygon_result.py +3 -3
- rapidata/api_client/models/polygon_result_coordinate.py +89 -0
- rapidata/api_client/models/polygon_result_shape.py +95 -0
- rapidata/api_client/models/potential_validation_rapid.py +103 -0
- rapidata/api_client/models/potential_validation_rapid_paged_result.py +105 -0
- rapidata/api_client/models/potential_validation_rapid_truth.py +280 -0
- rapidata/api_client/models/preliminary_download_model.py +5 -5
- rapidata/api_client/models/preview_order_model.py +87 -0
- rapidata/api_client/models/problem_details.py +2 -20
- rapidata/api_client/models/prompt_asset_metadata_input.py +6 -8
- rapidata/api_client/models/prompt_asset_metadata_input_asset.py +154 -0
- rapidata/api_client/models/prompt_by_benchmark_result.py +112 -0
- rapidata/api_client/models/prompt_by_benchmark_result_paged_result.py +105 -0
- rapidata/api_client/models/prompt_by_leaderboard_result.py +90 -0
- rapidata/api_client/models/prompt_by_leaderboard_result_paged_result.py +105 -0
- rapidata/api_client/models/prompt_metadata.py +12 -1
- rapidata/api_client/models/prompt_metadata_input.py +2 -2
- rapidata/api_client/models/prompt_type.py +38 -0
- rapidata/api_client/models/proxy_file_wrapper.py +129 -0
- rapidata/api_client/models/public_order_model.py +2 -2
- rapidata/api_client/models/public_rapid_response.py +112 -0
- rapidata/api_client/models/query_audiences_result.py +111 -0
- rapidata/api_client/models/query_datapoints_by_dataset_id_result.py +95 -0
- rapidata/api_client/models/query_model.py +10 -5
- rapidata/api_client/models/query_validation_model.py +97 -0
- rapidata/api_client/models/query_validation_rapid_eligibility_model_query_validation_model.py +107 -0
- rapidata/api_client/models/query_validation_rapid_eligibility_result.py +103 -0
- rapidata/api_client/models/query_validation_rapid_eligibility_result_truth.py +280 -0
- rapidata/api_client/models/rapid_issue.py +2 -2
- rapidata/api_client/models/rapid_modality.py +46 -0
- rapidata/api_client/models/rapid_model.py +33 -49
- rapidata/api_client/models/rapid_result_model.py +7 -7
- rapidata/api_client/models/rapid_skipped_model.py +5 -5
- rapidata/api_client/models/rapid_state.py +2 -2
- rapidata/api_client/models/read_bridge_token_keys_result.py +10 -24
- rapidata/api_client/models/reference_asset_input.py +100 -0
- rapidata/api_client/models/report_model.py +9 -15
- rapidata/api_client/models/response_count_filter.py +103 -0
- rapidata/api_client/models/response_count_user_filter_model.py +2 -8
- rapidata/api_client/models/retrieval_mode.py +2 -2
- rapidata/api_client/models/root_filter.py +5 -14
- rapidata/api_client/models/run_status.py +39 -0
- rapidata/api_client/models/runs_by_leaderboard_result.py +104 -0
- rapidata/api_client/models/runs_by_leaderboard_result_paged_result.py +105 -0
- rapidata/api_client/models/sample_by_identifier.py +125 -0
- rapidata/api_client/models/sample_by_identifier_paged_result.py +105 -0
- rapidata/api_client/models/sample_by_participant.py +121 -0
- rapidata/api_client/models/sample_by_participant_paged_result.py +105 -0
- rapidata/api_client/models/scrub_range.py +2 -2
- rapidata/api_client/models/send_survey_model.py +87 -0
- rapidata/api_client/models/simple_workflow_config.py +15 -7
- rapidata/api_client/models/simple_workflow_config_blueprint.py +37 -23
- rapidata/api_client/models/simple_workflow_config_model.py +11 -3
- rapidata/api_client/models/simple_workflow_model.py +14 -4
- rapidata/api_client/models/simple_workflow_model1.py +4 -11
- rapidata/api_client/models/simple_workflow_model_blueprint.py +1 -1
- rapidata/api_client/models/sort_criterion.py +5 -11
- rapidata/api_client/models/sort_direction.py +2 -2
- rapidata/api_client/models/source_url_metadata.py +12 -1
- rapidata/api_client/models/standing_by_benchmark.py +113 -0
- rapidata/api_client/models/standing_by_leaderboard.py +113 -0
- rapidata/api_client/models/standing_by_leaderboard_paged_result.py +105 -0
- rapidata/api_client/models/standing_status.py +38 -0
- rapidata/api_client/models/standings_by_benchmark_result.py +95 -0
- rapidata/api_client/models/standings_by_leaderboard_result.py +95 -0
- rapidata/api_client/models/start_preliminary_download_result.py +87 -0
- rapidata/api_client/models/sticky_state.py +3 -2
- rapidata/api_client/models/stream_file_wrapper.py +138 -0
- rapidata/api_client/models/streams_metadata.py +113 -0
- rapidata/api_client/models/streams_metadata_model.py +100 -0
- rapidata/api_client/models/string_segment.py +105 -0
- rapidata/api_client/models/submit_coco_model.py +1 -3
- rapidata/api_client/models/submit_order_model.py +87 -0
- rapidata/api_client/models/submit_participant_result.py +89 -0
- rapidata/api_client/models/submit_prompt_model.py +107 -0
- rapidata/api_client/models/submit_prompt_model_prompt_asset.py +202 -0
- rapidata/api_client/models/tags_by_benchmark_result.py +87 -0
- rapidata/api_client/models/text_asset.py +3 -5
- rapidata/api_client/models/text_asset_input.py +120 -0
- rapidata/api_client/models/text_metadata.py +18 -2
- rapidata/api_client/models/text_metadata_input.py +111 -0
- rapidata/api_client/models/text_metadata_model.py +7 -2
- rapidata/api_client/models/transcription_metadata.py +9 -1
- rapidata/api_client/models/transcription_metadata_input.py +2 -2
- rapidata/api_client/models/transcription_word.py +2 -2
- rapidata/api_client/models/translated_string.py +2 -2
- rapidata/api_client/models/unlock_order_result.py +2 -2
- rapidata/api_client/models/update_audience_request.py +102 -0
- rapidata/api_client/models/update_benchmark_model.py +99 -0
- rapidata/api_client/models/update_benchmark_name_model.py +87 -0
- rapidata/api_client/models/update_campaign_model.py +11 -11
- rapidata/api_client/models/update_dataset_name_model.py +5 -5
- rapidata/api_client/models/update_dimensions_model.py +3 -3
- rapidata/api_client/models/update_leaderboard_model.py +106 -0
- rapidata/api_client/models/update_leaderboard_name_model.py +87 -0
- rapidata/api_client/models/update_leaderboard_response_config_model.py +89 -0
- rapidata/api_client/models/update_order_name_model.py +5 -5
- rapidata/api_client/models/update_participant_model.py +92 -0
- rapidata/api_client/models/update_participant_name_model.py +87 -0
- rapidata/api_client/models/update_priority_model.py +87 -0
- rapidata/api_client/models/update_prompt_tags_model.py +87 -0
- rapidata/api_client/models/update_should_alert_model.py +87 -0
- rapidata/api_client/models/update_validation_rapid_model.py +28 -10
- rapidata/api_client/models/update_validation_rapid_model_context_asset.py +160 -0
- rapidata/api_client/models/update_validation_set_model.py +120 -0
- rapidata/api_client/models/upload_asset_result.py +102 -0
- rapidata/api_client/models/upload_file_from_url_result.py +87 -0
- rapidata/api_client/models/upload_file_result.py +87 -0
- rapidata/api_client/models/user_action_restriction.py +37 -0
- rapidata/api_client/models/user_action_restriction_filter.py +101 -0
- rapidata/api_client/models/user_score_filter.py +102 -0
- rapidata/api_client/models/user_state.py +38 -0
- rapidata/api_client/models/user_state_filter.py +101 -0
- rapidata/api_client/models/validation_chance.py +20 -3
- rapidata/api_client/models/validation_set_model.py +39 -5
- rapidata/api_client/models/validation_set_overview_model.py +2 -2
- rapidata/api_client/models/validation_set_validation_set_id_rapid_post_payload_parameter.py +252 -0
- rapidata/api_client/models/validation_set_validation_set_id_rapid_post_truth_parameter.py +280 -0
- rapidata/api_client/models/validation_set_zip_post_request_blueprint.py +252 -0
- rapidata/api_client/models/video_duration_metadata.py +109 -0
- rapidata/api_client/models/video_duration_metadata_model.py +96 -0
- rapidata/api_client/models/workflow_aggregation_step_model.py +3 -12
- rapidata/api_client/models/workflow_config_artifact_model_workflow_config.py +23 -9
- rapidata/api_client/models/workflow_state.py +2 -2
- rapidata/api_client/models/zip_entry_file_wrapper.py +151 -0
- rapidata/api_client/rest.py +16 -9
- rapidata/api_client_README.md +389 -315
- rapidata/rapidata_client/__init__.py +10 -17
- rapidata/rapidata_client/api/rapidata_api_client.py +253 -0
- rapidata/rapidata_client/benchmark/__init__.py +0 -0
- rapidata/rapidata_client/benchmark/_detail_mapper.py +32 -0
- rapidata/rapidata_client/benchmark/leaderboard/__init__.py +0 -0
- rapidata/rapidata_client/benchmark/leaderboard/rapidata_leaderboard.py +221 -0
- rapidata/rapidata_client/benchmark/participant/__init__.py +0 -0
- rapidata/rapidata_client/benchmark/participant/_participant.py +145 -0
- rapidata/rapidata_client/benchmark/rapidata_benchmark.py +546 -0
- rapidata/rapidata_client/benchmark/rapidata_benchmark_manager.py +219 -0
- rapidata/rapidata_client/config/__init__.py +4 -0
- rapidata/rapidata_client/config/logger.py +135 -0
- rapidata/rapidata_client/config/logging_config.py +55 -0
- rapidata/rapidata_client/config/managed_print.py +6 -0
- rapidata/rapidata_client/config/order_config.py +14 -0
- rapidata/rapidata_client/config/rapidata_config.py +36 -0
- rapidata/rapidata_client/config/tracer.py +184 -0
- rapidata/rapidata_client/config/upload_config.py +64 -0
- rapidata/rapidata_client/datapoints/__init__.py +10 -0
- rapidata/rapidata_client/datapoints/_asset_uploader.py +169 -0
- rapidata/rapidata_client/datapoints/_datapoint.py +92 -0
- rapidata/rapidata_client/datapoints/_datapoint_uploader.py +47 -0
- rapidata/rapidata_client/datapoints/_datapoints_validator.py +70 -0
- rapidata/rapidata_client/datapoints/assets/__init__.py +0 -0
- rapidata/rapidata_client/datapoints/assets/constants.py +7 -0
- rapidata/rapidata_client/{metadata → datapoints/metadata}/__init__.py +1 -0
- rapidata/rapidata_client/datapoints/metadata/_media_asset_metadata.py +26 -0
- rapidata/rapidata_client/datapoints/metadata/_private_text_metadata.py +16 -0
- rapidata/rapidata_client/datapoints/metadata/_prompt_identifier_metadata.py +14 -0
- rapidata/rapidata_client/datapoints/metadata/_prompt_metadata.py +12 -0
- rapidata/rapidata_client/datapoints/metadata/_public_text_metadata.py +16 -0
- rapidata/rapidata_client/{metadata → datapoints/metadata}/_select_words_metadata.py +4 -5
- rapidata/rapidata_client/demographic/demographic_manager.py +44 -19
- rapidata/rapidata_client/exceptions/__init__.py +1 -0
- rapidata/rapidata_client/exceptions/failed_upload_exception.py +20 -0
- rapidata/rapidata_client/filter/__init__.py +1 -0
- rapidata/rapidata_client/filter/_base_filter.py +27 -6
- rapidata/rapidata_client/filter/age_filter.py +21 -10
- rapidata/rapidata_client/filter/and_filter.py +42 -0
- rapidata/rapidata_client/filter/campaign_filter.py +18 -10
- rapidata/rapidata_client/filter/country_filter.py +34 -12
- rapidata/rapidata_client/filter/custom_filter.py +22 -12
- rapidata/rapidata_client/filter/gender_filter.py +22 -10
- rapidata/rapidata_client/filter/language_filter.py +39 -21
- rapidata/rapidata_client/filter/models/age_group.py +14 -12
- rapidata/rapidata_client/filter/models/gender.py +12 -8
- rapidata/rapidata_client/filter/new_user_filter.py +11 -4
- rapidata/rapidata_client/filter/not_filter.py +23 -11
- rapidata/rapidata_client/filter/or_filter.py +23 -11
- rapidata/rapidata_client/filter/rapidata_filters.py +26 -20
- rapidata/rapidata_client/filter/response_count_filter.py +36 -20
- rapidata/rapidata_client/filter/user_score_filter.py +47 -24
- rapidata/rapidata_client/order/_rapidata_order_builder.py +286 -193
- rapidata/rapidata_client/order/dataset/_rapidata_dataset.py +153 -0
- rapidata/rapidata_client/order/rapidata_order.py +317 -160
- rapidata/rapidata_client/order/rapidata_order_manager.py +689 -428
- rapidata/rapidata_client/order/rapidata_results.py +98 -67
- rapidata/rapidata_client/rapidata_client.py +99 -33
- rapidata/rapidata_client/referee/__init__.py +1 -1
- rapidata/rapidata_client/referee/_base_referee.py +7 -3
- rapidata/rapidata_client/referee/_early_stopping_referee.py +20 -11
- rapidata/rapidata_client/referee/_naive_referee.py +18 -3
- rapidata/rapidata_client/selection/__init__.py +2 -1
- rapidata/rapidata_client/selection/_base_selection.py +9 -2
- rapidata/rapidata_client/selection/ab_test_selection.py +28 -20
- rapidata/rapidata_client/selection/capped_selection.py +23 -16
- rapidata/rapidata_client/selection/conditional_validation_selection.py +43 -24
- rapidata/rapidata_client/selection/demographic_selection.py +21 -6
- rapidata/rapidata_client/selection/effort_selection.py +49 -0
- rapidata/rapidata_client/selection/labeling_selection.py +34 -11
- rapidata/rapidata_client/selection/{retrieval_modes.py → rapidata_retrieval_modes.py} +7 -4
- rapidata/rapidata_client/selection/rapidata_selections.py +25 -15
- rapidata/rapidata_client/selection/shuffling_selection.py +21 -13
- rapidata/rapidata_client/selection/static_selection.py +19 -8
- rapidata/rapidata_client/selection/validation_selection.py +20 -4
- rapidata/rapidata_client/settings/__init__.py +4 -1
- rapidata/rapidata_client/settings/_rapidata_setting.py +15 -2
- rapidata/rapidata_client/settings/alert_on_fast_response.py +8 -5
- rapidata/rapidata_client/settings/allow_neither_both.py +17 -0
- rapidata/rapidata_client/settings/custom_setting.py +3 -2
- rapidata/rapidata_client/settings/free_text_minimum_characters.py +9 -4
- rapidata/rapidata_client/settings/models/translation_behaviour_options.py +3 -2
- rapidata/rapidata_client/settings/mute_video.py +15 -0
- rapidata/rapidata_client/settings/no_shuffle.py +4 -2
- rapidata/rapidata_client/settings/play_video_until_the_end.py +7 -4
- rapidata/rapidata_client/settings/rapidata_settings.py +23 -11
- rapidata/rapidata_client/settings/swap_context_instruction.py +20 -0
- rapidata/rapidata_client/settings/translation_behaviour.py +7 -5
- rapidata/rapidata_client/validation/rapidata_validation_set.py +106 -12
- rapidata/rapidata_client/validation/rapids/_validation_rapid_uploader.py +62 -0
- rapidata/rapidata_client/validation/rapids/box.py +37 -12
- rapidata/rapidata_client/validation/rapids/rapids.py +28 -103
- rapidata/rapidata_client/validation/rapids/rapids_manager.py +315 -208
- rapidata/rapidata_client/validation/validation_set_manager.py +531 -219
- rapidata/rapidata_client/workflow/__init__.py +2 -1
- rapidata/rapidata_client/workflow/_base_workflow.py +25 -7
- rapidata/rapidata_client/workflow/_classify_workflow.py +58 -15
- rapidata/rapidata_client/workflow/_compare_workflow.py +44 -9
- rapidata/rapidata_client/workflow/_draw_workflow.py +40 -10
- rapidata/rapidata_client/workflow/_evaluation_workflow.py +28 -7
- rapidata/rapidata_client/workflow/_free_text_workflow.py +46 -9
- rapidata/rapidata_client/workflow/_locate_workflow.py +40 -10
- rapidata/rapidata_client/workflow/_multi_ranking_workflow.py +87 -0
- rapidata/rapidata_client/workflow/_ranking_workflow.py +109 -25
- rapidata/rapidata_client/workflow/_select_words_workflow.py +51 -11
- rapidata/rapidata_client/workflow/_timestamp_workflow.py +42 -11
- rapidata/service/__init__.py +0 -1
- rapidata/service/credential_manager.py +18 -18
- rapidata/service/openapi_service.py +82 -22
- rapidata/types/__init__.py +166 -0
- rapidata-2.44.4.dist-info/METADATA +32 -0
- rapidata-2.44.4.dist-info/RECORD +1014 -0
- {rapidata-2.27.0.dist-info → rapidata-2.44.4.dist-info}/WHEEL +1 -1
- rapidata/rapidata_client/api/rapidata_exception.py +0 -107
- rapidata/rapidata_client/assets/__init__.py +0 -10
- rapidata/rapidata_client/assets/_base_asset.py +0 -11
- rapidata/rapidata_client/assets/_media_asset.py +0 -306
- rapidata/rapidata_client/assets/_multi_asset.py +0 -61
- rapidata/rapidata_client/assets/_sessions.py +0 -35
- rapidata/rapidata_client/assets/_text_asset.py +0 -34
- rapidata/rapidata_client/assets/data_type_enum.py +0 -7
- rapidata/rapidata_client/country_codes/__init__.py +0 -1
- rapidata/rapidata_client/country_codes/country_codes.py +0 -19
- rapidata/rapidata_client/logging/__init__.py +0 -2
- rapidata/rapidata_client/logging/logger.py +0 -47
- rapidata/rapidata_client/logging/output_manager.py +0 -16
- rapidata/rapidata_client/metadata/_media_asset_metadata.py +0 -15
- rapidata/rapidata_client/metadata/_private_text_metadata.py +0 -17
- rapidata/rapidata_client/metadata/_prompt_metadata.py +0 -18
- rapidata/rapidata_client/metadata/_public_text_metadata.py +0 -17
- rapidata/rapidata_client/order/_rapidata_dataset.py +0 -411
- rapidata/service/local_file_service.py +0 -25
- rapidata-2.27.0.dist-info/METADATA +0 -35
- rapidata-2.27.0.dist-info/RECORD +0 -540
- /rapidata/rapidata_client/{metadata → datapoints/metadata}/_base_metadata.py +0 -0
- {rapidata-2.27.0.dist-info → rapidata-2.44.4.dist-info/licenses}/LICENSE +0 -0
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
from typing import Optional, Any
|
|
2
|
-
from rapidata.api_client.api_client import ApiClient, rest, ApiResponse, ApiResponseT
|
|
3
|
-
from rapidata.api_client.exceptions import ApiException
|
|
4
|
-
import json
|
|
5
|
-
from rapidata.rapidata_client.logging import logger
|
|
6
|
-
|
|
7
|
-
class RapidataError(Exception):
|
|
8
|
-
"""Custom error class for Rapidata API errors."""
|
|
9
|
-
|
|
10
|
-
def __init__(
|
|
11
|
-
self,
|
|
12
|
-
status_code: Optional[int] = None,
|
|
13
|
-
message: str | None = None,
|
|
14
|
-
original_exception: Exception | None = None,
|
|
15
|
-
details: Any = None
|
|
16
|
-
):
|
|
17
|
-
self.status_code = status_code
|
|
18
|
-
self.message = message
|
|
19
|
-
self.original_exception = original_exception
|
|
20
|
-
self.details = details
|
|
21
|
-
|
|
22
|
-
# Create a nice error message
|
|
23
|
-
error_msg = "Rapidata API Error"
|
|
24
|
-
if status_code:
|
|
25
|
-
error_msg += f" ({status_code})"
|
|
26
|
-
if message:
|
|
27
|
-
error_msg += f": {message}"
|
|
28
|
-
|
|
29
|
-
super().__init__(error_msg)
|
|
30
|
-
|
|
31
|
-
def __str__(self):
|
|
32
|
-
"""Return a string representation of the error."""
|
|
33
|
-
# Extract information from message if available
|
|
34
|
-
title = None
|
|
35
|
-
errors = None
|
|
36
|
-
trace_id = None
|
|
37
|
-
|
|
38
|
-
# Try to extract from details if available and is a dict
|
|
39
|
-
if self.details and isinstance(self.details, dict):
|
|
40
|
-
title = self.details.get('title')
|
|
41
|
-
errors = self.details.get('errors')
|
|
42
|
-
trace_id = self.details.get('traceId')
|
|
43
|
-
|
|
44
|
-
# Build the error string
|
|
45
|
-
error_parts = []
|
|
46
|
-
|
|
47
|
-
# Main error line
|
|
48
|
-
if title:
|
|
49
|
-
error_parts.append(f"{title}")
|
|
50
|
-
else:
|
|
51
|
-
error_parts.append(f"{self.message or 'Unknown error'}")
|
|
52
|
-
|
|
53
|
-
# Reasons
|
|
54
|
-
if errors:
|
|
55
|
-
if isinstance(errors, dict):
|
|
56
|
-
error_parts.append(f"Reasons: {json.dumps({'errors': errors})}")
|
|
57
|
-
else:
|
|
58
|
-
error_parts.append(f"Reasons: {errors}")
|
|
59
|
-
|
|
60
|
-
# Trace ID
|
|
61
|
-
if trace_id:
|
|
62
|
-
error_parts.append(f"Trace Id: {trace_id}")
|
|
63
|
-
else:
|
|
64
|
-
error_parts.append("Trace Id: N/A")
|
|
65
|
-
|
|
66
|
-
return "\n".join(error_parts)
|
|
67
|
-
|
|
68
|
-
class RapidataApiClient(ApiClient):
|
|
69
|
-
"""Custom API client that wraps errors in RapidataError."""
|
|
70
|
-
|
|
71
|
-
def response_deserialize(
|
|
72
|
-
self,
|
|
73
|
-
response_data: rest.RESTResponse,
|
|
74
|
-
response_types_map: Optional[dict[str, ApiResponseT]] = None
|
|
75
|
-
) -> ApiResponse[ApiResponseT]:
|
|
76
|
-
"""Override the response_deserialize method to catch and convert exceptions."""
|
|
77
|
-
try:
|
|
78
|
-
return super().response_deserialize(response_data, response_types_map)
|
|
79
|
-
except ApiException as e:
|
|
80
|
-
status_code = getattr(e, 'status', None)
|
|
81
|
-
message = str(e)
|
|
82
|
-
details = None
|
|
83
|
-
|
|
84
|
-
# Extract more detailed error message from response body if available
|
|
85
|
-
if hasattr(e, 'body') and e.body:
|
|
86
|
-
try:
|
|
87
|
-
body_json = json.loads(e.body)
|
|
88
|
-
if isinstance(body_json, dict):
|
|
89
|
-
if 'message' in body_json:
|
|
90
|
-
message = body_json['message']
|
|
91
|
-
elif 'error' in body_json:
|
|
92
|
-
message = body_json['error']
|
|
93
|
-
|
|
94
|
-
# Store the full error details for debugging
|
|
95
|
-
details = body_json
|
|
96
|
-
except (json.JSONDecodeError, AttributeError):
|
|
97
|
-
# If we can't parse the body as JSON, use the original message
|
|
98
|
-
pass
|
|
99
|
-
|
|
100
|
-
error_formatted = RapidataError(
|
|
101
|
-
status_code=status_code,
|
|
102
|
-
message=message,
|
|
103
|
-
original_exception=e,
|
|
104
|
-
details=details
|
|
105
|
-
)
|
|
106
|
-
logger.error(f"Error: {error_formatted}")
|
|
107
|
-
raise error_formatted from None
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"""Assets Package
|
|
2
|
-
|
|
3
|
-
This package provides classes for different types of assets, including MediaAsset, TextAsset, and MultiAsset.
|
|
4
|
-
"""
|
|
5
|
-
from ._base_asset import BaseAsset
|
|
6
|
-
from ._media_asset import MediaAsset
|
|
7
|
-
from ._text_asset import TextAsset
|
|
8
|
-
from ._multi_asset import MultiAsset
|
|
9
|
-
from .data_type_enum import RapidataDataTypes
|
|
10
|
-
from ._sessions import SessionManager
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"""Base Asset Module
|
|
2
|
-
|
|
3
|
-
Defines the BaseAsset class, which serves as the abstract base class for all asset types.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
class BaseAsset:
|
|
7
|
-
"""BaseAsset Class
|
|
8
|
-
|
|
9
|
-
An abstract base class for different types of assets. This class is intended to be subclassed by specific asset types.
|
|
10
|
-
"""
|
|
11
|
-
pass
|
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
"""Media Asset Module with Lazy Loading
|
|
2
|
-
|
|
3
|
-
Defines the MediaAsset class for handling media file paths within assets.
|
|
4
|
-
Implements lazy loading for URL-based media to prevent unnecessary downloads.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from typing import Optional, cast
|
|
8
|
-
import os
|
|
9
|
-
from io import BytesIO
|
|
10
|
-
from rapidata.rapidata_client.assets._base_asset import BaseAsset
|
|
11
|
-
import requests
|
|
12
|
-
import re
|
|
13
|
-
from PIL import Image
|
|
14
|
-
from tinytag import TinyTag
|
|
15
|
-
import tempfile
|
|
16
|
-
from pydantic import StrictStr, StrictBytes
|
|
17
|
-
import logging
|
|
18
|
-
from functools import cached_property
|
|
19
|
-
from rapidata.rapidata_client.assets._sessions import SessionManager
|
|
20
|
-
from rapidata.rapidata_client.logging import logger
|
|
21
|
-
|
|
22
|
-
class MediaAsset(BaseAsset):
|
|
23
|
-
"""MediaAsset Class with Lazy Loading
|
|
24
|
-
|
|
25
|
-
Represents a media asset by storing the file path or URL.
|
|
26
|
-
Only downloads URL content when needed.
|
|
27
|
-
Supports local files and URLs for images, MP3, and MP4.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
path (str): The file system path to the media asset or URL.
|
|
31
|
-
|
|
32
|
-
Raises:
|
|
33
|
-
FileNotFoundError: If the provided file path does not exist.
|
|
34
|
-
"""
|
|
35
|
-
_logger = logging.getLogger(__name__ + '.MediaAsset')
|
|
36
|
-
|
|
37
|
-
ALLOWED_TYPES = [
|
|
38
|
-
'image/',
|
|
39
|
-
'audio/mp3', # MP3
|
|
40
|
-
'video/mp4', # MP4
|
|
41
|
-
]
|
|
42
|
-
|
|
43
|
-
MIME_TYPES = {
|
|
44
|
-
'jpg': 'image/jpeg',
|
|
45
|
-
'jpeg': 'image/jpeg',
|
|
46
|
-
'png': 'image/png',
|
|
47
|
-
'gif': 'image/gif',
|
|
48
|
-
'webp': 'image/webp',
|
|
49
|
-
'mp3': 'audio/mp3',
|
|
50
|
-
'mp4': 'video/mp4'
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
FILE_SIGNATURES = {
|
|
54
|
-
b'\xFF\xD8\xFF': 'image/jpeg',
|
|
55
|
-
b'\x89PNG\r\n\x1a\n': 'image/png',
|
|
56
|
-
b'GIF87a': 'image/gif',
|
|
57
|
-
b'GIF89a': 'image/gif',
|
|
58
|
-
b'RIFF': 'image/webp',
|
|
59
|
-
b'ID3': 'audio/mp3',
|
|
60
|
-
b'\xFF\xFB': 'audio/mp3',
|
|
61
|
-
b'\xFF\xF3': 'audio/mp3',
|
|
62
|
-
b'ftyp': 'video/mp4',
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
def __init__(self, path: str):
|
|
66
|
-
"""
|
|
67
|
-
Initialize a MediaAsset instance.
|
|
68
|
-
|
|
69
|
-
Args:
|
|
70
|
-
path (str): The file system path to the media asset or a URL.
|
|
71
|
-
|
|
72
|
-
Raises:
|
|
73
|
-
FileNotFoundError: If the provided file path does not exist.
|
|
74
|
-
ValueError: If path is not a string.
|
|
75
|
-
"""
|
|
76
|
-
if not isinstance(path, str):
|
|
77
|
-
raise ValueError("Media must be a string, either a local file path or a URL")
|
|
78
|
-
|
|
79
|
-
self._url = None
|
|
80
|
-
self._content = None
|
|
81
|
-
self.session: requests.Session = SessionManager.get_session()
|
|
82
|
-
|
|
83
|
-
if re.match(r'^https?://', path):
|
|
84
|
-
self._url = path
|
|
85
|
-
self.name = path.split('/')[-1]
|
|
86
|
-
self.name = self.__check_name_ending(self.name)
|
|
87
|
-
self.path = path
|
|
88
|
-
return
|
|
89
|
-
|
|
90
|
-
if not os.path.exists(path):
|
|
91
|
-
raise FileNotFoundError(f"File not found: {path}")
|
|
92
|
-
|
|
93
|
-
self.path = path
|
|
94
|
-
self.name = path
|
|
95
|
-
|
|
96
|
-
@cached_property
|
|
97
|
-
def content(self) -> bytes:
|
|
98
|
-
"""
|
|
99
|
-
Lazy loader for URL content. Only downloads when first accessed.
|
|
100
|
-
Uses cached_property to store the result after first download.
|
|
101
|
-
"""
|
|
102
|
-
if self._url is None:
|
|
103
|
-
self.path = cast(str, self.path)
|
|
104
|
-
with open(self.path, 'rb') as f:
|
|
105
|
-
return f.read()
|
|
106
|
-
|
|
107
|
-
return self.__get_media_bytes(self._url)
|
|
108
|
-
|
|
109
|
-
def get_duration(self) -> int:
|
|
110
|
-
"""
|
|
111
|
-
Get the duration of audio/video files in milliseconds.
|
|
112
|
-
Returns 0 for static images.
|
|
113
|
-
|
|
114
|
-
Returns:
|
|
115
|
-
int: Duration in milliseconds for audio/video, 0 for static images
|
|
116
|
-
|
|
117
|
-
Raises:
|
|
118
|
-
ValueError: If the duration cannot be determined
|
|
119
|
-
"""
|
|
120
|
-
path_to_check = self.name.lower()
|
|
121
|
-
|
|
122
|
-
# Return 0 for static images
|
|
123
|
-
if any(path_to_check.endswith(ext) for ext in ('.jpg', '.jpeg', '.png', '.webp', '.gif')):
|
|
124
|
-
return 0
|
|
125
|
-
|
|
126
|
-
try:
|
|
127
|
-
# Create temporary file from content
|
|
128
|
-
with tempfile.NamedTemporaryFile(suffix=os.path.splitext(self.name)[1], delete=False) as tmp:
|
|
129
|
-
tmp.write(self.content)
|
|
130
|
-
tmp.flush()
|
|
131
|
-
tmp_path = tmp.name
|
|
132
|
-
|
|
133
|
-
try:
|
|
134
|
-
tag = TinyTag.get(tmp_path)
|
|
135
|
-
finally:
|
|
136
|
-
# Clean up the temporary file
|
|
137
|
-
os.unlink(tmp_path)
|
|
138
|
-
|
|
139
|
-
if tag.duration is None:
|
|
140
|
-
raise ValueError("Could not read duration from file")
|
|
141
|
-
|
|
142
|
-
return int(tag.duration * 1000) # Convert to milliseconds
|
|
143
|
-
|
|
144
|
-
except Exception as e:
|
|
145
|
-
raise ValueError(f"Could not determine media duration: {str(e)}")
|
|
146
|
-
|
|
147
|
-
def get_image_dimension(self) -> tuple[int, int] | None:
|
|
148
|
-
"""
|
|
149
|
-
Get the dimensions (width, height) of an image file.
|
|
150
|
-
Returns None for non-image files or if dimensions can't be determined.
|
|
151
|
-
"""
|
|
152
|
-
if not any(self.name.lower().endswith(ext) for ext in ('.jpg', '.jpeg', '.png', '.gif', '.webp')):
|
|
153
|
-
return None
|
|
154
|
-
|
|
155
|
-
try:
|
|
156
|
-
img = Image.open(BytesIO(self.content))
|
|
157
|
-
return img.size
|
|
158
|
-
except Exception:
|
|
159
|
-
return None
|
|
160
|
-
|
|
161
|
-
def set_custom_name(self, name: str) -> 'MediaAsset':
|
|
162
|
-
"""Set a custom name for the media asset (only works with URLs)."""
|
|
163
|
-
if self._url is not None:
|
|
164
|
-
self.name = self.__check_name_ending(name)
|
|
165
|
-
else:
|
|
166
|
-
raise ValueError("Custom name can only be set for URLs.")
|
|
167
|
-
return self
|
|
168
|
-
|
|
169
|
-
def __check_name_ending(self, name: str) -> str:
|
|
170
|
-
"""Check if the media path is valid."""
|
|
171
|
-
if not name.endswith(('.jpg', '.jpeg', '.png', '.gif', '.mp3', '.mp4', '.webp')):
|
|
172
|
-
logger.warning("Warning: Supported file types: jpg, jpeg, png, gif, mp3, mp4. Image might not be displayed correctly.")
|
|
173
|
-
name = name + '.jpg'
|
|
174
|
-
return name
|
|
175
|
-
|
|
176
|
-
def __get_media_type_from_extension(self, url: str) -> Optional[str]:
|
|
177
|
-
"""
|
|
178
|
-
Determine media type from URL file extension.
|
|
179
|
-
|
|
180
|
-
Args:
|
|
181
|
-
url: The URL to check
|
|
182
|
-
|
|
183
|
-
Returns:
|
|
184
|
-
Optional[str]: MIME type if valid extension found, None otherwise
|
|
185
|
-
"""
|
|
186
|
-
try:
|
|
187
|
-
ext = url.lower().split('?')[0].split('.')[-1]
|
|
188
|
-
return self.MIME_TYPES.get(ext)
|
|
189
|
-
except IndexError:
|
|
190
|
-
return None
|
|
191
|
-
|
|
192
|
-
def __validate_image_content(self, content: bytes) -> bool:
|
|
193
|
-
"""
|
|
194
|
-
Validate image content using PIL.
|
|
195
|
-
|
|
196
|
-
Args:
|
|
197
|
-
content: Image bytes to validate
|
|
198
|
-
|
|
199
|
-
Returns:
|
|
200
|
-
bool: True if valid image, False otherwise
|
|
201
|
-
"""
|
|
202
|
-
try:
|
|
203
|
-
img = Image.open(BytesIO(content))
|
|
204
|
-
img.verify()
|
|
205
|
-
return True
|
|
206
|
-
except Exception as e:
|
|
207
|
-
self._logger.debug(f"Image validation failed: {str(e)}")
|
|
208
|
-
return False
|
|
209
|
-
|
|
210
|
-
def __get_media_type_from_signature(self, content: bytes) -> Optional[str]:
|
|
211
|
-
"""
|
|
212
|
-
Determine media type from file signature.
|
|
213
|
-
|
|
214
|
-
Args:
|
|
215
|
-
content: File content bytes
|
|
216
|
-
|
|
217
|
-
Returns:
|
|
218
|
-
Optional[str]: MIME type if valid signature found, None otherwise
|
|
219
|
-
"""
|
|
220
|
-
file_start = content[:32]
|
|
221
|
-
for signature, mime_type in self.FILE_SIGNATURES.items():
|
|
222
|
-
if file_start.startswith(signature) or (signature in file_start[:10]):
|
|
223
|
-
return mime_type
|
|
224
|
-
return None
|
|
225
|
-
|
|
226
|
-
def __get_media_bytes(self, url: str) -> bytes:
|
|
227
|
-
"""
|
|
228
|
-
Downloads and validates media files from URL with retry logic and session reuse.
|
|
229
|
-
|
|
230
|
-
Args:
|
|
231
|
-
url: URL of the media file
|
|
232
|
-
|
|
233
|
-
Returns:
|
|
234
|
-
bytes: Validated media content
|
|
235
|
-
|
|
236
|
-
Raises:
|
|
237
|
-
ValueError: If media type is unsupported or content validation fails
|
|
238
|
-
requests.exceptions.RequestException: If download fails after all retries
|
|
239
|
-
"""
|
|
240
|
-
# Use existing session or throw error if not set
|
|
241
|
-
if self.session is None:
|
|
242
|
-
raise RuntimeError("HTTP session not configured")
|
|
243
|
-
|
|
244
|
-
try:
|
|
245
|
-
response = self.session.get(
|
|
246
|
-
url,
|
|
247
|
-
stream=False,
|
|
248
|
-
timeout=(5, 30) # (connect timeout, read timeout)
|
|
249
|
-
)
|
|
250
|
-
response.raise_for_status()
|
|
251
|
-
except requests.exceptions.RequestException as e:
|
|
252
|
-
self._logger.error(f"Failed to download media from {url} after retries: {str(e)}")
|
|
253
|
-
raise
|
|
254
|
-
|
|
255
|
-
content = response.content
|
|
256
|
-
content_type = response.headers.get('content-type', '').lower()
|
|
257
|
-
|
|
258
|
-
# Case 1: Content-type is already allowed
|
|
259
|
-
if any(content_type.startswith(t) for t in self.ALLOWED_TYPES):
|
|
260
|
-
self._logger.debug(f"Content-type {content_type} is allowed")
|
|
261
|
-
return content
|
|
262
|
-
|
|
263
|
-
# Case 2: Try to validate based on extension
|
|
264
|
-
mime_type = self.__get_media_type_from_extension(url)
|
|
265
|
-
if mime_type and mime_type.startswith(tuple(self.ALLOWED_TYPES)):
|
|
266
|
-
self._logger.debug(f"Found valid mime type from extension: {mime_type}")
|
|
267
|
-
return content
|
|
268
|
-
|
|
269
|
-
# Case 3: Try to validate based on file signature
|
|
270
|
-
mime_type = self.__get_media_type_from_signature(content)
|
|
271
|
-
if mime_type and mime_type.startswith(tuple(self.ALLOWED_TYPES)):
|
|
272
|
-
self._logger.debug(f"Found valid mime type from signature: {mime_type}")
|
|
273
|
-
return content
|
|
274
|
-
|
|
275
|
-
# Case 4: Last resort - try direct image validation
|
|
276
|
-
if self.__validate_image_content(content):
|
|
277
|
-
self._logger.debug("Content validated as image through direct validation")
|
|
278
|
-
return content
|
|
279
|
-
|
|
280
|
-
# If we get here, validation failed
|
|
281
|
-
error_msg = (
|
|
282
|
-
f'Could not validate media type from content.\n'
|
|
283
|
-
f'Content-Type: {content_type}\n'
|
|
284
|
-
f'URL extension: {url.split("?")[0].split(".")[-1]}\n'
|
|
285
|
-
f'Allowed types: {self.ALLOWED_TYPES}'
|
|
286
|
-
)
|
|
287
|
-
self._logger.error(error_msg)
|
|
288
|
-
raise ValueError(error_msg)
|
|
289
|
-
|
|
290
|
-
def is_local(self) -> bool:
|
|
291
|
-
"""Check if the media asset is a local file."""
|
|
292
|
-
return self._url is None
|
|
293
|
-
|
|
294
|
-
def to_file(self) -> StrictStr | tuple[StrictStr, StrictBytes] | StrictBytes:
|
|
295
|
-
"""Convert the media asset to a file representation."""
|
|
296
|
-
if self._url is None:
|
|
297
|
-
self.path = cast(str, self.path)
|
|
298
|
-
return self.path
|
|
299
|
-
else:
|
|
300
|
-
return (self.name, self.content)
|
|
301
|
-
|
|
302
|
-
def __str__(self) -> str:
|
|
303
|
-
return f"MediaAsset(path={self.path})"
|
|
304
|
-
|
|
305
|
-
def __repr__(self) -> str:
|
|
306
|
-
return f"MediaAsset(path={self.path})"
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"""Multi Asset Module
|
|
2
|
-
|
|
3
|
-
Defines the MultiAsset class for handling multiple BaseAsset instances.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from rapidata.rapidata_client.assets._base_asset import BaseAsset
|
|
7
|
-
from rapidata.rapidata_client.assets import MediaAsset, TextAsset
|
|
8
|
-
from typing import Iterator, Sequence, cast
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class MultiAsset(BaseAsset):
|
|
12
|
-
"""MultiAsset Class
|
|
13
|
-
|
|
14
|
-
Represents a collection of multiple BaseAsset instances.
|
|
15
|
-
|
|
16
|
-
Args:
|
|
17
|
-
assets (List[BaseAsset]): A list of BaseAsset instances to be managed together.
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
def __init__(self, assets: Sequence[BaseAsset]) -> None:
|
|
21
|
-
"""
|
|
22
|
-
Initialize a MultiAsset instance.
|
|
23
|
-
|
|
24
|
-
Args:
|
|
25
|
-
assets (List[BaseAsset]): A list of BaseAsset instances to be managed together.
|
|
26
|
-
"""
|
|
27
|
-
if len(assets) != 2:
|
|
28
|
-
raise ValueError("Assets must come in pairs for comparison tasks.")
|
|
29
|
-
|
|
30
|
-
for asset in assets:
|
|
31
|
-
if not isinstance(asset, (TextAsset, MediaAsset)):
|
|
32
|
-
raise TypeError("All assets must be a TextAsset or MediaAsset.")
|
|
33
|
-
|
|
34
|
-
if not all(isinstance(asset, type(assets[0])) for asset in assets):
|
|
35
|
-
raise ValueError("All assets must be of the same type.")
|
|
36
|
-
|
|
37
|
-
self.assets = assets
|
|
38
|
-
|
|
39
|
-
def __len__(self) -> int:
|
|
40
|
-
"""
|
|
41
|
-
Get the number of assets in the MultiAsset.
|
|
42
|
-
|
|
43
|
-
Returns:
|
|
44
|
-
int: The number of assets.
|
|
45
|
-
"""
|
|
46
|
-
return len(self.assets)
|
|
47
|
-
|
|
48
|
-
def __iter__(self) -> Iterator[BaseAsset]:
|
|
49
|
-
"""
|
|
50
|
-
Return an iterator over the assets in the MultiAsset.
|
|
51
|
-
|
|
52
|
-
Returns:
|
|
53
|
-
Iterator[BaseAsset]: An iterator over the assets.
|
|
54
|
-
"""
|
|
55
|
-
return iter(self.assets)
|
|
56
|
-
|
|
57
|
-
def __str__(self) -> str:
|
|
58
|
-
return f"MultiAsset(assets={self.assets})"
|
|
59
|
-
|
|
60
|
-
def __repr__(self) -> str:
|
|
61
|
-
return f"MultiAsset(assets={self.assets})"
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import requests
|
|
2
|
-
from requests.adapters import HTTPAdapter
|
|
3
|
-
from urllib3.util.retry import Retry
|
|
4
|
-
|
|
5
|
-
class SessionManager:
|
|
6
|
-
_session = None
|
|
7
|
-
|
|
8
|
-
@classmethod
|
|
9
|
-
def get_session(cls, ) -> requests.Session:
|
|
10
|
-
"""Get a singleton requests session with retry logic.
|
|
11
|
-
|
|
12
|
-
Returns:
|
|
13
|
-
requests.Session: A singleton requests session with retry logic.
|
|
14
|
-
"""
|
|
15
|
-
if cls._session is None:
|
|
16
|
-
max_retries: int = 5
|
|
17
|
-
max_workers: int = 10
|
|
18
|
-
cls._session = requests.Session()
|
|
19
|
-
retries = Retry(
|
|
20
|
-
total=max_retries,
|
|
21
|
-
backoff_factor=1,
|
|
22
|
-
status_forcelist=[500, 502, 503, 504],
|
|
23
|
-
allowed_methods=["GET"],
|
|
24
|
-
respect_retry_after_header=True
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
adapter = HTTPAdapter(
|
|
28
|
-
pool_connections=max_workers * 2,
|
|
29
|
-
pool_maxsize=max_workers * 4,
|
|
30
|
-
max_retries=retries
|
|
31
|
-
)
|
|
32
|
-
cls._session.mount('http://', adapter)
|
|
33
|
-
cls._session.mount('https://', adapter)
|
|
34
|
-
|
|
35
|
-
return cls._session
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"""Text Asset Module
|
|
2
|
-
|
|
3
|
-
Defines the TextAsset class for handling textual data within assets.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from rapidata.rapidata_client.assets._base_asset import BaseAsset
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class TextAsset(BaseAsset):
|
|
10
|
-
"""TextAsset Class
|
|
11
|
-
|
|
12
|
-
Represents a textual asset.
|
|
13
|
-
|
|
14
|
-
Args:
|
|
15
|
-
text (str): The text content of the asset.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
def __init__(self, text: str):
|
|
19
|
-
"""
|
|
20
|
-
Initialize a TextAsset instance.
|
|
21
|
-
|
|
22
|
-
Args:
|
|
23
|
-
text (str): The textual content of the asset.
|
|
24
|
-
"""
|
|
25
|
-
if not isinstance(text, str):
|
|
26
|
-
raise ValueError("Text must be a string")
|
|
27
|
-
|
|
28
|
-
self.text = text
|
|
29
|
-
|
|
30
|
-
def __str__(self) -> str:
|
|
31
|
-
return f"TextAsset(text={self.text})"
|
|
32
|
-
|
|
33
|
-
def __repr__(self) -> str:
|
|
34
|
-
return f"TextAsset(text={self.text})"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
from .country_codes import CountryCodes
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import os
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
|
-
# Create module-level logger
|
|
6
|
-
logger = logging.getLogger("rapidata")
|
|
7
|
-
|
|
8
|
-
def configure_logger(
|
|
9
|
-
level: str = "WARNING",
|
|
10
|
-
log_file: Optional[str] = None,
|
|
11
|
-
format_string: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
12
|
-
):
|
|
13
|
-
"""Configure the Rapidata logger with custom settings."""
|
|
14
|
-
# Convert string level to logging level
|
|
15
|
-
level_map = {
|
|
16
|
-
"DEBUG": logging.DEBUG,
|
|
17
|
-
"INFO": logging.INFO,
|
|
18
|
-
"WARNING": logging.WARNING,
|
|
19
|
-
"ERROR": logging.ERROR,
|
|
20
|
-
"CRITICAL": logging.CRITICAL
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
numeric_level = level_map.get(level.upper(), logging.INFO)
|
|
24
|
-
logger.setLevel(numeric_level)
|
|
25
|
-
|
|
26
|
-
# Remove existing handlers if any
|
|
27
|
-
for handler in logger.handlers[:]:
|
|
28
|
-
logger.removeHandler(handler)
|
|
29
|
-
|
|
30
|
-
# Create formatter
|
|
31
|
-
formatter = logging.Formatter(format_string)
|
|
32
|
-
|
|
33
|
-
# Console handler
|
|
34
|
-
console_handler = logging.StreamHandler()
|
|
35
|
-
console_handler.setFormatter(formatter)
|
|
36
|
-
logger.addHandler(console_handler)
|
|
37
|
-
|
|
38
|
-
# File handler (optional)
|
|
39
|
-
if log_file:
|
|
40
|
-
log_dir = os.path.dirname(log_file)
|
|
41
|
-
if log_dir:
|
|
42
|
-
os.makedirs(log_dir, exist_ok=True)
|
|
43
|
-
file_handler = logging.FileHandler(log_file)
|
|
44
|
-
file_handler.setFormatter(formatter)
|
|
45
|
-
logger.addHandler(file_handler)
|
|
46
|
-
|
|
47
|
-
configure_logger()
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
class RapidataOutputManager:
|
|
2
|
-
silent_mode = False
|
|
3
|
-
|
|
4
|
-
@classmethod
|
|
5
|
-
def enable_silent_mode(cls):
|
|
6
|
-
cls.silent_mode = True
|
|
7
|
-
|
|
8
|
-
@classmethod
|
|
9
|
-
def disable_silent_mode(cls):
|
|
10
|
-
cls.silent_mode = False
|
|
11
|
-
|
|
12
|
-
def managed_print(*args, **kwargs):
|
|
13
|
-
if not RapidataOutputManager.silent_mode:
|
|
14
|
-
print(*args, **kwargs)
|
|
15
|
-
|
|
16
|
-
|