label-studio-sdk 2.0.6__py3-none-any.whl → 2.0.8__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.
Files changed (67) hide show
  1. label_studio_sdk/__init__.py +32 -2
  2. label_studio_sdk/base_client.py +4 -0
  3. label_studio_sdk/converter/exports/yolo.py +89 -74
  4. label_studio_sdk/core/client_wrapper.py +1 -1
  5. label_studio_sdk/import_storage/azure_spi/client.py +30 -0
  6. label_studio_sdk/label_interface/control_tags.py +38 -0
  7. label_studio_sdk/label_interface/data_examples.json +10 -0
  8. label_studio_sdk/label_interface/interface.py +13 -0
  9. label_studio_sdk/label_interface/object_tags.py +9 -0
  10. label_studio_sdk/ml/client.py +124 -0
  11. label_studio_sdk/organizations/__init__.py +3 -2
  12. label_studio_sdk/organizations/client.py +540 -1
  13. label_studio_sdk/organizations/invites/__init__.py +2 -0
  14. label_studio_sdk/organizations/invites/client.py +368 -0
  15. label_studio_sdk/organizations/permissions/__init__.py +2 -0
  16. label_studio_sdk/organizations/permissions/client.py +1129 -0
  17. label_studio_sdk/organizations/types/__init__.py +5 -0
  18. label_studio_sdk/organizations/types/patched_default_role_request_custom_scripts_editable_by.py +7 -0
  19. label_studio_sdk/project_templates/__init__.py +2 -0
  20. label_studio_sdk/project_templates/client.py +909 -0
  21. label_studio_sdk/projects/__init__.py +30 -0
  22. label_studio_sdk/projects/client.py +355 -0
  23. label_studio_sdk/projects/stats/__init__.py +28 -0
  24. label_studio_sdk/projects/stats/client.py +1002 -43
  25. label_studio_sdk/projects/stats/types/__init__.py +30 -0
  26. label_studio_sdk/projects/stats/types/stats_agreement_annotator_response.py +26 -0
  27. label_studio_sdk/projects/stats/types/stats_data_filters_response.py +23 -0
  28. label_studio_sdk/projects/stats/types/stats_data_filters_response_user_filters.py +34 -0
  29. label_studio_sdk/projects/stats/types/stats_data_filters_response_user_filters_stats_item.py +22 -0
  30. label_studio_sdk/projects/stats/types/stats_finished_tasks_response.py +32 -0
  31. label_studio_sdk/projects/stats/types/stats_lead_time_response.py +23 -0
  32. label_studio_sdk/projects/stats/types/stats_lead_time_response_lead_time_stats_item.py +37 -0
  33. label_studio_sdk/projects/stats/types/stats_user_ground_truth_agreement_response.py +20 -0
  34. label_studio_sdk/projects/stats/types/stats_user_ground_truth_agreement_response_agreement.py +5 -0
  35. label_studio_sdk/projects/stats/types/stats_user_prediction_agreement_response.py +24 -0
  36. label_studio_sdk/projects/stats/types/stats_user_prediction_agreement_response_average_prediction_agreement_per_user.py +5 -0
  37. label_studio_sdk/projects/stats/types/stats_user_review_score_response.py +22 -0
  38. label_studio_sdk/projects/stats/types/stats_user_review_score_response_performance_score.py +5 -0
  39. label_studio_sdk/projects/stats/types/stats_user_review_score_response_review_score.py +5 -0
  40. label_studio_sdk/projects/types/__init__.py +2 -0
  41. label_studio_sdk/projects/types/projects_import_predictions_response.py +26 -0
  42. label_studio_sdk/prompts/versions/client.py +4 -16
  43. label_studio_sdk/types/__init__.py +26 -2
  44. label_studio_sdk/types/azure_service_principal_import_storage.py +5 -0
  45. label_studio_sdk/types/azure_service_principal_import_storage_request.py +5 -0
  46. label_studio_sdk/types/configurable_permission_option.py +25 -0
  47. label_studio_sdk/types/configurable_permission_option_default.py +7 -0
  48. label_studio_sdk/types/default_role.py +75 -0
  49. label_studio_sdk/types/default_role_custom_scripts_editable_by.py +7 -0
  50. label_studio_sdk/types/lse_organization.py +2 -2
  51. label_studio_sdk/types/lse_project.py +223 -0
  52. label_studio_sdk/types/lse_project_counts.py +46 -0
  53. label_studio_sdk/types/lse_project_sampling.py +7 -0
  54. label_studio_sdk/types/lse_project_skip_queue.py +7 -0
  55. label_studio_sdk/types/lse_task.py +1 -1
  56. label_studio_sdk/types/lse_task_serializer_for_reviewers.py +1 -1
  57. label_studio_sdk/types/organization_permission.py +31 -0
  58. label_studio_sdk/types/organization_permission_request.py +24 -0
  59. label_studio_sdk/types/paginated_lse_project_counts_list.py +23 -0
  60. label_studio_sdk/types/project_template.py +41 -0
  61. label_studio_sdk/types/project_template_request.py +38 -0
  62. label_studio_sdk/types/who_am_i_user.py +1 -0
  63. {label_studio_sdk-2.0.6.dist-info → label_studio_sdk-2.0.8.dist-info}/METADATA +1 -1
  64. {label_studio_sdk-2.0.6.dist-info → label_studio_sdk-2.0.8.dist-info}/RECORD +66 -31
  65. label_studio_sdk/types/default_role_enum.py +0 -5
  66. {label_studio_sdk-2.0.6.dist-info → label_studio_sdk-2.0.8.dist-info}/LICENSE +0 -0
  67. {label_studio_sdk-2.0.6.dist-info → label_studio_sdk-2.0.8.dist-info}/WHEEL +0 -0
