rapidata 2.11.0__py3-none-any.whl → 2.11.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rapidata might be problematic. Click here for more details.
- rapidata/rapidata_client/assets/_media_asset.py +3 -3
- rapidata/rapidata_client/order/_rapidata_dataset.py +2 -2
- rapidata/rapidata_client/validation/rapidata_validation_set.py +34 -1
- rapidata/rapidata_client/validation/rapids/rapids.py +8 -3
- {rapidata-2.11.0.dist-info → rapidata-2.11.1.dist-info}/METADATA +1 -1
- {rapidata-2.11.0.dist-info → rapidata-2.11.1.dist-info}/RECORD +8 -8
- {rapidata-2.11.0.dist-info → rapidata-2.11.1.dist-info}/LICENSE +0 -0
- {rapidata-2.11.0.dist-info → rapidata-2.11.1.dist-info}/WHEEL +0 -0
|
@@ -78,7 +78,7 @@ class MediaAsset(BaseAsset):
|
|
|
78
78
|
|
|
79
79
|
self._url = None
|
|
80
80
|
self._content = None
|
|
81
|
-
self.
|
|
81
|
+
self.session: None | requests.Session = None
|
|
82
82
|
|
|
83
83
|
if re.match(r'^https?://', path):
|
|
84
84
|
self._url = path
|
|
@@ -238,11 +238,11 @@ class MediaAsset(BaseAsset):
|
|
|
238
238
|
requests.exceptions.RequestException: If download fails after all retries
|
|
239
239
|
"""
|
|
240
240
|
# Use existing session or throw error if not set
|
|
241
|
-
if self.
|
|
241
|
+
if self.session is None:
|
|
242
242
|
raise RuntimeError("HTTP session not configured")
|
|
243
243
|
|
|
244
244
|
try:
|
|
245
|
-
response = self.
|
|
245
|
+
response = self.session.get(
|
|
246
246
|
url,
|
|
247
247
|
stream=False,
|
|
248
248
|
timeout=(5, 30) # (connect timeout, read timeout)
|
|
@@ -136,14 +136,14 @@ class RapidataDataset:
|
|
|
136
136
|
try:
|
|
137
137
|
# Get identifier for this upload (URL or file path)
|
|
138
138
|
if isinstance(media_asset, MediaAsset):
|
|
139
|
-
media_asset.
|
|
139
|
+
media_asset.session = session
|
|
140
140
|
assets = [media_asset]
|
|
141
141
|
identifier = media_asset._url if media_asset._url else media_asset.path
|
|
142
142
|
identifiers_to_track = [identifier] if identifier else []
|
|
143
143
|
elif isinstance(media_asset, MultiAsset):
|
|
144
144
|
assets = cast(list[MediaAsset], media_asset.assets)
|
|
145
145
|
for asset in assets:
|
|
146
|
-
asset.
|
|
146
|
+
asset.session = session
|
|
147
147
|
identifiers_to_track: list[str] = [
|
|
148
148
|
(asset._url if asset._url else cast(str, asset.path))
|
|
149
149
|
for asset in assets
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from rapidata.rapidata_client.validation.rapids.rapids import Rapid
|
|
2
2
|
from rapidata.service.openapi_service import OpenAPIService
|
|
3
|
+
from requests.adapters import HTTPAdapter, Retry
|
|
4
|
+
import requests
|
|
3
5
|
|
|
4
6
|
class RapidataValidationSet:
|
|
5
7
|
"""A class for interacting with a Rapidata validation set.
|
|
@@ -17,6 +19,7 @@ class RapidataValidationSet:
|
|
|
17
19
|
self.id = validation_set_id
|
|
18
20
|
self.name = name
|
|
19
21
|
self.__openapi_service = openapi_service
|
|
22
|
+
self.__session = self._get_session()
|
|
20
23
|
|
|
21
24
|
def add_rapid(self, rapid: Rapid):
|
|
22
25
|
"""Add a Rapid to the validation set.
|
|
@@ -24,7 +27,37 @@ class RapidataValidationSet:
|
|
|
24
27
|
Args:
|
|
25
28
|
rapid (Rapid): The Rapid to add to the validation set.
|
|
26
29
|
"""
|
|
27
|
-
rapid._add_to_validation_set(self.id, self.__openapi_service)
|
|
30
|
+
rapid._add_to_validation_set(self.id, self.__openapi_service, self.__session)
|
|
31
|
+
|
|
32
|
+
def _get_session(self, max_retries: int = 5, max_workers: int = 10) -> requests.Session:
|
|
33
|
+
"""Get a requests session with retry logic.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
max_retries (int): The maximum number of retries.
|
|
38
|
+
max_workers (int): The maximum number of workers.
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
requests.Session: A requests session with retry logic.
|
|
42
|
+
"""
|
|
43
|
+
session = requests.Session()
|
|
44
|
+
retries = Retry(
|
|
45
|
+
total=max_retries,
|
|
46
|
+
backoff_factor=1,
|
|
47
|
+
status_forcelist=[500, 502, 503, 504],
|
|
48
|
+
allowed_methods=["GET"],
|
|
49
|
+
respect_retry_after_header=True
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
adapter = HTTPAdapter(
|
|
53
|
+
pool_connections=max_workers * 2,
|
|
54
|
+
pool_maxsize=max_workers * 4,
|
|
55
|
+
max_retries=retries
|
|
56
|
+
)
|
|
57
|
+
session.mount('http://', adapter)
|
|
58
|
+
session.mount('https://', adapter)
|
|
59
|
+
|
|
60
|
+
return session
|
|
28
61
|
|
|
29
62
|
def __str__(self):
|
|
30
63
|
return f"name: '{self.name}' id: {self.id}"
|
|
@@ -22,6 +22,8 @@ from rapidata.api_client.models.datapoint_metadata_model_metadata_inner import (
|
|
|
22
22
|
|
|
23
23
|
from rapidata.service.openapi_service import OpenAPIService
|
|
24
24
|
|
|
25
|
+
import requests
|
|
26
|
+
|
|
25
27
|
class Rapid():
|
|
26
28
|
def __init__(self, asset: MediaAsset | TextAsset | MultiAsset, metadata: Sequence[Metadata], payload: Any, truth: Any, randomCorrectProbability: float, explanation: str | None):
|
|
27
29
|
self.asset = asset
|
|
@@ -31,14 +33,14 @@ class Rapid():
|
|
|
31
33
|
self.randomCorrectProbability = randomCorrectProbability
|
|
32
34
|
self.explanation = explanation
|
|
33
35
|
|
|
34
|
-
def _add_to_validation_set(self, validationSetId: str, openapi_service: OpenAPIService):
|
|
36
|
+
def _add_to_validation_set(self, validationSetId: str, openapi_service: OpenAPIService, session: requests.Session) -> None:
|
|
35
37
|
if isinstance(self.asset, TextAsset) or (isinstance(self.asset, MultiAsset) and isinstance(self.asset.assets[0], TextAsset)):
|
|
36
38
|
openapi_service.validation_api.validation_add_validation_text_rapid_post(
|
|
37
39
|
add_validation_text_rapid_model=self.__to_text_model(validationSetId)
|
|
38
40
|
)
|
|
39
41
|
|
|
40
42
|
elif isinstance(self.asset, MediaAsset) or (isinstance(self.asset, MultiAsset) and isinstance(self.asset.assets[0], MediaAsset)):
|
|
41
|
-
model = self.__to_media_model(validationSetId)
|
|
43
|
+
model = self.__to_media_model(validationSetId, session=session)
|
|
42
44
|
openapi_service.validation_api.validation_add_validation_rapid_post(
|
|
43
45
|
model=model[0], files=model[1]
|
|
44
46
|
)
|
|
@@ -46,7 +48,7 @@ class Rapid():
|
|
|
46
48
|
else:
|
|
47
49
|
raise TypeError("The asset must be a MediaAsset, TextAsset, or MultiAsset")
|
|
48
50
|
|
|
49
|
-
def __to_media_model(self, validationSetId: str) -> tuple[AddValidationRapidModel, list[StrictStr | tuple[StrictStr, StrictBytes] | StrictBytes]]:
|
|
51
|
+
def __to_media_model(self, validationSetId: str, session: requests.Session) -> tuple[AddValidationRapidModel, list[StrictStr | tuple[StrictStr, StrictBytes] | StrictBytes]]:
|
|
50
52
|
assets: list[MediaAsset] = []
|
|
51
53
|
if isinstance(self.asset, MultiAsset):
|
|
52
54
|
for asset in self.asset.assets:
|
|
@@ -61,6 +63,9 @@ class Rapid():
|
|
|
61
63
|
if isinstance(self.asset, MediaAsset):
|
|
62
64
|
assets = [self.asset]
|
|
63
65
|
|
|
66
|
+
for asset in assets:
|
|
67
|
+
asset.session = session
|
|
68
|
+
|
|
64
69
|
return (AddValidationRapidModel(
|
|
65
70
|
validationSetId=validationSetId,
|
|
66
71
|
payload=AddValidationRapidModelPayload(self.payload),
|
|
@@ -367,7 +367,7 @@ rapidata/api_client_README.md,sha256=CWOOzW4IbXMejePCHh5WxB_6mq_cTRsyZ6q9u6SIdR4
|
|
|
367
367
|
rapidata/rapidata_client/__init__.py,sha256=kkT6FMU4P8rTdYKTJgZNcyptr-Rq1iZmsyLIyRCwpYA,896
|
|
368
368
|
rapidata/rapidata_client/assets/__init__.py,sha256=hKgrOSn8gJcBSULaf4auYhH1S1N5AfcwIhBSq1BOKwQ,323
|
|
369
369
|
rapidata/rapidata_client/assets/_base_asset.py,sha256=B2YWH1NgaeYUYHDW3OPpHM_bqawHbH4EjnRCE2BYwiM,298
|
|
370
|
-
rapidata/rapidata_client/assets/_media_asset.py,sha256=
|
|
370
|
+
rapidata/rapidata_client/assets/_media_asset.py,sha256=gghPvK3_Ca5XR1oynyluWoDe4SYGZF0lZhHe4ku52ok,10252
|
|
371
371
|
rapidata/rapidata_client/assets/_multi_asset.py,sha256=o4_-OvovADSVpl0tr6fPzRR_gHCcIQKfeZKcoFDFBLo,1667
|
|
372
372
|
rapidata/rapidata_client/assets/_text_asset.py,sha256=itoe3vicn41LbdJ7UeydImORUo9iDL0SZu-ptOlbMRM,618
|
|
373
373
|
rapidata/rapidata_client/assets/data_type_enum.py,sha256=ELC-ymeKnQlfNAzfqsI7MmUuRiGYamCHVcTc0qR6Fm4,185
|
|
@@ -395,7 +395,7 @@ rapidata/rapidata_client/metadata/_prompt_metadata.py,sha256=ibuUBACKew8WEBJyIv9
|
|
|
395
395
|
rapidata/rapidata_client/metadata/_public_text_metadata.py,sha256=nU846QBntBxwwJFPp3aFJro6dvy_IGFk0f2iyuoNvE4,512
|
|
396
396
|
rapidata/rapidata_client/metadata/_select_words_metadata.py,sha256=n46UTaiJiTOXHAoFydQAQOy_5_cbCUCy_xHFb3u9HYs,727
|
|
397
397
|
rapidata/rapidata_client/order/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
398
|
-
rapidata/rapidata_client/order/_rapidata_dataset.py,sha256=
|
|
398
|
+
rapidata/rapidata_client/order/_rapidata_dataset.py,sha256=GC9mbXt9wr4c6YusOXIG5OV2jL0xkezluq9pxvELMdw,9545
|
|
399
399
|
rapidata/rapidata_client/order/_rapidata_order_builder.py,sha256=N6mqmgneJSsb_no_Ps9BG3EhDekLgKxFYpjDCN-VVeg,13095
|
|
400
400
|
rapidata/rapidata_client/order/rapidata_order.py,sha256=XI9xeEtqZIwdAXLe9Pn4RO8iPNSoBToQ2WD62TRWzTE,9115
|
|
401
401
|
rapidata/rapidata_client/order/rapidata_order_manager.py,sha256=4wW5xtmEtdewFGGwMWSMbdLZpHvygtLCfYNv4lcHGg8,27271
|
|
@@ -426,10 +426,10 @@ rapidata/rapidata_client/settings/play_video_until_the_end.py,sha256=LLHx2_72k5Z
|
|
|
426
426
|
rapidata/rapidata_client/settings/rapidata_settings.py,sha256=Kjxm4GStrpfLKylx84BiKdEQOjvNfO74DiSChmH63fg,1165
|
|
427
427
|
rapidata/rapidata_client/settings/translation_behaviour.py,sha256=i9n_H0eKJyKW6m3MKH_Cm1XEKWVEWsAV_79xGmGIC-4,742
|
|
428
428
|
rapidata/rapidata_client/validation/__init__.py,sha256=s5wHVtcJkncXSFuL9I0zNwccNOKpWAqxqUjkeohzi2E,24
|
|
429
|
-
rapidata/rapidata_client/validation/rapidata_validation_set.py,sha256=
|
|
429
|
+
rapidata/rapidata_client/validation/rapidata_validation_set.py,sha256=lYnLf87BvFHfeostlyq41nvikCo17ZGsjJdT5ZfCqlQ,2159
|
|
430
430
|
rapidata/rapidata_client/validation/rapids/__init__.py,sha256=WU5PPwtTJlte6U90MDakzx4I8Y0laj7siw9teeXj5R0,21
|
|
431
431
|
rapidata/rapidata_client/validation/rapids/box.py,sha256=t3_Kn6doKXdnJdtbwefXnYKPiTKHneJl9E2inkDSqL8,589
|
|
432
|
-
rapidata/rapidata_client/validation/rapids/rapids.py,sha256=
|
|
432
|
+
rapidata/rapidata_client/validation/rapids/rapids.py,sha256=i1VBD2Ha1DbWOqYZqmlWGmWPAJ-y5Wm5NypCExceYsI,4600
|
|
433
433
|
rapidata/rapidata_client/validation/rapids/rapids_manager.py,sha256=F00lPYBUx5fTPRw50iZuobtdbjFo6ZHevPMk101JdaY,14271
|
|
434
434
|
rapidata/rapidata_client/validation/validation_set_manager.py,sha256=NL0H390vcCgbDK-hufaMeXHCnl2x0hi1lmGx-y6aPGY,24895
|
|
435
435
|
rapidata/rapidata_client/workflow/__init__.py,sha256=eFRx0fm280alXpds6hYcnxN_yERlabF9B5sTdPFsL1g,430
|
|
@@ -447,7 +447,7 @@ rapidata/service/credential_manager.py,sha256=Of0BQs_V1T7rkrWX9groLX790nOknaARwn
|
|
|
447
447
|
rapidata/service/local_file_service.py,sha256=pgorvlWcx52Uh3cEG6VrdMK_t__7dacQ_5AnfY14BW8,877
|
|
448
448
|
rapidata/service/openapi_service.py,sha256=Z4NrAuilLlIWBdGOv6otz36tHS_vvU36w5jmvOUTmqo,3198
|
|
449
449
|
rapidata/service/token_manager.py,sha256=C-8dN6P5TXCLANZCHWusmwAful5YBpKjKg0StQtajF0,6547
|
|
450
|
-
rapidata-2.11.
|
|
451
|
-
rapidata-2.11.
|
|
452
|
-
rapidata-2.11.
|
|
453
|
-
rapidata-2.11.
|
|
450
|
+
rapidata-2.11.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
451
|
+
rapidata-2.11.1.dist-info/METADATA,sha256=BlBjGePHJmRdnCBvE0-cim0z57FY7Vu1oF7ThsE4fqs,1147
|
|
452
|
+
rapidata-2.11.1.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
|
453
|
+
rapidata-2.11.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|