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.

@@ -78,7 +78,7 @@ class MediaAsset(BaseAsset):
78
78
 
79
79
  self._url = None
80
80
  self._content = None
81
- self._session: None | requests.Session = None
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._session is None:
241
+ if self.session is None:
242
242
  raise RuntimeError("HTTP session not configured")
243
243
 
244
244
  try:
245
- response = self._session.get(
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._session = session
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._session = session
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),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rapidata
3
- Version: 2.11.0
3
+ Version: 2.11.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
@@ -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=QeZzixkkiZQ0RBE_ogeT6IRfoB4anpOO-bl-pRJ9n08,10255
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=rhZOJJaOFgKWUbcwgIWJmd4PXSSAQ5qj-8xFx8VEar4,9547
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=IkHOdQX3ihBBHDvG2EE6wu1ZSG7evOWMYyOx9Lva0tw,1111
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=VkVweVizEf7_N79HI9ilxCPUWD48GTuUx2VO7pyd--Y,4438
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.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
451
- rapidata-2.11.0.dist-info/METADATA,sha256=VF_zzBe3NAZCSDCs-0fDixyH4X8E8rpFpPMNSZAfRJY,1147
452
- rapidata-2.11.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
453
- rapidata-2.11.0.dist-info/RECORD,,
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,,