label-studio-sdk 1.0.8__py3-none-any.whl → 1.0.11__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.

Files changed (218) hide show
  1. label_studio_sdk/__init__.py +37 -8
  2. label_studio_sdk/_extensions/label_studio_tools/core/utils/io.py +16 -4
  3. label_studio_sdk/_extensions/label_studio_tools/core/utils/json_schema.py +5 -0
  4. label_studio_sdk/_extensions/pager_ext.py +8 -0
  5. label_studio_sdk/actions/client.py +91 -40
  6. label_studio_sdk/actions/types/actions_create_request_filters.py +14 -24
  7. label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +16 -26
  8. label_studio_sdk/actions/types/actions_create_request_filters_items_item_value.py +3 -1
  9. label_studio_sdk/actions/types/actions_create_request_selected_items.py +1 -2
  10. label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +15 -25
  11. label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +15 -25
  12. label_studio_sdk/annotations/__init__.py +2 -2
  13. label_studio_sdk/annotations/client.py +278 -104
  14. label_studio_sdk/annotations/types/__init__.py +2 -1
  15. label_studio_sdk/annotations/types/annotations_create_bulk_request_selected_items.py +34 -0
  16. label_studio_sdk/annotations/types/annotations_create_bulk_response_item.py +11 -21
  17. label_studio_sdk/base_client.py +54 -27
  18. label_studio_sdk/client.py +1 -0
  19. label_studio_sdk/comments/client.py +190 -44
  20. label_studio_sdk/converter/converter.py +56 -13
  21. label_studio_sdk/converter/imports/yolo.py +1 -1
  22. label_studio_sdk/converter/utils.py +3 -2
  23. label_studio_sdk/core/__init__.py +21 -4
  24. label_studio_sdk/core/client_wrapper.py +37 -19
  25. label_studio_sdk/core/file.py +37 -8
  26. label_studio_sdk/core/http_client.py +52 -28
  27. label_studio_sdk/core/jsonable_encoder.py +33 -31
  28. label_studio_sdk/core/pagination.py +5 -4
  29. label_studio_sdk/core/pydantic_utilities.py +272 -4
  30. label_studio_sdk/core/query_encoder.py +38 -13
  31. label_studio_sdk/core/request_options.py +3 -0
  32. label_studio_sdk/core/serialization.py +272 -0
  33. label_studio_sdk/errors/__init__.py +3 -1
  34. label_studio_sdk/errors/bad_request_error.py +2 -3
  35. label_studio_sdk/errors/not_found_error.py +9 -0
  36. label_studio_sdk/errors/unauthorized_error.py +9 -0
  37. label_studio_sdk/export_storage/azure/client.py +228 -58
  38. label_studio_sdk/export_storage/azure/types/azure_create_response.py +19 -29
  39. label_studio_sdk/export_storage/azure/types/azure_update_response.py +19 -29
  40. label_studio_sdk/export_storage/client.py +48 -18
  41. label_studio_sdk/export_storage/gcs/client.py +228 -58
  42. label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +19 -29
  43. label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +19 -29
  44. label_studio_sdk/export_storage/local/client.py +222 -56
  45. label_studio_sdk/export_storage/local/types/local_create_response.py +17 -27
  46. label_studio_sdk/export_storage/local/types/local_update_response.py +17 -27
  47. label_studio_sdk/export_storage/redis/client.py +228 -58
  48. label_studio_sdk/export_storage/redis/types/redis_create_response.py +20 -30
  49. label_studio_sdk/export_storage/redis/types/redis_update_response.py +20 -30
  50. label_studio_sdk/export_storage/s3/client.py +228 -58
  51. label_studio_sdk/export_storage/s3/types/s3create_response.py +27 -35
  52. label_studio_sdk/export_storage/s3/types/s3update_response.py +27 -35
  53. label_studio_sdk/export_storage/s3s/client.py +187 -43
  54. label_studio_sdk/export_storage/types/export_storage_list_types_response_item.py +11 -21
  55. label_studio_sdk/files/client.py +172 -56
  56. label_studio_sdk/import_storage/azure/client.py +223 -53
  57. label_studio_sdk/import_storage/azure/types/azure_create_response.py +22 -32
  58. label_studio_sdk/import_storage/azure/types/azure_update_response.py +22 -32
  59. label_studio_sdk/import_storage/client.py +48 -18
  60. label_studio_sdk/import_storage/gcs/client.py +223 -53
  61. label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +22 -32
  62. label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +22 -32
  63. label_studio_sdk/import_storage/local/client.py +223 -53
  64. label_studio_sdk/import_storage/local/types/local_create_response.py +17 -27
  65. label_studio_sdk/import_storage/local/types/local_update_response.py +17 -27
  66. label_studio_sdk/import_storage/redis/client.py +223 -53
  67. label_studio_sdk/import_storage/redis/types/redis_create_response.py +20 -30
  68. label_studio_sdk/import_storage/redis/types/redis_update_response.py +20 -30
  69. label_studio_sdk/import_storage/s3/client.py +223 -53
  70. label_studio_sdk/import_storage/s3/types/s3create_response.py +31 -39
  71. label_studio_sdk/import_storage/s3/types/s3update_response.py +31 -39
  72. label_studio_sdk/import_storage/s3s/client.py +222 -52
  73. label_studio_sdk/import_storage/types/import_storage_list_types_response_item.py +11 -21
  74. label_studio_sdk/jwt_settings/__init__.py +2 -0
  75. label_studio_sdk/jwt_settings/client.py +259 -0
  76. label_studio_sdk/label_interface/control_tags.py +16 -3
  77. label_studio_sdk/label_interface/interface.py +80 -1
  78. label_studio_sdk/label_interface/object_tags.py +2 -2
  79. label_studio_sdk/ml/client.py +280 -78
  80. label_studio_sdk/ml/types/ml_create_response.py +21 -31
  81. label_studio_sdk/ml/types/ml_update_response.py +21 -31
  82. label_studio_sdk/model_providers/client.py +173 -56
  83. label_studio_sdk/predictions/client.py +247 -101
  84. label_studio_sdk/projects/__init__.py +5 -1
  85. label_studio_sdk/projects/client.py +313 -115
  86. label_studio_sdk/projects/client_ext.py +16 -0
  87. label_studio_sdk/projects/exports/__init__.py +3 -0
  88. label_studio_sdk/projects/exports/client.py +447 -296
  89. label_studio_sdk/projects/exports/client_ext.py +200 -0
  90. label_studio_sdk/projects/exports/types/__init__.py +6 -0
  91. label_studio_sdk/projects/exports/types/exports_convert_response.py +24 -0
  92. label_studio_sdk/projects/exports/types/exports_list_formats_response_item.py +44 -0
  93. label_studio_sdk/projects/pauses/__init__.py +2 -0
  94. label_studio_sdk/projects/pauses/client.py +704 -0
  95. label_studio_sdk/projects/types/projects_create_response.py +29 -34
  96. label_studio_sdk/projects/types/projects_import_tasks_response.py +19 -29
  97. label_studio_sdk/projects/types/projects_list_response.py +11 -21
  98. label_studio_sdk/projects/types/projects_update_response.py +34 -34
  99. label_studio_sdk/prompts/client.py +309 -92
  100. label_studio_sdk/prompts/indicators/client.py +67 -23
  101. label_studio_sdk/prompts/runs/client.py +95 -40
  102. label_studio_sdk/prompts/types/prompts_batch_failed_predictions_request_failed_predictions_item.py +14 -24
  103. label_studio_sdk/prompts/types/prompts_batch_failed_predictions_response.py +11 -21
  104. label_studio_sdk/prompts/types/prompts_batch_predictions_request_results_item.py +26 -29
  105. label_studio_sdk/prompts/types/prompts_batch_predictions_response.py +11 -21
  106. label_studio_sdk/prompts/versions/client.py +277 -88
  107. label_studio_sdk/tasks/client.py +263 -90
  108. label_studio_sdk/tasks/types/tasks_list_response.py +15 -25
  109. label_studio_sdk/tokens/__init__.py +2 -0
  110. label_studio_sdk/tokens/client.py +470 -0
  111. label_studio_sdk/tokens/client_ext.py +94 -0
  112. label_studio_sdk/types/__init__.py +20 -6
  113. label_studio_sdk/types/access_token_response.py +22 -0
  114. label_studio_sdk/types/annotation.py +29 -38
  115. label_studio_sdk/types/annotation_filter_options.py +14 -24
  116. label_studio_sdk/types/annotations_dm_field.py +30 -39
  117. label_studio_sdk/types/api_token_response.py +32 -0
  118. label_studio_sdk/types/azure_blob_export_storage.py +28 -37
  119. label_studio_sdk/types/azure_blob_import_storage.py +28 -37
  120. label_studio_sdk/types/base_task.py +30 -39
  121. label_studio_sdk/types/base_task_updated_by.py +3 -1
  122. label_studio_sdk/types/base_user.py +14 -21
  123. label_studio_sdk/types/comment.py +12 -21
  124. label_studio_sdk/types/comment_created_by.py +1 -1
  125. label_studio_sdk/types/converted_format.py +12 -22
  126. label_studio_sdk/types/data_manager_task_serializer.py +31 -40
  127. label_studio_sdk/types/data_manager_task_serializer_annotators_item.py +1 -1
  128. label_studio_sdk/types/data_manager_task_serializer_drafts_item.py +13 -22
  129. label_studio_sdk/types/data_manager_task_serializer_predictions_item.py +15 -24
  130. label_studio_sdk/types/export.py +17 -26
  131. label_studio_sdk/types/export_format.py +25 -0
  132. label_studio_sdk/types/export_snapshot.py +45 -0
  133. label_studio_sdk/types/export_snapshot_status.py +5 -0
  134. label_studio_sdk/types/file_upload.py +11 -21
  135. label_studio_sdk/types/filter.py +16 -26
  136. label_studio_sdk/types/filter_group.py +12 -22
  137. label_studio_sdk/types/gcs_export_storage.py +28 -37
  138. label_studio_sdk/types/gcs_import_storage.py +28 -37
  139. label_studio_sdk/types/inference_run.py +14 -23
  140. label_studio_sdk/types/inference_run_cost_estimate.py +17 -27
  141. label_studio_sdk/types/inference_run_created_by.py +1 -1
  142. label_studio_sdk/types/inference_run_organization.py +1 -1
  143. label_studio_sdk/types/jwt_settings_response.py +32 -0
  144. label_studio_sdk/types/key_indicator_value.py +12 -22
  145. label_studio_sdk/types/key_indicators.py +0 -1
  146. label_studio_sdk/types/key_indicators_item.py +15 -25
  147. label_studio_sdk/types/key_indicators_item_additional_kpis_item.py +13 -23
  148. label_studio_sdk/types/key_indicators_item_extra_kpis_item.py +13 -23
  149. label_studio_sdk/types/local_files_export_storage.py +25 -34
  150. label_studio_sdk/types/local_files_import_storage.py +24 -33
  151. label_studio_sdk/types/ml_backend.py +23 -32
  152. label_studio_sdk/types/model_provider_connection.py +22 -31
  153. label_studio_sdk/types/model_provider_connection_created_by.py +1 -1
  154. label_studio_sdk/types/model_provider_connection_organization.py +1 -1
  155. label_studio_sdk/types/model_provider_connection_provider.py +3 -1
  156. label_studio_sdk/types/pause.py +34 -0
  157. label_studio_sdk/types/pause_paused_by.py +5 -0
  158. label_studio_sdk/types/prediction.py +21 -30
  159. label_studio_sdk/types/project.py +58 -55
  160. label_studio_sdk/types/project_import.py +21 -30
  161. label_studio_sdk/types/project_label_config.py +12 -22
  162. label_studio_sdk/types/prompt.py +24 -32
  163. label_studio_sdk/types/prompt_associated_projects_item.py +6 -0
  164. label_studio_sdk/types/prompt_associated_projects_item_id.py +20 -0
  165. label_studio_sdk/types/prompt_created_by.py +1 -1
  166. label_studio_sdk/types/prompt_organization.py +1 -1
  167. label_studio_sdk/types/prompt_version.py +13 -22
  168. label_studio_sdk/types/prompt_version_created_by.py +1 -1
  169. label_studio_sdk/types/prompt_version_organization.py +1 -1
  170. label_studio_sdk/types/prompt_version_provider.py +3 -1
  171. label_studio_sdk/types/redis_export_storage.py +29 -38
  172. label_studio_sdk/types/redis_import_storage.py +28 -37
  173. label_studio_sdk/types/refined_prompt_response.py +19 -29
  174. label_studio_sdk/types/s3export_storage.py +36 -43
  175. label_studio_sdk/types/s3import_storage.py +37 -44
  176. label_studio_sdk/types/s3s_export_storage.py +26 -33
  177. label_studio_sdk/types/s3s_import_storage.py +35 -42
  178. label_studio_sdk/types/serialization_option.py +12 -22
  179. label_studio_sdk/types/serialization_options.py +18 -28
  180. label_studio_sdk/types/task.py +44 -47
  181. label_studio_sdk/types/task_annotators_item.py +1 -1
  182. label_studio_sdk/types/task_comment_authors_item.py +1 -1
  183. label_studio_sdk/types/task_filter_options.py +15 -25
  184. label_studio_sdk/types/user_simple.py +11 -21
  185. label_studio_sdk/types/view.py +16 -26
  186. label_studio_sdk/types/webhook.py +19 -28
  187. label_studio_sdk/types/webhook_serializer_for_update.py +19 -28
  188. label_studio_sdk/types/workspace.py +22 -31
  189. label_studio_sdk/users/client.py +257 -63
  190. label_studio_sdk/users/types/users_get_token_response.py +12 -22
  191. label_studio_sdk/users/types/users_reset_token_response.py +12 -22
  192. label_studio_sdk/version.py +0 -1
  193. label_studio_sdk/versions/__init__.py +5 -0
  194. label_studio_sdk/versions/client.py +112 -0
  195. label_studio_sdk/versions/types/__init__.py +6 -0
  196. label_studio_sdk/versions/types/versions_get_response.py +73 -0
  197. label_studio_sdk/versions/types/versions_get_response_edition.py +5 -0
  198. label_studio_sdk/views/client.py +219 -52
  199. label_studio_sdk/views/types/views_create_request_data.py +13 -23
  200. label_studio_sdk/views/types/views_create_request_data_filters.py +14 -24
  201. label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +16 -26
  202. label_studio_sdk/views/types/views_create_request_data_filters_items_item_value.py +3 -1
  203. label_studio_sdk/views/types/views_update_request_data.py +13 -23
  204. label_studio_sdk/views/types/views_update_request_data_filters.py +14 -24
  205. label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +16 -26
  206. label_studio_sdk/views/types/views_update_request_data_filters_items_item_value.py +3 -1
  207. label_studio_sdk/webhooks/client.py +191 -61
  208. label_studio_sdk/workspaces/client.py +164 -41
  209. label_studio_sdk/workspaces/members/client.py +109 -31
  210. label_studio_sdk/workspaces/members/types/members_create_response.py +12 -22
  211. label_studio_sdk/workspaces/members/types/members_list_response_item.py +12 -22
  212. {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.11.dist-info}/METADATA +8 -5
  213. {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.11.dist-info}/RECORD +215 -188
  214. {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.11.dist-info}/WHEEL +1 -1
  215. label_studio_sdk/types/export_convert.py +0 -32
  216. label_studio_sdk/types/export_create.py +0 -54
  217. label_studio_sdk/types/export_create_status.py +0 -5
  218. {label_studio_sdk-1.0.8.dist-info → label_studio_sdk-1.0.11.dist-info}/LICENSE +0 -0
