rapidata 2.34.2__py3-none-any.whl → 2.35.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rapidata might be problematic. Click here for more details.
- rapidata/__init__.py +1 -1
- rapidata/api_client/__init__.py +1 -0
- rapidata/api_client/api/leaderboard_api.py +283 -0
- rapidata/api_client/models/__init__.py +1 -0
- rapidata/api_client/models/filter.py +2 -2
- rapidata/api_client/models/filter_operator.py +1 -0
- rapidata/api_client/models/sample_by_participant.py +3 -1
- rapidata/api_client/models/update_leaderboard_response_config_model.py +89 -0
- rapidata/api_client_README.md +2 -0
- rapidata/rapidata_client/benchmark/_detail_mapper.py +34 -0
- rapidata/rapidata_client/benchmark/leaderboard/rapidata_leaderboard.py +55 -39
- rapidata/rapidata_client/benchmark/rapidata_benchmark.py +147 -105
- {rapidata-2.34.2.dist-info → rapidata-2.35.0.dist-info}/METADATA +1 -1
- {rapidata-2.34.2.dist-info → rapidata-2.35.0.dist-info}/RECORD +16 -14
- {rapidata-2.34.2.dist-info → rapidata-2.35.0.dist-info}/LICENSE +0 -0
- {rapidata-2.34.2.dist-info → rapidata-2.35.0.dist-info}/WHEEL +0 -0
rapidata/__init__.py
CHANGED
rapidata/api_client/__init__.py
CHANGED
|
@@ -404,6 +404,7 @@ from rapidata.api_client.models.update_campaign_model import UpdateCampaignModel
|
|
|
404
404
|
from rapidata.api_client.models.update_dataset_name_model import UpdateDatasetNameModel
|
|
405
405
|
from rapidata.api_client.models.update_dimensions_model import UpdateDimensionsModel
|
|
406
406
|
from rapidata.api_client.models.update_leaderboard_name_model import UpdateLeaderboardNameModel
|
|
407
|
+
from rapidata.api_client.models.update_leaderboard_response_config_model import UpdateLeaderboardResponseConfigModel
|
|
407
408
|
from rapidata.api_client.models.update_order_name_model import UpdateOrderNameModel
|
|
408
409
|
from rapidata.api_client.models.update_participant_name_model import UpdateParticipantNameModel
|
|
409
410
|
from rapidata.api_client.models.update_prompt_tags_model import UpdatePromptTagsModel
|
|
@@ -34,6 +34,7 @@ from rapidata.api_client.models.standing_by_leaderboard_paged_result import Stan
|
|
|
34
34
|
from rapidata.api_client.models.standings_by_leaderboard_result import StandingsByLeaderboardResult
|
|
35
35
|
from rapidata.api_client.models.submit_participant_result import SubmitParticipantResult
|
|
36
36
|
from rapidata.api_client.models.update_leaderboard_name_model import UpdateLeaderboardNameModel
|
|
37
|
+
from rapidata.api_client.models.update_leaderboard_response_config_model import UpdateLeaderboardResponseConfigModel
|
|
37
38
|
|
|
38
39
|
from rapidata.api_client.api_client import ApiClient, RequestSerialized
|
|
39
40
|
from rapidata.api_client.api_response import ApiResponse
|
|
@@ -3098,6 +3099,288 @@ class LeaderboardApi:
|
|
|
3098
3099
|
|
|
3099
3100
|
|
|
3100
3101
|
|
|
3102
|
+
@validate_call
|
|
3103
|
+
def leaderboard_leaderboard_id_response_config_put(
|
|
3104
|
+
self,
|
|
3105
|
+
leaderboard_id: StrictStr,
|
|
3106
|
+
update_leaderboard_response_config_model: Optional[UpdateLeaderboardResponseConfigModel] = None,
|
|
3107
|
+
_request_timeout: Union[
|
|
3108
|
+
None,
|
|
3109
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3110
|
+
Tuple[
|
|
3111
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3112
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
3113
|
+
]
|
|
3114
|
+
] = None,
|
|
3115
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
3116
|
+
_content_type: Optional[StrictStr] = None,
|
|
3117
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
3118
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
3119
|
+
) -> None:
|
|
3120
|
+
"""Updates the name of a leaderboard.
|
|
3121
|
+
|
|
3122
|
+
|
|
3123
|
+
:param leaderboard_id: (required)
|
|
3124
|
+
:type leaderboard_id: str
|
|
3125
|
+
:param update_leaderboard_response_config_model:
|
|
3126
|
+
:type update_leaderboard_response_config_model: UpdateLeaderboardResponseConfigModel
|
|
3127
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
3128
|
+
number provided, it will be total request
|
|
3129
|
+
timeout. It can also be a pair (tuple) of
|
|
3130
|
+
(connection, read) timeouts.
|
|
3131
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
3132
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
3133
|
+
request; this effectively ignores the
|
|
3134
|
+
authentication in the spec for a single request.
|
|
3135
|
+
:type _request_auth: dict, optional
|
|
3136
|
+
:param _content_type: force content-type for the request.
|
|
3137
|
+
:type _content_type: str, Optional
|
|
3138
|
+
:param _headers: set to override the headers for a single
|
|
3139
|
+
request; this effectively ignores the headers
|
|
3140
|
+
in the spec for a single request.
|
|
3141
|
+
:type _headers: dict, optional
|
|
3142
|
+
:param _host_index: set to override the host_index for a single
|
|
3143
|
+
request; this effectively ignores the host_index
|
|
3144
|
+
in the spec for a single request.
|
|
3145
|
+
:type _host_index: int, optional
|
|
3146
|
+
:return: Returns the result object.
|
|
3147
|
+
""" # noqa: E501
|
|
3148
|
+
|
|
3149
|
+
_param = self._leaderboard_leaderboard_id_response_config_put_serialize(
|
|
3150
|
+
leaderboard_id=leaderboard_id,
|
|
3151
|
+
update_leaderboard_response_config_model=update_leaderboard_response_config_model,
|
|
3152
|
+
_request_auth=_request_auth,
|
|
3153
|
+
_content_type=_content_type,
|
|
3154
|
+
_headers=_headers,
|
|
3155
|
+
_host_index=_host_index
|
|
3156
|
+
)
|
|
3157
|
+
|
|
3158
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
3159
|
+
'204': None,
|
|
3160
|
+
}
|
|
3161
|
+
response_data = self.api_client.call_api(
|
|
3162
|
+
*_param,
|
|
3163
|
+
_request_timeout=_request_timeout
|
|
3164
|
+
)
|
|
3165
|
+
response_data.read()
|
|
3166
|
+
return self.api_client.response_deserialize(
|
|
3167
|
+
response_data=response_data,
|
|
3168
|
+
response_types_map=_response_types_map,
|
|
3169
|
+
).data
|
|
3170
|
+
|
|
3171
|
+
|
|
3172
|
+
@validate_call
|
|
3173
|
+
def leaderboard_leaderboard_id_response_config_put_with_http_info(
|
|
3174
|
+
self,
|
|
3175
|
+
leaderboard_id: StrictStr,
|
|
3176
|
+
update_leaderboard_response_config_model: Optional[UpdateLeaderboardResponseConfigModel] = None,
|
|
3177
|
+
_request_timeout: Union[
|
|
3178
|
+
None,
|
|
3179
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3180
|
+
Tuple[
|
|
3181
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3182
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
3183
|
+
]
|
|
3184
|
+
] = None,
|
|
3185
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
3186
|
+
_content_type: Optional[StrictStr] = None,
|
|
3187
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
3188
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
3189
|
+
) -> ApiResponse[None]:
|
|
3190
|
+
"""Updates the name of a leaderboard.
|
|
3191
|
+
|
|
3192
|
+
|
|
3193
|
+
:param leaderboard_id: (required)
|
|
3194
|
+
:type leaderboard_id: str
|
|
3195
|
+
:param update_leaderboard_response_config_model:
|
|
3196
|
+
:type update_leaderboard_response_config_model: UpdateLeaderboardResponseConfigModel
|
|
3197
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
3198
|
+
number provided, it will be total request
|
|
3199
|
+
timeout. It can also be a pair (tuple) of
|
|
3200
|
+
(connection, read) timeouts.
|
|
3201
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
3202
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
3203
|
+
request; this effectively ignores the
|
|
3204
|
+
authentication in the spec for a single request.
|
|
3205
|
+
:type _request_auth: dict, optional
|
|
3206
|
+
:param _content_type: force content-type for the request.
|
|
3207
|
+
:type _content_type: str, Optional
|
|
3208
|
+
:param _headers: set to override the headers for a single
|
|
3209
|
+
request; this effectively ignores the headers
|
|
3210
|
+
in the spec for a single request.
|
|
3211
|
+
:type _headers: dict, optional
|
|
3212
|
+
:param _host_index: set to override the host_index for a single
|
|
3213
|
+
request; this effectively ignores the host_index
|
|
3214
|
+
in the spec for a single request.
|
|
3215
|
+
:type _host_index: int, optional
|
|
3216
|
+
:return: Returns the result object.
|
|
3217
|
+
""" # noqa: E501
|
|
3218
|
+
|
|
3219
|
+
_param = self._leaderboard_leaderboard_id_response_config_put_serialize(
|
|
3220
|
+
leaderboard_id=leaderboard_id,
|
|
3221
|
+
update_leaderboard_response_config_model=update_leaderboard_response_config_model,
|
|
3222
|
+
_request_auth=_request_auth,
|
|
3223
|
+
_content_type=_content_type,
|
|
3224
|
+
_headers=_headers,
|
|
3225
|
+
_host_index=_host_index
|
|
3226
|
+
)
|
|
3227
|
+
|
|
3228
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
3229
|
+
'204': None,
|
|
3230
|
+
}
|
|
3231
|
+
response_data = self.api_client.call_api(
|
|
3232
|
+
*_param,
|
|
3233
|
+
_request_timeout=_request_timeout
|
|
3234
|
+
)
|
|
3235
|
+
response_data.read()
|
|
3236
|
+
return self.api_client.response_deserialize(
|
|
3237
|
+
response_data=response_data,
|
|
3238
|
+
response_types_map=_response_types_map,
|
|
3239
|
+
)
|
|
3240
|
+
|
|
3241
|
+
|
|
3242
|
+
@validate_call
|
|
3243
|
+
def leaderboard_leaderboard_id_response_config_put_without_preload_content(
|
|
3244
|
+
self,
|
|
3245
|
+
leaderboard_id: StrictStr,
|
|
3246
|
+
update_leaderboard_response_config_model: Optional[UpdateLeaderboardResponseConfigModel] = None,
|
|
3247
|
+
_request_timeout: Union[
|
|
3248
|
+
None,
|
|
3249
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3250
|
+
Tuple[
|
|
3251
|
+
Annotated[StrictFloat, Field(gt=0)],
|
|
3252
|
+
Annotated[StrictFloat, Field(gt=0)]
|
|
3253
|
+
]
|
|
3254
|
+
] = None,
|
|
3255
|
+
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
|
3256
|
+
_content_type: Optional[StrictStr] = None,
|
|
3257
|
+
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
3258
|
+
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
3259
|
+
) -> RESTResponseType:
|
|
3260
|
+
"""Updates the name of a leaderboard.
|
|
3261
|
+
|
|
3262
|
+
|
|
3263
|
+
:param leaderboard_id: (required)
|
|
3264
|
+
:type leaderboard_id: str
|
|
3265
|
+
:param update_leaderboard_response_config_model:
|
|
3266
|
+
:type update_leaderboard_response_config_model: UpdateLeaderboardResponseConfigModel
|
|
3267
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
3268
|
+
number provided, it will be total request
|
|
3269
|
+
timeout. It can also be a pair (tuple) of
|
|
3270
|
+
(connection, read) timeouts.
|
|
3271
|
+
:type _request_timeout: int, tuple(int, int), optional
|
|
3272
|
+
:param _request_auth: set to override the auth_settings for an a single
|
|
3273
|
+
request; this effectively ignores the
|
|
3274
|
+
authentication in the spec for a single request.
|
|
3275
|
+
:type _request_auth: dict, optional
|
|
3276
|
+
:param _content_type: force content-type for the request.
|
|
3277
|
+
:type _content_type: str, Optional
|
|
3278
|
+
:param _headers: set to override the headers for a single
|
|
3279
|
+
request; this effectively ignores the headers
|
|
3280
|
+
in the spec for a single request.
|
|
3281
|
+
:type _headers: dict, optional
|
|
3282
|
+
:param _host_index: set to override the host_index for a single
|
|
3283
|
+
request; this effectively ignores the host_index
|
|
3284
|
+
in the spec for a single request.
|
|
3285
|
+
:type _host_index: int, optional
|
|
3286
|
+
:return: Returns the result object.
|
|
3287
|
+
""" # noqa: E501
|
|
3288
|
+
|
|
3289
|
+
_param = self._leaderboard_leaderboard_id_response_config_put_serialize(
|
|
3290
|
+
leaderboard_id=leaderboard_id,
|
|
3291
|
+
update_leaderboard_response_config_model=update_leaderboard_response_config_model,
|
|
3292
|
+
_request_auth=_request_auth,
|
|
3293
|
+
_content_type=_content_type,
|
|
3294
|
+
_headers=_headers,
|
|
3295
|
+
_host_index=_host_index
|
|
3296
|
+
)
|
|
3297
|
+
|
|
3298
|
+
_response_types_map: Dict[str, Optional[str]] = {
|
|
3299
|
+
'204': None,
|
|
3300
|
+
}
|
|
3301
|
+
response_data = self.api_client.call_api(
|
|
3302
|
+
*_param,
|
|
3303
|
+
_request_timeout=_request_timeout
|
|
3304
|
+
)
|
|
3305
|
+
return response_data.response
|
|
3306
|
+
|
|
3307
|
+
|
|
3308
|
+
def _leaderboard_leaderboard_id_response_config_put_serialize(
|
|
3309
|
+
self,
|
|
3310
|
+
leaderboard_id,
|
|
3311
|
+
update_leaderboard_response_config_model,
|
|
3312
|
+
_request_auth,
|
|
3313
|
+
_content_type,
|
|
3314
|
+
_headers,
|
|
3315
|
+
_host_index,
|
|
3316
|
+
) -> RequestSerialized:
|
|
3317
|
+
|
|
3318
|
+
_host = None
|
|
3319
|
+
|
|
3320
|
+
_collection_formats: Dict[str, str] = {
|
|
3321
|
+
}
|
|
3322
|
+
|
|
3323
|
+
_path_params: Dict[str, str] = {}
|
|
3324
|
+
_query_params: List[Tuple[str, str]] = []
|
|
3325
|
+
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
3326
|
+
_form_params: List[Tuple[str, str]] = []
|
|
3327
|
+
_files: Dict[
|
|
3328
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
3329
|
+
] = {}
|
|
3330
|
+
_body_params: Optional[bytes] = None
|
|
3331
|
+
|
|
3332
|
+
# process the path parameters
|
|
3333
|
+
if leaderboard_id is not None:
|
|
3334
|
+
_path_params['leaderboardId'] = leaderboard_id
|
|
3335
|
+
# process the query parameters
|
|
3336
|
+
# process the header parameters
|
|
3337
|
+
# process the form parameters
|
|
3338
|
+
# process the body parameter
|
|
3339
|
+
if update_leaderboard_response_config_model is not None:
|
|
3340
|
+
_body_params = update_leaderboard_response_config_model
|
|
3341
|
+
|
|
3342
|
+
|
|
3343
|
+
|
|
3344
|
+
# set the HTTP header `Content-Type`
|
|
3345
|
+
if _content_type:
|
|
3346
|
+
_header_params['Content-Type'] = _content_type
|
|
3347
|
+
else:
|
|
3348
|
+
_default_content_type = (
|
|
3349
|
+
self.api_client.select_header_content_type(
|
|
3350
|
+
[
|
|
3351
|
+
'application/json',
|
|
3352
|
+
'text/json',
|
|
3353
|
+
'application/*+json'
|
|
3354
|
+
]
|
|
3355
|
+
)
|
|
3356
|
+
)
|
|
3357
|
+
if _default_content_type is not None:
|
|
3358
|
+
_header_params['Content-Type'] = _default_content_type
|
|
3359
|
+
|
|
3360
|
+
# authentication setting
|
|
3361
|
+
_auth_settings: List[str] = [
|
|
3362
|
+
'bearer',
|
|
3363
|
+
'oauth2'
|
|
3364
|
+
]
|
|
3365
|
+
|
|
3366
|
+
return self.api_client.param_serialize(
|
|
3367
|
+
method='PUT',
|
|
3368
|
+
resource_path='/leaderboard/{leaderboardId}/response-config',
|
|
3369
|
+
path_params=_path_params,
|
|
3370
|
+
query_params=_query_params,
|
|
3371
|
+
header_params=_header_params,
|
|
3372
|
+
body=_body_params,
|
|
3373
|
+
post_params=_form_params,
|
|
3374
|
+
files=_files,
|
|
3375
|
+
auth_settings=_auth_settings,
|
|
3376
|
+
collection_formats=_collection_formats,
|
|
3377
|
+
_host=_host,
|
|
3378
|
+
_request_auth=_request_auth
|
|
3379
|
+
)
|
|
3380
|
+
|
|
3381
|
+
|
|
3382
|
+
|
|
3383
|
+
|
|
3101
3384
|
@validate_call
|
|
3102
3385
|
def leaderboard_leaderboard_id_runs_get(
|
|
3103
3386
|
self,
|
|
@@ -365,6 +365,7 @@ from rapidata.api_client.models.update_campaign_model import UpdateCampaignModel
|
|
|
365
365
|
from rapidata.api_client.models.update_dataset_name_model import UpdateDatasetNameModel
|
|
366
366
|
from rapidata.api_client.models.update_dimensions_model import UpdateDimensionsModel
|
|
367
367
|
from rapidata.api_client.models.update_leaderboard_name_model import UpdateLeaderboardNameModel
|
|
368
|
+
from rapidata.api_client.models.update_leaderboard_response_config_model import UpdateLeaderboardResponseConfigModel
|
|
368
369
|
from rapidata.api_client.models.update_order_name_model import UpdateOrderNameModel
|
|
369
370
|
from rapidata.api_client.models.update_participant_name_model import UpdateParticipantNameModel
|
|
370
371
|
from rapidata.api_client.models.update_prompt_tags_model import UpdatePromptTagsModel
|
|
@@ -39,8 +39,8 @@ class Filter(BaseModel):
|
|
|
39
39
|
if value is None:
|
|
40
40
|
return value
|
|
41
41
|
|
|
42
|
-
if value not in set(['Eq', 'Neq', 'Gt', 'Gte', 'Lt', 'Lte', 'Contains', 'StartsWith', 'EndsWith']):
|
|
43
|
-
raise ValueError("must be one of enum values ('Eq', 'Neq', 'Gt', 'Gte', 'Lt', 'Lte', 'Contains', 'StartsWith', 'EndsWith')")
|
|
42
|
+
if value not in set(['Eq', 'Neq', 'Gt', 'Gte', 'Lt', 'Lte', 'Contains', 'StartsWith', 'EndsWith', 'In']):
|
|
43
|
+
raise ValueError("must be one of enum values ('Eq', 'Neq', 'Gt', 'Gte', 'Lt', 'Lte', 'Contains', 'StartsWith', 'EndsWith', 'In')")
|
|
44
44
|
return value
|
|
45
45
|
|
|
46
46
|
@field_validator('logic')
|
|
@@ -34,10 +34,11 @@ class SampleByParticipant(BaseModel):
|
|
|
34
34
|
asset: DatapointAsset
|
|
35
35
|
prompt: Optional[StrictStr] = None
|
|
36
36
|
prompt_asset: Optional[GetValidationRapidsResultAsset] = Field(default=None, alias="promptAsset")
|
|
37
|
+
tags: List[StrictStr]
|
|
37
38
|
created_at: Optional[datetime] = Field(default=None, alias="createdAt")
|
|
38
39
|
owner_id: Optional[StrictStr] = Field(default=None, alias="ownerId")
|
|
39
40
|
owner_mail: StrictStr = Field(alias="ownerMail")
|
|
40
|
-
__properties: ClassVar[List[str]] = ["id", "identifier", "asset", "prompt", "promptAsset", "createdAt", "ownerId", "ownerMail"]
|
|
41
|
+
__properties: ClassVar[List[str]] = ["id", "identifier", "asset", "prompt", "promptAsset", "tags", "createdAt", "ownerId", "ownerMail"]
|
|
41
42
|
|
|
42
43
|
model_config = ConfigDict(
|
|
43
44
|
populate_by_name=True,
|
|
@@ -111,6 +112,7 @@ class SampleByParticipant(BaseModel):
|
|
|
111
112
|
"asset": DatapointAsset.from_dict(obj["asset"]) if obj.get("asset") is not None else None,
|
|
112
113
|
"prompt": obj.get("prompt"),
|
|
113
114
|
"promptAsset": GetValidationRapidsResultAsset.from_dict(obj["promptAsset"]) if obj.get("promptAsset") is not None else None,
|
|
115
|
+
"tags": obj.get("tags"),
|
|
114
116
|
"createdAt": obj.get("createdAt"),
|
|
115
117
|
"ownerId": obj.get("ownerId"),
|
|
116
118
|
"ownerMail": obj.get("ownerMail")
|
|
@@ -0,0 +1,89 @@
|
|
|
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, StrictInt
|
|
21
|
+
from typing import Any, ClassVar, Dict, List
|
|
22
|
+
from typing import Optional, Set
|
|
23
|
+
from typing_extensions import Self
|
|
24
|
+
|
|
25
|
+
class UpdateLeaderboardResponseConfigModel(BaseModel):
|
|
26
|
+
"""
|
|
27
|
+
The model used to update the name of a leaderboard.
|
|
28
|
+
""" # noqa: E501
|
|
29
|
+
response_budget: StrictInt = Field(description="The amount of responses that will be collected when onboarding a new participant.", alias="responseBudget")
|
|
30
|
+
min_responses: StrictInt = Field(description="The amount of responses that will be collected as a minimum on each matchup.", alias="minResponses")
|
|
31
|
+
__properties: ClassVar[List[str]] = ["responseBudget", "minResponses"]
|
|
32
|
+
|
|
33
|
+
model_config = ConfigDict(
|
|
34
|
+
populate_by_name=True,
|
|
35
|
+
validate_assignment=True,
|
|
36
|
+
protected_namespaces=(),
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def to_str(self) -> str:
|
|
41
|
+
"""Returns the string representation of the model using alias"""
|
|
42
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
43
|
+
|
|
44
|
+
def to_json(self) -> str:
|
|
45
|
+
"""Returns the JSON representation of the model using alias"""
|
|
46
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
47
|
+
return json.dumps(self.to_dict())
|
|
48
|
+
|
|
49
|
+
@classmethod
|
|
50
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
51
|
+
"""Create an instance of UpdateLeaderboardResponseConfigModel from a JSON string"""
|
|
52
|
+
return cls.from_dict(json.loads(json_str))
|
|
53
|
+
|
|
54
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
55
|
+
"""Return the dictionary representation of the model using alias.
|
|
56
|
+
|
|
57
|
+
This has the following differences from calling pydantic's
|
|
58
|
+
`self.model_dump(by_alias=True)`:
|
|
59
|
+
|
|
60
|
+
* `None` is only added to the output dict for nullable fields that
|
|
61
|
+
were set at model initialization. Other fields with value `None`
|
|
62
|
+
are ignored.
|
|
63
|
+
"""
|
|
64
|
+
excluded_fields: Set[str] = set([
|
|
65
|
+
])
|
|
66
|
+
|
|
67
|
+
_dict = self.model_dump(
|
|
68
|
+
by_alias=True,
|
|
69
|
+
exclude=excluded_fields,
|
|
70
|
+
exclude_none=True,
|
|
71
|
+
)
|
|
72
|
+
return _dict
|
|
73
|
+
|
|
74
|
+
@classmethod
|
|
75
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
76
|
+
"""Create an instance of UpdateLeaderboardResponseConfigModel from a dict"""
|
|
77
|
+
if obj is None:
|
|
78
|
+
return None
|
|
79
|
+
|
|
80
|
+
if not isinstance(obj, dict):
|
|
81
|
+
return cls.model_validate(obj)
|
|
82
|
+
|
|
83
|
+
_obj = cls.model_validate({
|
|
84
|
+
"responseBudget": obj.get("responseBudget"),
|
|
85
|
+
"minResponses": obj.get("minResponses")
|
|
86
|
+
})
|
|
87
|
+
return _obj
|
|
88
|
+
|
|
89
|
+
|
rapidata/api_client_README.md
CHANGED
|
@@ -135,6 +135,7 @@ Class | Method | HTTP request | Description
|
|
|
135
135
|
*LeaderboardApi* | [**leaderboard_leaderboard_id_participants_post**](rapidata/api_client/docs/LeaderboardApi.md#leaderboard_leaderboard_id_participants_post) | **POST** /leaderboard/{leaderboardId}/participants | Creates a participant in a leaderboard.
|
|
136
136
|
*LeaderboardApi* | [**leaderboard_leaderboard_id_prompts_get**](rapidata/api_client/docs/LeaderboardApi.md#leaderboard_leaderboard_id_prompts_get) | **GET** /leaderboard/{leaderboardId}/prompts | returns the paged prompts of a leaderboard by its ID.
|
|
137
137
|
*LeaderboardApi* | [**leaderboard_leaderboard_id_prompts_post**](rapidata/api_client/docs/LeaderboardApi.md#leaderboard_leaderboard_id_prompts_post) | **POST** /leaderboard/{leaderboardId}/prompts | adds a new prompt to a leaderboard.
|
|
138
|
+
*LeaderboardApi* | [**leaderboard_leaderboard_id_response_config_put**](rapidata/api_client/docs/LeaderboardApi.md#leaderboard_leaderboard_id_response_config_put) | **PUT** /leaderboard/{leaderboardId}/response-config | Updates the name of a leaderboard.
|
|
138
139
|
*LeaderboardApi* | [**leaderboard_leaderboard_id_runs_get**](rapidata/api_client/docs/LeaderboardApi.md#leaderboard_leaderboard_id_runs_get) | **GET** /leaderboard/{leaderboardId}/runs | Gets the runs related to a leaderboard
|
|
139
140
|
*LeaderboardApi* | [**leaderboard_leaderboard_id_standings_get**](rapidata/api_client/docs/LeaderboardApi.md#leaderboard_leaderboard_id_standings_get) | **GET** /leaderboard/{leaderboardId}/standings | queries all the participants connected to leaderboard by its ID.
|
|
140
141
|
*LeaderboardApi* | [**leaderboard_post**](rapidata/api_client/docs/LeaderboardApi.md#leaderboard_post) | **POST** /leaderboard | Creates a new leaderboard with the specified name and criteria.
|
|
@@ -563,6 +564,7 @@ Class | Method | HTTP request | Description
|
|
|
563
564
|
- [UpdateDatasetNameModel](rapidata/api_client/docs/UpdateDatasetNameModel.md)
|
|
564
565
|
- [UpdateDimensionsModel](rapidata/api_client/docs/UpdateDimensionsModel.md)
|
|
565
566
|
- [UpdateLeaderboardNameModel](rapidata/api_client/docs/UpdateLeaderboardNameModel.md)
|
|
567
|
+
- [UpdateLeaderboardResponseConfigModel](rapidata/api_client/docs/UpdateLeaderboardResponseConfigModel.md)
|
|
566
568
|
- [UpdateOrderNameModel](rapidata/api_client/docs/UpdateOrderNameModel.md)
|
|
567
569
|
- [UpdateParticipantNameModel](rapidata/api_client/docs/UpdateParticipantNameModel.md)
|
|
568
570
|
- [UpdatePromptTagsModel](rapidata/api_client/docs/UpdatePromptTagsModel.md)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from typing import Literal
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class DetailMapper:
|
|
5
|
+
MIN_RESPONSES = 3
|
|
6
|
+
|
|
7
|
+
@staticmethod
|
|
8
|
+
def get_budget(
|
|
9
|
+
level_of_detail: Literal["low", "medium", "high", "very high"]
|
|
10
|
+
) -> int:
|
|
11
|
+
if level_of_detail == "low":
|
|
12
|
+
return 2_000
|
|
13
|
+
elif level_of_detail == "medium":
|
|
14
|
+
return 4_000
|
|
15
|
+
elif level_of_detail == "high":
|
|
16
|
+
return 8_000
|
|
17
|
+
elif level_of_detail == "very high":
|
|
18
|
+
return 16_000
|
|
19
|
+
else:
|
|
20
|
+
raise ValueError(
|
|
21
|
+
"Invalid level of detail. Must be one of: 'low', 'medium', 'high', 'very high'"
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
@staticmethod
|
|
25
|
+
def get_level_of_detail(
|
|
26
|
+
response_budget: int,
|
|
27
|
+
) -> Literal["low", "medium", "high", "very high"]:
|
|
28
|
+
if response_budget < 4_000:
|
|
29
|
+
return "low"
|
|
30
|
+
elif response_budget < 8_000:
|
|
31
|
+
return "medium"
|
|
32
|
+
elif response_budget < 16_000:
|
|
33
|
+
return "high"
|
|
34
|
+
return "very high"
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import pandas as pd
|
|
2
|
-
from typing import Optional
|
|
2
|
+
from typing import Literal, Optional
|
|
3
3
|
|
|
4
|
+
from rapidata.rapidata_client.logging import logger
|
|
5
|
+
from rapidata.rapidata_client.benchmark._detail_mapper import DetailMapper
|
|
4
6
|
from rapidata.service.openapi_service import OpenAPIService
|
|
7
|
+
from rapidata.api_client.models.update_leaderboard_response_config_model import (
|
|
8
|
+
UpdateLeaderboardResponseConfigModel,
|
|
9
|
+
)
|
|
5
10
|
|
|
6
11
|
|
|
7
12
|
class RapidataLeaderboard:
|
|
@@ -17,68 +22,79 @@ class RapidataLeaderboard:
|
|
|
17
22
|
id: The ID of the leaderboard.
|
|
18
23
|
openapi_service: The OpenAPIService instance for API interaction.
|
|
19
24
|
"""
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
name: str,
|
|
29
|
+
instruction: str,
|
|
30
|
+
show_prompt: bool,
|
|
31
|
+
show_prompt_asset: bool,
|
|
32
|
+
inverse_ranking: bool,
|
|
33
|
+
response_budget: int,
|
|
34
|
+
id: str,
|
|
35
|
+
openapi_service: OpenAPIService,
|
|
36
|
+
):
|
|
30
37
|
self.__openapi_service = openapi_service
|
|
31
38
|
self.__name = name
|
|
32
39
|
self.__instruction = instruction
|
|
33
40
|
self.__show_prompt = show_prompt
|
|
34
41
|
self.__show_prompt_asset = show_prompt_asset
|
|
35
42
|
self.__inverse_ranking = inverse_ranking
|
|
36
|
-
self.__min_responses = min_responses
|
|
37
43
|
self.__response_budget = response_budget
|
|
38
44
|
self.id = id
|
|
39
45
|
|
|
40
46
|
@property
|
|
41
|
-
def
|
|
47
|
+
def level_of_detail(self) -> Literal["low", "medium", "high", "very high"]:
|
|
42
48
|
"""
|
|
43
|
-
Returns the
|
|
49
|
+
Returns the level of detail of the leaderboard.
|
|
44
50
|
"""
|
|
45
|
-
return self.__response_budget
|
|
46
|
-
|
|
47
|
-
@
|
|
48
|
-
def
|
|
51
|
+
return DetailMapper.get_level_of_detail(self.__response_budget)
|
|
52
|
+
|
|
53
|
+
@level_of_detail.setter
|
|
54
|
+
def level_of_detail(
|
|
55
|
+
self, level_of_detail: Literal["low", "medium", "high", "very high"]
|
|
56
|
+
):
|
|
49
57
|
"""
|
|
50
|
-
|
|
58
|
+
Sets the level of detail of the leaderboard.
|
|
51
59
|
"""
|
|
52
|
-
|
|
53
|
-
|
|
60
|
+
logger.debug(f"Setting level of detail to {level_of_detail}")
|
|
61
|
+
self.__openapi_service.leaderboard_api.leaderboard_leaderboard_id_response_config_put(
|
|
62
|
+
leaderboard_id=self.id,
|
|
63
|
+
update_leaderboard_response_config_model=UpdateLeaderboardResponseConfigModel(
|
|
64
|
+
responseBudget=DetailMapper.get_budget(level_of_detail),
|
|
65
|
+
minResponses=DetailMapper.MIN_RESPONSES,
|
|
66
|
+
),
|
|
67
|
+
)
|
|
68
|
+
self.__response_budget = DetailMapper.get_budget(level_of_detail)
|
|
69
|
+
|
|
54
70
|
@property
|
|
55
71
|
def show_prompt_asset(self) -> bool:
|
|
56
72
|
"""
|
|
57
73
|
Returns whether the prompt asset is shown to the users.
|
|
58
74
|
"""
|
|
59
75
|
return self.__show_prompt_asset
|
|
60
|
-
|
|
76
|
+
|
|
61
77
|
@property
|
|
62
78
|
def inverse_ranking(self) -> bool:
|
|
63
79
|
"""
|
|
64
80
|
Returns whether the ranking is inverse.
|
|
65
81
|
"""
|
|
66
82
|
return self.__inverse_ranking
|
|
67
|
-
|
|
83
|
+
|
|
68
84
|
@property
|
|
69
85
|
def show_prompt(self) -> bool:
|
|
70
86
|
"""
|
|
71
87
|
Returns whether the prompt is shown to the users.
|
|
72
88
|
"""
|
|
73
89
|
return self.__show_prompt
|
|
74
|
-
|
|
90
|
+
|
|
75
91
|
@property
|
|
76
92
|
def instruction(self) -> str:
|
|
77
93
|
"""
|
|
78
94
|
Returns the instruction of the leaderboard.
|
|
79
95
|
"""
|
|
80
96
|
return self.__instruction
|
|
81
|
-
|
|
97
|
+
|
|
82
98
|
@property
|
|
83
99
|
def name(self) -> str:
|
|
84
100
|
"""
|
|
@@ -100,28 +116,28 @@ class RapidataLeaderboard:
|
|
|
100
116
|
"""
|
|
101
117
|
|
|
102
118
|
participants = self.__openapi_service.leaderboard_api.leaderboard_leaderboard_id_standings_get(
|
|
103
|
-
leaderboard_id=self.id,
|
|
104
|
-
tags=tags
|
|
119
|
+
leaderboard_id=self.id, tags=tags
|
|
105
120
|
)
|
|
106
121
|
|
|
107
122
|
standings = []
|
|
108
123
|
for participant in participants.items:
|
|
109
|
-
standings.append(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
124
|
+
standings.append(
|
|
125
|
+
{
|
|
126
|
+
"name": participant.name,
|
|
127
|
+
"wins": participant.wins,
|
|
128
|
+
"total_matches": participant.total_matches,
|
|
129
|
+
"score": (
|
|
130
|
+
round(participant.score, 2)
|
|
131
|
+
if participant.score is not None
|
|
132
|
+
else None
|
|
133
|
+
),
|
|
134
|
+
}
|
|
135
|
+
)
|
|
115
136
|
|
|
116
137
|
return pd.DataFrame(standings)
|
|
117
138
|
|
|
118
139
|
def __str__(self) -> str:
|
|
119
140
|
return f"RapidataLeaderboard(name={self.name}, instruction={self.instruction}, show_prompt={self.show_prompt}, leaderboard_id={self.id})"
|
|
120
|
-
|
|
141
|
+
|
|
121
142
|
def __repr__(self) -> str:
|
|
122
143
|
return self.__str__()
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
import re
|
|
2
|
-
from typing import Optional
|
|
2
|
+
from typing import Literal, Optional
|
|
3
3
|
from rapidata.api_client.models.root_filter import RootFilter
|
|
4
4
|
from rapidata.api_client.models.filter import Filter
|
|
5
5
|
from rapidata.api_client.models.query_model import QueryModel
|
|
6
6
|
from rapidata.api_client.models.page_info import PageInfo
|
|
7
7
|
from rapidata.api_client.models.create_leaderboard_model import CreateLeaderboardModel
|
|
8
|
-
from rapidata.api_client.models.create_benchmark_participant_model import
|
|
8
|
+
from rapidata.api_client.models.create_benchmark_participant_model import (
|
|
9
|
+
CreateBenchmarkParticipantModel,
|
|
10
|
+
)
|
|
9
11
|
from rapidata.api_client.models.submit_prompt_model import SubmitPromptModel
|
|
10
|
-
from rapidata.api_client.models.submit_prompt_model_prompt_asset import
|
|
12
|
+
from rapidata.api_client.models.submit_prompt_model_prompt_asset import (
|
|
13
|
+
SubmitPromptModelPromptAsset,
|
|
14
|
+
)
|
|
11
15
|
from rapidata.api_client.models.url_asset_input import UrlAssetInput
|
|
12
16
|
from rapidata.api_client.models.file_asset_model import FileAssetModel
|
|
13
17
|
from rapidata.api_client.models.source_url_metadata_model import SourceUrlMetadataModel
|
|
14
18
|
|
|
15
19
|
|
|
16
|
-
from rapidata.rapidata_client.benchmark.participant._participant import
|
|
20
|
+
from rapidata.rapidata_client.benchmark.participant._participant import (
|
|
21
|
+
BenchmarkParticipant,
|
|
22
|
+
)
|
|
17
23
|
from rapidata.rapidata_client.logging import logger
|
|
18
24
|
from rapidata.service.openapi_service import OpenAPIService
|
|
19
25
|
|
|
20
|
-
from rapidata.rapidata_client.benchmark.leaderboard.rapidata_leaderboard import
|
|
26
|
+
from rapidata.rapidata_client.benchmark.leaderboard.rapidata_leaderboard import (
|
|
27
|
+
RapidataLeaderboard,
|
|
28
|
+
)
|
|
21
29
|
from rapidata.rapidata_client.datapoints.assets import MediaAsset
|
|
30
|
+
from rapidata.rapidata_client.benchmark._detail_mapper import DetailMapper
|
|
31
|
+
|
|
22
32
|
|
|
23
33
|
class RapidataBenchmark:
|
|
24
34
|
"""
|
|
@@ -31,6 +41,7 @@ class RapidataBenchmark:
|
|
|
31
41
|
id: The id of the benchmark.
|
|
32
42
|
openapi_service: The OpenAPI service to use to interact with the Rapidata API.
|
|
33
43
|
"""
|
|
44
|
+
|
|
34
45
|
def __init__(self, name: str, id: str, openapi_service: OpenAPIService):
|
|
35
46
|
self.name = name
|
|
36
47
|
self.id = id
|
|
@@ -40,51 +51,54 @@ class RapidataBenchmark:
|
|
|
40
51
|
self.__leaderboards: list[RapidataLeaderboard] = []
|
|
41
52
|
self.__identifiers: list[str] = []
|
|
42
53
|
self.__tags: list[list[str]] = []
|
|
43
|
-
|
|
54
|
+
|
|
44
55
|
def __instantiate_prompts(self) -> None:
|
|
45
56
|
current_page = 1
|
|
46
57
|
total_pages = None
|
|
47
|
-
|
|
58
|
+
|
|
48
59
|
while True:
|
|
49
|
-
prompts_result =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
page=PageInfo(
|
|
53
|
-
index=current_page,
|
|
54
|
-
size=100
|
|
55
|
-
)
|
|
60
|
+
prompts_result = (
|
|
61
|
+
self.__openapi_service.benchmark_api.benchmark_benchmark_id_prompts_get(
|
|
62
|
+
benchmark_id=self.id,
|
|
63
|
+
request=QueryModel(page=PageInfo(index=current_page, size=100)),
|
|
56
64
|
)
|
|
57
65
|
)
|
|
58
|
-
|
|
66
|
+
|
|
59
67
|
if prompts_result.total_pages is None:
|
|
60
|
-
raise ValueError(
|
|
61
|
-
|
|
68
|
+
raise ValueError(
|
|
69
|
+
"An error occurred while fetching prompts: total_pages is None"
|
|
70
|
+
)
|
|
71
|
+
|
|
62
72
|
total_pages = prompts_result.total_pages
|
|
63
|
-
|
|
73
|
+
|
|
64
74
|
for prompt in prompts_result.items:
|
|
65
75
|
self.__prompts.append(prompt.prompt)
|
|
66
76
|
self.__identifiers.append(prompt.identifier)
|
|
67
77
|
if prompt.prompt_asset is None:
|
|
68
78
|
self.__prompt_assets.append(None)
|
|
69
79
|
else:
|
|
70
|
-
assert isinstance(
|
|
71
|
-
|
|
80
|
+
assert isinstance(
|
|
81
|
+
prompt.prompt_asset.actual_instance, FileAssetModel
|
|
82
|
+
)
|
|
83
|
+
source_url = prompt.prompt_asset.actual_instance.metadata[
|
|
84
|
+
"sourceUrl"
|
|
85
|
+
].actual_instance
|
|
72
86
|
assert isinstance(source_url, SourceUrlMetadataModel)
|
|
73
87
|
self.__prompt_assets.append(source_url.url)
|
|
74
88
|
|
|
75
89
|
self.__tags.append(prompt.tags)
|
|
76
90
|
if current_page >= total_pages:
|
|
77
91
|
break
|
|
78
|
-
|
|
92
|
+
|
|
79
93
|
current_page += 1
|
|
80
94
|
|
|
81
95
|
@property
|
|
82
96
|
def identifiers(self) -> list[str]:
|
|
83
97
|
if not self.__identifiers:
|
|
84
98
|
self.__instantiate_prompts()
|
|
85
|
-
|
|
99
|
+
|
|
86
100
|
return self.__identifiers
|
|
87
|
-
|
|
101
|
+
|
|
88
102
|
@property
|
|
89
103
|
def prompts(self) -> list[str | None]:
|
|
90
104
|
"""
|
|
@@ -92,9 +106,9 @@ class RapidataBenchmark:
|
|
|
92
106
|
"""
|
|
93
107
|
if not self.__prompts:
|
|
94
108
|
self.__instantiate_prompts()
|
|
95
|
-
|
|
109
|
+
|
|
96
110
|
return self.__prompts
|
|
97
|
-
|
|
111
|
+
|
|
98
112
|
@property
|
|
99
113
|
def prompt_assets(self) -> list[str | None]:
|
|
100
114
|
"""
|
|
@@ -102,9 +116,9 @@ class RapidataBenchmark:
|
|
|
102
116
|
"""
|
|
103
117
|
if not self.__prompt_assets:
|
|
104
118
|
self.__instantiate_prompts()
|
|
105
|
-
|
|
119
|
+
|
|
106
120
|
return self.__prompt_assets
|
|
107
|
-
|
|
121
|
+
|
|
108
122
|
@property
|
|
109
123
|
def tags(self) -> list[list[str]]:
|
|
110
124
|
"""
|
|
@@ -112,9 +126,9 @@ class RapidataBenchmark:
|
|
|
112
126
|
"""
|
|
113
127
|
if not self.__tags:
|
|
114
128
|
self.__instantiate_prompts()
|
|
115
|
-
|
|
129
|
+
|
|
116
130
|
return self.__tags
|
|
117
|
-
|
|
131
|
+
|
|
118
132
|
@property
|
|
119
133
|
def leaderboards(self) -> list[RapidataLeaderboard]:
|
|
120
134
|
"""
|
|
@@ -123,48 +137,62 @@ class RapidataBenchmark:
|
|
|
123
137
|
if not self.__leaderboards:
|
|
124
138
|
current_page = 1
|
|
125
139
|
total_pages = None
|
|
126
|
-
|
|
140
|
+
|
|
127
141
|
while True:
|
|
128
|
-
leaderboards_result =
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
142
|
+
leaderboards_result = (
|
|
143
|
+
self.__openapi_service.leaderboard_api.leaderboards_get(
|
|
144
|
+
request=QueryModel(
|
|
145
|
+
filter=RootFilter(
|
|
146
|
+
filters=[
|
|
147
|
+
Filter(
|
|
148
|
+
field="BenchmarkId",
|
|
149
|
+
operator="Eq",
|
|
150
|
+
value=self.id,
|
|
151
|
+
)
|
|
133
152
|
]
|
|
134
153
|
),
|
|
135
|
-
|
|
136
|
-
index=current_page,
|
|
137
|
-
size=100
|
|
154
|
+
page=PageInfo(index=current_page, size=100),
|
|
138
155
|
)
|
|
139
156
|
)
|
|
140
157
|
)
|
|
141
|
-
|
|
158
|
+
|
|
142
159
|
if leaderboards_result.total_pages is None:
|
|
143
|
-
raise ValueError(
|
|
144
|
-
|
|
160
|
+
raise ValueError(
|
|
161
|
+
"An error occurred while fetching leaderboards: total_pages is None"
|
|
162
|
+
)
|
|
163
|
+
|
|
145
164
|
total_pages = leaderboards_result.total_pages
|
|
146
|
-
|
|
147
|
-
self.__leaderboards.extend(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
)
|
|
159
|
-
|
|
165
|
+
|
|
166
|
+
self.__leaderboards.extend(
|
|
167
|
+
[
|
|
168
|
+
RapidataLeaderboard(
|
|
169
|
+
leaderboard.name,
|
|
170
|
+
leaderboard.instruction,
|
|
171
|
+
leaderboard.show_prompt,
|
|
172
|
+
leaderboard.show_prompt_asset,
|
|
173
|
+
leaderboard.is_inversed,
|
|
174
|
+
leaderboard.response_budget,
|
|
175
|
+
leaderboard.id,
|
|
176
|
+
self.__openapi_service,
|
|
177
|
+
)
|
|
178
|
+
for leaderboard in leaderboards_result.items
|
|
179
|
+
]
|
|
180
|
+
)
|
|
181
|
+
|
|
160
182
|
if current_page >= total_pages:
|
|
161
183
|
break
|
|
162
|
-
|
|
184
|
+
|
|
163
185
|
current_page += 1
|
|
164
|
-
|
|
186
|
+
|
|
165
187
|
return self.__leaderboards
|
|
166
|
-
|
|
167
|
-
def add_prompt(
|
|
188
|
+
|
|
189
|
+
def add_prompt(
|
|
190
|
+
self,
|
|
191
|
+
identifier: str,
|
|
192
|
+
prompt: str | None = None,
|
|
193
|
+
asset: str | None = None,
|
|
194
|
+
tags: Optional[list[str]] = None,
|
|
195
|
+
):
|
|
168
196
|
"""
|
|
169
197
|
Adds a prompt to the benchmark.
|
|
170
198
|
|
|
@@ -179,25 +207,27 @@ class RapidataBenchmark:
|
|
|
179
207
|
|
|
180
208
|
if not isinstance(identifier, str):
|
|
181
209
|
raise ValueError("Identifier must be a string.")
|
|
182
|
-
|
|
210
|
+
|
|
183
211
|
if prompt is None and asset is None:
|
|
184
212
|
raise ValueError("Prompt or asset must be provided.")
|
|
185
|
-
|
|
213
|
+
|
|
186
214
|
if prompt is not None and not isinstance(prompt, str):
|
|
187
215
|
raise ValueError("Prompt must be a string.")
|
|
188
|
-
|
|
216
|
+
|
|
189
217
|
if asset is not None and not isinstance(asset, str):
|
|
190
218
|
raise ValueError("Asset must be a string. That is the link to the asset.")
|
|
191
|
-
|
|
219
|
+
|
|
192
220
|
if identifier in self.identifiers:
|
|
193
221
|
raise ValueError("Identifier already exists in the benchmark.")
|
|
194
|
-
|
|
195
|
-
if asset is not None and not re.match(r
|
|
222
|
+
|
|
223
|
+
if asset is not None and not re.match(r"^https?://", asset):
|
|
196
224
|
raise ValueError("Asset must be a link to the asset.")
|
|
197
|
-
|
|
198
|
-
if tags is not None and (
|
|
225
|
+
|
|
226
|
+
if tags is not None and (
|
|
227
|
+
not isinstance(tags, list) or not all(isinstance(tag, str) for tag in tags)
|
|
228
|
+
):
|
|
199
229
|
raise ValueError("Tags must be a list of strings.")
|
|
200
|
-
|
|
230
|
+
|
|
201
231
|
self.__identifiers.append(identifier)
|
|
202
232
|
|
|
203
233
|
self.__tags.append(tags)
|
|
@@ -209,25 +239,25 @@ class RapidataBenchmark:
|
|
|
209
239
|
submit_prompt_model=SubmitPromptModel(
|
|
210
240
|
identifier=identifier,
|
|
211
241
|
prompt=prompt,
|
|
212
|
-
promptAsset=
|
|
213
|
-
|
|
214
|
-
_t="UrlAssetInput",
|
|
215
|
-
url=asset
|
|
242
|
+
promptAsset=(
|
|
243
|
+
SubmitPromptModelPromptAsset(
|
|
244
|
+
UrlAssetInput(_t="UrlAssetInput", url=asset)
|
|
216
245
|
)
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
246
|
+
if asset is not None
|
|
247
|
+
else None
|
|
248
|
+
),
|
|
249
|
+
tags=tags,
|
|
250
|
+
),
|
|
220
251
|
)
|
|
221
252
|
|
|
222
253
|
def create_leaderboard(
|
|
223
|
-
self,
|
|
224
|
-
name: str,
|
|
225
|
-
instruction: str,
|
|
254
|
+
self,
|
|
255
|
+
name: str,
|
|
256
|
+
instruction: str,
|
|
226
257
|
show_prompt: bool = False,
|
|
227
258
|
show_prompt_asset: bool = False,
|
|
228
259
|
inverse_ranking: bool = False,
|
|
229
|
-
|
|
230
|
-
response_budget: int | None = None
|
|
260
|
+
level_of_detail: Literal["low", "medium", "high", "very high"] = "low",
|
|
231
261
|
) -> RapidataLeaderboard:
|
|
232
262
|
"""
|
|
233
263
|
Creates a new leaderboard for the benchmark.
|
|
@@ -238,13 +268,8 @@ class RapidataBenchmark:
|
|
|
238
268
|
show_prompt: Whether to show the prompt to the users. (default: False)
|
|
239
269
|
show_prompt_asset: Whether to show the prompt asset to the users. (only works if the prompt asset is a URL) (default: False)
|
|
240
270
|
inverse_ranking: Whether to inverse the ranking of the leaderboard. (if the question is inversed, e.g. "Which video is worse?")
|
|
241
|
-
|
|
242
|
-
response_budget: The total amount of responses that get collected per new model evaluation. if None, it will be defaulted. Values below 2000 are not recommended.
|
|
271
|
+
level_of_detail: The level of detail of the leaderboard. This will effect how many comparisons are done per model evaluation. (default: "low")
|
|
243
272
|
"""
|
|
244
|
-
|
|
245
|
-
if response_budget is not None and response_budget < 2000:
|
|
246
|
-
logger.warning("Response budget is below 2000. This is not recommended.")
|
|
247
|
-
|
|
248
273
|
leaderboard_result = self.__openapi_service.leaderboard_api.leaderboard_post(
|
|
249
274
|
create_leaderboard_model=CreateLeaderboardModel(
|
|
250
275
|
benchmarkId=self.id,
|
|
@@ -253,12 +278,14 @@ class RapidataBenchmark:
|
|
|
253
278
|
showPrompt=show_prompt,
|
|
254
279
|
showPromptAsset=show_prompt_asset,
|
|
255
280
|
isInversed=inverse_ranking,
|
|
256
|
-
minResponses=
|
|
257
|
-
responseBudget=
|
|
281
|
+
minResponses=DetailMapper.MIN_RESPONSES,
|
|
282
|
+
responseBudget=DetailMapper.get_budget(level_of_detail),
|
|
258
283
|
)
|
|
259
284
|
)
|
|
260
285
|
|
|
261
|
-
assert
|
|
286
|
+
assert (
|
|
287
|
+
leaderboard_result.benchmark_id == self.id
|
|
288
|
+
), "The leaderboard was not created for the correct benchmark."
|
|
262
289
|
|
|
263
290
|
return RapidataLeaderboard(
|
|
264
291
|
name,
|
|
@@ -266,13 +293,14 @@ class RapidataBenchmark:
|
|
|
266
293
|
show_prompt,
|
|
267
294
|
show_prompt_asset,
|
|
268
295
|
inverse_ranking,
|
|
269
|
-
leaderboard_result.min_responses,
|
|
270
296
|
leaderboard_result.response_budget,
|
|
271
297
|
leaderboard_result.id,
|
|
272
|
-
self.__openapi_service
|
|
298
|
+
self.__openapi_service,
|
|
273
299
|
)
|
|
274
300
|
|
|
275
|
-
def evaluate_model(
|
|
301
|
+
def evaluate_model(
|
|
302
|
+
self, name: str, media: list[str], identifiers: list[str]
|
|
303
|
+
) -> None:
|
|
276
304
|
"""
|
|
277
305
|
Evaluates a model on the benchmark across all leaderboards.
|
|
278
306
|
|
|
@@ -284,14 +312,16 @@ class RapidataBenchmark:
|
|
|
284
312
|
"""
|
|
285
313
|
if not media:
|
|
286
314
|
raise ValueError("Media must be a non-empty list of strings")
|
|
287
|
-
|
|
315
|
+
|
|
288
316
|
if len(media) != len(identifiers):
|
|
289
317
|
raise ValueError("Media and identifiers must have the same length")
|
|
290
|
-
|
|
318
|
+
|
|
291
319
|
if not all(identifier in self.identifiers for identifier in identifiers):
|
|
292
|
-
raise ValueError(
|
|
293
|
-
|
|
294
|
-
|
|
320
|
+
raise ValueError(
|
|
321
|
+
"All identifiers must be in the registered identifiers list. To see the registered identifiers, use the identifiers property.\
|
|
322
|
+
\nTo see the prompts that are associated with the identifiers, use the prompts property."
|
|
323
|
+
)
|
|
324
|
+
|
|
295
325
|
# happens before the creation of the participant to ensure all media paths are valid
|
|
296
326
|
assets: list[MediaAsset] = []
|
|
297
327
|
for media_path in media:
|
|
@@ -301,12 +331,14 @@ class RapidataBenchmark:
|
|
|
301
331
|
benchmark_id=self.id,
|
|
302
332
|
create_benchmark_participant_model=CreateBenchmarkParticipantModel(
|
|
303
333
|
name=name,
|
|
304
|
-
)
|
|
334
|
+
),
|
|
305
335
|
)
|
|
306
336
|
|
|
307
337
|
logger.info(f"Participant created: {participant_result.participant_id}")
|
|
308
338
|
|
|
309
|
-
participant = BenchmarkParticipant(
|
|
339
|
+
participant = BenchmarkParticipant(
|
|
340
|
+
name, participant_result.participant_id, self.__openapi_service
|
|
341
|
+
)
|
|
310
342
|
|
|
311
343
|
successful_uploads, failed_uploads = participant.upload_media(
|
|
312
344
|
assets,
|
|
@@ -314,15 +346,25 @@ class RapidataBenchmark:
|
|
|
314
346
|
)
|
|
315
347
|
|
|
316
348
|
total_uploads = len(assets)
|
|
317
|
-
success_rate = (
|
|
318
|
-
|
|
349
|
+
success_rate = (
|
|
350
|
+
(len(successful_uploads) / total_uploads * 100) if total_uploads > 0 else 0
|
|
351
|
+
)
|
|
352
|
+
logger.info(
|
|
353
|
+
f"Upload complete: {len(successful_uploads)} successful, {len(failed_uploads)} failed ({success_rate:.1f}% success rate)"
|
|
354
|
+
)
|
|
319
355
|
|
|
320
356
|
if failed_uploads:
|
|
321
|
-
logger.error(
|
|
322
|
-
|
|
357
|
+
logger.error(
|
|
358
|
+
f"Failed uploads for media: {[asset.path for asset in failed_uploads]}"
|
|
359
|
+
)
|
|
360
|
+
logger.warning(
|
|
361
|
+
"Some uploads failed. The model evaluation may be incomplete."
|
|
362
|
+
)
|
|
323
363
|
|
|
324
364
|
if len(successful_uploads) == 0:
|
|
325
|
-
raise RuntimeError(
|
|
365
|
+
raise RuntimeError(
|
|
366
|
+
"No uploads were successful. The model evaluation will not be completed."
|
|
367
|
+
)
|
|
326
368
|
|
|
327
369
|
self.__openapi_service.participant_api.participants_participant_id_submit_post(
|
|
328
370
|
participant_id=participant_result.participant_id
|
|
@@ -330,6 +372,6 @@ class RapidataBenchmark:
|
|
|
330
372
|
|
|
331
373
|
def __str__(self) -> str:
|
|
332
374
|
return f"RapidataBenchmark(name={self.name}, id={self.id})"
|
|
333
|
-
|
|
375
|
+
|
|
334
376
|
def __repr__(self) -> str:
|
|
335
377
|
return self.__str__()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
rapidata/__init__.py,sha256=
|
|
2
|
-
rapidata/api_client/__init__.py,sha256=
|
|
1
|
+
rapidata/__init__.py,sha256=LHrPkAuvFTYjxU8zeMmh15W2xmXsvyVcIK_bv8qScRg,897
|
|
2
|
+
rapidata/api_client/__init__.py,sha256=fb2lqv3sj48wAgarp3g6hvtTgd7bfI01DJJLuBZQnFI,34850
|
|
3
3
|
rapidata/api_client/api/__init__.py,sha256=dGnSE9oPO_ahGh-E1jtw4_VuM_vQueQFuv0IVMQo6uo,1546
|
|
4
4
|
rapidata/api_client/api/benchmark_api.py,sha256=bC8hAPgHIDU5u1e0loWPWnZX33BW6gsAR8oc5199q2k,129777
|
|
5
5
|
rapidata/api_client/api/campaign_api.py,sha256=406gNDALFb0sJhfx727ZM5_0GDX4iB0w5ym2dExLm4g,49894
|
|
@@ -12,7 +12,7 @@ rapidata/api_client/api/dataset_api.py,sha256=DUCEfP7jlMAAMdvEa-47xq0mq3MGcyk4DA
|
|
|
12
12
|
rapidata/api_client/api/evaluation_workflow_api.py,sha256=E0Phmx54jzXx7LZYGquTqzZSrX2aE5PS9rAs5HdDjvs,15151
|
|
13
13
|
rapidata/api_client/api/feedback_api.py,sha256=-ZI2-1HtQ7wAzBKClgXMmMHtYdgoZtWrpQql3p51qp0,11589
|
|
14
14
|
rapidata/api_client/api/identity_api.py,sha256=LmK6cTXssNjCa1BteOMc8P4FsyRiHQ_Kr30vmWIAYko,55093
|
|
15
|
-
rapidata/api_client/api/leaderboard_api.py,sha256=
|
|
15
|
+
rapidata/api_client/api/leaderboard_api.py,sha256=wGnMTeaYsyeWwvptdD5R3OJK42ZJWQhyJvwDmN3bqQc,179275
|
|
16
16
|
rapidata/api_client/api/newsletter_api.py,sha256=3NU6HO5Gtm-RH-nx5hcp2CCE4IZmWHwTfCLMMz-Xpq4,22655
|
|
17
17
|
rapidata/api_client/api/order_api.py,sha256=6hD7a_8LVGuGdT_k1lE-gQKCWcSAcFMJO5Nsdc8xgbM,214715
|
|
18
18
|
rapidata/api_client/api/participant_api.py,sha256=eOoZDCRF61bmPAcoMWhOREgUp3rEYhrQLEPJq8o27b4,87709
|
|
@@ -29,7 +29,7 @@ rapidata/api_client/api_client.py,sha256=EDhxAOUc5JFWvFsF1zc726Q7GoEFkuB8uor5SlG
|
|
|
29
29
|
rapidata/api_client/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
|
|
30
30
|
rapidata/api_client/configuration.py,sha256=g472vHVPLBotq8EkfSXP4sbp7xnn-3sb8O8BBlRWK1I,15931
|
|
31
31
|
rapidata/api_client/exceptions.py,sha256=eLLd1fxM0Ygf3IIG6aNx9hdy79drst5Cem0UjI_NamM,5978
|
|
32
|
-
rapidata/api_client/models/__init__.py,sha256=
|
|
32
|
+
rapidata/api_client/models/__init__.py,sha256=f6lXxDLfQKlvw0DZddgyzBZn3jEFyt5OBIitESxPbtQ,32763
|
|
33
33
|
rapidata/api_client/models/ab_test_selection.py,sha256=xQcE1BgKSnkTcmIuroeVOAQcAhGkHLlMP9XjakMFgDc,4327
|
|
34
34
|
rapidata/api_client/models/ab_test_selection_a_inner.py,sha256=VsCi27NBGxAtupB_sQZCzUEsTNNgSGV_Mo-Fi0UY1Jw,11657
|
|
35
35
|
rapidata/api_client/models/add_campaign_artifact_result.py,sha256=4IvFVS-tLlL6eHsWp-IZ_ul5T30-h3YEwd2B5ioBbgY,2582
|
|
@@ -212,8 +212,8 @@ rapidata/api_client/models/file_asset_model_metadata_value.py,sha256=KiA2BENesZt
|
|
|
212
212
|
rapidata/api_client/models/file_type.py,sha256=t7qrK5oEaVWWg7pis5mO2BviaVNuAUh7O1SNib_kfGw,783
|
|
213
213
|
rapidata/api_client/models/file_type_metadata.py,sha256=qvRJ0SWEy2mPfvjGAc1GV5AMRjOm4EMXRAQ-sTupv6Q,3412
|
|
214
214
|
rapidata/api_client/models/file_type_metadata_model.py,sha256=1BHfr0wk3HQSNmMTDWdROPtLsPwE88Z2D1YaEnOte7E,3308
|
|
215
|
-
rapidata/api_client/models/filter.py,sha256
|
|
216
|
-
rapidata/api_client/models/filter_operator.py,sha256=
|
|
215
|
+
rapidata/api_client/models/filter.py,sha256=cIvVdYntcGLQLgW0iNTqGdEj_jJQQBcMt9pF_l_FVug,4553
|
|
216
|
+
rapidata/api_client/models/filter_operator.py,sha256=zPAPopNy6Jlw-3Gz-tEsape0SyriGvfXREij57bNdP4,903
|
|
217
217
|
rapidata/api_client/models/form_file_wrapper.py,sha256=1KSzAKKGE_-yXTyIyjHi5ctc_CrGCRfkX3EMqlW0IFA,4208
|
|
218
218
|
rapidata/api_client/models/free_text_payload.py,sha256=u5p0ybMMOH2ecmzT3FauQs0LgQgLNnUOD8Kk1umOqtw,2952
|
|
219
219
|
rapidata/api_client/models/free_text_rapid_blueprint.py,sha256=Tpf2durJj9olZbI-QPl89BiLESrOs9fDbATpch8tRj4,2988
|
|
@@ -425,7 +425,7 @@ rapidata/api_client/models/root_filter.py,sha256=oBtXjKE0i3m_HmD1XeHwaLCFFQRkpkW
|
|
|
425
425
|
rapidata/api_client/models/run_status.py,sha256=wtGbdMPDcpR35pMbczVABkYfERTWnocMon2s-uaaaUM,798
|
|
426
426
|
rapidata/api_client/models/runs_by_leaderboard_result.py,sha256=5sRSV7d9rxjBbdTnWk10ke1GW4jVKZ8O5iSMclthryk,3581
|
|
427
427
|
rapidata/api_client/models/runs_by_leaderboard_result_paged_result.py,sha256=Ts5gkkQLKIbISLay6xlVYdu0vyXxAwtY7mwQMKobC-Y,3559
|
|
428
|
-
rapidata/api_client/models/sample_by_participant.py,sha256
|
|
428
|
+
rapidata/api_client/models/sample_by_participant.py,sha256=-CxSOHphruBeeSTblX4yrERL4o7PFx4ofnfyl9JMcko,4508
|
|
429
429
|
rapidata/api_client/models/sample_by_participant_paged_result.py,sha256=FKobGmMEymLQwRbwdS5R-nox_AtFAxg9CuVopWNQgTk,3526
|
|
430
430
|
rapidata/api_client/models/scrub_payload.py,sha256=tX-QU_a8GUQWBPb1GofGLFupucZF5TY2LUpqdyfHDSI,2920
|
|
431
431
|
rapidata/api_client/models/scrub_range.py,sha256=2P__eZ4HeAxWcjFkp-p938Ih8GHf0rJea18sIGxUN0A,2527
|
|
@@ -494,6 +494,7 @@ rapidata/api_client/models/update_campaign_model.py,sha256=9mCp3fQZqtecsCQS1SBbf
|
|
|
494
494
|
rapidata/api_client/models/update_dataset_name_model.py,sha256=IeGRrxo6G2fKfMwnoBFYj4BW9ksGo_8db21VcLYfLvc,2599
|
|
495
495
|
rapidata/api_client/models/update_dimensions_model.py,sha256=jDg2114Y14AxcQHg_C6oTxMZ17Cq4vEQRtzeNjN70dk,2591
|
|
496
496
|
rapidata/api_client/models/update_leaderboard_name_model.py,sha256=QmEy8MNkrQYyJtXR91MKN1j511YFIIW-ovN3MxvFoWw,2614
|
|
497
|
+
rapidata/api_client/models/update_leaderboard_response_config_model.py,sha256=Jkp3zS358CD1EPhknNp1voUOAtuQFPBstlw1SMJc6JI,2978
|
|
497
498
|
rapidata/api_client/models/update_order_model.py,sha256=RUlxnzLqO6o-w5EEPb8wv1ANRKpkSbs8PhGM42T35uw,2570
|
|
498
499
|
rapidata/api_client/models/update_order_name_model.py,sha256=Cm8qZUJKgx1JTgkhlJcVNdLwPnRV8gqeeo7G4bVDOS4,2582
|
|
499
500
|
rapidata/api_client/models/update_participant_name_model.py,sha256=PPXeS5euTpMt7QrmLWordYU1tGS1gZ-zwjgQDglld_g,2614
|
|
@@ -536,16 +537,17 @@ rapidata/api_client/models/workflow_split_model_filter_configs_inner.py,sha256=1
|
|
|
536
537
|
rapidata/api_client/models/workflow_state.py,sha256=5LAK1se76RCoozeVB6oxMPb8p_5bhLZJqn7q5fFQWis,850
|
|
537
538
|
rapidata/api_client/models/zip_entry_file_wrapper.py,sha256=06CoNJD3x511K3rnSmkrwwhc9GbQxwxF-c0ldOyJbAs,4240
|
|
538
539
|
rapidata/api_client/rest.py,sha256=rtIMcgINZOUaDFaJIinJkXRSddNJmXvMRMfgO2Ezk2o,10835
|
|
539
|
-
rapidata/api_client_README.md,sha256=
|
|
540
|
+
rapidata/api_client_README.md,sha256=5k-14YuFPSGEpYGJsIL0xwyEWeIvuWd3VOI7jFYw_dc,62649
|
|
540
541
|
rapidata/rapidata_client/__init__.py,sha256=CfkQxCdURXzJsVP6sxKmufze2u-IE_snG_G8NEkE_JM,1225
|
|
541
542
|
rapidata/rapidata_client/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
542
543
|
rapidata/rapidata_client/api/rapidata_exception.py,sha256=BIdmHRrJUGW-Mqhp1H_suemZaR6w9TgjWq-ZW5iUPdQ,3878
|
|
543
544
|
rapidata/rapidata_client/benchmark/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
545
|
+
rapidata/rapidata_client/benchmark/_detail_mapper.py,sha256=IcCW0d3_vwAdyG7V9P5UMPASoblk6JX5UEhrfHcaAIs,967
|
|
544
546
|
rapidata/rapidata_client/benchmark/leaderboard/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
545
|
-
rapidata/rapidata_client/benchmark/leaderboard/rapidata_leaderboard.py,sha256=
|
|
547
|
+
rapidata/rapidata_client/benchmark/leaderboard/rapidata_leaderboard.py,sha256=ucbE6wSNaT8Li_XTxoze1iEYppaHw8OTcqlP-PW5KMw,4767
|
|
546
548
|
rapidata/rapidata_client/benchmark/participant/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
547
549
|
rapidata/rapidata_client/benchmark/participant/_participant.py,sha256=yN82EWrZXYszsM8Ns0HRMXCTivltkyxcpGRK-cdT01Y,3683
|
|
548
|
-
rapidata/rapidata_client/benchmark/rapidata_benchmark.py,sha256=
|
|
550
|
+
rapidata/rapidata_client/benchmark/rapidata_benchmark.py,sha256=wZgN79jV4WF6HtNYl8gqTHArCEi8WHy3zN1xnxzTS6A,14268
|
|
549
551
|
rapidata/rapidata_client/benchmark/rapidata_benchmark_manager.py,sha256=NnXCsU2_8SlGxdI51MeIUWK7Ku0pEylDSPhnzOPzTV0,5291
|
|
550
552
|
rapidata/rapidata_client/country_codes/__init__.py,sha256=FB9Dcks44J6C6YBSYmTmNZ71tE130x6NO_3aLJ8fKzQ,40
|
|
551
553
|
rapidata/rapidata_client/country_codes/country_codes.py,sha256=ePHqeb7y9DWQZAnddBzPx1puYBcrgUjdR2sbFijuFD8,283
|
|
@@ -649,7 +651,7 @@ rapidata/service/__init__.py,sha256=s9bS1AJZaWIhLtJX_ZA40_CK39rAAkwdAmymTMbeWl4,
|
|
|
649
651
|
rapidata/service/credential_manager.py,sha256=pUEEtp6VrFWYhfUUtyqmS0AlRqe2Y0kFkY6o22IT4KM,8682
|
|
650
652
|
rapidata/service/local_file_service.py,sha256=pgorvlWcx52Uh3cEG6VrdMK_t__7dacQ_5AnfY14BW8,877
|
|
651
653
|
rapidata/service/openapi_service.py,sha256=v2fhPbHmD0J11ZRZY6f80PdIdGwpRFlbfMH9t8Ypg5A,5403
|
|
652
|
-
rapidata-2.
|
|
653
|
-
rapidata-2.
|
|
654
|
-
rapidata-2.
|
|
655
|
-
rapidata-2.
|
|
654
|
+
rapidata-2.35.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
655
|
+
rapidata-2.35.0.dist-info/METADATA,sha256=lGStAMXDWn_ztSIkIrN6bpJJ2HiZE7ivo1Z0LQ_eRAo,1264
|
|
656
|
+
rapidata-2.35.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
657
|
+
rapidata-2.35.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|