label-studio-sdk 1.0.0__py3-none-any.whl → 1.0.2__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 (99) hide show
  1. label_studio_sdk/__init__.py +46 -4
  2. label_studio_sdk/_extensions/pager_ext.py +49 -0
  3. label_studio_sdk/_legacy/schema/label_config_schema.json +14 -14
  4. label_studio_sdk/actions/__init__.py +27 -0
  5. label_studio_sdk/actions/client.py +129 -8
  6. label_studio_sdk/actions/types/__init__.py +27 -0
  7. label_studio_sdk/actions/types/actions_create_request_filters.py +43 -0
  8. label_studio_sdk/actions/types/actions_create_request_filters_conjunction.py +5 -0
  9. label_studio_sdk/actions/types/actions_create_request_filters_items_item.py +50 -0
  10. label_studio_sdk/actions/types/actions_create_request_filters_items_item_filter.py +31 -0
  11. label_studio_sdk/actions/types/actions_create_request_filters_items_item_operator.py +23 -0
  12. label_studio_sdk/actions/types/actions_create_request_filters_items_item_value.py +5 -0
  13. label_studio_sdk/actions/types/actions_create_request_id.py +19 -0
  14. label_studio_sdk/actions/types/actions_create_request_ordering_item.py +31 -0
  15. label_studio_sdk/actions/types/actions_create_request_selected_items.py +10 -0
  16. label_studio_sdk/actions/types/actions_create_request_selected_items_excluded.py +39 -0
  17. label_studio_sdk/actions/types/actions_create_request_selected_items_included.py +39 -0
  18. label_studio_sdk/base_client.py +183 -0
  19. label_studio_sdk/client.py +17 -175
  20. label_studio_sdk/core/client_wrapper.py +1 -1
  21. label_studio_sdk/core/http_client.py +5 -1
  22. label_studio_sdk/errors/bad_request_error.py +3 -1
  23. label_studio_sdk/export_storage/azure/client.py +176 -10
  24. label_studio_sdk/export_storage/azure/types/azure_create_response.py +15 -0
  25. label_studio_sdk/export_storage/azure/types/azure_update_response.py +15 -0
  26. label_studio_sdk/export_storage/gcs/client.py +180 -14
  27. label_studio_sdk/export_storage/gcs/types/gcs_create_response.py +16 -1
  28. label_studio_sdk/export_storage/gcs/types/gcs_update_response.py +16 -1
  29. label_studio_sdk/export_storage/local/client.py +168 -22
  30. label_studio_sdk/export_storage/local/types/local_create_response.py +12 -2
  31. label_studio_sdk/export_storage/local/types/local_update_response.py +12 -2
  32. label_studio_sdk/export_storage/redis/client.py +234 -30
  33. label_studio_sdk/export_storage/redis/types/redis_create_response.py +20 -5
  34. label_studio_sdk/export_storage/redis/types/redis_update_response.py +20 -5
  35. label_studio_sdk/export_storage/s3/client.py +214 -26
  36. label_studio_sdk/export_storage/s3/types/s3create_response.py +15 -0
  37. label_studio_sdk/export_storage/s3/types/s3update_response.py +15 -0
  38. label_studio_sdk/import_storage/azure/client.py +266 -90
  39. label_studio_sdk/import_storage/azure/types/azure_create_response.py +28 -18
  40. label_studio_sdk/import_storage/azure/types/azure_update_response.py +28 -18
  41. label_studio_sdk/import_storage/gcs/client.py +270 -94
  42. label_studio_sdk/import_storage/gcs/types/gcs_create_response.py +28 -18
  43. label_studio_sdk/import_storage/gcs/types/gcs_update_response.py +28 -18
  44. label_studio_sdk/import_storage/local/client.py +168 -22
  45. label_studio_sdk/import_storage/local/types/local_create_response.py +12 -2
  46. label_studio_sdk/import_storage/local/types/local_update_response.py +12 -2
  47. label_studio_sdk/import_storage/redis/client.py +206 -50
  48. label_studio_sdk/import_storage/redis/types/redis_create_response.py +20 -10
  49. label_studio_sdk/import_storage/redis/types/redis_update_response.py +20 -10
  50. label_studio_sdk/import_storage/s3/client.py +336 -110
  51. label_studio_sdk/import_storage/s3/types/s3create_response.py +35 -25
  52. label_studio_sdk/import_storage/s3/types/s3update_response.py +35 -25
  53. label_studio_sdk/{_legacy/label_interface → label_interface}/base.py +10 -0
  54. label_studio_sdk/{_legacy/label_interface → label_interface}/control_tags.py +109 -71
  55. label_studio_sdk/{_legacy/label_interface → label_interface}/interface.py +97 -51
  56. label_studio_sdk/{_legacy/label_interface → label_interface}/object_tags.py +8 -13
  57. label_studio_sdk/label_interface/objects.py +60 -0
  58. label_studio_sdk/label_interface/region.py +75 -0
  59. label_studio_sdk/projects/client.py +6 -4
  60. label_studio_sdk/projects/client_ext.py +19 -0
  61. label_studio_sdk/tasks/client.py +35 -8
  62. label_studio_sdk/tasks/client_ext.py +18 -0
  63. label_studio_sdk/types/__init__.py +10 -0
  64. label_studio_sdk/types/annotation.py +5 -5
  65. label_studio_sdk/types/annotations_dm_field.py +120 -0
  66. label_studio_sdk/types/annotations_dm_field_last_action.py +19 -0
  67. label_studio_sdk/types/data_manager_task_serializer.py +123 -0
  68. label_studio_sdk/types/data_manager_task_serializer_drafts_item.py +31 -0
  69. label_studio_sdk/types/data_manager_task_serializer_predictions_item.py +37 -0
  70. label_studio_sdk/types/task.py +1 -1
  71. label_studio_sdk/views/__init__.py +12 -4
  72. label_studio_sdk/views/types/__init__.py +12 -4
  73. label_studio_sdk/views/types/views_create_request_data.py +2 -2
  74. label_studio_sdk/views/types/views_create_request_data_filters.py +5 -5
  75. label_studio_sdk/views/types/views_create_request_data_filters_conjunction.py +1 -1
  76. label_studio_sdk/views/types/views_create_request_data_filters_items_item.py +11 -8
  77. label_studio_sdk/views/types/views_create_request_data_filters_items_item_filter.py +31 -0
  78. label_studio_sdk/views/types/views_create_request_data_filters_items_item_operator.py +23 -0
  79. label_studio_sdk/views/types/views_create_request_data_filters_items_item_value.py +5 -0
  80. label_studio_sdk/views/types/views_create_request_data_ordering_item.py +27 -34
  81. label_studio_sdk/views/types/views_update_request_data.py +2 -2
  82. label_studio_sdk/views/types/views_update_request_data_filters.py +5 -5
  83. label_studio_sdk/views/types/views_update_request_data_filters_conjunction.py +1 -1
  84. label_studio_sdk/views/types/views_update_request_data_filters_items_item.py +11 -8
  85. label_studio_sdk/views/types/views_update_request_data_filters_items_item_filter.py +31 -0
  86. label_studio_sdk/views/types/views_update_request_data_filters_items_item_operator.py +23 -0
  87. label_studio_sdk/views/types/views_update_request_data_filters_items_item_value.py +5 -0
  88. label_studio_sdk/views/types/views_update_request_data_ordering_item.py +27 -34
  89. label_studio_sdk-1.0.2.dist-info/METADATA +195 -0
  90. {label_studio_sdk-1.0.0.dist-info → label_studio_sdk-1.0.2.dist-info}/RECORD +94 -69
  91. label_studio_sdk/_legacy/label_interface/region.py +0 -43
  92. label_studio_sdk/_legacy/objects.py +0 -35
  93. label_studio_sdk/views/types/views_create_request_data_ordering_item_direction.py +0 -5
  94. label_studio_sdk/views/types/views_update_request_data_ordering_item_direction.py +0 -5
  95. label_studio_sdk-1.0.0.dist-info/METADATA +0 -307
  96. /label_studio_sdk/{_legacy/label_interface → label_interface}/__init__.py +0 -0
  97. /label_studio_sdk/{_legacy/label_interface → label_interface}/data_examples.json +0 -0
  98. /label_studio_sdk/{_legacy/label_interface → label_interface}/label_tags.py +0 -0
  99. {label_studio_sdk-1.0.0.dist-info → label_studio_sdk-1.0.2.dist-info}/WHEEL +0 -0
