label-studio-sdk 2.0.8__py3-none-any.whl → 2.0.10__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 (75) hide show
  1. label_studio_sdk/__init__.py +36 -16
  2. label_studio_sdk/base_client.py +0 -4
  3. label_studio_sdk/core/client_wrapper.py +1 -1
  4. label_studio_sdk/export_storage/__init__.py +13 -2
  5. label_studio_sdk/export_storage/client.py +4 -0
  6. label_studio_sdk/export_storage/databricks/client.py +1406 -0
  7. label_studio_sdk/import_storage/__init__.py +13 -2
  8. label_studio_sdk/import_storage/client.py +4 -0
  9. label_studio_sdk/import_storage/databricks/__init__.py +2 -0
  10. label_studio_sdk/import_storage/databricks/client.py +1466 -0
  11. label_studio_sdk/import_storage/gcswif/client.py +30 -0
  12. label_studio_sdk/organizations/invites/client.py +31 -6
  13. label_studio_sdk/projects/__init__.py +0 -2
  14. label_studio_sdk/projects/client.py +186 -32
  15. label_studio_sdk/projects/client_ext.py +20 -8
  16. label_studio_sdk/projects/types/__init__.py +0 -2
  17. label_studio_sdk/projects/types/lse_project_create_request_sampling.py +2 -2
  18. label_studio_sdk/projects/types/patched_lse_project_update_request_sampling.py +2 -2
  19. label_studio_sdk/prompts/client.py +340 -1
  20. label_studio_sdk/prompts/runs/client.py +127 -0
  21. label_studio_sdk/tasks/client.py +7 -2
  22. label_studio_sdk/types/__init__.py +36 -12
  23. label_studio_sdk/types/all_roles_project_list.py +10 -10
  24. label_studio_sdk/types/all_roles_project_list_sampling.py +2 -2
  25. label_studio_sdk/types/azure_blob_import_storage.py +5 -0
  26. label_studio_sdk/types/cancel_model_run_response.py +19 -0
  27. label_studio_sdk/types/configurable_permission_option.py +2 -2
  28. label_studio_sdk/types/databricks_export_storage.py +113 -0
  29. label_studio_sdk/types/databricks_export_storage_request.py +107 -0
  30. label_studio_sdk/types/databricks_import_storage.py +123 -0
  31. label_studio_sdk/types/databricks_import_storage_request.py +117 -0
  32. label_studio_sdk/types/default165enum.py +5 -0
  33. label_studio_sdk/types/gcs_import_storage.py +5 -0
  34. label_studio_sdk/types/gcswif_import_storage.py +5 -0
  35. label_studio_sdk/types/gcswif_import_storage_request.py +5 -0
  36. label_studio_sdk/types/local_files_import_storage.py +5 -0
  37. label_studio_sdk/types/lse_project_counts.py +8 -8
  38. label_studio_sdk/types/lse_project_create_sampling.py +2 -2
  39. label_studio_sdk/types/{project.py → lse_project_response.py} +44 -31
  40. label_studio_sdk/types/lse_project_response_sampling.py +7 -0
  41. label_studio_sdk/types/{project_skip_queue.py → lse_project_response_skip_queue.py} +1 -1
  42. label_studio_sdk/types/lse_project_sampling.py +2 -2
  43. label_studio_sdk/types/lse_project_update_sampling.py +2 -2
  44. label_studio_sdk/types/lse_task.py +6 -0
  45. label_studio_sdk/types/lse_task_serializer_for_reviewers.py +6 -0
  46. label_studio_sdk/types/lse_user.py +1 -0
  47. label_studio_sdk/types/lse_user_api.py +1 -0
  48. label_studio_sdk/types/options165enum.py +5 -0
  49. label_studio_sdk/types/organization_permission.py +7 -4
  50. label_studio_sdk/types/paginated_project_member.py +1 -0
  51. label_studio_sdk/types/paginated_project_subset_tasks_response_list.py +23 -0
  52. label_studio_sdk/types/project_subset_item.py +21 -0
  53. label_studio_sdk/types/project_subset_task_item.py +24 -0
  54. label_studio_sdk/types/project_subset_tasks_response.py +27 -0
  55. label_studio_sdk/types/review_settings.py +14 -0
  56. label_studio_sdk/types/review_settings_request.py +14 -0
  57. label_studio_sdk/types/review_settings_request_sampling.py +8 -0
  58. label_studio_sdk/types/review_settings_sampling.py +8 -0
  59. label_studio_sdk/types/review_settings_sampling_enum.py +5 -0
  60. label_studio_sdk/types/{sampling_enum.py → sampling_de5enum.py} +1 -1
  61. label_studio_sdk/types/who_am_i_user.py +1 -0
  62. label_studio_sdk/workspaces/client.py +60 -0
  63. label_studio_sdk/workspaces/members/bulk/client.py +24 -0
  64. label_studio_sdk/workspaces/members/client.py +36 -0
  65. label_studio_sdk/workspaces/members/paginated/client.py +12 -0
  66. {label_studio_sdk-2.0.8.dist-info → label_studio_sdk-2.0.10.dist-info}/METADATA +41 -90
  67. {label_studio_sdk-2.0.8.dist-info → label_studio_sdk-2.0.10.dist-info}/RECORD +70 -57
  68. label_studio_sdk/blueprints/client.py +0 -272
  69. label_studio_sdk/projects/types/projects_list_request_filter.py +0 -5
  70. label_studio_sdk/types/blueprint.py +0 -41
  71. label_studio_sdk/types/configurable_permission_option_default.py +0 -7
  72. label_studio_sdk/types/project_sampling.py +0 -7
  73. /label_studio_sdk/{blueprints → export_storage/databricks}/__init__.py +0 -0
  74. {label_studio_sdk-2.0.8.dist-info → label_studio_sdk-2.0.10.dist-info}/LICENSE +0 -0
  75. {label_studio_sdk-2.0.8.dist-info → label_studio_sdk-2.0.10.dist-info}/WHEEL +0 -0