@@ -0,0 +1,75 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ import datetime as dt
6
+ import pydantic
7
+ from .default_role_custom_scripts_editable_by import DefaultRoleCustomScriptsEditableBy
8
+ from .role9e7enum import Role9E7Enum
9
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
10
+
11
+
12
+ class DefaultRole(UncheckedBaseModel):
13
+ annotator_reviewer_firewall_enabled_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
14
+ """
15
+ Set to current time to restrict data sharing between annotators and reviewers in the label stream, review stream, and notifications (which will be disabled). In these settings, information about annotator and reviewer identity is suppressed in the UI.
16
+ """
17
+
18
+ custom_scripts_editable_by: typing.Optional[DefaultRoleCustomScriptsEditableBy] = pydantic.Field(default=None)
19
+ """
20
+ Set the minimum user role that can edit custom scripts in the UI.
21
+
22
+ * `AD` - Administrator
23
+ * `MA` - Manager
24
+ """
25
+
26
+ custom_scripts_enabled_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
27
+ """
28
+ Set to current time to enabled custom scripts for this organization. Can only be enabled if no organization members are active members of any other organizations; otherwise an error will be raised. If this occurs, contact the LEAP team for assistance with enabling custom scripts.
29
+ """
30
+
31
+ default_role: typing.Optional[Role9E7Enum] = pydantic.Field(default=None)
32
+ """
33
+ Default membership role for invited users
34
+
35
+ * `OW` - Owner
36
+ * `AD` - Administrator
37
+ * `MA` - Manager
38
+ * `RE` - Reviewer
39
+ * `AN` - Annotator
40
+ * `DI` - Deactivated
41
+ * `NO` - Not Activated
42
+ """
43
+
44
+ email_notification_settings: typing.Optional[typing.Optional[typing.Any]] = None
45
+ embed_domains: typing.Optional[typing.Optional[typing.Any]] = None
46
+ embed_settings: typing.Optional[typing.Optional[typing.Any]] = None
47
+ external_id: typing.Optional[str] = pydantic.Field(default=None)
48
+ """
49
+ External ID to uniquely identify this organization
50
+ """
51
+
52
+ extra_data_on_activity_logs: typing.Optional[bool] = None
53
+ label_stream_navigation_disabled_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
54
+ """
55
+ Set to current time to disable the label stream navigation for this organization. This will prevent users from going back in the label stream to view previous labels.
56
+ """
57
+
58
+ organization: int = pydantic.Field()
59
+ """
60
+ A unique integer value identifying this organization.
61
+ """
62
+
63
+ read_only_quick_view_enabled_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
64
+ """
65
+ Set to current time to prevent creating or editing annotations in quick view.
66
+ """
67
+
68
+ if IS_PYDANTIC_V2:
69
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
70
+ else:
71
+
72
+ class Config:
73
+ frozen = True
74
+ smart_union = True
75
+ extra = pydantic.Extra.allow
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from .custom_scripts_editable_by_enum import CustomScriptsEditableByEnum
5
+ from .null_enum import NullEnum
6
+
7
+ DefaultRoleCustomScriptsEditableBy = typing.Union[CustomScriptsEditableByEnum, NullEnum]
@@ -6,7 +6,7 @@ import datetime as dt
6
6
  import typing