@@ -1,78 +1,68 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- import datetime as dt
3
+ from ...core.pydantic_utilities import UniversalBaseModel
4
4
  import typing
5
-
6
- from ...core.datetime_utils import serialize_datetime
7
- from ...core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
5
+ import pydantic
8
6
  from .ml_create_response_auth_method import MlCreateResponseAuthMethod
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2
9
8
 
10
9
 
11
- class MlCreateResponse(pydantic_v1.BaseModel):
12
- url: typing.Optional[str] = pydantic_v1.Field(default=None)
10
+ class MlCreateResponse(UniversalBaseModel):
11
+ url: typing.Optional[str] = pydantic.Field(default=None)
13
12
  """
14
13
  ML backend URL
15
14
  """
16
15
 
17
- project: typing.Optional[int] = pydantic_v1.Field(default=None)
16
+ project: typing.Optional[int] = pydantic.Field(default=None)
18
17
  """
19
18
  Project ID
20
19
  """
21
20
 
22
- is_interactive: typing.Optional[bool] = pydantic_v1.Field(default=None)
21
+ is_interactive: typing.Optional[bool] = pydantic.Field(default=None)
23
22
  """
24
23
  Is interactive
25
24
  """
26
25
 
27
- title: typing.Optional[str] = pydantic_v1.Field(default=None)
26
+ title: typing.Optional[str] = pydantic.Field(default=None)
28
27
  """
29
28
  Title
30
29
  """