@@ -0,0 +1,117 @@
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
+ import typing
6
+ import datetime as dt
7
+ import typing_extensions
8
+ from ..core.serialization import FieldMetadata
9
+ from .status_c5a_enum import StatusC5AEnum
10
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
11
+
12
+
13
+ class DatabricksImportStorageRequest(UncheckedBaseModel):
14
+ catalog: str = pydantic.Field()
15
+ """
16
+ UC catalog name
17
+ """
18
+
19
+ description: typing.Optional[str] = pydantic.Field(default=None)
20
+ """
21
+ Cloud storage description
22
+ """
23
+
24
+ host: str = pydantic.Field()
25
+ """
26
+ Databricks workspace base URL (https://...)
27
+ """
28
+
29
+ last_sync: typing.Optional[dt.datetime] = pydantic.Field(default=None)
30
+ """
31
+ Last sync finished time
32
+ """
33
+
34
+ last_sync_count: typing.Optional[int] = pydantic.Field(default=None)
35
+ """
36
+ Count of tasks synced last time
37
+ """
38
+
39
+ last_sync_job: typing.Optional[str] = pydantic.Field(default=None)
40
+ """
41
+ Last sync job ID
42
+ """
43
+
44
+ meta: typing.Optional[typing.Optional[typing.Any]] = None
45
+ prefix: typing.Optional[str] = pydantic.Field(default=None)
46
+ """
47
+ Path under the volume
48
+ """
49
+
50
+ presign: typing.Optional[bool] = pydantic.Field(default=None)
51
+ """
52
+ Presign not supported; always proxied
53
+ """
54
+
55
+ presign_ttl: typing.Optional[int] = pydantic.Field(default=None)
56
+ """
57
+ Unused for Databricks; kept for compatibility
58
+ """
59
+
60
+ project: int = pydantic.Field()
61
+ """
62
+ A unique integer value identifying this project.
63
+ """
64
+
65
+ recursive_scan: typing.Optional[bool] = pydantic.Field(default=None)
66
+ """
67
+ Perform recursive scan
68
+ """
69
+
70
+ regex_filter: typing.Optional[str] = pydantic.Field(default=None)
71
+ """
72
+ Regex for filtering objects
73
+ """
74
+
75
+ request_timeout_s: typing.Optional[int] = None
76
+ schema_: typing_extensions.Annotated[str, FieldMetadata(alias="schema")] = pydantic.Field()
77
+ """
78
+ UC schema name
79
+ """
80
+
81
+ status: typing.Optional[StatusC5AEnum] = None
82
+ stream_chunk_bytes: typing.Optional[int] = None
83
+ synchronizable: typing.Optional[bool] = None
84
+ title: typing.Optional[str] = pydantic.Field(default=None)
85
+ """
86
+ Cloud storage title
87
+ """
88
+
89
+ token: typing.Optional[str] = None
90
+ traceback: typing.Optional[str] = pydantic.Field(default=None)
91
+ """
92
+ Traceback report for the last failed sync
93
+ """
94
+
95
+ use_blob_urls: typing.Optional[bool] = pydantic.Field(default=None)
96
+ """
97
+ Generate blob URLs in tasks
98
+ """
99
+
100
+ verify_tls: typing.Optional[bool] = pydantic.Field(default=None)
101
+ """
102
+ Verify TLS certificates
103
+ """
104
+
105
+ volume: str = pydantic.Field()
106
+ """
107
+ UC volume name
108
+ """
109
+
110
+ if IS_PYDANTIC_V2:
111
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
112
+ else:
113
+
114
+ class Config:
115
+ frozen = True
116
+ smart_union = True
117
+ 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
+ Default165Enum = typing.Union[typing.Literal["OW", "AD", "MA", "RE", "AN", "DI", "NO"], typing.Any]
@@ -67,6 +67,11 @@ class GcsImportStorage(UncheckedBaseModel):
67
67
  A unique integer value identifying this project.
