superb-ai-onprem 0.4.4__py3-none-any.whl → 0.4.5__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
@@ -44,6 +44,20 @@ from .searches import (
44
44
  AnnotationFilter,
45
45
  DataListFilter,
46
46
  DataFilterOptions,
47
+ AnnotationRangeFilter,
48
+ DateTimeRangeFilter,
49
+ UserFilter,
50
+ StringMetaFilter,
51
+ NumberMetaFilter,
52
+ DateTimeMetaFilter,
53
+ MetaFilterOptions,
54
+ DataSliceStatusFilter,
55
+ DataSliceUserFilter,
56
+ DataSliceTagsFilter,
57
+ DataSliceCommentFilter,
58
+ DataSlicePropertiesFilter,
59
+ DataSliceFilter,
60
+ CommentStatus,
47
61
  DatasetsFilter,
48
62
  DatasetsFilterOptions,
49
63
  SlicesFilter,
@@ -87,11 +101,25 @@ __all__ = (
87
101
  "ActivityStatus",
88
102
  "ActivitySchema",
89
103
  "SchemaType",
104
+ "CommentStatus",
90
105
 
91
106
  # Filters
92
107
  "AnnotationFilter",
93
108
  "DataListFilter",
94
109
  "DataFilterOptions",
110
+ "AnnotationRangeFilter",
111
+ "DateTimeRangeFilter",
112
+ "UserFilter",
113
+ "StringMetaFilter",
114
+ "NumberMetaFilter",
115
+ "DateTimeMetaFilter",
116
+ "MetaFilterOptions",
117
+ "DataSliceStatusFilter",
118
+ "DataSliceUserFilter",
119
+ "DataSliceTagsFilter",
120
+ "DataSliceCommentFilter",
121
+ "DataSlicePropertiesFilter",
122
+ "DataSliceFilter",
95
123
  "DatasetsFilter",
96
124
  "DatasetsFilterOptions",
97
125
  "SlicesFilter",
spb_onprem/_version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.4.4'
21
- __version_tuple__ = version_tuple = (0, 4, 4)
20
+ __version__ = version = '0.4.5'
21
+ __version_tuple__ = version_tuple = (0, 4, 5)
@@ -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(
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.4.5
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=7sMK6ajypSTEggxQ1YS1SxmXvymwcxC-dyeqzwCykyo,2625
2
+ spb_onprem/_version.py,sha256=YrJwLVAkXjdo87YWYyrI7_B7BOSjbDIJ_FAFmb7g_vc,511
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
6
  spb_onprem/entities.py,sha256=EVoJNYM4BM2Q_ZbwCGiLjFEKQ_NsETiI86zhliPtjTc,943
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
@@ -48,7 +48,7 @@ spb_onprem/data/params/change_data_reviewer.py,sha256=dFix3NfS2_8lpaoWxz6anLEJWM
48
48
  spb_onprem/data/params/change_data_status.py,sha256=34gGtmTJT8wiDDpHOgQYvgP0-ziuYEBDFlpfY8SAZtI,593
49
49
  spb_onprem/data/params/create_data.py,sha256=8DOfbEchf9GSybiYY1cZoNzNYwILokoAkxXRFybJUAU,2038
50
50
  spb_onprem/data/params/data.py,sha256=ZPJRjCbkjOCV73NxlGm5DxbSaNOAztVBRZRE8FFQ9mw,779
51
- spb_onprem/data/params/data_list.py,sha256=ZuDvTUH2adqODwLUurG8CYR8hptf49YgXw3yjgEpz-0,3952
51
+ spb_onprem/data/params/data_list.py,sha256=sxMBaK3n2YgbUQ9yNmcRkcngbClnkEJFAeeX07umS2M,8645
52
52
  spb_onprem/data/params/delete_annotation_version.py,sha256=R_jBVujor-09VS1Aa8yGP14R8nJ2Aa9OmmKezC4gz4c,457
53
53
  spb_onprem/data/params/delete_data.py,sha256=HN4xXW9o4ZFOSjlzRZJ-F0wwtd_RzgI30gVWoULo1p8,319
54
54
  spb_onprem/data/params/delete_prediction.py,sha256=X3sV2mrSUqg8FOlZYRtb0o1hAwFos48ydFK2Il8UCp4,479
@@ -103,7 +103,7 @@ spb_onprem/slices/params/update_slice.py,sha256=kryOmCnRTQ_OU0qDKgugppLrpeUpuLwm
103
103
  spb_onprem/users/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
104
104
  spb_onprem/users/entities/__init__.py,sha256=X8HZsCTlQnuPszok3AwI-i7bsQi0Ehul5L_2jZaol5E,57
105
105
  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
106
+ superb_ai_onprem-0.4.5.dist-info/licenses/LICENSE,sha256=CdinbFiHKGkGl6cPde6WgXhMuzyUXEG6tzy2-7udZ8o,1066
107
107
  tests/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
108
108
  tests/activities/__init__.py,sha256=Nqnn8clbgv-5l0PgxcTOldg8mkMKrFn4TvPL-rYUUGg,1
109
109
  tests/activities/real_test.py,sha256=0gQHg7rIEuZndGZyNHMWSD5nUZPMsUGigfCjWFxMthQ,1786
@@ -116,7 +116,7 @@ tests/exports/test_entities.py,sha256=hG7G4kVkyHKT3mv4lvrzUqOW8ILeHiYj87QZjQcmg9
116
116
  tests/exports/test_integration.py,sha256=cCcEgwIIHyQRlc04EAXSKz7RcblQvhI2GBR3uVaOOq8,6201
117
117
  tests/exports/test_params.py,sha256=oRRa6nEru_FImlB3TrmFiBidz6ZstCx4rVaCK-EMGfQ,11070
118
118
  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,,
119
+ superb_ai_onprem-0.4.5.dist-info/METADATA,sha256=CLTbYzfJPGw-v7I_1N9NkvXJL7cnqhl6dAvQrBjF0QY,5817
120
+ superb_ai_onprem-0.4.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
121
+ superb_ai_onprem-0.4.5.dist-info/top_level.txt,sha256=LbqU6FjWKaxO7FPS5-71e3OIS8VgBi5VrtQMWFOW25Q,17
122
+ superb_ai_onprem-0.4.5.dist-info/RECORD,,