rapidata 1.6.4__py3-none-any.whl → 1.7.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.

@@ -4,7 +4,10 @@ Defines the MediaAsset class for handling media file paths within assets.
4
4
  """
5
5
 
6
6
  import os
7
+ from io import BytesIO
7
8
  from rapidata.rapidata_client.assets.base_asset import BaseAsset
9
+ import requests
10
+ import re
8
11
 
9
12
  class MediaAsset(BaseAsset):
10
13
  """MediaAsset Class
@@ -23,11 +26,41 @@ class MediaAsset(BaseAsset):
23
26
  Initialize a MediaAsset instance.
24
27
 
25
28
  Args:
26
- path (str): The file system path to the media asset.
29
+ path (str): The file system path to the media asset or a link to an image.
27
30
 
28
31
  Raises:
29
32
  FileNotFoundError: If the provided file path does not exist.
30
33
  """
34
+ if re.match(r'^https?://', path):
35
+ self.path = MediaAsset.get_image_bytes(path)
36
+ return
37
+
31
38
  if not os.path.exists(path):
32
39
  raise FileNotFoundError(f"File not found: {path}, please provide a valid local file path.")
33
- self.path = path
40
+
41
+ self.path: str | bytes = path
42
+
43
+ @staticmethod
44
+ def get_image_bytes(image_url: str) -> bytes:
45
+ """
46
+ Downloads an image from a URL and converts it to bytes.
47
+ Validates that the URL points to an actual image.
48
+
49
+ Args:
50
+ image_url (str): URL of the image
51
+
52
+ Returns:
53
+ bytes: Image data as bytes
54
+
55
+ Raises:
56
+ ValueError: If URL doesn't point to an image
57
+ requests.exceptions.RequestException: If download fails
58
+ """
59
+ response = requests.get(image_url)
60
+ response.raise_for_status()
61
+
62
+ content_type = response.headers.get('content-type', '')
63
+ if not content_type.startswith('image/'):
64
+ raise ValueError(f'URL does not point to an image. Content-Type: {content_type}')
65
+
66
+ return BytesIO(response.content).getvalue()
@@ -15,6 +15,8 @@ from rapidata.service.openapi_service import OpenAPIService
15
15
  from concurrent.futures import ThreadPoolExecutor, as_completed
16
16
  from tqdm import tqdm
17
17
 
18
+ from typing import cast
19
+
18
20
 
19
21
  class RapidataDataset:
20
22
 
@@ -86,10 +88,6 @@ class RapidataDataset:
86
88
  else:
87
89
  raise ValueError(f"Unsupported asset type: {type(media_asset)}")
88
90
 
89
- assert all(
90
- os.path.exists(media_path) for media_path in paths
91
- ), "All media paths must exist on the local filesystem."
92
-
93
91
  meta_model = meta.to_model() if meta else None
94
92
  model = DatapointMetadataModel(
95
93
  datasetId=self.dataset_id,
@@ -100,9 +98,16 @@ class RapidataDataset:
100
98
  ),
101
99
  )
102
100
 
101
+ files: list[tuple[str, bytes] | str] = []
102
+ for file_path in paths:
103
+ if isinstance(file_path, bytes):
104
+ files.append(("file.png", file_path))
105
+ else:
106
+ files.append(cast(str, file_path))
107
+
103
108
  self.openapi_service.dataset_api.dataset_create_datapoint_post(
104
109
  model=model,
105
- files=paths # type: ignore
110
+ files=files # type: ignore
106
111
  )
107
112
 
108
113
  total_uploads = len(media_paths)
@@ -53,16 +53,15 @@ class RapidataOrder:
53
53
  Prameter:
54
54
  How often to refresh the progress bar, in seconds.
55
55
  """
