rapidata 0.1.25__py3-none-any.whl → 0.2.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.
@@ -56,6 +56,7 @@ from rapidata.api_client.models.bounding_box_rapid_blueprint import BoundingBoxR
56
56
  from rapidata.api_client.models.bounding_box_result import BoundingBoxResult
57
57
  from rapidata.api_client.models.bounding_box_truth import BoundingBoxTruth
58
58
  from rapidata.api_client.models.box_shape import BoxShape
59
+ from rapidata.api_client.models.campaign_user_filter_model import CampaignUserFilterModel
59
60
  from rapidata.api_client.models.classification_metadata import ClassificationMetadata
60
61
  from rapidata.api_client.models.classification_metadata_filter_config import ClassificationMetadataFilterConfig
61
62
  from rapidata.api_client.models.classify_payload import ClassifyPayload
@@ -139,6 +140,7 @@ from rapidata.api_client.models.import_validation_set_from_file_result import Im
139
140
  from rapidata.api_client.models.issue_auth_token_result import IssueAuthTokenResult
140
141
  from rapidata.api_client.models.issue_client_auth_token_result import IssueClientAuthTokenResult
141
142
  from rapidata.api_client.models.labeling_selection import LabelingSelection
143
+ from rapidata.api_client.models.language_user_filter_model import LanguageUserFilterModel
142
144
  from rapidata.api_client.models.line import Line
143
145
  from rapidata.api_client.models.line_payload import LinePayload
144
146
  from rapidata.api_client.models.line_point import LinePoint
@@ -228,6 +230,7 @@ from rapidata.api_client.models.upload_coco_result import UploadCocoResult
228
230
  from rapidata.api_client.models.upload_datapoints_result import UploadDatapointsResult
229
231
  from rapidata.api_client.models.upload_files_from_s3_bucket_model import UploadFilesFromS3BucketModel
230
232
  from rapidata.api_client.models.upload_text_sources_to_dataset_model import UploadTextSourcesToDatasetModel
233
+ from rapidata.api_client.models.user_score_user_filter_model import UserScoreUserFilterModel
231
234
  from rapidata.api_client.models.validation_chance import ValidationChance
232
235
  from rapidata.api_client.models.validation_import_post_request_blueprint import ValidationImportPostRequestBlueprint
233
236
  from rapidata.api_client.models.validation_rapid_selection_config import ValidationRapidSelectionConfig
@@ -4031,6 +4031,259 @@ class OrderApi:
4031
4031
 
4032
4032
 
4033
4033
 
4034
+ @validate_call
4035
+ def order_share_put(
4036
+ self,
4037
+ order_id: Annotated[Optional[StrictStr], Field(description="The id of the order to update")] = None,
4038
+ _request_timeout: Union[
4039
+ None,
4040
+ Annotated[StrictFloat, Field(gt=0)],
4041
+ Tuple[
4042
+ Annotated[StrictFloat, Field(gt=0)],
4043
+ Annotated[StrictFloat, Field(gt=0)]
4044
+ ]
4045
+ ] = None,
4046
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4047
+ _content_type: Optional[StrictStr] = None,
4048
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4049
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4050
+ ) -> None:
4051
+ """Updates whether an order is public or not.
4052
+
4053
+
4054
+ :param order_id: The id of the order to update
4055
+ :type order_id: str
4056
+ :param _request_timeout: timeout setting for this request. If one
4057
+ number provided, it will be total request
4058
+ timeout. It can also be a pair (tuple) of
4059
+ (connection, read) timeouts.
4060
+ :type _request_timeout: int, tuple(int, int), optional
4061
+ :param _request_auth: set to override the auth_settings for an a single
4062
+ request; this effectively ignores the
4063
+ authentication in the spec for a single request.
4064
+ :type _request_auth: dict, optional
4065
+ :param _content_type: force content-type for the request.
4066
+ :type _content_type: str, Optional
4067
+ :param _headers: set to override the headers for a single
4068
+ request; this effectively ignores the headers
4069
+ in the spec for a single request.
4070
+ :type _headers: dict, optional
4071
+ :param _host_index: set to override the host_index for a single
4072
+ request; this effectively ignores the host_index
4073
+ in the spec for a single request.
4074
+ :type _host_index: int, optional
4075
+ :return: Returns the result object.
4076
+ """ # noqa: E501
4077
+
4078
+ _param = self._order_share_put_serialize(
4079
+ order_id=order_id,
4080
+ _request_auth=_request_auth,
4081
+ _content_type=_content_type,
4082
+ _headers=_headers,
4083
+ _host_index=_host_index
4084
+ )
4085
+
4086
+ _response_types_map: Dict[str, Optional[str]] = {
4087
+ '200': None,
4088
+ }
4089
+ response_data = self.api_client.call_api(
4090
+ *_param,
4091
+ _request_timeout=_request_timeout
4092
+ )
4093
+ response_data.read()
4094
+ return self.api_client.response_deserialize(
4095
+ response_data=response_data,
4096
+ response_types_map=_response_types_map,
4097
+ ).data
4098
+
4099
+
4100
+ @validate_call
4101
+ def order_share_put_with_http_info(
4102
+ self,
4103
+ order_id: Annotated[Optional[StrictStr], Field(description="The id of the order to update")] = None,
4104
+ _request_timeout: Union[
4105
+ None,
4106
+ Annotated[StrictFloat, Field(gt=0)],
4107
+ Tuple[
4108
+ Annotated[StrictFloat, Field(gt=0)],
4109
+ Annotated[StrictFloat, Field(gt=0)]
4110
+ ]
4111
+ ] = None,
4112
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4113
+ _content_type: Optional[StrictStr] = None,
4114
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4115
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4116
+ ) -> ApiResponse[None]:
4117
+ """Updates whether an order is public or not.
4118
+
4119
+
4120
+ :param order_id: The id of the order to update
4121
+ :type order_id: str
4122
+ :param _request_timeout: timeout setting for this request. If one
4123
+ number provided, it will be total request
4124
+ timeout. It can also be a pair (tuple) of
4125
+ (connection, read) timeouts.
4126
+ :type _request_timeout: int, tuple(int, int), optional
4127
+ :param _request_auth: set to override the auth_settings for an a single
4128
+ request; this effectively ignores the
4129
+ authentication in the spec for a single request.
4130
+ :type _request_auth: dict, optional
4131
+ :param _content_type: force content-type for the request.
4132
+ :type _content_type: str, Optional
4133
+ :param _headers: set to override the headers for a single
4134
+ request; this effectively ignores the headers
4135
+ in the spec for a single request.
4136
+ :type _headers: dict, optional
4137
+ :param _host_index: set to override the host_index for a single
4138
+ request; this effectively ignores the host_index
4139
+ in the spec for a single request.
4140
+ :type _host_index: int, optional
4141
+ :return: Returns the result object.
4142
+ """ # noqa: E501
4143
+
4144
+ _param = self._order_share_put_serialize(
4145
+ order_id=order_id,
4146
+ _request_auth=_request_auth,
4147
+ _content_type=_content_type,
4148
+ _headers=_headers,
4149
+ _host_index=_host_index
4150
+ )
4151
+
4152
+ _response_types_map: Dict[str, Optional[str]] = {
4153
+ '200': None,
4154
+ }
4155
+ response_data = self.api_client.call_api(
4156
+ *_param,
4157
+ _request_timeout=_request_timeout
4158
+ )
4159
+ response_data.read()
4160
+ return self.api_client.response_deserialize(
4161
+ response_data=response_data,
4162
+ response_types_map=_response_types_map,
4163
+ )
4164
+
4165
+
4166
+ @validate_call
4167
+ def order_share_put_without_preload_content(
4168
+ self,
4169
+ order_id: Annotated[Optional[StrictStr], Field(description="The id of the order to update")] = None,
4170
+ _request_timeout: Union[
4171
+ None,
4172
+ Annotated[StrictFloat, Field(gt=0)],
4173
+ Tuple[
4174
+ Annotated[StrictFloat, Field(gt=0)],
4175
+ Annotated[StrictFloat, Field(gt=0)]
4176
+ ]
4177
+ ] = None,
4178
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
4179
+ _content_type: Optional[StrictStr] = None,
4180
+ _headers: Optional[Dict[StrictStr, Any]] = None,
4181
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
4182
+ ) -> RESTResponseType:
4183
+ """Updates whether an order is public or not.
4184
+
4185
+
4186
+ :param order_id: The id of the order to update
4187
+ :type order_id: str
4188
+ :param _request_timeout: timeout setting for this request. If one
4189
+ number provided, it will be total request
4190
+ timeout. It can also be a pair (tuple) of
4191
+ (connection, read) timeouts.
4192
+ :type _request_timeout: int, tuple(int, int), optional
4193
+ :param _request_auth: set to override the auth_settings for an a single
4194
+ request; this effectively ignores the
4195
+ authentication in the spec for a single request.
4196
+ :type _request_auth: dict, optional
4197
+ :param _content_type: force content-type for the request.
4198
+ :type _content_type: str, Optional
4199
+ :param _headers: set to override the headers for a single
4200
+ request; this effectively ignores the headers
4201
+ in the spec for a single request.
4202
+ :type _headers: dict, optional
4203
+ :param _host_index: set to override the host_index for a single
4204
+ request; this effectively ignores the host_index
4205
+ in the spec for a single request.
4206
+ :type _host_index: int, optional
4207
+ :return: Returns the result object.
4208
+ """ # noqa: E501
4209
+
4210
+ _param = self._order_share_put_serialize(
4211
+ order_id=order_id,
4212
+ _request_auth=_request_auth,
4213
+ _content_type=_content_type,
4214
+ _headers=_headers,
4215
+ _host_index=_host_index
4216
+ )
4217
+
4218
+ _response_types_map: Dict[str, Optional[str]] = {
4219
+ '200': None,
4220
+ }
4221
+ response_data = self.api_client.call_api(
4222
+ *_param,
4223
+ _request_timeout=_request_timeout
4224
+ )
4225
+ return response_data.response
4226
+
4227
+
4228
+ def _order_share_put_serialize(
4229
+ self,
4230
+ order_id,
4231
+ _request_auth,
4232
+ _content_type,
4233
+ _headers,
4234
+ _host_index,
4235
+ ) -> RequestSerialized:
4236
+
4237
+ _host = None
4238
+
4239
+ _collection_formats: Dict[str, str] = {
4240
+ }
4241
+
4242
+ _path_params: Dict[str, str] = {}
4243
+ _query_params: List[Tuple[str, str]] = []
4244
+ _header_params: Dict[str, Optional[str]] = _headers or {}
4245
+ _form_params: List[Tuple[str, str]] = []
4246
+ _files: Dict[
4247
+ str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
4248
+ ] = {}
4249
+ _body_params: Optional[bytes] = None
4250
+
4251
+ # process the path parameters
4252
+ # process the query parameters
4253
+ if order_id is not None:
4254
+
4255
+ _query_params.append(('orderId', order_id))
4256
+
4257
+ # process the header parameters
4258
+ # process the form parameters
4259
+ # process the body parameter
4260
+
4261
+
4262
+
4263
+
4264
+ # authentication setting
4265
+ _auth_settings: List[str] = [
4266
+ 'bearer'
4267
+ ]
4268
+
4269
+ return self.api_client.param_serialize(
4270
+ method='PUT',
4271
+ resource_path='/Order/Share',
4272
+ path_params=_path_params,
4273
+ query_params=_query_params,
4274
+ header_params=_header_params,
4275
+ body=_body_params,
4276
+ post_params=_form_params,
4277
+ files=_files,
4278
+ auth_settings=_auth_settings,
4279
+ collection_formats=_collection_formats,
4280
+ _host=_host,
4281
+ _request_auth=_request_auth
4282
+ )
4283
+
4284
+
4285
+
4286
+
4034
4287
  @validate_call
