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,89 +1,80 @@
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
8
- from .ml_backend_auth_method import MlBackendAuthMethod
9
5
  from .ml_backend_state import MlBackendState
6
+ import pydantic
7
+ from .ml_backend_auth_method import MlBackendAuthMethod
8
+ import datetime as dt
9
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
10
10
 
11
11
 
12
- class MlBackend(pydantic_v1.BaseModel):
12
+ class MlBackend(UniversalBaseModel):
13
13
  id: typing.Optional[int] = None
14
14
  state: typing.Optional[MlBackendState] = None
15
15
  readable_state: typing.Optional[str] = None
16
- is_interactive: typing.Optional[bool] = pydantic_v1.Field(default=None)
16
+ is_interactive: typing.Optional[bool] = pydantic.Field(default=None)
17
17
  """
18
18
  Used to interactively annotate tasks. If true, model returns one list with results
19
19
  """
20
20
 
21
- url: str = pydantic_v1.Field()
21
+ url: str = pydantic.Field()
22
22
  """
23
23
  URL for the machine learning model server
24
24
  """
25
25
 
26
- error_message: typing.Optional[str] = pydantic_v1.Field(default=None)
26
+ error_message: typing.Optional[str] = pydantic.Field(default=None)
27
27
  """
28
28
  Error message in error state
29
29
  """
30
30
 
31
- title: typing.Optional[str] = pydantic_v1.Field(default=None)
31
+ title: typing.Optional[str] = pydantic.Field(default=None)
32
32
  """
33
33
  Name of the machine learning backend
34
34
  """
35
35
 
36
36
  auth_method: typing.Optional[MlBackendAuthMethod] = None
37
- basic_auth_user: typing.Optional[str] = pydantic_v1.Field(default=None)
37
+ basic_auth_user: typing.Optional[str] = pydantic.Field(default=None)
38
38
  """
39
39
  HTTP Basic Auth user
40
40
  """
41
41
 
42
42
  basic_auth_pass: typing.Optional[str] = None
43
43
  basic_auth_pass_is_set: typing.Optional[str] = None
44
- description: typing.Optional[str] = pydantic_v1.Field(default=None)
44
+ description: typing.Optional[str] = pydantic.Field(default=None)
45
45
  """
46
46
  Description for the machine learning backend
47
47
  """
48
48
 
49
- extra_params: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
49
+ extra_params: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
50
50
  """
51
51
  Any extra parameters passed to the ML Backend during the setup
52
52
  """
53
53
 
54
- model_version: typing.Optional[str] = pydantic_v1.Field(default=None)
54
+ model_version: typing.Optional[str] = pydantic.Field(default=None)
55
55
  """
56
56
  Current model version associated with this machine learning backend
57
57
  """
58
58
 
59
- timeout: typing.Optional[float] = pydantic_v1.Field(default=None)
59
+ timeout: typing.Optional[float] = pydantic.Field(default=None)
60
60
  """
61
61
  Response model timeout
62
62
  """
63
63
 
64
64
  created_at: typing.Optional[dt.datetime] = None
65
65
  updated_at: typing.Optional[dt.datetime] = None
66
- auto_update: typing.Optional[bool] = pydantic_v1.Field(default=None)
66
+ auto_update: typing.Optional[bool] = pydantic.Field(default=None)
67
67
  """
68
68
  If false, model version is set by the user, if true - getting latest version from backend.
69
69
  """
70
70
 
71
71
  project: int
72
72
 
73
- def json(self, **kwargs: typing.Any) -> str:
74
- kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
75
- return super().json(**kwargs_with_defaults)
76
-
77
- def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
78
- kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
79
- kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
80
-
81
- return deep_union_pydantic_dicts(
82
- super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
83
- )
73
+ if IS_PYDANTIC_V2:
74
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
75
+ else:
84
76
 