68
68
  """
69
69
 
70
+ recursive_scan: typing.Optional[bool] = pydantic.Field(default=None)
71
+ """
72
+ Perform recursive scan over the bucket content
73
+ """
74
+
70
75
  regex_filter: typing.Optional[str] = pydantic.Field(default=None)
71
76
  """
72
77
  Cloud storage regex for filtering objects
@@ -87,6 +87,11 @@ class GcswifImportStorage(UncheckedBaseModel):
87
87
  A unique integer value identifying this project.
88
88
  """
89
89
 
90
+ recursive_scan: typing.Optional[bool] = pydantic.Field(default=None)
91
+ """
92
+ Perform recursive scan over the bucket content
93
+ """
94
+
90
95
  regex_filter: typing.Optional[str] = pydantic.Field(default=None)
91
96
  """
92
97
  Cloud storage regex for filtering objects
@@ -81,6 +81,11 @@ class GcswifImportStorageRequest(UncheckedBaseModel):
81
81
  A unique integer value identifying this project.
82
82
  """
83
83
 
84
+ recursive_scan: typing.Optional[bool] = pydantic.Field(default=None)
85
+ """
86
+ Perform recursive scan over the bucket content
87
+ """
88
+
84
89
  regex_filter: typing.Optional[str] = pydantic.Field(default=None)
85
90
  """
86
91
  Cloud storage regex for filtering objects
@@ -46,6 +46,11 @@ class LocalFilesImportStorage(UncheckedBaseModel):
46
46
  A unique integer value identifying this project.
47
47
  """
48
48
 
49
+ recursive_scan: typing.Optional[bool] = pydantic.Field(default=None)
50
+ """
51
+ Perform recursive scan over the directory content
52
+ """
53
+
49
54
  regex_filter: typing.Optional[str] = pydantic.Field(default=None)
50
55
  """
51
56
  Regex for filtering objects
@@ -2,8 +2,8 @@
2
2
 
3
3
  from ..core.unchecked_base_model import UncheckedBaseModel
4
4
  import pydantic
5
- from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
5
  import typing
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
7
7
 
8
8
 
9
9
  class LseProjectCounts(UncheckedBaseModel):
@@ -19,13 +19,13 @@ class LseProjectCounts(UncheckedBaseModel):
19
19
  """
20
20
 
21
21
  id: int
22
- num_tasks_with_annotations: str
23
- queue_done: str
24
- queue_left: str
22
+ num_tasks_with_annotations: int
23
+ queue_done: int
24
+ queue_left: int
25
25
  queue_total: str
26
- rejected: str
27
- review_total_tasks: str
28
- reviewed_number: str
26
+ rejected: int
27
+ review_total_tasks: int
28
+ reviewed_number: int
29
29
  skipped_annotations_number: str
30
30
  task_number: int = pydantic.Field()
31
31
  """