31
30
 
32
- description: typing.Optional[str] = pydantic_v1.Field(default=None)
31
+ description: typing.Optional[str] = pydantic.Field(default=None)
33
32
  """
34
33
  Description
35
34
  """
36
35
 
37
- auth_method: typing.Optional[MlCreateResponseAuthMethod] = pydantic_v1.Field(default=None)
36
+ auth_method: typing.Optional[MlCreateResponseAuthMethod] = pydantic.Field(default=None)
38
37
  """
39
38
  Auth method
40
39
  """
41
40
 
42
- basic_auth_user: typing.Optional[str] = pydantic_v1.Field(default=None)
41
+ basic_auth_user: typing.Optional[str] = pydantic.Field(default=None)
43
42
  """
44
43
  Basic auth user
45
44
  """
46
45
 
47
- basic_auth_pass: typing.Optional[str] = pydantic_v1.Field(default=None)
46
+ basic_auth_pass: typing.Optional[str] = pydantic.Field(default=None)
48
47
  """
49
48
  Basic auth password
50
49
  """
51
50
 
52
- extra_params: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
51
+ extra_params: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
53
52
  """
54
53
  Extra parameters
55
54
  """
56
55
 
57
- timeout: typing.Optional[int] = pydantic_v1.Field(default=None)
56
+ timeout: typing.Optional[int] = pydantic.Field(default=None)
58
57
  """
59
58
  Response model timeout
60
59
  """