85
- class Config:
86
- frozen = True
87
- smart_union = True
88
- extra = pydantic_v1.Extra.allow
89
- json_encoders = {dt.datetime: serialize_datetime}
77
+ class Config:
78
+ frozen = True
79
+ smart_union = True
80
+ extra = pydantic.Extra.allow
@@ -1,18 +1,18 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- import datetime as dt
4
- import typing
5
-
6
- from ..core.datetime_utils import serialize_datetime
7
- from ..core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
8
- from .model_provider_connection_budget_reset_period import ModelProviderConnectionBudgetResetPeriod
9
- from .model_provider_connection_created_by import ModelProviderConnectionCreatedBy
10
- from .model_provider_connection_organization import ModelProviderConnectionOrganization
3
+ from ..core.pydantic_utilities import UniversalBaseModel
11
4
  from .model_provider_connection_provider import ModelProviderConnectionProvider
5
+ import typing
12
6
  from .model_provider_connection_scope import ModelProviderConnectionScope
7
+ from .model_provider_connection_organization import ModelProviderConnectionOrganization
8
+ from .model_provider_connection_created_by import ModelProviderConnectionCreatedBy
9
+ import datetime as dt
10
+ import pydantic
11
+ from .model_provider_connection_budget_reset_period import ModelProviderConnectionBudgetResetPeriod
12
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
13
13
 
14
14
 
15
- class ModelProviderConnection(pydantic_v1.BaseModel):
15
+ class ModelProviderConnection(UniversalBaseModel):
16
16
  provider: ModelProviderConnectionProvider
17
17
  api_key: typing.Optional[str] = None
18
18
  deployment_name: typing.Optional[str] = None
@@ -22,50 +22,41 @@ class ModelProviderConnection(pydantic_v1.BaseModel):
22
22
  created_by: typing.Optional[ModelProviderConnectionCreatedBy] = None
23
23
  created_at: typing.Optional[dt.datetime] = None
24
24
  updated_at: typing.Optional[dt.datetime] = None
25
- is_internal: typing.Optional[bool] = pydantic_v1.Field(default=None)
25
+ is_internal: typing.Optional[bool] = pydantic.Field(default=None)
26
26
  """
27
27
  Whether the model provider connection is internal, not visible to the user.
28
28
  """
29
29
 
30
- budget_limit: typing.Optional[float] = pydantic_v1.Field(default=None)
30
+ budget_limit: typing.Optional[float] = pydantic.Field(default=None)
31
31
  """
32
32
  Budget limit for the model provider connection (null if unlimited)
33
33
  """
34
34
 
35
- budget_last_reset_date: typing.Optional[dt.datetime] = pydantic_v1.Field(default=None)
35
+ budget_last_reset_date: typing.Optional[dt.datetime] = pydantic.Field(default=None)
36
36
  """
37
37
  Date and time the budget was last reset
38
38
  """
39
39
 
40
- budget_reset_period: typing.Optional[ModelProviderConnectionBudgetResetPeriod] = pydantic_v1.Field(default=None)
40
+ budget_reset_period: typing.Optional[ModelProviderConnectionBudgetResetPeriod] = pydantic.Field(default=None)
41
41
  """
42
42
  Budget reset period for the model provider connection (null if not reset)
43
43
  """
44
44
 
45
- budget_total_spent: typing.Optional[float] = pydantic_v1.Field(default=None)
45
+ budget_total_spent: typing.Optional[float] = pydantic.Field(default=None)
46
46
  """
47
47
  Tracked total budget spent for the given provider connection within the current budget period
48
48
  """
49
49
 
50
- budget_alert_threshold: typing.Optional[float] = pydantic_v1.Field(default=None)
50
+ budget_alert_threshold: typing.Optional[float] = pydantic.Field(default=None)
51
51
  """
52
52
  Budget alert threshold for the given provider connection
53
53
  """
54
54
 
55
- def json(self, **kwargs: typing.Any) -> str:
56
- kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
57
- return super().json(**kwargs_with_defaults)
58
-
59
- def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
60
- kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
61
- kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
62
-
63
- return deep_union_pydantic_dicts(
64
- super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
65
- )
55
+ if IS_PYDANTIC_V2:
56
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
57
+ else:
66
58
 
67
- class Config:
68
- frozen = True
69
- smart_union = True
70
- extra = pydantic_v1.Extra.allow
71
- json_encoders = {dt.datetime: serialize_datetime}
59
+ class Config:
60
+ frozen = True
61
+ smart_union = True
62
+ extra = pydantic.Extra.allow
@@ -2,4 +2,4 @@
2
2
 
3
3
  import typing
4
4
 