@@ -34,7 +34,7 @@ class LseProjectCounts(UncheckedBaseModel):
34
34
 
35
35
  total_annotations_number: str
36
36
  total_predictions_number: int
37
- useful_annotation_number: str
37
+ useful_annotation_number: typing.Optional[int] = None
38
38
 
39
39
  if IS_PYDANTIC_V2:
40
40
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -1,7 +1,7 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
3
  import typing
4
- from .sampling_enum import SamplingEnum
4
+ from .sampling_de5enum import SamplingDe5Enum
5
5
  from .null_enum import NullEnum
6
6
 
7
- LseProjectCreateSampling = typing.Union[SamplingEnum, NullEnum]
7
+ LseProjectCreateSampling = typing.Union[SamplingDe5Enum, NullEnum]
@@ -2,21 +2,29 @@
2
2
 
3
3
  from ..core.unchecked_base_model import UncheckedBaseModel
4
4
  import typing
5
+ from .assignment_settings import AssignmentSettings
5
6
  import pydantic
6
7
  import datetime as dt
7
8
  from .user_simple import UserSimple
8
- from .project_sampling import ProjectSampling
9
- from .project_skip_queue import ProjectSkipQueue
9
+ from .review_settings import ReviewSettings
10
+ from .lse_project_response_sampling import LseProjectResponseSampling
11
+ from .lse_project_response_skip_queue import LseProjectResponseSkipQueue
10
12
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
11
13
 
12
14
 
13
- class Project(UncheckedBaseModel):
15
+ class LseProjectResponse(UncheckedBaseModel):
14
16
  """
15
- Serializer get numbers from project queryset annotation,
16
- make sure, that you use correct one(Project.objects.with_counts())
17
+ Serializer for project response, combining all the serializers for different roles. Don't use it except for Spectacular/Fern definitions.
17
18
  """
18
19
 
20
+ allow_stream: bool
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
19
26
  color: typing.Optional[str] = None
27
+ comment_classification_config: typing.Optional[str] = None
20
28
  config_has_control_tags: bool = pydantic.Field()
21
29
  """
22
30
  Flag to detect is project ready for labeling
@@ -34,11 +42,20 @@ class Project(UncheckedBaseModel):
34
42
  Project owner
35
43
  """
36
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
37
52
  description: typing.Optional[str] = pydantic.Field(default=None)
38
53
  """
39
54
  Project description
40
55
  """
41
56
 
57
+ duplication_done: typing.Optional[bool] = None
58
+ duplication_status: typing.Optional[str] = None
42
59
  enable_empty_annotation: typing.Optional[bool] = pydantic.Field(default=None)
43
60
  """
44
61
  Allow annotators to submit empty annotations
@@ -85,6 +102,8 @@ class Project(UncheckedBaseModel):
85
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)
86
103
  """
87
104
 
105
+ members: str
106
+ members_count: int
88
107
  min_annotations_to_start_training: typing.Optional[int] = pydantic.Field(default=None)
89
108
  """
90
109
  Minimum number of completed tasks after which model training is started
@@ -95,27 +114,33 @@ class Project(UncheckedBaseModel):
95
114
  Machine learning model version
96
115
  """
97
116
 
98
- num_tasks_with_annotations: int = pydantic.Field()
99
- """
100
- Tasks with annotations count
101
- """
102
-
117
+ num_tasks_with_annotations: int
103
118
  organization: typing.Optional[int] = None
104
119
  overlap_cohort_percentage: typing.Optional[int] = None
105
120
  parsed_label_config: typing.Optional[typing.Any] = None
121
+ pause_on_failed_annotator_evaluation: typing.Optional[bool] = None
106
122
  pinned_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
107
123
  """
108
124
  Pinned date and time
109
125
  """
110
126
 
127
+ prompts: str
111
128
  queue_done: int
129
+ queue_left: int
112
130
  queue_total: int
