superb-ai-onprem 0.2.0__py3-none-any.whl → 0.3.1__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.

@@ -0,0 +1,332 @@
1
+ import pytest
2
+ from datetime import datetime
3
+
4
+ from spb_onprem.exports.params.create_export import create_export_params
5
+ from spb_onprem.exports.params.update_export import update_export_params
6
+ from spb_onprem.exports.params.export import get_export_params
7
+ from spb_onprem.exports.params.delete_export import delete_export_params
8
+ from spb_onprem.exports.params.exports import get_exports_params, ExportFilter, ExportFilterOptions
9
+ from spb_onprem.exceptions import BadParameterError
10
+ from spb_onprem.base_types import Undefined
11
+
12
+
13
+ class TestCreateExportParams:
14
+ def test_create_export_params_minimal(self):
15
+ # Given
16
+ dataset_id = "test_dataset_id"
17
+
18
+ # When
19
+ params = create_export_params(dataset_id=dataset_id)
20
+
21
+ # Then
22
+ assert params["dataset_id"] == dataset_id
23
+ assert "location" not in params
24
+ assert "name" not in params
25
+ assert "data_filter" not in params
26
+ assert "meta" not in params
27
+
28
+ def test_create_export_params_full(self):
29
+ # Given
30
+ dataset_id = "test_dataset_id"
31
+ location = "s3://test-bucket/exports/"
32
+ name = "test_export"
33
+ data_filter = {"must": {"keyContains": "test"}}
34
+ data_count = 100
35
+ frame_count = 50
36
+ annotation_count = 25
37
+ meta = {"created_by": "test_user"}
38
+
39
+ # When
40
+ params = create_export_params(
41
+ dataset_id=dataset_id,
42
+ location=location,
43
+ name=name,
44
+ data_filter=data_filter,
45
+ data_count=data_count,
46
+ frame_count=frame_count,
47
+ annotation_count=annotation_count,
48
+ meta=meta
49
+ )
50
+
51
+ # Then
52
+ assert params["dataset_id"] == dataset_id
53
+ assert params["location"] == location
54
+ assert params["name"] == name
55
+ assert params["data_filter"] == data_filter
56
+ assert params["data_count"] == data_count
57
+ assert params["frame_count"] == frame_count
58
+ assert params["annotation_count"] == annotation_count
59
+ assert params["meta"] == meta
60
+
61
+ def test_create_export_params_missing_dataset_id(self):
62
+ # Given
63
+ dataset_id = None
64
+
65
+ # When/Then
66
+ with pytest.raises(BadParameterError) as exc_info:
67
+ create_export_params(dataset_id=dataset_id)
68
+ assert str(exc_info.value) == "Dataset ID is required"
69
+
70
+
71
+ class TestUpdateExportParams:
72
+ def test_update_export_params_minimal(self):
73
+ # Given
74
+ dataset_id = "test_dataset_id"
75
+ export_id = "test_export_id"
76
+
77
+ # When
78
+ params = update_export_params(
79
+ dataset_id=dataset_id,
80
+ export_id=export_id
81
+ )
82
+
83
+ # Then
84
+ assert params["dataset_id"] == dataset_id
85
+ assert params["export_id"] == export_id
86
+ assert "location" not in params
87
+ assert "name" not in params
88
+ assert "data_filter" not in params
89
+ assert "meta" not in params
90
+
91
+ def test_update_export_params_full(self):
92
+ # Given
93
+ dataset_id = "test_dataset_id"
94
+ export_id = "test_export_id"
95
+ location = "s3://test-bucket/updated/"
96
+ name = "updated_export"
97
+ data_filter = {"must": {"updated": True}}
98
+ data_count = 200
99
+ frame_count = 100
100
+ annotation_count = 50
101
+ meta = {"updated_by": "test_user"}
102
+ completed_at = datetime(2024, 1, 1, 12, 0, 0)
103
+
104
+ # When
105
+ params = update_export_params(
106
+ dataset_id=dataset_id,
107
+ export_id=export_id,
108
+ location=location,
109
+ name=name,
110
+ data_filter=data_filter,
111
+ data_count=data_count,
112
+ frame_count=frame_count,
113
+ annotation_count=annotation_count,
114
+ meta=meta,
115
+ completed_at=completed_at
116
+ )
117
+
118
+ # Then
119
+ assert params["dataset_id"] == dataset_id
120
+ assert params["export_id"] == export_id
121
+ assert params["location"] == location
122
+ assert params["name"] == name
123
+ assert params["data_filter"] == data_filter
124
+ assert params["data_count"] == data_count
125
+ assert params["frame_count"] == frame_count
126
+ assert params["annotation_count"] == annotation_count
127
+ assert params["meta"] == meta
128
+ assert params["completed_at"] == completed_at
129
+
130
+ def test_update_export_params_missing_dataset_id(self):
131
+ # Given
132
+ dataset_id = None
133
+ export_id = "test_export_id"
134
+
135
+ # When/Then
136
+ with pytest.raises(BadParameterError) as exc_info:
137
+ update_export_params(dataset_id=dataset_id, export_id=export_id)
138
+ assert str(exc_info.value) == "Dataset ID is required"
139
+
140
+ def test_update_export_params_missing_export_id(self):
141
+ # Given
142
+ dataset_id = "test_dataset_id"
143
+ export_id = None
144
+
145
+ # When/Then
146
+ with pytest.raises(BadParameterError) as exc_info:
147
+ update_export_params(dataset_id=dataset_id, export_id=export_id)
148
+ assert str(exc_info.value) == "Export ID is required"
149
+
150
+
151
+ class TestGetExportParams:
152
+ def test_get_export_params(self):
153
+ # Given
154
+ dataset_id = "test_dataset_id"
155
+ export_id = "test_export_id"
156
+
157
+ # When
158
+ params = get_export_params(dataset_id=dataset_id, export_id=export_id)
159
+
160
+ # Then
161
+ assert params["dataset_id"] == dataset_id
162
+ assert params["export_id"] == export_id
163
+
164
+ def test_get_export_params_missing_dataset_id(self):
165
+ # Given
166
+ dataset_id = None
167
+ export_id = "test_export_id"
168
+
169
+ # When/Then
170
+ with pytest.raises(BadParameterError) as exc_info:
171
+ get_export_params(dataset_id=dataset_id, export_id=export_id)
172
+ assert str(exc_info.value) == "Dataset ID is required"
173
+
174
+ def test_get_export_params_missing_export_id(self):
175
+ # Given
176
+ dataset_id = "test_dataset_id"
177
+ export_id = None
178
+
179
+ # When/Then
180
+ with pytest.raises(BadParameterError) as exc_info:
181
+ get_export_params(dataset_id=dataset_id, export_id=export_id)
182
+ assert str(exc_info.value) == "Export ID is required"
183
+
184
+
185
+ class TestDeleteExportParams:
186
+ def test_delete_export_params(self):
187
+ # Given
188
+ dataset_id = "test_dataset_id"
189
+ export_id = "test_export_id"
190
+
191
+ # When
192
+ params = delete_export_params(dataset_id=dataset_id, export_id=export_id)
193
+
194
+ # Then
195
+ assert params["dataset_id"] == dataset_id
196
+ assert params["export_id"] == export_id
197
+
198
+ def test_delete_export_params_missing_dataset_id(self):
199
+ # Given
200
+ dataset_id = None
201
+ export_id = "test_export_id"
202
+
203
+ # When/Then
204
+ with pytest.raises(BadParameterError) as exc_info:
205
+ delete_export_params(dataset_id=dataset_id, export_id=export_id)
206
+ assert str(exc_info.value) == "Dataset ID is required"
207
+
208
+ def test_delete_export_params_missing_export_id(self):
209
+ # Given
210
+ dataset_id = "test_dataset_id"
211
+ export_id = None
212
+
213
+ # When/Then
214
+ with pytest.raises(BadParameterError) as exc_info:
215
+ delete_export_params(dataset_id=dataset_id, export_id=export_id)
216
+ assert str(exc_info.value) == "Export ID is required"
217
+
218
+
219
+ class TestGetExportsParams:
220
+ def test_get_exports_params_minimal(self):
221
+ # Given
222
+ dataset_id = "test_dataset_id"
223
+
224
+ # When
225
+ params = get_exports_params(dataset_id=dataset_id)
226
+
227
+ # Then
228
+ assert params["dataset_id"] == dataset_id
229
+ assert params["length"] == 10
230
+ assert "filter" not in params
231
+ assert "cursor" not in params
232
+
233
+ def test_get_exports_params_with_filter(self):
234
+ # Given
235
+ dataset_id = "test_dataset_id"
236
+ export_filter = ExportFilter(
237
+ must_filter=ExportFilterOptions(name="test_export"),
238
+ not_filter=ExportFilterOptions(location_contains="temp")
239
+ )
240
+ cursor = "test_cursor"
241
+ length = 20
242
+
243
+ # When
244
+ params = get_exports_params(
245
+ dataset_id=dataset_id,
246
+ export_filter=export_filter,
247
+ cursor=cursor,
248
+ length=length
249
+ )
250
+
251
+ # Then
252
+ assert params["dataset_id"] == dataset_id
253
+ assert params["length"] == length
254
+ assert params["cursor"] == cursor
255
+ assert "filter" in params
256
+ assert params["filter"]["must"]["name"] == "test_export"
257
+ assert params["filter"]["not"]["locationContains"] == "temp"
258
+
259
+ def test_get_exports_params_missing_dataset_id(self):
260
+ # Given
261
+ dataset_id = None
262
+
263
+ # When/Then
264
+ with pytest.raises(BadParameterError) as exc_info:
265
+ get_exports_params(dataset_id=dataset_id)
266
+ assert str(exc_info.value) == "Dataset ID is required"
267
+
268
+
269
+ class TestExportFilterOptions:
270
+ def test_export_filter_options_creation(self):
271
+ # Given/When
272
+ filter_options = ExportFilterOptions(
273
+ id_in=["id1", "id2"],
274
+ name_contains="test",
275
+ name="exact_name",
276
+ location_contains="bucket",
277
+ location="s3://test-bucket/"
278
+ )
279
+
280
+ # Then
281
+ assert filter_options.id_in == ["id1", "id2"]
282
+ assert filter_options.name_contains == "test"
283
+ assert filter_options.name == "exact_name"
284
+ assert filter_options.location_contains == "bucket"
285
+ assert filter_options.location == "s3://test-bucket/"
286
+
287
+ def test_export_filter_options_aliases(self):
288
+ # Given/When
289
+ filter_options = ExportFilterOptions(
290
+ id_in=["id1", "id2"],
291
+ name_contains="test"
292
+ )
293
+
294
+ # Then
295
+ dumped = filter_options.model_dump(by_alias=True)
296
+ assert dumped["idIn"] == ["id1", "id2"]
297
+ assert dumped["nameContains"] == "test"
298
+
299
+
300
+ class TestExportFilter:
301
+ def test_export_filter_creation(self):
302
+ # Given
303
+ must_filter = ExportFilterOptions(name="test_export")
304
+ not_filter = ExportFilterOptions(location_contains="temp")
305
+
306
+ # When
307
+ export_filter = ExportFilter(
308
+ must_filter=must_filter,
309
+ not_filter=not_filter
310
+ )
311
+
312
+ # Then
313
+ assert export_filter.must_filter == must_filter
314
+ assert export_filter.not_filter == not_filter
315
+
316
+ def test_export_filter_aliases(self):
317
+ # Given
318
+ must_filter = ExportFilterOptions(name="test_export")
319
+ not_filter = ExportFilterOptions(location_contains="temp")
320
+ export_filter = ExportFilter(
321
+ must_filter=must_filter,
322
+ not_filter=not_filter
323
+ )
324
+
325
+ # When
326
+ dumped = export_filter.model_dump(by_alias=True, exclude_unset=True)
327
+
328
+ # Then
329
+ assert "must" in dumped
330
+ assert "not" in dumped
331
+ assert dumped["must"]["name"] == "test_export"
332
+ assert dumped["not"]["locationContains"] == "temp"