label-studio-sdk 1.0.20__py3-none-any.whl → 2.0.1__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 label-studio-sdk might be problematic. Click here for more details.
- label_studio_sdk/__init__.py +345 -180
- label_studio_sdk/actions/__init__.py +4 -0
- label_studio_sdk/actions/client.py +46 -10
- label_studio_sdk/actions/types/__init__.py +4 -0
- label_studio_sdk/actions/types/actions_create_request_filters.py +2 -2
- label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +2 -2
- label_studio_sdk/actions/types/actions_create_request_id.py +7 -7
- label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +2 -2
- label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +2 -2
- label_studio_sdk/actions/types/actions_list_response_item.py +25 -0
- label_studio_sdk/actions/types/actions_list_response_item_dialog.py +22 -0
- label_studio_sdk/annotations/__init__.py +2 -2
- label_studio_sdk/annotations/client.py +379 -243
- label_studio_sdk/annotations/types/__init__.py +4 -2
- label_studio_sdk/annotations/types/annotation_bulk_serializer_with_selected_items_request_last_action.py +7 -0
- label_studio_sdk/annotations/types/annotations_create_bulk_response_item.py +8 -5
- label_studio_sdk/base_client.py +32 -24
- label_studio_sdk/billing/__init__.py +2 -0
- label_studio_sdk/billing/client.py +112 -0
- label_studio_sdk/comments/client.py +378 -140
- label_studio_sdk/converter/README.md +207 -0
- label_studio_sdk/converter/imports/coco.py +132 -23
- label_studio_sdk/core/__init__.py +4 -0
- label_studio_sdk/core/unchecked_base_model.py +305 -0
- label_studio_sdk/environment.py +1 -1
- label_studio_sdk/errors/__init__.py +10 -1
- label_studio_sdk/errors/forbidden_error.py +9 -0
- label_studio_sdk/errors/method_not_allowed_error.py +9 -0
- label_studio_sdk/export_storage/__init__.py +1 -24
- label_studio_sdk/export_storage/azure/__init__.py +0 -3
- label_studio_sdk/export_storage/azure/client.py +231 -273
- label_studio_sdk/export_storage/client.py +5 -5
- label_studio_sdk/export_storage/gcs/__init__.py +0 -3
- label_studio_sdk/export_storage/gcs/client.py +231 -273
- label_studio_sdk/export_storage/local/__init__.py +0 -3
- label_studio_sdk/export_storage/local/client.py +211 -253
- label_studio_sdk/export_storage/redis/__init__.py +0 -3
- label_studio_sdk/export_storage/redis/client.py +239 -281
- label_studio_sdk/export_storage/s3/__init__.py +0 -3
- label_studio_sdk/export_storage/s3/client.py +254 -296
- label_studio_sdk/export_storage/s3s/client.py +694 -210
- label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +2 -2
- label_studio_sdk/files/client.py +52 -71
- label_studio_sdk/import_storage/__init__.py +1 -24
- label_studio_sdk/import_storage/azure/__init__.py +0 -3
- label_studio_sdk/import_storage/azure/client.py +249 -299
- label_studio_sdk/import_storage/client.py +5 -5
- label_studio_sdk/import_storage/gcs/__init__.py +0 -3
- label_studio_sdk/import_storage/gcs/client.py +249 -299
- label_studio_sdk/import_storage/local/__init__.py +0 -3
- label_studio_sdk/import_storage/local/client.py +211 -257
- label_studio_sdk/import_storage/redis/__init__.py +0 -3
- label_studio_sdk/import_storage/redis/client.py +239 -285
- label_studio_sdk/import_storage/s3/__init__.py +0 -3
- label_studio_sdk/import_storage/s3/client.py +274 -324
- label_studio_sdk/import_storage/s3s/client.py +728 -434
- label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +2 -2
- label_studio_sdk/jwt_settings/client.py +56 -58
- label_studio_sdk/label_interface/control_tags.py +48 -8
- label_studio_sdk/label_interface/interface.py +261 -56
- label_studio_sdk/ml/__init__.py +2 -16
- label_studio_sdk/ml/client.py +196 -179
- label_studio_sdk/ml/types/__init__.py +2 -12
- label_studio_sdk/ml/types/ml_list_model_versions_response.py +20 -0
- label_studio_sdk/model_providers/__init__.py +3 -0
- label_studio_sdk/model_providers/client.py +280 -228
- label_studio_sdk/model_providers/types/__init__.py +5 -0
- label_studio_sdk/{prompts/types/prompts_batch_predictions_response.py → model_providers/types/model_providers_list_model_provider_choices_response.py} +3 -3
- label_studio_sdk/organizations/__init__.py +5 -0
- label_studio_sdk/organizations/client.py +331 -0
- label_studio_sdk/organizations/members/__init__.py +2 -0
- label_studio_sdk/organizations/members/client.py +636 -0
- label_studio_sdk/predictions/client.py +29 -77
- label_studio_sdk/projects/__init__.py +18 -9
- label_studio_sdk/projects/client.py +905 -414
- label_studio_sdk/projects/exports/__init__.py +2 -2
- label_studio_sdk/projects/exports/client.py +336 -396
- label_studio_sdk/projects/exports/client_ext.py +30 -30
- label_studio_sdk/projects/exports/types/__init__.py +1 -2
- label_studio_sdk/projects/exports/types/exports_convert_response.py +5 -9
- label_studio_sdk/projects/pauses/client.py +114 -105
- label_studio_sdk/projects/stats/__init__.py +5 -0
- label_studio_sdk/projects/stats/client.py +175 -0
- label_studio_sdk/projects/stats/types/__init__.py +8 -0
- label_studio_sdk/projects/stats/types/stats_iaa_response.py +44 -0
- label_studio_sdk/projects/stats/types/stats_iaa_response_common_tasks.py +7 -0
- label_studio_sdk/projects/stats/types/stats_iaa_response_iaa.py +5 -0
- label_studio_sdk/{types/base_task_file_upload.py → projects/stats/types/stats_iaa_response_std.py} +1 -1
- label_studio_sdk/projects/types/__init__.py +10 -6
- label_studio_sdk/projects/types/lse_project_create_request_sampling.py +7 -0
- label_studio_sdk/projects/types/lse_project_create_request_skip_queue.py +7 -0
- label_studio_sdk/projects/types/patched_lse_project_update_request_sampling.py +7 -0
- label_studio_sdk/projects/types/patched_lse_project_update_request_skip_queue.py +7 -0
- label_studio_sdk/{prompts/types/prompts_batch_failed_predictions_response.py → projects/types/projects_duplicate_response.py} +8 -5
- label_studio_sdk/projects/types/projects_import_tasks_response.py +2 -2
- label_studio_sdk/projects/types/projects_list_request_filter.py +1 -1
- label_studio_sdk/prompts/__init__.py +4 -10
- label_studio_sdk/prompts/client.py +511 -442
- label_studio_sdk/prompts/indicators/__init__.py +3 -0
- label_studio_sdk/prompts/indicators/client.py +47 -49
- label_studio_sdk/prompts/indicators/types/__init__.py +5 -0
- label_studio_sdk/{types/key_indicator_value.py → prompts/indicators/types/indicators_list_response_item.py} +3 -3
- label_studio_sdk/prompts/runs/client.py +113 -135
- label_studio_sdk/prompts/types/__init__.py +2 -12
- label_studio_sdk/prompts/types/prompts_compatible_projects_request_project_type.py +7 -0
- label_studio_sdk/prompts/versions/client.py +372 -312
- label_studio_sdk/tasks/__init__.py +2 -2
- label_studio_sdk/tasks/client.py +514 -213
- label_studio_sdk/tasks/types/__init__.py +1 -2
- label_studio_sdk/tokens/client.py +160 -152
- label_studio_sdk/tokens/client_ext.py +3 -3
- label_studio_sdk/types/__init__.py +276 -142
- label_studio_sdk/{webhooks/types/webhooks_update_request_actions_item.py → types/actions_enum.py} +4 -1
- label_studio_sdk/types/all_roles_project_list.py +197 -0
- label_studio_sdk/types/all_roles_project_list_sampling.py +7 -0
- label_studio_sdk/types/all_roles_project_list_skip_queue.py +7 -0
- label_studio_sdk/types/annotated_enum.py +5 -0
- label_studio_sdk/types/annotation.py +24 -10
- label_studio_sdk/types/annotation_last_action.py +3 -15
- label_studio_sdk/types/{annotations_dm_field.py → annotation_request.py} +21 -30
- label_studio_sdk/types/annotation_request_last_action.py +7 -0
- label_studio_sdk/types/assignment_settings.py +31 -0
- label_studio_sdk/types/assignment_settings_label_stream_task_distribution.py +7 -0
- label_studio_sdk/types/assignment_settings_request.py +32 -0
- label_studio_sdk/types/assignment_settings_request_label_stream_task_distribution.py +7 -0
- label_studio_sdk/types/associated_project.py +30 -0
- label_studio_sdk/types/auth_method_enum.py +5 -0
- label_studio_sdk/types/azure_blob_export_storage.py +8 -12
- label_studio_sdk/types/azure_blob_import_storage.py +8 -12
- label_studio_sdk/types/{prompt_associated_projects_item_id.py → batch_failed_predictions.py} +4 -4
- label_studio_sdk/types/{access_token_response.py → batch_predictions.py} +6 -8
- label_studio_sdk/types/billing_checks.py +39 -0
- label_studio_sdk/types/billing_flags.py +44 -0
- label_studio_sdk/types/billing_info_response.py +22 -0
- label_studio_sdk/types/blank_enum.py +5 -0
- label_studio_sdk/types/{key_indicators_item_extra_kpis_item.py → blueprint_list.py} +12 -6
- label_studio_sdk/types/budget_reset_period_enum.py +5 -0
- label_studio_sdk/types/child_filter.py +44 -0
- label_studio_sdk/types/comment.py +39 -14
- label_studio_sdk/types/comment_request.py +32 -0
- label_studio_sdk/types/comment_serializer_with_expanded_user.py +53 -0
- label_studio_sdk/types/converted_format.py +5 -5
- label_studio_sdk/types/{api_token_response.py → converted_format_request.py} +8 -15
- label_studio_sdk/types/count_limit.py +22 -0
- label_studio_sdk/types/custom_scripts_editable_by_enum.py +5 -0
- label_studio_sdk/types/default_role_enum.py +5 -0
- label_studio_sdk/types/edition_enum.py +5 -0
- label_studio_sdk/types/export.py +7 -7
- label_studio_sdk/types/file_upload.py +5 -5
- label_studio_sdk/types/filter.py +9 -6
- label_studio_sdk/types/filter_group.py +3 -3
- label_studio_sdk/types/finished_enum.py +5 -0
- label_studio_sdk/types/gcs_export_storage.py +8 -12
- label_studio_sdk/types/gcs_import_storage.py +8 -12
- label_studio_sdk/types/{rotate_token_response.py → hotkeys.py} +5 -8
- label_studio_sdk/types/{base_task.py → import_api_request.py} +11 -34
- label_studio_sdk/types/inference_run_cost_estimate.py +2 -2
- label_studio_sdk/types/label_stream_task_distribution_enum.py +5 -0
- label_studio_sdk/types/{annotations_dm_field_last_action.py → last_action_enum.py} +1 -1
- label_studio_sdk/types/local_files_export_storage.py +8 -12
- label_studio_sdk/types/local_files_import_storage.py +8 -12
- label_studio_sdk/types/{annotation_filter_options.py → lse_annotation_filter_options.py} +12 -2
- label_studio_sdk/types/lse_annotation_filter_options_request.py +42 -0
- label_studio_sdk/types/lse_annotation_filter_options_request_reviewed.py +7 -0
- label_studio_sdk/types/lse_annotation_filter_options_reviewed.py +7 -0
- label_studio_sdk/types/{export_snapshot.py → lse_export_create.py} +11 -11
- label_studio_sdk/types/lse_fields.py +49 -0
- label_studio_sdk/types/lse_fields_onboarding_state.py +8 -0
- label_studio_sdk/types/lse_fields_trial_role.py +8 -0
- label_studio_sdk/types/lse_key_indicator_value.py +35 -0
- label_studio_sdk/types/lse_organization.py +57 -0
- label_studio_sdk/types/lse_organization_custom_scripts_editable_by.py +7 -0
- label_studio_sdk/types/{key_indicators_item_additional_kpis_item.py → lse_organization_member_list.py} +12 -7
- label_studio_sdk/types/lse_project_create.py +196 -0
- label_studio_sdk/types/lse_project_create_sampling.py +7 -0
- label_studio_sdk/types/lse_project_create_skip_queue.py +7 -0
- label_studio_sdk/types/lse_project_update.py +215 -0
- label_studio_sdk/types/lse_project_update_sampling.py +7 -0
- label_studio_sdk/types/lse_project_update_skip_queue.py +7 -0
- label_studio_sdk/types/lse_s3export_storage.py +134 -0
- label_studio_sdk/{import_storage/s3/types/s3create_response.py → types/lse_s3export_storage_request.py} +47 -21
- label_studio_sdk/{import_storage/s3/types/s3update_response.py → types/lse_s3import_storage.py} +60 -21
- label_studio_sdk/types/{s3s_import_storage.py → lse_s3import_storage_request.py} +32 -21
- label_studio_sdk/types/lse_task.py +117 -0
- label_studio_sdk/types/{data_manager_task_serializer_drafts_item.py → lse_task_drafts_item.py} +2 -2
- label_studio_sdk/types/lse_task_filter_options.py +63 -0
- label_studio_sdk/types/lse_task_filter_options_annotated.py +7 -0
- label_studio_sdk/types/lse_task_filter_options_finished.py +7 -0
- label_studio_sdk/types/lse_task_filter_options_request.py +63 -0
- label_studio_sdk/types/lse_task_filter_options_request_annotated.py +7 -0
- label_studio_sdk/types/lse_task_filter_options_request_finished.py +7 -0
- label_studio_sdk/types/lse_task_filter_options_request_reviewed.py +7 -0
- label_studio_sdk/types/lse_task_filter_options_request_skipped.py +7 -0
- label_studio_sdk/types/lse_task_filter_options_reviewed.py +7 -0
- label_studio_sdk/types/lse_task_filter_options_skipped.py +7 -0
- label_studio_sdk/types/{data_manager_task_serializer_predictions_item.py → lse_task_predictions_item.py} +4 -5
- label_studio_sdk/types/lse_task_serializer_for_annotators.py +54 -0
- label_studio_sdk/types/lse_task_serializer_for_annotators_drafts_item.py +22 -0
- label_studio_sdk/types/lse_task_serializer_for_annotators_predictions_item.py +28 -0
- label_studio_sdk/types/lse_task_serializer_for_reviewers.py +117 -0
- label_studio_sdk/types/lse_task_serializer_for_reviewers_drafts_item.py +22 -0
- label_studio_sdk/types/lse_task_serializer_for_reviewers_predictions_item.py +28 -0
- label_studio_sdk/types/lse_user.py +49 -0
- label_studio_sdk/types/{base_user.py → lse_user_api.py} +17 -6
- label_studio_sdk/types/lse_user_organization_member_list.py +48 -0
- label_studio_sdk/types/lseapi_token_create.py +21 -0
- label_studio_sdk/types/lseapi_token_list.py +21 -0
- label_studio_sdk/types/lsejwt_settings.py +32 -0
- label_studio_sdk/types/maybe_expanded_comment.py +7 -0
- label_studio_sdk/types/ml_backend.py +16 -17
- label_studio_sdk/types/mode_enum.py +5 -0
- label_studio_sdk/types/model_interface.py +44 -0
- label_studio_sdk/types/model_interface_request.py +40 -0
- label_studio_sdk/types/model_interface_serializer_get.py +45 -0
- label_studio_sdk/types/model_provider_connection.py +48 -17
- label_studio_sdk/types/model_provider_connection_budget_reset_period.py +3 -1
- label_studio_sdk/types/model_provider_connection_request.py +71 -0
- label_studio_sdk/types/model_run.py +40 -0
- label_studio_sdk/types/{inference_run_status.py → model_run_status_enum.py} +1 -1
- label_studio_sdk/types/null_enum.py +3 -0
- label_studio_sdk/types/onboarding_state_enum.py +7 -0
- label_studio_sdk/types/organization_billing.py +20 -0
- label_studio_sdk/types/organization_id.py +28 -0
- label_studio_sdk/types/organization_invite.py +20 -0
- label_studio_sdk/types/organization_member.py +37 -0
- label_studio_sdk/types/organization_membership.py +24 -0
- label_studio_sdk/{projects/types/projects_list_response.py → types/paginated_all_roles_project_list_list.py} +5 -5
- label_studio_sdk/types/paginated_lse_organization_member_list_list.py +23 -0
- label_studio_sdk/types/{jwt_settings_response.py → paginated_role_based_task_list.py} +11 -9
- label_studio_sdk/types/pause.py +55 -14
- label_studio_sdk/types/pause_request.py +41 -0
- label_studio_sdk/types/prediction.py +7 -11
- label_studio_sdk/types/prediction_request.py +56 -0
- label_studio_sdk/types/project.py +32 -39
- label_studio_sdk/types/project_import.py +12 -13
- label_studio_sdk/types/project_label_config.py +2 -2
- label_studio_sdk/types/project_label_config_request.py +22 -0
- label_studio_sdk/types/project_sampling.py +3 -3
- label_studio_sdk/types/project_skip_queue.py +3 -1
- label_studio_sdk/types/project_subset_enum.py +5 -0
- label_studio_sdk/types/prompts_status_enum.py +16 -0
- label_studio_sdk/types/{prompt_version_provider.py → provider_enum.py} +1 -1
- label_studio_sdk/types/reason_enum.py +7 -0
- label_studio_sdk/types/redis_export_storage.py +8 -12
- label_studio_sdk/types/redis_import_storage.py +8 -12
- label_studio_sdk/types/refined_prompt_response.py +5 -6
- label_studio_sdk/types/requeue_rejected_tasks_mode_enum.py +5 -0
- label_studio_sdk/types/review_criteria_enum.py +5 -0
- label_studio_sdk/types/review_settings.py +80 -0
- label_studio_sdk/types/review_settings_request.py +80 -0
- label_studio_sdk/types/review_settings_request_requeue_rejected_tasks_mode.py +8 -0
- label_studio_sdk/types/review_settings_request_review_criteria.py +7 -0
- label_studio_sdk/types/review_settings_requeue_rejected_tasks_mode.py +8 -0
- label_studio_sdk/types/review_settings_review_criteria.py +7 -0
- label_studio_sdk/types/reviewed_enum.py +5 -0
- label_studio_sdk/types/role9e7enum.py +5 -0
- label_studio_sdk/types/role_based_task.py +8 -0
- label_studio_sdk/types/s3export_storage.py +8 -12
- label_studio_sdk/types/s3import_storage.py +8 -12
- label_studio_sdk/types/sampling_enum.py +7 -0
- label_studio_sdk/types/scope_enum.py +5 -0
- label_studio_sdk/types/selected_items_request.py +23 -0
- label_studio_sdk/types/serialization_option.py +2 -6
- label_studio_sdk/types/serialization_option_request.py +22 -0
- label_studio_sdk/types/serialization_options.py +17 -5
- label_studio_sdk/types/serialization_options_request.py +47 -0
- label_studio_sdk/types/skill_name_enum.py +5 -0
- label_studio_sdk/types/skip_queue_enum.py +5 -0
- label_studio_sdk/types/skipped_enum.py +5 -0
- label_studio_sdk/types/state_enum.py +5 -0
- label_studio_sdk/types/status7bf_enum.py +5 -0
- label_studio_sdk/types/{azure_blob_import_storage_status.py → status_c5a_enum.py} +2 -2
- label_studio_sdk/types/third_party_model_version.py +65 -0
- label_studio_sdk/types/third_party_model_version_request.py +54 -0
- label_studio_sdk/types/token_refresh_response.py +19 -0
- label_studio_sdk/types/token_rotate_response.py +19 -0
- label_studio_sdk/types/trial_role_enum.py +16 -0
- label_studio_sdk/types/user_simple.py +8 -5
- label_studio_sdk/types/user_simple_request.py +28 -0
- label_studio_sdk/types/version_response.py +49 -0
- label_studio_sdk/types/view.py +8 -15
- label_studio_sdk/types/webhook.py +9 -13
- label_studio_sdk/types/webhook_serializer_for_update.py +15 -13
- label_studio_sdk/types/workspace.py +14 -34
- label_studio_sdk/types/workspace_member_create.py +27 -0
- label_studio_sdk/types/workspace_member_list.py +24 -0
- label_studio_sdk/users/client.py +604 -87
- label_studio_sdk/users/types/users_get_token_response.py +4 -11
- label_studio_sdk/users/types/users_reset_token_response.py +4 -11
- label_studio_sdk/versions/__init__.py +0 -3
- label_studio_sdk/versions/client.py +14 -14
- label_studio_sdk/views/client.py +227 -141
- label_studio_sdk/views/types/views_create_request_data.py +2 -2
- label_studio_sdk/views/types/views_create_request_data_filters.py +2 -2
- label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +2 -2
- label_studio_sdk/views/types/views_update_request_data.py +2 -2
- label_studio_sdk/views/types/views_update_request_data_filters.py +2 -2
- label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +2 -2
- label_studio_sdk/webhooks/__init__.py +36 -2
- label_studio_sdk/webhooks/client.py +173 -367
- label_studio_sdk/webhooks/types/__init__.py +34 -2
- label_studio_sdk/webhooks/types/webhooks_info_response.py +80 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_annotation_created.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_annotation_updated.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_annotations_created.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_annotations_deleted.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_label_link_created.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_label_link_deleted.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_label_link_updated.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_project_created.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_project_deleted.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_project_updated.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_review_created.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_review_updated.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_reviews_deleted.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_tasks_created.py +24 -0
- label_studio_sdk/webhooks/types/webhooks_info_response_tasks_deleted.py +24 -0
- label_studio_sdk/workspaces/__init__.py +1 -2
- label_studio_sdk/workspaces/client.py +97 -117
- label_studio_sdk/workspaces/members/__init__.py +0 -3
- label_studio_sdk/workspaces/members/client.py +65 -81
- {label_studio_sdk-1.0.20.dist-info → label_studio_sdk-2.0.1.dist-info}/METADATA +73 -25
- label_studio_sdk-2.0.1.dist-info/RECORD +435 -0
- {label_studio_sdk-1.0.20.dist-info → label_studio_sdk-2.0.1.dist-info}/WHEEL +1 -1
- label_studio_sdk/annotations/types/annotations_create_bulk_request_selected_items.py +0 -34
- label_studio_sdk/export_storage/azure/types/__init__.py +0 -6
- label_studio_sdk/export_storage/azure/types/azure_create_response.py +0 -57
- label_studio_sdk/export_storage/azure/types/azure_update_response.py +0 -57
- label_studio_sdk/export_storage/gcs/types/__init__.py +0 -6
- label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +0 -57
- label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +0 -57
- label_studio_sdk/export_storage/local/types/__init__.py +0 -6
- label_studio_sdk/export_storage/local/types/local_create_response.py +0 -47
- label_studio_sdk/export_storage/local/types/local_update_response.py +0 -47
- label_studio_sdk/export_storage/redis/types/__init__.py +0 -6
- label_studio_sdk/export_storage/redis/types/redis_create_response.py +0 -62
- label_studio_sdk/export_storage/redis/types/redis_update_response.py +0 -62
- label_studio_sdk/export_storage/s3/types/__init__.py +0 -6
- label_studio_sdk/export_storage/s3/types/s3create_response.py +0 -81
- label_studio_sdk/export_storage/s3/types/s3update_response.py +0 -81
- label_studio_sdk/import_storage/azure/types/__init__.py +0 -6
- label_studio_sdk/import_storage/azure/types/azure_create_response.py +0 -72
- label_studio_sdk/import_storage/azure/types/azure_update_response.py +0 -72
- label_studio_sdk/import_storage/gcs/types/__init__.py +0 -6
- label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +0 -72
- label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +0 -72
- label_studio_sdk/import_storage/local/types/__init__.py +0 -6
- label_studio_sdk/import_storage/local/types/local_create_response.py +0 -47
- label_studio_sdk/import_storage/local/types/local_update_response.py +0 -47
- label_studio_sdk/import_storage/redis/types/__init__.py +0 -6
- label_studio_sdk/import_storage/redis/types/redis_create_response.py +0 -62
- label_studio_sdk/import_storage/redis/types/redis_update_response.py +0 -62
- label_studio_sdk/import_storage/s3/types/__init__.py +0 -6
- label_studio_sdk/ml/types/ml_create_response.py +0 -68
- label_studio_sdk/ml/types/ml_create_response_auth_method.py +0 -5
- label_studio_sdk/ml/types/ml_update_response.py +0 -68
- label_studio_sdk/ml/types/ml_update_response_auth_method.py +0 -5
- label_studio_sdk/projects/exports/types/exports_list_formats_response_item.py +0 -44
- label_studio_sdk/projects/types/projects_create_response.py +0 -91
- label_studio_sdk/projects/types/projects_update_response.py +0 -96
- label_studio_sdk/prompts/types/prompts_batch_failed_predictions_request_failed_predictions_item.py +0 -32
- label_studio_sdk/prompts/types/prompts_batch_predictions_request_results_item.py +0 -59
- label_studio_sdk/tasks/types/tasks_list_response.py +0 -38
- label_studio_sdk/types/annotation_completed_by.py +0 -6
- label_studio_sdk/types/azure_blob_export_storage_status.py +0 -7
- label_studio_sdk/types/base_task_updated_by.py +0 -7
- label_studio_sdk/types/comment_created_by.py +0 -5
- label_studio_sdk/types/converted_format_status.py +0 -5
- label_studio_sdk/types/data_manager_task_serializer.py +0 -118
- label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +0 -5
- label_studio_sdk/types/data_manager_task_serializer_comment_authors_item.py +0 -5
- label_studio_sdk/types/data_manager_task_serializer_predictions_item_model_run.py +0 -5
- label_studio_sdk/types/export_format.py +0 -25
- label_studio_sdk/types/export_snapshot_status.py +0 -5
- label_studio_sdk/types/export_status.py +0 -5
- label_studio_sdk/types/gcs_export_storage_status.py +0 -7
- label_studio_sdk/types/gcs_import_storage_status.py +0 -7
- label_studio_sdk/types/inference_run.py +0 -34
- label_studio_sdk/types/inference_run_created_by.py +0 -5
- label_studio_sdk/types/inference_run_organization.py +0 -5
- label_studio_sdk/types/inference_run_project_subset.py +0 -5
- label_studio_sdk/types/key_indicators.py +0 -6
- label_studio_sdk/types/key_indicators_item.py +0 -41
- label_studio_sdk/types/local_files_export_storage_status.py +0 -7
- label_studio_sdk/types/local_files_import_storage_status.py +0 -7
- label_studio_sdk/types/ml_backend_auth_method.py +0 -5
- label_studio_sdk/types/ml_backend_state.py +0 -5
- label_studio_sdk/types/model_provider_connection_created_by.py +0 -5
- label_studio_sdk/types/model_provider_connection_organization.py +0 -5
- label_studio_sdk/types/model_provider_connection_provider.py +0 -7
- label_studio_sdk/types/model_provider_connection_scope.py +0 -5
- label_studio_sdk/types/pause_paused_by.py +0 -5
- label_studio_sdk/types/project_import_status.py +0 -5
- label_studio_sdk/types/prompt.py +0 -71
- label_studio_sdk/types/prompt_associated_projects_item.py +0 -6
- label_studio_sdk/types/prompt_created_by.py +0 -5
- label_studio_sdk/types/prompt_organization.py +0 -5
- label_studio_sdk/types/prompt_version.py +0 -32
- label_studio_sdk/types/prompt_version_created_by.py +0 -5
- label_studio_sdk/types/prompt_version_organization.py +0 -5
- label_studio_sdk/types/redis_export_storage_status.py +0 -7
- label_studio_sdk/types/redis_import_storage_status.py +0 -7
- label_studio_sdk/types/refined_prompt_response_refinement_status.py +0 -7
- label_studio_sdk/types/s3export_storage_status.py +0 -7
- label_studio_sdk/types/s3import_storage_status.py +0 -7
- label_studio_sdk/types/s3s_export_storage.py +0 -73
- label_studio_sdk/types/s3s_import_storage_status.py +0 -7
- label_studio_sdk/types/task.py +0 -156
- label_studio_sdk/types/task_annotators_item.py +0 -5
- label_studio_sdk/types/task_comment_authors_item.py +0 -5
- label_studio_sdk/types/task_filter_options.py +0 -39
- label_studio_sdk/types/webhook_actions_item.py +0 -21
- label_studio_sdk/types/webhook_serializer_for_update_actions_item.py +0 -21
- label_studio_sdk/versions/types/__init__.py +0 -6
- label_studio_sdk/versions/types/versions_get_response.py +0 -73
- label_studio_sdk/versions/types/versions_get_response_edition.py +0 -5
- label_studio_sdk/workspaces/members/types/__init__.py +0 -6
- label_studio_sdk/workspaces/members/types/members_create_response.py +0 -22
- label_studio_sdk/workspaces/members/types/members_list_response_item.py +0 -22
- label_studio_sdk-1.0.20.dist-info/RECORD +0 -374
- {label_studio_sdk-1.0.20.dist-info → label_studio_sdk-2.0.1.dist-info}/LICENSE +0 -0
|
@@ -4,12 +4,10 @@ import typing
|
|
|
4
4
|
from ...core.client_wrapper import SyncClientWrapper
|
|
5
5
|
from ...core.request_options import RequestOptions
|
|
6
6
|
from ...types.azure_blob_import_storage import AzureBlobImportStorage
|
|
7
|
-
from ...core.
|
|
7
|
+
from ...core.unchecked_base_model import construct_type
|
|
8
8
|
from json.decoder import JSONDecodeError
|
|
9
9
|
from ...core.api_error import ApiError
|
|
10
|
-
from .types.azure_create_response import AzureCreateResponse
|
|
11
10
|
from ...core.jsonable_encoder import jsonable_encoder
|
|
12
|
-
from .types.azure_update_response import AzureUpdateResponse
|
|
13
11
|
from ...core.client_wrapper import AsyncClientWrapper
|
|
14
12
|
|
|
15
13
|
# this is used as the default value for optional parameters
|
|
@@ -21,18 +19,20 @@ class AzureClient:
|
|
|
21
19
|
self._client_wrapper = client_wrapper
|
|
22
20
|
|
|
23
21
|
def list(
|
|
24
|
-
self,
|
|
22
|
+
self,
|
|
23
|
+
*,
|
|
24
|
+
ordering: typing.Optional[str] = None,
|
|
25
|
+
project: typing.Optional[int] = None,
|
|
26
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
25
27
|
) -> typing.List[AzureBlobImportStorage]:
|
|
26
28
|
"""
|
|
27
|
-
|
|
28
|
-
You can connect your Microsoft Azure Blob storage container to Label Studio as a source storage or target storage. Use this API request to get a list of all Azure import (source) storage connections for a specific project.
|
|
29
|
-
|
|
30
|
-
The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
|
|
31
|
-
|
|
32
|
-
For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
|
|
29
|
+
Get list of all Azure import storage connections.
|
|
33
30
|
|
|
34
31
|
Parameters
|
|
35
32
|
----------
|
|
33
|
+
ordering : typing.Optional[str]
|
|
34
|
+
Which field to use when ordering the results.
|
|
35
|
+
|
|
36
36
|
project : typing.Optional[int]
|
|
37
37
|
Project ID
|
|
38
38
|
|
|
@@ -57,6 +57,7 @@ class AzureClient:
|
|
|
57
57
|
"api/storages/azure/",
|
|
58
58
|
method="GET",
|
|
59
59
|
params={
|
|
60
|
+
"ordering": ordering,
|
|
60
61
|
"project": project,
|
|
61
62
|
},
|
|
62
63
|
request_options=request_options,
|
|
@@ -65,7 +66,7 @@ class AzureClient:
|
|
|
65
66
|
if 200 <= _response.status_code < 300:
|
|
66
67
|
return typing.cast(
|
|
67
68
|
typing.List[AzureBlobImportStorage],
|
|
68
|
-
|
|
69
|
+
construct_type(
|
|
69
70
|
type_=typing.List[AzureBlobImportStorage], # type: ignore
|
|
70
71
|
object_=_response.json(),
|
|
71
72
|
),
|
|
@@ -90,16 +91,9 @@ class AzureClient:
|
|
|
90
91
|
account_name: typing.Optional[str] = OMIT,
|
|
91
92
|
account_key: typing.Optional[str] = OMIT,
|
|
92
93
|
request_options: typing.Optional[RequestOptions] = None,
|
|
93
|
-
) ->
|
|
94
|
+
) -> AzureBlobImportStorage:
|
|
94
95
|
"""
|
|
95
|
-
|
|
96
|
-
Create a new source storage connection to Microsoft Azure Blob storage.
|
|
97
|
-
|
|
98
|
-
For information about the required fields and prerequisites, see [Microsoft Azure Blob storage](https://labelstud.io/guide/storage#Microsoft-Azure-Blob-storage) in the Label Studio documentation.
|
|
99
|
-
|
|
100
|
-
<Info>Ensure you configure CORS before adding cloud storage. This ensures you will be able to see the content of the data rather than just a link.</Info>
|
|
101
|
-
|
|
102
|
-
<Tip>After you add the storage, you should validate the connection before attempting to sync your data. Your data will not be imported until you [sync your connection](sync).</Tip>
|
|
96
|
+
Create new Azure import storage
|
|
103
97
|
|
|
104
98
|
Parameters
|
|
105
99
|
----------
|
|
@@ -141,7 +135,7 @@ class AzureClient:
|
|
|
141
135
|
|
|
142
136
|
Returns
|
|
143
137
|
-------
|
|
144
|
-
|
|
138
|
+
AzureBlobImportStorage
|
|
145
139
|
|
|
146
140
|
|
|
147
141
|
Examples
|
|
@@ -178,9 +172,9 @@ class AzureClient:
|
|
|
178
172
|
try:
|
|
179
173
|
if 200 <= _response.status_code < 300:
|
|
180
174
|
return typing.cast(
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
type_=
|
|
175
|
+
AzureBlobImportStorage,
|
|
176
|
+
construct_type(
|
|
177
|
+
type_=AzureBlobImportStorage, # type: ignore
|
|
184
178
|
object_=_response.json(),
|
|
185
179
|
),
|
|
186
180
|
)
|
|
@@ -189,123 +183,13 @@ class AzureClient:
|
|
|
189
183
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
190
184
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
191
185
|
|
|
192
|
-
def validate(
|
|
193
|
-
self,
|
|
194
|
-
*,
|
|
195
|
-
id: typing.Optional[int] = OMIT,
|
|
196
|
-
regex_filter: typing.Optional[str] = OMIT,
|
|
197
|
-
use_blob_urls: typing.Optional[bool] = OMIT,
|
|
198
|
-
presign: typing.Optional[bool] = OMIT,
|
|
199
|
-
presign_ttl: typing.Optional[int] = OMIT,
|
|
200
|
-
title: typing.Optional[str] = OMIT,
|
|
201
|
-
description: typing.Optional[str] = OMIT,
|
|
202
|
-
project: typing.Optional[int] = OMIT,
|
|
203
|
-
container: typing.Optional[str] = OMIT,
|
|
204
|
-
prefix: typing.Optional[str] = OMIT,
|
|
205
|
-
account_name: typing.Optional[str] = OMIT,
|
|
206
|
-
account_key: typing.Optional[str] = OMIT,
|
|
207
|
-
request_options: typing.Optional[RequestOptions] = None,
|
|
208
|
-
) -> None:
|
|
209
|
-
"""
|
|
210
|
-
|
|
211
|
-
Validate a specific Azure import storage connection. This is useful to ensure that the storage configuration settings are correct and operational before attempting to import data.
|
|
212
|
-
|
|
213
|
-
Parameters
|
|
214
|
-
----------
|
|
215
|
-
id : typing.Optional[int]
|
|
216
|
-
Storage ID. If set, storage with specified ID will be updated
|
|
217
|
-
|
|
218
|
-
regex_filter : typing.Optional[str]
|
|
219
|
-
Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
|
|
220
|
-
|
|
221
|
-
use_blob_urls : typing.Optional[bool]
|
|
222
|
-
Interpret objects as BLOBs and generate URLs. For example, if your bucket contains images, you can use this option to generate URLs for these images. If set to False, it will read the content of the file and load it into Label Studio.
|
|
223
|
-
|
|
224
|
-
presign : typing.Optional[bool]
|
|
225
|
-
Presign URLs for direct download
|
|
226
|
-
|
|
227
|
-
presign_ttl : typing.Optional[int]
|
|
228
|
-
Presign TTL in minutes
|
|
229
|
-
|
|
230
|
-
title : typing.Optional[str]
|
|
231
|
-
Storage title
|
|
232
|
-
|
|
233
|
-
description : typing.Optional[str]
|
|
234
|
-
Storage description
|
|
235
|
-
|
|
236
|
-
project : typing.Optional[int]
|
|
237
|
-
Project ID
|
|
238
|
-
|
|
239
|
-
container : typing.Optional[str]
|
|
240
|
-
Azure blob container
|
|
241
|
-
|
|
242
|
-
prefix : typing.Optional[str]
|
|
243
|
-
Azure blob prefix name
|
|
244
|
-
|
|
245
|
-
account_name : typing.Optional[str]
|
|
246
|
-
Azure Blob account name
|
|
247
|
-
|
|
248
|
-
account_key : typing.Optional[str]
|
|
249
|
-
Azure Blob account key
|
|
250
|
-
|
|
251
|
-
request_options : typing.Optional[RequestOptions]
|
|
252
|
-
Request-specific configuration.
|
|
253
|
-
|
|
254
|
-
Returns
|
|
255
|
-
-------
|
|
256
|
-
None
|
|
257
|
-
|
|
258
|
-
Examples
|
|
259
|
-
--------
|
|
260
|
-
from label_studio_sdk import LabelStudio
|
|
261
|
-
|
|
262
|
-
client = LabelStudio(
|
|
263
|
-
api_key="YOUR_API_KEY",
|
|
264
|
-
)
|
|
265
|
-
client.import_storage.azure.validate()
|
|
266
|
-
"""
|
|
267
|
-
_response = self._client_wrapper.httpx_client.request(
|
|
268
|
-
"api/storages/azure/validate",
|
|
269
|
-
method="POST",
|
|
270
|
-
json={
|
|
271
|
-
"id": id,
|
|
272
|
-
"regex_filter": regex_filter,
|
|
273
|
-
"use_blob_urls": use_blob_urls,
|
|
274
|
-
"presign": presign,
|
|
275
|
-
"presign_ttl": presign_ttl,
|
|
276
|
-
"title": title,
|
|
277
|
-
"description": description,
|
|
278
|
-
"project": project,
|
|
279
|
-
"container": container,
|
|
280
|
-
"prefix": prefix,
|
|
281
|
-
"account_name": account_name,
|
|
282
|
-
"account_key": account_key,
|
|
283
|
-
},
|
|
284
|
-
headers={
|
|
285
|
-
"content-type": "application/json",
|
|
286
|
-
},
|
|
287
|
-
request_options=request_options,
|
|
288
|
-
omit=OMIT,
|
|
289
|
-
)
|
|
290
|
-
try:
|
|
291
|
-
if 200 <= _response.status_code < 300:
|
|
292
|
-
return
|
|
293
|
-
_response_json = _response.json()
|
|
294
|
-
except JSONDecodeError:
|
|
295
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
296
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
297
|
-
|
|
298
186
|
def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> AzureBlobImportStorage:
|
|
299
187
|
"""
|
|
300
|
-
|
|
301
|
-
Get a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
|
|
302
|
-
|
|
303
|
-
For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
|
|
188
|
+
Get a specific Azure import storage connection.
|
|
304
189
|
|
|
305
190
|
Parameters
|
|
306
191
|
----------
|
|
307
192
|
id : int
|
|
308
|
-
A unique integer value identifying this azure blob import storage.
|
|
309
193
|
|
|
310
194
|
request_options : typing.Optional[RequestOptions]
|
|
311
195
|
Request-specific configuration.
|
|
@@ -335,7 +219,7 @@ class AzureClient:
|
|
|
335
219
|
if 200 <= _response.status_code < 300:
|
|
336
220
|
return typing.cast(
|
|
337
221
|
AzureBlobImportStorage,
|
|
338
|
-
|
|
222
|
+
construct_type(
|
|
339
223
|
type_=AzureBlobImportStorage, # type: ignore
|
|
340
224
|
object_=_response.json(),
|
|
341
225
|
),
|
|
@@ -347,17 +231,11 @@ class AzureClient:
|
|
|
347
231
|
|
|
348
232
|
def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
349
233
|
"""
|
|
350
|
-
|
|
351
|
-
Delete a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
|
|
352
|
-
|
|
353
|
-
Deleting a source storage connection does not affect tasks with synced data in Label Studio. The sync process is designed to import new or updated tasks from the connected storage into the project, but it does not track deletions of files from the storage. Therefore, if you remove the external storage connection, the tasks that were created from that storage will remain in the project.
|
|
354
|
-
|
|
355
|
-
If you want to remove the tasks that were synced from the external storage, you will need to delete them manually from within the Label Studio UI or use the [Delete tasks](../../tasks/delete-all-tasks) API.
|
|
234
|
+
Delete a specific Azure import storage connection.
|
|
356
235
|
|
|
357
236
|
Parameters
|
|
358
237
|
----------
|
|
359
238
|
id : int
|
|
360
|
-
A unique integer value identifying this azure blob import storage.
|
|
361
239
|
|
|
362
240
|
request_options : typing.Optional[RequestOptions]
|
|
363
241
|
Request-specific configuration.
|
|
@@ -406,17 +284,13 @@ class AzureClient:
|
|
|
406
284
|
account_name: typing.Optional[str] = OMIT,
|
|
407
285
|
account_key: typing.Optional[str] = OMIT,
|
|
408
286
|
request_options: typing.Optional[RequestOptions] = None,
|
|
409
|
-
) ->
|
|
287
|
+
) -> AzureBlobImportStorage:
|
|
410
288
|
"""
|
|
411
|
-
|
|
412
|
-
Update a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
|
|
413
|
-
|
|
414
|
-
For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
|
|
289
|
+
Update a specific Azure import storage connection.
|
|
415
290
|
|
|
416
291
|
Parameters
|
|
417
292
|
----------
|
|
418
293
|
id : int
|
|
419
|
-
A unique integer value identifying this azure blob import storage.
|
|
420
294
|
|
|
421
295
|
regex_filter : typing.Optional[str]
|
|
422
296
|
Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
|
|
@@ -456,7 +330,7 @@ class AzureClient:
|
|
|
456
330
|
|
|
457
331
|
Returns
|
|
458
332
|
-------
|
|
459
|
-
|
|
333
|
+
AzureBlobImportStorage
|
|
460
334
|
|
|
461
335
|
|
|
462
336
|
Examples
|
|
@@ -495,9 +369,9 @@ class AzureClient:
|
|
|
495
369
|
try:
|
|
496
370
|
if 200 <= _response.status_code < 300:
|
|
497
371
|
return typing.cast(
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
type_=
|
|
372
|
+
AzureBlobImportStorage,
|
|
373
|
+
construct_type(
|
|
374
|
+
type_=AzureBlobImportStorage, # type: ignore
|
|
501
375
|
object_=_response.json(),
|
|
502
376
|
),
|
|
503
377
|
)
|
|
@@ -508,12 +382,7 @@ class AzureClient:
|
|
|
508
382
|
|
|
509
383
|
def sync(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> AzureBlobImportStorage:
|
|
510
384
|
"""
|
|
511
|
-
|
|
512
|
-
Sync tasks from an Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
|
|
513
|
-
|
|
514
|
-
Sync operations with external containers only go one way. They either create tasks from objects in the container (source/import storage) or push annotations to the output container (export/target storage). Changing something on the Microsoft side doesn’t guarantee consistency in results.
|
|
515
|
-
|
|
516
|
-
<Note>Before proceeding, you should review [How sync operations work - Source storage](https://labelstud.io/guide/storage#Source-storage) to ensure that your data remains secure and private.</Note>
|
|
385
|
+
Sync tasks from an Azure import storage connection.
|
|
517
386
|
|
|
518
387
|
Parameters
|
|
519
388
|
----------
|
|
@@ -548,7 +417,7 @@ class AzureClient:
|
|
|
548
417
|
if 200 <= _response.status_code < 300:
|
|
549
418
|
return typing.cast(
|
|
550
419
|
AzureBlobImportStorage,
|
|
551
|
-
|
|
420
|
+
construct_type(
|
|
552
421
|
type_=AzureBlobImportStorage, # type: ignore
|
|
553
422
|
object_=_response.json(),
|
|
554
423
|
),
|
|
@@ -558,77 +427,10 @@ class AzureClient:
|
|
|
558
427
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
559
428
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
560
429
|
|
|
561
|
-
|
|
562
|
-
class AsyncAzureClient:
|
|
563
|
-
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
564
|
-
self._client_wrapper = client_wrapper
|
|
565
|
-
|
|
566
|
-
async def list(
|
|
567
|
-
self, *, project: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
|
|
568
|
-
) -> typing.List[AzureBlobImportStorage]:
|
|
569
|
-
"""
|
|
570
|
-
|
|
571
|
-
You can connect your Microsoft Azure Blob storage container to Label Studio as a source storage or target storage. Use this API request to get a list of all Azure import (source) storage connections for a specific project.
|
|
572
|
-
|
|
573
|
-
The project ID can be found in the URL when viewing the project in Label Studio, or you can retrieve all project IDs using [List all projects](../projects/list).
|
|
574
|
-
|
|
575
|
-
For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
|
|
576
|
-
|
|
577
|
-
Parameters
|
|
578
|
-
----------
|
|
579
|
-
project : typing.Optional[int]
|
|
580
|
-
Project ID
|
|
581
|
-
|
|
582
|
-
request_options : typing.Optional[RequestOptions]
|
|
583
|
-
Request-specific configuration.
|
|
584
|
-
|
|
585
|
-
Returns
|
|
586
|
-
-------
|
|
587
|
-
typing.List[AzureBlobImportStorage]
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
Examples
|
|
591
|
-
--------
|
|
592
|
-
import asyncio
|
|
593
|
-
|
|
594
|
-
from label_studio_sdk import AsyncLabelStudio
|
|
595
|
-
|
|
596
|
-
client = AsyncLabelStudio(
|
|
597
|
-
api_key="YOUR_API_KEY",
|
|
598
|
-
)
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
async def main() -> None:
|
|
602
|
-
await client.import_storage.azure.list()
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
asyncio.run(main())
|
|
606
|
-
"""
|
|
607
|
-
_response = await self._client_wrapper.httpx_client.request(
|
|
608
|
-
"api/storages/azure/",
|
|
609
|
-
method="GET",
|
|
610
|
-
params={
|
|
611
|
-
"project": project,
|
|
612
|
-
},
|
|
613
|
-
request_options=request_options,
|
|
614
|
-
)
|
|
615
|
-
try:
|
|
616
|
-
if 200 <= _response.status_code < 300:
|
|
617
|
-
return typing.cast(
|
|
618
|
-
typing.List[AzureBlobImportStorage],
|
|
619
|
-
parse_obj_as(
|
|
620
|
-
type_=typing.List[AzureBlobImportStorage], # type: ignore
|
|
621
|
-
object_=_response.json(),
|
|
622
|
-
),
|
|
623
|
-
)
|
|
624
|
-
_response_json = _response.json()
|
|
625
|
-
except JSONDecodeError:
|
|
626
|
-
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
627
|
-
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
628
|
-
|
|
629
|
-
async def create(
|
|
430
|
+
def validate(
|
|
630
431
|
self,
|
|
631
432
|
*,
|
|
433
|
+
id: typing.Optional[int] = OMIT,
|
|
632
434
|
regex_filter: typing.Optional[str] = OMIT,
|
|
633
435
|
use_blob_urls: typing.Optional[bool] = OMIT,
|
|
634
436
|
presign: typing.Optional[bool] = OMIT,
|
|
@@ -641,19 +443,15 @@ class AsyncAzureClient:
|
|
|
641
443
|
account_name: typing.Optional[str] = OMIT,
|
|
642
444
|
account_key: typing.Optional[str] = OMIT,
|
|
643
445
|
request_options: typing.Optional[RequestOptions] = None,
|
|
644
|
-
) ->
|
|
446
|
+
) -> None:
|
|
645
447
|
"""
|
|
646
|
-
|
|
647
|
-
Create a new source storage connection to Microsoft Azure Blob storage.
|
|
648
|
-
|
|
649
|
-
For information about the required fields and prerequisites, see [Microsoft Azure Blob storage](https://labelstud.io/guide/storage#Microsoft-Azure-Blob-storage) in the Label Studio documentation.
|
|
650
|
-
|
|
651
|
-
<Info>Ensure you configure CORS before adding cloud storage. This ensures you will be able to see the content of the data rather than just a link.</Info>
|
|
652
|
-
|
|
653
|
-
<Tip>After you add the storage, you should validate the connection before attempting to sync your data. Your data will not be imported until you [sync your connection](sync).</Tip>
|
|
448
|
+
Validate a specific Azure import storage connection.
|
|
654
449
|
|
|
655
450
|
Parameters
|
|
656
451
|
----------
|
|
452
|
+
id : typing.Optional[int]
|
|
453
|
+
Storage ID. If set, storage with specified ID will be updated
|
|
454
|
+
|
|
657
455
|
regex_filter : typing.Optional[str]
|
|
658
456
|
Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
|
|
659
457
|
|
|
@@ -692,30 +490,22 @@ class AsyncAzureClient:
|
|
|
692
490
|
|
|
693
491
|
Returns
|
|
694
492
|
-------
|
|
695
|
-
|
|
696
|
-
|
|
493
|
+
None
|
|
697
494
|
|
|
698
495
|
Examples
|
|
699
496
|
--------
|
|
700
|
-
import
|
|
701
|
-
|
|
702
|
-
from label_studio_sdk import AsyncLabelStudio
|
|
497
|
+
from label_studio_sdk import LabelStudio
|
|
703
498
|
|
|
704
|
-
client =
|
|
499
|
+
client = LabelStudio(
|
|
705
500
|
api_key="YOUR_API_KEY",
|
|
706
501
|
)
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
async def main() -> None:
|
|
710
|
-
await client.import_storage.azure.create()
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
asyncio.run(main())
|
|
502
|
+
client.import_storage.azure.validate()
|
|
714
503
|
"""
|
|
715
|
-
_response =
|
|
716
|
-
"api/storages/azure/",
|
|
504
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
505
|
+
"api/storages/azure/validate",
|
|
717
506
|
method="POST",
|
|
718
507
|
json={
|
|
508
|
+
"id": id,
|
|
719
509
|
"regex_filter": regex_filter,
|
|
720
510
|
"use_blob_urls": use_blob_urls,
|
|
721
511
|
"presign": presign,
|
|
@@ -734,12 +524,77 @@ class AsyncAzureClient:
|
|
|
734
524
|
request_options=request_options,
|
|
735
525
|
omit=OMIT,
|
|
736
526
|
)
|
|
527
|
+
try:
|
|
528
|
+
if 200 <= _response.status_code < 300:
|
|
529
|
+
return
|
|
530
|
+
_response_json = _response.json()
|
|
531
|
+
except JSONDecodeError:
|
|
532
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
533
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
class AsyncAzureClient:
|
|
537
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
538
|
+
self._client_wrapper = client_wrapper
|
|
539
|
+
|
|
540
|
+
async def list(
|
|
541
|
+
self,
|
|
542
|
+
*,
|
|
543
|
+
ordering: typing.Optional[str] = None,
|
|
544
|
+
project: typing.Optional[int] = None,
|
|
545
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
546
|
+
) -> typing.List[AzureBlobImportStorage]:
|
|
547
|
+
"""
|
|
548
|
+
Get list of all Azure import storage connections.
|
|
549
|
+
|
|
550
|
+
Parameters
|
|
551
|
+
----------
|
|
552
|
+
ordering : typing.Optional[str]
|
|
553
|
+
Which field to use when ordering the results.
|
|
554
|
+
|
|
555
|
+
project : typing.Optional[int]
|
|
556
|
+
Project ID
|
|
557
|
+
|
|
558
|
+
request_options : typing.Optional[RequestOptions]
|
|
559
|
+
Request-specific configuration.
|
|
560
|
+
|
|
561
|
+
Returns
|
|
562
|
+
-------
|
|
563
|
+
typing.List[AzureBlobImportStorage]
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
Examples
|
|
567
|
+
--------
|
|
568
|
+
import asyncio
|
|
569
|
+
|
|
570
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
571
|
+
|
|
572
|
+
client = AsyncLabelStudio(
|
|
573
|
+
api_key="YOUR_API_KEY",
|
|
574
|
+
)
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
async def main() -> None:
|
|
578
|
+
await client.import_storage.azure.list()
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
asyncio.run(main())
|
|
582
|
+
"""
|
|
583
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
584
|
+
"api/storages/azure/",
|
|
585
|
+
method="GET",
|
|
586
|
+
params={
|
|
587
|
+
"ordering": ordering,
|
|
588
|
+
"project": project,
|
|
589
|
+
},
|
|
590
|
+
request_options=request_options,
|
|
591
|
+
)
|
|
737
592
|
try:
|
|
738
593
|
if 200 <= _response.status_code < 300:
|
|
739
594
|
return typing.cast(
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
type_=
|
|
595
|
+
typing.List[AzureBlobImportStorage],
|
|
596
|
+
construct_type(
|
|
597
|
+
type_=typing.List[AzureBlobImportStorage], # type: ignore
|
|
743
598
|
object_=_response.json(),
|
|
744
599
|
),
|
|
745
600
|
)
|
|
@@ -748,10 +603,9 @@ class AsyncAzureClient:
|
|
|
748
603
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
749
604
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
750
605
|
|
|
751
|
-
async def
|
|
606
|
+
async def create(
|
|
752
607
|
self,
|
|
753
608
|
*,
|
|
754
|
-
id: typing.Optional[int] = OMIT,
|
|
755
609
|
regex_filter: typing.Optional[str] = OMIT,
|
|
756
610
|
use_blob_urls: typing.Optional[bool] = OMIT,
|
|
757
611
|
presign: typing.Optional[bool] = OMIT,
|
|
@@ -764,16 +618,12 @@ class AsyncAzureClient:
|
|
|
764
618
|
account_name: typing.Optional[str] = OMIT,
|
|
765
619
|
account_key: typing.Optional[str] = OMIT,
|
|
766
620
|
request_options: typing.Optional[RequestOptions] = None,
|
|
767
|
-
) ->
|
|
621
|
+
) -> AzureBlobImportStorage:
|
|
768
622
|
"""
|
|
769
|
-
|
|
770
|
-
Validate a specific Azure import storage connection. This is useful to ensure that the storage configuration settings are correct and operational before attempting to import data.
|
|
623
|
+
Create new Azure import storage
|
|
771
624
|
|
|
772
625
|
Parameters
|
|
773
626
|
----------
|
|
774
|
-
id : typing.Optional[int]
|
|
775
|
-
Storage ID. If set, storage with specified ID will be updated
|
|
776
|
-
|
|
777
627
|
regex_filter : typing.Optional[str]
|
|
778
628
|
Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
|
|
779
629
|
|
|
@@ -812,7 +662,8 @@ class AsyncAzureClient:
|
|
|
812
662
|
|
|
813
663
|
Returns
|
|
814
664
|
-------
|
|
815
|
-
|
|
665
|
+
AzureBlobImportStorage
|
|
666
|
+
|
|
816
667
|
|
|
817
668
|
Examples
|
|
818
669
|
--------
|
|
@@ -826,16 +677,15 @@ class AsyncAzureClient:
|
|
|
826
677
|
|
|
827
678
|
|
|
828
679
|
async def main() -> None:
|
|
829
|
-
await client.import_storage.azure.
|
|
680
|
+
await client.import_storage.azure.create()
|
|
830
681
|
|
|
831
682
|
|
|
832
683
|
asyncio.run(main())
|
|
833
684
|
"""
|
|
834
685
|
_response = await self._client_wrapper.httpx_client.request(
|
|
835
|
-
"api/storages/azure/
|
|
686
|
+
"api/storages/azure/",
|
|
836
687
|
method="POST",
|
|
837
688
|
json={
|
|
838
|
-
"id": id,
|
|
839
689
|
"regex_filter": regex_filter,
|
|
840
690
|
"use_blob_urls": use_blob_urls,
|
|
841
691
|
"presign": presign,
|
|
@@ -856,7 +706,13 @@ class AsyncAzureClient:
|
|
|
856
706
|
)
|
|
857
707
|
try:
|
|
858
708
|
if 200 <= _response.status_code < 300:
|
|
859
|
-
return
|
|
709
|
+
return typing.cast(
|
|
710
|
+
AzureBlobImportStorage,
|
|
711
|
+
construct_type(
|
|
712
|
+
type_=AzureBlobImportStorage, # type: ignore
|
|
713
|
+
object_=_response.json(),
|
|
714
|
+
),
|
|
715
|
+
)
|
|
860
716
|
_response_json = _response.json()
|
|
861
717
|
except JSONDecodeError:
|
|
862
718
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
@@ -864,15 +720,11 @@ class AsyncAzureClient:
|
|
|
864
720
|
|
|
865
721
|
async def get(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> AzureBlobImportStorage:
|
|
866
722
|
"""
|
|
867
|
-
|
|
868
|
-
Get a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
|
|
869
|
-
|
|
870
|
-
For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
|
|
723
|
+
Get a specific Azure import storage connection.
|
|
871
724
|
|
|
872
725
|
Parameters
|
|
873
726
|
----------
|
|
874
727
|
id : int
|
|
875
|
-
A unique integer value identifying this azure blob import storage.
|
|
876
728
|
|
|
877
729
|
request_options : typing.Optional[RequestOptions]
|
|
878
730
|
Request-specific configuration.
|
|
@@ -910,7 +762,7 @@ class AsyncAzureClient:
|
|
|
910
762
|
if 200 <= _response.status_code < 300:
|
|
911
763
|
return typing.cast(
|
|
912
764
|
AzureBlobImportStorage,
|
|
913
|
-
|
|
765
|
+
construct_type(
|
|
914
766
|
type_=AzureBlobImportStorage, # type: ignore
|
|
915
767
|
object_=_response.json(),
|
|
916
768
|
),
|
|
@@ -922,17 +774,11 @@ class AsyncAzureClient:
|
|
|
922
774
|
|
|
923
775
|
async def delete(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> None:
|
|
924
776
|
"""
|
|
925
|
-
|
|
926
|
-
Delete a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
|
|
927
|
-
|
|
928
|
-
Deleting a source storage connection does not affect tasks with synced data in Label Studio. The sync process is designed to import new or updated tasks from the connected storage into the project, but it does not track deletions of files from the storage. Therefore, if you remove the external storage connection, the tasks that were created from that storage will remain in the project.
|
|
929
|
-
|
|
930
|
-
If you want to remove the tasks that were synced from the external storage, you will need to delete them manually from within the Label Studio UI or use the [Delete tasks](../../tasks/delete-all-tasks) API.
|
|
777
|
+
Delete a specific Azure import storage connection.
|
|
931
778
|
|
|
932
779
|
Parameters
|
|
933
780
|
----------
|
|
934
781
|
id : int
|
|
935
|
-
A unique integer value identifying this azure blob import storage.
|
|
936
782
|
|
|
937
783
|
request_options : typing.Optional[RequestOptions]
|
|
938
784
|
Request-specific configuration.
|
|
@@ -989,17 +835,13 @@ class AsyncAzureClient:
|
|
|
989
835
|
account_name: typing.Optional[str] = OMIT,
|
|
990
836
|
account_key: typing.Optional[str] = OMIT,
|
|
991
837
|
request_options: typing.Optional[RequestOptions] = None,
|
|
992
|
-
) ->
|
|
838
|
+
) -> AzureBlobImportStorage:
|
|
993
839
|
"""
|
|
994
|
-
|
|
995
|
-
Update a specific Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
|
|
996
|
-
|
|
997
|
-
For more information about working with external storage, see [Sync data from external storage](https://labelstud.io/guide/storage).
|
|
840
|
+
Update a specific Azure import storage connection.
|
|
998
841
|
|
|
999
842
|
Parameters
|
|
1000
843
|
----------
|
|
1001
844
|
id : int
|
|
1002
|
-
A unique integer value identifying this azure blob import storage.
|
|
1003
845
|
|
|
1004
846
|
regex_filter : typing.Optional[str]
|
|
1005
847
|
Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
|
|
@@ -1039,7 +881,7 @@ class AsyncAzureClient:
|
|
|
1039
881
|
|
|
1040
882
|
Returns
|
|
1041
883
|
-------
|
|
1042
|
-
|
|
884
|
+
AzureBlobImportStorage
|
|
1043
885
|
|
|
1044
886
|
|
|
1045
887
|
Examples
|
|
@@ -1086,9 +928,9 @@ class AsyncAzureClient:
|
|
|
1086
928
|
try:
|
|
1087
929
|
if 200 <= _response.status_code < 300:
|
|
1088
930
|
return typing.cast(
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
type_=
|
|
931
|
+
AzureBlobImportStorage,
|
|
932
|
+
construct_type(
|
|
933
|
+
type_=AzureBlobImportStorage, # type: ignore
|
|
1092
934
|
object_=_response.json(),
|
|
1093
935
|
),
|
|
1094
936
|
)
|
|
@@ -1099,12 +941,7 @@ class AsyncAzureClient:
|
|
|
1099
941
|
|
|
1100
942
|
async def sync(self, id: int, *, request_options: typing.Optional[RequestOptions] = None) -> AzureBlobImportStorage:
|
|
1101
943
|
"""
|
|
1102
|
-
|
|
1103
|
-
Sync tasks from an Azure import storage connection. You will need to provide the import storage ID. You can find this using [List import storages](list).
|
|
1104
|
-
|
|
1105
|
-
Sync operations with external containers only go one way. They either create tasks from objects in the container (source/import storage) or push annotations to the output container (export/target storage). Changing something on the Microsoft side doesn’t guarantee consistency in results.
|
|
1106
|
-
|
|
1107
|
-
<Note>Before proceeding, you should review [How sync operations work - Source storage](https://labelstud.io/guide/storage#Source-storage) to ensure that your data remains secure and private.</Note>
|
|
944
|
+
Sync tasks from an Azure import storage connection.
|
|
1108
945
|
|
|
1109
946
|
Parameters
|
|
1110
947
|
----------
|
|
@@ -1147,7 +984,7 @@ class AsyncAzureClient:
|
|
|
1147
984
|
if 200 <= _response.status_code < 300:
|
|
1148
985
|
return typing.cast(
|
|
1149
986
|
AzureBlobImportStorage,
|
|
1150
|
-
|
|
987
|
+
construct_type(
|
|
1151
988
|
type_=AzureBlobImportStorage, # type: ignore
|
|
1152
989
|
object_=_response.json(),
|
|
1153
990
|
),
|
|
@@ -1156,3 +993,116 @@ class AsyncAzureClient:
|
|
|
1156
993
|
except JSONDecodeError:
|
|
1157
994
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
1158
995
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
996
|
+
|
|
997
|
+
async def validate(
|
|
998
|
+
self,
|
|
999
|
+
*,
|
|
1000
|
+
id: typing.Optional[int] = OMIT,
|
|
1001
|
+
regex_filter: typing.Optional[str] = OMIT,
|
|
1002
|
+
use_blob_urls: typing.Optional[bool] = OMIT,
|
|
1003
|
+
presign: typing.Optional[bool] = OMIT,
|
|
1004
|
+
presign_ttl: typing.Optional[int] = OMIT,
|
|
1005
|
+
title: typing.Optional[str] = OMIT,
|
|
1006
|
+
description: typing.Optional[str] = OMIT,
|
|
1007
|
+
project: typing.Optional[int] = OMIT,
|
|
1008
|
+
container: typing.Optional[str] = OMIT,
|
|
1009
|
+
prefix: typing.Optional[str] = OMIT,
|
|
1010
|
+
account_name: typing.Optional[str] = OMIT,
|
|
1011
|
+
account_key: typing.Optional[str] = OMIT,
|
|
1012
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1013
|
+
) -> None:
|
|
1014
|
+
"""
|
|
1015
|
+
Validate a specific Azure import storage connection.
|
|
1016
|
+
|
|
1017
|
+
Parameters
|
|
1018
|
+
----------
|
|
1019
|
+
id : typing.Optional[int]
|
|
1020
|
+
Storage ID. If set, storage with specified ID will be updated
|
|
1021
|
+
|
|
1022
|
+
regex_filter : typing.Optional[str]
|
|
1023
|
+
Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
|
|
1024
|
+
|
|
1025
|
+
use_blob_urls : typing.Optional[bool]
|
|
1026
|
+
Interpret objects as BLOBs and generate URLs. For example, if your bucket contains images, you can use this option to generate URLs for these images. If set to False, it will read the content of the file and load it into Label Studio.
|
|
1027
|
+
|
|
1028
|
+
presign : typing.Optional[bool]
|
|
1029
|
+
Presign URLs for direct download
|
|
1030
|
+
|
|
1031
|
+
presign_ttl : typing.Optional[int]
|
|
1032
|
+
Presign TTL in minutes
|
|
1033
|
+
|
|
1034
|
+
title : typing.Optional[str]
|
|
1035
|
+
Storage title
|
|
1036
|
+
|
|
1037
|
+
description : typing.Optional[str]
|
|
1038
|
+
Storage description
|
|
1039
|
+
|
|
1040
|
+
project : typing.Optional[int]
|
|
1041
|
+
Project ID
|
|
1042
|
+
|
|
1043
|
+
container : typing.Optional[str]
|
|
1044
|
+
Azure blob container
|
|
1045
|
+
|
|
1046
|
+
prefix : typing.Optional[str]
|
|
1047
|
+
Azure blob prefix name
|
|
1048
|
+
|
|
1049
|
+
account_name : typing.Optional[str]
|
|
1050
|
+
Azure Blob account name
|
|
1051
|
+
|
|
1052
|
+
account_key : typing.Optional[str]
|
|
1053
|
+
Azure Blob account key
|
|
1054
|
+
|
|
1055
|
+
request_options : typing.Optional[RequestOptions]
|
|
1056
|
+
Request-specific configuration.
|
|
1057
|
+
|
|
1058
|
+
Returns
|
|
1059
|
+
-------
|
|
1060
|
+
None
|
|
1061
|
+
|
|
1062
|
+
Examples
|
|
1063
|
+
--------
|
|
1064
|
+
import asyncio
|
|
1065
|
+
|
|
1066
|
+
from label_studio_sdk import AsyncLabelStudio
|
|
1067
|
+
|
|
1068
|
+
client = AsyncLabelStudio(
|
|
1069
|
+
api_key="YOUR_API_KEY",
|
|
1070
|
+
)
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
async def main() -> None:
|
|
1074
|
+
await client.import_storage.azure.validate()
|
|
1075
|
+
|
|
1076
|
+
|
|
1077
|
+
asyncio.run(main())
|
|
1078
|
+
"""
|
|
1079
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1080
|
+
"api/storages/azure/validate",
|
|
1081
|
+
method="POST",
|
|
1082
|
+
json={
|
|
1083
|
+
"id": id,
|
|
1084
|
+
"regex_filter": regex_filter,
|
|
1085
|
+
"use_blob_urls": use_blob_urls,
|
|
1086
|
+
"presign": presign,
|
|
1087
|
+
"presign_ttl": presign_ttl,
|
|
1088
|
+
"title": title,
|
|
1089
|
+
"description": description,
|
|
1090
|
+
"project": project,
|
|
1091
|
+
"container": container,
|
|
1092
|
+
"prefix": prefix,
|
|
1093
|
+
"account_name": account_name,
|
|
1094
|
+
"account_key": account_key,
|
|
1095
|
+
},
|
|
1096
|
+
headers={
|
|
1097
|
+
"content-type": "application/json",
|
|
1098
|
+
},
|
|
1099
|
+
request_options=request_options,
|
|
1100
|
+
omit=OMIT,
|
|
1101
|
+
)
|
|
1102
|
+
try:
|
|
1103
|
+
if 200 <= _response.status_code < 300:
|
|
1104
|
+
return
|
|
1105
|
+
_response_json = _response.json()
|
|
1106
|
+
except JSONDecodeError:
|
|
1107
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
1108
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|