5
- ModelProviderConnectionCreatedBy = typing.Union[int, typing.Dict[str, typing.Any]]
5
+ ModelProviderConnectionCreatedBy = typing.Union[int, typing.Dict[str, typing.Optional[typing.Any]]]
@@ -2,4 +2,4 @@
2
2
 
3
3
  import typing
4
4
 
5
- ModelProviderConnectionOrganization = typing.Union[int, typing.Dict[str, typing.Any]]
5
+ ModelProviderConnectionOrganization = typing.Union[int, typing.Dict[str, typing.Optional[typing.Any]]]
@@ -2,4 +2,6 @@
2
2
 
3
3
  import typing
4
4
 
5
- ModelProviderConnectionProvider = typing.Union[typing.Literal["OpenAI", "AzureOpenAI", "Custom"], typing.Any]
5
+ ModelProviderConnectionProvider = typing.Union[
6
+ typing.Literal["OpenAI", "AzureOpenAI", "AzureAIFoundry", "VertexAI", "Gemini", "Anthropic", "Custom"], typing.Any
7
+ ]
@@ -0,0 +1,34 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import typing
5
+ from .pause_paused_by import PausePausedBy
6
+ import pydantic
7
+ import datetime as dt
8
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
9
+
10
+
11
+ class Pause(UniversalBaseModel):
12
+ id: typing.Optional[int] = None
13
+ project: typing.Optional[int] = None
14
+ user: typing.Optional[int] = None
15
+ paused_by: typing.Optional[PausePausedBy] = pydantic.Field(default=None)
16
+ """
17
+ User who created the pause
18
+ """
19
+
20
+ reason: str
21
+ verbose_reason: typing.Optional[str] = None
22
+ deleted_by: typing.Optional[int] = None
23
+ deleted_at: typing.Optional[dt.datetime] = None
24
+ created_at: typing.Optional[dt.datetime] = None
25
+ updated_at: typing.Optional[dt.datetime] = None
26
+
27
+ if IS_PYDANTIC_V2:
28
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
29
+ else:
30
+
31
+ class Config:
32
+ frozen = True
33
+ smart_union = True
34
+ extra = pydantic.Extra.allow
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ PausePausedBy = typing.Union[int, typing.Dict[str, typing.Optional[typing.Any]]]
@@ -1,57 +1,57 @@
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
6
+ import datetime as dt
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
8
 
9
9
 
10
- class Prediction(pydantic_v1.BaseModel):
10
+ class Prediction(UniversalBaseModel):
11
11
  id: typing.Optional[int] = None
12
- result: typing.List[typing.Dict[str, typing.Any]] = pydantic_v1.Field()
12
+ result: typing.List[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field()
13
13
  """
14
14
  List of prediction results for the task
15
15
  """
16
16
 
17
- model_version: typing.Optional[str] = pydantic_v1.Field(default=None)
17
+ model_version: typing.Optional[str] = pydantic.Field(default=None)
18
18
  """
19
19
  Model version - tag for predictions that can be used to filter tasks in Data Manager, as well as select specific model version for showing preannotations in the labeling interface
20
20
  """
21
21
 
22
- created_ago: typing.Optional[str] = pydantic_v1.Field(default=None)
22
+ created_ago: typing.Optional[str] = pydantic.Field(default=None)
23
23
  """
24
24
  Delta time from creation time
25
25
  """
26
26
 
27
- score: typing.Optional[float] = pydantic_v1.Field(default=None)
27
+ score: typing.Optional[float] = pydantic.Field(default=None)
28
28
  """
29
29
  Prediction score
30
30
  """
31
31
 
32
- cluster: typing.Optional[int] = pydantic_v1.Field(default=None)
32
+ cluster: typing.Optional[int] = pydantic.Field(default=None)
33
33
  """
34
34
  Cluster for the current prediction
35
35
  """
36
36
 
37
- neighbors: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
37
+ neighbors: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
38
38
  """
39
39
  Array of task IDs of the closest neighbors
40
40
  """
41
41
 
42
- mislabeling: typing.Optional[float] = pydantic_v1.Field(default=None)
42
+ mislabeling: typing.Optional[float] = pydantic.Field(default=None)
43
43
  """
44
44
  Related task mislabeling score
45
45
  """
46
46
 
47
47
  created_at: typing.Optional[dt.datetime] = None
48
48
  updated_at: typing.Optional[dt.datetime] = None
49
- model: typing.Optional[int] = pydantic_v1.Field(default=None)
49
+ model: typing.Optional[int] = pydantic.Field(default=None)
50
50
  """
51
51
  An ML Backend instance that created the prediction.
52
52
  """
53
53
 
54
- model_run: typing.Optional[int] = pydantic_v1.Field(default=None)
54
+ model_run: typing.Optional[int] = pydantic.Field(default=None)
55
55
  """
56
56
  A run of a ModelVersion that created the prediction.
57
57
  """
@@ -59,20 +59,11 @@ class Prediction(pydantic_v1.BaseModel):
59
59
  task: int
60
60
  project: typing.Optional[int] = None
61
61
 
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
- )
62
+ if IS_PYDANTIC_V2:
63
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
64
+ else:
73
65
 