131
+ ready: bool
132
+ rejected: int
133
+ require_comment_on_skip: typing.Optional[bool] = None
113
134
  reveal_preannotations_interactively: typing.Optional[bool] = pydantic.Field(default=None)
114
135
  """
115
136
  Reveal pre-annotations interactively
116
137
  """
117
138
 
118
- sampling: typing.Optional[ProjectSampling] = None
139
+ review_settings: ReviewSettings
140
+ review_total_tasks: int
141
+ reviewed_number: int
142
+ reviewer_queue_total: int
143
+ sampling: typing.Optional[LseProjectResponseSampling] = None
119
144
  show_annotation_history: typing.Optional[bool] = pydantic.Field(default=None)
120
145
  """
121
146
  Show annotation history to annotator
@@ -138,12 +163,9 @@ class Project(UncheckedBaseModel):
138
163
  Show a skip button in interface and allow annotators to skip the task
139
164
  """
140
165
 
141
- skip_queue: typing.Optional[ProjectSkipQueue] = None
142
- skipped_annotations_number: int = pydantic.Field()
143
- """
144
- Skipped by collaborators annotation number in project
145
- """
146
-
166
+ show_unused_data_columns_to_annotators: typing.Optional[bool] = None
167
+ skip_queue: typing.Optional[LseProjectResponseSkipQueue] = None
168
+ skipped_annotations_number: int
147
169
  start_training_on_annotation_update: bool = pydantic.Field()
148
170
  """
149
171
  Start model training after any annotations are submitted or updated
@@ -169,20 +191,11 @@ class Project(UncheckedBaseModel):
169
191
  Project name. Must be between 3 and 50 characters long.
170
192
  """
171
193
 
172
- total_annotations_number: int = pydantic.Field()
173
- """
174
- Total annotations number in project including skipped_annotations_number and ground_truth_number.
175
- """
176
-
177
- total_predictions_number: int = pydantic.Field()
178
- """
179
- Total predictions number in project including skipped_annotations_number, ground_truth_number, and useful_annotation_number.
180
- """
181
-
182
- useful_annotation_number: int = pydantic.Field()
183
- """
184
- Useful annotation number in project not including skipped_annotations_number and ground_truth_number. Total annotations = annotation_number + skipped_annotations_number + ground_truth_number
185
- """
194
+ total_annotations_number: int
195
+ total_predictions_number: typing.Optional[int] = None
196
+ useful_annotation_number: typing.Optional[int] = None
197
+ workspace: str
198
+ workspace_title: str
186
199
 
187
200
  if IS_PYDANTIC_V2:
188
201
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from .sampling_de5enum import SamplingDe5Enum
5
+ from .null_enum import NullEnum
6
+
7
+ LseProjectResponseSampling = typing.Union[SamplingDe5Enum, NullEnum]
@@ -4,4 +4,4 @@ import typing
4
4
  from .skip_queue_enum import SkipQueueEnum
5
5
  from .null_enum import NullEnum
6
6
 
7
- ProjectSkipQueue = typing.Union[SkipQueueEnum, NullEnum]
7
+ LseProjectResponseSkipQueue = typing.Union[SkipQueueEnum, NullEnum]
@@ -1,7 +1,7 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
3
  import typing
4
- from .sampling_enum import SamplingEnum
4
+ from .sampling_de5enum import SamplingDe5Enum
5
5
  from .null_enum import NullEnum
6
6
 
7
- LseProjectSampling = typing.Union[SamplingEnum, NullEnum]
7
+ LseProjectSampling = typing.Union[SamplingDe5Enum, NullEnum]
@@ -1,7 +1,7 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
3
  import typing
4
- from .sampling_enum import SamplingEnum
4
+ from .sampling_de5enum import SamplingDe5Enum
5
5
  from .null_enum import NullEnum
6
6
 
7
- LseProjectUpdateSampling = typing.Union[SamplingEnum, NullEnum]
7
+ LseProjectUpdateSampling = typing.Union[SamplingDe5Enum, NullEnum]
@@ -85,6 +85,12 @@ class LseTask(UncheckedBaseModel):
85
85
  Project ID for this task
