superb-ai-onprem 0.4.4__py3-none-any.whl → 0.5.0__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 superb-ai-onprem might be problematic. Click here for more details.

spb_onprem/__init__.py CHANGED
@@ -27,6 +27,7 @@ from .entities import (
27
27
  ActivityHistory,
28
28
  Export,
29
29
  Content,
30
+ Frame,
30
31
 
31
32
  # Enums
32
33
  DataType,
@@ -44,6 +45,20 @@ from .searches import (
44
45
  AnnotationFilter,
45
46
  DataListFilter,
46
47
  DataFilterOptions,
48
+ AnnotationRangeFilter,
49
+ DateTimeRangeFilter,
50
+ UserFilter,
51
+ StringMetaFilter,
52
+ NumberMetaFilter,
53
+ DateTimeMetaFilter,
54
+ MetaFilterOptions,
55
+ DataSliceStatusFilter,
56
+ DataSliceUserFilter,
57
+ DataSliceTagsFilter,
58
+ DataSliceCommentFilter,
59
+ DataSlicePropertiesFilter,
60
+ DataSliceFilter,
61
+ CommentStatus,
47
62
  DatasetsFilter,
48
63
  DatasetsFilterOptions,
49
64
  SlicesFilter,
@@ -77,6 +92,7 @@ __all__ = (
77
92
  "ActivityHistory",
78
93
  "Export",
79
94
  "Content",
95
+ "Frame",
80
96
 
81
97
  # Enums
82
98
  "DataType",
@@ -87,11 +103,25 @@ __all__ = (
87
103
  "ActivityStatus",
88
104
  "ActivitySchema",
89
105
  "SchemaType",
106
+ "CommentStatus",
90
107
 
91
108
  # Filters
92
109
  "AnnotationFilter",
93
110
  "DataListFilter",
94
111
  "DataFilterOptions",
112
+ "AnnotationRangeFilter",
113
+ "DateTimeRangeFilter",
114
+ "UserFilter",
115
+ "StringMetaFilter",
116
+ "NumberMetaFilter",
117
+ "DateTimeMetaFilter",
118
+ "MetaFilterOptions",
119
+ "DataSliceStatusFilter",
120
+ "DataSliceUserFilter",
121
+ "DataSliceTagsFilter",
122
+ "DataSliceCommentFilter",
123
+ "DataSlicePropertiesFilter",
124
+ "DataSliceFilter",
95
125
  "DatasetsFilter",
96
126
  "DatasetsFilterOptions",
97
127
  "SlicesFilter",
spb_onprem/_version.py CHANGED
@@ -1,7 +1,14 @@
1
1
  # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
3
 
4
- __all__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
5
12
 
6
13
  TYPE_CHECKING = False
7
14
  if TYPE_CHECKING:
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
9
16
  from typing import Union
10
17
 
11
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
12
20
  else:
13
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
14
23
 
15
24
  version: str
16
25
  __version__: str
17
26
  __version_tuple__: VERSION_TUPLE
18
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
19
30
 
20
- __version__ = version = '0.4.4'
21
- __version_tuple__ = version_tuple = (0, 4, 4)
31
+ __version__ = version = '0.5.0'
32
+ __version_tuple__ = version_tuple = (0, 5, 0)
33
+
34
+ __commit_id__ = commit_id = None
@@ -4,9 +4,11 @@ from .data import Data
4
4
  from .prediction import Prediction
5
5
  from .scene import Scene
6
6
  from .data_slice import DataSlice
7
+ from .frame import Frame
7
8
 
8
9
 
9
10
  __all__ = (
11
+ "Frame",
10
12
  "Data",
11
13
  "Scene",
12
14
  "Annotation",
@@ -11,7 +11,7 @@ class AnnotationVersion(CustomBaseModel):
11
11
  This has the content of the data annotation.
12
12
  """
13
13
  id: Optional[str] = None
14
- channel: Optional[str] = None
14
+ channels: Optional[List[str]] = None
15
15
  version: Optional[str] = None
16
16
  content: Optional[BaseContent] = None
17
17
  meta: Optional[dict] = None
@@ -6,6 +6,7 @@ from .annotation import Annotation
6
6
  from .prediction import Prediction
7
7
  from .data_meta import DataMeta
8
8
  from .data_slice import DataSlice
9
+ from .frame import Frame
9
10
  from spb_onprem.contents.entities import BaseContent
10
11
 
11
12
  class Data(CustomBaseModel):
@@ -18,6 +19,7 @@ class Data(CustomBaseModel):
18
19
  key: Optional[str] = None
19
20
  type: Optional[DataType] = None
20
21
  scene: Optional[List[Scene]] = None
22
+ frames: Optional[List[Frame]] = None
21
23
  thumbnail: Optional[BaseContent] = None
22
24
  annotation: Optional[Annotation] = None
23
25
  predictions: Optional[List[Prediction]] = None
@@ -0,0 +1,19 @@
1
+ from typing import Optional
2
+ from spb_onprem.base_model import CustomBaseModel, Field
3
+
4
+
5
+ class GeoLocation(CustomBaseModel):
6
+ lat: float
7
+ lon: float
8
+
9
+
10
+ class Frame(CustomBaseModel):
11
+ """
12
+ The frame of the data.
13
+ Frame is the representation of a single frame in a sequence of data, such as a video or time series.
14
+ """
15
+ id: str
16
+ index: Optional[int] = None
17
+ captured_at: Optional[str] = Field(None, alias="capturedAt")
18
+ geo_location: Optional[GeoLocation] = Field(None, alias="geoLocation")
19
+ meta: Optional[dict] = None
@@ -63,6 +63,9 @@ from .change_data_reviewer import (
63
63
  from .update_data_slice import (
64
64
  update_data_slice_params,
65
65
  )
66
+ from .update_frames import (
67
+ update_frames_params,
68
+ )
66
69
 
67
70
  __all__ = [
68
71
  "create_params",
@@ -90,4 +93,5 @@ __all__ = [
90
93
  "change_data_labeler_params",
91
94
  "change_data_reviewer_params",
92
95
  "update_data_slice_params",
96
+ "update_frames_params",
93
97
  ]
@@ -1,11 +1,21 @@
1
1
  from typing import (
2
2
  Optional,
3
- List
3
+ List,
4
+ Union,
5
+ Any
4
6
  )
7
+ from enum import Enum
5
8
  from spb_onprem.base_model import CustomBaseModel, Field
6
- from spb_onprem.data.enums import DataType
9
+ from spb_onprem.data.enums import DataType, DataStatus
7
10
  from spb_onprem.exceptions import BadParameterError
8
11
 
12
+
13
+ class CommentStatus(str, Enum):
14
+ """댓글 상태를 나타내는 열거형"""
15
+ RESOLVED = "RESOLVED"
16
+ UNRESOLVED = "UNRESOLVED"
17
+
18
+
9
19
  class AnnotationFilter(CustomBaseModel):
10
20
  type: Optional[str] = None
11
21
  name: Optional[str] = None
@@ -20,12 +30,113 @@ class AnnotationRangeFilter(CustomBaseModel):
20
30
  class_count_min: Optional[int] = Field(None, alias="classCountMin")
21
31
 
22
32
 
33
+ class DateTimeRangeFilter(CustomBaseModel):
34
+ """날짜/시간 범위 필터"""
35
+ from_date: Optional[str] = Field(None, alias="from")
36
+ to_date: Optional[str] = Field(None, alias="to")
37
+ equals: Optional[str] = None
38
+
39
+
40
+ class UserFilter(CustomBaseModel):
41
+ """사용자 필터 옵션"""
42
+ equals: Optional[str] = None
43
+ contains: Optional[str] = None
44
+ in_list: Optional[List[str]] = Field(None, alias="in")
45
+ exists: Optional[bool] = None
46
+
47
+
48
+ class StringMetaFilter(CustomBaseModel):
49
+ """문자열 메타 데이터 필터"""
50
+ key: str
51
+ contains: Optional[str] = None
52
+ equals: Optional[str] = None
53
+ in_list: Optional[List[str]] = Field(None, alias="in")
54
+
55
+
56
+ class NumberMetaFilter(CustomBaseModel):
57
+ """숫자 메타 데이터 필터"""
58
+ key: str
59
+ min_value: Optional[float] = Field(None, alias="min")
60
+ max_value: Optional[float] = Field(None, alias="max")
61
+ equals: Optional[float] = None
62
+ in_list: Optional[List[float]] = Field(None, alias="in")
63
+
64
+
65
+ class DateTimeMetaFilter(CustomBaseModel):
66
+ """날짜/시간 메타 데이터 필터"""
67
+ key: str
68
+ from_date: Optional[str] = Field(None, alias="from")
69
+ to_date: Optional[str] = Field(None, alias="to")
70
+ equals: Optional[str] = None
71
+
72
+
73
+ class MetaFilterOptions(CustomBaseModel):
74
+ """메타 데이터 필터 옵션들"""
75
+ string_meta: Optional[List[StringMetaFilter]] = Field(None, alias="stringMeta")
76
+ number_meta: Optional[List[NumberMetaFilter]] = Field(None, alias="numberMeta")
77
+ date_time_meta: Optional[List[DateTimeMetaFilter]] = Field(None, alias="dateTimeMeta")
78
+
79
+
80
+ class DataSliceStatusFilter(CustomBaseModel):
81
+ """데이터 슬라이스 상태 필터"""
82
+ in_list: Optional[List[DataStatus]] = Field(None, alias="in")
83
+ equals: Optional[DataStatus] = None
84
+ not_in: Optional[List[DataStatus]] = Field(None, alias="notIn")
85
+
86
+
87
+ class DataSliceUserFilter(CustomBaseModel):
88
+ """데이터 슬라이스 사용자 필터 (labeler, reviewer용)"""
89
+ equals: Optional[str] = None
90
+ in_list: Optional[List[str]] = Field(None, alias="in")
91
+ exists: Optional[bool] = None
92
+
93
+
94
+ class DataSliceTagsFilter(CustomBaseModel):
95
+ """데이터 슬라이스 태그 필터"""
96
+ contains: Optional[str] = None
97
+ has_any: Optional[List[str]] = Field(None, alias="hasAny")
98
+ has_all: Optional[List[str]] = Field(None, alias="hasAll")
99
+ exists: Optional[bool] = None
100
+
101
+
102
+ class DataSliceCommentFilter(CustomBaseModel):
103
+ """데이터 슬라이스 댓글 필터"""
104
+ comment_contains: Optional[str] = Field(None, alias="commentContains")
105
+ category: Optional[str] = None
106
+ status: Optional[CommentStatus] = None
107
+ created_by: Optional[UserFilter] = Field(None, alias="createdBy")
108
+ created_at: Optional[DateTimeRangeFilter] = Field(None, alias="createdAt")
109
+ exists: Optional[bool] = None
110
+
111
+
112
+ class DataSlicePropertiesFilter(CustomBaseModel):
113
+ """슬라이스 속성 필터 (ID 제외)"""
114
+ status: Optional[DataSliceStatusFilter] = None
115
+ labeler: Optional[DataSliceUserFilter] = None
116
+ reviewer: Optional[DataSliceUserFilter] = None
117
+ tags: Optional[DataSliceTagsFilter] = None
118
+ status_changed_at: Optional[DateTimeRangeFilter] = Field(None, alias="statusChangedAt")
119
+ comments: Optional[DataSliceCommentFilter] = None
120
+ meta: Optional[MetaFilterOptions] = None
121
+
122
+
123
+ class DataSliceFilter(CustomBaseModel):
124
+ """슬라이스 필터 (ID + must/not 구조)"""
125
+ id: str # 검색할 슬라이스 ID (필수)
126
+ must: Optional[DataSlicePropertiesFilter] = None # 만족해야 하는 조건
127
+ not_filter: Optional[DataSlicePropertiesFilter] = Field(None, alias="not") # 만족하지 않아야 하는 조건
128
+
129
+
23
130
  class DataFilterOptions(CustomBaseModel):
24
131
  id_in: Optional[List[str]] = Field(None, alias="idIn")
25
132
  slice_id: Optional[str] = Field(None, alias="sliceId")
26
133
  slice_id_in: Optional[List[str]] = Field(None, alias="sliceIdIn")
134
+ slice_id_any: Optional[List[str]] = Field(None, alias="sliceIdAny") # 추가된 필드
135
+ slice_id_exists: Optional[bool] = Field(None, alias="sliceIdExists") # 추가된 필드
27
136
  key_contains: Optional[str] = Field(None, alias="keyContains")
28
137
  key_matches: Optional[str] = Field(None, alias="keyMatches")
138
+ sub_type_contains: Optional[str] = Field(None, alias="subTypeContains") # 추가된 필드
139
+ sub_type_matches: Optional[str] = Field(None, alias="subTypeMatches") # 추가된 필드
29
140
  type_in: Optional[List[DataType]] = Field(None, alias="typeIn")
30
141
  annotation_any: Optional[List[AnnotationFilter]] = Field(None, alias="annotationAny")
31
142
  annotation_in: Optional[List[AnnotationFilter]] = Field(None, alias="annotationIn")
@@ -33,11 +144,19 @@ class DataFilterOptions(CustomBaseModel):
33
144
  annotation_range: Optional[List[AnnotationRangeFilter]] = Field(None, alias="annotationRange")
34
145
  prediction_set_id_in: Optional[List[str]] = Field(None, alias="predictionSetIdIn")
35
146
  prediction_set_id_exists: Optional[bool] = Field(None, alias="predictionSetIdExists")
147
+
148
+ # 추가된 필드들 (GraphQL과 매칭)
149
+ created_at: Optional[DateTimeRangeFilter] = Field(None, alias="createdAt")
150
+ updated_at: Optional[DateTimeRangeFilter] = Field(None, alias="updatedAt")
151
+ created_by: Optional[UserFilter] = Field(None, alias="createdBy")
152
+ updated_by: Optional[UserFilter] = Field(None, alias="updatedBy")
153
+ meta: Optional[MetaFilterOptions] = None
36
154
 
37
155
 
38
156
  class DataListFilter(CustomBaseModel):
39
157
  must_filter: Optional[DataFilterOptions] = Field(None, alias="must")
40
158
  not_filter: Optional[DataFilterOptions] = Field(None, alias="not")
159
+ slice: Optional[DataSliceFilter] = Field(None, alias="slice")
41
160
 
42
161
 
43
162
  def get_data_id_list_params(
@@ -23,9 +23,9 @@ def insert_annotation_version_params(
23
23
  "meta": version.meta
24
24
  }
25
25
 
26
- # channel과 version 필드가 있으면 추가
27
- if version.channel is not None:
28
- version_data["channel"] = version.channel
26
+ # channels과 version 필드가 있으면 추가
27
+ if version.channels is not None:
28
+ version_data["channels"] = version.channels
29
29
  if version.version is not None:
30
30
  version_data["version"] = version.version
31
31
 
@@ -24,10 +24,10 @@ def insert_slice_annotation_version_params(
24
24
  ),
25
25
  "meta": version.meta
26
26
  }
27
-
28
- # channel과 version 필드가 있으면 추가
29
- if version.channel is not None:
30
- version_data["channel"] = version.channel
27
+
28
+ # channels과 version 필드가 있으면 추가
29
+ if version.channels is not None:
30
+ version_data["channels"] = version.channels
31
31
  if version.version is not None:
32
32
  version_data["version"] = version.version
33
33
 
@@ -0,0 +1,40 @@
1
+ import json
2
+ from typing import Union, List
3
+ from spb_onprem.data.entities import Frame
4
+ from spb_onprem.base_types import UndefinedType, Undefined
5
+
6
+
7
+ def update_frames_params(
8
+ dataset_id: str,
9
+ data_id: str,
10
+ frames: Union[List[Frame], UndefinedType] = Undefined,
11
+ ):
12
+ """Update frames of selected data.
13
+ Args:
14
+ dataset_id (str): dataset id which the data belongs to
15
+ data_id (str): data id to be updated
16
+ frames (list[Frame]): list of frames to be updated
17
+
18
+ Returns:
19
+ dict: the params for graphql query
20
+ """
21
+ result = {
22
+ "dataset_id": dataset_id,
23
+ "data_id": data_id,
24
+ }
25
+ if frames is not Undefined:
26
+ result["frames"] = []
27
+ for frame in frames:
28
+ frame_data = {
29
+ "index": frame.index,
30
+ "capturedAt": frame.captured_at,
31
+ "meta": json.dumps(frame.meta) if frame.meta else None,
32
+ }
33
+ if frame.geo_location is not None:
34
+ frame_data["geoLocation"] = {
35
+ "lat": frame.geo_location.lat,
36
+ "lon": frame.geo_location.lon
37
+ }
38
+ result["frames"].append(frame_data)
39
+
40
+ return result
@@ -8,7 +8,7 @@ def update_slice_annotation_version_params(
8
8
  data_id: str,
9
9
  slice_id: str,
10
10
  id: str,
11
- channel: Union[str, UndefinedType, None] = Undefined,
11
+ channels: Union[List[str], UndefinedType, None] = Undefined,
12
12
  version: Union[str, UndefinedType, None] = Undefined,
13
13
  meta: Union[dict, UndefinedType, None] = Undefined,
14
14
  ):
@@ -19,7 +19,7 @@ def update_slice_annotation_version_params(
19
19
  data_id (str): The ID of the data.
20
20
  slice_id (str): The slice ID.
21
21
  id (str): The annotation version ID.
22
- channel (str, optional): The channel of the annotation version.
22
+ channels (list[str], optional): The channels of the annotation version.
23
23
  version (str, optional): The version string of the annotation version.
24
24
  meta (dict, optional): The meta of the annotation version.
25
25
  """
@@ -30,8 +30,8 @@ def update_slice_annotation_version_params(
30
30
  "id": id,
31
31
  }
32
32
 
33
- if channel is not Undefined:
34
- variables["channel"] = channel
33
+ if channels is not Undefined:
34
+ variables["channels"] = channels
35
35
  if version is not Undefined:
36
36
  variables["version"] = version
37
37
  if meta is not Undefined:
@@ -20,6 +20,7 @@ from .params import (
20
20
  change_data_labeler_params,
21
21
  change_data_reviewer_params,
22
22
  update_data_slice_params,
23
+ update_frames_params,
23
24
  )
24
25
 
25
26
 
@@ -46,10 +47,21 @@ class Schemas:
46
47
  }
47
48
  meta
48
49
  }
50
+ frames {
51
+ id
52
+ index
53
+ capturedAt
54
+ geoLocation {
55
+ lat
56
+ lon
57
+ }
58
+ meta
59
+ }
49
60
  annotation {
61
+ meta
50
62
  versions {
51
63
  id
52
- channel
64
+ channels
53
65
  version
54
66
  content {
55
67
  id
@@ -57,23 +69,11 @@ class Schemas:
57
69
  meta
58
70
  }
59
71
  }
60
- predictions {
61
- setId
62
- content {
63
- id
64
- }
65
- meta
66
- }
67
72
  meta {
68
73
  key
69
74
  type
70
75
  value
71
76
  }
72
- systemMeta {
73
- key
74
- type
75
- value
76
- }
77
77
  slices {
78
78
  id
79
79
  status
@@ -84,7 +84,7 @@ class Schemas:
84
84
  annotation {
85
85
  versions {
86
86
  id
87
- channel
87
+ channels
88
88
  version
89
89
  content {
90
90
  id
@@ -574,3 +574,23 @@ class Queries():
574
574
  ''',
575
575
  "variables": update_data_slice_params,
576
576
  }
577
+
578
+ UPDATE_FRAMES = {
579
+ "name": "updateFrames",
580
+ "query": f'''
581
+ mutation (
582
+ $dataset_id: ID!,
583
+ $data_id: ID!,
584
+ $frames: [DataFrameInput!],
585
+ ) {{
586
+ updateFrames(
587
+ datasetId: $dataset_id,
588
+ dataId: $data_id,
589
+ frames: $frames,
590
+ ) {{
591
+ {Schemas.DATA}
592
+ }}
593
+ }}
594
+ ''',
595
+ "variables": update_frames_params,
596
+ }
@@ -572,7 +572,7 @@ class DataService(BaseService):
572
572
  data_id: str,
573
573
  slice_id: str,
574
574
  id: str,
575
- channel: Union[str, UndefinedType, None] = Undefined,
575
+ channels: Union[List[str], UndefinedType, None] = Undefined,
576
576
  version: Union[str, UndefinedType, None] = Undefined,
577
577
  meta: Union[dict, UndefinedType, None] = Undefined,
578
578
  ):
@@ -583,7 +583,7 @@ class DataService(BaseService):
583
583
  data_id (str): The data id.
584
584
  slice_id (str): The slice id.
585
585
  id (str): The annotation version id.
586
- channel (Union[str, UndefinedType, None], optional): The channel. Defaults to Undefined.
586
+ channels (Union[List[str], UndefinedType, None], optional): The channels. Defaults to Undefined.
587
587
  version (Union[str, UndefinedType, None], optional): The version. Defaults to Undefined.
588
588
  meta (Union[dict, UndefinedType, None], optional): The meta. Defaults to Undefined.
589
589
 
@@ -606,7 +606,7 @@ class DataService(BaseService):
606
606
  data_id=data_id,
607
607
  slice_id=slice_id,
608
608
  id=id,
609
- channel=channel,
609
+ channels=channels,
610
610
  version=version,
611
611
  meta=meta,
612
612
  )
@@ -804,3 +804,34 @@ class DataService(BaseService):
804
804
  )
805
805
  data = Data.model_validate(response)
806
806
  return data
807
+
808
+ def update_frames(
809
+ self,
810
+ dataset_id: str,
811
+ data_id: str,
812
+ frames: Union[List[Frame], UndefinedType] = Undefined,
813
+ ):
814
+ """Update frames of selected data.
815
+ Args:
816
+ dataset_id (str): dataset id which the data belongs to
817
+ data_id (str): data id to be updated
818
+ frames (list[Frame]): list of frames to be updated
819
+
820
+ Returns:
821
+ Data: The updated data.
822
+ """
823
+ if dataset_id is None:
824
+ raise BadParameterError("dataset_id is required.")
825
+ if data_id is None:
826
+ raise BadParameterError("data_id is required.")
827
+
828
+ response = self.request_gql(
829
+ Queries.UPDATE_FRAMES,
830
+ Queries.UPDATE_FRAMES["variables"](
831
+ dataset_id=dataset_id,
832
+ data_id=data_id,
833
+ frames=frames,
834
+ )
835
+ )
836
+ data = Data.model_validate(response)
837
+ return data
spb_onprem/entities.py CHANGED
@@ -6,6 +6,7 @@ from .data.entities import (
6
6
  Prediction,
7
7
  DataMeta,
8
8
  DataSlice,
9
+ Frame,
9
10
  )
10
11
  from .datasets.entities import Dataset
11
12
  from .slices.entities import Slice
@@ -41,6 +42,7 @@ __all__ = [
41
42
  "ActivityHistory",
42
43
  "Export",
43
44
  "Content",
45
+ "Frame",
44
46
 
45
47
  # Enums
46
48
  "DataType",
spb_onprem/searches.py CHANGED
@@ -3,6 +3,20 @@ from .data.params.data_list import (
3
3
  AnnotationFilter,
4
4
  DataListFilter,
5
5
  DataFilterOptions,
6
+ AnnotationRangeFilter,
7
+ DateTimeRangeFilter,
8
+ UserFilter,
9
+ StringMetaFilter,
10
+ NumberMetaFilter,
11
+ DateTimeMetaFilter,
12
+ MetaFilterOptions,
13
+ DataSliceStatusFilter,
14
+ DataSliceUserFilter,
15
+ DataSliceTagsFilter,
16
+ DataSliceCommentFilter,
17
+ DataSlicePropertiesFilter,
18
+ DataSliceFilter,
19
+ CommentStatus,
6
20
  )
7
21
  from .datasets.params.datasets import (
8
22
  DatasetsFilter,
@@ -25,6 +39,20 @@ __all__ = [
25
39
  "AnnotationFilter",
26
40
  "DataListFilter",
27
41
  "DataFilterOptions",
42
+ "AnnotationRangeFilter",
43
+ "DateTimeRangeFilter",
44
+ "UserFilter",
45
+ "StringMetaFilter",
46
+ "NumberMetaFilter",
47
+ "DateTimeMetaFilter",
48
+ "MetaFilterOptions",
49
+ "DataSliceStatusFilter",
50
+ "DataSliceUserFilter",
51
+ "DataSliceTagsFilter",
52
+ "DataSliceCommentFilter",
53
+ "DataSlicePropertiesFilter",
54
+ "DataSliceFilter",
55
+ "CommentStatus",
28
56
  "DatasetsFilter",
29
57
  "DatasetsFilterOptions",
30
58
  "SlicesFilter",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: superb-ai-onprem
3
- Version: 0.4.4
3
+ Version: 0.5.0
4
4
  Summary: Python SDK for Superb AI On-premise
5
5
  Home-page: https://github.com/Superb-AI-Suite/superb-ai-onprem-python
6
6
  Author: Superb AI
@@ -1,11 +1,11 @@
1
- spb_onprem/__init__.py,sha256=el78ftGMUDYjQM1WvdIqfvdW28rAVCk1gFfiFiEMUa0,1927
2
- spb_onprem/_version.py,sha256=rQpExgwkkSMYhPbtDdfhSejoe7mM9tgzyWoNno0mgIw,511
1
+ spb_onprem/__init__.py,sha256=lGZRdgpRdBFM97SawPJIC-a5uRzrd5jdb9i5yHDeveQ,2649
2
+ spb_onprem/_version.py,sha256=fvHpBU3KZKRinkriKdtAt3crenOyysELF-M9y3ozg3U,704
3
3
  spb_onprem/base_model.py,sha256=XLtyoxRBs68LrvbFH8V4EvQGPc2W17koC310MnS37jc,442
4
4
  spb_onprem/base_service.py,sha256=dPfr3mGXYlqadOXycu6RBFX1HcZ1qzEsskLoOxERLOU,5737
5
5
  spb_onprem/base_types.py,sha256=5HO6uy6qf08b4KSElwIaGy7UkoQG2KqVO6gcHbsqqSo,269
6
- spb_onprem/entities.py,sha256=EVoJNYM4BM2Q_ZbwCGiLjFEKQ_NsETiI86zhliPtjTc,943
6
+ spb_onprem/entities.py,sha256=8C3DiGq04fryNjktk3zthum0Sa_sQb292jJEkZhd5zg,967
7
7
  spb_onprem/exceptions.py,sha256=jx5rTGsVZ5shOdbgQzk8GcSyMWFtb_3xhPq6Sylwc5o,478
8
- spb_onprem/searches.py,sha256=VRj9vpvKU8iOdBJUA6BwfvOjUbWrKBo9fPJvNlRmKr0,750
8
+ spb_onprem/searches.py,sha256=-ARAdCumAa1RViwhcinh-E7VHLs4xv5gk9dPyNze6-4,1448
9
9
  spb_onprem/activities/__init__.py,sha256=iTHUza8mtiBd_QEPH-0tzrOsd_VSwSQNMbzVWfebQ6c,175
10
10
  spb_onprem/activities/queries.py,sha256=L01PRDUQdbbIGoKP_M-CmZ1ORQzuq9NOr-rdWLW0ejE,6083
11
11
  spb_onprem/activities/service.py,sha256=HX_0IgdqFp0ProgQxfsf6rJk00uLDGnlqMOfRc3cKRM,11469
@@ -28,13 +28,14 @@ spb_onprem/contents/entities/__init__.py,sha256=HsQ9J8UDxCx4xYTdMKQto7HCVUQilNoz
28
28
  spb_onprem/contents/entities/base_content.py,sha256=nM7NALpeRjtUKPv7eU0-hlqT1rPtD2mwB6Bvv_2Zc1E,346
29
29
  spb_onprem/contents/entities/content.py,sha256=YhTGHE9ykiOgFjvxbnLzSLg2665jPYrDATteB9PbGPE,534
30
30
  spb_onprem/data/__init__.py,sha256=5XKxNm2BlKufrX5uRQreUEzJ-nerTrozKpG1RJL5wt8,68
31
- spb_onprem/data/queries.py,sha256=luCodg5jgxmzSlOPTdT-F2V0-5EV3ruZuhzACKTkPmY,15054
32
- spb_onprem/data/service.py,sha256=Q9CPYkq5C7dONcTfodt4kCtSK3Hi1iAcQLDEkSLPzFY,23797
33
- spb_onprem/data/entities/__init__.py,sha256=g_IvUIFSNpqqMJbNeIRU_aaP-rJKIo_AJW0ljlzhK5s,338
34
- spb_onprem/data/entities/annotation.py,sha256=BSKU-nvtjuSeXPNuqUAG_McjLowWRCkR6iT8p3pOMYA,744
35
- spb_onprem/data/entities/data.py,sha256=rY4CG7ZbUtKRZ3HVR_iR7n7_RgkrKmSQ0D4wqP8mvOA,1227
31
+ spb_onprem/data/queries.py,sha256=tGMRRBJQ0Un8jWoDesjYq_jLF1pn_Mliq7rjyVRx23w,15606
32
+ spb_onprem/data/service.py,sha256=hMB_ovx0yukXPDZkG6wIl1WJpUUnOinVmMTU0NtrD7s,24782
33
+ spb_onprem/data/entities/__init__.py,sha256=ZQ2YWAHIan2ZLa1z5ozPSJwW3pqdlsJCxmAT3NuG89c,376
34
+ spb_onprem/data/entities/annotation.py,sha256=pS97Nx3TWMBrb-iiBfRct4RXl7hPMy2IOzTIpXkmBJU,751
35
+ spb_onprem/data/entities/data.py,sha256=9wD6fk6K-GDaCesWhxA4vW8IyrlG2Tn7xqR1ZB7VN6k,1293
36
36
  spb_onprem/data/entities/data_meta.py,sha256=zh5Cw_5F5c9f0Ixp-rHDe6P4PceSdIHHwTqcaMoW9Yk,1064
37
37
  spb_onprem/data/entities/data_slice.py,sha256=5ElQvOJE6Ivo9mWeNS3JlUV3EUtw8LAejPkfdLRq2aE,633
38
+ spb_onprem/data/entities/frame.py,sha256=uiWr5yqomMnKXNTk8P9CQ-_x28IIN3f46v1TzMMXip8,549
38
39
  spb_onprem/data/entities/prediction.py,sha256=Eb2ldNSezeYDnaLQOfC65XWoDGJ0snlvlcyM_mH34w8,400
39
40
  spb_onprem/data/entities/scene.py,sha256=SJgr5UnGxktyaKjU8FYDaIQmsu7xSJftJOiCgq9uSmo,446
40
41
  spb_onprem/data/enums/__init__.py,sha256=WU1u6MTcYyMFseeGtVnWzKwa2mzXpDoSM8O8O6U1f8o,267
@@ -42,31 +43,32 @@ spb_onprem/data/enums/data_meta_type.py,sha256=9rd12-7C1udbbIGvnuGURKmd5-lndtW7o
42
43
  spb_onprem/data/enums/data_status.py,sha256=uV_yLtigSmht-tKFaLwvO4MpV5j4GzwuBRDILGrxMBA,292
43
44
  spb_onprem/data/enums/data_type.py,sha256=9ErNmOK-RIOrhyt25SE2WVPSx_nTxt3ncTG5UtW92iM,225
44
45
  spb_onprem/data/enums/scene_type.py,sha256=pTibjST4nJc3ylUrjQifYBdtLIcS2D0q71bdhyDjbIk,205
45
- spb_onprem/data/params/__init__.py,sha256=GjjAgJ_BlYkCQrnj1-ZuTDXGHQYZ3X4lJzRL02llCbY,2301
46
+ spb_onprem/data/params/__init__.py,sha256=G83X-qgnWnuOMuMpsDKO0NZ9xWqQtmk6bdaT47XUvic,2386
46
47
  spb_onprem/data/params/change_data_labeler.py,sha256=jUG6bm0uheR1jVCy-RwFY97C9K93fdDdf3KDHJIelM4,570
47
48
  spb_onprem/data/params/change_data_reviewer.py,sha256=dFix3NfS2_8lpaoWxz6anLEJWMLdmRKM34ib8XwQiVQ,577
48
49
  spb_onprem/data/params/change_data_status.py,sha256=34gGtmTJT8wiDDpHOgQYvgP0-ziuYEBDFlpfY8SAZtI,593
49
50
  spb_onprem/data/params/create_data.py,sha256=8DOfbEchf9GSybiYY1cZoNzNYwILokoAkxXRFybJUAU,2038
50
51
  spb_onprem/data/params/data.py,sha256=ZPJRjCbkjOCV73NxlGm5DxbSaNOAztVBRZRE8FFQ9mw,779
51
- spb_onprem/data/params/data_list.py,sha256=ZuDvTUH2adqODwLUurG8CYR8hptf49YgXw3yjgEpz-0,3952
52
+ spb_onprem/data/params/data_list.py,sha256=sxMBaK3n2YgbUQ9yNmcRkcngbClnkEJFAeeX07umS2M,8645
52
53
  spb_onprem/data/params/delete_annotation_version.py,sha256=R_jBVujor-09VS1Aa8yGP14R8nJ2Aa9OmmKezC4gz4c,457
53
54
  spb_onprem/data/params/delete_data.py,sha256=HN4xXW9o4ZFOSjlzRZJ-F0wwtd_RzgI30gVWoULo1p8,319
54
55
  spb_onprem/data/params/delete_prediction.py,sha256=X3sV2mrSUqg8FOlZYRtb0o1hAwFos48ydFK2Il8UCp4,479
55
56
  spb_onprem/data/params/delete_scene.py,sha256=pD8TtS5Jm2uQC3F2EQ6-nAbQuQbJLG2pAwFqmsgucyM,478
56
57
  spb_onprem/data/params/delete_slice_annotation_version.py,sha256=5M12bHKg9HJlh6hQ8XgLwFrfhTU7CiLM__gLZVBYrMg,595
57
- spb_onprem/data/params/insert_annotation_version.py,sha256=nRYWKOU641pafA4G_Vf9OY66MCXw9aih_DkaSeDuFq0,983
58
+ spb_onprem/data/params/insert_annotation_version.py,sha256=bxw9LndaDJ0DLBo8U8kkGctHz1ToEgD_UxWWVpmJpks,987
58
59
  spb_onprem/data/params/insert_data_to_slice.py,sha256=_hLNC80wJbxGSouOpjwTY19mAf-itfRR4sxHnlLiiqk,478
59
60
  spb_onprem/data/params/insert_prediction.py,sha256=68q5ZSSq4arAsozy1i52phkUoBfUSzNVVxCuygRYDfI,621
60
61
  spb_onprem/data/params/insert_scene.py,sha256=n36XVbOlPc8MrFusOtXaXDHmG2Wa13ZnQX-0300b12E,774
61
- spb_onprem/data/params/insert_slice_annotation_version.py,sha256=wM3dLeZAU_pZpwp2t3RxVYJkXzgqS2qtnNhahUu4L6c,1086
62
+ spb_onprem/data/params/insert_slice_annotation_version.py,sha256=KinI05UaaQWcv-1vqqBUfCG-EYIkiqCU_zocukVcDYg,1086
62
63
  spb_onprem/data/params/remove_data_from_slice.py,sha256=UjoQH0gTdm1nE1DafUmq3CP1nzHiCwDUnytQ6oBcZAA,478
63
64
  spb_onprem/data/params/remove_data_meta.py,sha256=nlj2Ln9CtdS4Si8TmETZlQoAU62nCTCLbZR2_yE3yB8,1847
64
65
  spb_onprem/data/params/update_annotation.py,sha256=zEmXYlBBYeC8A9eNyGidSw2XbgLd-pgvRZK5eui2plA,787
65
66
  spb_onprem/data/params/update_data.py,sha256=zlIqvUzMrEh-6eRUZ35lKmG2Ep6pYCPEl9dWvXz2rdM,1861
66
67
  spb_onprem/data/params/update_data_slice.py,sha256=xjxUs0y4koFtW1uW84ARKsepK8FwhGVjMkSMS6A1eFU,523
68
+ spb_onprem/data/params/update_frames.py,sha256=ikWLG5LxB6JSK-kiD1kWDQuVLSnN87eUp6_mVGQo0e8,1220
67
69
  spb_onprem/data/params/update_scene.py,sha256=zMJFUHF3vz_hVSkkVEwHwdZBjWRbRxgTQFtsBowAg-k,930
68
70
  spb_onprem/data/params/update_slice_annotation.py,sha256=7eu2DFvznOv0HuvKiZTHDOTS2UijyTjbEiqLBbUncfE,607
69
- spb_onprem/data/params/update_slice_annotation_version.py,sha256=1KWm8RGAa3L3ufLGa0zCGHFx1eS1AIQAPQy_np4Kg9M,1294
71
+ spb_onprem/data/params/update_slice_annotation_version.py,sha256=sfkvSK7Ip5uOfYfGgJvBspyyPjlCwuGz7Wpglk_1wUM,1312
70
72
  spb_onprem/data/params/upsert_data_meta.py,sha256=gVj-IY4V8DDbQQI9kEIwnwz7Pg4ObwUzyBhFoDNE-v4,1507
71
73
  spb_onprem/datasets/__init__.py,sha256=Sjrb1tewB3CoODtHjRYOe-w2HpZi9UgbCyE2p8MzHfw,74
72
74
  spb_onprem/datasets/queries.py,sha256=PSj-3tOJfWUw8YXsv682LbcZoGbGHGgSQbWQGXjLePY,1912
@@ -103,7 +105,7 @@ spb_onprem/slices/params/update_slice.py,sha256=kryOmCnRTQ_OU0qDKgugppLrpeUpuLwm
103
105
  spb_onprem/users/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
106
  spb_onprem/users/entities/__init__.py,sha256=X8HZsCTlQnuPszok3AwI-i7bsQi0Ehul5L_2jZaol5E,57
105
107
  spb_onprem/users/entities/auth.py,sha256=_KP-7yUErBxhJMm-dE3ObprPEG6e0JI2qNg6g8aK1qM,3371
106
- superb_ai_onprem-0.4.4.dist-info/licenses/LICENSE,sha256=CdinbFiHKGkGl6cPde6WgXhMuzyUXEG6tzy2-7udZ8o,1066
108
+ superb_ai_onprem-0.5.0.dist-info/licenses/LICENSE,sha256=CdinbFiHKGkGl6cPde6WgXhMuzyUXEG6tzy2-7udZ8o,1066
107
109
  tests/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
108
110
  tests/activities/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
109
111
  tests/activities/real_test.py,sha256=0gQHg7rIEuZndGZyNHMWSD5nUZPMsUGigfCjWFxMthQ,1786
@@ -116,7 +118,7 @@ tests/exports/test_entities.py,sha256=hG7G4kVkyHKT3mv4lvrzUqOW8ILeHiYj87QZjQcmg9
116
118
  tests/exports/test_integration.py,sha256=cCcEgwIIHyQRlc04EAXSKz7RcblQvhI2GBR3uVaOOq8,6201
117
119
  tests/exports/test_params.py,sha256=oRRa6nEru_FImlB3TrmFiBidz6ZstCx4rVaCK-EMGfQ,11070
118
120
  tests/exports/test_service.py,sha256=IDcKxrmByh00jk9142P2ThuGureMoijTHNdU0rERGG8,14628
119
- superb_ai_onprem-0.4.4.dist-info/METADATA,sha256=EUDF8I97sllpGWkbEi2E4f5Y6wr9lQfbNg0_kPkiSKk,5817
120
- superb_ai_onprem-0.4.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
121
- superb_ai_onprem-0.4.4.dist-info/top_level.txt,sha256=LbqU6FjWKaxO7FPS5-71e3OIS8VgBi5VrtQMWFOW25Q,17
122
- superb_ai_onprem-0.4.4.dist-info/RECORD,,
121
+ superb_ai_onprem-0.5.0.dist-info/METADATA,sha256=yI9ZUXrae-AgdzwzDeZeHfJBKPSyaqljUQg2cF0zMcs,5817
122
+ superb_ai_onprem-0.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
123
+ superb_ai_onprem-0.5.0.dist-info/top_level.txt,sha256=LbqU6FjWKaxO7FPS5-71e3OIS8VgBi5VrtQMWFOW25Q,17
124
+ superb_ai_onprem-0.5.0.dist-info/RECORD,,