4035
4288
  def order_submit_post(
4036
4289
  self,
@@ -32,6 +32,7 @@ from rapidata.api_client.models.bounding_box_rapid_blueprint import BoundingBoxR
32
32
  from rapidata.api_client.models.bounding_box_result import BoundingBoxResult
33
33
  from rapidata.api_client.models.bounding_box_truth import BoundingBoxTruth
34
34
  from rapidata.api_client.models.box_shape import BoxShape
35
+ from rapidata.api_client.models.campaign_user_filter_model import CampaignUserFilterModel
35
36
  from rapidata.api_client.models.classification_metadata import ClassificationMetadata
36
37
  from rapidata.api_client.models.classification_metadata_filter_config import ClassificationMetadataFilterConfig
37
38
  from rapidata.api_client.models.classify_payload import ClassifyPayload
@@ -115,6 +116,7 @@ from rapidata.api_client.models.import_validation_set_from_file_result import Im
115
116
  from rapidata.api_client.models.issue_auth_token_result import IssueAuthTokenResult
116
117
  from rapidata.api_client.models.issue_client_auth_token_result import IssueClientAuthTokenResult
117
118
  from rapidata.api_client.models.labeling_selection import LabelingSelection
119
+ from rapidata.api_client.models.language_user_filter_model import LanguageUserFilterModel
118
120
  from rapidata.api_client.models.line import Line
119
121
  from rapidata.api_client.models.line_payload import LinePayload
120
122
  from rapidata.api_client.models.line_point import LinePoint
@@ -204,6 +206,7 @@ from rapidata.api_client.models.upload_coco_result import UploadCocoResult
204
206
  from rapidata.api_client.models.upload_datapoints_result import UploadDatapointsResult
205
207
  from rapidata.api_client.models.upload_files_from_s3_bucket_model import UploadFilesFromS3BucketModel
206
208
  from rapidata.api_client.models.upload_text_sources_to_dataset_model import UploadTextSourcesToDatasetModel
209
+ from rapidata.api_client.models.user_score_user_filter_model import UserScoreUserFilterModel
207
210
  from rapidata.api_client.models.validation_chance import ValidationChance
208
211
  from rapidata.api_client.models.validation_import_post_request_blueprint import ValidationImportPostRequestBlueprint
209
212
  from rapidata.api_client.models.validation_rapid_selection_config import ValidationRapidSelectionConfig
@@ -0,0 +1,96 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Rapidata.Dataset
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
7
+
8
+ The version of the OpenAPI document: v1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class CampaignUserFilterModel(BaseModel):
26
+ """
27
+ The CampaignFilter is used to restrict users to specific campaigns.
28
+ """ # noqa: E501
29
+ t: StrictStr = Field(description="Discriminator value for CampaignFilter", alias="_t")
30
+ campaign_ids: List[StrictStr] = Field(description="A whitelist for external DSP campaign ids", alias="campaignIds")
31
+ __properties: ClassVar[List[str]] = ["_t", "campaignIds"]
32
+
33
+ @field_validator('t')
34
+ def t_validate_enum(cls, value):
35
+ """Validates the enum"""
36
+ if value not in set(['CampaignFilter']):
37
+ raise ValueError("must be one of enum values ('CampaignFilter')")
38
+ return value
39
+
40
+ model_config = ConfigDict(
41
+ populate_by_name=True,
42
+ validate_assignment=True,
43
+ protected_namespaces=(),
44
+ )
45
+
46
+
47
+ def to_str(self) -> str:
48
+ """Returns the string representation of the model using alias"""
49
+ return pprint.pformat(self.model_dump(by_alias=True))
50
+
51
+ def to_json(self) -> str:
52
+ """Returns the JSON representation of the model using alias"""
53
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
54
+ return json.dumps(self.to_dict())
55
+
56
+ @classmethod
57
+ def from_json(cls, json_str: str) -> Optional[Self]:
58
+ """Create an instance of CampaignUserFilterModel from a JSON string"""
59
+ return cls.from_dict(json.loads(json_str))
60
+
61
+ def to_dict(self) -> Dict[str, Any]:
62
+ """Return the dictionary representation of the model using alias.
63
+
64
+ This has the following differences from calling pydantic's
65
+ `self.model_dump(by_alias=True)`:
66
+
67
+ * `None` is only added to the output dict for nullable fields that
68
+ were set at model initialization. Other fields with value `None`
69
+ are ignored.
70
+ """
71
+ excluded_fields: Set[str] = set([
72
+ ])
73
+
74
+ _dict = self.model_dump(
75
+ by_alias=True,
76
+ exclude=excluded_fields,
77
+ exclude_none=True,
78
+ )
79
+ return _dict
80
+
81
+ @classmethod
82
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
83
+ """Create an instance of CampaignUserFilterModel from a dict"""
84
+ if obj is None:
85
+ return None
86
+
87
+ if not isinstance(obj, dict):
88
+ return cls.model_validate(obj)
89
+
90
+ _obj = cls.model_validate({
91
+ "_t": obj.get("_t") if obj.get("_t") is not None else 'CampaignFilter',
92
+ "campaignIds": obj.get("campaignIds")
93
+ })
94
+ return _obj
95
+
96
+
@@ -29,8 +29,8 @@ class CreateComplexOrderModel(BaseModel):
29
29
  """ # noqa: E501
30
30
  order_name: StrictStr = Field(description="The name of the order", alias="orderName")
31
31
  pipeline: CreateComplexOrderModelPipeline
32
- is_public: Optional[StrictBool] = Field(default=False, description="Whether the order is public", alias="isPublic")
33
- __properties: ClassVar[List[str]] = ["orderName", "pipeline", "isPublic"]
32
+ is_demo: Optional[StrictBool] = Field(default=False, description="Whether the order is public", alias="isDemo")
33
+ __properties: ClassVar[List[str]] = ["orderName", "pipeline", "isDemo"]
34
34
 
35
35
  model_config = ConfigDict(
36
36
  populate_by_name=True,
@@ -88,7 +88,7 @@ class CreateComplexOrderModel(BaseModel):
88
88
  _obj = cls.model_validate({
89
89
  "orderName": obj.get("orderName"),
90
90
  "pipeline": CreateComplexOrderModelPipeline.from_dict(obj["pipeline"]) if obj.get("pipeline") is not None else None,
91
- "isPublic": obj.get("isPublic") if obj.get("isPublic") is not None else False
91
+ "isDemo": obj.get("isDemo") if obj.get("isDemo") is not None else False
92
92
  })
93
93
  return _obj
94
94
 
@@ -17,7 +17,7 @@ import pprint
17
17
  import re # noqa: F401
18
18
  import json
19
19
 
20
- from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
22
  from rapidata.api_client.models.create_order_model_referee import CreateOrderModelReferee
23
23
  from rapidata.api_client.models.create_order_model_selections_inner import CreateOrderModelSelectionsInner
@@ -39,7 +39,8 @@ class CreateOrderModel(BaseModel):
39
39
  validation_set_id: Optional[StrictStr] = Field(default=None, description="The validation set id can be changed to point to a specific validation set. if not provided a sane default will be used.", alias="validationSetId")
40
40
  selections: Optional[List[CreateOrderModelSelectionsInner]] = Field(default=None, description="The selections are used to determine which tasks are shown to a user.")
41
41
  feature_flags: Optional[List[FeatureFlagModel]] = Field(default=None, description="The feature flags are used to enable or disable certain features.", alias="featureFlags")
42
- __properties: ClassVar[List[str]] = ["orderName", "userFilters", "workflow", "referee", "aggregator", "validationSetId", "selections", "featureFlags"]
42
+ priority: Optional[StrictInt] = Field(default=None, description="The priority is used to prioritize over other orders.")
43
+ __properties: ClassVar[List[str]] = ["orderName", "userFilters", "workflow", "referee", "aggregator", "validationSetId", "selections", "featureFlags", "priority"]
43
44
 
44
45
  @field_validator('aggregator')
45
46
  def aggregator_validate_enum(cls, value):
@@ -137,6 +138,11 @@ class CreateOrderModel(BaseModel):
137
138
  if self.feature_flags is None and "feature_flags" in self.model_fields_set:
138
139
  _dict['featureFlags'] = None
139
140
 
141
+ # set to None if priority (nullable) is None
142
+ # and model_fields_set contains the field
143
+ if self.priority is None and "priority" in self.model_fields_set:
144
+ _dict['priority'] = None
145
+
140
146
  return _dict
141
147
 
142
148
  @classmethod
@@ -156,7 +162,8 @@ class CreateOrderModel(BaseModel):
156
162
  "aggregator": obj.get("aggregator"),
157
163
  "validationSetId": obj.get("validationSetId"),
158
164
  "selections": [CreateOrderModelSelectionsInner.from_dict(_item) for _item in obj["selections"]] if obj.get("selections") is not None else None,
159
- "featureFlags": [FeatureFlagModel.from_dict(_item) for _item in obj["featureFlags"]] if obj.get("featureFlags") is not None else None
165
+ "featureFlags": [FeatureFlagModel.from_dict(_item) for _item in obj["featureFlags"]] if obj.get("featureFlags") is not None else None,
166
+ "priority": obj.get("priority")
160
167
  })
161
168
  return _obj
162
169
 
@@ -18,26 +18,35 @@ import pprint
18
18
  from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator
19
19
  from typing import Any, List, Optional
20
20
  from rapidata.api_client.models.age_user_filter_model import AgeUserFilterModel
21
+ from rapidata.api_client.models.campaign_user_filter_model import CampaignUserFilterModel
21
22
  from rapidata.api_client.models.country_user_filter_model import CountryUserFilterModel
22
23
  from rapidata.api_client.models.gender_user_filter_model import GenderUserFilterModel
24
+ from rapidata.api_client.models.language_user_filter_model import LanguageUserFilterModel
25
+ from rapidata.api_client.models.user_score_user_filter_model import UserScoreUserFilterModel
23
26
  from pydantic import StrictStr, Field
24
27
  from typing import Union, List, Set, Optional, Dict
25
28
  from typing_extensions import Literal, Self
26
29
 
27
- CREATEORDERMODELUSERFILTERSINNER_ONE_OF_SCHEMAS = ["AgeUserFilterModel", "CountryUserFilterModel", "GenderUserFilterModel"]
30
+ CREATEORDERMODELUSERFILTERSINNER_ONE_OF_SCHEMAS = ["AgeUserFilterModel", "CampaignUserFilterModel", "CountryUserFilterModel", "GenderUserFilterModel", "LanguageUserFilterModel", "UserScoreUserFilterModel"]
28
31
 
29
32
  class CreateOrderModelUserFiltersInner(BaseModel):
30
33
  """
31
34
  The filter model can be used to restrict users to specific demographics.
32
35
  """
36
+ # data type: UserScoreUserFilterModel
37
+ oneof_schema_1_validator: Optional[UserScoreUserFilterModel] = None
38
+ # data type: LanguageUserFilterModel
39
+ oneof_schema_2_validator: Optional[LanguageUserFilterModel] = None
40
+ # data type: CampaignUserFilterModel
41
+ oneof_schema_3_validator: Optional[CampaignUserFilterModel] = None
33
42
  # data type: CountryUserFilterModel
34
- oneof_schema_1_validator: Optional[CountryUserFilterModel] = None
43
+ oneof_schema_4_validator: Optional[CountryUserFilterModel] = None
35
44
  # data type: AgeUserFilterModel
36
- oneof_schema_2_validator: Optional[AgeUserFilterModel] = None
45
+ oneof_schema_5_validator: Optional[AgeUserFilterModel] = None
37
46
  # data type: GenderUserFilterModel
38
- oneof_schema_3_validator: Optional[GenderUserFilterModel] = None
39
- actual_instance: Optional[Union[AgeUserFilterModel, CountryUserFilterModel, GenderUserFilterModel]] = None
40
- one_of_schemas: Set[str] = { "AgeUserFilterModel", "CountryUserFilterModel", "GenderUserFilterModel" }
47
+ oneof_schema_6_validator: Optional[GenderUserFilterModel] = None
48
+ actual_instance: Optional[Union[AgeUserFilterModel, CampaignUserFilterModel, CountryUserFilterModel, GenderUserFilterModel, LanguageUserFilterModel, UserScoreUserFilterModel]] = None
49
+ one_of_schemas: Set[str] = { "AgeUserFilterModel", "CampaignUserFilterModel", "CountryUserFilterModel", "GenderUserFilterModel", "LanguageUserFilterModel", "UserScoreUserFilterModel" }
41
50
 
42
51
  model_config = ConfigDict(
43
52
  validate_assignment=True,
@@ -63,6 +72,21 @@ class CreateOrderModelUserFiltersInner(BaseModel):
63
72
  instance = CreateOrderModelUserFiltersInner.model_construct()
64
73
  error_messages = []
65
74
  match = 0
75
+ # validate data type: UserScoreUserFilterModel
76
+ if not isinstance(v, UserScoreUserFilterModel):
77
+ error_messages.append(f"Error! Input type `{type(v)}` is not `UserScoreUserFilterModel`")
78
+ else:
79
+ match += 1
80
+ # validate data type: LanguageUserFilterModel
81
+ if not isinstance(v, LanguageUserFilterModel):
82
+ error_messages.append(f"Error! Input type `{type(v)}` is not `LanguageUserFilterModel`")
83
+ else:
84
+ match += 1
85
+ # validate data type: CampaignUserFilterModel
86
+ if not isinstance(v, CampaignUserFilterModel):
87
+ error_messages.append(f"Error! Input type `{type(v)}` is not `CampaignUserFilterModel`")
88
+ else:
89
+ match += 1
66
90
  # validate data type: CountryUserFilterModel
67
91
  if not isinstance(v, CountryUserFilterModel):
68
92
  error_messages.append(f"Error! Input type `{type(v)}` is not `CountryUserFilterModel`")
@@ -80,10 +104,10 @@ class CreateOrderModelUserFiltersInner(BaseModel):
80
104
  match += 1
81
105
  if match > 1:
82
106
  # more than 1 match
83
- raise ValueError("Multiple matches found when setting `actual_instance` in CreateOrderModelUserFiltersInner with oneOf schemas: AgeUserFilterModel, CountryUserFilterModel, GenderUserFilterModel. Details: " + ", ".join(error_messages))
107
+ raise ValueError("Multiple matches found when setting `actual_instance` in CreateOrderModelUserFiltersInner with oneOf schemas: AgeUserFilterModel, CampaignUserFilterModel, CountryUserFilterModel, GenderUserFilterModel, LanguageUserFilterModel, UserScoreUserFilterModel. Details: " + ", ".join(error_messages))
84
108
  elif match == 0:
85
109
  # no match
86
- raise ValueError("No match found when setting `actual_instance` in CreateOrderModelUserFiltersInner with oneOf schemas: AgeUserFilterModel, CountryUserFilterModel, GenderUserFilterModel. Details: " + ", ".join(error_messages))
110
+ raise ValueError("No match found when setting `actual_instance` in CreateOrderModelUserFiltersInner with oneOf schemas: AgeUserFilterModel, CampaignUserFilterModel, CountryUserFilterModel, GenderUserFilterModel, LanguageUserFilterModel, UserScoreUserFilterModel. Details: " + ", ".join(error_messages))
87
111
  else:
88
112
  return v
89
113
 
@@ -98,6 +122,24 @@ class CreateOrderModelUserFiltersInner(BaseModel):
98
122
  error_messages = []
99
123
  match = 0
100
124
 
125
+ # deserialize data into UserScoreUserFilterModel
126
+ try:
127
+ instance.actual_instance = UserScoreUserFilterModel.from_json(json_str)
128
+ match += 1
129
+ except (ValidationError, ValueError) as e:
130
+ error_messages.append(str(e))
131
+ # deserialize data into LanguageUserFilterModel
132
+ try:
133
+ instance.actual_instance = LanguageUserFilterModel.from_json(json_str)
134
+ match += 1
135
+ except (ValidationError, ValueError) as e:
136
+ error_messages.append(str(e))
137
+ # deserialize data into CampaignUserFilterModel
138
+ try:
139
+ instance.actual_instance = CampaignUserFilterModel.from_json(json_str)
140
+ match += 1
141
+ except (ValidationError, ValueError) as e:
142
+ error_messages.append(str(e))
101
143
  # deserialize data into CountryUserFilterModel
102
144
  try:
103
145
  instance.actual_instance = CountryUserFilterModel.from_json(json_str)
@@ -119,10 +161,10 @@ class CreateOrderModelUserFiltersInner(BaseModel):
119
161
 
120
162
  if match > 1:
121
163
  # more than 1 match
122
- raise ValueError("Multiple matches found when deserializing the JSON string into CreateOrderModelUserFiltersInner with oneOf schemas: AgeUserFilterModel, CountryUserFilterModel, GenderUserFilterModel. Details: " + ", ".join(error_messages))
164
+ raise ValueError("Multiple matches found when deserializing the JSON string into CreateOrderModelUserFiltersInner with oneOf schemas: AgeUserFilterModel, CampaignUserFilterModel, CountryUserFilterModel, GenderUserFilterModel, LanguageUserFilterModel, UserScoreUserFilterModel. Details: " + ", ".join(error_messages))
123
165
  elif match == 0:
124
166
  # no match
125
- raise ValueError("No match found when deserializing the JSON string into CreateOrderModelUserFiltersInner with oneOf schemas: AgeUserFilterModel, CountryUserFilterModel, GenderUserFilterModel. Details: " + ", ".join(error_messages))
167
+ raise ValueError("No match found when deserializing the JSON string into CreateOrderModelUserFiltersInner with oneOf schemas: AgeUserFilterModel, CampaignUserFilterModel, CountryUserFilterModel, GenderUserFilterModel, LanguageUserFilterModel, UserScoreUserFilterModel. Details: " + ", ".join(error_messages))
126
168
  else:
127
169
  return instance
128
170
 
@@ -136,7 +178,7 @@ class CreateOrderModelUserFiltersInner(BaseModel):
136
178
  else:
137
179
  return json.dumps(self.actual_instance)
138
180
 
139
- def to_dict(self) -> Optional[Union[Dict[str, Any], AgeUserFilterModel, CountryUserFilterModel, GenderUserFilterModel]]:
181
+ def to_dict(self) -> Optional[Union[Dict[str, Any], AgeUserFilterModel, CampaignUserFilterModel, CountryUserFilterModel, GenderUserFilterModel, LanguageUserFilterModel, UserScoreUserFilterModel]]:
140
182
  """Returns the dict representation of the actual instance"""
141
183
  if self.actual_instance is None:
142
184
  return None
@@ -28,7 +28,8 @@ class FeedbackModel(BaseModel):
28
28
  """ # noqa: E501
29
29
  feedback: StrictStr = Field(description="The feedback")
30
30
  email: Optional[StrictStr] = Field(default=None, description="The email of the user submitting the feedback")
31
- __properties: ClassVar[List[str]] = ["feedback", "email"]
31
+ token: Optional[StrictStr] = None
32
+ __properties: ClassVar[List[str]] = ["feedback", "email", "token"]
32
33
 
33
34
  model_config = ConfigDict(
34
35
  populate_by_name=True,
@@ -74,6 +75,11 @@ class FeedbackModel(BaseModel):
74
75
  if self.email is None and "email" in self.model_fields_set:
75
76
  _dict['email'] = None
76
77
 
78
+ # set to None if token (nullable) is None
79
+ # and model_fields_set contains the field
80
+ if self.token is None and "token" in self.model_fields_set:
81
+ _dict['token'] = None
82
+
77
83
  return _dict
78
84
 
79
85
  @classmethod
@@ -87,7 +93,8 @@ class FeedbackModel(BaseModel):
87
93
 
88
94
  _obj = cls.model_validate({
89
95
  "feedback": obj.get("feedback"),
90
- "email": obj.get("email")
96
+ "email": obj.get("email"),
97
+ "token": obj.get("token")
91
98
  })
92
99
  return _obj
93
100
 
@@ -33,7 +33,8 @@ class GetOrderByIdResult(BaseModel):
33
33
  state: StrictStr
34
34
  pipeline_id: StrictStr = Field(alias="pipelineId")
35
35
  is_locked: StrictBool = Field(alias="isLocked")
36
- __properties: ClassVar[List[str]] = ["orderName", "customerMail", "orderDate", "state", "pipelineId", "isLocked"]
36
+ is_public: StrictBool = Field(alias="isPublic")
37
+ __properties: ClassVar[List[str]] = ["orderName", "customerMail", "orderDate", "state", "pipelineId", "isLocked", "isPublic"]
37
38
 
38
39
  model_config = ConfigDict(
39
40
  populate_by_name=True,
@@ -91,7 +92,8 @@ class GetOrderByIdResult(BaseModel):
91
92
  "orderDate": obj.get("orderDate"),
92
93
  "state": obj.get("state"),
93
94
  "pipelineId": obj.get("pipelineId"),
94
- "isLocked": obj.get("isLocked")
95
+ "isLocked": obj.get("isLocked"),
96
+ "isPublic": obj.get("isPublic")
95
97
  })
96
98
  return _obj
97
99
 
@@ -0,0 +1,96 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Rapidata.Dataset
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
7
+
8
+ The version of the OpenAPI document: v1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class LanguageUserFilterModel(BaseModel):
26
+ """
27
+ The LanguageFilter is used to restrict users to specific languages.
28
+ """ # noqa: E501
29
+ t: StrictStr = Field(description="Discriminator value for LanguageFilter", alias="_t")
30
+ languages: List[StrictStr] = Field(description="A whitelist for languages of the users. The languages are in the ISO 639-1 format.")
31
+ __properties: ClassVar[List[str]] = ["_t", "languages"]
32
+
33
+ @field_validator('t')
34
+ def t_validate_enum(cls, value):
35
+ """Validates the enum"""
36
+ if value not in set(['LanguageFilter']):
37
+ raise ValueError("must be one of enum values ('LanguageFilter')")
38
+ return value
39
+
40
+ model_config = ConfigDict(
41
+ populate_by_name=True,
42
+ validate_assignment=True,
43
+ protected_namespaces=(),
44
+ )
45
+
46
+
47
+ def to_str(self) -> str:
48
+ """Returns the string representation of the model using alias"""
49
+ return pprint.pformat(self.model_dump(by_alias=True))
50
+
51
+ def to_json(self) -> str:
52
+ """Returns the JSON representation of the model using alias"""
53
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
54
+ return json.dumps(self.to_dict())
55
+
56
+ @classmethod
57
+ def from_json(cls, json_str: str) -> Optional[Self]:
58
+ """Create an instance of LanguageUserFilterModel from a JSON string"""
59
+ return cls.from_dict(json.loads(json_str))
60
+
61
+ def to_dict(self) -> Dict[str, Any]:
62
+ """Return the dictionary representation of the model using alias.
63
+
64
+ This has the following differences from calling pydantic's
65
+ `self.model_dump(by_alias=True)`:
66
+
67
+ * `None` is only added to the output dict for nullable fields that
68
+ were set at model initialization. Other fields with value `None`
69
+ are ignored.
70
+ """
71
+ excluded_fields: Set[str] = set([
72
+ ])
73
+
74
+ _dict = self.model_dump(
75
+ by_alias=True,
76
+ exclude=excluded_fields,
77
+ exclude_none=True,
78
+ )
79
+ return _dict
80
+
81
+ @classmethod
82
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
83
+ """Create an instance of LanguageUserFilterModel from a dict"""
84
+ if obj is None:
85
+ return None
86
+
87
+ if not isinstance(obj, dict):
88
+ return cls.model_validate(obj)
89
+
90
+ _obj = cls.model_validate({
91
+ "_t": obj.get("_t") if obj.get("_t") is not None else 'LanguageFilter',
92
+ "languages": obj.get("languages")
93
+ })
94
+ return _obj
95
+
96
+
@@ -17,8 +17,8 @@ import pprint
17
17
  import re # noqa: F401
18
18
  import json
19
19
 
20
- from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
21
- from typing import Any, ClassVar, Dict, List
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List, Union
22
22
  from rapidata.api_client.models.line_point import LinePoint
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
@@ -28,7 +28,7 @@ class Line(BaseModel):
28
28
  Line
29
29
  """ # noqa: E501
30
30
  t: StrictStr = Field(description="Discriminator value for Line", alias="_t")
31
- size: StrictInt
31
+ size: Union[StrictFloat, StrictInt]
32
32
  points: List[LinePoint]
33
33
  __properties: ClassVar[List[str]] = ["_t", "size", "points"]
34
34
 
@@ -0,0 +1,98 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Rapidata.Dataset
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
7
+
8
+ The version of the OpenAPI document: v1
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr, field_validator
21
+ from typing import Any, ClassVar, Dict, List, Optional, Union
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class UserScoreUserFilterModel(BaseModel):
26
+ """
27
+ The UserScoreFilter is used to restrict users to a specific user score.
28
+ """ # noqa: E501
29
+ t: StrictStr = Field(description="Discriminator value for UserScoreFilter", alias="_t")
30
+ lowerbound: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The lowerbound of the user score.")
31
+ upperbound: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The upperbound of the user score.")
32
+ __properties: ClassVar[List[str]] = ["_t", "lowerbound", "upperbound"]
33
+
34
+ @field_validator('t')
35
+ def t_validate_enum(cls, value):
36
+ """Validates the enum"""
37
+ if value not in set(['UserScoreFilter']):
38
+ raise ValueError("must be one of enum values ('UserScoreFilter')")
39
+ return value
40
+
41
+ model_config = ConfigDict(
42
+ populate_by_name=True,
43
+ validate_assignment=True,
44
+ protected_namespaces=(),
45
+ )
46
+
47
+
48
+ def to_str(self) -> str:
49
+ """Returns the string representation of the model using alias"""
50
+ return pprint.pformat(self.model_dump(by_alias=True))
51
+
52
+ def to_json(self) -> str:
53
+ """Returns the JSON representation of the model using alias"""
54
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
55
+ return json.dumps(self.to_dict())
56
+
57
+ @classmethod
58
+ def from_json(cls, json_str: str) -> Optional[Self]:
59
+ """Create an instance of UserScoreUserFilterModel from a JSON string"""
60
+ return cls.from_dict(json.loads(json_str))
61
+
62
+ def to_dict(self) -> Dict[str, Any]:
63
+ """Return the dictionary representation of the model using alias.
64
+
65
+ This has the following differences from calling pydantic's
66
+ `self.model_dump(by_alias=True)`:
67
+
68
+ * `None` is only added to the output dict for nullable fields that
69
+ were set at model initialization. Other fields with value `None`
70
+ are ignored.
71
+ """
72
+ excluded_fields: Set[str] = set([
73
+ ])
74
+
75
+ _dict = self.model_dump(
76
+ by_alias=True,
77
+ exclude=excluded_fields,
78
+ exclude_none=True,
79
+ )
80
+ return _dict
81
+
82
+ @classmethod
83
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
84
+ """Create an instance of UserScoreUserFilterModel from a dict"""
85
+ if obj is None:
86
+ return None
87
+
88
+ if not isinstance(obj, dict):
89
+ return cls.model_validate(obj)
90
+
91
+ _obj = cls.model_validate({
92
+ "_t": obj.get("_t") if obj.get("_t") is not None else 'UserScoreFilter',
93
+ "lowerbound": obj.get("lowerbound"),
94
+ "upperbound": obj.get("upperbound")
95
+ })
96
+ return _obj
97
+
98
+
@@ -115,6 +115,7 @@ Class | Method | HTTP request | Description
115
115
  *OrderApi* | [**order_query_get**](rapidata/api_client/docs/OrderApi.md#order_query_get) | **GET** /Order/Query | Queries orders based on a filter, page, and sort criteria.
116
116
  *OrderApi* | [**order_result_get**](rapidata/api_client/docs/OrderApi.md#order_result_get) | **GET** /Order/Result | Aggregates the results of an order.
117
117
  *OrderApi* | [**order_retry_failed_post**](rapidata/api_client/docs/OrderApi.md#order_retry_failed_post) | **POST** /Order/RetryFailed | Retries a failed order.
118
+ *OrderApi* | [**order_share_put**](rapidata/api_client/docs/OrderApi.md#order_share_put) | **PUT** /Order/Share | Updates whether an order is public or not.
118
119
  *OrderApi* | [**order_submit_post**](rapidata/api_client/docs/OrderApi.md#order_submit_post) | **POST** /Order/Submit | Submits an order for approval.
119
120
  *OrderApi* | [**order_unlock_post**](rapidata/api_client/docs/OrderApi.md#order_unlock_post) | **POST** /Order/Unlock | Unlocks a newly cloned order.
120
121
  *OrderApi* | [**order_update_access_put**](rapidata/api_client/docs/OrderApi.md#order_update_access_put) | **PUT** /Order/UpdateAccess | Updates whether an order is public or not.
@@ -153,6 +154,7 @@ Class | Method | HTTP request | Description
153
154
  - [BoundingBoxResult](rapidata/api_client/docs/BoundingBoxResult.md)
154
155
  - [BoundingBoxTruth](rapidata/api_client/docs/BoundingBoxTruth.md)
155
156
  - [BoxShape](rapidata/api_client/docs/BoxShape.md)
157
+ - [CampaignUserFilterModel](rapidata/api_client/docs/CampaignUserFilterModel.md)
156
158
  - [ClassificationMetadata](rapidata/api_client/docs/ClassificationMetadata.md)
157
159
  - [ClassificationMetadataFilterConfig](rapidata/api_client/docs/ClassificationMetadataFilterConfig.md)
158
160
  - [ClassifyPayload](rapidata/api_client/docs/ClassifyPayload.md)
@@ -236,6 +238,7 @@ Class | Method | HTTP request | Description
236
238
  - [IssueAuthTokenResult](rapidata/api_client/docs/IssueAuthTokenResult.md)
237
239
  - [IssueClientAuthTokenResult](rapidata/api_client/docs/IssueClientAuthTokenResult.md)
238
240
  - [LabelingSelection](rapidata/api_client/docs/LabelingSelection.md)
241
+ - [LanguageUserFilterModel](rapidata/api_client/docs/LanguageUserFilterModel.md)
239
242
  - [Line](rapidata/api_client/docs/Line.md)
240
243
  - [LinePayload](rapidata/api_client/docs/LinePayload.md)
241
244
  - [LinePoint](rapidata/api_client/docs/LinePoint.md)
@@ -325,6 +328,7 @@ Class | Method | HTTP request | Description
325
328
  - [UploadDatapointsResult](rapidata/api_client/docs/UploadDatapointsResult.md)
326
329
  - [UploadFilesFromS3BucketModel](rapidata/api_client/docs/UploadFilesFromS3BucketModel.md)
327
330
  - [UploadTextSourcesToDatasetModel](rapidata/api_client/docs/UploadTextSourcesToDatasetModel.md)
331
+ - [UserScoreUserFilterModel](rapidata/api_client/docs/UserScoreUserFilterModel.md)
328
332
  - [ValidationChance](rapidata/api_client/docs/ValidationChance.md)
329
333
  - [ValidationImportPostRequestBlueprint](rapidata/api_client/docs/ValidationImportPostRequestBlueprint.md)
330
334
  - [ValidationRapidSelectionConfig](rapidata/api_client/docs/ValidationRapidSelectionConfig.md)
@@ -11,6 +11,8 @@ from rapidata.api_client.models.upload_text_sources_to_dataset_model import (
11
11
  from rapidata.rapidata_client.metadata.base_metadata import Metadata
12
12
  from rapidata.service import LocalFileService
13
13
  from rapidata.service.openapi_service import OpenAPIService
14
+ from concurrent.futures import ThreadPoolExecutor, as_completed
15
+ from tqdm import tqdm
14
16
 
15
17
 
16
18
  class RapidataDataset:
@@ -32,19 +34,18 @@ class RapidataDataset:
32
34
  self,
33
35
  image_paths: list[str | list[str]],
34
36
  metadata: list[Metadata] | None = None,
37
+ max_workers: int = 10,
35
38
  ):
36
39
  if metadata is not None and len(metadata) != len(image_paths):
37
40
  raise ValueError(
38
41
  "metadata must be None or have the same length as image_paths"
39
42
  )
40
43
 
41
- for media_paths_rapid, meta in zip_longest(image_paths, metadata or []):
42
-
44
+ def upload_datapoint(media_paths_rapid: str | list[str], meta: Metadata | None) -> None:
43
45
  if isinstance(media_paths_rapid, list) and not all(
44
46
  os.path.exists(media_path) for media_path in media_paths_rapid
45
47
  ):
46
48
  raise FileNotFoundError(f"File not found: {media_paths_rapid}")
47
-
48
49
  elif isinstance(media_paths_rapid, str) and not os.path.exists(
49
50
  media_paths_rapid
50
51
  ):
@@ -60,4 +61,19 @@ class RapidataDataset:
60
61
  ),
61
62
  )
62
63
 
63
- self.openapi_service.dataset_api.dataset_create_datapoint_post(model=model, files=media_paths_rapid if isinstance(media_paths_rapid, list) else [media_paths_rapid]) # type: ignore
64
+ self.openapi_service.dataset_api.dataset_create_datapoint_post(
65
+ model=model,
66
+ files=media_paths_rapid if isinstance(media_paths_rapid, list) else [media_paths_rapid] # type: ignore
67
+ )
68
+
69
+ total_uploads = len(image_paths)
70
+ with ThreadPoolExecutor(max_workers=max_workers) as executor:
71
+ futures = [
72
+ executor.submit(upload_datapoint, media_paths, meta)
73
+ for media_paths, meta in zip_longest(image_paths, metadata or [])
74
+ ]
75
+
76
+ with tqdm(total=total_uploads, desc="Uploading datapoints") as pbar:
77
+ for future in as_completed(futures):
78
+ future.result() # This will raise any exceptions that occurred during execution
79
+ pbar.update(1)
@@ -1,6 +1,8 @@
1
1
  import time
2
2
  from rapidata.rapidata_client.dataset.rapidata_dataset import RapidataDataset
3
3
  from rapidata.service.openapi_service import OpenAPIService
4
+ import json
5
+ from rapidata.api_client.exceptions import ApiException
4
6
 
5
7
 
6
8
  class RapidataOrder:
@@ -51,14 +53,19 @@ class RapidataOrder:
51
53
  """
52
54
  Blocking call that waits for the order to be done. Exponential backoff is used to check the status of the order.
53
55
  """
54
- wait_time = 2
55
- back_off_factor = 1.5
56
- minimum_poll_interval = 60 * 10 # 10 minutes
56
+ wait_time = 1
57
+ back_off_factor = 1.1
58
+ minimum_poll_interval = 60 # 1 minute
57
59
 
58
60
  while True:
59
61
  time.sleep(wait_time)
60
62
  result = self.get_status()
61
- if result.state == "Completed":
63
+ if result.state == "ManualReview":
64
+ print(
65
+ "Order is in manual review. Please contact support for approval. Will continue polling."
66
+ )
67
+
68
+ if result.state == "Completed" or result.state == "Failed":
62
69
  break
63
70
  wait_time = max(
64
71
  minimum_poll_interval, wait_time * back_off_factor
@@ -71,8 +78,17 @@ class RapidataOrder:
71
78
  :return: The results of the order.
72
79
  :rtype: dict
73
80
  """
74
- # return self.openapi_service.order_api.order_get_order_results_get(self.order_id) # throws error
75
- raise NotImplementedError("Currently not supported")
81
+ try:
82
+ # Get the raw result string
83
+ result_str = self.openapi_service.order_api.order_result_get(id=self.order_id)
84
+ # Parse the result string as JSON
85
+ return json.loads(result_str)
86
+ except ApiException as e:
87
+ # Handle API exceptions
88
+ raise Exception(f"Failed to get order results: {str(e)}") from e
89
+ except json.JSONDecodeError as e:
90
+ # Handle JSON parsing errors
91
+ raise Exception(f"Failed to parse order results: {str(e)}") from e
76
92
 
77
93
  @property
78
94
  def dataset(self):
@@ -87,7 +87,7 @@ class RapidataOrderBuilder:
87
87
  ],