56
- total_rapids = self._get_workflow_progress().total
57
- with tqdm(total=total_rapids, desc="Processing order", unit="rapids") as pbar:
58
- completed_rapids = 0
56
+ with tqdm(total=100, desc="Processing order", unit="%", bar_format="{desc}: {percentage:3.0f}%|{bar}| completed [{elapsed}<{remaining}, {rate_fmt}]") as pbar:
57
+ last_percentage = 0
59
58
  while True:
60
- current_completed = self._get_workflow_progress().completed
61
- if current_completed > completed_rapids:
62
- pbar.update(current_completed - completed_rapids)
63
- completed_rapids = current_completed
59
+ current_percentage = self._get_workflow_progress().completion_percentage
60
+ if current_percentage > last_percentage:
61
+ pbar.update(current_percentage - last_percentage)
62
+ last_percentage = current_percentage
64
63
 
65
- if completed_rapids >= total_rapids:
64
+ if current_percentage >= 100:
66
65
  break
67
66
 
68
67
  sleep(refresh_rate)
@@ -71,7 +70,7 @@ class RapidataOrder:
71
70
  if self._workflow_id:
72
71
  return self._workflow_id
73
72
 
74
- for _ in range(2):
73
+ for _ in range(10):
75
74
  try:
76
75
  order_result = self.openapi_service.order_api.order_get_by_id_get(self.order_id)
77
76
  pipeline = self.openapi_service.pipeline_api.pipeline_id_get(order_result.pipeline_id)
@@ -130,3 +129,9 @@ class RapidataOrder:
130
129
  The RapidataDataset instance.
131
130
  """
132
131
  return self._dataset
132
+
133
+ def __str__(self) -> str:
134
+ return f"name: '{self.name}' order id: {self.order_id}"
135
+
136
+ def __repr__(self) -> str:
137
+ return f"name: '{self.name}' order id: {self.order_id}"
@@ -110,13 +110,14 @@ class RapidataOrderBuilder:
110
110
  priority=self._priority,
111
111
  )
112
112
 
113
- def create(self, submit: bool = True, max_workers: int = 10) -> RapidataOrder:
113
+ def create(self, submit: bool = True, max_workers: int = 10, disable_link=False) -> RapidataOrder:
114
114
  """
115
115
  Create the Rapidata order by making the necessary API calls based on the builder's configuration.
116
116
 
117
117
  Args:
118
118
  submit (bool, optional): Whether to submit the order upon creation. Defaults to True.
119
119
  max_workers (int, optional): The maximum number of worker threads for processing media paths. Defaults to 10.
120
+ disable_link (bool, optional): Whether to disable the link to the order. Defaults to False.
120
121
 
121
122
  Raises:
122
123
  ValueError: If both media paths and texts are provided, or if neither is provided.
@@ -200,6 +201,9 @@ class RapidataOrderBuilder:
200
201
  if submit:
201
202
  order.submit()
202
203
 
204
+ if not disable_link:
205
+ print(f"Order '{self._name}' is now viewable under https://app.rapidata.ai/order/detail/{order.order_id}.")
206
+
203
207
  return order
204
208
 
205
209
  def workflow(self, workflow: Workflow) -> "RapidataOrderBuilder":