74
- class Config:
75
- frozen = True
76
- smart_union = True
77
- extra = pydantic_v1.Extra.allow
78
- json_encoders = {dt.datetime: serialize_datetime}
66
+ class Config:
67
+ frozen = True
68
+ smart_union = True
69
+ extra = pydantic.Extra.allow
@@ -1,127 +1,139 @@
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
6
+ from .prompt import Prompt
7
+ from .user_simple import UserSimple
8
+ import datetime as dt
8
9
  from .project_sampling import ProjectSampling
9
10
  from .project_skip_queue import ProjectSkipQueue
10
- from .user_simple import UserSimple
11
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
11
12
 
12
13
 
13
- class Project(pydantic_v1.BaseModel):
14
+ class Project(UniversalBaseModel):
14
15
  id: typing.Optional[int] = None
15
- title: typing.Optional[str] = pydantic_v1.Field(default=None)
16
+ title: typing.Optional[str] = pydantic.Field(default=None)
16
17
  """
17
18
  Project name. Must be between 3 and 50 characters long.
18
19
  """
19
20
 
20
- description: typing.Optional[str] = pydantic_v1.Field(default=None)
21
+ description: typing.Optional[str] = pydantic.Field(default=None)
21
22
  """
22
23
  Project description
23
24
  """
24
25
 
25
- label_config: typing.Optional[str] = pydantic_v1.Field(default=None)
26
+ label_config: typing.Optional[str] = pydantic.Field(default=None)
26
27
  """
27
28
  Label config in XML format. See more about it in documentation
28
29
  """
29
30
 
30
- expert_instruction: typing.Optional[str] = pydantic_v1.Field(default=None)
31
+ expert_instruction: typing.Optional[str] = pydantic.Field(default=None)
31
32
  """
32
33
  Labeling instructions in HTML format
33
34
  """
34
35
 
35
- show_instruction: typing.Optional[bool] = pydantic_v1.Field(default=None)
36
+ show_instruction: typing.Optional[bool] = pydantic.Field(default=None)
36
37
  """
37
38
  Show instructions to the annotator before they start
38
39
  """
39
40
 
40
- show_skip_button: typing.Optional[bool] = pydantic_v1.Field(default=None)
41
+ show_skip_button: typing.Optional[bool] = pydantic.Field(default=None)
41
42
  """
42
43
  Show a skip button in interface and allow annotators to skip the task
43
44
  """
44
45
 
45
- enable_empty_annotation: typing.Optional[bool] = pydantic_v1.Field(default=None)
46
+ enable_empty_annotation: typing.Optional[bool] = pydantic.Field(default=None)
46
47
  """
47
48
  Allow annotators to submit empty annotations
48
49
  """
49
50
 
50
- show_annotation_history: typing.Optional[bool] = pydantic_v1.Field(default=None)
51
+ show_annotation_history: typing.Optional[bool] = pydantic.Field(default=None)
51
52
  """
52
53
  Show annotation history to annotator
53
54
  """
54
55
 
55
56
  organization: typing.Optional[int] = None
57
+ prompts: typing.Optional[typing.List[Prompt]] = None
56
58
  color: typing.Optional[str] = None
57
- maximum_annotations: typing.Optional[int] = pydantic_v1.Field(default=None)
59
+ maximum_annotations: typing.Optional[int] = pydantic.Field(default=None)
58
60
  """
59
61
  Maximum number of annotations for one task. If the number of annotations per task is equal or greater to this value, the task is completed (is_labeled=True)
60
62
  """