@@ -0,0 +1,18 @@
1
+ from .client import TasksClient, AsyncTasksClient
2
+ from label_studio_sdk._extensions.pager_ext import SyncPagerExt, AsyncPagerExt, T
3
+
4
+
5
+ class TasksClientExt(TasksClient):
6
+
7
+ def list(self, **kwargs) -> SyncPagerExt[T]:
8
+ return SyncPagerExt.from_sync_pager(super().list(**kwargs))
9
+
10
+ list.__doc__ = TasksClient.list.__doc__
11
+
12
+
13
+ class AsyncTasksClientExt(AsyncTasksClient):
14
+
15
+ async def list(self, **kwargs):
16
+ return await AsyncPagerExt.from_async_pager(await super().list(**kwargs))
17
+
18
+ list.__doc__ = AsyncTasksClient.list.__doc__
@@ -3,6 +3,8 @@
3
3
  from .annotation import Annotation
4
4
  from .annotation_filter_options import AnnotationFilterOptions
5
5
  from .annotation_last_action import AnnotationLastAction
6
+ from .annotations_dm_field import AnnotationsDmField
7
+ from .annotations_dm_field_last_action import AnnotationsDmFieldLastAction
6
8
  from .azure_blob_export_storage import AzureBlobExportStorage
7
9
  from .azure_blob_export_storage_status import AzureBlobExportStorageStatus
8
10
  from .azure_blob_import_storage import AzureBlobImportStorage
@@ -11,6 +13,9 @@ from .base_task import BaseTask
11
13
  from .base_user import BaseUser
12
14
  from .converted_format import ConvertedFormat
13
15
  from .converted_format_status import ConvertedFormatStatus