@@ -8,14 +8,15 @@ from rapidata.api_client.models.early_stopping_referee_model import (
8
8
  class EarlyStoppingReferee(Referee):
9
9
  """A referee that stops the task when confidence in the winning category exceeds a threshold.
10
10
 
11
- This referee implements an early stopping mechanism for classification tasks.
11
+ This referee implements an early stopping mechanism for classification & compare tasks.
12
12
  It terminates the task when the confidence in the leading category surpasses
13
13
  a specified threshold or when the maximum number of votes is reached.
14
14
 
15
15
  The threshold behaves logarithmically, meaning small increments (e.g., from 0.99
16
16
  to 0.999) can significantly impact the stopping criteria.
17
17
 
18
- This referee is supported for the classification and compare tasks.
18
+ This referee is supported for the classification and compare tasks (in compare,
19
+ the two options are treated as the categories).
19
20
 
20
21
  Attributes:
21
22
  threshold (float): The confidence threshold for early stopping.
@@ -23,7 +24,7 @@ class EarlyStoppingReferee(Referee):
23
24
  """
24
25
 
25
26
  def __init__(self, threshold: float = 0.999, max_vote_count: int = 100):
26
- """Initialize the ClassifyEarlyStoppingReferee.
27
+ """Initialize the EarlyStoppingReferee.
27
28
 
28
29
  Args:
29
30
  threshold (float, optional): The confidence threshold for early stopping.
@@ -11,11 +11,11 @@ from rapidata.rapidata_client.assets import MediaAsset
11
11
  from typing import Sequence
12
12
 
13
13
  class ClassificationOrderBuilder:
14
- def __init__(self, name: str, question: str, options: list[str], media_paths: list[str], openapi_service: OpenAPIService):
14
+ def __init__(self, name: str, question: str, options: list[str], media_assets: list[MediaAsset], openapi_service: OpenAPIService):
15
15
  self._order_builder = RapidataOrderBuilder(name=name, openapi_service=openapi_service)
16
16
  self._question = question
17
17
  self._options = options
18
- self._media_paths = media_paths
18
+ self._media_assets = media_assets
19
19
  self._responses_required = 10
20
20
  self._probability_threshold = None
21
21
  self._metadata = None
@@ -51,8 +51,6 @@ class ClassificationOrderBuilder:
51
51
  else:
52
52
  referee = NaiveReferee(responses=self._responses_required)
53
53
 
54
- assets = [MediaAsset(path=media_path) for media_path in self._media_paths]
55
-
56
54
  selection: list[Selection] = ([ValidationSelection(amount=1, validation_set_id=self._validation_set_id), LabelingSelection(amount=2)]
57
55
  if self._validation_set_id
58
56
  else [LabelingSelection(amount=3)])
@@ -65,7 +63,7 @@ class ClassificationOrderBuilder:
65
63
  )
66
64
  )
67
65
  .referee(referee)
68
- .media(assets, metadata=self._metadata) # type: ignore
66
+ .media(self._media_assets, metadata=self._metadata)
69
67
  .selections(selection)
70
68
  .create(submit=submit, max_workers=max_upload_workers))
71
69
 
@@ -73,23 +71,32 @@ class ClassificationOrderBuilder:
73
71
 
74
72
 
75
73
  class ClassificationMediaBuilder:
76
- "test"
77
74
  def __init__(self, name: str, question: str, options: list[str], openapi_service: OpenAPIService):
78
75
  self._openapi_service = openapi_service
79
76
  self._name = name
80
77
  self._question = question
81
78
  self._options = options
82
- self._media_paths = None
79
+ self._media_assets = []
83
80
 
84
81
  def media(self, media_paths: list[str]) -> ClassificationOrderBuilder:
85
82
  """Set the media assets for the classification order by providing the local paths to the files."""
86
- self._media_paths = media_paths
83
+ if not isinstance(media_paths, list) or not all(isinstance(path, str) for path in media_paths):
84
+ raise ValueError("Media paths must be a list of strings, the strings being file paths")
85
+
86
+ invalid_paths = []
87
+ for path in media_paths:
88
+ try:
89
+ self._media_assets.append(MediaAsset(path))
90
+ except FileNotFoundError:
91
+ invalid_paths.append(path)
92
+ if invalid_paths:
93
+ raise FileNotFoundError(f"Could not find the following files: {invalid_paths}")
87
94
  return self._build()
88
95
 
89
96
  def _build(self) -> ClassificationOrderBuilder:
90
- if self._media_paths is None:
97
+ if not self._media_assets:
91
98
  raise ValueError("Media paths are required")
92
- return ClassificationOrderBuilder(self._name, self._question, self._options, self._media_paths, openapi_service=self._openapi_service)
99
+ return ClassificationOrderBuilder(self._name, self._question, self._options, self._media_assets, openapi_service=self._openapi_service)
93
100
 