61
63
 
62
- is_published: typing.Optional[bool] = pydantic_v1.Field(default=None)
64
+ annotation_limit_count: typing.Optional[int] = pydantic.Field(default=None)
65
+ """
66
+ Maximum number of tasks that can be annotated by a single annotator in this project pause
67
+ """
68
+
69
+ annotation_limit_percent: typing.Optional[float] = pydantic.Field(default=None)
70
+ """
71
+ Maximum percentage of tasks in this project that can be annotated by a single annotator
72
+ """
73
+
74
+ is_published: typing.Optional[bool] = pydantic.Field(default=None)
63
75
  """
64
76
  Whether or not the project is published to annotators
65
77
  """
66
78
 
67
- model_version: typing.Optional[str] = pydantic_v1.Field(default=None)
79
+ model_version: typing.Optional[str] = pydantic.Field(default=None)
68
80
  """
69
81
  Machine learning model version
70
82
  """
71
83
 
72
- is_draft: typing.Optional[bool] = pydantic_v1.Field(default=None)
84
+ is_draft: typing.Optional[bool] = pydantic.Field(default=None)
73
85
  """
74
86
  Whether or not the project is in the middle of being created
75
87
  """
76
88
 
77
89
  created_by: typing.Optional[UserSimple] = None
78
90
  created_at: typing.Optional[dt.datetime] = None
79
- min_annotations_to_start_training: typing.Optional[int] = pydantic_v1.Field(default=None)
91
+ min_annotations_to_start_training: typing.Optional[int] = pydantic.Field(default=None)
80
92
  """
81
93
  Minimum number of completed tasks after which model training is started
82
94
  """
83
95
 
84
- start_training_on_annotation_update: typing.Optional[str] = pydantic_v1.Field(default=None)
96
+ start_training_on_annotation_update: typing.Optional[bool] = pydantic.Field(default=None)
85
97
  """
86
98
  Start model training after any annotations are submitted or updated
87
99
  """
88
100
 
89
- show_collab_predictions: typing.Optional[bool] = pydantic_v1.Field(default=None)
101
+ show_collab_predictions: typing.Optional[bool] = pydantic.Field(default=None)
90
102
  """
91
103
  If set, the annotator can view model predictions
92
104
  """
93
105
 
94
- num_tasks_with_annotations: typing.Optional[int] = pydantic_v1.Field(default=None)
106
+ num_tasks_with_annotations: typing.Optional[int] = pydantic.Field(default=None)
95
107
  """
96
108
  Tasks with annotations count
97
109
  """
98
110
 
99
- task_number: typing.Optional[int] = pydantic_v1.Field(default=None)
111
+ task_number: typing.Optional[int] = pydantic.Field(default=None)
100
112
  """
101
113
  Total task number in project
102
114
  """
103
115
 
104
- useful_annotation_number: typing.Optional[int] = pydantic_v1.Field(default=None)
116
+ useful_annotation_number: typing.Optional[int] = pydantic.Field(default=None)
105
117
  """
106
118
  Useful annotation number in project not including skipped_annotations_number and ground_truth_number. Total annotations = annotation_number + skipped_annotations_number + ground_truth_number
107
119
  """
108
120
 
109
- ground_truth_number: typing.Optional[int] = pydantic_v1.Field(default=None)
121
+ ground_truth_number: typing.Optional[int] = pydantic.Field(default=None)
110
122
  """
111
123
  Honeypot annotation number in project
112
124
  """
113
125
 
114
- skipped_annotations_number: typing.Optional[int] = pydantic_v1.Field(default=None)
126
+ skipped_annotations_number: typing.Optional[int] = pydantic.Field(default=None)
115
127
  """
116
128
  Skipped by collaborators annotation number in project
117
129
  """
118
130
 
119
- total_annotations_number: typing.Optional[int] = pydantic_v1.Field(default=None)
131
+ total_annotations_number: typing.Optional[int] = pydantic.Field(default=None)
120
132
  """
121
133
  Total annotations number in project including skipped_annotations_number and ground_truth_number.
122
134
  """
123
135
 
