rapidata 1.8.2__py3-none-any.whl → 1.9.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.

Files changed (24) hide show
  1. rapidata/__init__.py +2 -2
  2. rapidata/constants.py +1 -0
  3. rapidata/rapidata_client/__init__.py +2 -2
  4. rapidata/rapidata_client/assets/media_asset.py +38 -29
  5. rapidata/rapidata_client/dataset/rapid_builders/__init__.py +1 -1
  6. rapidata/rapidata_client/dataset/rapid_builders/base_rapid_builder.py +5 -5
  7. rapidata/rapidata_client/dataset/rapid_builders/rapids.py +7 -6
  8. rapidata/rapidata_client/dataset/rapid_builders/{transcription_rapid_builders.py → select_words_rapid_builders.py} +35 -43
  9. rapidata/rapidata_client/dataset/rapidata_validation_set.py +6 -0
  10. rapidata/rapidata_client/dataset/validation_set_builder.py +15 -15
  11. rapidata/rapidata_client/metadata/__init__.py +1 -1
  12. rapidata/rapidata_client/metadata/{transcription_metadata.py → select_words_metadata.py} +4 -4
  13. rapidata/rapidata_client/order/rapidata_order.py +1 -1
  14. rapidata/rapidata_client/rapidata_client.py +5 -5
  15. rapidata/rapidata_client/simple_builders/simple_classification_builders.py +10 -1
  16. rapidata/rapidata_client/simple_builders/simple_compare_builders.py +2 -2
  17. rapidata/rapidata_client/simple_builders/simple_free_text_builders.py +1 -1
  18. rapidata/rapidata_client/simple_builders/{simple_transcription_builders.py → simple_select_words_builders.py} +38 -46
  19. rapidata/rapidata_client/workflow/__init__.py +1 -1
  20. rapidata/rapidata_client/workflow/{transcription_workflow.py → select_words_workflow.py} +7 -7
  21. {rapidata-1.8.2.dist-info → rapidata-1.9.0.dist-info}/METADATA +1 -1
  22. {rapidata-1.8.2.dist-info → rapidata-1.9.0.dist-info}/RECORD +24 -23
  23. {rapidata-1.8.2.dist-info → rapidata-1.9.0.dist-info}/LICENSE +0 -0
  24. {rapidata-1.8.2.dist-info → rapidata-1.9.0.dist-info}/WHEEL +0 -0