94
101
 
95
102
  class ClassificationOptionsBuilder:
@@ -7,14 +7,15 @@ from rapidata.rapidata_client.selection.validation_selection import ValidationSe
7
7
  from rapidata.rapidata_client.selection.labeling_selection import LabelingSelection
8
8
  from rapidata.rapidata_client.selection.base_selection import Selection
9
9
  from rapidata.rapidata_client.assets import MultiAsset, MediaAsset
10
+ from rapidata.rapidata_client.order.rapidata_order import RapidataOrder
10
11
  from typing import Sequence
11
12
 
12
13
  class CompareOrderBuilder:
13
- def __init__(self, name:str, criteria: str, media_paths: list[list[str]], openapi_service: OpenAPIService):
14
+ def __init__(self, name:str, criteria: str, media_assets: list[MultiAsset], openapi_service: OpenAPIService):
14
15
  self._order_builder = RapidataOrderBuilder(name=name, openapi_service=openapi_service)
15
16
  self._name = name
16
17
  self._criteria = criteria
17
- self._media_paths = media_paths
18
+ self._media_assets = media_assets
18
19
  self._responses_required = 10
19
20
  self._metadata = None
20
21
  self._validation_set_id = None
@@ -40,7 +41,7 @@ class CompareOrderBuilder:
40
41
  self._probability_threshold = probability_threshold
41
42
  return self
42
43
 
43
- def create(self, submit: bool = True, max_upload_workers: int = 10):
44
+ def create(self, submit: bool = True, max_upload_workers: int = 10) -> RapidataOrder:
44
45
  if self._probability_threshold and self._responses_required:
45
46
  referee = EarlyStoppingReferee(
46
47
  max_vote_count=self._responses_required,
@@ -53,7 +54,6 @@ class CompareOrderBuilder:
53
54
  if self._validation_set_id
54
55
  else [LabelingSelection(amount=3)])
55
56
 
56
- media_paths = [MultiAsset([MediaAsset(path=path) for path in paths]) for paths in self._media_paths]
57
57
  order = (self._order_builder
58
58
  .workflow(
59
59
  CompareWorkflow(
@@ -61,7 +61,7 @@ class CompareOrderBuilder:
61
61
  )
62
62
  )
63
63
  .referee(referee)
64
- .media(media_paths, metadata=self._metadata) # type: ignore
64
+ .media(self._media_assets, metadata=self._metadata)
65
65
  .selections(selection)
66
66
  .create(submit=submit, max_workers=max_upload_workers))
67
67
 
@@ -72,18 +72,39 @@ class CompareMediaBuilder:
72
72
  self._openapi_service = openapi_service
73
73
  self._name = name
74
74
  self._criteria = criteria
75
- self._media_paths = None
75
+ self._media_assets = []
76
76
 
77
77
  def media(self, media_paths: list[list[str]]) -> CompareOrderBuilder:
78
78
  """Set the media assets for the comparison order by providing the local paths to the files."""
79
- self._media_paths = media_paths
79
+ if not isinstance(media_paths, list) \
80
+ or not all([isinstance(matchup_paths, list) for matchup_paths in media_paths]) \
81
+ or not all([isinstance(path, str) for matchup_paths in media_paths for path in matchup_paths]):
82
+ raise ValueError("Media paths must be a list of lists. The inner list is a pair of file paths that will be shown together in a matchup.")
83
+
84
+ invalid_paths = []
85
+ for matchup_idx, matchup_paths in enumerate(media_paths):
86
+ matchup_assets = []
87
+ for path in matchup_paths:
88
+ try:
89
+ matchup_assets.append(MediaAsset(path=path))
90
+ except FileNotFoundError:
91
+ invalid_paths.append((matchup_idx, path))
92
+
93
+ if not invalid_paths:
94
+ self._media_assets.append(MultiAsset(matchup_assets))
95
+
96
+ if invalid_paths:
97
+ error_msg = "Could not find the following files:\n"
98
+ for matchup_idx, path in invalid_paths:
99
+ error_msg += f" Matchup {matchup_idx + 1}: {path}\n"
100
+ raise FileNotFoundError(error_msg.rstrip())
80
101
  return self._build()