7
7
  from .lse_organization_custom_scripts_editable_by import LseOrganizationCustomScriptsEditableBy
8
8
  import pydantic
9
- from .default_role_enum import DefaultRoleEnum
9
+ from .role9e7enum import Role9E7Enum
10
10
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
11
11
 
12
12
 
@@ -22,7 +22,7 @@ class LseOrganization(UncheckedBaseModel):
22
22
  """
23
23
 
24
24
  custom_scripts_enabled: str
25
- default_role: typing.Optional[DefaultRoleEnum] = pydantic.Field(default=None)
25
+ default_role: typing.Optional[Role9E7Enum] = pydantic.Field(default=None)
26
26
  """
27
27
  Default membership role for invited users
28
28
 
@@ -0,0 +1,223 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from .assignment_settings import AssignmentSettings
6
+ import pydantic
7
+ import datetime as dt
8
+ from .user_simple import UserSimple
9
+ from .review_settings import ReviewSettings
10
+ from .lse_project_sampling import LseProjectSampling
11
+ from .lse_project_skip_queue import LseProjectSkipQueue
12
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
13
+
14
+
15
+ class LseProject(UncheckedBaseModel):
16
+ """
17
+ Serializer get numbers from project queryset annotation,
18
+ make sure, that you use correct one(Project.objects.with_counts())
19
+ """
20
+
21
+ annotation_limit_count: typing.Optional[int] = None
22
+ annotation_limit_percent: typing.Optional[str] = None
23
+ annotator_evaluation_minimum_score: typing.Optional[str] = None
24
+ annotator_evaluation_minimum_tasks: typing.Optional[int] = None
25
+ assignment_settings: AssignmentSettings
26
+ color: typing.Optional[str] = None
27
+ comment_classification_config: typing.Optional[str] = None
28
+ config_has_control_tags: bool = pydantic.Field()
29
+ """
30
+ Flag to detect is project ready for labeling
31
+ """
32
+
33
+ config_suitable_for_bulk_annotation: bool = pydantic.Field()
34
+ """
35
+ Flag to detect is project ready for bulk annotation
36
+ """
37
+
38
+ control_weights: typing.Optional[typing.Optional[typing.Any]] = None
39
+ created_at: dt.datetime
40
+ created_by: typing.Optional[UserSimple] = pydantic.Field(default=None)
41
+ """
42
+ Project owner
43
+ """
44
+
45
+ custom_script: typing.Optional[str] = None
46
+ custom_task_lock_ttl: typing.Optional[int] = pydantic.Field(default=None)
47
+ """
48
+ TTL in seconds for task reservations, on new and existing tasks
49
+ """
50
+
51
+ data_types: typing.Optional[typing.Any] = None
52
+ description: typing.Optional[str] = pydantic.Field(default=None)
53
+ """
54
+ Project description
55
+ """
56
+
57
+ duplication_done: typing.Optional[bool] = None
58
+ duplication_status: typing.Optional[str] = None
59
+ enable_empty_annotation: typing.Optional[bool] = pydantic.Field(default=None)
60
+ """
61
+ Allow annotators to submit empty annotations
62
+ """
63
+
64
+ evaluate_predictions_automatically: typing.Optional[bool] = pydantic.Field(default=None)
65
+ """
66
+ Retrieve and display predictions when loading a task
67
+ """
68
+
69
+ expert_instruction: typing.Optional[str] = pydantic.Field(default=None)
70
+ """
71
+ Labeling instructions in HTML format
72
+ """
73
+
74
+ finished_task_number: int = pydantic.Field()
75
+ """
76
+ Finished tasks
77
+ """
78
+
79
+ ground_truth_number: int = pydantic.Field()
80
+ """
81
+ Honeypot annotation number in project
82
+ """
83
+
84
+ id: int
85
+ is_draft: typing.Optional[bool] = pydantic.Field(default=None)
86
+ """
87
+ Whether or not the project is in the middle of being created
88
+ """
89
+
90
+ is_published: typing.Optional[bool] = pydantic.Field(default=None)
91
+ """
92
+ Whether or not the project is published to annotators
93
+ """
94
+
95
+ label_config: typing.Optional[str] = pydantic.Field(default=None)
96
+ """
97
+ Label config in XML format. See more about it in documentation
98
+ """
99
+
100
+ maximum_annotations: typing.Optional[int] = pydantic.Field(default=None)
101
+ """
102
+ 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)
103
+ """
104
+
105
+ members: str
106
+ members_count: int
107
+ min_annotations_to_start_training: typing.Optional[int] = pydantic.Field(default=None)
108
+ """
109
+ Minimum number of completed tasks after which model training is started
110
+ """
111
+
112
+ model_version: typing.Optional[str] = pydantic.Field(default=None)
113
+ """
114
+ Machine learning model version
115
+ """
116
+
117
+ num_tasks_with_annotations: int = pydantic.Field()
118
+ """
119
+ Tasks with annotations count
120
+ """
121
+
122
+ organization: typing.Optional[int] = None
123
+ overlap_cohort_percentage: typing.Optional[int] = None
124
+ parsed_label_config: typing.Optional[typing.Any] = None
125
+ pause_on_failed_annotator_evaluation: typing.Optional[bool] = None
126
+ pinned_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
127
+ """
128
+ Pinned date and time
129
+ """
130
+
131
+ prompts: str
132
+ queue_done: str
133
+ queue_left: str
134
+ queue_total: str
135
+ require_comment_on_skip: typing.Optional[bool] = None
136
+ reveal_preannotations_interactively: typing.Optional[bool] = pydantic.Field(default=None)
137
+ """
138
+ Reveal pre-annotations interactively
139
+ """
140
+
141
+ review_settings: ReviewSettings
142
+ reviewer_queue_total: str
143
+ sampling: typing.Optional[LseProjectSampling] = None
144
+ show_annotation_history: typing.Optional[bool] = pydantic.Field(default=None)
145
+ """
146
+ Show annotation history to annotator
147
+ """
148
+
149
+ show_collab_predictions: typing.Optional[bool] = pydantic.Field(default=None)
150
+ """
151
+ If set, the annotator can view model predictions
152
+ """
153
+
154
+ show_ground_truth_first: typing.Optional[bool] = None
155
+ show_instruction: typing.Optional[bool] = pydantic.Field(default=None)
156
+ """
157
+ Show instructions to the annotator before they start
158
+ """
159
+
160
+ show_overlap_first: typing.Optional[bool] = None
161
+ show_skip_button: typing.Optional[bool] = pydantic.Field(default=None)
162
+ """
163
+ Show a skip button in interface and allow annotators to skip the task
164
+ """
165
+
166
+ show_unused_data_columns_to_annotators: typing.Optional[bool] = None
167
+ skip_queue: typing.Optional[LseProjectSkipQueue] = None
168
+ skipped_annotations_number: int = pydantic.Field()
169
+ """
170
+ Skipped by collaborators annotation number in project
171
+ """
172
+
173
+ start_training_on_annotation_update: bool = pydantic.Field()
174
+ """
175
+ Start model training after any annotations are submitted or updated
176
+ """
177
+
178
+ task_data_login: typing.Optional[str] = pydantic.Field(default=None)
179
+ """
180
+ Task data credentials: login
181
+ """
182
+
183
+ task_data_password: typing.Optional[str] = pydantic.Field(default=None)
184
+ """
185
+ Task data credentials: password
186
+ """
187
+
188
+ task_number: int = pydantic.Field()
189
+ """
190
+ Total task number in project
191
+ """
192
+
193
+ title: typing.Optional[str] = pydantic.Field(default=None)
194
+ """
195
+ Project name. Must be between 3 and 50 characters long.
196
+ """
197
+
198
+ total_annotations_number: int = pydantic.Field()
199
+ """
200
+ Total annotations number in project including skipped_annotations_number and ground_truth_number.
201
+ """
202
+
203
+ total_predictions_number: int = pydantic.Field()
204
+ """
205
+ Total predictions number in project including skipped_annotations_number, ground_truth_number, and useful_annotation_number.
206
+ """
207
+
208
+ useful_annotation_number: int = pydantic.Field()
209
+ """
210
+ Useful annotation number in project not including skipped_annotations_number and ground_truth_number. Total annotations = annotation_number + skipped_annotations_number + ground_truth_number
211
+ """
212
+
213
+ workspace: str
214
+ workspace_title: str
215
+
216
+ if IS_PYDANTIC_V2:
217
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
218
+ else:
219
+
220
+ class Config:
221
+ frozen = True
222
+ smart_union = True
223
+ extra = pydantic.Extra.allow
@@ -0,0 +1,46 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import pydantic
5
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import typing
7
+
8
+
9
+ class LseProjectCounts(UncheckedBaseModel):
10
+ """
11
+ Serializer get numbers from project queryset annotation,
12
+ make sure, that you use correct one(Project.objects.with_counts())
13
+ """
14
+
15
+ finished_task_number: int
16
+ ground_truth_number: int = pydantic.Field()
17
+ """
18
+ Honeypot annotation number in project
19
+ """
20
+
21
+ id: int
22
+ num_tasks_with_annotations: str
23
+ queue_done: str
24
+ queue_left: str
25
+ queue_total: str
26
+ rejected: str
27
+ review_total_tasks: str
28
+ reviewed_number: str
29
+ skipped_annotations_number: str
30
+ task_number: int = pydantic.Field()
31
+ """
32
+ Total task number in project
33
+ """
34
+
35
+ total_annotations_number: str
36
+ total_predictions_number: int
37
+ useful_annotation_number: str
38
+
39
+ if IS_PYDANTIC_V2:
40
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
41
+ else:
42
+
43
+ class Config:
44
+ frozen = True
45
+ smart_union = True
46
+ extra = pydantic.Extra.allow
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from .sampling_enum import SamplingEnum
5
+ from .null_enum import NullEnum
6
+
7
+ LseProjectSampling = typing.Union[SamplingEnum, NullEnum]
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from .skip_queue_enum import SkipQueueEnum
5
+ from .null_enum import NullEnum
6
+
7
+ LseProjectSkipQueue = typing.Union[SkipQueueEnum, NullEnum]
@@ -15,7 +15,7 @@ class LseTask(UncheckedBaseModel):
15
15
  """
16
16
 
17
17
  agreement: str
18
- agreement_filtered: str
18
+ agreement_selected: str
19
19
  annotations: str
20
20
  annotations_ids: str
21
21
  annotations_results: str
@@ -15,7 +15,7 @@ class LseTaskSerializerForReviewers(UncheckedBaseModel):
15
15
  """