16
+ from .data_manager_task_serializer import DataManagerTaskSerializer
17
+ from .data_manager_task_serializer_drafts_item import DataManagerTaskSerializerDraftsItem
18
+ from .data_manager_task_serializer_predictions_item import DataManagerTaskSerializerPredictionsItem
14
19
  from .export import Export
15
20
  from .export_convert import ExportConvert
16
21
  from .export_create import ExportCreate
@@ -60,6 +65,8 @@ __all__ = [
60
65
  "Annotation",
61
66
  "AnnotationFilterOptions",
62
67
  "AnnotationLastAction",
68
+ "AnnotationsDmField",
69
+ "AnnotationsDmFieldLastAction",
63
70
  "AzureBlobExportStorage",
64
71
  "AzureBlobExportStorageStatus",
65
72
  "AzureBlobImportStorage",
@@ -68,6 +75,9 @@ __all__ = [
68
75
  "BaseUser",
69
76
  "ConvertedFormat",
70
77
  "ConvertedFormatStatus",
78
+ "DataManagerTaskSerializer",
79
+ "DataManagerTaskSerializerDraftsItem",
80
+ "DataManagerTaskSerializerPredictionsItem",
71
81
  "Export",
72
82
  "ExportConvert",
73
83
  "ExportCreate",
@@ -10,6 +10,11 @@ from .annotation_last_action import AnnotationLastAction
10
10
 
11
11
  class Annotation(pydantic_v1.BaseModel):
12
12
  id: typing.Optional[int] = None
13
+ result: typing.Optional[typing.List[typing.Dict[str, typing.Any]]] = pydantic_v1.Field(default=None)
14
+ """
15
+ List of annotation results for the task
16
+ """
17
+
13
18
  created_username: typing.Optional[str] = pydantic_v1.Field(default=None)
14
19
  """
15
20
  Username string
@@ -22,11 +27,6 @@ class Annotation(pydantic_v1.BaseModel):
22
27
 
23
28
  completed_by: typing.Optional[int] = None
24
29
  unique_id: typing.Optional[str] = None
25
- result: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
26
- """
27
- The main value of annotator work - labeling result in JSON format
28
- """
29
-
30
30
  was_cancelled: typing.Optional[bool] = pydantic_v1.Field(default=None)
31
31
  """
32
32
  User skipped the task
@@ -0,0 +1,120 @@
1
+ # This file was auto-generated by Fern from our API Definition.
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 .annotations_dm_field_last_action import AnnotationsDmFieldLastAction
9
+
10
+
11
+ class AnnotationsDmField(pydantic_v1.BaseModel):
12
+ id: typing.Optional[int] = None
13
+ result: typing.Optional[typing.List[typing.Dict[str, typing.Any]]] = pydantic_v1.Field(default=None)
14
+ """
15
+ List of annotation results for the task
16
+ """
17
+
18
+ created_username: typing.Optional[str] = pydantic_v1.Field(default=None)
19
+ """
20
+ Username string
21
+ """
22
+
23
+ created_ago: typing.Optional[str] = pydantic_v1.Field(default=None)
24
+ """
25
+ Time delta from creation time
26
+ """
27
+
28
+ completed_by: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
29
+ """
30
+ User details who completed this annotation.
31
+ """
32
+
33
+ unique_id: typing.Optional[str] = None
34
+ was_cancelled: typing.Optional[bool] = pydantic_v1.Field(default=None)
35
+ """
36
+ User skipped the task
37
+ """
38
+
39
+ ground_truth: typing.Optional[bool] = pydantic_v1.Field(default=None)
40
+ """
41
+ This annotation is a Ground Truth (ground_truth)
42
+ """
43
+
44
+ created_at: typing.Optional[dt.datetime] = pydantic_v1.Field(default=None)
45
+ """
46
+ Creation time
47
+ """
48
+
49
+ updated_at: typing.Optional[dt.datetime] = pydantic_v1.Field(default=None)
50
+ """
51
+ Last updated time
52
+ """
53
+
54
+ draft_created_at: typing.Optional[dt.datetime] = pydantic_v1.Field(default=None)
55
+ """
56
+ Draft creation time
57
+ """
58
+
59
+ lead_time: typing.Optional[float] = pydantic_v1.Field(default=None)
60
+ """
61
+ How much time it took to annotate the task
62
+ """
63
+
64
+ import_id: typing.Optional[int] = pydantic_v1.Field(default=None)
65
+ """
66
+ Original annotation ID that was at the import step or NULL if this annotation wasn't imported
67
+ """
68
+
69
+ last_action: typing.Optional[AnnotationsDmFieldLastAction] = pydantic_v1.Field(default=None)
70
+ """
71
+ Action which was performed in the last annotation history item
72
+ """
73
+
74
+ task: typing.Optional[int] = pydantic_v1.Field(default=None)
75
+ """
76
+ Corresponding task for this annotation
77
+ """
78
+
79
+ project: typing.Optional[int] = pydantic_v1.Field(default=None)
80
+ """
81
+ Project ID for this annotation
82
+ """
83
+
84
+ updated_by: typing.Optional[int] = pydantic_v1.Field(default=None)
85
+ """
86
+ Last user who updated this annotation
87
+ """
88
+
89
+ parent_prediction: typing.Optional[int] = pydantic_v1.Field(default=None)
90
+ """
91
+ Points to the prediction from which this annotation was created
92
+ """
93
+
94
+ parent_annotation: typing.Optional[int] = pydantic_v1.Field(default=None)
95
+ """
96
+ Points to the parent annotation from which this annotation was created
97
+ """
98
+
99
+ last_created_by: typing.Optional[int] = pydantic_v1.Field(default=None)
100
+ """
101
+ User who created the last annotation history item
102
+ """
103
+
104
+ def json(self, **kwargs: typing.Any) -> str:
105
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
106
+ return super().json(**kwargs_with_defaults)
107
+
108
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
109
+ kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
110
+ kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
111
+
112
+ return deep_union_pydantic_dicts(
113
+ super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
114
+ )
115
+
116
+ class Config:
117
+ frozen = True
118
+ smart_union = True
119
+ extra = pydantic_v1.Extra.allow
120
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -0,0 +1,19 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ AnnotationsDmFieldLastAction = typing.Union[
6
+ typing.Literal[
7
+ "prediction",
8
+ "propagated_annotation",
9
+ "imported",
10
+ "submitted",
11
+ "updated",
12
+ "skipped",
13
+ "accepted",
14
+ "rejected",
15
+ "fixed_and_accepted",
16
+ "deleted_review",
17
+ ],
18
+ typing.Any,
19
+ ]
@@ -0,0 +1,123 @@
1
+ # This file was auto-generated by Fern from our API Definition.
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 .annotations_dm_field import AnnotationsDmField
9
+ from .data_manager_task_serializer_drafts_item import DataManagerTaskSerializerDraftsItem
10
+ from .data_manager_task_serializer_predictions_item import DataManagerTaskSerializerPredictionsItem
11
+
12
+
13
+ class DataManagerTaskSerializer(pydantic_v1.BaseModel):
14
+ id: typing.Optional[int] = None
15
+ predictions: typing.Optional[typing.List[DataManagerTaskSerializerPredictionsItem]] = pydantic_v1.Field(
16
+ default=None
17
+ )
18
+ """
19
+ Predictions for this task
20
+ """
21
+
22
+ annotations: typing.Optional[typing.List[AnnotationsDmField]] = None
23
+ drafts: typing.Optional[typing.List[DataManagerTaskSerializerDraftsItem]] = pydantic_v1.Field(default=None)
24
+ """
25
+ Drafts for this task
26
+ """
27
+
28
+ annotators: typing.Optional[typing.List[int]] = pydantic_v1.Field(default=None)
29
+ """
30
+ Annotators IDs who annotated this task
31
+ """
32
+
33
+ inner_id: typing.Optional[int] = None
34
+ cancelled_annotations: typing.Optional[int] = None
35
+ total_annotations: typing.Optional[int] = None
36
+ total_predictions: typing.Optional[int] = None
37
+ completed_at: typing.Optional[dt.datetime] = None
38
+ annotations_results: typing.Optional[str] = None
39
+ predictions_results: typing.Optional[str] = None
40
+ predictions_score: typing.Optional[float] = None
41
+ file_upload: typing.Optional[str] = None
42
+ storage_filename: typing.Optional[str] = None
43
+ annotations_ids: typing.Optional[str] = None
44
+ predictions_model_versions: typing.Optional[str] = None
45
+ avg_lead_time: typing.Optional[float] = None
46
+ draft_exists: typing.Optional[bool] = None
47
+ updated_by: typing.Optional[typing.List[typing.Dict[str, typing.Any]]] = pydantic_v1.Field(default=None)
48
+ """
49
+ User IDs who updated this task
50
+ """
51
+
52
+ data: typing.Dict[str, typing.Any] = pydantic_v1.Field()
53
+ """
54
+ User imported or uploaded data for a task. Data is formatted according to the project label config. You can find examples of data for your project on the Import page in the Label Studio Data Manager UI.
55
+ """
56
+
57
+ meta: typing.Optional[typing.Dict[str, typing.Any]] = pydantic_v1.Field(default=None)
58
+ """
59
+ Meta is user imported (uploaded) data and can be useful as input for an ML Backend for embeddings, advanced vectors, and other info. It is passed to ML during training/predicting steps.
60
+ """
61
+
62
+ created_at: typing.Optional[dt.datetime] = pydantic_v1.Field(default=None)
63
+ """
64
+ Time a task was created
65
+ """
66
+
67
+ updated_at: typing.Optional[dt.datetime] = pydantic_v1.Field(default=None)
68
+ """
69
+ Last time a task was updated
70
+ """
71
+
72
+ is_labeled: typing.Optional[bool] = pydantic_v1.Field(default=None)
73
+ """
74
+ True if the number of annotations for this task is greater than or equal to the number of maximum_completions for the project
75
+ """
76
+
77
+ overlap: typing.Optional[int] = pydantic_v1.Field(default=None)
78
+ """
79
+ Number of distinct annotators that processed the current task
80
+ """
81
+
82
+ comment_count: typing.Optional[int] = pydantic_v1.Field(default=None)
83
+ """
84
+ Number of comments in the task including all annotations
85
+ """
86
+
87
+ unresolved_comment_count: typing.Optional[int] = pydantic_v1.Field(default=None)
88
+ """
89
+ Number of unresolved comments in the task including all annotations
90
+ """
91
+
92
+ last_comment_updated_at: typing.Optional[dt.datetime] = pydantic_v1.Field(default=None)
93
+ """
94
+ When the last comment was updated
95
+ """
96
+
97
+ project: typing.Optional[int] = pydantic_v1.Field(default=None)
98
+ """
99
+ Project ID for this task
100
+ """
101
+
102
+ comment_authors: typing.Optional[typing.List[int]] = pydantic_v1.Field(default=None)
103
+ """
104
+ Users who wrote comments
105
+ """
106
+
107
+ def json(self, **kwargs: typing.Any) -> str:
108
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
109
+ return super().json(**kwargs_with_defaults)
110
+
111
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
112
+ kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
113
+ kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
114
+
115
+ return deep_union_pydantic_dicts(
116
+ super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
117
+ )
118
+
119
+ class Config:
120
+ frozen = True
121
+ smart_union = True
122
+ extra = pydantic_v1.Extra.allow
123
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
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
+
9
+
10
+ class DataManagerTaskSerializerDraftsItem(pydantic_v1.BaseModel):
11
+ result: typing.Optional[typing.List[typing.Dict[str, typing.Any]]] = None
12
+ created_at: typing.Optional[dt.datetime] = None
13
+ updated_at: typing.Optional[dt.datetime] = None
14
+
15
+ def json(self, **kwargs: typing.Any) -> str:
16
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
17
+ return super().json(**kwargs_with_defaults)
18
+
19
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
20
+ kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
21
+ kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
22
+
23
+ return deep_union_pydantic_dicts(
24
+ super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
25
+ )
26
+
27
+ class Config:
28
+ frozen = True
29
+ smart_union = True
30
+ extra = pydantic_v1.Extra.allow
31
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -0,0 +1,37 @@
1
+ # This file was auto-generated by Fern from our API Definition.
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
+
9
+
10
+ class DataManagerTaskSerializerPredictionsItem(pydantic_v1.BaseModel):
11
+ result: typing.Optional[typing.List[typing.Dict[str, typing.Any]]] = None
12
+ score: typing.Optional[float] = None
13
+ model_version: typing.Optional[str] = None
14
+ model: typing.Optional[typing.Dict[str, typing.Any]] = None
15
+ model_run: typing.Optional[typing.Dict[str, typing.Any]] = None
16
+ task: typing.Optional[int] = None
17
+ project: typing.Optional[float] = None
18
+ created_at: typing.Optional[dt.datetime] = None
19
+ updated_at: typing.Optional[dt.datetime] = None
20
+
21
+ def json(self, **kwargs: typing.Any) -> str:
22
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
23
+ return super().json(**kwargs_with_defaults)
24
+
25
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
26
+ kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
27
+ kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}
28
+
29
+ return deep_union_pydantic_dicts(
30
+ super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
31
+ )
32
+
33
+ class Config:
34
+ frozen = True
35
+ smart_union = True
36
+ extra = pydantic_v1.Extra.allow
37
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -58,7 +58,7 @@ class Task(pydantic_v1.BaseModel):
58
58
  Completion time of the task
59
59
  """
60
60
 
61
- file_upload: typing.Optional[int] = pydantic_v1.Field(default=None)
61
+ file_upload: typing.Optional[str] = pydantic_v1.Field(default=None)
62
62
  """
63
63
  File upload ID for this task
64
64
  """
@@ -5,14 +5,18 @@ from .types import (
5
5
  ViewsCreateRequestDataFilters,
6
6
  ViewsCreateRequestDataFiltersConjunction,
7
7
  ViewsCreateRequestDataFiltersItemsItem,
8
+ ViewsCreateRequestDataFiltersItemsItemFilter,
9
+ ViewsCreateRequestDataFiltersItemsItemOperator,
10
+ ViewsCreateRequestDataFiltersItemsItemValue,
8
11
  ViewsCreateRequestDataOrderingItem,
9
- ViewsCreateRequestDataOrderingItemDirection,
10
12
  ViewsUpdateRequestData,
11
13
  ViewsUpdateRequestDataFilters,
12
14
  ViewsUpdateRequestDataFiltersConjunction,
13
15
  ViewsUpdateRequestDataFiltersItemsItem,
16
+ ViewsUpdateRequestDataFiltersItemsItemFilter,
17
+ ViewsUpdateRequestDataFiltersItemsItemOperator,
18
+ ViewsUpdateRequestDataFiltersItemsItemValue,
14
19
  ViewsUpdateRequestDataOrderingItem,
15
- ViewsUpdateRequestDataOrderingItemDirection,
16
20
  )
17
21
 
18
22
  __all__ = [
@@ -20,12 +24,16 @@ __all__ = [
20
24
  "ViewsCreateRequestDataFilters",
21
25
  "ViewsCreateRequestDataFiltersConjunction",
22
26
  "ViewsCreateRequestDataFiltersItemsItem",
27
+ "ViewsCreateRequestDataFiltersItemsItemFilter",
28
+ "ViewsCreateRequestDataFiltersItemsItemOperator",
29
+ "ViewsCreateRequestDataFiltersItemsItemValue",
23
30
  "ViewsCreateRequestDataOrderingItem",
24
- "ViewsCreateRequestDataOrderingItemDirection",
25
31
  "ViewsUpdateRequestData",
26
32
  "ViewsUpdateRequestDataFilters",
27
33
  "ViewsUpdateRequestDataFiltersConjunction",
28
34
  "ViewsUpdateRequestDataFiltersItemsItem",
35
+ "ViewsUpdateRequestDataFiltersItemsItemFilter",
36
+ "ViewsUpdateRequestDataFiltersItemsItemOperator",
37
+ "ViewsUpdateRequestDataFiltersItemsItemValue",
29
38
  "ViewsUpdateRequestDataOrderingItem",
30
- "ViewsUpdateRequestDataOrderingItemDirection",
31
39
  ]
@@ -4,26 +4,34 @@ from .views_create_request_data import ViewsCreateRequestData
4
4
  from .views_create_request_data_filters import ViewsCreateRequestDataFilters
5
5
  from .views_create_request_data_filters_conjunction import ViewsCreateRequestDataFiltersConjunction
6
6
  from .views_create_request_data_filters_items_item import ViewsCreateRequestDataFiltersItemsItem
7
+ from .views_create_request_data_filters_items_item_filter import ViewsCreateRequestDataFiltersItemsItemFilter
8
+ from .views_create_request_data_filters_items_item_operator import ViewsCreateRequestDataFiltersItemsItemOperator
9
+ from .views_create_request_data_filters_items_item_value import ViewsCreateRequestDataFiltersItemsItemValue
7
10
  from .views_create_request_data_ordering_item import ViewsCreateRequestDataOrderingItem
8
- from .views_create_request_data_ordering_item_direction import ViewsCreateRequestDataOrderingItemDirection
9
11
  from .views_update_request_data import ViewsUpdateRequestData
10
12
  from .views_update_request_data_filters import ViewsUpdateRequestDataFilters
11
13
  from .views_update_request_data_filters_conjunction import ViewsUpdateRequestDataFiltersConjunction
12
14
  from .views_update_request_data_filters_items_item import ViewsUpdateRequestDataFiltersItemsItem
15
+ from .views_update_request_data_filters_items_item_filter import ViewsUpdateRequestDataFiltersItemsItemFilter
16
+ from .views_update_request_data_filters_items_item_operator import ViewsUpdateRequestDataFiltersItemsItemOperator
17
+ from .views_update_request_data_filters_items_item_value import ViewsUpdateRequestDataFiltersItemsItemValue
13
18
  from .views_update_request_data_ordering_item import ViewsUpdateRequestDataOrderingItem
14
- from .views_update_request_data_ordering_item_direction import ViewsUpdateRequestDataOrderingItemDirection
15
19
 
16
20
  __all__ = [
17
21
  "ViewsCreateRequestData",
18
22
  "ViewsCreateRequestDataFilters",
19
23
  "ViewsCreateRequestDataFiltersConjunction",
20
24
  "ViewsCreateRequestDataFiltersItemsItem",
25
+ "ViewsCreateRequestDataFiltersItemsItemFilter",
26
+ "ViewsCreateRequestDataFiltersItemsItemOperator",
27
+ "ViewsCreateRequestDataFiltersItemsItemValue",
21
28
  "ViewsCreateRequestDataOrderingItem",
22
- "ViewsCreateRequestDataOrderingItemDirection",
23
29
  "ViewsUpdateRequestData",
24
30
  "ViewsUpdateRequestDataFilters",
25
31
  "ViewsUpdateRequestDataFiltersConjunction",
26
32
  "ViewsUpdateRequestDataFiltersItemsItem",
33
+ "ViewsUpdateRequestDataFiltersItemsItemFilter",
34
+ "ViewsUpdateRequestDataFiltersItemsItemOperator",
35
+ "ViewsUpdateRequestDataFiltersItemsItemValue",
27
36
  "ViewsUpdateRequestDataOrderingItem",
28
- "ViewsUpdateRequestDataOrderingItemDirection",
29
37
  ]
@@ -16,12 +16,12 @@ class ViewsCreateRequestData(pydantic_v1.BaseModel):
16
16
 
17
17
  filters: typing.Optional[ViewsCreateRequestDataFilters] = pydantic_v1.Field(default=None)
18
18
  """
19
- Filters for the view
19
+ Filters to apply on tasks. You can use [the helper class `Filters` from this page](https://labelstud.io/sdk/data_manager.html) to create Data Manager Filters.<br>Example: `{"conjunction": "or", "items": [{"filter": "filter:tasks:completed_at", "operator": "greater", "type": "Datetime", "value": "2021-01-01T00:00:00.000Z"}]}`
20
20
  """
21
21
 
22
22
  ordering: typing.Optional[typing.List[ViewsCreateRequestDataOrderingItem]] = pydantic_v1.Field(default=None)
23
23
  """
24
- Ordering for the view
24
+ List of fields to order by. Fields are similar to filters but without the `filter:` prefix. To reverse the order, add a minus sign before the field name, e.g. `-tasks:created_at`.
25
25
  """
26
26
 
27
27
  def json(self, **kwargs: typing.Any) -> str:
@@ -11,17 +11,17 @@ from .views_create_request_data_filters_items_item import ViewsCreateRequestData
11
11
 
12
12
  class ViewsCreateRequestDataFilters(pydantic_v1.BaseModel):
13
13
  """
14
- Filters for the view
14
+ Filters to apply on tasks. You can use [the helper class `Filters` from this page](https://labelstud.io/sdk/data_manager.html) to create Data Manager Filters.<br>Example: `{"conjunction": "or", "items": [{"filter": "filter:tasks:completed_at", "operator": "greater", "type": "Datetime", "value": "2021-01-01T00:00:00.000Z"}]}`
15
15
  """
16
16
 
17
- conjunction: typing.Optional[ViewsCreateRequestDataFiltersConjunction] = pydantic_v1.Field(default=None)
17
+ conjunction: ViewsCreateRequestDataFiltersConjunction = pydantic_v1.Field()
18
18
  """
19
- Type of conjunction
19
+ Logical conjunction for the filters. This conjunction (either "or" or "and") will be applied to all items in the filters list. It is not possible to combine "or" and "and" within one list of filters. All filters will be either combined with "or" or with "and", but not a mix of both.
20
20
  """
21
21
 
22
- items: typing.Optional[typing.List[ViewsCreateRequestDataFiltersItemsItem]] = pydantic_v1.Field(default=None)
22
+ items: typing.List[ViewsCreateRequestDataFiltersItemsItem] = pydantic_v1.Field()
23
23
  """
24
- Filter items
24
+ List of filter items
25
25
  """
26
26
 
27
27
  def json(self, **kwargs: typing.Any) -> str:
@@ -2,4 +2,4 @@
2
2
 
3
3
  import typing
4
4
 
5
- ViewsCreateRequestDataFiltersConjunction = typing.Union[typing.Literal["and", "or"], typing.Any]
5
+ ViewsCreateRequestDataFiltersConjunction = typing.Union[typing.Literal["or", "and"], typing.Any]
@@ -5,27 +5,30 @@ import typing
5
5
 
6
6
  from ...core.datetime_utils import serialize_datetime
7
7
  from ...core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1
8
+ from .views_create_request_data_filters_items_item_filter import ViewsCreateRequestDataFiltersItemsItemFilter
9
+ from .views_create_request_data_filters_items_item_operator import ViewsCreateRequestDataFiltersItemsItemOperator
10
+ from .views_create_request_data_filters_items_item_value import ViewsCreateRequestDataFiltersItemsItemValue
8
11
 
9
12
 
10
13
  class ViewsCreateRequestDataFiltersItemsItem(pydantic_v1.BaseModel):
11
- filter: typing.Optional[str] = pydantic_v1.Field(default=None)
14
+ filter: ViewsCreateRequestDataFiltersItemsItemFilter = pydantic_v1.Field()
12
15
  """
13
- Field name
16
+ Filter identifier, it should start with `filter:tasks:` prefix, e.g. `filter:tasks:agreement`. For `task.data` fields it may look like `filter:tasks:data.field_name`. If you need more info about columns, check the [Get data manager columns](#tag/Data-Manager/operation/api_dm_columns_list) API endpoint. Possible values:<br><li>`filter:tasks:agreement`<br> (Number) Agreement for annotation results for a specific task (Enterprise only)</li><br><li>`filter:tasks:annotations_results`<br> (String) Annotation results for the tasks</li><br><li>`filter:tasks:annotators`<br> (List) Annotators that completed the task (Community). Can include assigned annotators (Enterprise only). Important note: the filter `type` should be List, but the filter `value` is integer</li><br><li>`filter:tasks:cancelled_annotations`<br> (Number) Number of cancelled or skipped annotations for the task</li><br><li>`filter:tasks:comments`<br> (Number) Number of comments in a task</li><br><li>`filter:tasks:completed_at`<br> (Datetime) Time when a task was fully annotated</li><br><li>`filter:tasks:created_at`<br> (Datetime) Time the task was created at</li><br><li>`filter:tasks:file_upload`<br> (String) Name of the file uploaded to create the tasks</li><br><li>`filter:tasks:ground_truth`<br> (Boolean) Ground truth status of the tasks</li><br><li>`filter:tasks:id`<br> (Number) Task ID</li><br><li>`filter:tasks:inner_id`<br> (Number) Task Inner ID, it starts from 1 for all projects</li><br><li>`filter:tasks:predictions_model_versions`<br> (String) Model version used for the predictions</li><br><li>`filter:tasks:predictions_results`<br> (String) Prediction results for the tasks</li><br><li>`filter:tasks:predictions_score`<br> (Number) Prediction score for the task</li><br><li>`filter:tasks:reviewed`<br> (Boolean) Whether the tasks have been reviewed (Enterprise only)</li><br><li>`filter:tasks:reviewers`<br> (String) Reviewers that reviewed the task, or assigned reviewers (Enterprise only). Important note: the filter `type` should be List, but the filter `value` is integer</li><br><li>`filter:tasks:reviews_accepted`<br> (Number) Number of annotations accepted for a task in review (Enterprise only)</li><br><li>`filter:tasks:reviews_rejected`<br> (Number) Number of annotations rejected for a task in review (Enterprise only)</li><br><li>`filter:tasks:total_annotations`<br> (Number) Total number of annotations on a task</li><br><li>`filter:tasks:total_predictions`<br> (Number) Total number of predictions for the task</li><br><li>`filter:tasks:unresolved_comment_count`<br> (Number) Number of unresolved comments in a task</li><br><li>`filter:tasks:updated_at`<br> (Datetime) Time the task was updated at (e.g. new annotation was created, review added, etc)</li>
14
17
  """
15
18
 
16
- type: typing.Optional[str] = pydantic_v1.Field(default=None)
19
+ operator: ViewsCreateRequestDataFiltersItemsItemOperator = pydantic_v1.Field()
17
20
  """
18
- Field type
21
+ Filter operator. Possible values:<br><li>`contains`<br> Contains</li><br><li>`ends_with`<br> Ends with</li><br><li>`equal`<br> Equal to</li><br><li>`exists`<br> Exists</li><br><li>`greater`<br> Greater than</li><br><li>`greater_or_equal`<br> Greater than or equal to</li><br><li>`in`<br> Is between min and max values, so the filter `value` should be e.g. `{"min": 1, "max": 7}`</li><br><li>`less`<br> Less than</li><br><li>`less_or_equal`<br> Less than or equal to</li><br><li>`not_contains`<br> Does not contain</li><br><li>`not_equal`<br> Not equal to</li><br><li>`not_exists`<br> Does not exist</li><br><li>`not_in`<br> Is not between min and max values, so the filter `value` should be e.g. `{"min": 1, "max": 7}`</li><br><li>`starts_with`<br> Starts with</li>
19
22
  """
20
23
 
21
- operator: typing.Optional[str] = pydantic_v1.Field(default=None)
24
+ type: str = pydantic_v1.Field()
22
25
  """
23
- Filter operator
26
+ Type of the filter value. Possible values:<br><li>`Boolean`<br> Boolean</li><br><li>`Datetime`<br> Datetime string in `strftime('%Y-%m-%dT%H:%M:%S.%fZ')` format</li><br><li>`List`<br> List of items</li><br><li>`Number`<br> Float or Integer</li><br><li>`String`<br> String</li><br><li>`Unknown`<br> Unknown is explicitly converted to string format</li>
24
27
  """
25
28
 
26
- value: typing.Optional[str] = pydantic_v1.Field(default=None)
29
+ value: ViewsCreateRequestDataFiltersItemsItemValue = pydantic_v1.Field()
27
30
  """
28
- Filter value
31
+ Value to filter by
29
32
  """
30
33
 
31
34
  def json(self, **kwargs: typing.Any) -> str:
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ ViewsCreateRequestDataFiltersItemsItemFilter = typing.Union[
6
+ typing.Literal[
7
+ "filter:tasks:agreement",
8
+ "filter:tasks:annotations_results",
9
+ "filter:tasks:annotators",
10
+ "filter:tasks:cancelled_annotations",
11
+ "filter:tasks:comments",
12
+ "filter:tasks:completed_at",
13
+ "filter:tasks:created_at",
14
+ "filter:tasks:file_upload",
15
+ "filter:tasks:ground_truth",
16
+ "filter:tasks:id",
17
+ "filter:tasks:inner_id",
18
+ "filter:tasks:predictions_model_versions",
19
+ "filter:tasks:predictions_results",
20
+ "filter:tasks:predictions_score",
21
+ "filter:tasks:reviewed",
22
+ "filter:tasks:reviewers",
23
+ "filter:tasks:reviews_accepted",
24
+ "filter:tasks:reviews_rejected",
25
+ "filter:tasks:total_annotations",
26
+ "filter:tasks:total_predictions",
27
+ "filter:tasks:unresolved_comment_count",
28
+ "filter:tasks:updated_at",
29
+ ],
30
+ typing.Any,
31
+ ]
@@ -0,0 +1,23 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ ViewsCreateRequestDataFiltersItemsItemOperator = typing.Union[
6
+ typing.Literal[
7
+ "contains",
8
+ "ends_with",
9
+ "equal",
10
+ "exists",
11
+ "greater",
12
+ "greater_or_equal",
13
+ "in",
14
+ "less",
15
+ "less_or_equal",
16
+ "not_contains",
17
+ "not_equal",
18
+ "not_exists",
19
+ "not_in",
20
+ "starts_with",
21
+ ],
22
+ typing.Any,
23
+ ]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ ViewsCreateRequestDataFiltersItemsItemValue = typing.Union[str, int, float, bool, typing.Dict[str, typing.Any]]