81
102
 
82
103
  def _build(self) -> CompareOrderBuilder:
83
- if self._media_paths is None:
104
+ if not self._media_assets:
84
105
  raise ValueError("Media paths are required")
85
- assert all([len(path) == 2 for path in self._media_paths]), "The media paths must come in pairs for comparison tasks."
86
- return CompareOrderBuilder(self._name, self._criteria, self._media_paths, self._openapi_service)
106
+ assert all([len(path) == 2 for path in self._media_assets]), "The media paths must come in pairs for comparison tasks."
107
+ return CompareOrderBuilder(self._name, self._criteria, self._media_assets, self._openapi_service)
87
108
 
88
109
  class CompareCriteriaBuilder:
89
110
  def __init__(self, name: str, openapi_service: OpenAPIService):
@@ -54,7 +54,7 @@ class CredentialManager:
54
54
  self,
55
55
  endpoint: str,
56
56
  cert_path: str | None = None,
57
- poll_timeout: int = 60,
57
+ poll_timeout: int = 300,
58
58
  poll_interval: int = 1,
59
59
  ):
60
60
  self.endpoint = endpoint
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rapidata
3
- Version: 1.6.4
3
+ Version: 1.7.0
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
@@ -317,14 +317,14 @@ rapidata/api_client_README.md,sha256=wSrVJxrpMg3zHtVmiiPgmFB8_8PQLQkkk4a0595zcHc
317
317
  rapidata/rapidata_client/__init__.py,sha256=mmfjHy_GMA7xFU_haNwxjNRaCF505iPXhE4KC2dXObY,841
318
318
  rapidata/rapidata_client/assets/__init__.py,sha256=T-XKvMSkmyI8iYLUYDdZ3LrrSInHsGMUY_Tz77hhnlE,240
319
319
  rapidata/rapidata_client/assets/base_asset.py,sha256=B2YWH1NgaeYUYHDW3OPpHM_bqawHbH4EjnRCE2BYwiM,298
320
- rapidata/rapidata_client/assets/media_asset.py,sha256=4xU1k2abdHGwbkJAYNOZYyOPB__5VBRDvRjklegFufQ,887
320
+ rapidata/rapidata_client/assets/media_asset.py,sha256=BpYOcctwcPkbR2r2m0_N0wpp-uHUbTsg7TwnPWY71W4,1971
321
321
  rapidata/rapidata_client/assets/multi_asset.py,sha256=l6BysrDYWY13FTAw93cmnHN7HLUMrpG27qwOT7KNeLQ,1666
322
322
  rapidata/rapidata_client/assets/text_asset.py,sha256=a_En6wo0Ubgodl2KpBl1p_SxHSy_qRNme2bA3AtcPbY,516
323
323
  rapidata/rapidata_client/config.py,sha256=tQLgN6k_ATOX1GzZh38At2rgBDLStV6rJ6z0vsTTPjg,186
324
324
  rapidata/rapidata_client/country_codes/__init__.py,sha256=FB9Dcks44J6C6YBSYmTmNZ71tE130x6NO_3aLJ8fKzQ,40
325
325
  rapidata/rapidata_client/country_codes/country_codes.py,sha256=Q0HMX7uHJQDeLCFPP5bq4iYi6pgcDWEcl2ONGhjgoeU,286
326
326
  rapidata/rapidata_client/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
327
- rapidata/rapidata_client/dataset/rapidata_dataset.py,sha256=12mvcpHa-ZpDOFhSuqnSb6pFhR1q7rF98fgiDBuONdw,4935
327
+ rapidata/rapidata_client/dataset/rapidata_dataset.py,sha256=UBDm9bF1AbnJwHpvty6NRsxLe8segMMNMixS_WQIKgY,5074
328
328
  rapidata/rapidata_client/dataset/rapidata_validation_set.py,sha256=KhvHMML591h61I9lqXSmp_s2_VZAWmuCoixmA2rAI8c,10973
