rapidata 2.35.1__py3-none-any.whl → 3.0.0a8__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 +25 -16
- rapidata/api_client/__init__.py +84 -408
- rapidata/api_client/api/__init__.py +6 -2
- rapidata/api_client/api/asset_api.py +853 -0
- rapidata/api_client/api/audience_api.py +2505 -0
- rapidata/api_client/api/benchmark_api.py +904 -245
- rapidata/api_client/api/campaign_api.py +582 -24
- rapidata/api_client/api/client_api.py +38 -33
- rapidata/api_client/api/compare_workflow_api.py +11 -10
- rapidata/api_client/api/customer_rapid_api.py +364 -123
- rapidata/api_client/api/datapoint_api.py +8 -6
- rapidata/api_client/api/dataset_api.py +240 -1516
- rapidata/api_client/api/evaluation_workflow_api.py +29 -82
- rapidata/api_client/api/feedback_api.py +11 -11
- rapidata/api_client/api/grouped_ranking_workflow_api.py +319 -0
- rapidata/api_client/api/identity_api.py +26 -300
- rapidata/api_client/api/job_api.py +3902 -0
- rapidata/api_client/api/job_definition_api.py +319 -0
- rapidata/api_client/api/job_revision_api.py +335 -0
- rapidata/api_client/api/leaderboard_api.py +140 -2067
- rapidata/api_client/api/newsletter_api.py +20 -19
- rapidata/api_client/api/order_api.py +375 -91
- rapidata/api_client/api/participant_api.py +80 -118
- rapidata/api_client/api/pipeline_api.py +24 -1480
- rapidata/api_client/api/prompt_api.py +11 -11
- 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 +377 -1835
- rapidata/api_client/api/workflow_api.py +32 -26
- 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 -382
- rapidata/api_client/models/ab_test_selection_a_inner.py +1 -1
- rapidata/api_client/models/add_rapid_to_audience_model.py +144 -0
- rapidata/api_client/models/add_user_response_result.py +10 -5
- rapidata/api_client/models/add_validation_rapid_model.py +49 -26
- 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/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/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_job_state.py +38 -0
- rapidata/api_client/models/audience_status.py +39 -0
- rapidata/api_client/models/benchmark_query_result.py +5 -3
- rapidata/api_client/models/boost_leaderboard_model.py +5 -5
- rapidata/api_client/models/boost_mode.py +37 -0
- rapidata/api_client/models/boost_query_result.py +7 -10
- 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/boosting_profile.py +91 -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 +25 -35
- rapidata/api_client/models/clients_query_result.py +5 -5
- rapidata/api_client/models/clone_order_model.py +4 -4
- 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_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 +6 -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 +122 -0
- rapidata/api_client/models/create_audience_result.py +87 -0
- rapidata/api_client/models/create_benchmark_model.py +5 -5
- rapidata/api_client/models/create_benchmark_participant_model.py +5 -5
- rapidata/api_client/models/create_benchmark_participant_result.py +4 -4
- rapidata/api_client/models/create_benchmark_prompt_result.py +87 -0
- rapidata/api_client/models/create_benchmark_result.py +2 -2
- 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 +2 -2
- rapidata/api_client/models/create_customer_client_result.py +2 -2
- 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 +124 -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 +2 -2
- rapidata/api_client/models/create_dataset_endpoint_input.py +87 -0
- rapidata/api_client/models/create_dataset_endpoint_output.py +87 -0
- 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_job_definition_endpoint_input.py +119 -0
- rapidata/api_client/models/create_job_definition_endpoint_output.py +89 -0
- rapidata/api_client/models/create_job_endpoint_input.py +100 -0
- rapidata/api_client/models/create_job_endpoint_output.py +89 -0
- rapidata/api_client/models/create_job_revision_endpoint_input.py +127 -0
- rapidata/api_client/models/create_job_revision_endpoint_output.py +89 -0
- rapidata/api_client/models/create_leaderboard_model.py +42 -15
- rapidata/api_client/models/create_leaderboard_result.py +2 -2
- rapidata/api_client/models/create_order_definition_model.py +119 -0
- rapidata/api_client/models/create_order_definition_result.py +87 -0
- rapidata/api_client/models/create_order_definition_revision_model.py +117 -0
- rapidata/api_client/models/create_order_definition_revision_result.py +87 -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 +2 -2
- rapidata/api_client/models/create_rapid_result.py +2 -2
- rapidata/api_client/models/create_sample_model.py +13 -7
- 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_state.py +2 -2
- rapidata/api_client/models/definition_type.py +49 -0
- rapidata/api_client/models/demographic_filter.py +100 -0
- rapidata/api_client/models/dynamic_client_registration_request.py +21 -36
- rapidata/api_client/models/early_stopping_referee_model.py +3 -3
- rapidata/api_client/models/effort_capped_selection.py +2 -11
- 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 +109 -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_file.py +8 -22
- rapidata/api_client/models/file_asset_metadata_value.py +252 -0
- rapidata/api_client/models/file_asset_model_metadata_value.py +18 -88
- rapidata/api_client/models/file_stream_result.py +122 -0
- rapidata/api_client/models/file_type.py +2 -2
- rapidata/api_client/models/file_type_metadata.py +11 -6
- rapidata/api_client/models/file_type_metadata_model.py +2 -8
- rapidata/api_client/models/filter.py +7 -25
- rapidata/api_client/models/filter_operator.py +2 -2
- rapidata/api_client/models/fork_benchmark_result.py +87 -0
- rapidata/api_client/models/form_file_wrapper.py +17 -2
- 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 +118 -0
- rapidata/api_client/models/get_available_validation_sets_result.py +2 -2
- rapidata/api_client/models/get_benchmark_by_id_result.py +8 -4
- 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_job_by_id_endpoint_output.py +130 -0
- rapidata/api_client/models/get_job_definition_by_id_endpoint_output.py +95 -0
- rapidata/api_client/models/get_job_revision_endpoint_output.py +133 -0
- rapidata/api_client/models/get_leaderboard_by_id_result.py +31 -4
- rapidata/api_client/models/get_order_by_id_result.py +12 -5
- rapidata/api_client/models/get_participant_by_id_result.py +4 -6
- 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 +6 -14
- 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_audience_filter.py +184 -0
- rapidata/api_client/models/i_audience_filter_and_audience_filter.py +106 -0
- rapidata/api_client/models/i_audience_filter_country_audience_filter.py +96 -0
- rapidata/api_client/models/i_audience_filter_country_filter.py +96 -0
- rapidata/api_client/models/i_audience_filter_language_audience_filter.py +96 -0
- rapidata/api_client/models/i_audience_filter_language_filter.py +96 -0
- rapidata/api_client/models/i_audience_filter_not_audience_filter.py +102 -0
- rapidata/api_client/models/i_audience_filter_or_audience_filter.py +106 -0
- rapidata/api_client/models/i_campaign_filter.py +296 -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_campaign_session_count_filter.py +101 -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_device_filter.py +106 -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_duration_metadata.py +110 -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 +105 -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 +105 -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 +296 -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_device_user_filter_model.py +104 -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 +108 -0
- rapidata/api_client/models/i_validation_truth_model.py +294 -0
- rapidata/api_client/models/i_validation_truth_model_attach_category_truth_model.py +96 -0
- rapidata/api_client/models/i_validation_truth_model_bounding_box_truth_model.py +102 -0
- rapidata/api_client/models/i_validation_truth_model_classify_truth_model.py +96 -0
- rapidata/api_client/models/i_validation_truth_model_compare_truth_model.py +96 -0
- rapidata/api_client/models/i_validation_truth_model_empty_validation_truth_model.py +94 -0
- rapidata/api_client/models/i_validation_truth_model_line_truth_model.py +94 -0
- rapidata/api_client/models/i_validation_truth_model_locate_box_truth_model.py +108 -0
- rapidata/api_client/models/i_validation_truth_model_multi_compare_truth_model.py +96 -0
- rapidata/api_client/models/i_validation_truth_model_named_entity_truth_model.py +104 -0
- rapidata/api_client/models/i_validation_truth_model_polygon_truth_model.py +94 -0
- rapidata/api_client/models/i_validation_truth_model_scrub_truth_model.py +104 -0
- rapidata/api_client/models/i_validation_truth_model_skip_truth_model.py +94 -0
- rapidata/api_client/models/i_validation_truth_model_transcription_truth_model.py +115 -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/job_definition_revision_state.py +38 -0
- rapidata/api_client/models/json_web_key.py +2 -36
- rapidata/api_client/models/json_web_key_set.py +2 -22
- 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 +29 -2
- 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/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 +21 -1
- rapidata/api_client/models/multi_asset_input1_assets_inner.py +40 -12
- rapidata/api_client/models/multi_asset_input3_assets_inner.py +40 -12
- rapidata/api_client/models/multi_asset_input_assets_inner.py +16 -30
- 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/null_asset.py +3 -5
- rapidata/api_client/models/online_pair_maker_config_model.py +3 -3
- rapidata/api_client/models/option_of_aggregator_type.py +49 -0
- rapidata/api_client/models/or_filter.py +121 -0
- 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_job_definitions_result.py +103 -0
- rapidata/api_client/models/paged_result_of_query_job_revisions_result.py +103 -0
- rapidata/api_client/models/paged_result_of_query_jobs_result.py +103 -0
- rapidata/api_client/models/paged_result_of_query_rapids_for_audience_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 +6 -14
- rapidata/api_client/models/participant_status.py +2 -2
- 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/preliminary_download_model.py +5 -5
- rapidata/api_client/models/preview_order_model.py +5 -5
- rapidata/api_client/models/problem_details.py +2 -20
- rapidata/api_client/models/prompt_asset_metadata_input.py +4 -6
- rapidata/api_client/models/prompt_asset_metadata_input_asset.py +25 -41
- rapidata/api_client/models/prompt_by_benchmark_result.py +5 -5
- rapidata/api_client/models/prompt_metadata.py +12 -1
- rapidata/api_client/models/prompt_metadata_input.py +5 -7
- rapidata/api_client/models/prompt_type.py +38 -0
- rapidata/api_client/models/proxy_file_wrapper.py +17 -2
- 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 +118 -0
- rapidata/api_client/models/query_datapoints_by_dataset_id_result.py +95 -0
- rapidata/api_client/models/query_job_definitions_result.py +97 -0
- rapidata/api_client/models/query_job_revisions_result.py +95 -0
- rapidata/api_client/models/query_jobs_result.py +103 -0
- rapidata/api_client/models/query_model.py +10 -5
- rapidata/api_client/models/query_rapids_for_audience_result.py +150 -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 +2 -2
- rapidata/api_client/models/runs_by_leaderboard_result.py +6 -12
- 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 +7 -8
- 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 -5
- 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 +19 -21
- rapidata/api_client/models/standing_status.py +2 -2
- rapidata/api_client/models/standings_by_benchmark_result.py +95 -0
- rapidata/api_client/models/standings_by_leaderboard_result.py +2 -2
- 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 +25 -3
- rapidata/api_client/models/streams_metadata.py +12 -1
- rapidata/api_client/models/string_segment.py +105 -0
- rapidata/api_client/models/submit_order_model.py +5 -5
- rapidata/api_client/models/submit_participant_result.py +2 -2
- rapidata/api_client/models/submit_prompt_model.py +9 -14
- rapidata/api_client/models/submit_prompt_model_prompt_asset.py +40 -12
- rapidata/api_client/models/tags_by_benchmark_result.py +2 -2
- rapidata/api_client/models/text_asset.py +3 -5
- rapidata/api_client/models/text_asset_input.py +21 -1
- 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 +5 -7
- 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 +113 -0
- rapidata/api_client/models/update_benchmark_model.py +99 -0
- rapidata/api_client/models/update_benchmark_name_model.py +5 -5
- 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_job_definition_endpoint_input.py +92 -0
- rapidata/api_client/models/update_leaderboard_model.py +106 -0
- rapidata/api_client/models/update_leaderboard_name_model.py +5 -5
- rapidata/api_client/models/update_leaderboard_response_config_model.py +5 -5
- 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 +5 -5
- rapidata/api_client/models/update_priority_model.py +87 -0
- rapidata/api_client/models/update_prompt_tags_model.py +5 -5
- rapidata/api_client/models/update_should_alert_model.py +4 -4
- rapidata/api_client/models/update_validation_rapid_model.py +35 -14
- 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_problem_details.py +117 -0
- 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/video_duration_metadata.py +12 -1
- 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 +33 -2
- rapidata/api_client/rest.py +2 -2
- rapidata/api_client_README.md +384 -318
- rapidata/rapidata_client/__init__.py +17 -22
- rapidata/rapidata_client/api/rapidata_api_client.py +253 -0
- rapidata/rapidata_client/audience/__init__.py +2 -0
- rapidata/rapidata_client/audience/audience_example_handler.py +168 -0
- rapidata/rapidata_client/audience/rapidata_audience.py +287 -0
- rapidata/rapidata_client/audience/rapidata_audience_manager.py +162 -0
- rapidata/rapidata_client/benchmark/_detail_mapper.py +11 -9
- rapidata/rapidata_client/benchmark/leaderboard/rapidata_leaderboard.py +98 -54
- rapidata/rapidata_client/benchmark/participant/_participant.py +90 -46
- rapidata/rapidata_client/benchmark/rapidata_benchmark.py +388 -225
- rapidata/rapidata_client/benchmark/rapidata_benchmark_manager.py +172 -65
- 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 +8 -3
- rapidata/rapidata_client/datapoints/_asset_uploader.py +184 -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 -10
- rapidata/rapidata_client/datapoints/assets/constants.py +7 -0
- rapidata/rapidata_client/datapoints/metadata/__init__.py +0 -2
- rapidata/rapidata_client/datapoints/metadata/_private_text_metadata.py +5 -6
- rapidata/rapidata_client/datapoints/metadata/_prompt_identifier_metadata.py +4 -5
- rapidata/rapidata_client/datapoints/metadata/_public_text_metadata.py +5 -6
- rapidata/rapidata_client/datapoints/metadata/_select_words_metadata.py +3 -4
- rapidata/rapidata_client/dataset/__init__.py +1 -0
- rapidata/rapidata_client/dataset/_rapidata_dataset.py +55 -0
- rapidata/rapidata_client/demographic/demographic_manager.py +44 -19
- rapidata/rapidata_client/exceptions/failed_upload_exception.py +15 -41
- rapidata/rapidata_client/filter/_backend_filter_mapper.py +134 -0
- rapidata/rapidata_client/filter/_base_filter.py +13 -8
- rapidata/rapidata_client/filter/age_filter.py +26 -10
- rapidata/rapidata_client/filter/and_filter.py +36 -11
- rapidata/rapidata_client/filter/campaign_filter.py +21 -10
- rapidata/rapidata_client/filter/country_filter.py +46 -12
- rapidata/rapidata_client/filter/custom_filter.py +25 -12
- rapidata/rapidata_client/filter/gender_filter.py +25 -10
- rapidata/rapidata_client/filter/language_filter.py +51 -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 +14 -4
- rapidata/rapidata_client/filter/not_filter.py +35 -11
- rapidata/rapidata_client/filter/or_filter.py +36 -11
- rapidata/rapidata_client/filter/rapidata_filters.py +17 -23
- rapidata/rapidata_client/filter/response_count_filter.py +51 -20
- rapidata/rapidata_client/filter/user_score_filter.py +62 -24
- rapidata/rapidata_client/job/__init__.py +3 -0
- rapidata/rapidata_client/job/job_definition.py +110 -0
- rapidata/rapidata_client/job/job_manager.py +758 -0
- rapidata/rapidata_client/job/rapidata_job.py +326 -0
- rapidata/rapidata_client/order/__init__.py +2 -0
- rapidata/rapidata_client/order/_rapidata_order_builder.py +273 -122
- rapidata/rapidata_client/order/rapidata_order.py +316 -160
- rapidata/rapidata_client/order/rapidata_order_manager.py +680 -421
- rapidata/rapidata_client/rapidata_client.py +115 -37
- rapidata/rapidata_client/referee/__init__.py +1 -1
- rapidata/rapidata_client/referee/_base_referee.py +14 -3
- rapidata/rapidata_client/referee/_early_stopping_referee.py +32 -17
- rapidata/rapidata_client/referee/_naive_referee.py +24 -3
- rapidata/rapidata_client/results/__init__.py +3 -0
- rapidata/rapidata_client/{order → results}/rapidata_results.py +86 -63
- rapidata/rapidata_client/selection/__init__.py +1 -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 +31 -8
- 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 +23 -14
- 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 +2 -0
- rapidata/rapidata_client/settings/_rapidata_setting.py +22 -3
- rapidata/rapidata_client/settings/alert_on_fast_response.py +8 -5
- rapidata/rapidata_client/settings/allow_neither_both.py +3 -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 +22 -9
- rapidata/rapidata_client/settings/swap_context_instruction.py +20 -0
- rapidata/rapidata_client/settings/translation_behaviour.py +7 -5
- rapidata/rapidata_client/utils/__init__.py +3 -0
- rapidata/rapidata_client/utils/threaded_uploader.py +153 -0
- rapidata/rapidata_client/validation/__init__.py +2 -0
- rapidata/rapidata_client/validation/rapidata_validation_set.py +96 -18
- rapidata/rapidata_client/validation/rapids/__init__.py +2 -0
- rapidata/rapidata_client/validation/rapids/_validation_rapid_uploader.py +48 -0
- rapidata/rapidata_client/validation/rapids/box.py +37 -12
- rapidata/rapidata_client/validation/rapids/rapids.py +29 -83
- rapidata/rapidata_client/validation/rapids/rapids_manager.py +369 -211
- rapidata/rapidata_client/validation/validation_set_manager.py +505 -276
- rapidata/rapidata_client/workflow/__init__.py +2 -2
- 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 +90 -0
- 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 +14 -14
- rapidata/service/openapi_service.py +119 -34
- rapidata/types/__init__.py +149 -0
- rapidata-3.0.0a8.dist-info/METADATA +32 -0
- rapidata-3.0.0a8.dist-info/RECORD +1083 -0
- {rapidata-2.35.1.dist-info → rapidata-3.0.0a8.dist-info}/WHEEL +1 -1
- rapidata/rapidata_client/api/rapidata_exception.py +0 -107
- rapidata/rapidata_client/country_codes/__init__.py +0 -1
- rapidata/rapidata_client/country_codes/country_codes.py +0 -19
- rapidata/rapidata_client/datapoints/assets/_base_asset.py +0 -11
- rapidata/rapidata_client/datapoints/assets/_media_asset.py +0 -306
- rapidata/rapidata_client/datapoints/assets/_multi_asset.py +0 -61
- rapidata/rapidata_client/datapoints/assets/_sessions.py +0 -35
- rapidata/rapidata_client/datapoints/assets/_text_asset.py +0 -34
- rapidata/rapidata_client/datapoints/assets/data_type_enum.py +0 -8
- rapidata/rapidata_client/datapoints/datapoint.py +0 -108
- rapidata/rapidata_client/datapoints/metadata/_media_asset_metadata.py +0 -22
- rapidata/rapidata_client/datapoints/metadata/_prompt_metadata.py +0 -18
- rapidata/rapidata_client/logging/__init__.py +0 -2
- rapidata/rapidata_client/logging/logger.py +0 -122
- rapidata/rapidata_client/logging/output_manager.py +0 -20
- rapidata/rapidata_client/order/_rapidata_dataset.py +0 -396
- rapidata/rapidata_client/workflow/_ranking_workflow.py +0 -47
- rapidata/service/local_file_service.py +0 -25
- rapidata-2.35.1.dist-info/METADATA +0 -35
- rapidata-2.35.1.dist-info/RECORD +0 -657
- {rapidata-2.35.1.dist-info → rapidata-3.0.0a8.dist-info/licenses}/LICENSE +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
from typing import Protocol, runtime_checkable, Any
|
|
2
|
+
import platform
|
|
3
|
+
import sys
|
|
4
|
+
import os
|
|
5
|
+
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
|
|
6
|
+
from opentelemetry.sdk.trace import TracerProvider
|
|
7
|
+
from opentelemetry.sdk.trace.export import BatchSpanProcessor
|
|
8
|
+
from opentelemetry.sdk.resources import Resource
|
|
9
|
+
from rapidata import __version__
|
|
10
|
+
from .logging_config import LoggingConfig, register_config_handler
|
|
11
|
+
from rapidata.rapidata_client.config import logger
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def get_system_attributes() -> dict[str, str | int | None]:
|
|
15
|
+
"""Gather system telemetry for traces."""
|
|
16
|
+
try:
|
|
17
|
+
attrs = {
|
|
18
|
+
"system.os": platform.system(),
|
|
19
|
+
"system.os.version": platform.release(),
|
|
20
|
+
"system.arch": platform.machine(),
|
|
21
|
+
"python.version": f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}",
|
|
22
|
+
"process.cpu_count": os.cpu_count(),
|
|
23
|
+
}
|
|
24
|
+
logger.debug(f"System attributes: {attrs}")
|
|
25
|
+
return attrs
|
|
26
|
+
except Exception:
|
|
27
|
+
logger.debug("Failed to get system attributes, returning empty dict")
|
|
28
|
+
return {}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@runtime_checkable
|
|
32
|
+
class TracerProtocol(Protocol):
|
|
33
|
+
"""Protocol that defines the tracer interface for type checking."""
|
|
34
|
+
|
|
35
|
+
def start_span(self, name: str, *args, **kwargs) -> Any: ...
|
|
36
|
+
def start_as_current_span(self, name: str, *args, **kwargs) -> Any: ...
|
|
37
|
+
def set_session_id(self, session_id: str) -> None: ...
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class NoOpSpan:
|
|
41
|
+
"""A no-op span that does nothing when tracing is disabled."""
|
|
42
|
+
|
|
43
|
+
def __enter__(self):
|
|
44
|
+
return self
|
|
45
|
+
|
|
46
|
+
def __exit__(self, *args):
|
|
47
|
+
pass
|
|
48
|
+
|
|
49
|
+
def set_attribute(self, *args, **kwargs):
|
|
50
|
+
pass
|
|
51
|
+
|
|
52
|
+
def set_status(self, *args, **kwargs):
|
|
53
|
+
pass
|
|
54
|
+
|
|
55
|
+
def add_event(self, *args, **kwargs):
|
|
56
|
+
pass
|
|
57
|
+
|
|
58
|
+
def end(self, *args, **kwargs):
|
|
59
|
+
pass
|
|
60
|
+
|
|
61
|
+
def __getattr__(self, name: str) -> Any:
|
|
62
|
+
"""Return self for any method call to maintain chainability."""
|
|
63
|
+
return lambda *args, **kwargs: self
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class NoOpTracer:
|
|
67
|
+
"""A no-op tracer that returns no-op spans when tracing is disabled."""
|
|
68
|
+
|
|
69
|
+
def start_span(self, name: str, *args, **kwargs) -> NoOpSpan:
|
|
70
|
+
return NoOpSpan()
|
|
71
|
+
|
|
72
|
+
def start_as_current_span(self, name: str, *args, **kwargs) -> NoOpSpan:
|
|
73
|
+
return NoOpSpan()
|
|
74
|
+
|
|
75
|
+
def set_session_id(self, session_id: str) -> None:
|
|
76
|
+
pass
|
|
77
|
+
|
|
78
|
+
def __getattr__(self, name: str) -> Any:
|
|
79
|
+
"""Delegate to no-op behavior."""
|
|
80
|
+
return lambda *args, **kwargs: NoOpSpan()
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class SpanContextManagerWrapper:
|
|
84
|
+
"""Wrapper for span context managers to add session_id on enter."""
|
|
85
|
+
|
|
86
|
+
def __init__(self, context_manager: Any, session_id: str | None):
|
|
87
|
+
self._context_manager = context_manager
|
|
88
|
+
self.session_id = session_id
|
|
89
|
+
|
|
90
|
+
def __enter__(self):
|
|
91
|
+
span = self._context_manager.__enter__()
|
|
92
|
+
if self.session_id and hasattr(span, "set_attribute"):
|
|
93
|
+
span.set_attribute("SDK.session.id", self.session_id)
|
|
94
|
+
return span
|
|
95
|
+
|
|
96
|
+
def __exit__(self, *args):
|
|
97
|
+
return self._context_manager.__exit__(*args)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class RapidataTracer:
|
|
101
|
+
"""Tracer implementation that updates when the configuration changes."""
|
|
102
|
+
|
|
103
|
+
def __init__(self, name: str = __name__):
|
|
104
|
+
self._name = name
|
|
105
|
+
self._otlp_initialized = False
|
|
106
|
+
self._tracer_provider = None
|
|
107
|
+
self._real_tracer = None
|
|
108
|
+
self._no_op_tracer = NoOpTracer()
|
|
109
|
+
self._enabled = True # Default to enabled
|
|
110
|
+
self.session_id: str | None = None
|
|
111
|
+
|
|
112
|
+
# Register this tracer to receive configuration updates
|
|
113
|
+
register_config_handler(self._handle_config_update)
|
|
114
|
+
|
|
115
|
+
def _handle_config_update(self, config: LoggingConfig) -> None:
|
|
116
|
+
"""Handle configuration updates."""
|
|
117
|
+
self._update_tracer(config)
|
|
118
|
+
|
|
119
|
+
def _update_tracer(self, config: LoggingConfig) -> None:
|
|
120
|
+
"""Update the tracer based on the new configuration."""
|
|
121
|
+
self._enabled = config.enable_otlp
|
|
122
|
+
|
|
123
|
+
# Initialize OTLP tracing only once and only if not disabled
|
|
124
|
+
if not self._otlp_initialized and config.enable_otlp:
|
|
125
|
+
try:
|
|
126
|
+
resource_attributes = {
|
|
127
|
+
"service.name": "Rapidata.Python.SDK",
|
|
128
|
+
"service.version": __version__,
|
|
129
|
+
**get_system_attributes(),
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
resource = Resource.create(resource_attributes)
|
|
133
|
+
|
|
134
|
+
self._tracer_provider = TracerProvider(resource=resource)
|
|
135
|
+
|
|
136
|
+
exporter = OTLPSpanExporter(
|
|
137
|
+
endpoint="https://otlp-sdk.rapidata.ai/v1/traces",
|
|
138
|
+
timeout=30,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
span_processor = BatchSpanProcessor(exporter)
|
|
142
|
+
self._tracer_provider.add_span_processor(span_processor)
|
|
143
|
+
|
|
144
|
+
self._real_tracer = self._tracer_provider.get_tracer(self._name)
|
|
145
|
+
self._otlp_initialized = True
|
|
146
|
+
|
|
147
|
+
except Exception as e:
|
|
148
|
+
logger.warning(f"Failed to initialize tracing: {e}")
|
|
149
|
+
self._enabled = False
|
|
150
|
+
|
|
151
|
+
def _add_session_id_to_span(self, span: Any) -> Any:
|
|
152
|
+
"""Add session_id attribute to a span if session_id is set."""
|
|
153
|
+
if self.session_id and hasattr(span, "set_attribute"):
|
|
154
|
+
span.set_attribute("SDK.session.id", self.session_id)
|
|
155
|
+
return span
|
|
156
|
+
|
|
157
|
+
def start_span(self, name: str, *args, **kwargs) -> Any:
|
|
158
|
+
"""Start a span, or return a no-op span if tracing is disabled."""
|
|
159
|
+
if self._enabled and self._real_tracer:
|
|
160
|
+
span = self._real_tracer.start_span(name, *args, **kwargs)
|
|
161
|
+
return self._add_session_id_to_span(span)
|
|
162
|
+
return self._no_op_tracer.start_span(name, *args, **kwargs)
|
|
163
|
+
|
|
164
|
+
def start_as_current_span(self, name: str, *args, **kwargs) -> Any:
|
|
165
|
+
"""Start a span as current, or return a no-op span if tracing is disabled."""
|
|
166
|
+
if self._enabled and self._real_tracer:
|
|
167
|
+
context_manager = self._real_tracer.start_as_current_span(
|
|
168
|
+
name, *args, **kwargs
|
|
169
|
+
)
|
|
170
|
+
return SpanContextManagerWrapper(context_manager, self.session_id)
|
|
171
|
+
return self._no_op_tracer.start_as_current_span(name, *args, **kwargs)
|
|
172
|
+
|
|
173
|
+
def set_session_id(self, session_id: str) -> None:
|
|
174
|
+
self.session_id = session_id
|
|
175
|
+
|
|
176
|
+
def __getattr__(self, name: str) -> Any:
|
|
177
|
+
"""Delegate attribute access to the appropriate tracer."""
|
|
178
|
+
if self._enabled and self._real_tracer:
|
|
179
|
+
return getattr(self._real_tracer, name)
|
|
180
|
+
return getattr(self._no_op_tracer, name)
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
# Create the main tracer instance - type checkers will see it as TracerProtocol
|
|
184
|
+
tracer: TracerProtocol = RapidataTracer() # type: ignore[assignment]
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from typing import Callable
|
|
3
|
+
from pydantic import BaseModel, Field, field_validator
|
|
4
|
+
from rapidata.rapidata_client.config import logger
|
|
5
|
+
|
|
6
|
+
# Type alias for config update handlers
|
|
7
|
+
UploadConfigUpdateHandler = Callable[["UploadConfig"], None]
|
|
8
|
+
|
|
9
|
+
# Global list to store registered handlers
|
|
10
|
+
_upload_config_handlers: list[UploadConfigUpdateHandler] = []
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def register_upload_config_handler(handler: UploadConfigUpdateHandler) -> None:
|
|
14
|
+
"""Register a handler to be called when the upload configuration updates."""
|
|
15
|
+
_upload_config_handlers.append(handler)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def unregister_upload_config_handler(handler: UploadConfigUpdateHandler) -> None:
|
|
19
|
+
"""Unregister a previously registered handler."""
|
|
20
|
+
if handler in _upload_config_handlers:
|
|
21
|
+
_upload_config_handlers.remove(handler)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class UploadConfig(BaseModel):
|
|
25
|
+
"""
|
|
26
|
+
Holds the configuration for the upload process.
|
|
27
|
+
|
|
28
|
+
Attributes:
|
|
29
|
+
maxWorkers (int): The maximum number of worker threads for processing media paths. Defaults to 25.
|
|
30
|
+
maxRetries (int): The maximum number of retries for failed uploads. Defaults to 3.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
maxWorkers: int = Field(default=25)
|
|
34
|
+
maxRetries: int = Field(default=3)
|
|
35
|
+
cacheUploads: bool = Field(default=True)
|
|
36
|
+
cacheTimeout: float = Field(default=0.1)
|
|
37
|
+
cacheLocation: Path = Field(default=Path.home() / ".rapidata" / "upload_cache")
|
|
38
|
+
cacheSizeLimit: int = Field(default=100_000_000) # 100MB
|
|
39
|
+
|
|
40
|
+
@field_validator("maxWorkers")
|
|
41
|
+
@classmethod
|
|
42
|
+
def validate_max_workers(cls, v: int) -> int:
|
|
43
|
+
if v > 200:
|
|
44
|
+
logger.warning(
|
|
45
|
+
f"maxWorkers is set to {v}, which is above the recommended limit of 200. "
|
|
46
|
+
"This may lead to suboptimal performance due to connection pool constraints."
|
|
47
|
+
)
|
|
48
|
+
return v
|
|
49
|
+
|
|
50
|
+
def __init__(self, **kwargs):
|
|
51
|
+
super().__init__(**kwargs)
|
|
52
|
+
self._notify_handlers()
|
|
53
|
+
|
|
54
|
+
def __setattr__(self, name: str, value) -> None:
|
|
55
|
+
super().__setattr__(name, value)
|
|
56
|
+
self._notify_handlers()
|
|
57
|
+
|
|
58
|
+
def _notify_handlers(self) -> None:
|
|
59
|
+
"""Notify all registered handlers that the configuration has updated."""
|
|
60
|
+
for handler in _upload_config_handlers:
|
|
61
|
+
try:
|
|
62
|
+
handler(self)
|
|
63
|
+
except Exception as e:
|
|
64
|
+
logger.warning(f"Warning: UploadConfig handler failed: {e}")
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
from .
|
|
2
|
-
from .
|
|
3
|
-
|
|
1
|
+
from ._datapoint import Datapoint
|
|
2
|
+
from .metadata import (
|
|
3
|
+
Metadata,
|
|
4
|
+
PrivateTextMetadata,
|
|
5
|
+
PublicTextMetadata,
|
|
6
|
+
SelectWordsMetadata,
|
|
7
|
+
PromptIdentifierMetadata,
|
|
8
|
+
)
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
import os
|
|
5
|
+
from typing import TYPE_CHECKING, cast
|
|
6
|
+
|
|
7
|
+
from rapidata.rapidata_client.config.upload_config import register_upload_config_handler
|
|
8
|
+
from rapidata.rapidata_client.config.upload_config import UploadConfig
|
|
9
|
+
from rapidata.service.openapi_service import OpenAPIService
|
|
10
|
+
from rapidata.rapidata_client.config import logger
|
|
11
|
+
from rapidata.rapidata_client.config import tracer
|
|
12
|
+
from rapidata.rapidata_client.config import rapidata_config
|
|
13
|
+
from diskcache import FanoutCache
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from rapidata.api_client.models.i_asset_input import IAssetInput
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AssetUploader:
|
|
20
|
+
_shared_upload_cache: FanoutCache = FanoutCache(
|
|
21
|
+
rapidata_config.upload.cacheLocation,
|
|
22
|
+
shards=rapidata_config.upload.maxWorkers,
|
|
23
|
+
timeout=rapidata_config.upload.cacheTimeout,
|
|
24
|
+
size_limit=rapidata_config.upload.cacheSizeLimit,
|
|
25
|
+
)
|
|
26
|
+
_url_memory_cache: dict[str, str] = {}
|
|
27
|
+
|
|
28
|
+
def __init__(self, openapi_service: OpenAPIService):
|
|
29
|
+
self.openapi_service = openapi_service
|
|
30
|
+
# Register the handler for config update changes
|
|
31
|
+
register_upload_config_handler(self._handle_config_update)
|
|
32
|
+
|
|
33
|
+
@classmethod
|
|
34
|
+
def _handle_config_update(cls, config: UploadConfig):
|
|
35
|
+
"""
|
|
36
|
+
Handle updates to the upload config (e.g., cache location, size, workers, timeout).
|
|
37
|
+
Re-instantiates the shared cache based on the new configuration.
|
|
38
|
+
"""
|
|
39
|
+
logger.debug("Updating AssetUploader shared upload cache with new config")
|
|
40
|
+
try:
|
|
41
|
+
# Dispose of the old cache (closes open resources)
|
|
42
|
+
old_cache = getattr(cls, "_shared_upload_cache", None)
|
|
43
|
+
if old_cache:
|
|
44
|
+
try:
|
|
45
|
+
old_cache.close()
|
|
46
|
+
except Exception:
|
|
47
|
+
pass # ignore close errors
|
|
48
|
+
|
|
49
|
+
# Re-initialize with the updated config
|
|
50
|
+
cls._shared_upload_cache = FanoutCache(
|
|
51
|
+
config.cacheLocation,
|
|
52
|
+
shards=config.maxWorkers,
|
|
53
|
+
timeout=config.cacheTimeout,
|
|
54
|
+
size_limit=config.cacheSizeLimit,
|
|
55
|
+
)
|
|
56
|
+
logger.info(
|
|
57
|
+
"AssetUploader shared upload cache updated: location=%s, shards=%s, timeout=%s, size_limit=%s",
|
|
58
|
+
config.cacheLocation,
|
|
59
|
+
config.maxWorkers,
|
|
60
|
+
config.cacheTimeout,
|
|
61
|
+
config.cacheSizeLimit,
|
|
62
|
+
)
|
|
63
|
+
except Exception as e:
|
|
64
|
+
logger.warning(f"Failed to update AssetUploader shared upload cache: {e}")
|
|
65
|
+
|
|
66
|
+
def _get_cache_key(self, asset: str) -> str:
|
|
67
|
+
"""Generate cache key for an asset, including environment."""
|
|
68
|
+
env = self.openapi_service.environment
|
|
69
|
+
if not os.path.exists(asset):
|
|
70
|
+
raise FileNotFoundError(f"File not found: {asset}")
|
|
71
|
+
|
|
72
|
+
stat = os.stat(asset)
|
|
73
|
+
return f"{env}@{asset}:{stat.st_size}:{stat.st_mtime_ns}"
|
|
74
|
+
|
|
75
|
+
def _get_url_cache_key(self, url: str) -> str:
|
|
76
|
+
"""Generate cache key for a URL, including environment."""
|
|
77
|
+
env = self.openapi_service.environment
|
|
78
|
+
return f"{env}@{url}"
|
|
79
|
+
|
|
80
|
+
def upload_asset(self, asset: str) -> str:
|
|
81
|
+
with tracer.start_as_current_span("AssetUploader.upload_asset"):
|
|
82
|
+
logger.debug("Uploading asset: %s", asset)
|
|
83
|
+
assert isinstance(asset, str), "Asset must be a string"
|
|
84
|
+
if re.match(r"^https?://", asset):
|
|
85
|
+
url_key = self._get_url_cache_key(asset)
|
|
86
|
+
cached_value = self._url_memory_cache.get(url_key)
|
|
87
|
+
if cached_value is not None:
|
|
88
|
+
logger.debug("URL found in memory cache")
|
|
89
|
+
return cached_value
|
|
90
|
+
|
|
91
|
+
response = self.openapi_service.asset_api.asset_url_post(
|
|
92
|
+
url=asset,
|
|
93
|
+
)
|
|
94
|
+
self._url_memory_cache[url_key] = response.file_name
|
|
95
|
+
logger.debug("URL added to memory cache")
|
|
96
|
+
return response.file_name
|
|
97
|
+
|
|
98
|
+
asset_key = self._get_cache_key(asset)
|
|
99
|
+
cached_value = self._shared_upload_cache.get(asset_key)
|
|
100
|
+
if cached_value is not None:
|
|
101
|
+
logger.debug("Asset found in cache")
|
|
102
|
+
return cast(str, cached_value) # Type hint for the linter
|
|
103
|
+
|
|
104
|
+
response = self.openapi_service.asset_api.asset_file_post(
|
|
105
|
+
file=asset,
|
|
106
|
+
)
|
|
107
|
+
if rapidata_config.upload.cacheUploads:
|
|
108
|
+
self._shared_upload_cache[asset_key] = response.file_name
|
|
109
|
+
logger.debug("Asset added to cache")
|
|
110
|
+
logger.info("Asset uploaded: %s", response.file_name)
|
|
111
|
+
return response.file_name
|
|
112
|
+
|
|
113
|
+
def get_uploaded_text_input(self, assets: list[str] | str) -> IAssetInput:
|
|
114
|
+
from rapidata.api_client.models.i_asset_input import IAssetInput
|
|
115
|
+
from rapidata.api_client.models.i_asset_input_text_asset_input import (
|
|
116
|
+
IAssetInputTextAssetInput,
|
|
117
|
+
)
|
|
118
|
+
from rapidata.api_client.models.i_asset_input_multi_asset_input import (
|
|
119
|
+
IAssetInputMultiAssetInput,
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
if isinstance(assets, list):
|
|
123
|
+
return IAssetInput(
|
|
124
|
+
actual_instance=IAssetInputMultiAssetInput(
|
|
125
|
+
_t="MultiAssetInput",
|
|
126
|
+
assets=[
|
|
127
|
+
IAssetInput(
|
|
128
|
+
actual_instance=IAssetInputTextAssetInput(
|
|
129
|
+
_t="TextAssetInput", text=asset
|
|
130
|
+
)
|
|
131
|
+
)
|
|
132
|
+
for asset in assets
|
|
133
|
+
],
|
|
134
|
+
)
|
|
135
|
+
)
|
|
136
|
+
else:
|
|
137
|
+
return IAssetInput(
|
|
138
|
+
actual_instance=IAssetInputTextAssetInput(
|
|
139
|
+
_t="TextAssetInput", text=assets
|
|
140
|
+
)
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
def get_uploaded_asset_input(self, assets: list[str] | str) -> IAssetInput:
|
|
144
|
+
from rapidata.api_client.models.i_asset_input import IAssetInput
|
|
145
|
+
from rapidata.api_client.models.i_asset_input_existing_asset_input import (
|
|
146
|
+
IAssetInputExistingAssetInput,
|
|
147
|
+
)
|
|
148
|
+
from rapidata.api_client.models.i_asset_input_multi_asset_input import (
|
|
149
|
+
IAssetInputMultiAssetInput,
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
if isinstance(assets, list):
|
|
153
|
+
return IAssetInput(
|
|
154
|
+
actual_instance=IAssetInputMultiAssetInput(
|
|
155
|
+
_t="MultiAssetInput",
|
|
156
|
+
assets=[
|
|
157
|
+
IAssetInput(
|
|
158
|
+
actual_instance=IAssetInputExistingAssetInput(
|
|
159
|
+
_t="ExistingAssetInput",
|
|
160
|
+
name=self.upload_asset(asset),
|
|
161
|
+
)
|
|
162
|
+
)
|
|
163
|
+
for asset in assets
|
|
164
|
+
],
|
|
165
|
+
)
|
|
166
|
+
)
|
|
167
|
+
else:
|
|
168
|
+
return IAssetInput(
|
|
169
|
+
actual_instance=IAssetInputExistingAssetInput(
|
|
170
|
+
_t="ExistingAssetInput",
|
|
171
|
+
name=self.upload_asset(assets),
|
|
172
|
+
)
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
def clear_cache(self):
|
|
176
|
+
self._shared_upload_cache.clear()
|
|
177
|
+
self._url_memory_cache.clear()
|
|
178
|
+
logger.info("Upload cache cleared")
|
|
179
|
+
|
|
180
|
+
def __str__(self) -> str:
|
|
181
|
+
return f"AssetUploader(openapi_service={self.openapi_service})"
|
|
182
|
+
|
|
183
|
+
def __repr__(self) -> str:
|
|
184
|
+
return f"AssetUploader(openapi_service={self.openapi_service})"
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Literal, TYPE_CHECKING
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, model_validator, field_validator
|
|
6
|
+
from typing_extensions import Self
|
|
7
|
+
from rapidata.rapidata_client.datapoints.assets.constants import (
|
|
8
|
+
ALLOWED_VIDEO_EXTENSIONS,
|
|
9
|
+
ALLOWED_IMAGE_EXTENSIONS,
|
|
10
|
+
ALLOWED_AUDIO_EXTENSIONS,
|
|
11
|
+
)
|
|
12
|
+
from rapidata.rapidata_client.config import logger
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from rapidata.api_client.models.asset_type import AssetType
|
|
16
|
+
from rapidata.api_client.models.prompt_type import PromptType
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Datapoint(BaseModel):
|
|
20
|
+
asset: str | list[str]
|
|
21
|
+
data_type: Literal["text", "media"]
|
|
22
|
+
context: str | None = None
|
|
23
|
+
media_context: str | None = None
|
|
24
|
+
sentence: str | None = None
|
|
25
|
+
private_note: str | None = None
|
|
26
|
+
group: str | None = None
|
|
27
|
+
|
|
28
|
+
@field_validator("context")
|
|
29
|
+
@classmethod
|
|
30
|
+
def context_not_empty(cls, v: str | None) -> str | None:
|
|
31
|
+
if v is not None and v == "":
|
|
32
|
+
raise ValueError(
|
|
33
|
+
"context cannot be an empty string. If not needed, set to None."
|
|
34
|
+
)
|
|
35
|
+
return v
|
|
36
|
+
|
|
37
|
+
@field_validator("media_context")
|
|
38
|
+
@classmethod
|
|
39
|
+
def media_context_not_empty(cls, v: str | None) -> str | None:
|
|
40
|
+
if v is not None and v == "":
|
|
41
|
+
raise ValueError(
|
|
42
|
+
"media_context cannot be an empty string. If not needed, set to None."
|
|
43
|
+
)
|
|
44
|
+
return v
|
|
45
|
+
|
|
46
|
+
@field_validator("sentence")
|
|
47
|
+
@classmethod
|
|
48
|
+
def sentence_has_space(cls, v: str | None) -> str | None:
|
|
49
|
+
if v is not None and len(v.split()) <= 1:
|
|
50
|
+
raise ValueError("sentence must contain at least two words.")
|
|
51
|
+
return v
|
|
52
|
+
|
|
53
|
+
@model_validator(mode="after")
|
|
54
|
+
def check_sentence_and_context(self) -> Self:
|
|
55
|
+
if isinstance(self.sentence, str) and isinstance(self.context, str):
|
|
56
|
+
raise ValueError(
|
|
57
|
+
"Both 'sentence' and 'context' cannot be strings at the same time."
|
|
58
|
+
)
|
|
59
|
+
return self
|
|
60
|
+
|
|
61
|
+
def get_asset_type(self) -> AssetType:
|
|
62
|
+
from rapidata.api_client.models.asset_type import AssetType
|
|
63
|
+
|
|
64
|
+
if self.data_type == "text":
|
|
65
|
+
return AssetType.TEXT
|
|
66
|
+
|
|
67
|
+
evaluation_asset = self.asset[0] if isinstance(self.asset, list) else self.asset
|
|
68
|
+
if any(evaluation_asset.endswith(ext) for ext in ALLOWED_IMAGE_EXTENSIONS):
|
|
69
|
+
return AssetType.IMAGE
|
|
70
|
+
elif any(evaluation_asset.endswith(ext) for ext in ALLOWED_VIDEO_EXTENSIONS):
|
|
71
|
+
return AssetType.VIDEO
|
|
72
|
+
elif any(evaluation_asset.endswith(ext) for ext in ALLOWED_AUDIO_EXTENSIONS):
|
|
73
|
+
return AssetType.AUDIO
|
|
74
|
+
else:
|
|
75
|
+
logger.debug(
|
|
76
|
+
f"Cannot get asset type for asset type: {type(evaluation_asset)}"
|
|
77
|
+
)
|
|
78
|
+
return AssetType.NONE
|
|
79
|
+
|
|
80
|
+
def get_prompt_type(self) -> list[PromptType]:
|
|
81
|
+
from rapidata.api_client.models.prompt_type import PromptType
|
|
82
|
+
|
|
83
|
+
prompt_types = []
|
|
84
|
+
if self.context:
|
|
85
|
+
prompt_types.append(PromptType.TEXT)
|
|
86
|
+
if self.media_context:
|
|
87
|
+
prompt_types.append(PromptType.ASSET)
|
|
88
|
+
|
|
89
|
+
if len(prompt_types) == 0:
|
|
90
|
+
return [PromptType.NONE]
|
|
91
|
+
|
|
92
|
+
return prompt_types
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING
|
|
4
|
+
|
|
5
|
+
from rapidata.rapidata_client.datapoints._datapoint import Datapoint
|
|
6
|
+
from rapidata.service.openapi_service import OpenAPIService
|
|
7
|
+
from rapidata.rapidata_client.datapoints._asset_uploader import AssetUploader
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from rapidata.api_client.models.create_datapoint_result import CreateDatapointResult
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DatapointUploader:
|
|
14
|
+
def __init__(self, openapi_service: OpenAPIService):
|
|
15
|
+
self.openapi_service = openapi_service
|
|
16
|
+
self.asset_uploader = AssetUploader(openapi_service)
|
|
17
|
+
|
|
18
|
+
def upload_datapoint(
|
|
19
|
+
self, datapoint: Datapoint, dataset_id: str, index: int
|
|
20
|
+
) -> CreateDatapointResult:
|
|
21
|
+
from rapidata.api_client.models.create_datapoint_model import (
|
|
22
|
+
CreateDatapointModel,
|
|
23
|
+
)
|
|
24
|
+
from rapidata.api_client.models.i_asset_input import IAssetInput
|
|
25
|
+
|
|
26
|
+
uploaded_asset: IAssetInput = (
|
|
27
|
+
self.asset_uploader.get_uploaded_asset_input(datapoint.asset)
|
|
28
|
+
if datapoint.data_type == "media"
|
|
29
|
+
else self.asset_uploader.get_uploaded_text_input(datapoint.asset)
|
|
30
|
+
)
|
|
31
|
+
return self.openapi_service.dataset_api.dataset_dataset_id_datapoint_post(
|
|
32
|
+
dataset_id=dataset_id,
|
|
33
|
+
create_datapoint_model=CreateDatapointModel(
|
|
34
|
+
asset=uploaded_asset,
|
|
35
|
+
context=datapoint.context,
|
|
36
|
+
contextAsset=(
|
|
37
|
+
self.asset_uploader.get_uploaded_asset_input(
|
|
38
|
+
datapoint.media_context
|
|
39
|
+
)
|
|
40
|
+
if datapoint.media_context
|
|
41
|
+
else None
|
|
42
|
+
),
|
|
43
|
+
transcription=datapoint.sentence,
|
|
44
|
+
sortIndex=index,
|
|
45
|
+
group=datapoint.group,
|
|
46
|
+
),
|
|
47
|
+
)
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
from itertools import zip_longest
|
|
2
|
+
from typing import Literal, cast, Iterable
|
|
3
|
+
from rapidata.rapidata_client.datapoints._datapoint import Datapoint
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DatapointsValidator:
|
|
7
|
+
@staticmethod
|
|
8
|
+
def validate_datapoints(
|
|
9
|
+
datapoints: list[str] | list[list[str]],
|
|
10
|
+
contexts: list[str] | None = None,
|
|
11
|
+
media_contexts: list[str] | None = None,
|
|
12
|
+
sentences: list[str] | None = None,
|
|
13
|
+
private_notes: list[str] | None = None,
|
|
14
|
+
groups: list[str] | None = None,
|
|
15
|
+
) -> None:
|
|
16
|
+
if contexts and len(contexts) != len(datapoints):
|
|
17
|
+
raise ValueError("Number of contexts must match number of datapoints")
|
|
18
|
+
if media_contexts and len(media_contexts) != len(datapoints):
|
|
19
|
+
raise ValueError("Number of media contexts must match number of datapoints")
|
|
20
|
+
if sentences and len(sentences) != len(datapoints):
|
|
21
|
+
raise ValueError("Number of sentences must match number of datapoints")
|
|
22
|
+
if private_notes and len(private_notes) != len(datapoints):
|
|
23
|
+
raise ValueError("Number of private notes must match number of datapoints")
|
|
24
|
+
if groups and (
|
|
25
|
+
len(groups) != len(datapoints) or len(groups) != len(set(groups))
|
|
26
|
+
):
|
|
27
|
+
raise ValueError(
|
|
28
|
+
"Number of groups must match number of datapoints and must be unique."
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
@staticmethod
|
|
32
|
+
def map_datapoints(
|
|
33
|
+
datapoints: list[str] | list[list[str]],
|
|
34
|
+
contexts: list[str] | None = None,
|
|
35
|
+
media_contexts: list[str] | None = None,
|
|
36
|
+
sentences: list[str] | None = None,
|
|
37
|
+
private_notes: list[str] | None = None,
|
|
38
|
+
groups: list[str] | None = None,
|
|
39
|
+
data_type: Literal["text", "media"] = "media",
|
|
40
|
+
) -> list[Datapoint]:
|
|
41
|
+
DatapointsValidator.validate_datapoints(
|
|
42
|
+
datapoints=datapoints,
|
|
43
|
+
contexts=contexts,
|
|
44
|
+
media_contexts=media_contexts,
|
|
45
|
+
sentences=sentences,
|
|
46
|
+
private_notes=private_notes,
|
|
47
|
+
groups=groups,
|
|
48
|
+
)
|
|
49
|
+
return [
|
|
50
|
+
Datapoint(
|
|
51
|
+
asset=asset,
|
|
52
|
+
data_type=data_type,
|
|
53
|
+
context=context,
|
|
54
|
+
media_context=media_context,
|
|
55
|
+
sentence=sentence,
|
|
56
|
+
private_note=private_note,
|
|
57
|
+
group=group,
|
|
58
|
+
)
|
|
59
|
+
for asset, context, media_context, sentence, private_note, group in cast(
|
|
60
|
+
"Iterable[tuple[str | list[str], str | None, str | None, str | None, str | None, str | None]]", # because iterator only supports 5 arguments with specific type casting
|
|
61
|
+
zip_longest(
|
|
62
|
+
datapoints,
|
|
63
|
+
contexts or [],
|
|
64
|
+
media_contexts or [],
|
|
65
|
+
sentences or [],
|
|
66
|
+
private_notes or [],
|
|
67
|
+
groups or [],
|
|
68
|
+
),
|
|
69
|
+
)
|
|
70
|
+
]
|
|
@@ -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,7 +1,5 @@
|
|
|
1
1
|
from ._base_metadata import Metadata
|
|
2
2
|
from ._private_text_metadata import PrivateTextMetadata
|
|
3
3
|
from ._public_text_metadata import PublicTextMetadata
|
|
4
|
-
from ._prompt_metadata import PromptMetadata
|
|
5
4
|
from ._select_words_metadata import SelectWordsMetadata
|
|
6
|
-
from ._media_asset_metadata import MediaAssetMetadata
|
|
7
5
|
from ._prompt_identifier_metadata import PromptIdentifierMetadata
|