rapidata 1.8.3__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.
- rapidata/__init__.py +2 -2
- rapidata/rapidata_client/__init__.py +2 -2
- rapidata/rapidata_client/assets/media_asset.py +38 -29
- rapidata/rapidata_client/dataset/rapid_builders/__init__.py +1 -1
- rapidata/rapidata_client/dataset/rapid_builders/base_rapid_builder.py +5 -5
- rapidata/rapidata_client/dataset/rapid_builders/rapids.py +7 -6
- rapidata/rapidata_client/dataset/rapid_builders/{transcription_rapid_builders.py → select_words_rapid_builders.py} +35 -43
- rapidata/rapidata_client/dataset/rapidata_validation_set.py +6 -0
- rapidata/rapidata_client/dataset/validation_set_builder.py +15 -15
- rapidata/rapidata_client/metadata/__init__.py +1 -1
- rapidata/rapidata_client/metadata/{transcription_metadata.py → select_words_metadata.py} +4 -4
- rapidata/rapidata_client/order/rapidata_order.py +1 -1
- rapidata/rapidata_client/rapidata_client.py +5 -5
- rapidata/rapidata_client/simple_builders/simple_classification_builders.py +9 -0
- rapidata/rapidata_client/simple_builders/simple_compare_builders.py +1 -1
- rapidata/rapidata_client/simple_builders/{simple_transcription_builders.py → simple_select_words_builders.py} +37 -45
- rapidata/rapidata_client/workflow/__init__.py +1 -1
- rapidata/rapidata_client/workflow/{transcription_workflow.py → select_words_workflow.py} +7 -7
- {rapidata-1.8.3.dist-info → rapidata-1.9.0.dist-info}/METADATA +1 -1
- {rapidata-1.8.3.dist-info → rapidata-1.9.0.dist-info}/RECORD +22 -22
- {rapidata-1.8.3.dist-info → rapidata-1.9.0.dist-info}/LICENSE +0 -0
- {rapidata-1.8.3.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
|
-
|
|
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
|
-
|
|
17
|
+
SelectWordsMetadata,
|
|
18
18
|
Settings,
|
|
19
19
|
FeatureFlags, # remove next major version
|
|
20
20
|
CountryCodes,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from .rapidata_client import RapidataClient
|
|
2
2
|
from .workflow import (
|
|
3
3
|
ClassifyWorkflow,
|
|
4
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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}
|
|
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
|
-
|
|
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
|
|
66
|
+
raise ValueError("Custom name can only be set for URLs.")
|
|
63
67
|
return self
|
|
64
68
|
|
|
65
|
-
|
|
66
|
-
def get_image_bytes(image_url: str) -> bytes:
|
|
69
|
+
def _get_media_bytes(self, url: str) -> bytes:
|
|
67
70
|
"""
|
|
68
|
-
Downloads
|
|
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
|
-
|
|
73
|
-
|
|
74
|
+
url: URL of the media file
|
|
75
|
+
|
|
74
76
|
Returns:
|
|
75
|
-
bytes:
|
|
77
|
+
bytes: Media data
|
|
76
78
|
|
|
77
79
|
Raises:
|
|
78
|
-
ValueError: If
|
|
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(
|
|
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
|
-
|
|
85
|
-
if not content_type.startswith(
|
|
86
|
-
raise ValueError(
|
|
87
|
-
|
|
88
|
-
|
|
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 .
|
|
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,
|
|
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
|
|
27
|
-
"""Creates a
|
|
26
|
+
def select_words_rapid(self):
|
|
27
|
+
"""Creates a select words rapid.
|
|
28
28
|
|
|
29
29
|
Returns:
|
|
30
|
-
|
|
30
|
+
SelectWordsRapidInstructionBuilder: A builder for creating the select words instruction.
|
|
31
31
|
"""
|
|
32
|
-
return
|
|
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
|
|
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
|
|
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
|
|
25
|
-
"""A transcription rapid. This represents the instruction, truths, asset, transcription and strict grading that will be given to the
|
|
26
|
-
def __init__(self, instruction: str, truths: list[int], asset: MediaAsset,
|
|
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.
|
|
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
|
|
2
|
+
from rapidata.rapidata_client.dataset.rapid_builders.rapids import SelectWordsRapid
|
|
3
3
|
|
|
4
|
-
class
|
|
5
|
-
"""Final builder class for
|
|
4
|
+
class SelectWordsRapidBuilder:
|
|
5
|
+
"""Final builder class for rapid.
|
|
6
6
|
|
|
7
|
-
This class handles the final construction of a
|
|
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,
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
|
|
33
|
+
text=self._text,
|
|
42
34
|
strict_grading=self._strict_grading
|
|
43
35
|
)
|
|
44
36
|
|
|
45
|
-
class
|
|
46
|
-
"""Builder class for the truths of the
|
|
37
|
+
class SelectWordsRapidTruthsBuilder:
|
|
38
|
+
"""Builder class for the truths of the rapid.
|
|
47
39
|
|
|
48
|
-
This adds the truths to the
|
|
40
|
+
This adds the truths to the rapid.
|
|
49
41
|
"""
|
|
50
|
-
def __init__(self, instruction: str, media: MediaAsset,
|
|
42
|
+
def __init__(self, instruction: str, media: MediaAsset, text: str):
|
|
51
43
|
self._instruction = instruction
|
|
52
44
|
self._media = media
|
|
53
|
-
self.
|
|
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
|
|
49
|
+
"""Set the truths for the rapid.
|
|
58
50
|
|
|
59
51
|
Args:
|
|
60
|
-
truths (list[int]): The correct answers for the
|
|
61
|
-
Each integer represents the index of the correct word in the
|
|
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
|
|
65
|
+
return SelectWordsRapidBuilder(
|
|
74
66
|
instruction=self._instruction,
|
|
75
67
|
truths=self._truths,
|
|
76
68
|
asset=self._media,
|
|
77
|
-
|
|
69
|
+
text=self._text
|
|
78
70
|
)
|
|
79
71
|
|
|
80
|
-
class
|
|
81
|
-
"""Builder class for the asset of the
|
|
72
|
+
class SelectWordsRapidAssetBuilder:
|
|
73
|
+
"""Builder class for the asset of the rapid.
|
|
82
74
|
|
|
83
|
-
This adds the asset to the
|
|
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,
|
|
89
|
-
"""Set the media asset for the
|
|
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
|
|
93
|
-
|
|
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.
|
|
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
|
|
96
|
+
return SelectWordsRapidTruthsBuilder(
|
|
105
97
|
instruction=self._instruction,
|
|
106
98
|
media=self._asset,
|
|
107
|
-
|
|
99
|
+
text=self._text
|
|
108
100
|
)
|
|
109
101
|
|
|
110
|
-
class
|
|
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
|
|
107
|
+
"""Set the instruction for the rapid.
|
|
116
108
|
|
|
117
109
|
Args:
|
|
118
|
-
instruction (str): The instruction for the
|
|
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
|
|
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
|
-
|
|
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,
|
|
100
|
-
self.
|
|
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
|
|
240
|
+
def add_select_words_rapid(
|
|
241
241
|
self,
|
|
242
242
|
asset: MediaAsset | TextAsset,
|
|
243
243
|
question: str,
|
|
244
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
263
|
+
ValueError: If a correct word is not found in the select words.
|
|
264
264
|
"""
|
|
265
|
-
self.
|
|
265
|
+
self._add_select_words_rapid(asset, question, select_words, truths, strict_grading, metadata)
|
|
266
266
|
|
|
267
267
|
return self
|
|
268
268
|
|
|
269
|
-
def
|
|
269
|
+
def _add_select_words_rapid(
|
|
270
270
|
self,
|
|
271
271
|
asset: MediaAsset | TextAsset,
|
|
272
272
|
question: str,
|
|
273
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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(
|
|
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 .
|
|
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
|
|
7
|
+
class SelectWordsMetadata(Metadata):
|
|
8
8
|
|
|
9
|
-
def __init__(self,
|
|
9
|
+
def __init__(self, select_words: str, identifier: str = "transcription"):
|
|
10
10
|
super().__init__(identifier=identifier)
|
|
11
11
|
self.identifier = identifier
|
|
12
|
-
self.
|
|
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.
|
|
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.
|
|
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
|
|
198
|
-
"""Create a new
|
|
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
|
-
|
|
204
|
+
SelectWordsInstructionBuilder: A SelectWordsInstructionBuilder instance.
|
|
205
205
|
"""
|
|
206
|
-
return
|
|
206
|
+
return SelectWordsInstructionBuilder(name=name, openapi_service=self.openapi_service)
|
|
207
207
|
|
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -3,60 +3,60 @@ 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
|
|
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
|
|
12
|
+
from rapidata.rapidata_client.metadata import SelectWordsMetadata
|
|
13
13
|
from rapidata.rapidata_client.settings import Settings, TranslationBehaviour
|
|
14
14
|
|
|
15
|
-
class
|
|
15
|
+
class SelectWordsOrderBuilder:
|
|
16
16
|
def __init__(self,
|
|
17
17
|
name: str,
|
|
18
18
|
instruction: str,
|
|
19
19
|
media_assets: list[BaseAsset],
|
|
20
|
-
|
|
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.
|
|
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) -> '
|
|
34
|
-
"""Set the number of responses required per datapoint for the
|
|
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) -> '
|
|
39
|
-
"""Set the validation set for the
|
|
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]) -> '
|
|
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]) -> '
|
|
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) -> '
|
|
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) -> '
|
|
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
|
|
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
|
-
|
|
106
|
+
SelectWordsWorkflow(
|
|
110
107
|
instruction=self._instruction
|
|
111
108
|
)
|
|
112
109
|
)
|
|
113
110
|
.referee(self._referee)
|
|
114
|
-
.media(self._media_assets, metadata=self.
|
|
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
|
|
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.
|
|
130
|
-
self._time_effort =
|
|
126
|
+
self._texts: list[SelectWordsMetadata] = []
|
|
127
|
+
self._time_effort = 10
|
|
131
128
|
|
|
132
|
-
def media(self, media_paths: list[str],
|
|
133
|
-
"""Set the media assets for the
|
|
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
|
-
|
|
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(
|
|
149
|
-
raise ValueError("
|
|
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(
|
|
152
|
-
raise ValueError("The number of media paths and
|
|
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.
|
|
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) ->
|
|
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
|
|
164
|
+
return SelectWordsOrderBuilder(self._name,
|
|
173
165
|
self._instruction,
|
|
174
166
|
self._media_assets,
|
|
175
|
-
self.
|
|
167
|
+
self._texts,
|
|
176
168
|
openapi_service=self._openapi_service,
|
|
177
169
|
time_effort=self._time_effort)
|
|
178
170
|
|
|
179
171
|
|
|
180
|
-
class
|
|
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) ->
|
|
187
|
-
"""Set the instruction for the
|
|
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) ->
|
|
183
|
+
def _build(self) -> SelectWordsMediaBuilder:
|
|
192
184
|
if self._instruction is None:
|
|
193
185
|
raise ValueError("Instruction is required")
|
|
194
|
-
return
|
|
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 .
|
|
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
|
|
7
|
+
class SelectWordsWorkflow(Workflow):
|
|
8
8
|
"""
|
|
9
|
-
A workflow for
|
|
9
|
+
A workflow for select words tasks.
|
|
10
10
|
|
|
11
|
-
This class represents a
|
|
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
|
|
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
|
|
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
|
|
23
|
+
Initialize a SelectWordsWorkflow instance.
|
|
24
24
|
|
|
25
25
|
Args:
|
|
26
|
-
instruction (str): The instruction to be provided for the
|
|
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,4 +1,4 @@
|
|
|
1
|
-
rapidata/__init__.py,sha256=
|
|
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
|
|
@@ -322,25 +322,25 @@ rapidata/api_client/models/workflow_state.py,sha256=5LAK1se76RCoozeVB6oxMPb8p_5b
|
|
|
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
324
|
rapidata/constants.py,sha256=tv-g6KDuc0v1GtCN5LZFf8VTP1PeV6J1P4OqyhEfUgI,39
|
|
325
|
-
rapidata/rapidata_client/__init__.py,sha256=
|
|
325
|
+
rapidata/rapidata_client/__init__.py,sha256=sPjhwFGNSCDgRJXqF8CvH8XTGQ0kTUbKrJ4y-IUXhQY,837
|
|
326
326
|
rapidata/rapidata_client/assets/__init__.py,sha256=ctyFS6eSBcmTG69Tzq_f2q1TSEjslstCOVFRP5TBl4Y,273
|
|
327
327
|
rapidata/rapidata_client/assets/base_asset.py,sha256=B2YWH1NgaeYUYHDW3OPpHM_bqawHbH4EjnRCE2BYwiM,298
|
|
328
|
-
rapidata/rapidata_client/assets/media_asset.py,sha256=
|
|
328
|
+
rapidata/rapidata_client/assets/media_asset.py,sha256=vmsin8EdyZcHzxU-Je5mFHsJP0rzVgNDqZxDkp6rRqg,3285
|
|
329
329
|
rapidata/rapidata_client/assets/multi_asset.py,sha256=l6BysrDYWY13FTAw93cmnHN7HLUMrpG27qwOT7KNeLQ,1666
|
|
330
330
|
rapidata/rapidata_client/assets/text_asset.py,sha256=Jn9sXAVkniZVjB75L5oP2_xTYMJ79A7HC-ZgowGp_V0,617
|
|
331
331
|
rapidata/rapidata_client/country_codes/__init__.py,sha256=FB9Dcks44J6C6YBSYmTmNZ71tE130x6NO_3aLJ8fKzQ,40
|
|
332
332
|
rapidata/rapidata_client/country_codes/country_codes.py,sha256=ePHqeb7y9DWQZAnddBzPx1puYBcrgUjdR2sbFijuFD8,283
|
|
333
333
|
rapidata/rapidata_client/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
334
|
-
rapidata/rapidata_client/dataset/rapid_builders/__init__.py,sha256=
|
|
335
|
-
rapidata/rapidata_client/dataset/rapid_builders/base_rapid_builder.py,sha256=
|
|
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
|
|
336
336
|
rapidata/rapidata_client/dataset/rapid_builders/classify_rapid_builders.py,sha256=IljXUkLmf38DGt2uGp2ApFTEZCfNN24KMq1Blek9Ma8,5454
|
|
337
337
|
rapidata/rapidata_client/dataset/rapid_builders/compare_rapid_builders.py,sha256=DAGBz2oGzZw_7-FeTeQXFAwbogBvGWicOmZ9fwL63Aw,4517
|
|
338
|
-
rapidata/rapidata_client/dataset/rapid_builders/rapids.py,sha256=
|
|
339
|
-
rapidata/rapidata_client/dataset/rapid_builders/
|
|
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
|
|
340
340
|
rapidata/rapidata_client/dataset/rapidata_dataset.py,sha256=R7mlummfPdIMcIE6qB1gBWWIuOpUTFtwVlBkOf8Fm60,5224
|
|
341
|
-
rapidata/rapidata_client/dataset/rapidata_validation_set.py,sha256=
|
|
341
|
+
rapidata/rapidata_client/dataset/rapidata_validation_set.py,sha256=qSvsTSdpv4sM7uTRxA7f5RM4Lg0VvkrUEbBgG39KiEM,11662
|
|
342
342
|
rapidata/rapidata_client/dataset/validation_rapid_parts.py,sha256=uzpOZFqQu8bG6vmjcWWUNJPZsRe28OmnyalRE6ry8tk,2317
|
|
343
|
-
rapidata/rapidata_client/dataset/validation_set_builder.py,sha256=
|
|
343
|
+
rapidata/rapidata_client/dataset/validation_set_builder.py,sha256=TQUYsOQISKMSFKpddUTiP66mD4TSXGo95jB7QSAqa3I,11971
|
|
344
344
|
rapidata/rapidata_client/filter/__init__.py,sha256=F3JsMCbAZWH7SNdgaj98ydTqgCCKXKBhLyt9gQ4x6tQ,301
|
|
345
345
|
rapidata/rapidata_client/filter/age_filter.py,sha256=hncr1zNM_HrO0fCta8h0LgTCB8Ufv_vI5_cGhMb-xr8,478
|
|
346
346
|
rapidata/rapidata_client/filter/base_filter.py,sha256=nXraj72cumyQjjYoo4MMpnlE0aWjAIOmGakKf0MNqps,135
|
|
@@ -349,16 +349,16 @@ rapidata/rapidata_client/filter/country_filter.py,sha256=e7kEVn6tzpX-HkHs_KUawJI
|
|
|
349
349
|
rapidata/rapidata_client/filter/gender_filter.py,sha256=AG4JK8eIycp0iM9h21B_cmFBfgE6v9sU-rIFDCHFUeY,472
|
|
350
350
|
rapidata/rapidata_client/filter/language_filter.py,sha256=_ulaZKO6quKvH7PW-eRv0geab8vFvll96aiY4DSM3sw,743
|
|
351
351
|
rapidata/rapidata_client/filter/user_score_filter.py,sha256=YtZH0eFvo4SS96-R2PqT6at_qHFDlaztwOFOdpeZe5w,560
|
|
352
|
-
rapidata/rapidata_client/metadata/__init__.py,sha256=
|
|
352
|
+
rapidata/rapidata_client/metadata/__init__.py,sha256=H8wjSdk_puZmWhvSXwS2cL2wRWswWaLXiS_aJTC4HlI,243
|
|
353
353
|
rapidata/rapidata_client/metadata/base_metadata.py,sha256=BJoZT4lRs94lu7PE3__LcsMINHNDVKRKRART-EKzSaw,217
|
|
354
354
|
rapidata/rapidata_client/metadata/private_text_metadata.py,sha256=VJ_SJwp8OMFZLuUMRWvPeKOySXYJuGr-YgpwuLfTbmo,517
|
|
355
355
|
rapidata/rapidata_client/metadata/prompt_metadata.py,sha256=W3kG4J53SuVCw9rU2bJYrCnvm7tzRNtLtZo6l48R3Ok,575
|
|
356
356
|
rapidata/rapidata_client/metadata/public_text_metadata.py,sha256=LTiBQHs6izxQ6-C84d6Pf7lL4ENTDgg__HZnDKvzvMc,511
|
|
357
|
-
rapidata/rapidata_client/metadata/
|
|
357
|
+
rapidata/rapidata_client/metadata/select_words_metadata.py,sha256=Z7mxJ1i0EDRUlHpnzaUyBSdybu3waR15L-GFVfCjJos,625
|
|
358
358
|
rapidata/rapidata_client/order/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
359
|
-
rapidata/rapidata_client/order/rapidata_order.py,sha256=
|
|
359
|
+
rapidata/rapidata_client/order/rapidata_order.py,sha256=91F4PnNvhlSNwIB328_2R6mt9gINweo9U41rVrk_YPo,4834
|
|
360
360
|
rapidata/rapidata_client/order/rapidata_order_builder.py,sha256=Eu97BSjPuiyu0U-b-GTCIterU5h_cXBLd3cmC1vQI5E,16699
|
|
361
|
-
rapidata/rapidata_client/rapidata_client.py,sha256=
|
|
361
|
+
rapidata/rapidata_client/rapidata_client.py,sha256=5UNgnlwEIptyoRNMgJMJB7h1x23aCkx6pMPyX_raUi4,9114
|
|
362
362
|
rapidata/rapidata_client/referee/__init__.py,sha256=E1VODxTjoQRnxzdgMh3aRlDLouxe1nWuvozEHXD2gq4,150
|
|
363
363
|
rapidata/rapidata_client/referee/base_referee.py,sha256=bMy7cw0a-pGNbFu6u_1_Jplu0A483Ubj4oDQzh8vu8k,493
|
|
364
364
|
rapidata/rapidata_client/referee/early_stopping_referee.py,sha256=V9c2Iau40-aPM06FYW5qwpJGa-usTCiZixoCCQWkrxI,1929
|
|
@@ -374,23 +374,23 @@ rapidata/rapidata_client/settings/__init__.py,sha256=DTsffohaZICEmBRpokyWAd6GNcf
|
|
|
374
374
|
rapidata/rapidata_client/settings/feature_flags.py,sha256=aKnxl1kv4cC3TaHV-xfqYlvL3ATIB2-H0VKl1rUt8jQ,4658
|
|
375
375
|
rapidata/rapidata_client/settings/settings.py,sha256=ncLvEuIYWkUnAi8J3PQoG7WoAOZn-G3WZ0LWyrwt-QM,4556
|
|
376
376
|
rapidata/rapidata_client/simple_builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
377
|
-
rapidata/rapidata_client/simple_builders/simple_classification_builders.py,sha256=
|
|
378
|
-
rapidata/rapidata_client/simple_builders/simple_compare_builders.py,sha256=
|
|
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
379
|
rapidata/rapidata_client/simple_builders/simple_free_text_builders.py,sha256=-FE3q0Ci98kbKpX5T3zxHjo4_QIRWiQI6iJBvbXW0wo,8180
|
|
380
|
-
rapidata/rapidata_client/simple_builders/
|
|
381
|
-
rapidata/rapidata_client/workflow/__init__.py,sha256=
|
|
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
|
|
382
382
|
rapidata/rapidata_client/workflow/base_workflow.py,sha256=iDBeklFwOIbMuJHA7t-x_cwxfygJCG0SoXLBB7R53fQ,1395
|
|
383
383
|
rapidata/rapidata_client/workflow/classify_workflow.py,sha256=NkyyBrlCDqYVQaCARR9EHYuREEtXond69kD6jbzcN3M,1713
|
|
384
384
|
rapidata/rapidata_client/workflow/compare_workflow.py,sha256=nqrgtohlXBfgHh_cRPOFAlwdI8wVc7PUsH0FDM7wIjg,1431
|
|
385
385
|
rapidata/rapidata_client/workflow/evaluation_workflow.py,sha256=IBQoVFxOaeCDIBfaaboytWk8hNX9QH_xikkXt3lu9GY,619
|
|
386
386
|
rapidata/rapidata_client/workflow/free_text_workflow.py,sha256=VaypoG3yKgsbtVyqxta3W28eDwdnGebCy2xDWPCBMyo,1566
|
|
387
|
-
rapidata/rapidata_client/workflow/
|
|
387
|
+
rapidata/rapidata_client/workflow/select_words_workflow.py,sha256=9PNsXM1LZ9LOV0RLPTgBBlceOfEn2olkOpEUeQR4hTY,1395
|
|
388
388
|
rapidata/service/__init__.py,sha256=s9bS1AJZaWIhLtJX_ZA40_CK39rAAkwdAmymTMbeWl4,68
|
|
389
389
|
rapidata/service/credential_manager.py,sha256=4jiJaX4hnRKoU91-WnpLytOTvSWApSa8ezN8fGAp0dg,7944
|
|
390
390
|
rapidata/service/local_file_service.py,sha256=pgorvlWcx52Uh3cEG6VrdMK_t__7dacQ_5AnfY14BW8,877
|
|
391
391
|
rapidata/service/openapi_service.py,sha256=Q1_anQhDFOfgucLJkNyTnqdX9qdJQUQlYIktbe-dOZM,2581
|
|
392
392
|
rapidata/service/token_manager.py,sha256=JZ5YbR5Di8dO3H4kK11d0kzWlrXxjgCmeNkHA4AapCM,6425
|
|
393
|
-
rapidata-1.
|
|
394
|
-
rapidata-1.
|
|
395
|
-
rapidata-1.
|
|
396
|
-
rapidata-1.
|
|
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,,
|
|
File without changes
|
|
File without changes
|