61
60
 
62
- def json(self, **kwargs: typing.Any) -> str:
63
- kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
64
- return super().json(**kwargs_with_defaults)
65
-
66
- def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
67
- kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
68
- kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
69
-
70
- return deep_union_pydantic_dicts(
71
- super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
72
- )
61
+ if IS_PYDANTIC_V2:
62
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
63
+ else:
73
64
 
74
- class Config:
75
- frozen = True
76
- smart_union = True
77
- extra = pydantic_v1.Extra.allow
78
- json_encoders = {dt.datetime: serialize_datetime}
65
+ class Config:
66
+ frozen = True
67
+ smart_union = True
68
+ extra = pydantic.Extra.allow
@@ -1,78 +1,68 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- import datetime as dt
3
+ from ...core.pydantic_utilities import UniversalBaseModel
4
4
  import typing
5
-
6
- from ...core.datetime_utils import serialize_datetime
7
- from ...core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
5
+ import pydantic
8
6
  from .ml_update_response_auth_method import MlUpdateResponseAuthMethod
7
+ from ...core.pydantic_utilities import IS_PYDANTIC_V2
9
8
 
10
9
 
11
- class MlUpdateResponse(pydantic_v1.BaseModel):
12
- url: typing.Optional[str] = pydantic_v1.Field(default=None)
10
+ class MlUpdateResponse(UniversalBaseModel):
11
+ url: typing.Optional[str] = pydantic.Field(default=None)
13
12
  """
14
13
  ML backend URL
15
14
  """