88
88
  )
89
89
 
90
- def create(self, submit=True) -> RapidataOrder:
90
+ def create(self, submit=True, max_workers=10) -> RapidataOrder:
91
91
  """Actually makes the API calls to create the order based on how the order builder was configured.
92
92
 
93
93
  Args:
@@ -113,7 +113,7 @@ class RapidataOrderBuilder:
113
113
  openapi_service=self._openapi_service,
114
114
  )
115
115
 
116
- order.dataset.add_media_from_paths(self._media_paths, self._metadata)
116
+ order.dataset.add_media_from_paths(self._media_paths, self._metadata, max_workers)
117
117
 
118
118
  if submit:
119
119
  order.submit()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rapidata
3
- Version: 0.1.25
3
+ Version: 0.2.1
4
4
  Summary: Rapidata package containing the Rapidata Python Client to interact with the Rapidata Web API in an easy way.
5
5
  License: Apache-2.0
6
6
  Author: Rapidata AG
@@ -16,6 +16,7 @@ Requires-Dist: pydantic (>=2.8.2,<3.0.0)
16
16
  Requires-Dist: pyjwt (>=2.9.0,<3.0.0)
17
17
  Requires-Dist: python-dateutil (>=2.9.0.post0,<3.0.0)
18
18
  Requires-Dist: requests (>=2.32.3,<3.0.0)
19
+ Requires-Dist: tqdm (>=4.66.5,<5.0.0)
19
20
  Description-Content-Type: text/markdown
20
21
 
21
22
  # Rapidata Python Client
@@ -1,19 +1,19 @@
1
1
  rapidata/__init__.py,sha256=iUiqnIukWZ4ygW9_TNt7hn1ZnDROoi6vlS5MfJq0OE4,51
2
- rapidata/api_client/__init__.py,sha256=O7OF-B0_pcUkvSQG7koqvwS7S_IknSuSdWTotiV5-DQ,18513
2
+ rapidata/api_client/__init__.py,sha256=eLFuUpHlUktj4p6EyWzC9H4Fp-asEoM6q3SPHOI2FJA,18786
3
3
  rapidata/api_client/api/__init__.py,sha256=NmEdKcHiQlR8hn7KMT-V5CZv9H-uPlR8ZHJR27gUq2g,524
4
4
  rapidata/api_client/api/coco_api.py,sha256=v5xYyQVlAv4ENgihWlji3BkbczQYKxLP0gnxfQLRmkI,24926
5
5
  rapidata/api_client/api/datapoint_api.py,sha256=cKeGXSKNohFXsZwQ6UzHwLnzkcDTI59X7N8B8bp2B4w,31599
6
6
  rapidata/api_client/api/dataset_api.py,sha256=EPzqRvCafB5CGMTWpt87qlVnpIYVCYeMdUAspA-PoAs,91075
7
7
  rapidata/api_client/api/identity_api.py,sha256=bFEftBZkgoX7E5lVgx81G5vk4LBNIZSMS_GUpb_aynI,127289
8
8
  rapidata/api_client/api/newsletter_api.py,sha256=-mBBE5E9nc-T9dxAfXe1sVNIbMueWVTpIuZxtOZPNOo,22529
9
- rapidata/api_client/api/order_api.py,sha256=VZWdhxT3jR2ZQS9rwsYBEd0-lCXPYNr_iTzOUTNo1DI,215413
9
+ rapidata/api_client/api/order_api.py,sha256=iGYEdL0b6TME3p8Acbi9tWoYIP8Q9JMnSHhevzdDEcQ,225131
10
10
  rapidata/api_client/api/rapid_api.py,sha256=mCS6kf_JEQ_t5zzj5Dar-yaXb3Xf4yGBDt0VN9X5WC4,53948
11
11
  rapidata/api_client/api/validation_api.py,sha256=e453OOumaW8FL9pIO30JSy_N-XbGUUkn3urQYFId6mw,67112
12
12
  rapidata/api_client/api_client.py,sha256=mApWfZNpTldhNwt1XFMhAUvsenHxZ-lvbyqWUHOhUtk,27427
13
13
  rapidata/api_client/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
14
14
  rapidata/api_client/configuration.py,sha256=g472vHVPLBotq8EkfSXP4sbp7xnn-3sb8O8BBlRWK1I,15931
15
15
  rapidata/api_client/exceptions.py,sha256=eLLd1fxM0Ygf3IIG6aNx9hdy79drst5Cem0UjI_NamM,5978
16
- rapidata/api_client/models/__init__.py,sha256=RUsbQZ05whXSdoD2nDbJdmoQfYkaySjfIJVUeLmHULM,17448
16
+ rapidata/api_client/models/__init__.py,sha256=5KOrCESp7KWqIVP63Q5As7UhjPivpvjYKwJDwAli8Mc,17721
17
17
  rapidata/api_client/models/add_validation_rapid_model.py,sha256=-HRHMK-o6dgGjUqfsP_woZcFxfN7nuJ-L1CUaK9nihY,4918
18
18
  rapidata/api_client/models/add_validation_rapid_model_payload.py,sha256=Ul_xSBMI4jlnbIKPZfyuYJ5x-f-mQik8hYD1ArVKCLw,11092
19
19
  rapidata/api_client/models/add_validation_rapid_model_truth.py,sha256=TlaA5RbE2gJquDDm-d7c_fQxvWjYQtiJljZEWgZMWo8,11044
@@ -32,6 +32,7 @@ rapidata/api_client/models/bounding_box_rapid_blueprint.py,sha256=PUB5vE338XDhwW
32
32
  rapidata/api_client/models/bounding_box_result.py,sha256=3dJXlomyf7E4N-oLCp-7Crk6BG5e7ylxRLU7b7v0J4A,3650
33
33
  rapidata/api_client/models/bounding_box_truth.py,sha256=QTlYZFc1ZG-_pO8n0fpfuT4_7g3xm9i7MUDhhtEJGa4,3342
34
34
  rapidata/api_client/models/box_shape.py,sha256=8sPLY_p1e9yjCGtUBbtfeZcj2StrnPRY8RtOZ2CiwwM,4192
35
+ rapidata/api_client/models/campaign_user_filter_model.py,sha256=-JkAB9p0rTvj9ym0SnSfQPfhJgtRu8LPael011ASaQU,3129
35
36
  rapidata/api_client/models/classification_metadata.py,sha256=nNvX8m7sRkhxPiLaCtMGdOmW8Q-cw42LFNlYT-i6WIY,3262
36
37
  rapidata/api_client/models/classification_metadata_filter_config.py,sha256=Piv8LaeS856jP5SCbXpOAR-zbqVtXQTUtXxdIC6ViB4,3128
37
38
  rapidata/api_client/models/classify_payload.py,sha256=UmIU4mE6pR3KdrxEzFTgPTsN0H8YUPiUaZuy2JOTnAE,3104
@@ -53,7 +54,7 @@ rapidata/api_client/models/count_classification_metadata_filter_config.py,sha256
53
54
  rapidata/api_client/models/count_metadata.py,sha256=jZPGQjbV49uZo6DYrKGisLlSdQNZ6y_nfPMgsKbB1Bs,3165
54
55
  rapidata/api_client/models/country_user_filter_model.py,sha256=K1tE-CBdFq7LcjBqNeeoHxtu__R8bcuM5o5Nv_H4gNc,3113
55
56
  rapidata/api_client/models/create_client_model.py,sha256=mhSgaiQjgzkyXqA8_SZdHFDjjNF8aRgTGbynx3-TXW0,2784
56
- rapidata/api_client/models/create_complex_order_model.py,sha256=5Q-Z4DPdckIXaacJ4EEVg6iLlvIblwqRYL7Wdam00bs,3349
57
+ rapidata/api_client/models/create_complex_order_model.py,sha256=46n1IJRAIyCYCGXKvF5LjMVf4pXILC-kP86oU6YKo1w,3337
57
58
  rapidata/api_client/models/create_complex_order_model_pipeline.py,sha256=yF_-tOciVlAiDlWb1bptnoEFGlQis68WEI_EeviEFk8,4939
58
59
  rapidata/api_client/models/create_complex_order_result.py,sha256=keKXP6Gy4wco2bcRUX8xDCTtTk5me_iyuIow8fo3Okg,3054
59
60
  rapidata/api_client/models/create_dataset_artifact_model.py,sha256=oy_gbpPxEadNVyulUETQKHmK8VxGKwti5ro1lwAuNzc,3575
@@ -63,10 +64,10 @@ rapidata/api_client/models/create_default_order_model_workflow_config.py,sha256=
63
64
  rapidata/api_client/models/create_demographic_rapid_model.py,sha256=XUHn36h1UrOr_Yuuc9D75w3Q0Btsb6XrRNknz4dL4Ws,3037
64
65
  rapidata/api_client/models/create_empty_validation_set_result.py,sha256=Z8s0Kjz2lgkbFpbEOXUcu1Rm-iTTVv6vCArbXvwmqfA,2628
65
66
  rapidata/api_client/models/create_legacy_order_result.py,sha256=BR1XqPKq9QkDe0UytTW6dpihAeNyfCc4C1m0XfY53hQ,2672
66
- rapidata/api_client/models/create_order_model.py,sha256=S4HiTe_sVY95tqB9-ToCi5MulqZy8Rn5ypFV2P61qQM,8066
67
+ rapidata/api_client/models/create_order_model.py,sha256=ADfSCKQVsA8IPqwp8h2jzk1QsgUDybMBgUgTRZOUi44,8474
67
68
  rapidata/api_client/models/create_order_model_referee.py,sha256=dxQ9SDiBjFIKYjctVNeiuGvjZwzIa0Q8JpW7iRei00I,5748
68
69
  rapidata/api_client/models/create_order_model_selections_inner.py,sha256=ynozg1tQpVC6Myt4nWhcAygKnqp6VFxlLvqHYkyJNNE,6566
69
- rapidata/api_client/models/create_order_model_user_filters_inner.py,sha256=qEZpmZ_HN2FyXjEOFnZ7KJLeT3VdGtiUgMlrNGaY2KY,6671
70
+ rapidata/api_client/models/create_order_model_user_filters_inner.py,sha256=Nw-zvKwf5wH9fNehQQhzfQVzNhjmrNn3XLkt8veNtAM,9452
70
71
  rapidata/api_client/models/create_order_model_workflow.py,sha256=3df3woFT6gFmgy4REZdigXPiOAzv1zL4oALitsyBb_Q,5718
71
72
  rapidata/api_client/models/create_order_result.py,sha256=JfqjZHcmZCNtAznfXs_iZwkBwxCNRY1mHp9Zx3kSMdo,3026
72
73
  rapidata/api_client/models/create_simple_pipeline_model.py,sha256=loLhevw-sZap22HDFGDF1aphPBznt1M-wBY31haihNY,4729
@@ -90,7 +91,7 @@ rapidata/api_client/models/empty_validation_truth.py,sha256=dn4EDj_8DPBtupr2Hrmk
90
91
  rapidata/api_client/models/error_type.py,sha256=AZKEf0UaGxP2PW5Gf9jYolx9GWBD9rWyDuzXcbgsm6E,842
91
92
  rapidata/api_client/models/feature_flag.py,sha256=Ctw_S0nxSr0gz4n2GQW1QmcvfVNV8A-IldefaojbgAc,2531
92
93
  rapidata/api_client/models/feature_flag_model.py,sha256=Bzq7vkZRoYnft2_2-HKHLj4FVa6a5lbN3x34-m8vFsA,2803
93
- rapidata/api_client/models/feedback_model.py,sha256=FV8M8BQq7Ks7_tIG3PboOFRhzwYtsQmq4039X15Cz6Y,2929
94
+ rapidata/api_client/models/feedback_model.py,sha256=kizJeebJWTFiZkNMWr_brreffBFRwoNJpQN-Jn1oGSs,3218
94
95
  rapidata/api_client/models/file_asset.py,sha256=I2xhSNJiFoNwK0vDHcosIc3BVMv6aL-9CaJcq5soJ5M,3727
95
96
  rapidata/api_client/models/file_asset_metadata_inner.py,sha256=YpRMBMuTbxiBMSEXPhYXlUH0y6MQ4RXkzrBcjt_eAHo,10598
96
97
  rapidata/api_client/models/file_asset_model.py,sha256=dlcqBW2q7F56TgHbAaUobDb5Y4j-xSWUrnE27Lpb6PE,3680
@@ -104,7 +105,7 @@ rapidata/api_client/models/gender_user_filter_model.py,sha256=-D8NX8gfmvw2N2dc35
104
105
  rapidata/api_client/models/get_available_validation_sets_result.py,sha256=6Tam9TNoc-l84FWw5AEUt0AdxDCPRrUvRkR9jCiJHi8,3228
105
106
  rapidata/api_client/models/get_datapoints_by_dataset_id_result.py,sha256=u8DHnbnIJoZgYvr5XJdyId8wpKehuVqqUmW3u4QSC68,3004
106
107
  rapidata/api_client/models/get_dataset_by_id_result.py,sha256=buK_gpa_G4uTQ3g05A3P7kW9v1pfsWU_l1EXCAGyC_o,2502
107
- rapidata/api_client/models/get_order_by_id_result.py,sha256=TWKtSi0kGjnVlEpNJFmzxKZNLffpIv9HpCwxUEFN6iE,3127
108
+ rapidata/api_client/models/get_order_by_id_result.py,sha256=46bKh7NsaCprCpROqRsgo4-Cr6XkG5iTfJ3H8Ni-zhY,3236
108
109
  rapidata/api_client/models/get_order_results_result.py,sha256=zHCTEa1VgbIoGXHsBtJ3z8wZ9X8hy0zRh_GpA4pT0vA,2830
109
110
  rapidata/api_client/models/get_public_orders_result.py,sha256=ZeORzTIQu3hq1nNdb6tjvSgrLOs8HVbDYjLOZTJNno4,2976
110
111
  rapidata/api_client/models/get_workflow_config_result.py,sha256=2JiFcYzAsiUOheWrg1bL6RYuQqAvrn2WaL9pZpQZh1w,3023
@@ -115,7 +116,8 @@ rapidata/api_client/models/import_validation_set_from_file_result.py,sha256=HqJX
115
116
  rapidata/api_client/models/issue_auth_token_result.py,sha256=e-nW-90PLpY8jU1LvUFIKzO7YAidOWSP2YbnSqp2tzM,2574
116
117
  rapidata/api_client/models/issue_client_auth_token_result.py,sha256=VDZ3-wCqDh4S0KCA3Z8crojS9tjgebLta07JS5w0oYA,2581
117
118
  rapidata/api_client/models/labeling_selection.py,sha256=H_wzf1c9nCZfg5VvKpe5_jNP-rzfR-7bUbu20ZLLLhg,3139
118
- rapidata/api_client/models/line.py,sha256=XBWNSWHE-VwxwhYDYjKcxpyPF8qXnNpQ6WRTxZFMuPE,3401
119
+ rapidata/api_client/models/language_user_filter_model.py,sha256=bho7gWBO292tIVOxzJlI1jKswAQtGsb0pTui2jJIeg0,3140
120
+ rapidata/api_client/models/line.py,sha256=y3wMl8egxGHlex3OpkD9JItxaRTFtm8EOC8XM9TN8fk,3441
119
121
  rapidata/api_client/models/line_payload.py,sha256=MlT2YmnUlHsaSSRXW6svbBE7j4vxiQYXIsYrMkP1hgc,2912
120
122
  rapidata/api_client/models/line_point.py,sha256=GDZyLGx_4qFH0QbOcF4MnYvyxXRIp4DanOBNAgglsiI,3000
121
123
  rapidata/api_client/models/line_rapid_blueprint.py,sha256=4iemG24yUYNfvv7SpbvxtHITuPdr4iVuMoqFHfo1xRU,2948
@@ -204,6 +206,7 @@ rapidata/api_client/models/upload_coco_result.py,sha256=1bO7PjM5Su1fQKzFqpe0-HuL
204
206
  rapidata/api_client/models/upload_datapoints_result.py,sha256=elRh6AliS3UJsOeQCVv3RtRS4lthhYm-IOezshzmT9I,3122
205
207
  rapidata/api_client/models/upload_files_from_s3_bucket_model.py,sha256=VAzALEkDDixAvvQc-HW-Bc6Ql9mtQcX5mJ2PfHyHIvA,4653
206
208
  rapidata/api_client/models/upload_text_sources_to_dataset_model.py,sha256=H3EuJ5J1o-VOYDcqTks4LYJxWWTL15IhUKVgijFczR4,2860
209
+ rapidata/api_client/models/user_score_user_filter_model.py,sha256=k_OvFRQKtle7sJIpgTariHnPy9CKOU1AbTNn-Jtme5g,3375
207
210
  rapidata/api_client/models/validation_chance.py,sha256=noMnBjmt2MjJFpg6OPLfrEppoXmdv82fvCF8v6o4dL0,2838
208
211
  rapidata/api_client/models/validation_import_post_request_blueprint.py,sha256=KIwjfDRUxUpGAq2rDkxe3xTTFbn_CdzjYPvJDLFwhYw,12326
209
212
  rapidata/api_client/models/validation_rapid_selection_config.py,sha256=T6RoGq_YSytk_TAcWsfOsU_7nfQlLmnO4Qn0CkQok7k,3219
@@ -216,13 +219,13 @@ rapidata/api_client/models/workflow_labeling_step_model.py,sha256=iXeIb78bdMhGFj
216
219
  rapidata/api_client/models/workflow_split_model.py,sha256=zthOSaUl8dbLhLymLK_lrPTBpeV1a4cODLxnHmNCAZw,4474
217
220
  rapidata/api_client/models/workflow_split_model_filter_configs_inner.py,sha256=1Fx9uZtztiiAdMXkj7YeCqt7o6VkG9lKf7D7UP_h088,7447
218
221
  rapidata/api_client/rest.py,sha256=A8BNcRsSo-Pn6sluvAOkTONtiA8gpulLjvGX93sQiAs,9419
219
- rapidata/api_client_README.md,sha256=ii243wqzBshY07DoHzg_FAIQB_56Pk3g90moaXwUXfM,29712
222
+ rapidata/api_client_README.md,sha256=ebeOypm4MabEycVUxBm8YQjjijLaSJMmxtlA3cFklP4,30117
220
223
  rapidata/rapidata_client/__init__.py,sha256=JUnCWjIxuAROIKid96Fz-Kiul7PmtnNofzwhTclAU2I,43
221
224
  rapidata/rapidata_client/config.py,sha256=tQLgN6k_ATOX1GzZh38At2rgBDLStV6rJ6z0vsTTPjg,186
222
225
  rapidata/rapidata_client/country_codes/__init__.py,sha256=Y8qeG2IMjvMGvhaPydq0nhwRQHb6dQqilctlEXu0_PE,55
223
226
  rapidata/rapidata_client/country_codes/country_codes.py,sha256=Q0HMX7uHJQDeLCFPP5bq4iYi6pgcDWEcl2ONGhjgoeU,286
224
227
  rapidata/rapidata_client/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
- rapidata/rapidata_client/dataset/rapidata_dataset.py,sha256=J5jlSIbdswhqXHOq8Qf9gtzVF70cImq9sioDG7S9Mxs,2457
228
+ rapidata/rapidata_client/dataset/rapidata_dataset.py,sha256=QDsl7ZCZxuG02yfEpBSphfSDZh_qHz6m5HUCGwZflfw,3205
226
229
  rapidata/rapidata_client/dataset/rapidata_validation_set.py,sha256=YrnUzia9AXgq2z917FtztFxj4fD5EgTWXVPBzLVIujY,9374
227
230
  rapidata/rapidata_client/dataset/validation_rapid_parts.py,sha256=SIeQesEXPPOW5kclxYLNWaKllBXHm7DQKBdMU-GXnfc,2104
228
231
  rapidata/rapidata_client/dataset/validation_set_builder.py,sha256=B9D-uNCo_PO0NCUHju_7dsWtz_KcOmvFIsxUgQ67Q2M,7471
@@ -234,8 +237,8 @@ rapidata/rapidata_client/metadata/private_text_metadata.py,sha256=VJ_SJwp8OMFZLu
234
237
  rapidata/rapidata_client/metadata/prompt_metadata.py,sha256=_FypjKWrC3iKUO_G2CVwAGcYbEYClVv4K7upqlnmecw,468
235
238
  rapidata/rapidata_client/metadata/transcription_metadata.py,sha256=THtDEVCON4UlcXHmXrjilaOLHys4TrktUOPGWnXaCcc,631
236
239
  rapidata/rapidata_client/order/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
- rapidata/rapidata_client/order/rapidata_order.py,sha256=VRDLTPBf2k6UihF0DnWq3nfBLWExfWHzh3T-cJgFF1w,2437
238
- rapidata/rapidata_client/order/rapidata_order_builder.py,sha256=qGfdmO3wdQMDwlW5NTM8x5ll8YmC0UUuUkGtyzGMObU,8105
240
+ rapidata/rapidata_client/order/rapidata_order.py,sha256=DCfw_xH7Ja8KURlJYaxVuX6dM81sUF7HLyX4iTfqqZc,3098
241
+ rapidata/rapidata_client/order/rapidata_order_builder.py,sha256=Wx7lhThTd6SwJNSbXzhGCsEgMhizjsriGz2zMjbQyEI,8134
239
242
  rapidata/rapidata_client/rapidata_client.py,sha256=z3vz5_GNivnShj7kqii-eUff16rvwSy62zwi8WZqAWo,2776
240
243
  rapidata/rapidata_client/referee/__init__.py,sha256=x0AxGCsR6TlDjfqQ00lB9V7QVS9EZCJzweNEIzx42PI,207
241
244
  rapidata/rapidata_client/referee/base_referee.py,sha256=bMy7cw0a-pGNbFu6u_1_Jplu0A483Ubj4oDQzh8vu8k,493
@@ -259,7 +262,7 @@ rapidata/service/local_file_service.py,sha256=pgorvlWcx52Uh3cEG6VrdMK_t__7dacQ_5
259
262
  rapidata/service/openapi_service.py,sha256=-vrM2jEzQxr9KAerOYkVhpvMEeHwjzRwm9L_VFyzOT0,1537
260
263
  rapidata/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
261
264
  rapidata/utils/image_utils.py,sha256=TldO3eJWG8IhfJjm5MfNGO0mEDm1mQTsRoA0HLU1Uxs,404
262
- rapidata-0.1.25.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
263
- rapidata-0.1.25.dist-info/METADATA,sha256=bWrZHRwA8LYarK3LDoP4wLlV4vlDYqMsiuIXemQ6C-s,924
264
- rapidata-0.1.25.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
265
- rapidata-0.1.25.dist-info/RECORD,,
265
+ rapidata-0.2.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
266
+ rapidata-0.2.1.dist-info/METADATA,sha256=3Uw9M9uj4-Za3qasR5n2w6LITe8O21Ladaqs0XBpgos,961
267
+ rapidata-0.2.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
268
+ rapidata-0.2.1.dist-info/RECORD,,