329
329
  rapidata/rapidata_client/dataset/validation_rapid_parts.py,sha256=uzpOZFqQu8bG6vmjcWWUNJPZsRe28OmnyalRE6ry8tk,2317
330
330
  rapidata/rapidata_client/dataset/validation_set_builder.py,sha256=ApYyEIwf9CQfnKJ2nZwK9FzgnY3Ff3BWetv75OlR-KM,8018
@@ -343,12 +343,12 @@ rapidata/rapidata_client/metadata/prompt_metadata.py,sha256=_FypjKWrC3iKUO_G2CVw
343
343
  rapidata/rapidata_client/metadata/public_text_metadata.py,sha256=LTiBQHs6izxQ6-C84d6Pf7lL4ENTDgg__HZnDKvzvMc,511
344
344
  rapidata/rapidata_client/metadata/transcription_metadata.py,sha256=THtDEVCON4UlcXHmXrjilaOLHys4TrktUOPGWnXaCcc,631
345
345
  rapidata/rapidata_client/order/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
346
- rapidata/rapidata_client/order/rapidata_order.py,sha256=t5ddz_6Dk2DOpsDQ2EiZHJJB1RzU-etKwBL0RErEsSY,4567
347
- rapidata/rapidata_client/order/rapidata_order_builder.py,sha256=b--9byhsiAW1fL0mVSPzGJT0X4MQ-tCC0BNjIm2vu-Q,16406
346
+ rapidata/rapidata_client/order/rapidata_order.py,sha256=maft6d1mUscgETVejlYY2GFfn7uvzCtq9GJ5dEnigYE,4793
347
+ rapidata/rapidata_client/order/rapidata_order_builder.py,sha256=QFlO3e4d3MVT76sAM9iU6zkG2BiSmac7WlY57jzdSQk,16680
348
348
  rapidata/rapidata_client/rapidata_client.py,sha256=a_OZBd3sldws3ElqZt_eyqrSzdUNLxynjG5XCNLmmnY,8032
349
349
  rapidata/rapidata_client/referee/__init__.py,sha256=E1VODxTjoQRnxzdgMh3aRlDLouxe1nWuvozEHXD2gq4,150
350
350
  rapidata/rapidata_client/referee/base_referee.py,sha256=bMy7cw0a-pGNbFu6u_1_Jplu0A483Ubj4oDQzh8vu8k,493
351
- rapidata/rapidata_client/referee/early_stopping_referee.py,sha256=Dg2Kk7OiLBtS3kknsLxyJIlS27xmPvsikFR6g4xlbTE,1862
351
+ rapidata/rapidata_client/referee/early_stopping_referee.py,sha256=V9c2Iau40-aPM06FYW5qwpJGa-usTCiZixoCCQWkrxI,1929
352
352
  rapidata/rapidata_client/referee/naive_referee.py,sha256=uOmrzCfpDopm6ww8u4Am5vz5qGNM7621HNJ-QIeH9wM,1164
353
353
  rapidata/rapidata_client/selection/__init__.py,sha256=RFdVUeo2bjCL1gPIL6HXzbpOBqY9kYedkNgb2_ANNLs,321
354
354
  rapidata/rapidata_client/selection/base_selection.py,sha256=Y3HkROPm4I4HLNiR0HuHKpvk236KkRlsoDxQATm_chY,138
@@ -361,8 +361,8 @@ rapidata/rapidata_client/settings/__init__.py,sha256=pqAmWPURaZ71rz6ogUH2rnfKL3r
361
361
  rapidata/rapidata_client/settings/feature_flags.py,sha256=aKnxl1kv4cC3TaHV-xfqYlvL3ATIB2-H0VKl1rUt8jQ,4658