124
- total_predictions_number: typing.Optional[int] = pydantic_v1.Field(default=None)
136
+ total_predictions_number: typing.Optional[int] = pydantic.Field(default=None)
125
137
  """
126
138
  Total predictions number in project including skipped_annotations_number, ground_truth_number, and useful_annotation_number.
127
139
  """
@@ -130,69 +142,60 @@ class Project(pydantic_v1.BaseModel):
130
142
  show_ground_truth_first: typing.Optional[bool] = None
131
143
  show_overlap_first: typing.Optional[bool] = None
132
144
  overlap_cohort_percentage: typing.Optional[int] = None
133
- task_data_login: typing.Optional[str] = pydantic_v1.Field(default=None)
145
+ task_data_login: typing.Optional[str] = pydantic.Field(default=None)
134
146
  """
135
147
  Task data credentials: login
136
148
  """
137
149
 
138
- task_data_password: typing.Optional[str] = pydantic_v1.Field(default=None)
150
+ task_data_password: typing.Optional[str] = pydantic.Field(default=None)
139
151
  """
140
152
  Task data credentials: password
141
153
  """
142
154
 
143
- control_weights: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
155
+ control_weights: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
144
156
  """
145
157
  Dict of weights for each control tag in metric calculation. Each control tag (e.g. label or choice) will have it's own key in control weight dict with weight for each label and overall weight.For example, if bounding box annotation with control tag named my_bbox should be included with 0.33 weight in agreement calculation, and the first label Car should be twice more important than Airplaine, then you have to need the specify: {'my_bbox': {'type': 'RectangleLabels', 'labels': {'Car': 1.0, 'Airplaine': 0.5}, 'overall': 0.33}
146
158
  """
147
159
 
148
- parsed_label_config: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
160
+ parsed_label_config: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(default=None)
149
161
  """
150
162
  JSON-formatted labeling configuration
151
163
  """
152
164
 
153
- evaluate_predictions_automatically: typing.Optional[bool] = pydantic_v1.Field(default=None)
165
+ evaluate_predictions_automatically: typing.Optional[bool] = pydantic.Field(default=None)
154
166
  """
155
167
  Retrieve and display predictions when loading a task
156
168
  """
157
169
 
158
- config_has_control_tags: typing.Optional[str] = pydantic_v1.Field(default=None)
170
+ config_has_control_tags: typing.Optional[bool] = pydantic.Field(default=None)
159
171
  """
160
172
  Flag to detect is project ready for labeling
161
173
  """
162
174
 
163
175
  skip_queue: typing.Optional[ProjectSkipQueue] = None
164
- reveal_preannotations_interactively: typing.Optional[bool] = pydantic_v1.Field(default=None)
176
+ reveal_preannotations_interactively: typing.Optional[bool] = pydantic.Field(default=None)
165
177
  """
166
178
  Reveal pre-annotations interactively
167
179
  """
168
180
 
169
- pinned_at: typing.Optional[dt.datetime] = pydantic_v1.Field(default=None)
181
+ pinned_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
170
182
  """
171
183
  Pinned date and time
172
184
  """
173
185
 
174
- finished_task_number: typing.Optional[int] = pydantic_v1.Field(default=None)
186
+ finished_task_number: typing.Optional[int] = pydantic.Field(default=None)
175
187
  """
176
188
  Finished tasks
177
189
  """
178
190
 
179
- queue_total: typing.Optional[str] = None
180
- queue_done: typing.Optional[str] = None
181
-
182
- def json(self, **kwargs: typing.Any) -> str:
183
- kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
184
- return super().json(**kwargs_with_defaults)
185
-
186
- def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
187
- kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
188
- kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
191
+ queue_total: typing.Optional[int] = None
192
+ queue_done: typing.Optional[int] = None
189
193
 
190
- return deep_union_pydantic_dicts(
191
- super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
192
- )
194
+ if IS_PYDANTIC_V2:
195
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
196
+ else:
193
197
 
194
- class Config:
195
- frozen = True
196
- smart_union = True
197
- extra = pydantic_v1.Extra.allow
198
- json_encoders = {dt.datetime: serialize_datetime}
198
+ class Config:
199
+ frozen = True
200
+ smart_union = True
201
+ extra = pydantic.Extra.allow