16
15
 
17
- project: typing.Optional[int] = pydantic_v1.Field(default=None)
16
+ project: typing.Optional[int] = pydantic.Field(default=None)
18
17
  """
19
18
  Project ID
20
19
  """
21
20
 
22
- is_interactive: typing.Optional[bool] = pydantic_v1.Field(default=None)
21
+ is_interactive: typing.Optional[bool] = pydantic.Field(default=None)
23
22
  """
24
23
  Is interactive
25
24
  """
26
25
 
27
- title: typing.Optional[str] = pydantic_v1.Field(default=None)
26
+ title: typing.Optional[str] = pydantic.Field(default=None)
28
27
  """
29
28
  Title
30
29
  """
31
30
 
32
- description: typing.Optional[str] = pydantic_v1.Field(default=None)
31
+ description: typing.Optional[str] = pydantic.Field(default=None)
33
32
  """
34
33
  Description
35
34
  """
36
35
 
37
- auth_method: typing.Optional[MlUpdateResponseAuthMethod] = pydantic_v1.Field(default=None)
36
+ auth_method: typing.Optional[MlUpdateResponseAuthMethod] = pydantic.Field(default=None)
38
37
  """
39
38
  Auth method
40
39
  """
41
40
 
42
- basic_auth_user: typing.Optional[str] = pydantic_v1.Field(default=None)
41
+ basic_auth_user: typing.Optional[str] = pydantic.Field(default=None)
43
42
  """
44
43
  Basic auth user
45
44
  """
46
45
 
47
- basic_auth_pass: typing.Optional[str] = pydantic_v1.Field(default=None)
46
+ basic_auth_pass: typing.Optional[str] = pydantic.Field(default=None)
48
47
  """
49
48
  Basic auth password
50
49
  """
51
50
 
52
- extra_params: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
51
+ extra_params: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
53
52
  """
54
53
  Extra parameters
55
54
  """
56
55
 
57
- timeout: typing.Optional[int] = pydantic_v1.Field(default=None)
56
+ timeout: typing.Optional[int] = pydantic.Field(default=None)
58
57
  """
59
58
  Response model timeout
60
59
  """
61
60
 
62
- def json(self, **kwargs: typing.Any) -> str:
63
- kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
64
- return super().json(**kwargs_with_defaults)
65
-
66
- def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
67
- kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
68
- kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
69
-
70
- return deep_union_pydantic_dicts(
71
- super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
72
- )
61
+ if IS_PYDANTIC_V2:
62
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
63
+ else:
73
64
 
74
- class Config:
75
- frozen = True
76
- smart_union = True
77
- extra = pydantic_v1.Extra.allow
78
- json_encoders = {dt.datetime: serialize_datetime}
65
+ class Config:
66
+ frozen = True
67
+ smart_union = True
68
+ extra = pydantic.Extra.allow
@@ -1,20 +1,21 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- import datetime as dt
4
3
  import typing
5
- from json.decoder import JSONDecodeError
6
-
7
- from ..core.api_error import ApiError
8
- from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
9
- from ..core.jsonable_encoder import jsonable_encoder
10
- from ..core.pydantic_utilities import pydantic_v1
4
+ from ..core.client_wrapper import SyncClientWrapper
11
5
  from ..core.request_options import RequestOptions
12
6
  from ..types.model_provider_connection import ModelProviderConnection
13
- from ..types.model_provider_connection_budget_reset_period import ModelProviderConnectionBudgetResetPeriod
14
- from ..types.model_provider_connection_created_by import ModelProviderConnectionCreatedBy
15
- from ..types.model_provider_connection_organization import ModelProviderConnectionOrganization
7
+ from ..core.pydantic_utilities import parse_obj_as
8
+ from json.decoder import JSONDecodeError
9
+ from ..core.api_error import ApiError
16
10
  from ..types.model_provider_connection_provider import ModelProviderConnectionProvider
17
11
  from ..types.model_provider_connection_scope import ModelProviderConnectionScope
12
+ from ..types.model_provider_connection_organization import ModelProviderConnectionOrganization
13
+ from ..types.model_provider_connection_created_by import ModelProviderConnectionCreatedBy
14
+ import datetime as dt
15
+ from ..types.model_provider_connection_budget_reset_period import ModelProviderConnectionBudgetResetPeriod
16
+ from ..core.serialization import convert_and_respect_annotation_metadata
17
+ from ..core.jsonable_encoder import jsonable_encoder
18
+ from ..core.client_wrapper import AsyncClientWrapper
18
19
 
19
20
  # this is used as the default value for optional parameters
20
21
  OMIT = typing.cast(typing.Any, ...)
@@ -40,7 +41,7 @@ class ModelProvidersClient:
40
41
 
41
42
  Examples
42
43
  --------
43
- from label_studio_sdk.client import LabelStudio
44
+ from label_studio_sdk import LabelStudio
44
45
 