86
86
  """
87
87
 
88
+ review_time: int = pydantic.Field()
89
+ """
90
+ Calculate total review time for this task from MetricInTimeBucket records.
91
+ Returns time in seconds.
92
+ """
93
+
88
94
  reviewed: typing.Optional[bool] = None
89
95
  reviewers: typing.List[typing.Dict[str, typing.Optional[typing.Any]]]
90
96
  reviewers_count: int
@@ -85,6 +85,12 @@ class LseTaskSerializerForReviewers(UncheckedBaseModel):
85
85
  Project ID for this task
86
86
  """
87
87
 
88
+ review_time: int = pydantic.Field()
89
+ """
90
+ Calculate total review time for this task from MetricInTimeBucket records.
91
+ Returns time in seconds.
92
+ """
93
+
88
94
  reviewed: typing.Optional[bool] = None
89
95
  reviewers: typing.List[typing.Dict[str, typing.Optional[typing.Any]]]
90
96
  reviewers_count: int
@@ -35,6 +35,7 @@ class LseUser(UncheckedBaseModel):
35
35
  last_name: typing.Optional[str] = None
36
36
  lse_fields: LseFields
37
37
  org_membership: typing.List[OrganizationMembership]
38
+ organization_membership: OrganizationMembership
38
39
  pause: str
39
40
  phone: typing.Optional[str] = None
40
41
  username: str
@@ -33,6 +33,7 @@ class LseUserApi(UncheckedBaseModel):
33
33
  last_activity: dt.datetime
34
34
  last_name: typing.Optional[str] = None
35
35
  org_membership: typing.List[OrganizationMembership]
36
+ organization_membership: OrganizationMembership
36
37
  phone: typing.Optional[str] = None
37
38
  username: str
38
39
 
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ Options165Enum = typing.Union[typing.Literal["OW", "AD", "MA", "RE", "AN", "DI", "NO"], typing.Any]
@@ -2,16 +2,19 @@
2
2
 
3
3
  from ..core.unchecked_base_model import UncheckedBaseModel
4
4
  import typing
5
+ from .default165enum import Default165Enum
6
+ from .options165enum import Options165Enum
5
7
  from .role9e7enum import Role9E7Enum
6
8
  import pydantic
7
9
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
10
 
9
11
 
10
12
  class OrganizationPermission(UncheckedBaseModel):
11
- default_role: str
13
+ default: typing.List[Default165Enum]
14
+ group: typing.Optional[str] = None
12
15
  id: int
13
- label: str
14
- options: str
16
+ label: typing.Optional[str] = None
17
+ options: typing.List[Options165Enum]
15
18
  organization: int
16
19
  permission: str
17
20
  roles: typing.Optional[typing.List[Role9E7Enum]] = pydantic.Field(default=None)
@@ -19,7 +22,7 @@ class OrganizationPermission(UncheckedBaseModel):
19
22
  Explicit roles that have this permission within the organization.