362
362
  rapidata/rapidata_client/settings/settings.py,sha256=oglRs-xgMGW8t2DhHfWIjWGkPW9Bm_fIaTTcaQKy-b8,4410
363
363
  rapidata/rapidata_client/simple_builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
364
- rapidata/rapidata_client/simple_builders/simple_classification_builders.py,sha256=gTb1OzJZjNW48ltrp0v9tcDjLee9_ZiLw78zYziVu_g,5520
365
- rapidata/rapidata_client/simple_builders/simple_compare_builders.py,sha256=GmNIUoAkoAHp0OnWLOgeI5-wnDiycuye0o1CUa9c3Q0,4808
364
+ rapidata/rapidata_client/simple_builders/simple_classification_builders.py,sha256=-fltx9dSP64e2i7spF3gKcEIYfY8ROZo2sb6JaQoMcQ,5938
365
+ rapidata/rapidata_client/simple_builders/simple_compare_builders.py,sha256=JoGXspVfqKaRNDsiZMS7xfyJ4TVflaQCE4PEQyiJajQ,5913
366
366
  rapidata/rapidata_client/workflow/__init__.py,sha256=xWuzAhBnbcUFfWcgYrzj8ZYLSOXyFtgfepgMrf0hNhU,290
367
367
  rapidata/rapidata_client/workflow/base_workflow.py,sha256=iDBeklFwOIbMuJHA7t-x_cwxfygJCG0SoXLBB7R53fQ,1395
368
368
  rapidata/rapidata_client/workflow/classify_workflow.py,sha256=NkyyBrlCDqYVQaCARR9EHYuREEtXond69kD6jbzcN3M,1713
@@ -371,11 +371,11 @@ rapidata/rapidata_client/workflow/evaluation_workflow.py,sha256=IBQoVFxOaeCDIBfa
371
371
  rapidata/rapidata_client/workflow/free_text_workflow.py,sha256=VaypoG3yKgsbtVyqxta3W28eDwdnGebCy2xDWPCBMyo,1566
372
372
  rapidata/rapidata_client/workflow/transcription_workflow.py,sha256=_KDtGCdRhauJm3jQHpwhY-Hq79CLg5I8q2RgOz5lo1g,1404
373
373
  rapidata/service/__init__.py,sha256=s9bS1AJZaWIhLtJX_ZA40_CK39rAAkwdAmymTMbeWl4,68
374
- rapidata/service/credential_manager.py,sha256=I0BvNsq7a2zJhPqXa-ESot9037cTu5TaC2iYJjWIRv0,7943
374
+ rapidata/service/credential_manager.py,sha256=4jiJaX4hnRKoU91-WnpLytOTvSWApSa8ezN8fGAp0dg,7944
375
375
  rapidata/service/local_file_service.py,sha256=pgorvlWcx52Uh3cEG6VrdMK_t__7dacQ_5AnfY14BW8,877
376
376
  rapidata/service/openapi_service.py,sha256=XNTCCBsC-3GwB2TxZ5XQaqzRnaViSIZ3yIWeVl9J20U,2472
377
377
  rapidata/service/token_manager.py,sha256=JZ5YbR5Di8dO3H4kK11d0kzWlrXxjgCmeNkHA4AapCM,6425
378
- rapidata-1.6.4.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
379
- rapidata-1.6.4.dist-info/METADATA,sha256=4ZrSMPGIdOa00Bw1wagYULKBk1PoKKbz8gIuDN4ME8Q,1056
380
- rapidata-1.6.4.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
381
- rapidata-1.6.4.dist-info/RECORD,,
378
+ rapidata-1.7.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
379
+ rapidata-1.7.0.dist-info/METADATA,sha256=ksCbiolkXIzYFPUahD93JYrYcB1UE0DQ1A7VF91s6MQ,1056
380
+ rapidata-1.7.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
381
+ rapidata-1.7.0.dist-info/RECORD,,