rapidata 1.2.0__py3-none-any.whl → 1.2.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.
Potentially problematic release.
This version of rapidata might be problematic. Click here for more details.
- rapidata/__init__.py +4 -0
- rapidata/api_client/__init__.py +25 -5
- rapidata/api_client/api/dataset_api.py +388 -388
- rapidata/api_client/api/workflow_api.py +18 -1064
- rapidata/api_client/models/__init__.py +25 -5
- rapidata/api_client/models/add_validation_text_rapid_model.py +3 -3
- rapidata/api_client/models/classification_metadata_model.py +98 -0
- rapidata/api_client/models/compare_workflow_config.py +3 -3
- rapidata/api_client/models/compare_workflow_config_model.py +3 -3
- rapidata/api_client/models/compare_workflow_model1.py +4 -18
- rapidata/api_client/models/compare_workflow_model1_referee.py +154 -0
- rapidata/api_client/models/completed_rapid_model.py +3 -3
- rapidata/api_client/models/completed_rapid_model_asset.py +170 -0
- rapidata/api_client/models/count_metadata_model.py +98 -0
- rapidata/api_client/models/demographic_metadata_model.py +100 -0
- rapidata/api_client/models/file_asset_model.py +3 -3
- rapidata/api_client/models/file_asset_model1.py +108 -0
- rapidata/api_client/models/file_asset_model1_metadata_inner.py +252 -0
- rapidata/api_client/models/file_asset_model2.py +108 -0
- rapidata/api_client/models/file_asset_model_metadata_inner.py +252 -0
- rapidata/api_client/models/image_dimension_metadata_model.py +100 -0
- rapidata/api_client/models/in_progress_rapid_model.py +3 -3
- rapidata/api_client/models/location_metadata_model.py +100 -0
- rapidata/api_client/models/multi_asset_model.py +3 -3
- rapidata/api_client/models/multi_asset_model1.py +118 -0
- rapidata/api_client/models/multi_asset_model1_assets_inner.py +170 -0
- rapidata/api_client/models/multi_asset_model2.py +118 -0
- rapidata/api_client/models/not_started_rapid_model.py +3 -3
- rapidata/api_client/models/null_asset_model.py +3 -3
- rapidata/api_client/models/null_asset_model1.py +106 -0
- rapidata/api_client/models/null_asset_model2.py +106 -0
- rapidata/api_client/models/original_filename_metadata_model.py +98 -0
- rapidata/api_client/models/prompt_metadata_model.py +98 -0
- rapidata/api_client/models/query_validation_rapids_result_asset.py +40 -40
- rapidata/api_client/models/ranked_datapoint_model.py +3 -3
- rapidata/api_client/models/simple_workflow_config.py +6 -6
- rapidata/api_client/models/simple_workflow_config_model.py +3 -3
- rapidata/api_client/models/simple_workflow_model1.py +7 -21
- rapidata/api_client/models/simple_workflow_model1_blueprint.py +238 -0
- rapidata/api_client/models/text_asset_model.py +3 -3
- rapidata/api_client/models/text_asset_model1.py +108 -0
- rapidata/api_client/models/text_asset_model2.py +108 -0
- rapidata/api_client/models/text_metadata_model.py +98 -0
- rapidata/api_client/models/transcription_metadata_model.py +98 -0
- rapidata/api_client/models/translated_prompt_metadata_model.py +102 -0
- rapidata/api_client/models/translated_string.py +93 -0
- rapidata/api_client_README.md +26 -10
- rapidata/rapidata_client/__init__.py +10 -0
- rapidata/rapidata_client/assets/media_asset.py +1 -1
- rapidata/rapidata_client/assets/multi_asset.py +12 -3
- rapidata/rapidata_client/dataset/rapidata_dataset.py +43 -9
- rapidata/rapidata_client/dataset/rapidata_validation_set.py +26 -6
- rapidata/rapidata_client/dataset/validation_set_builder.py +1 -1
- rapidata/rapidata_client/filter/__init__.py +7 -0
- rapidata/rapidata_client/filter/age_filter.py +16 -0
- rapidata/rapidata_client/filter/base_filter.py +9 -0
- rapidata/rapidata_client/filter/campaign_filter.py +17 -0
- rapidata/rapidata_client/filter/country_filter.py +16 -0
- rapidata/rapidata_client/filter/gender_filter.py +16 -0
- rapidata/rapidata_client/filter/language_filter.py +18 -0
- rapidata/rapidata_client/filter/user_score_filter.py +19 -0
- rapidata/rapidata_client/order/rapidata_order_builder.py +141 -44
- rapidata/rapidata_client/selection/demographic_selection.py +3 -2
- {rapidata-1.2.0.dist-info → rapidata-1.2.2.dist-info}/METADATA +1 -1
- {rapidata-1.2.0.dist-info → rapidata-1.2.2.dist-info}/RECORD +67 -34
- {rapidata-1.2.0.dist-info → rapidata-1.2.2.dist-info}/LICENSE +0 -0
- {rapidata-1.2.0.dist-info → rapidata-1.2.2.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
from rapidata.rapidata_client.filter.base_filter import Filter
|
|
3
|
+
from rapidata.api_client.models.age_user_filter_model import AgeUserFilterModel
|
|
4
|
+
from rapidata.api_client.models.age_group import AgeGroup
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class AgeFilter(Filter):
|
|
8
|
+
|
|
9
|
+
def __init__(self, age_groups: list[AgeGroup]):
|
|
10
|
+
self.age_groups = age_groups
|
|
11
|
+
|
|
12
|
+
def to_model(self):
|
|
13
|
+
return AgeUserFilterModel(
|
|
14
|
+
_t="AgeFilter",
|
|
15
|
+
ageGroups=self.age_groups,
|
|
16
|
+
)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
from rapidata.rapidata_client.filter.base_filter import Filter
|
|
3
|
+
from rapidata.api_client.models.campaign_user_filter_model import (
|
|
4
|
+
CampaignUserFilterModel,
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class CampaignFilter(Filter):
|
|
9
|
+
|
|
10
|
+
def __init__(self, campaign_ids: list[str]):
|
|
11
|
+
self.campaign_ids = campaign_ids
|
|
12
|
+
|
|
13
|
+
def to_model(self):
|
|
14
|
+
return CampaignUserFilterModel(
|
|
15
|
+
_t="CampaignFilter",
|
|
16
|
+
campaignIds=self.campaign_ids,
|
|
17
|
+
)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
from rapidata.rapidata_client.filter.base_filter import Filter
|
|
3
|
+
from rapidata.api_client.models.country_user_filter_model import CountryUserFilterModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class CountryFilter(Filter):
|
|
7
|
+
|
|
8
|
+
def __init__(self, country_codes: list[str]):
|
|
9
|
+
# check that all characters in the country codes are uppercase
|
|
10
|
+
if not all([code.isupper() for code in country_codes]):
|
|
11
|
+
raise ValueError("Country codes must be uppercase")
|
|
12
|
+
|
|
13
|
+
self.country_codes = country_codes
|
|
14
|
+
|
|
15
|
+
def to_model(self):
|
|
16
|
+
return CountryUserFilterModel(_t="CountryFilter", countries=self.country_codes)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
from rapidata.rapidata_client.filter.base_filter import Filter
|
|
3
|
+
from rapidata.api_client.models.gender_user_filter_model import GenderUserFilterModel
|
|
4
|
+
from rapidata.api_client.models.gender import Gender
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class GenderFilter(Filter):
|
|
8
|
+
|
|
9
|
+
def __init__(self, genders: list[Gender]):
|
|
10
|
+
self.genders = genders
|
|
11
|
+
|
|
12
|
+
def to_model(self):
|
|
13
|
+
return GenderUserFilterModel(
|
|
14
|
+
_t="GenderFilter",
|
|
15
|
+
genders=self.genders,
|
|
16
|
+
)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
from rapidata.rapidata_client.filter.base_filter import Filter
|
|
3
|
+
from rapidata.api_client.models.language_user_filter_model import (
|
|
4
|
+
LanguageUserFilterModel,
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class LanguageFilter(Filter):
|
|
9
|
+
|
|
10
|
+
def __init__(self, language_codes: list[str]):
|
|
11
|
+
# check that all characters in the language codes are lowercase
|
|
12
|
+
if not all([code.islower() for code in language_codes]):
|
|
13
|
+
raise ValueError("Language codes must be lowercase")
|
|
14
|
+
|
|
15
|
+
self.languages = language_codes
|
|
16
|
+
|
|
17
|
+
def to_model(self):
|
|
18
|
+
return LanguageUserFilterModel(_t="LanguageFilter", languages=self.languages)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
from rapidata.rapidata_client.filter.base_filter import Filter
|
|
3
|
+
from rapidata.api_client.models.user_score_user_filter_model import (
|
|
4
|
+
UserScoreUserFilterModel,
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class UserScoreFilter(Filter):
|
|
9
|
+
|
|
10
|
+
def __init__(self, lower_bound: int = 0, upper_bound: int = 1):
|
|
11
|
+
self.upper_bound = upper_bound
|
|
12
|
+
self.lower_bound = lower_bound
|
|
13
|
+
|
|
14
|
+
def to_model(self):
|
|
15
|
+
return UserScoreUserFilterModel(
|
|
16
|
+
_t="UserScoreFilter",
|
|
17
|
+
upperbound=self.upper_bound,
|
|
18
|
+
lowerbound=self.lower_bound,
|
|
19
|
+
)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from warnings import warn
|
|
2
|
+
|
|
1
3
|
from rapidata.api_client.models.aggregator_type import AggregatorType
|
|
2
4
|
from rapidata.api_client.models.capped_selection_selections_inner import (
|
|
3
5
|
CappedSelectionSelectionsInner,
|
|
@@ -21,6 +23,7 @@ from rapidata.rapidata_client.metadata.base_metadata import Metadata
|
|
|
21
23
|
from rapidata.rapidata_client.dataset.rapidata_dataset import RapidataDataset
|
|
22
24
|
from rapidata.rapidata_client.referee.naive_referee import NaiveReferee
|
|
23
25
|
from rapidata.rapidata_client.selection.base_selection import Selection
|
|
26
|
+
from rapidata.rapidata_client.filter import Filter, CountryFilter, LanguageFilter
|
|
24
27
|
from rapidata.rapidata_client.workflow import Workflow
|
|
25
28
|
from rapidata.rapidata_client.order.rapidata_order import RapidataOrder
|
|
26
29
|
from rapidata.rapidata_client.referee import Referee
|
|
@@ -63,8 +66,7 @@ class RapidataOrderBuilder:
|
|
|
63
66
|
self._aggregator: AggregatorType | None = None
|
|
64
67
|
self._validation_set_id: str | None = None
|
|
65
68
|
self._feature_flags: FeatureFlags | None = None
|
|
66
|
-
self.
|
|
67
|
-
self._language_codes: list[str] | None = None
|
|
69
|
+
self._user_filters: list[Filter] = []
|
|
68
70
|
self._selections: list[Selection] = []
|
|
69
71
|
self._rapids_per_bag: int = 2
|
|
70
72
|
self._priority: int = 50
|
|
@@ -87,31 +89,14 @@ class RapidataOrderBuilder:
|
|
|
87
89
|
print("No referee provided, using default NaiveReferee.")
|
|
88
90
|
self._referee = NaiveReferee()
|
|
89
91
|
|
|
90
|
-
user_filters = []
|
|
91
|
-
|
|
92
|
-
if self._country_codes is not None:
|
|
93
|
-
user_filters.append(
|
|
94
|
-
CreateOrderModelUserFiltersInner(
|
|
95
|
-
CountryUserFilterModel(
|
|
96
|
-
_t="CountryFilter", countries=self._country_codes
|
|
97
|
-
)
|
|
98
|
-
)
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
if self._language_codes is not None:
|
|
102
|
-
user_filters.append(
|
|
103
|
-
CreateOrderModelUserFiltersInner(
|
|
104
|
-
LanguageUserFilterModel(
|
|
105
|
-
_t="LanguageFilter", languages=self._language_codes
|
|
106
|
-
)
|
|
107
|
-
)
|
|
108
|
-
)
|
|
109
|
-
|
|
110
92
|
return CreateOrderModel(
|
|
111
93
|
_t="CreateOrderModel",
|
|
112
94
|
orderName=self._name,
|
|
113
95
|
workflow=CreateOrderModelWorkflow(self._workflow.to_model()),
|
|
114
|
-
userFilters=
|
|
96
|
+
userFilters=[
|
|
97
|
+
CreateOrderModelUserFiltersInner(user_filter.to_model())
|
|
98
|
+
for user_filter in self._user_filters
|
|
99
|
+
],
|
|
115
100
|
referee=CreateOrderModelReferee(self._referee.to_model()),
|
|
116
101
|
validationSetId=self._validation_set_id,
|
|
117
102
|
featureFlags=(
|
|
@@ -141,17 +126,17 @@ class RapidataOrderBuilder:
|
|
|
141
126
|
Returns:
|
|
142
127
|
RapidataOrder: The created RapidataOrder instance.
|
|
143
128
|
"""
|
|
129
|
+
if not self._workflow or not self._assets:
|
|
130
|
+
raise ValueError(
|
|
131
|
+
"You must provide a workflow and assets to create an order. Use the .workflow() and .media() methods respecitvely."
|
|
132
|
+
)
|
|
144
133
|
order_model = self._to_model()
|
|
145
134
|
if isinstance(
|
|
146
135
|
self._workflow, CompareWorkflow
|
|
147
136
|
): # Temporary fix; will be handled by backend in the future
|
|
148
|
-
assert all(isinstance(item, MultiAsset) for item in self._assets), (
|
|
149
|
-
"The media paths must be of type MultiAsset for comparison tasks."
|
|
150
|
-
)
|
|
151
|
-
media_paths = cast(list[MultiAsset], self._assets)
|
|
152
137
|
assert all(
|
|
153
|
-
|
|
154
|
-
), "The media paths must
|
|
138
|
+
isinstance(item, MultiAsset) for item in self._assets
|
|
139
|
+
), "The media paths must be of type MultiAsset for comparison tasks."
|
|
155
140
|
|
|
156
141
|
result = self._openapi_service.order_api.order_create_post(
|
|
157
142
|
create_order_model=order_model
|
|
@@ -165,18 +150,45 @@ class RapidataOrderBuilder:
|
|
|
165
150
|
openapi_service=self._openapi_service,
|
|
166
151
|
)
|
|
167
152
|
|
|
168
|
-
if
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
153
|
+
if all(isinstance(item, MediaAsset) for item in self._assets):
|
|
154
|
+
assets = cast(list[MediaAsset], self._assets)
|
|
155
|
+
order.dataset.add_media_from_paths(assets, self._metadata, max_workers)
|
|
156
|
+
|
|
157
|
+
elif all(isinstance(item, TextAsset) for item in self._assets):
|
|
173
158
|
assets = cast(list[TextAsset], self._assets)
|
|
174
159
|
order.dataset.add_texts(assets)
|
|
175
160
|
|
|
176
|
-
elif all(isinstance(item,
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
161
|
+
elif all(isinstance(item, MultiAsset) for item in self._assets):
|
|
162
|
+
multi_assets = cast(list[MultiAsset], self._assets)
|
|
163
|
+
|
|
164
|
+
# Check if all MultiAssets contain the same type of assets
|
|
165
|
+
first_asset_type = type(multi_assets[0].assets[0])
|
|
166
|
+
if not all(
|
|
167
|
+
isinstance(asset, first_asset_type)
|
|
168
|
+
for multi_asset in multi_assets
|
|
169
|
+
for asset in multi_asset.assets
|
|
170
|
+
):
|
|
171
|
+
raise ValueError(
|
|
172
|
+
"All MultiAssets must contain the same type of assets (either all MediaAssets or all TextAssets)."
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
# Process based on the asset type
|
|
176
|
+
if issubclass(first_asset_type, MediaAsset):
|
|
177
|
+
order.dataset.add_media_from_paths(
|
|
178
|
+
multi_assets, self._metadata, max_workers
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
elif issubclass(first_asset_type, TextAsset):
|
|
182
|
+
order.dataset.add_texts(multi_assets)
|
|
183
|
+
|
|
184
|
+
else:
|
|
185
|
+
raise ValueError(
|
|
186
|
+
"MultiAsset must contain MediaAssets or TextAssets objects."
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
else:
|
|
190
|
+
raise ValueError(
|
|
191
|
+
"Media paths must be of type MediaAsset, TextAsset, or MultiAsset."
|
|
180
192
|
)
|
|
181
193
|
|
|
182
194
|
if submit:
|
|
@@ -194,6 +206,9 @@ class RapidataOrderBuilder:
|
|
|
194
206
|
Returns:
|
|
195
207
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
196
208
|
"""
|
|
209
|
+
if not isinstance(workflow, Workflow):
|
|
210
|
+
raise TypeError("Workflow must be of type Workflow.")
|
|
211
|
+
|
|
197
212
|
self._workflow = workflow
|
|
198
213
|
return self
|
|
199
214
|
|
|
@@ -207,6 +222,9 @@ class RapidataOrderBuilder:
|
|
|
207
222
|
Returns:
|
|
208
223
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
209
224
|
"""
|
|
225
|
+
if not isinstance(referee, Referee):
|
|
226
|
+
raise TypeError("Referee must be of type Referee.")
|
|
227
|
+
|
|
210
228
|
self._referee = referee
|
|
211
229
|
return self
|
|
212
230
|
|
|
@@ -225,8 +243,22 @@ class RapidataOrderBuilder:
|
|
|
225
243
|
Returns:
|
|
226
244
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
227
245
|
"""
|
|
246
|
+
if not isinstance(asset, list):
|
|
247
|
+
raise TypeError("Media paths must be provided as a list of paths.")
|
|
248
|
+
|
|
249
|
+
for a in asset:
|
|
250
|
+
if not isinstance(a, (MediaAsset, TextAsset, MultiAsset)):
|
|
251
|
+
raise TypeError(
|
|
252
|
+
"Media paths must be of type MediaAsset, TextAsset, or MultiAsset."
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
if metadata:
|
|
256
|
+
for data in metadata:
|
|
257
|
+
if not isinstance(data, Metadata):
|
|
258
|
+
raise TypeError("Metadata must be of type Metadata.")
|
|
259
|
+
|
|
228
260
|
self._assets = asset
|
|
229
|
-
self._metadata = metadata
|
|
261
|
+
self._metadata = metadata # type: ignore
|
|
230
262
|
return self
|
|
231
263
|
|
|
232
264
|
def feature_flags(self, feature_flags: FeatureFlags) -> "RapidataOrderBuilder":
|
|
@@ -239,9 +271,35 @@ class RapidataOrderBuilder:
|
|
|
239
271
|
Returns:
|
|
240
272
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
241
273
|
"""
|
|
274
|
+
if not isinstance(feature_flags, FeatureFlags):
|
|
275
|
+
raise TypeError("Feature flags must be of type FeatureFlags.")
|
|
276
|
+
|
|
242
277
|
self._feature_flags = feature_flags
|
|
243
278
|
return self
|
|
244
279
|
|
|
280
|
+
def filters(self, filters: Sequence[Filter]) -> "RapidataOrderBuilder":
|
|
281
|
+
"""
|
|
282
|
+
Set the filters for the order, e.g., country, language, userscore, etc.
|
|
283
|
+
|
|
284
|
+
Args:
|
|
285
|
+
filters (Sequence[Filters]): The user filters to be set.
|
|
286
|
+
|
|
287
|
+
Returns:
|
|
288
|
+
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
289
|
+
"""
|
|
290
|
+
if not isinstance(filters, list):
|
|
291
|
+
raise TypeError("Filters must be provided as a list of Filter objects.")
|
|
292
|
+
|
|
293
|
+
for f in filters:
|
|
294
|
+
if not isinstance(f, Filter):
|
|
295
|
+
raise TypeError("Filters must be of type Filter.")
|
|
296
|
+
|
|
297
|
+
if len(self._user_filters) > 0:
|
|
298
|
+
print("Overwriting existing user filters.")
|
|
299
|
+
|
|
300
|
+
self._user_filters = filters
|
|
301
|
+
return self
|
|
302
|
+
|
|
245
303
|
def country_filter(self, country_codes: list[str]) -> "RapidataOrderBuilder":
|
|
246
304
|
"""
|
|
247
305
|
Set the target country codes for the order. E.g. `country_codes=["DE", "CH", "AT"]` for Germany, Switzerland, and Austria.
|
|
@@ -252,7 +310,18 @@ class RapidataOrderBuilder:
|
|
|
252
310
|
Returns:
|
|
253
311
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
254
312
|
"""
|
|
255
|
-
|
|
313
|
+
warn(
|
|
314
|
+
"The country_filter method is deprecated. Use the filters method instead.",
|
|
315
|
+
DeprecationWarning,
|
|
316
|
+
)
|
|
317
|
+
if not isinstance(country_codes, list):
|
|
318
|
+
raise TypeError("Country codes must be provided as a list of strings.")
|
|
319
|
+
|
|
320
|
+
for code in country_codes:
|
|
321
|
+
if not isinstance(code, str):
|
|
322
|
+
raise TypeError("Country codes must be of type str.")
|
|
323
|
+
|
|
324
|
+
self._user_filters.append(CountryFilter(country_codes))
|
|
256
325
|
return self
|
|
257
326
|
|
|
258
327
|
def language_filter(self, language_codes: list[str]) -> "RapidataOrderBuilder":
|
|
@@ -265,7 +334,17 @@ class RapidataOrderBuilder:
|
|
|
265
334
|
Returns:
|
|
266
335
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
267
336
|
"""
|
|
268
|
-
|
|
337
|
+
warn(
|
|
338
|
+
"The language_filter method is deprecated. Use the filters method instead.",
|
|
339
|
+
DeprecationWarning,
|
|
340
|
+
)
|
|
341
|
+
if not isinstance(language_codes, list):
|
|
342
|
+
raise TypeError("Language codes must be provided as a list of strings.")
|
|
343
|
+
|
|
344
|
+
if not all(isinstance(code, str) for code in language_codes):
|
|
345
|
+
raise TypeError("Language codes must be of type str.")
|
|
346
|
+
|
|
347
|
+
self._user_filters.append(LanguageFilter(language_codes))
|
|
269
348
|
return self
|
|
270
349
|
|
|
271
350
|
def aggregator(self, aggregator: AggregatorType) -> "RapidataOrderBuilder":
|
|
@@ -278,6 +357,9 @@ class RapidataOrderBuilder:
|
|
|
278
357
|
Returns:
|
|
279
358
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
280
359
|
"""
|
|
360
|
+
if not isinstance(aggregator, AggregatorType):
|
|
361
|
+
raise TypeError("Aggregator must be of type AggregatorType.")
|
|
362
|
+
|
|
281
363
|
self._aggregator = aggregator
|
|
282
364
|
return self
|
|
283
365
|
|
|
@@ -291,6 +373,9 @@ class RapidataOrderBuilder:
|
|
|
291
373
|
Returns:
|
|
292
374
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
293
375
|
"""
|
|
376
|
+
if not isinstance(validation_set_id, str):
|
|
377
|
+
raise TypeError("Validation set ID must be of type str.")
|
|
378
|
+
|
|
294
379
|
self._validation_set_id = validation_set_id
|
|
295
380
|
return self
|
|
296
381
|
|
|
@@ -309,17 +394,26 @@ class RapidataOrderBuilder:
|
|
|
309
394
|
"""
|
|
310
395
|
raise NotImplementedError("Not implemented yet.")
|
|
311
396
|
|
|
312
|
-
def selections(self, selections:
|
|
397
|
+
def selections(self, selections: Sequence[Selection]) -> "RapidataOrderBuilder":
|
|
313
398
|
"""
|
|
314
399
|
Set the selections for the order.
|
|
315
400
|
|
|
316
401
|
Args:
|
|
317
|
-
selections (
|
|
402
|
+
selections (Sequence[Selection]): The selections to be set.
|
|
318
403
|
|
|
319
404
|
Returns:
|
|
320
405
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
321
406
|
"""
|
|
322
|
-
|
|
407
|
+
if not isinstance(selections, list):
|
|
408
|
+
raise TypeError(
|
|
409
|
+
"Selections must be provided as a list of Selection objects."
|
|
410
|
+
)
|
|
411
|
+
|
|
412
|
+
for selection in selections:
|
|
413
|
+
if not isinstance(selection, Selection):
|
|
414
|
+
raise TypeError("Selections must be of type Selection.")
|
|
415
|
+
|
|
416
|
+
self._selections = selections # type: ignore
|
|
323
417
|
return self
|
|
324
418
|
|
|
325
419
|
def priority(self, priority: int) -> "RapidataOrderBuilder":
|
|
@@ -332,5 +426,8 @@ class RapidataOrderBuilder:
|
|
|
332
426
|
Returns:
|
|
333
427
|
RapidataOrderBuilder: The updated RapidataOrderBuilder instance.
|
|
334
428
|
"""
|
|
429
|
+
if not isinstance(priority, int):
|
|
430
|
+
raise TypeError("Priority must be of type int.")
|
|
431
|
+
|
|
335
432
|
self._priority = priority
|
|
336
433
|
return self
|
|
@@ -5,8 +5,9 @@ from rapidata.api_client.models.demographic_selection import DemographicSelectio
|
|
|
5
5
|
class DemographicSelection(Selection):
|
|
6
6
|
"""Demographic selection class."""
|
|
7
7
|
|
|
8
|
-
def __init__(self, keys: list[str]):
|
|
8
|
+
def __init__(self, keys: list[str], maxRapids: int):
|
|
9
9
|
self.keys = keys
|
|
10
|
+
self.maxRapids = maxRapids
|
|
10
11
|
|
|
11
12
|
def to_model(self):
|
|
12
|
-
return DemographicSelectionModel(_t="DemographicSelection", keys=self.keys)
|
|
13
|
+
return DemographicSelectionModel(_t="DemographicSelection", keys=self.keys, maxRapids=self.maxRapids)
|