rapidata/__init__.py CHANGED
@@ -1,7 +1,7 @@
1
1
  from .rapidata_client import (
2
2
  RapidataClient,
3
3
  ClassifyWorkflow,
4
- TranscriptionWorkflow,
4
+ SelectWordsWorkflow,
5
5
  CompareWorkflow,
6
6
  FreeTextWorkflow,
7
7
  DemographicSelection,
@@ -14,7 +14,7 @@ from .rapidata_client import (
14
14
  PrivateTextMetadata,
15
15
  PublicTextMetadata,
16
16
  PromptMetadata,
17
- TranscriptionMetadata,
17
+ SelectWordsMetadata,
18
18
  Settings,
19
19
  FeatureFlags, # remove next major version
20
20
  CountryCodes,
rapidata/constants.py ADDED
@@ -0,0 +1 @@
1
+ MAX_TIME_IN_SECONDS_FOR_ONE_SESSION=25
@@ -1,7 +1,7 @@
1
1
  from .rapidata_client import RapidataClient
2
2
  from .workflow import (
3
3
  ClassifyWorkflow,
4
- TranscriptionWorkflow,
4
+ SelectWordsWorkflow,
5
5
  CompareWorkflow,
6
6
  FreeTextWorkflow,
7
7
  )
@@ -17,7 +17,7 @@ from .metadata import (
17
17
  PrivateTextMetadata,
18
18
  PublicTextMetadata,
19
19
  PromptMetadata,
20
- TranscriptionMetadata,
20
+ SelectWordsMetadata,
21
21
  )
22
22
  from .settings import Settings, FeatureFlags # remove FeatureFlags next major version
23
23
  from .country_codes import CountryCodes
@@ -13,6 +13,7 @@ class MediaAsset(BaseAsset):
13
13
  """MediaAsset Class
14
14
 
15
15
  Represents a media asset by storing the file path.
16
+ Supports local files and URLs for images, MP3, and MP4.
16
17
 
17
18
  Args:
18
19
  path (str): The file system path to the media asset.
@@ -21,68 +22,76 @@ class MediaAsset(BaseAsset):
21
22
  FileNotFoundError: If the provided file path does not exist.
22
23
  """
23
24
 
25
+ ALLOWED_TYPES = [
26
+ 'image/',
27
+ 'audio/mp3', # MP3
28
+ 'video/mp4', # MP4
29
+ ]
30
+
24
31
  def __init__(self, path: str):
25
32
  """
26
33
  Initialize a MediaAsset instance.
27
34
 
28
35
  Args:
29
- path (str): The file system path to the media asset or a link to an image.
36
+ path (str): The file system path to the media asset or a URL.
30
37
 
31
38
  Raises:
32
39
  FileNotFoundError: If the provided file path does not exist.
40
+ ValueError: If media type is unsupported or duration exceeds 25 seconds.
33
41
  """
34
42
  if not isinstance(path, str):
35
- raise ValueError("Media must be a string, either a local file path or an image URL")
43
+ raise ValueError("Media must be a string, either a local file path or a URL")
36
44
 
37
45
  if re.match(r'^https?://', path):
38
- self.path = MediaAsset.get_image_bytes(path)
46
+ self.path = self._get_media_bytes(path)
39
47
  self.name = path.split('/')[-1]
40
- if not self.name.endswith(('.jpg', '.jpeg', '.png', '.gif')):
41
- self.name += '.jpg'
48
+ if not self.name.endswith(('.jpg', '.jpeg', '.png', '.gif', '.mp3', '.mp4', '.webp')):
49
+ raise ValueError("Supported file types for custom names: jpg, jpeg, png, gif, mp3, mp4")
42
50
  return
43
51
 
44
52
  if not os.path.exists(path):
45
- raise FileNotFoundError(f"File not found: {path}, please provide a valid local file path.")
53
+ raise FileNotFoundError(f"File not found: {path}")
54
+
46
55
 
47
56
  self.path: str | bytes = path
48
57
  self.name = path
49
58
 
50
59
  def set_custom_name(self, name: str) -> 'MediaAsset':
51
- """
52
- Set a custom name for the media asset, will only work with links.
53
-
54
- Args:
55
- name (str): The custom name to be set.
56
- """
60
+ """Set a custom name for the media asset (only works with URLs)."""
57
61
  if isinstance(self.path, bytes):
58
- if not name.endswith(('.jpg', '.jpeg', '.png', '.gif')):
59
- name += '.jpg'
62
+ if not name.endswith(('.jpg', '.jpeg', '.png', '.gif', '.mp3', '.mp4', '.webp')):
63
+ raise ValueError("Supported file types for custom names: jpg, jpeg, png, gif, mp3, mp4")
60
64
  self.name = name
61
65
  else:
62
- raise ValueError("Custom name can only be set for links.")
66
+ raise ValueError("Custom name can only be set for URLs.")
63
67
  return self
64
68
 
65
- @staticmethod
66
- def get_image_bytes(image_url: str) -> bytes:
69
+ def _get_media_bytes(self, url: str) -> bytes:
67
70
  """
68
- Downloads an image from a URL and converts it to bytes.
69
- Validates that the URL points to an actual image.
71
+ Downloads media files from URL and validates type and duration.
70
72
 
71
73
  Args:
72
- image_url (str): URL of the image
73
-
74
+ url: URL of the media file
75
+
74
76
  Returns:
75
- bytes: Image data as bytes
77
+ bytes: Media data
76
78
 
77
79
  Raises:
78
- ValueError: If URL doesn't point to an image
80
+ ValueError: If media type is unsupported or duration exceeds limit
79
81
  requests.exceptions.RequestException: If download fails
80
82
  """
81
- response = requests.get(image_url)
83
+ response = requests.get(url, stream=False) # Don't stream, we need full file
82
84
  response.raise_for_status()
85
+
86
+ content_type = response.headers.get('content-type', '').lower()
83
87
 
84
- content_type = response.headers.get('content-type', '')
85
- if not content_type.startswith('image/'):
86
- raise ValueError(f'URL does not point to an image. Content-Type: {content_type}')
87
-
88
- return BytesIO(response.content).getvalue()
88
+ # Validate content type
89
+ if not any(content_type.startswith(t) for t in self.ALLOWED_TYPES):
90
+ raise ValueError(
91
+ f'URL does not point to an allowed media type.\n'
92
+ f'Content-Type: {content_type}\n'
93
+ f'Allowed types: {self.ALLOWED_TYPES}'
94
+ )
95
+
96
+ content = BytesIO(response.content)
97
+ return content.getvalue()
@@ -1,4 +1,4 @@
1
1
  from .classify_rapid_builders import ClassifyRapidQuestionBuilder
2
2
  from .compare_rapid_builders import CompareRapidCriteriaBuilder
3
- from .transcription_rapid_builders import TranscriptionRapidInstructionBuilder
3
+ from .select_words_rapid_builders import SelectWordsRapidInstructionBuilder
4
4
  from .base_rapid_builder import BaseRapidBuilder
@@ -1,5 +1,5 @@
1
1
  from rapidata.service.openapi_service import OpenAPIService
2
- from rapidata.rapidata_client.dataset.rapid_builders import ClassifyRapidQuestionBuilder, CompareRapidCriteriaBuilder, TranscriptionRapidInstructionBuilder
2
+ from rapidata.rapidata_client.dataset.rapid_builders import ClassifyRapidQuestionBuilder, CompareRapidCriteriaBuilder, SelectWordsRapidInstructionBuilder
3
3
 
4
4
  class BaseRapidBuilder:
5
5
  """Base class for creating different types of rapids.
@@ -23,11 +23,11 @@ class BaseRapidBuilder:
23
23
  """
24
24
  return CompareRapidCriteriaBuilder()
25
25
 
26
- def transcription_rapid(self):
27
- """Creates a transcription rapid.
26
+ def select_words_rapid(self):
27
+ """Creates a select words rapid.
28
28
 
29
29
  Returns:
30
- TranscriptionRapidInstructionBuilder: A builder for creating the transcription instruction.
30
+ SelectWordsRapidInstructionBuilder: A builder for creating the select words instruction.
31
31
  """
32
- return TranscriptionRapidInstructionBuilder()
32
+ return SelectWordsRapidInstructionBuilder()
33
33
 
@@ -5,7 +5,7 @@ class Rapid:
5
5
  pass
6
6
 
7
7
  class ClassificationRapid(Rapid):
8
- """A classification rapid. This represents the question, options, truths, asset and metadata that will be given to the user."""
8
+ """A classification rapid. This represents the question, options, truths, asset and metadata that will be given to the labeler."""
9
9
  def __init__(self, question: str, options: list[str], truths: list[str], asset: MediaAsset | TextAsset, metadata: list[Metadata]):
10
10
  self.question = question
11
11
  self.options = options
@@ -14,19 +14,20 @@ class ClassificationRapid(Rapid):
14
14
  self.metadata = metadata
15
15
 
16
16
  class CompareRapid(Rapid):
17
- """A comparison rapid. This represents the criteria, asset, truth and metadata that will be given to the user."""
17
+ """A comparison rapid. This represents the criteria, asset, truth and metadata that will be given to the labeler."""
18
18
  def __init__(self, criteria: str, truth: str, asset: MultiAsset, metadata: list[Metadata]):
19
19
  self.criteria = criteria
20
20
  self.asset = asset
21
21
  self.truth = truth
22
22
  self.metadata = metadata
23
23
 
24
- class TranscriptionRapid(Rapid):
25
- """A transcription rapid. This represents the instruction, truths, asset, transcription and strict grading that will be given to the user."""
26
- def __init__(self, instruction: str, truths: list[int], asset: MediaAsset, transcription: str, strict_grading: bool):
24
+ class SelectWordsRapid(Rapid):
25
+ """A transcription rapid. This represents the instruction, truths, asset, transcription and strict grading that will be given to the labeler."""
26
+ def __init__(self, instruction: str, truths: list[int], asset: MediaAsset, text: str, strict_grading: bool):
27
+ """The text will be split up by spaces to be selected by the labeler."""
27
28
  self.instruction = instruction
28
29
  self.truths = truths
29
30
  self.asset = asset
30
- self.transcription = transcription
31
+ self.text = text
31
32
  self.strict_grading = strict_grading
32
33
 
@@ -1,64 +1,56 @@
1
1
  from rapidata.rapidata_client.assets import MediaAsset
2
- from rapidata.rapidata_client.dataset.rapid_builders.rapids import TranscriptionRapid
2
+ from rapidata.rapidata_client.dataset.rapid_builders.rapids import SelectWordsRapid
3
3
 
4
- class TranscriptionRapidBuilder:
5
- """Final builder class for transcription rapid.
4
+ class SelectWordsRapidBuilder:
5
+ """Final builder class for rapid.
6
6
 
7
- This class handles the final construction of a transcription rapid with all required parameters.
7
+ This class handles the final construction of a rapid with all required parameters.
8
8
  """
9
- def __init__(self, instruction: str, truths: list[int], asset: MediaAsset, transcription_text: str):
9
+ def __init__(self, instruction: str, truths: list[int], asset: MediaAsset, text: str):
10
10
  self._instruction = instruction
11
11
  self._truths = truths
12
12
  self._asset = asset
13
- self._transcription_text = transcription_text
13
+ self._text = text
14
14
  self._strict_grading = True
15
15
 
16
16
  def strict_grading(self, strict_grading: bool = True):
17
- """Set whether to use strict grading for the transcription.
17
+ """Set whether to use strict grading for the select words.
18
18
  Strict grading true: In order to be correct, you must select all of the right words
19
19
  Strict grading false: In order to be correct, you must select at least one right word
20
20
  In both cases it will be incorrect if you select any wrong words
21
21
 
22
22
  Args:
23
- strict_grading (bool): Whether to use strict grading. Defaults to True.
24
-
25
- Returns:
26
- TranscriptionRapidBuilder: The builder instance for method chaining
27
- """
23
+ strict_grading (bool): Whether to use strict grading. Defaults to True."""
28
24
  self._strict_grading = strict_grading
29
25
  return self
30
26
 
31
27
  def build(self):
32
- """Constructs and returns the final transcription rapid.
33
-
34
- Returns:
35
- TranscriptionRapid: The constructed transcription rapid
36
- """
37
- return TranscriptionRapid(
28
+ """Constructs and returns the final rapid."""
29
+ return SelectWordsRapid(
38
30
  instruction=self._instruction,
39
31
  truths=self._truths,
40
32
  asset=self._asset,
41
- transcription=self._transcription_text,
33
+ text=self._text,
42
34
  strict_grading=self._strict_grading
43
35
  )
44
36
 
45
- class TranscriptionRapidTruthsBuilder:
46
- """Builder class for the truths of the transcription rapid.
37
+ class SelectWordsRapidTruthsBuilder:
38
+ """Builder class for the truths of the rapid.
47
39
 
48
- This adds the truths to the transcription rapid.
40
+ This adds the truths to the rapid.
49
41
  """
50
- def __init__(self, instruction: str, media: MediaAsset, transcription_text: str):
42
+ def __init__(self, instruction: str, media: MediaAsset, text: str):
51
43
  self._instruction = instruction
52
44
  self._media = media
53
- self._transcription_text = transcription_text
45
+ self._text = text
54
46
  self._truths = None
55
47
 
56
48
  def truths(self, truths: list[int]):
57
- """Set the truths for the transcription rapid.
49
+ """Set the truths for the rapid.
58
50
 
59
51
  Args:
60
- truths (list[int]): The correct answers for the transcription task. \
61
- Each integer represents the index of the correct word in the transcription text."""
52
+ truths (list[int]): The correct answers for the task. \
53
+ Each integer represents the index of the correct word in the text."""
62
54
 
63
55
  if not isinstance(truths, list) or not all(isinstance(truth, int) for truth in truths):
64
56
  raise ValueError("Truths must be a list of integers")
@@ -70,30 +62,30 @@ class TranscriptionRapidTruthsBuilder:
70
62
  if self._truths is None:
71
63
  raise ValueError("Truths are required")
72
64
 
73
- return TranscriptionRapidBuilder(
65
+ return SelectWordsRapidBuilder(
74
66
  instruction=self._instruction,
75
67
  truths=self._truths,
76
68
  asset=self._media,
77
- transcription_text=self._transcription_text
69
+ text=self._text
78
70
  )
79
71
 
80
- class TranscriptionRapidAssetBuilder:
81
- """Builder class for the asset of the transcription rapid.
72
+ class SelectWordsRapidAssetBuilder:
73
+ """Builder class for the asset of the rapid.
82
74
 
83
- This adds the asset to the transcription rapid.
75
+ This adds the asset to the rapid.
84
76
  """
85
77
  def __init__(self, instruction: str):
86
78
  self._instruction = instruction
87
79
 
88
- def media(self, media: str, transcription_text: str):
89
- """Set the media asset for the transcription rapid.
80
+ def media(self, media: str, text: str):
81
+ """Set the media asset for the rapid.
90
82
 
91
83
  Args:
92
- media (str): The local file path of the audio or video file to be transcribed
93
- transcription_text (str): The text to be transcribed from the media asset""" # is video file okay?
84
+ media (str): The local path (image, video, audio) or URL (image) of the media asset.
85
+ text (str): The text will be split up by spaces and the labeler will be able to select the words"""
94
86
 
95
87
  self._asset = MediaAsset(media)
96
- self._transcription_text = transcription_text
88
+ self._text = text
97
89
 
98
90
  return self._build()
99
91
 
@@ -101,21 +93,21 @@ class TranscriptionRapidAssetBuilder:
101
93
  if not self._asset:
102
94
  raise ValueError("Media is required")
103
95
 
104
- return TranscriptionRapidTruthsBuilder(
96
+ return SelectWordsRapidTruthsBuilder(
105
97
  instruction=self._instruction,
106
98
  media=self._asset,
107
- transcription_text=self._transcription_text
99
+ text=self._text
108
100
  )
109
101
 
110
- class TranscriptionRapidInstructionBuilder:
102
+ class SelectWordsRapidInstructionBuilder:
111
103
  def __init__(self):
112
104
  self._instruction = None
113
105
 
114
106
  def instruction(self, instruction: str):
115
- """Set the instruction for the transcription rapid.
107
+ """Set the instruction for the rapid.
116
108
 
117
109
  Args:
118
- instruction (str): The instruction for the transcription task"""
110
+ instruction (str): The instruction for the task"""
119
111
 
120
112
  if not isinstance(instruction, str):
121
113
  raise ValueError("Instruction must be a string")
@@ -127,6 +119,6 @@ class TranscriptionRapidInstructionBuilder:
127
119
  if self._instruction is None:
128
120
  raise ValueError("Instruction is required")
129
121
 
130
- return TranscriptionRapidAssetBuilder(
122
+ return SelectWordsRapidAssetBuilder(
131
123
  instruction=self._instruction,
132
124
  )
@@ -298,3 +298,9 @@ class RapidataValidationSet:
298
298
  asset=asset,
299
299
  randomCorrectProbability=len(correct_words) / len(transcription),
300
300
  )
301
+
302
+ def __str__(self):
303
+ return f"name: '{self.name}' id: {self.id}"
304
+
305
+ def __repr__(self):
306
+ return f"name: '{self.name}' id: {self.id}"
@@ -20,7 +20,7 @@ from rapidata.rapidata_client.dataset.rapid_builders.rapids import (
20
20
  Rapid,
21
21
  ClassificationRapid,
22
22
  CompareRapid,
23
- TranscriptionRapid
23
+ SelectWordsRapid
24
24
  )
25
25
  from deprecated import deprecated
26
26
 
@@ -96,8 +96,8 @@ class ValidationSetBuilder:
96
96
  if isinstance(rapid, CompareRapid):
97
97
  self._add_compare_rapid(rapid.asset, rapid.criteria, rapid.truth, rapid.metadata)
98
98
 
99
- if isinstance(rapid, TranscriptionRapid):
100
- self._add_transcription_rapid(rapid.asset, rapid.instruction, rapid.transcription, rapid.truths, rapid.strict_grading)
99
+ if isinstance(rapid, SelectWordsRapid):
100
+ self._add_select_words_rapid(rapid.asset, rapid.instruction, rapid.text, rapid.truths, rapid.strict_grading)
101
101
 
102
102
  return self
103
103
 
@@ -237,21 +237,21 @@ class ValidationSetBuilder:
237
237
  )
238
238
 
239
239
  @deprecated("Use add_rapid instead")
240
- def add_transcription_rapid(
240
+ def add_select_words_rapid(
241
241
  self,
242
242
  asset: MediaAsset | TextAsset,
243
243
  question: str,
244
- transcription: str,
244
+ select_words: str,
245
245
  truths: list[int],
246
246
  strict_grading: bool | None = None,
247
247
  metadata: list[Metadata] = [],
248
248
  ):
249
- """Add a transcription rapid to the validation set.
249
+ """Add a select words rapid to the validation set.
250
250
 
251
251
  Args:
252
252
  asset (MediaAsset | TextAsset): The asset for the rapid.
253
253
  question (str): The question for the rapid.
254
- transcription (list[str]): The transcription for the rapid.
254
+ select words (list[str]): The select words for the rapid.
255
255
  truths (list[int]): The list of indices of the true word selections.
256
256
  strict_grading (bool | None, optional): The strict grading for the rapid. Defaults to None.
257
257
  metadata (list[Metadata], optional): The metadata for the rapid.
@@ -260,27 +260,27 @@ class ValidationSetBuilder:
260
260
  ValidationSetBuilder: The ValidationSetBuilder instance.
261
261
 
262
262
  Raises:
263
- ValueError: If a correct word is not found in the transcription.
263
+ ValueError: If a correct word is not found in the select words.
264
264
  """
265
- self._add_transcription_rapid(asset, question, transcription, truths, strict_grading, metadata)
265
+ self._add_select_words_rapid(asset, question, select_words, truths, strict_grading, metadata)
266
266
 
267
267
  return self
268
268
 
269
- def _add_transcription_rapid(
269
+ def _add_select_words_rapid(
270
270
  self,
271
271
  asset: MediaAsset | TextAsset,
272
272
  question: str,
273
- transcription: str,
273
+ select_words: str,
274
274
  truths: list[int],
275
275
  strict_grading: bool | None = None,
276
276
  metadata: list[Metadata] = [],
277
277
  ):
278
- """Add a transcription rapid to the validation set.
278
+ """Add a select words rapid to the validation set.
279
279
 
280
280
  Args:
281
281
  asset (MediaAsset | TextAsset): The asset for the rapid.
282
282
  question (str): The question for the rapid.
283
- transcription (list[str]): The transcription for the rapid.
283
+ select words (list[str]): The select words for the rapid.
284
284
  truths (list[int]): The list of indices of the true word selections.
285
285
  strict_grading (bool | None, optional): The strict grading for the rapid. Defaults to None.
286
286
  metadata (list[Metadata], optional): The metadata for the rapid.
@@ -289,11 +289,11 @@ class ValidationSetBuilder:
289
289
  ValidationSetBuilder: The ValidationSetBuilder instance.
290
290
 
291
291
  Raises:
292
- ValueError: If a correct word is not found in the transcription.
292
+ ValueError: If a correct word is not found in the select words.
293
293
  """
294
294
  transcription_words = [
295
295
  TranscriptionWord(word=word, wordIndex=i)
296
- for i, word in enumerate(transcription.split())
296
+ for i, word in enumerate(select_words.split())
297
297
  ]
298
298
 
299
299
  true_words = []
@@ -2,4 +2,4 @@ from .base_metadata import Metadata
2
2
  from .private_text_metadata import PrivateTextMetadata
3
3
  from .public_text_metadata import PublicTextMetadata
4
4
  from .prompt_metadata import PromptMetadata
5
- from .transcription_metadata import TranscriptionMetadata
5
+ from .select_words_metadata import SelectWordsMetadata
@@ -4,16 +4,16 @@ from rapidata.api_client.models.transcription_metadata_input import (
4
4
  from rapidata.rapidata_client.metadata.base_metadata import Metadata
5
5
 
6
6
 
7
- class TranscriptionMetadata(Metadata):
7
+ class SelectWordsMetadata(Metadata):
8
8
 
9
- def __init__(self, transcription: str, identifier: str = "transcription"):
9
+ def __init__(self, select_words: str, identifier: str = "transcription"):
10
10
  super().__init__(identifier=identifier)
11
11
  self.identifier = identifier
12
- self.transcription = transcription
12
+ self.select_words = select_words
13
13
 
14
14
  def to_model(self):
15
15
  return TranscriptionMetadataInput(
16
16
  _t="TranscriptionMetadataInput",
17
17
  identifier=self.identifier,
18
- transcription=self.transcription,
18
+ transcription=self.select_words,
19
19
  )
@@ -106,7 +106,7 @@ class RapidataOrder:
106
106
  Returns:
107
107
  The results of the order.
108
108
  """
109
- while self.get_status() not in ["Completed", "Paused", "ManuelReview"]:
109
+ while self.get_status() not in ["Completed", "Paused", "ManuelReview", "Failed"]:
110
110
  sleep(5)
111
111
 
112
112
  try:
@@ -8,7 +8,7 @@ from rapidata.rapidata_client.dataset.rapidata_dataset import RapidataDataset
8
8
  from rapidata.rapidata_client.simple_builders.simple_classification_builders import ClassificationQuestionBuilder
9
9
  from rapidata.rapidata_client.simple_builders.simple_compare_builders import CompareCriteriaBuilder
10
10
  from rapidata.rapidata_client.simple_builders.simple_free_text_builders import FreeTextQuestionBuilder
11
- from rapidata.rapidata_client.simple_builders.simple_transcription_builders import TranscriptionInstructionBuilder
11
+ from rapidata.rapidata_client.simple_builders.simple_select_words_builders import SelectWordsInstructionBuilder
12
12
 
13
13
  from rapidata.rapidata_client.dataset.rapid_builders import BaseRapidBuilder
14
14
 
@@ -194,14 +194,14 @@ class RapidataClient:
194
194
  """
195
195
  return FreeTextQuestionBuilder(name=name, openapi_service=self.openapi_service)
196
196
 
197
- def create_transcription_order(self, name: str) -> TranscriptionInstructionBuilder:
198
- """Create a new transcription order where people are asked to transcribe an audio file.
197
+ def create_select_words_order(self, name: str) -> SelectWordsInstructionBuilder:
198
+ """Create a new select words order where people are asked to transcribe an audio file.
199
199
 
200
200
  Args:
201
201
  name (str): The name of the order.
202
202
 
203
203
  Returns:
204
- TranscriptionInstructionBuilder: A TranscriptionInstructionBuilder instance.
204
+ SelectWordsInstructionBuilder: A SelectWordsInstructionBuilder instance.
205
205
  """
206
- return TranscriptionInstructionBuilder(name=name, openapi_service=self.openapi_service)
206
+ return SelectWordsInstructionBuilder(name=name, openapi_service=self.openapi_service)
207
207
 
@@ -1,4 +1,4 @@
1
- from constants import MAX_TIME_IN_SECONDS_FOR_ONE_SESSION
1
+ from rapidata.constants import MAX_TIME_IN_SECONDS_FOR_ONE_SESSION
2
2
  from rapidata.rapidata_client.order.rapidata_order import RapidataOrder
3
3
  from rapidata.rapidata_client.order.rapidata_order_builder import RapidataOrderBuilder
4
4
  from rapidata.rapidata_client.metadata import Metadata, PromptMetadata
@@ -219,6 +219,15 @@ class ClassificationOptionsBuilder:
219
219
 
220
220
  def options(self, options: list[str]) -> ClassificationMediaBuilder:
221
221
  """Set the answer options for the classification order."""
222
+ if not isinstance(options, list) or not all(isinstance(option, str) for option in options):
223
+ raise ValueError("Options must be a list of strings")
224
+
225
+ if len(options) < 2:
226
+ raise ValueError("At least two options are required")
227
+
228
+ if len(options) > 8:
229
+ raise ValueError("Maximum of 8 options allowed")
230
+
222
231
  self._options = options
223
232
  return self._build()
224
233
 
@@ -1,4 +1,4 @@
1
- from constants import MAX_TIME_IN_SECONDS_FOR_ONE_SESSION
1
+ from rapidata.constants import MAX_TIME_IN_SECONDS_FOR_ONE_SESSION
2
2
  from rapidata.service.openapi_service import OpenAPIService
3
3
  from rapidata.rapidata_client.metadata import Metadata, PromptMetadata
4
4
  from rapidata.rapidata_client.order.rapidata_order_builder import RapidataOrderBuilder
@@ -29,7 +29,7 @@ class CompareOrderBuilder:
29
29
  self._time_effort = time_effort
30
30
 
31
31
  def responses(self, responses_required: int) -> 'CompareOrderBuilder':
32
- """Set the number of resoonses required per matchup/pairing for the comparison order. Will default to 10."""
32
+ """Set the number of resoonses required per matchup/pairing for the comparison order. Will default to 10 if not set."""
33
33
  self._responses_required = responses_required
34
34
  return self
35
35
 
@@ -1,4 +1,4 @@
1
- from constants import MAX_TIME_IN_SECONDS_FOR_ONE_SESSION
1
+ from rapidata.constants import MAX_TIME_IN_SECONDS_FOR_ONE_SESSION
2
2
  from rapidata.rapidata_client.order.rapidata_order import RapidataOrder
3
3
  from rapidata.rapidata_client.order.rapidata_order_builder import RapidataOrderBuilder
4
4
  from rapidata.rapidata_client.referee.naive_referee import NaiveReferee
@@ -1,62 +1,62 @@
1
- from constants import MAX_TIME_IN_SECONDS_FOR_ONE_SESSION
1
+ from rapidata.constants import MAX_TIME_IN_SECONDS_FOR_ONE_SESSION
2
2
  from rapidata.rapidata_client.order.rapidata_order import RapidataOrder
3
3
  from rapidata.rapidata_client.order.rapidata_order_builder import RapidataOrderBuilder
4
4
  from rapidata.rapidata_client.referee.naive_referee import NaiveReferee
5
5
  from rapidata.rapidata_client.selection.base_selection import Selection
6
- from rapidata.rapidata_client.workflow import TranscriptionWorkflow
6
+ from rapidata.rapidata_client.workflow import SelectWordsWorkflow
7
7
  from rapidata.rapidata_client.selection.validation_selection import ValidationSelection
8
8
  from rapidata.rapidata_client.selection.labeling_selection import LabelingSelection
9
9
  from rapidata.service.openapi_service import OpenAPIService
10
10
  from rapidata.rapidata_client.assets import MediaAsset, BaseAsset
11
11
  from rapidata.rapidata_client.filter import Filter, CountryFilter, LanguageFilter
12
- from rapidata.rapidata_client.metadata import TranscriptionMetadata
12
+ from rapidata.rapidata_client.metadata import SelectWordsMetadata
13
13
  from rapidata.rapidata_client.settings import Settings, TranslationBehaviour
14
14
 
15
- class TranscriptionOrderBuilder:
15
+ class SelectWordsOrderBuilder:
16
16
  def __init__(self,
17
17
  name: str,
18
18
  instruction: str,
19
19
  media_assets: list[BaseAsset],
20
- transcription_texts: list[TranscriptionMetadata],
20
+ texts: list[SelectWordsMetadata],
21
21
  openapi_service: OpenAPIService,
22
22
  time_effort: int):
23
23
  self._order_builder = RapidataOrderBuilder(name=name, openapi_service=openapi_service)
24
24
  self._instruction = instruction
25
25
  self._media_assets = media_assets
26
- self._transcription_texts = transcription_texts
26
+ self._texts = texts
27
27
  self._validation_set_id = None
28
28
  self._referee = NaiveReferee()
29
29
  self._settings = Settings()
30
30
  self._filters: list[Filter] = []
31
31
  self._time_effort = time_effort
32
32
 
33
- def responses(self, responses_required: int) -> 'TranscriptionOrderBuilder':
34
- """Set the number of responses required per datapoint for the transcription order. Will default to 10."""
33
+ def responses(self, responses_required: int) -> 'SelectWordsOrderBuilder':
34
+ """Set the number of responses required per datapoint for the order. Will default to 10."""
35
35
  self._referee = NaiveReferee(responses=responses_required)
36
36
  return self
37
37
 
38
- def validation_set(self, validation_set_id: str) -> 'TranscriptionOrderBuilder':
39
- """Set the validation set for the transcription order."""
38
+ def validation_set(self, validation_set_id: str) -> 'SelectWordsOrderBuilder':
39
+ """Set the validation set for the order."""
40
40
  self._validation_set_id = validation_set_id
41
41
  return self
42
42
 
43
- def countries(self, country_codes: list[str]) -> 'TranscriptionOrderBuilder':
43
+ def countries(self, country_codes: list[str]) -> 'SelectWordsOrderBuilder':
44
44
  """Set the countries where order will be shown as country codes."""
45
45
  self._filters.append(CountryFilter(country_codes))
46
46
  return self
47
47
 
48
- def languages(self, language_codes: list[str]) -> 'TranscriptionOrderBuilder':
48
+ def languages(self, language_codes: list[str]) -> 'SelectWordsOrderBuilder':
49
49
  """Set the languages where order will be shown as language codes."""
50
50
  self._filters.append(LanguageFilter(language_codes))
51
51
  return self
52
52
 
53
- def wait_for_video_to_finish(self, offset: int = 0) -> 'TranscriptionOrderBuilder':
53
+ def wait_for_video_to_finish(self, offset: int = 0) -> 'SelectWordsOrderBuilder':
54
54
  """Allows labeler to only answer once the video has finished playing.
55
55
  The offset gets added on top. Can be negative to allow answers before the video ends."""
56
56
  self._settings.play_video_until_the_end(offset)
57
57
  return self
58
58
 
59
- def translation(self, disable: bool = False, show_both: bool = False) -> 'TranscriptionOrderBuilder':
59
+ def translation(self, disable: bool = False, show_both: bool = False) -> 'SelectWordsOrderBuilder':
60
60
  """Disable the translation of the order.
61
61
  Only the instruction will be translated.
62
62
 
@@ -84,15 +84,12 @@ class TranscriptionOrderBuilder:
84
84
  return self
85
85
 
86
86
  def run(self, submit: bool = True, disable_link: bool = False) -> 'RapidataOrder':
87
- """Run the transcription order.
87
+ """Run the order.
88
88
 
89
89
  Args:
90
90
  submit (bool): Whether to submit the order. Defaults to True. \
91
91
  Set this to False if you first want to see the order on your dashboard before running it.
92
- disable_link (bool): Whether to disable the printing of the link to the order. Defaults to False.
93
-
94
- Returns:
95
- RapidataOrder: The created transcription order."""
92
+ disable_link (bool): Whether to disable the printing of the link to the order. Defaults to False."""
96
93
 
97
94
  if (self._validation_set_id and MAX_TIME_IN_SECONDS_FOR_ONE_SESSION//self._time_effort - 1 < 1) or (MAX_TIME_IN_SECONDS_FOR_ONE_SESSION//self._time_effort < 1):
98
95
  raise ValueError(f"The Labelers only have {MAX_TIME_IN_SECONDS_FOR_ONE_SESSION} seconds to do the task. \
@@ -106,12 +103,12 @@ class TranscriptionOrderBuilder:
106
103
 
107
104
  order = (self._order_builder
108
105
  .workflow(
109
- TranscriptionWorkflow(
106
+ SelectWordsWorkflow(
110
107
  instruction=self._instruction
111
108
  )
112
109
  )
113
110
  .referee(self._referee)
114
- .media(self._media_assets, metadata=self._transcription_texts)
111
+ .media(self._media_assets, metadata=self._texts)
115
112
  .selections(selection)
116
113
  .settings(self._settings)
117
114
  .filters(self._filters)
@@ -120,36 +117,31 @@ class TranscriptionOrderBuilder:
120
117
  return order
121
118
 
122
119
 
123
- class TranscriptionMediaBuilder:
120
+ class SelectWordsMediaBuilder:
124
121
  def __init__(self, name: str, instruction: str, openapi_service: OpenAPIService):
125
122
  self._openapi_service = openapi_service
126
123
  self._name = name
127
124
  self._instruction = instruction
128
125
  self._media_assets: list[BaseAsset] = []
129
- self._transcription_texts: list[TranscriptionMetadata] = []
130
- self._time_effort = 20
126
+ self._texts: list[SelectWordsMetadata] = []
127
+ self._time_effort = 10
131
128
 
132
- def media(self, media_paths: list[str], transcription_texts: list[str], time_effort: int = 20) -> TranscriptionOrderBuilder:
133
- """Set the media assets for the transcription order by providing the local paths to the audio / video files.
129
+ def media(self, media_paths: list[str], texts: list[str], time_effort: int = 10) -> SelectWordsOrderBuilder:
130
+ """Set the media assets for the order by providing the local paths to the audio / video files.
134
131
 
135
132
  Args:
136
133
  media_paths (list[str]): A local file path.
137
- time_effort (int): Estimated time in seconds to solve one transcription task for the first time. Defaults to 20.
138
-
139
- Returns:
140
- TranscriptionOrderBuilder: The transcription order builder instance.
141
-
142
- Raises:
143
- ValueError: If the media paths are not a list of strings."""
134
+ texts (list[str]): The text will be split up by spaces and the labeler will be able to select the words.
135
+ time_effort (int): Estimated time in seconds to solve one task for the first time. Defaults to 10."""
144
136
 
145
137
  if not isinstance(media_paths, list) or not all(isinstance(path, str) for path in media_paths):
146
138
  raise ValueError("Media paths must be a list of strings, the strings being file paths.")
147
139
 
148
- if not isinstance(transcription_texts, list) or not all(isinstance(text, str) for text in transcription_texts):
149
- raise ValueError("Transcription texts must be a list of strings.")
140
+ if not isinstance(texts, list) or not all(isinstance(text, str) for text in texts):
141
+ raise ValueError("texts must be a list of strings.")
150
142
 
151
- if not len(media_paths) == len(transcription_texts):
152
- raise ValueError("The number of media paths and transcription texts must be the same.")
143
+ if not len(media_paths) == len(texts):
144
+ raise ValueError("The number of media paths and texts must be the same.")
153
145
 
154
146
  invalid_paths: list[str] = []
155
147
  for path in media_paths:
@@ -161,34 +153,34 @@ class TranscriptionMediaBuilder:
161
153
  if invalid_paths:
162
154
  raise FileNotFoundError(f"Could not find the following files: {invalid_paths}")
163
155
 
164
- self._transcription_texts = [TranscriptionMetadata(text) for text in transcription_texts]
156
+ self._texts = [SelectWordsMetadata(text) for text in texts]
165
157
 
166
158
  self._time_effort = time_effort
167
159
  return self._build()
168
160
 
169
- def _build(self) -> TranscriptionOrderBuilder:
161
+ def _build(self) -> SelectWordsOrderBuilder:
170
162
  if not self._media_assets:
171
163
  raise ValueError("Please provide either a text or an media to be shown with the question")
172
- return TranscriptionOrderBuilder(self._name,
164
+ return SelectWordsOrderBuilder(self._name,
173
165
  self._instruction,
174
166
  self._media_assets,
175
- self._transcription_texts,
167
+ self._texts,
176
168
  openapi_service=self._openapi_service,
177
169
  time_effort=self._time_effort)
178
170
 
179
171
 
180
- class TranscriptionInstructionBuilder:
172
+ class SelectWordsInstructionBuilder:
181
173
  def __init__(self, name: str, openapi_service: OpenAPIService):
182
174
  self._openapi_service = openapi_service
183
175
  self._name = name
184
176
  self._instruction = None
185
177
 
186
- def instruction(self, instruction: str) -> TranscriptionMediaBuilder:
187
- """Set the instruction for the transcription order."""
178
+ def instruction(self, instruction: str) -> SelectWordsMediaBuilder:
179
+ """Set the instruction for the order."""
188
180
  self._instruction = instruction
189
181
  return self._build()
190
182
 
191
- def _build(self) -> TranscriptionMediaBuilder:
183
+ def _build(self) -> SelectWordsMediaBuilder:
192
184
  if self._instruction is None:
193
185
  raise ValueError("Instruction is required")
194
- return TranscriptionMediaBuilder(self._name, self._instruction, self._openapi_service)
186
+ return SelectWordsMediaBuilder(self._name, self._instruction, self._openapi_service)
@@ -2,5 +2,5 @@ from .base_workflow import Workflow
2
2
  from .classify_workflow import ClassifyWorkflow
3
3
  from .compare_workflow import CompareWorkflow
4
4
  from .free_text_workflow import FreeTextWorkflow
5
- from .transcription_workflow import TranscriptionWorkflow
5
+ from .select_words_workflow import SelectWordsWorkflow
6
6
  from .evaluation_workflow import EvaluationWorkflow
@@ -4,26 +4,26 @@ from rapidata.api_client.models.transcription_rapid_blueprint import Transcripti
4
4
  from rapidata.rapidata_client.workflow.base_workflow import Workflow
5
5
 
6
6
 
7
- class TranscriptionWorkflow(Workflow):
7
+ class SelectWordsWorkflow(Workflow):
8
8
  """
9
- A workflow for transcription tasks.
9
+ A workflow for select words tasks.
10
10
 
11
- This class represents a transcription workflow where audio or video content
11
+ This class represents a select words workflow where audio or video content
12
12
  is transcribed based on given instructions.
13
13
 
14
14
  Attributes:
15
- _instruction (str): The instruction for the transcription task.
15
+ _instruction (str): The instruction for the select words task.
16
16
 
17
17
  Args:
18
- instruction (str): The instruction to be provided for the transcription task.
18
+ instruction (str): The instruction to be provided for the select words task.
19
19
  """
20
20
 
21
21
  def __init__(self, instruction: str):
22
22
  """
23
- Initialize a TranscriptionWorkflow instance.
23
+ Initialize a SelectWordsWorkflow instance.
24
24
 
25
25
  Args:
26
- instruction (str): The instruction to be provided for the transcription task.
26
+ instruction (str): The instruction to be provided for the select words task.
27
27
  """
28
28
  super().__init__(type="SimpleWorkflowConfig")
29
29
  self._instruction = instruction
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rapidata
3
- Version: 1.8.2
3
+ Version: 1.9.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
@@ -1,4 +1,4 @@
1
- rapidata/__init__.py,sha256=PwuTW_WL75klRHmgTPKVqIVQJg32Uq48TBxxYI6qUvI,621
1
+ rapidata/__init__.py,sha256=5rYiKe2CUYawO0_VQlTPHO-9RIIfH1v2hXUno5n4Zic,617
2
2
  rapidata/api_client/__init__.py,sha256=SpzT3CTlZB6LfQKX2ITN0di_uFITeU8kRFyNFsjTbQM,23921
3
3
  rapidata/api_client/api/__init__.py,sha256=h0wnYolEBVduAU_7YBLFnwHcwXgZg_krSgarsWxz4zs,1061
4
4
  rapidata/api_client/api/campaign_api.py,sha256=DxPFqt9F6c9OpXu_Uxhsrib2NVwnbcZFa3Vkrj7cIuA,40474
@@ -321,25 +321,26 @@ rapidata/api_client/models/workflow_split_model_filter_configs_inner.py,sha256=1
321
321
  rapidata/api_client/models/workflow_state.py,sha256=5LAK1se76RCoozeVB6oxMPb8p_5bhLZJqn7q5fFQWis,850
322
322
  rapidata/api_client/rest.py,sha256=zmCIFQC2l1t-KZcq-TgEm3vco3y_LK6vRm3Q07K-xRI,9423
323
323
  rapidata/api_client_README.md,sha256=2Jqt9GXhr2ZA4S1PpYVkgsrdg2Cc29fnMt_I5V26JOQ,36246
324
- rapidata/rapidata_client/__init__.py,sha256=mmfjHy_GMA7xFU_haNwxjNRaCF505iPXhE4KC2dXObY,841
324
+ rapidata/constants.py,sha256=tv-g6KDuc0v1GtCN5LZFf8VTP1PeV6J1P4OqyhEfUgI,39
325
+ rapidata/rapidata_client/__init__.py,sha256=sPjhwFGNSCDgRJXqF8CvH8XTGQ0kTUbKrJ4y-IUXhQY,837
325
326
  rapidata/rapidata_client/assets/__init__.py,sha256=ctyFS6eSBcmTG69Tzq_f2q1TSEjslstCOVFRP5TBl4Y,273
326
327
  rapidata/rapidata_client/assets/base_asset.py,sha256=B2YWH1NgaeYUYHDW3OPpHM_bqawHbH4EjnRCE2BYwiM,298
327
- rapidata/rapidata_client/assets/media_asset.py,sha256=0XkO7DOff6iq2ybgeS2Ktjj9EKP-btKJnqpaPt0AT3g,2788
328
+ rapidata/rapidata_client/assets/media_asset.py,sha256=vmsin8EdyZcHzxU-Je5mFHsJP0rzVgNDqZxDkp6rRqg,3285
328
329
  rapidata/rapidata_client/assets/multi_asset.py,sha256=l6BysrDYWY13FTAw93cmnHN7HLUMrpG27qwOT7KNeLQ,1666
329
330
  rapidata/rapidata_client/assets/text_asset.py,sha256=Jn9sXAVkniZVjB75L5oP2_xTYMJ79A7HC-ZgowGp_V0,617
330
331
  rapidata/rapidata_client/country_codes/__init__.py,sha256=FB9Dcks44J6C6YBSYmTmNZ71tE130x6NO_3aLJ8fKzQ,40
331
332
  rapidata/rapidata_client/country_codes/country_codes.py,sha256=ePHqeb7y9DWQZAnddBzPx1puYBcrgUjdR2sbFijuFD8,283
332
333
  rapidata/rapidata_client/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
333
- rapidata/rapidata_client/dataset/rapid_builders/__init__.py,sha256=MAYlb0dHc8fdEtIe3N3VjVkgH9DHTE3KEFE0CfOyJ_k,258
334
- rapidata/rapidata_client/dataset/rapid_builders/base_rapid_builder.py,sha256=wRN2jFcF55DXwxN8-Gt6rWDWuL_VNuXC0MZrUTXGBqg,1161
334
+ rapidata/rapidata_client/dataset/rapid_builders/__init__.py,sha256=I5xYZrA7WwH-TgB3eaMrTbL32Tumfk0fNj-MGBBuE8o,255
335
+ rapidata/rapidata_client/dataset/rapid_builders/base_rapid_builder.py,sha256=idzHEG7HPwpBJ8wIQg1XPua5pUy2yZTnn1Hbksz7igY,1152
335
336
  rapidata/rapidata_client/dataset/rapid_builders/classify_rapid_builders.py,sha256=IljXUkLmf38DGt2uGp2ApFTEZCfNN24KMq1Blek9Ma8,5454
336
337
  rapidata/rapidata_client/dataset/rapid_builders/compare_rapid_builders.py,sha256=DAGBz2oGzZw_7-FeTeQXFAwbogBvGWicOmZ9fwL63Aw,4517
337
- rapidata/rapidata_client/dataset/rapid_builders/rapids.py,sha256=WRiHMtAB3-c4RVfuzVa0XHsatfDVDBf1k1-Ba596Y50,1459
338
- rapidata/rapidata_client/dataset/rapid_builders/transcription_rapid_builders.py,sha256=-zwIaR65lfQIVK_qVufJ7QwKbCJM1vBuYnN7mzXBz0Y,4767
338
+ rapidata/rapidata_client/dataset/rapid_builders/rapids.py,sha256=pZthVTXmB7-FGqIiZpqsglIYPYvKY_6MfC6WbHfcs0k,1520
339
+ rapidata/rapidata_client/dataset/rapid_builders/select_words_rapid_builders.py,sha256=r78LO6cY6XBn3-rxDqffKcBzG_Z6sYajmbVMdZOYofs,4146
339
340
  rapidata/rapidata_client/dataset/rapidata_dataset.py,sha256=R7mlummfPdIMcIE6qB1gBWWIuOpUTFtwVlBkOf8Fm60,5224
340
- rapidata/rapidata_client/dataset/rapidata_validation_set.py,sha256=tevW03U9LnzonCgt4fK7UFUYhGJQjtLOVCd8wyMgfI8,11505
341
+ rapidata/rapidata_client/dataset/rapidata_validation_set.py,sha256=qSvsTSdpv4sM7uTRxA7f5RM4Lg0VvkrUEbBgG39KiEM,11662
341
342
  rapidata/rapidata_client/dataset/validation_rapid_parts.py,sha256=uzpOZFqQu8bG6vmjcWWUNJPZsRe28OmnyalRE6ry8tk,2317
342
- rapidata/rapidata_client/dataset/validation_set_builder.py,sha256=ZI2T7gisXnA28QL8I2tCkBIOR1Z5yRcoR7O5ZhMbMzY,12000
343
+ rapidata/rapidata_client/dataset/validation_set_builder.py,sha256=TQUYsOQISKMSFKpddUTiP66mD4TSXGo95jB7QSAqa3I,11971
343
344
  rapidata/rapidata_client/filter/__init__.py,sha256=F3JsMCbAZWH7SNdgaj98ydTqgCCKXKBhLyt9gQ4x6tQ,301
344
345
  rapidata/rapidata_client/filter/age_filter.py,sha256=hncr1zNM_HrO0fCta8h0LgTCB8Ufv_vI5_cGhMb-xr8,478
345
346
  rapidata/rapidata_client/filter/base_filter.py,sha256=nXraj72cumyQjjYoo4MMpnlE0aWjAIOmGakKf0MNqps,135
@@ -348,16 +349,16 @@ rapidata/rapidata_client/filter/country_filter.py,sha256=e7kEVn6tzpX-HkHs_KUawJI
348
349
  rapidata/rapidata_client/filter/gender_filter.py,sha256=AG4JK8eIycp0iM9h21B_cmFBfgE6v9sU-rIFDCHFUeY,472
349
350
  rapidata/rapidata_client/filter/language_filter.py,sha256=_ulaZKO6quKvH7PW-eRv0geab8vFvll96aiY4DSM3sw,743
350
351
  rapidata/rapidata_client/filter/user_score_filter.py,sha256=YtZH0eFvo4SS96-R2PqT6at_qHFDlaztwOFOdpeZe5w,560
351
- rapidata/rapidata_client/metadata/__init__.py,sha256=qMmo4wqScUCAJ6YXRWxvJLmbFA5YRbK39p9_exV1d50,246
352
+ rapidata/rapidata_client/metadata/__init__.py,sha256=H8wjSdk_puZmWhvSXwS2cL2wRWswWaLXiS_aJTC4HlI,243
352
353
  rapidata/rapidata_client/metadata/base_metadata.py,sha256=BJoZT4lRs94lu7PE3__LcsMINHNDVKRKRART-EKzSaw,217
353
354
  rapidata/rapidata_client/metadata/private_text_metadata.py,sha256=VJ_SJwp8OMFZLuUMRWvPeKOySXYJuGr-YgpwuLfTbmo,517
354
355
  rapidata/rapidata_client/metadata/prompt_metadata.py,sha256=W3kG4J53SuVCw9rU2bJYrCnvm7tzRNtLtZo6l48R3Ok,575
355
356
  rapidata/rapidata_client/metadata/public_text_metadata.py,sha256=LTiBQHs6izxQ6-C84d6Pf7lL4ENTDgg__HZnDKvzvMc,511
356
- rapidata/rapidata_client/metadata/transcription_metadata.py,sha256=THtDEVCON4UlcXHmXrjilaOLHys4TrktUOPGWnXaCcc,631
357
+ rapidata/rapidata_client/metadata/select_words_metadata.py,sha256=Z7mxJ1i0EDRUlHpnzaUyBSdybu3waR15L-GFVfCjJos,625
357
358
  rapidata/rapidata_client/order/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
358
- rapidata/rapidata_client/order/rapidata_order.py,sha256=3mIh0pnjReFWDU4mOMsmFXRJffaRZR-PZcoO0lcrztY,4824
359
+ rapidata/rapidata_client/order/rapidata_order.py,sha256=91F4PnNvhlSNwIB328_2R6mt9gINweo9U41rVrk_YPo,4834
359
360
  rapidata/rapidata_client/order/rapidata_order_builder.py,sha256=Eu97BSjPuiyu0U-b-GTCIterU5h_cXBLd3cmC1vQI5E,16699
360
- rapidata/rapidata_client/rapidata_client.py,sha256=Sr8RhQfG_K7FZgouBduhF4TJemYa2TKQUcVl-BXLYig,9127
361
+ rapidata/rapidata_client/rapidata_client.py,sha256=5UNgnlwEIptyoRNMgJMJB7h1x23aCkx6pMPyX_raUi4,9114
361
362
  rapidata/rapidata_client/referee/__init__.py,sha256=E1VODxTjoQRnxzdgMh3aRlDLouxe1nWuvozEHXD2gq4,150
362
363
  rapidata/rapidata_client/referee/base_referee.py,sha256=bMy7cw0a-pGNbFu6u_1_Jplu0A483Ubj4oDQzh8vu8k,493
363
364
  rapidata/rapidata_client/referee/early_stopping_referee.py,sha256=V9c2Iau40-aPM06FYW5qwpJGa-usTCiZixoCCQWkrxI,1929
@@ -373,23 +374,23 @@ rapidata/rapidata_client/settings/__init__.py,sha256=DTsffohaZICEmBRpokyWAd6GNcf
373
374
  rapidata/rapidata_client/settings/feature_flags.py,sha256=aKnxl1kv4cC3TaHV-xfqYlvL3ATIB2-H0VKl1rUt8jQ,4658
374
375
  rapidata/rapidata_client/settings/settings.py,sha256=ncLvEuIYWkUnAi8J3PQoG7WoAOZn-G3WZ0LWyrwt-QM,4556
375
376
  rapidata/rapidata_client/simple_builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
376
- rapidata/rapidata_client/simple_builders/simple_classification_builders.py,sha256=jqHQY8cKQuZnVcx2oCPaVyd2p6jQ421Iw9AzbnL7vI8,11634
377
- rapidata/rapidata_client/simple_builders/simple_compare_builders.py,sha256=JpXoURsrGouBNJMqqmd35bgbmKcgCTVIXEYZNekfS5o,12237
378
- rapidata/rapidata_client/simple_builders/simple_free_text_builders.py,sha256=udJWDo_8h-lglxxEEl-FpufPtCZ9Fs9AMZX9Q24CmCA,8171
379
- rapidata/rapidata_client/simple_builders/simple_transcription_builders.py,sha256=J0d53f2zDOpRwXNtgVVAgQ_n6srUzC4BHjXxjTYQGHc,9580
380
- rapidata/rapidata_client/workflow/__init__.py,sha256=xWuzAhBnbcUFfWcgYrzj8ZYLSOXyFtgfepgMrf0hNhU,290
377
+ rapidata/rapidata_client/simple_builders/simple_classification_builders.py,sha256=DTRSGwYk1keM1ijRhNtkoy3bv0fIJqd7ynhsh6iswuk,12013
378
+ rapidata/rapidata_client/simple_builders/simple_compare_builders.py,sha256=IYtJMZConHjZElyHFg6AnvhZ6DL5O3DTLTxtnuCwGqQ,12257
379
+ rapidata/rapidata_client/simple_builders/simple_free_text_builders.py,sha256=-FE3q0Ci98kbKpX5T3zxHjo4_QIRWiQI6iJBvbXW0wo,8180
380
+ rapidata/rapidata_client/simple_builders/simple_select_words_builders.py,sha256=Jx8jMomS-7v_-yGVSQOnsEYBFEIq7aGTvf50aKBlR80,9088
381
+ rapidata/rapidata_client/workflow/__init__.py,sha256=IAZInqi6bJcyl1k5-whfuMZcKnC-UR_whv7R5gQwhS0,287
381
382
  rapidata/rapidata_client/workflow/base_workflow.py,sha256=iDBeklFwOIbMuJHA7t-x_cwxfygJCG0SoXLBB7R53fQ,1395
382
383
  rapidata/rapidata_client/workflow/classify_workflow.py,sha256=NkyyBrlCDqYVQaCARR9EHYuREEtXond69kD6jbzcN3M,1713
383
384
  rapidata/rapidata_client/workflow/compare_workflow.py,sha256=nqrgtohlXBfgHh_cRPOFAlwdI8wVc7PUsH0FDM7wIjg,1431
384
385
  rapidata/rapidata_client/workflow/evaluation_workflow.py,sha256=IBQoVFxOaeCDIBfaaboytWk8hNX9QH_xikkXt3lu9GY,619
385
386
  rapidata/rapidata_client/workflow/free_text_workflow.py,sha256=VaypoG3yKgsbtVyqxta3W28eDwdnGebCy2xDWPCBMyo,1566
386
- rapidata/rapidata_client/workflow/transcription_workflow.py,sha256=_KDtGCdRhauJm3jQHpwhY-Hq79CLg5I8q2RgOz5lo1g,1404
387
+ rapidata/rapidata_client/workflow/select_words_workflow.py,sha256=9PNsXM1LZ9LOV0RLPTgBBlceOfEn2olkOpEUeQR4hTY,1395
387
388
  rapidata/service/__init__.py,sha256=s9bS1AJZaWIhLtJX_ZA40_CK39rAAkwdAmymTMbeWl4,68
388
389
  rapidata/service/credential_manager.py,sha256=4jiJaX4hnRKoU91-WnpLytOTvSWApSa8ezN8fGAp0dg,7944
389
390
  rapidata/service/local_file_service.py,sha256=pgorvlWcx52Uh3cEG6VrdMK_t__7dacQ_5AnfY14BW8,877
390
391
  rapidata/service/openapi_service.py,sha256=Q1_anQhDFOfgucLJkNyTnqdX9qdJQUQlYIktbe-dOZM,2581
391
392
  rapidata/service/token_manager.py,sha256=JZ5YbR5Di8dO3H4kK11d0kzWlrXxjgCmeNkHA4AapCM,6425
392
- rapidata-1.8.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
393
- rapidata-1.8.2.dist-info/METADATA,sha256=Dt4Yf9uPyf4CInvI6f_DQZM0_k7kkHjQH2eaHvNZ9B8,1033
394
- rapidata-1.8.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
395
- rapidata-1.8.2.dist-info/RECORD,,
393
+ rapidata-1.9.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
394
+ rapidata-1.9.0.dist-info/METADATA,sha256=9VQ5AMstoDVAfzwhlTdXwIfoZAYuqUDanglxyIZcM3c,1033
395
+ rapidata-1.9.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
396
+ rapidata-1.9.0.dist-info/RECORD,,