45
46
  client = LabelStudio(
46
47
  api_key="YOUR_API_KEY",
@@ -48,11 +49,19 @@ class ModelProvidersClient:
48
49
  client.model_providers.list()
49
50
  """
50
51
  _response = self._client_wrapper.httpx_client.request(
51
- "api/model-provider-connections/", method="GET", request_options=request_options
52
+ "api/model-provider-connections/",
53
+ method="GET",
54
+ request_options=request_options,
52
55
  )
53
56
  try:
54
57
  if 200 <= _response.status_code < 300:
55
- return pydantic_v1.parse_obj_as(typing.List[ModelProviderConnection], _response.json()) # type: ignore
58
+ return typing.cast(
59
+ typing.List[ModelProviderConnection],
60
+ parse_obj_as(
61
+ type_=typing.List[ModelProviderConnection], # type: ignore
62
+ object_=_response.json(),
63
+ ),
64
+ )
56
65
  _response_json = _response.json()
57
66
  except JSONDecodeError:
58
67
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -129,7 +138,7 @@ class ModelProvidersClient:
129
138
 
130
139
  Examples
131
140
  --------
132
- from label_studio_sdk.client import LabelStudio
141
+ from label_studio_sdk import LabelStudio
133
142
 
134
143
  client = LabelStudio(
135
144
  api_key="YOUR_API_KEY",
@@ -147,8 +156,12 @@ class ModelProvidersClient:
147
156
  "deployment_name": deployment_name,
148
157
  "endpoint": endpoint,
149
158
  "scope": scope,
150
- "organization": organization,
151
- "created_by": created_by,
159
+ "organization": convert_and_respect_annotation_metadata(
160
+ object_=organization, annotation=ModelProviderConnectionOrganization, direction="write"
161
+ ),
162
+ "created_by": convert_and_respect_annotation_metadata(
163
+ object_=created_by, annotation=ModelProviderConnectionCreatedBy, direction="write"
164
+ ),
152
165
  "created_at": created_at,
153
166
  "updated_at": updated_at,
154
167
  "is_internal": is_internal,
@@ -163,7 +176,13 @@ class ModelProvidersClient:
163
176
  )
164
177
  try:
165
178
  if 200 <= _response.status_code < 300:
166
- return pydantic_v1.parse_obj_as(ModelProviderConnection, _response.json()) # type: ignore
179
+ return typing.cast(
180
+ ModelProviderConnection,
181
+ parse_obj_as(
182
+ type_=ModelProviderConnection, # type: ignore
183
+ object_=_response.json(),
184
+ ),
185
+ )
167
186
  _response_json = _response.json()
168
187
  except JSONDecodeError:
169
188
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -188,7 +207,7 @@ class ModelProvidersClient:
188
207
 
189
208
  Examples
190
209
  --------
191
- from label_studio_sdk.client import LabelStudio
210
+ from label_studio_sdk import LabelStudio
192
211
 
193
212
  client = LabelStudio(
194
213
  api_key="YOUR_API_KEY",
@@ -198,11 +217,19 @@ class ModelProvidersClient:
198
217
  )
199
218
  """
200
219
  _response = self._client_wrapper.httpx_client.request(
201
- f"api/model-provider-connections/{jsonable_encoder(pk)}", method="GET", request_options=request_options
220
+ f"api/model-provider-connections/{jsonable_encoder(pk)}",
221
+ method="GET",
222
+ request_options=request_options,
202
223
  )
203
224
  try:
204
225
  if 200 <= _response.status_code < 300:
205
- return pydantic_v1.parse_obj_as(ModelProviderConnection, _response.json()) # type: ignore
226
+ return typing.cast(
227
+ ModelProviderConnection,
228
+ parse_obj_as(
229
+ type_=ModelProviderConnection, # type: ignore
230
+ object_=_response.json(),
231
+ ),
232
+ )
206
233
  _response_json = _response.json()
207
234
  except JSONDecodeError:
208
235
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -226,7 +253,7 @@ class ModelProvidersClient:
226
253
 
227
254
  Examples
228
255
  --------
229
- from label_studio_sdk.client import LabelStudio
256
+ from label_studio_sdk import LabelStudio
230
257
 
231
258
  client = LabelStudio(
232
259
  api_key="YOUR_API_KEY",
@@ -236,7 +263,9 @@ class ModelProvidersClient:
236
263
  )
237
264
  """
238
265
  _response = self._client_wrapper.httpx_client.request(
239
- f"api/model-provider-connections/{jsonable_encoder(pk)}", method="DELETE", request_options=request_options
266
+ f"api/model-provider-connections/{jsonable_encoder(pk)}",
267
+ method="DELETE",
268
+ request_options=request_options,
240
269
  )
241
270
  try:
242
271
  if 200 <= _response.status_code < 300:
@@ -321,7 +350,7 @@ class ModelProvidersClient:
321
350
 
322
351
  Examples
323
352
  --------
324
- from label_studio_sdk.client import LabelStudio
353
+ from label_studio_sdk import LabelStudio
325
354
 
326
355
  client = LabelStudio(
327
356
  api_key="YOUR_API_KEY",
@@ -340,8 +369,12 @@ class ModelProvidersClient:
340
369
  "deployment_name": deployment_name,
341
370
  "endpoint": endpoint,
342
371
  "scope": scope,
343
- "organization": organization,
344
- "created_by": created_by,
372
+ "organization": convert_and_respect_annotation_metadata(
373
+ object_=organization, annotation=ModelProviderConnectionOrganization, direction="write"
374
+ ),
375
+ "created_by": convert_and_respect_annotation_metadata(
376
+ object_=created_by, annotation=ModelProviderConnectionCreatedBy, direction="write"
377
+ ),
345
378
  "created_at": created_at,
346
379
  "updated_at": updated_at,
347
380
  "is_internal": is_internal,
@@ -356,7 +389,13 @@ class ModelProvidersClient:
356
389
  )
357
390
  try:
358
391
  if 200 <= _response.status_code < 300:
359
- return pydantic_v1.parse_obj_as(ModelProviderConnection, _response.json()) # type: ignore
392
+ return typing.cast(
393
+ ModelProviderConnection,
394
+ parse_obj_as(
395
+ type_=ModelProviderConnection, # type: ignore
396
+ object_=_response.json(),
397
+ ),
398
+ )
360
399
  _response_json = _response.json()
361
400
  except JSONDecodeError:
362
401
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -385,19 +424,35 @@ class AsyncModelProvidersClient:
385
424
 
386
425
  Examples
387
426
  --------
388
- from label_studio_sdk.client import AsyncLabelStudio
427
+ import asyncio
428
+
429
+ from label_studio_sdk import AsyncLabelStudio
389
430
 
390
431
  client = AsyncLabelStudio(
391
432
  api_key="YOUR_API_KEY",
392
433
  )
393
- await client.model_providers.list()
434
+
435
+
436
+ async def main() -> None:
437
+ await client.model_providers.list()
438
+
439
+
440
+ asyncio.run(main())
394
441
  """
395
442
  _response = await self._client_wrapper.httpx_client.request(
396
- "api/model-provider-connections/", method="GET", request_options=request_options
443
+ "api/model-provider-connections/",
444
+ method="GET",
445
+ request_options=request_options,
397
446
  )
398
447
  try:
399
448
  if 200 <= _response.status_code < 300:
400
- return pydantic_v1.parse_obj_as(typing.List[ModelProviderConnection], _response.json()) # type: ignore
449
+ return typing.cast(
450
+ typing.List[ModelProviderConnection],
451
+ parse_obj_as(
452
+ type_=typing.List[ModelProviderConnection], # type: ignore
453
+ object_=_response.json(),
454
+ ),
455
+ )
401
456
  _response_json = _response.json()
402
457
  except JSONDecodeError:
403
458
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -474,14 +529,22 @@ class AsyncModelProvidersClient:
474
529
 
475
530
  Examples
476
531
  --------
477
- from label_studio_sdk.client import AsyncLabelStudio
532
+ import asyncio
533
+
534
+ from label_studio_sdk import AsyncLabelStudio
478
535
 
479
536
  client = AsyncLabelStudio(
480
537
  api_key="YOUR_API_KEY",
481
538
  )
482
- await client.model_providers.create(
483
- provider="OpenAI",
484
- )
539
+
540
+
541
+ async def main() -> None:
542
+ await client.model_providers.create(
543
+ provider="OpenAI",
544
+ )
545
+
546
+
547
+ asyncio.run(main())
485
548
  """
486
549
  _response = await self._client_wrapper.httpx_client.request(
487
550
  "api/model-provider-connections/",
@@ -492,8 +555,12 @@ class AsyncModelProvidersClient:
492
555
  "deployment_name": deployment_name,
493
556
  "endpoint": endpoint,
494
557
  "scope": scope,
495
- "organization": organization,
496
- "created_by": created_by,
558
+ "organization": convert_and_respect_annotation_metadata(
559
+ object_=organization, annotation=ModelProviderConnectionOrganization, direction="write"
560
+ ),
561
+ "created_by": convert_and_respect_annotation_metadata(
562
+ object_=created_by, annotation=ModelProviderConnectionCreatedBy, direction="write"
563
+ ),
497
564
  "created_at": created_at,
498
565
  "updated_at": updated_at,
499
566
  "is_internal": is_internal,
@@ -508,7 +575,13 @@ class AsyncModelProvidersClient:
508
575
  )
509
576
  try:
510
577
  if 200 <= _response.status_code < 300:
511
- return pydantic_v1.parse_obj_as(ModelProviderConnection, _response.json()) # type: ignore
578
+ return typing.cast(
579
+ ModelProviderConnection,
580
+ parse_obj_as(
581
+ type_=ModelProviderConnection, # type: ignore
582
+ object_=_response.json(),
583
+ ),
584
+ )
512
585
  _response_json = _response.json()
513
586
  except JSONDecodeError:
514
587
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -533,21 +606,37 @@ class AsyncModelProvidersClient:
533
606
 
534
607
  Examples
535
608
  --------
536
- from label_studio_sdk.client import AsyncLabelStudio
609
+ import asyncio
610
+
611
+ from label_studio_sdk import AsyncLabelStudio
537
612
 
538
613
  client = AsyncLabelStudio(
539
614
  api_key="YOUR_API_KEY",
540
615
  )
541
- await client.model_providers.get(
542
- pk=1,
543
- )
616
+
617
+
618
+ async def main() -> None:
619
+ await client.model_providers.get(
620
+ pk=1,
621
+ )
622
+
623
+
624
+ asyncio.run(main())
544
625
  """
545
626
  _response = await self._client_wrapper.httpx_client.request(
546
- f"api/model-provider-connections/{jsonable_encoder(pk)}", method="GET", request_options=request_options
627
+ f"api/model-provider-connections/{jsonable_encoder(pk)}",
628
+ method="GET",
629
+ request_options=request_options,
547
630
  )
548
631
  try:
549
632
  if 200 <= _response.status_code < 300:
550
- return pydantic_v1.parse_obj_as(ModelProviderConnection, _response.json()) # type: ignore
633
+ return typing.cast(
634
+ ModelProviderConnection,
635
+ parse_obj_as(
636
+ type_=ModelProviderConnection, # type: ignore
637
+ object_=_response.json(),
638
+ ),
639
+ )
551
640
  _response_json = _response.json()
552
641
  except JSONDecodeError:
553
642
  raise ApiError(status_code=_response.status_code, body=_response.text)
@@ -571,17 +660,27 @@ class AsyncModelProvidersClient:
571
660
 
572
661
  Examples
573
662
  --------
574
- from label_studio_sdk.client import AsyncLabelStudio
663
+ import asyncio
664
+
665
+ from label_studio_sdk import AsyncLabelStudio
575
666
 
576
667
  client = AsyncLabelStudio(
577
668
  api_key="YOUR_API_KEY",
578
669
  )
579
- await client.model_providers.delete(
580
- pk=1,
581
- )
670
+
671
+
672
+ async def main() -> None:
673
+ await client.model_providers.delete(
674
+ pk=1,
675
+ )
676
+
677
+
678
+ asyncio.run(main())
582
679
  """
583
680
  _response = await self._client_wrapper.httpx_client.request(
584
- f"api/model-provider-connections/{jsonable_encoder(pk)}", method="DELETE", request_options=request_options
681
+ f"api/model-provider-connections/{jsonable_encoder(pk)}",
682
+ method="DELETE",
683
+ request_options=request_options,
585
684
  )
586
685
  try:
587
686
  if 200 <= _response.status_code < 300:
@@ -666,15 +765,23 @@ class AsyncModelProvidersClient:
666
765
 
667
766
  Examples
668
767
  --------
669
- from label_studio_sdk.client import AsyncLabelStudio
768
+ import asyncio
769
+
770
+ from label_studio_sdk import AsyncLabelStudio
670
771
 
671
772
  client = AsyncLabelStudio(
672
773
  api_key="YOUR_API_KEY",
673
774
  )
674
- await client.model_providers.update(
675
- pk=1,
676
- provider="OpenAI",
677
- )
775
+
776
+
777
+ async def main() -> None:
778
+ await client.model_providers.update(
779
+ pk=1,
780
+ provider="OpenAI",
781
+ )
782
+
783
+
784
+ asyncio.run(main())
678
785
  """
679
786
  _response = await self._client_wrapper.httpx_client.request(
680
787
  f"api/model-provider-connections/{jsonable_encoder(pk)}",
@@ -685,8 +792,12 @@ class AsyncModelProvidersClient:
685
792
  "deployment_name": deployment_name,
686
793
  "endpoint": endpoint,
687
794
  "scope": scope,
688
- "organization": organization,
689
- "created_by": created_by,
795
+ "organization": convert_and_respect_annotation_metadata(
796
+ object_=organization, annotation=ModelProviderConnectionOrganization, direction="write"
797
+ ),
798
+ "created_by": convert_and_respect_annotation_metadata(
799
+ object_=created_by, annotation=ModelProviderConnectionCreatedBy, direction="write"
800
+ ),
690
801
  "created_at": created_at,
691
802
  "updated_at": updated_at,
692
803
  "is_internal": is_internal,
@@ -701,7 +812,13 @@ class AsyncModelProvidersClient:
701
812
  )
702
813
  try:
703
814
  if 200 <= _response.status_code < 300:
704
- return pydantic_v1.parse_obj_as(ModelProviderConnection, _response.json()) # type: ignore
815
+ return typing.cast(
816
+ ModelProviderConnection,
817
+ parse_obj_as(
818
+ type_=ModelProviderConnection, # type: ignore
819
+ object_=_response.json(),
820
+ ),
821
+ )
705
822
  _response_json = _response.json()
706
823
  except JSONDecodeError:
707
824
  raise ApiError(status_code=_response.status_code, body=_response.text)