16
16
 
17
17
  agreement: str
18
- agreement_filtered: str
18
+ agreement_selected: str
19
19
  annotations: str
20
20
  annotations_ids: str
21
21
  annotations_results: str
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from .role9e7enum import Role9E7Enum
6
+ import pydantic
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
+
9
+
10
+ class OrganizationPermission(UncheckedBaseModel):
11
+ default_role: str
12
+ id: int
13
+ label: str
14
+ options: str
15
+ organization: int
16
+ permission: str
17
+ roles: typing.Optional[typing.List[Role9E7Enum]] = pydantic.Field(default=None)
18
+ """
19
+ Explicit roles that have this permission within the organization.
20
+ """
21
+
22
+ tooltip: str
23
+
24
+ if IS_PYDANTIC_V2:
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
26
+ else:
27
+
28
+ class Config:
29
+ frozen = True
30
+ smart_union = True
31
+ extra = pydantic.Extra.allow
@@ -0,0 +1,24 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from .role9e7enum import Role9E7Enum
6
+ import pydantic
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
+
9
+
10
+ class OrganizationPermissionRequest(UncheckedBaseModel):
11
+ permission: str
12
+ roles: typing.Optional[typing.List[Role9E7Enum]] = pydantic.Field(default=None)
13
+ """
14
+ Explicit roles that have this permission within the organization.
15
+ """
16
+
17
+ if IS_PYDANTIC_V2:
18
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
19
+ else:
20
+
21
+ class Config:
22
+ frozen = True
23
+ smart_union = True
24
+ extra = pydantic.Extra.allow
@@ -0,0 +1,23 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ from .lse_project_counts import LseProjectCounts
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
7
+ import pydantic
8
+
9
+
10
+ class PaginatedLseProjectCountsList(UncheckedBaseModel):
11
+ count: int
12
+ next: typing.Optional[str] = None
13
+ previous: typing.Optional[str] = None
14
+ results: typing.List[LseProjectCounts]
15
+
16
+ if IS_PYDANTIC_V2:
17
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
18
+ else:
19
+
20
+ class Config:
21
+ frozen = True
22
+ smart_union = True
23
+ extra = pydantic.Extra.allow
@@ -0,0 +1,41 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ import datetime as dt
6
+ import pydantic
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
+
9
+
10
+ class ProjectTemplate(UncheckedBaseModel):
11
+ assignment_settings: typing.Optional[typing.Optional[typing.Any]] = None
12
+ created_at: dt.datetime
13
+ created_by: typing.Optional[int] = None
14
+ custom_script: typing.Optional[str] = pydantic.Field(default=None)
15
+ """
16
+ custom script for projects created from this template
17
+ """
18
+
19
+ description: typing.Optional[str] = None
20
+ id: int
21
+ name: str
22
+ organization: typing.Optional[int] = None
23
+ project_settings: typing.Optional[typing.Optional[typing.Any]] = None
24
+ require_comment_on_skip: typing.Optional[bool] = pydantic.Field(default=None)
25
+ """
26
+ flag to require comment on skip
27
+ """
28
+
29
+ review_settings: typing.Optional[typing.Optional[typing.Any]] = None
30
+ show_unused_data_columns_to_annotators: typing.Optional[bool] = None
31
+ tags: typing.Optional[typing.Optional[typing.Any]] = None
32
+ updated_at: dt.datetime
33
+
34
+ if IS_PYDANTIC_V2:
35
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
36
+ else:
37
+
38
+ class Config:
39
+ frozen = True
40
+ smart_union = True
41
+ extra = pydantic.Extra.allow
@@ -0,0 +1,38 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.unchecked_base_model import UncheckedBaseModel
4
+ import typing
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
7
+
8
+
9
+ class ProjectTemplateRequest(UncheckedBaseModel):
10
+ assignment_settings: typing.Optional[typing.Optional[typing.Any]] = None
11
+ created_by: typing.Optional[int] = None
12
+ custom_script: typing.Optional[str] = pydantic.Field(default=None)
13
+ """
14
+ custom script for projects created from this template
15
+ """
16
+
17
+ description: typing.Optional[str] = None
18
+ name: str
19
+ organization: typing.Optional[int] = None
20
+ project_id: int
21
+ project_settings: typing.Optional[typing.Optional[typing.Any]] = None
22
+ require_comment_on_skip: typing.Optional[bool] = pydantic.Field(default=None)
23
+ """
24
+ flag to require comment on skip
25
+ """
26
+
27
+ review_settings: typing.Optional[typing.Optional[typing.Any]] = None
28
+ show_unused_data_columns_to_annotators: typing.Optional[bool] = None
29
+ tags: typing.Optional[typing.Optional[typing.Any]] = None
30
+
31
+ if IS_PYDANTIC_V2:
32
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
33
+ else:
34
+
35
+ class Config:
36
+ frozen = True
37
+ smart_union = True
38
+ extra = pydantic.Extra.allow
@@ -36,6 +36,7 @@ class WhoAmIUser(UncheckedBaseModel):
36
36
  lse_fields: WhoAmILseFields
37
37
  org_membership: typing.List[OrganizationMembership]
38
38
  pause: str
39
+ permissions: typing.List[str]
39
40
  phone: typing.Optional[str] = None
40
41
  username: str
41
42
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: label-studio-sdk
3
- Version: 2.0.6
3
+ Version: 2.0.8
4
4
  Summary:
5
5
  Requires-Python: >=3.9,<4
6
6
  Classifier: Intended Audience :: Developers