20
23
  """
21
24
 
22
- tooltip: str
25
+ tooltip: typing.Optional[str] = None
23
26
 
24
27
  if IS_PYDANTIC_V2:
25
28
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -35,6 +35,7 @@ class PaginatedProjectMember(UncheckedBaseModel):
35
35
  last_name: typing.Optional[str] = None
36
36
  lse_fields: LseFields
37
37
  org_membership: typing.List[OrganizationMembership]
38
+ organization_membership: OrganizationMembership
38
39
  pause: str
39
40
  phone: typing.Optional[str] = None
40
41
  project_role: str
@@ -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 .project_subset_tasks_response import ProjectSubsetTasksResponse
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
7
+ import pydantic
8
+
9
+
10
+ class PaginatedProjectSubsetTasksResponseList(UncheckedBaseModel):
11
+ count: int
12
+ next: typing.Optional[str] = None
13
+ previous: typing.Optional[str] = None
14
+ results: typing.List[ProjectSubsetTasksResponse]
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,21 @@
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 ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import pydantic
7
+
8
+
9
+ class ProjectSubsetItem(UncheckedBaseModel):
10
+ columns_schema: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None
11
+ count: int
12
+ subset: str
13
+
14
+ if IS_PYDANTIC_V2:
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
16
+ else:
17
+
18
+ class Config:
19
+ frozen = True
20
+ smart_union = True
21
+ 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 ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import pydantic
7
+
8
+
9
+ class ProjectSubsetTaskItem(UncheckedBaseModel):
10
+ data: typing.Dict[str, typing.Optional[typing.Any]]
11
+ error: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
12
+ ground_truth: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
13
+ id: typing.Optional[int] = None
14
+ prediction: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
15
+ score: typing.Optional[float] = None
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,27 @@
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 .project_subset_task_item import ProjectSubsetTaskItem
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
+
9
+
10
+ class ProjectSubsetTasksResponse(UncheckedBaseModel):
11
+ next_cursor: typing.Optional[str] = None
12
+ previous_cursor: typing.Optional[str] = None
13
+ task_count: typing.Optional[int] = pydantic.Field(default=None)
14
+ """
15
+ Present only when include_total=true
16
+ """
17
+
18
+ task_result_list: typing.List[ProjectSubsetTaskItem]
19
+
20
+ if IS_PYDANTIC_V2:
21
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
22
+ else:
23
+
24
+ class Config:
25
+ frozen = True
26
+ smart_union = True
27
+ extra = pydantic.Extra.allow
@@ -5,6 +5,7 @@ import typing
5
5
  import pydantic
6
6
  from .review_settings_requeue_rejected_tasks_mode import ReviewSettingsRequeueRejectedTasksMode
7
7
  from .review_settings_review_criteria import ReviewSettingsReviewCriteria
8
+ from .review_settings_sampling import ReviewSettingsSampling
8
9
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
9
10
 
10
11
 
@@ -54,6 +55,19 @@ class ReviewSettings(UncheckedBaseModel):
54
55
  When set True, review queue is built only from manually assigned tasks
55
56
  """
56
57
 
58
+ review_task_limit_percent: typing.Optional[str] = pydantic.Field(default=None)
59
+ """
60
+ Percent of tasks to include in review stream (0-100). Null/0 disables.
61
+ """
62
+
63
+ sampling: typing.Optional[ReviewSettingsSampling] = pydantic.Field(default=None)
64
+ """
65
+ Task sampling strategy in the review stream (by task id or random)
66
+
67
+ * `task_id` - By Task ID
68
+ * `random` - Random
69
+ """
70
+
57
71
  show_agreement_to_reviewers: typing.Optional[bool] = pydantic.Field(default=None)
58
72
  """
59
73
  Show the agreement column to reviewers
@@ -5,6 +5,7 @@ import typing
5
5
  import pydantic
6
6
  from .review_settings_request_requeue_rejected_tasks_mode import ReviewSettingsRequestRequeueRejectedTasksMode
7
7
  from .review_settings_request_review_criteria import ReviewSettingsRequestReviewCriteria
8
+ from .review_settings_request_sampling import ReviewSettingsRequestSampling
8
9
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
9
10
 
10
11
 
@@ -54,6 +55,19 @@ class ReviewSettingsRequest(UncheckedBaseModel):
54
55
  When set True, review queue is built only from manually assigned tasks
55
56
  """
56
57
 
58
+ review_task_limit_percent: typing.Optional[str] = pydantic.Field(default=None)
59
+ """
60
+ Percent of tasks to include in review stream (0-100). Null/0 disables.
61
+ """
62
+
63
+ sampling: typing.Optional[ReviewSettingsRequestSampling] = pydantic.Field(default=None)
64
+ """
65
+ Task sampling strategy in the review stream (by task id or random)
66
+
67
+ * `task_id` - By Task ID
68
+ * `random` - Random
69
+ """
70
+
57
71
  show_agreement_to_reviewers: typing.Optional[bool] = pydantic.Field(default=None)
58
72
  """
59
73
  Show the agreement column to reviewers
@@ -0,0 +1,8 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from .review_settings_sampling_enum import ReviewSettingsSamplingEnum
5
+ from .blank_enum import BlankEnum
6
+ from .null_enum import NullEnum
7
+
8
+ ReviewSettingsRequestSampling = typing.Union[ReviewSettingsSamplingEnum, BlankEnum, NullEnum]