most-client 1.0.23__py3-none-any.whl → 1.0.25__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.
- most/_constrants.py +7 -0
- most/api.py +76 -30
- most/async_api.py +78 -31
- {most_client-1.0.23.dist-info → most_client-1.0.25.dist-info}/METADATA +2 -2
- most_client-1.0.25.dist-info/RECORD +11 -0
- {most_client-1.0.23.dist-info → most_client-1.0.25.dist-info}/WHEEL +1 -1
- most_client-1.0.23.dist-info/RECORD +0 -10
- {most_client-1.0.23.dist-info → most_client-1.0.25.dist-info}/top_level.txt +0 -0
- {most_client-1.0.23.dist-info → most_client-1.0.25.dist-info}/zip-safe +0 -0
most/_constrants.py
ADDED
most/api.py
CHANGED
@@ -2,13 +2,12 @@ import io
|
|
2
2
|
import os
|
3
3
|
import uuid
|
4
4
|
from pathlib import Path
|
5
|
-
from typing import Dict, List, Optional
|
6
|
-
|
5
|
+
from typing import Dict, List, Optional, Union
|
7
6
|
import json5
|
8
|
-
import
|
7
|
+
import httpx
|
9
8
|
from adaptix import Retort
|
10
9
|
from pydub import AudioSegment
|
11
|
-
|
10
|
+
from most._constrants import DEFAULT_MAX_RETRIES, DEFAULT_RETRY_DELAY
|
12
11
|
from most.score_calculation import ScoreCalculation
|
13
12
|
from most.types import (
|
14
13
|
Audio,
|
@@ -28,7 +27,13 @@ class MostClient(object):
|
|
28
27
|
def __init__(self,
|
29
28
|
client_id=None,
|
30
29
|
client_secret=None,
|
31
|
-
model_id=None
|
30
|
+
model_id=None,
|
31
|
+
|
32
|
+
base_url: str | httpx.URL | None = None,
|
33
|
+
timeout: Union[float, httpx.Timeout] = 1e10,
|
34
|
+
max_retries: int = DEFAULT_MAX_RETRIES,
|
35
|
+
# retry_delay: float = DEFAULT_RETRY_DELAY,
|
36
|
+
http_client: httpx.Client | None = None):
|
32
37
|
super(MostClient, self).__init__()
|
33
38
|
self.client_id = client_id
|
34
39
|
self.client_secret = client_secret
|
@@ -46,7 +51,19 @@ class MostClient(object):
|
|
46
51
|
else:
|
47
52
|
self.save_credentials()
|
48
53
|
|
49
|
-
|
54
|
+
if base_url is None:
|
55
|
+
base_url = os.environ.get("MOST_BASE_URL")
|
56
|
+
if base_url is None:
|
57
|
+
base_url = f"https://api.the-most.ai/api/external"
|
58
|
+
|
59
|
+
if http_client is None:
|
60
|
+
http_client = httpx.Client(base_url=base_url,
|
61
|
+
timeout=timeout,
|
62
|
+
follow_redirects=True,
|
63
|
+
transport=httpx.HTTPTransport(retries=max_retries))
|
64
|
+
# self.max_retries = max_retries
|
65
|
+
# self.retry_delay = retry_delay
|
66
|
+
self.session = http_client
|
50
67
|
self.access_token = None
|
51
68
|
self.model_id = model_id
|
52
69
|
self.score_modifier = None
|
@@ -89,7 +106,7 @@ class MostClient(object):
|
|
89
106
|
return client
|
90
107
|
|
91
108
|
def refresh_access_token(self):
|
92
|
-
resp = self.session.post("
|
109
|
+
resp = self.session.post("/access_token",
|
93
110
|
json={"client_id": self.client_id,
|
94
111
|
"client_secret": self.client_secret},
|
95
112
|
timeout=None)
|
@@ -114,6 +131,24 @@ class MostClient(object):
|
|
114
131
|
raise RuntimeError(resp.json()['message'] if resp.headers.get("Content-Type") == "application/json" else "Something went wrong.")
|
115
132
|
return resp
|
116
133
|
|
134
|
+
def put(self, url, **kwargs):
|
135
|
+
if self.access_token is None:
|
136
|
+
self.refresh_access_token()
|
137
|
+
headers = kwargs.pop("headers", {})
|
138
|
+
headers.update({"Authorization": "Bearer %s" % self.access_token})
|
139
|
+
resp = self.session.put(url,
|
140
|
+
headers=headers,
|
141
|
+
timeout=None,
|
142
|
+
**kwargs)
|
143
|
+
if resp.status_code == 401:
|
144
|
+
self.refresh_access_token()
|
145
|
+
return self.put(url,
|
146
|
+
headers=headers,
|
147
|
+
**kwargs)
|
148
|
+
if resp.status_code >= 400:
|
149
|
+
raise RuntimeError(resp.json()['message'] if resp.headers.get("Content-Type") == "application/json" else "Something went wrong.")
|
150
|
+
return resp
|
151
|
+
|
117
152
|
def post(self, url,
|
118
153
|
data=None,
|
119
154
|
json=None,
|
@@ -140,18 +175,18 @@ class MostClient(object):
|
|
140
175
|
return resp
|
141
176
|
|
142
177
|
def upload_text(self, text: str) -> Text:
|
143
|
-
resp = self.post(f"
|
178
|
+
resp = self.post(f"/{self.client_id}/upload_text",
|
144
179
|
files={"text": text})
|
145
180
|
return self.retort.load(resp.json(), Text)
|
146
181
|
|
147
182
|
def upload_dialog(self, dialog: Dialog) -> DialogResult:
|
148
|
-
resp = self.post(f"
|
183
|
+
resp = self.post(f"/{self.client_id}/upload_dialog",
|
149
184
|
json={"dialog": dialog})
|
150
185
|
return self.retort.load(resp.json(), DialogResult)
|
151
186
|
|
152
187
|
def upload_audio(self, audio_path) -> Audio:
|
153
188
|
with open(audio_path, 'rb') as f:
|
154
|
-
resp = self.post(f"
|
189
|
+
resp = self.post(f"/{self.client_id}/upload",
|
155
190
|
files={"audio_file": f})
|
156
191
|
return self.retort.load(resp.json(), Audio)
|
157
192
|
|
@@ -162,26 +197,26 @@ class MostClient(object):
|
|
162
197
|
f.seek(0)
|
163
198
|
if audio_name is None:
|
164
199
|
audio_name = uuid.uuid4().hex + ".mp3"
|
165
|
-
resp = self.post(f"
|
200
|
+
resp = self.post(f"/{self.client_id}/upload",
|
166
201
|
files={"audio_file": (audio_name, f, 'audio/mp3')})
|
167
202
|
return self.retort.load(resp.json(), Audio)
|
168
203
|
|
169
204
|
def upload_audio_url(self, audio_url) -> Audio:
|
170
|
-
resp = self.post(f"
|
205
|
+
resp = self.post(f"/{self.client_id}/upload_url",
|
171
206
|
json={"audio_url": audio_url})
|
172
207
|
return self.retort.load(resp.json(), Audio)
|
173
208
|
|
174
209
|
def list_audios(self,
|
175
210
|
offset: int = 0,
|
176
211
|
limit: int = 10) -> List[Audio]:
|
177
|
-
resp = self.get(f"
|
212
|
+
resp = self.get(f"/{self.client_id}/list?offset={offset}&limit={limit}")
|
178
213
|
audio_list = resp.json()
|
179
214
|
return self.retort.load(audio_list, List[Audio])
|
180
215
|
|
181
216
|
def list_texts(self,
|
182
217
|
offset: int = 0,
|
183
218
|
limit: int = 10) -> List[Text]:
|
184
|
-
resp = self.get(f"
|
219
|
+
resp = self.get(f"/{self.client_id}/list_texts?offset={offset}&limit={limit}")
|
185
220
|
texts_list = resp.json()
|
186
221
|
return self.retort.load(texts_list, List[Text])
|
187
222
|
|
@@ -189,7 +224,7 @@ class MostClient(object):
|
|
189
224
|
if not is_valid_id(self.model_id):
|
190
225
|
raise RuntimeError("Please choose valid model to apply. [try list_models()]")
|
191
226
|
|
192
|
-
resp = self.get(f"
|
227
|
+
resp = self.get(f"/{self.client_id}/model/{self.model_id}/script")
|
193
228
|
return self.retort.load(resp.json(), Script)
|
194
229
|
|
195
230
|
def get_score_modifier(self):
|
@@ -197,13 +232,13 @@ class MostClient(object):
|
|
197
232
|
if not is_valid_id(self.model_id):
|
198
233
|
raise RuntimeError("Please choose valid model to apply. [try list_models()]")
|
199
234
|
|
200
|
-
resp = self.get(f"
|
235
|
+
resp = self.get(f"/{self.client_id}/model/{self.model_id}/score_mapping")
|
201
236
|
score_mapping = self.retort.load(resp.json(), List[ScriptScoreMapping])
|
202
237
|
self.score_modifier = ScoreCalculation(score_mapping)
|
203
238
|
return self.score_modifier
|
204
239
|
|
205
240
|
def list_models(self):
|
206
|
-
resp = self.get("
|
241
|
+
resp = self.get("/list_models")
|
207
242
|
return [self.with_model(model['model'])
|
208
243
|
for model in resp.json()]
|
209
244
|
|
@@ -215,7 +250,7 @@ class MostClient(object):
|
|
215
250
|
if not is_valid_id(audio_id):
|
216
251
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
217
252
|
|
218
|
-
resp = self.post(f"
|
253
|
+
resp = self.post(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/apply")
|
219
254
|
result = self.retort.load(resp.json(), Result)
|
220
255
|
if modify_scores:
|
221
256
|
result = self.score_modifier.modify(result)
|
@@ -229,7 +264,7 @@ class MostClient(object):
|
|
229
264
|
if not is_valid_id(text_id):
|
230
265
|
raise RuntimeError("Please use valid text_id. [try text.id from list_texts()]")
|
231
266
|
|
232
|
-
resp = self.post(f"
|
267
|
+
resp = self.post(f"/{self.client_id}/text/{text_id}/model/{self.model_id}/apply")
|
233
268
|
result = self.retort.load(resp.json(), Result)
|
234
269
|
if modify_scores:
|
235
270
|
result = self.score_modifier.modify(result)
|
@@ -243,7 +278,7 @@ class MostClient(object):
|
|
243
278
|
if not is_valid_id(audio_id):
|
244
279
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
245
280
|
|
246
|
-
resp = self.post(f"
|
281
|
+
resp = self.post(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/apply_async")
|
247
282
|
result = self.retort.load(resp.json(), Result)
|
248
283
|
if modify_scores:
|
249
284
|
result = self.score_modifier.modify(result)
|
@@ -257,7 +292,7 @@ class MostClient(object):
|
|
257
292
|
if not is_valid_id(text_id):
|
258
293
|
raise RuntimeError("Please use valid text_id. [try audio.id from list_texts()]")
|
259
294
|
|
260
|
-
resp = self.post(f"
|
295
|
+
resp = self.post(f"/{self.client_id}/text/{text_id}/model/{self.model_id}/apply_async")
|
261
296
|
result = self.retort.load(resp.json(), Result)
|
262
297
|
if modify_scores:
|
263
298
|
result = self.score_modifier.modify(result)
|
@@ -270,7 +305,7 @@ class MostClient(object):
|
|
270
305
|
if not is_valid_id(audio_id):
|
271
306
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
272
307
|
|
273
|
-
resp = self.post(f"
|
308
|
+
resp = self.post(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/apply_status")
|
274
309
|
return self.retort.load(resp.json(), JobStatus)
|
275
310
|
|
276
311
|
def fetch_results(self, audio_id,
|
@@ -281,7 +316,7 @@ class MostClient(object):
|
|
281
316
|
if not is_valid_id(audio_id):
|
282
317
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
283
318
|
|
284
|
-
resp = self.get(f"
|
319
|
+
resp = self.get(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/results")
|
285
320
|
result = self.retort.load(resp.json(), Result)
|
286
321
|
if modify_scores:
|
287
322
|
result = self.score_modifier.modify(result)
|
@@ -294,7 +329,7 @@ class MostClient(object):
|
|
294
329
|
if not is_valid_id(audio_id):
|
295
330
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
296
331
|
|
297
|
-
resp = self.get(f"
|
332
|
+
resp = self.get(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/text")
|
298
333
|
return self.retort.load(resp.json(), Result)
|
299
334
|
|
300
335
|
def fetch_dialog(self, audio_id) -> DialogResult:
|
@@ -304,7 +339,18 @@ class MostClient(object):
|
|
304
339
|
if not is_valid_id(audio_id):
|
305
340
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
306
341
|
|
307
|
-
resp = self.get(f"
|
342
|
+
resp = self.get(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/dialog")
|
343
|
+
return self.retort.load(resp.json(), DialogResult)
|
344
|
+
|
345
|
+
def update_dialog(self, audio_id, dialog: Dialog) -> DialogResult:
|
346
|
+
if not is_valid_id(self.model_id):
|
347
|
+
raise RuntimeError("Please choose valid model to apply. [try list_models()]")
|
348
|
+
|
349
|
+
if not is_valid_id(audio_id):
|
350
|
+
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
351
|
+
|
352
|
+
resp = self.put(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/dialog",
|
353
|
+
json={"dialog": dialog.to_dict()})
|
308
354
|
return self.retort.load(resp.json(), DialogResult)
|
309
355
|
|
310
356
|
def export(self, audio_ids: List[str],
|
@@ -316,7 +362,7 @@ class MostClient(object):
|
|
316
362
|
if not is_valid_id(self.model_id):
|
317
363
|
raise RuntimeError("Please choose valid model to apply. [try list_models()]")
|
318
364
|
|
319
|
-
resp = self.get(f"
|
365
|
+
resp = self.get(f"/{self.client_id}/model/{self.model_id}/export",
|
320
366
|
params={'audio_ids': ','.join(audio_ids),
|
321
367
|
'aggregated_by': aggregated_by,
|
322
368
|
'aggregation_title': aggregation_title})
|
@@ -328,7 +374,7 @@ class MostClient(object):
|
|
328
374
|
if not is_valid_id(audio_id):
|
329
375
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
330
376
|
|
331
|
-
resp = self.post(f"
|
377
|
+
resp = self.post(f"/{self.client_id}/audio/{audio_id}/info",
|
332
378
|
json={
|
333
379
|
"data": data,
|
334
380
|
})
|
@@ -338,7 +384,7 @@ class MostClient(object):
|
|
338
384
|
if not is_valid_id(audio_id):
|
339
385
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
340
386
|
|
341
|
-
resp = self.get(f"
|
387
|
+
resp = self.get(f"/{self.client_id}/audio/{audio_id}/info")
|
342
388
|
return self.retort.load(resp.json(), StoredAudioData)
|
343
389
|
|
344
390
|
def __call__(self, audio_path: Path,
|
@@ -366,7 +412,7 @@ class MostClient(object):
|
|
366
412
|
return audio
|
367
413
|
|
368
414
|
def index_audio(self, audio_id: str) -> None:
|
369
|
-
resp = self.post(f"
|
415
|
+
resp = self.post(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/indexing")
|
370
416
|
if resp.status_code >= 400:
|
371
417
|
raise RuntimeError("Audio can't be indexed")
|
372
418
|
return None
|
@@ -375,7 +421,7 @@ class MostClient(object):
|
|
375
421
|
query: str,
|
376
422
|
filter: SearchParams,
|
377
423
|
limit: int = 10) -> List[Audio]:
|
378
|
-
resp = self.post(f"
|
424
|
+
resp = self.post(f"/{self.client_id}/model/{self.model_id}/search",
|
379
425
|
json={
|
380
426
|
"query": query,
|
381
427
|
"filter": filter.to_dict(),
|
most/async_api.py
CHANGED
@@ -2,13 +2,12 @@ import io
|
|
2
2
|
import os
|
3
3
|
import uuid
|
4
4
|
from pathlib import Path
|
5
|
-
from typing import Dict, List, Optional
|
6
|
-
|
5
|
+
from typing import Dict, List, Optional, Union
|
7
6
|
import httpx
|
8
7
|
import json5
|
9
8
|
from adaptix import Retort
|
10
9
|
from pydub import AudioSegment
|
11
|
-
|
10
|
+
from most._constrants import DEFAULT_MAX_RETRIES
|
12
11
|
from most.score_calculation import ScoreCalculation
|
13
12
|
from most.types import (
|
14
13
|
Audio,
|
@@ -28,7 +27,13 @@ class AsyncMostClient(object):
|
|
28
27
|
def __init__(self,
|
29
28
|
client_id=None,
|
30
29
|
client_secret=None,
|
31
|
-
model_id=None
|
30
|
+
model_id=None,
|
31
|
+
|
32
|
+
base_url: str | httpx.URL | None = None,
|
33
|
+
timeout: Union[float, httpx.Timeout] = 1e10,
|
34
|
+
max_retries: int = DEFAULT_MAX_RETRIES,
|
35
|
+
# retry_delay: float = 0,
|
36
|
+
http_client: httpx.AsyncClient | None = None):
|
32
37
|
super(AsyncMostClient, self).__init__()
|
33
38
|
self.client_id = client_id
|
34
39
|
self.client_secret = client_secret
|
@@ -46,7 +51,19 @@ class AsyncMostClient(object):
|
|
46
51
|
else:
|
47
52
|
self.save_credentials()
|
48
53
|
|
49
|
-
|
54
|
+
if base_url is None:
|
55
|
+
base_url = os.environ.get("MOST_BASE_URL")
|
56
|
+
if base_url is None:
|
57
|
+
base_url = f"https://api.the-most.ai/api/external"
|
58
|
+
|
59
|
+
if http_client is None:
|
60
|
+
http_client = httpx.AsyncClient(base_url=base_url,
|
61
|
+
timeout=timeout,
|
62
|
+
follow_redirects=True,
|
63
|
+
transport=httpx.AsyncHTTPTransport(retries=max_retries))
|
64
|
+
# self.max_retries = max_retries
|
65
|
+
# self.retry_delay = retry_delay
|
66
|
+
self.session = http_client
|
50
67
|
self.access_token = None
|
51
68
|
self.model_id = model_id
|
52
69
|
self.score_modifier: Optional[ScoreCalculation] = None
|
@@ -97,7 +114,7 @@ class AsyncMostClient(object):
|
|
97
114
|
return client
|
98
115
|
|
99
116
|
async def refresh_access_token(self):
|
100
|
-
resp = await self.session.post("
|
117
|
+
resp = await self.session.post("/access_token",
|
101
118
|
json={"client_id": self.client_id,
|
102
119
|
"client_secret": self.client_secret})
|
103
120
|
access_token = resp.json()
|
@@ -117,9 +134,28 @@ class AsyncMostClient(object):
|
|
117
134
|
return await self.get(url,
|
118
135
|
headers=headers,
|
119
136
|
**kwargs)
|
137
|
+
|
138
|
+
if resp.headers.get("Content-Type") == "application/json":
|
139
|
+
raise RuntimeError(resp.json()['message'])
|
140
|
+
resp.raise_for_status()
|
141
|
+
return resp
|
142
|
+
|
143
|
+
async def put(self, url, **kwargs):
|
144
|
+
if self.access_token is None:
|
145
|
+
await self.refresh_access_token()
|
146
|
+
headers = kwargs.pop("headers", {})
|
147
|
+
headers.update({"Authorization": "Bearer %s" % self.access_token})
|
148
|
+
resp = await self.session.put(url,
|
149
|
+
headers=headers,
|
150
|
+
timeout=None,
|
151
|
+
**kwargs)
|
152
|
+
if resp.status_code == 401:
|
153
|
+
await self.refresh_access_token()
|
154
|
+
return await self.put(url,
|
155
|
+
headers=headers,
|
156
|
+
**kwargs)
|
120
157
|
if resp.status_code >= 400:
|
121
|
-
raise RuntimeError(resp.json()['message'] if resp.headers.get(
|
122
|
-
"Content-Type") == "application/json" else "Something went wrong.")
|
158
|
+
raise RuntimeError(resp.json()['message'] if resp.headers.get("Content-Type") == "application/json" else "Something went wrong.")
|
123
159
|
return resp
|
124
160
|
|
125
161
|
async def post(self, url,
|
@@ -150,7 +186,7 @@ class AsyncMostClient(object):
|
|
150
186
|
|
151
187
|
async def upload_audio(self, audio_path) -> Audio:
|
152
188
|
with open(audio_path, mode='rb') as f:
|
153
|
-
resp = await self.post(f"
|
189
|
+
resp = await self.post(f"/{self.client_id}/upload",
|
154
190
|
files={"audio_file": f})
|
155
191
|
return self.retort.load(resp.json(), Audio)
|
156
192
|
|
@@ -161,36 +197,36 @@ class AsyncMostClient(object):
|
|
161
197
|
f.seek(0)
|
162
198
|
if audio_name is None:
|
163
199
|
audio_name = uuid.uuid4().hex + ".mp3"
|
164
|
-
resp = await self.post(f"
|
200
|
+
resp = await self.post(f"/{self.client_id}/upload",
|
165
201
|
files={"audio_file": (audio_name, f, 'audio/mp3')})
|
166
202
|
return self.retort.load(resp.json(), Audio)
|
167
203
|
|
168
204
|
async def upload_text(self, text: str) -> Text:
|
169
|
-
resp = await self.post(f"
|
205
|
+
resp = await self.post(f"/{self.client_id}/upload_text",
|
170
206
|
json={"text": text})
|
171
207
|
return self.retort.load(resp.json(), Text)
|
172
208
|
|
173
209
|
async def upload_dialog(self, dialog: Dialog) -> DialogResult:
|
174
|
-
resp = await self.post(f"
|
210
|
+
resp = await self.post(f"/{self.client_id}/upload_dialog",
|
175
211
|
json={"dialog": dialog})
|
176
212
|
return self.retort.load(resp.json(), DialogResult)
|
177
213
|
|
178
214
|
async def upload_audio_url(self, audio_url) -> Audio:
|
179
|
-
resp = await self.post(f"
|
215
|
+
resp = await self.post(f"/{self.client_id}/upload_url",
|
180
216
|
json={"audio_url": audio_url})
|
181
217
|
return self.retort.load(resp.json(), Audio)
|
182
218
|
|
183
219
|
async def list_audios(self,
|
184
220
|
offset: int = 0,
|
185
221
|
limit: int = 10) -> List[Audio]:
|
186
|
-
resp = await self.get(f"
|
222
|
+
resp = await self.get(f"/{self.client_id}/list?offset={offset}&limit={limit}")
|
187
223
|
audio_list = resp.json()
|
188
224
|
return self.retort.load(audio_list, List[Audio])
|
189
225
|
|
190
226
|
async def list_texts(self,
|
191
227
|
offset: int = 0,
|
192
228
|
limit: int = 10) -> List[Text]:
|
193
|
-
resp = await self.get(f"
|
229
|
+
resp = await self.get(f"/{self.client_id}/list_texts?offset={offset}&limit={limit}")
|
194
230
|
texts_list = resp.json()
|
195
231
|
return self.retort.load(texts_list, List[Text])
|
196
232
|
|
@@ -198,7 +234,7 @@ class AsyncMostClient(object):
|
|
198
234
|
if not is_valid_id(self.model_id):
|
199
235
|
raise RuntimeError("Please choose valid model to apply. [try list_models()]")
|
200
236
|
|
201
|
-
resp = await self.get(f"
|
237
|
+
resp = await self.get(f"/{self.client_id}/model/{self.model_id}/script")
|
202
238
|
return self.retort.load(resp.json(), Script)
|
203
239
|
|
204
240
|
async def get_score_modifier(self):
|
@@ -206,13 +242,13 @@ class AsyncMostClient(object):
|
|
206
242
|
if not is_valid_id(self.model_id):
|
207
243
|
raise RuntimeError("Please choose valid model to apply. [try list_models()]")
|
208
244
|
|
209
|
-
resp = await self.get(f"
|
245
|
+
resp = await self.get(f"/{self.client_id}/model/{self.model_id}/score_mapping")
|
210
246
|
score_mapping = self.retort.load(resp.json(), List[ScriptScoreMapping])
|
211
247
|
self.score_modifier = ScoreCalculation(score_mapping)
|
212
248
|
return self.score_modifier
|
213
249
|
|
214
250
|
async def list_models(self):
|
215
|
-
resp = await self.get("
|
251
|
+
resp = await self.get("/list_models")
|
216
252
|
return [self.with_model(model['model'])
|
217
253
|
for model in resp.json()]
|
218
254
|
|
@@ -224,7 +260,7 @@ class AsyncMostClient(object):
|
|
224
260
|
if not is_valid_id(audio_id):
|
225
261
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
226
262
|
|
227
|
-
resp = await self.post(f"
|
263
|
+
resp = await self.post(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/apply")
|
228
264
|
result = self.retort.load(resp.json(), Result)
|
229
265
|
if modify_scores:
|
230
266
|
result = self.score_modifier.modify(result)
|
@@ -238,7 +274,7 @@ class AsyncMostClient(object):
|
|
238
274
|
if not is_valid_id(text_id):
|
239
275
|
raise RuntimeError("Please use valid text_id. [try text.id from list_texts()]")
|
240
276
|
|
241
|
-
resp = await self.post(f"
|
277
|
+
resp = await self.post(f"/{self.client_id}/text/{text_id}/model/{self.model_id}/apply")
|
242
278
|
result = self.retort.load(resp.json(), Result)
|
243
279
|
if modify_scores:
|
244
280
|
result = self.score_modifier.modify(result)
|
@@ -252,7 +288,7 @@ class AsyncMostClient(object):
|
|
252
288
|
if not is_valid_id(audio_id):
|
253
289
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
254
290
|
|
255
|
-
resp = await self.post(f"
|
291
|
+
resp = await self.post(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/apply_async")
|
256
292
|
result = self.retort.load(resp.json(), Result)
|
257
293
|
if modify_scores:
|
258
294
|
result = self.score_modifier.modify(result)
|
@@ -266,7 +302,7 @@ class AsyncMostClient(object):
|
|
266
302
|
if not is_valid_id(text_id):
|
267
303
|
raise RuntimeError("Please use valid text_id. [try audio.id from list_texts()]")
|
268
304
|
|
269
|
-
resp = await self.post(f"
|
305
|
+
resp = await self.post(f"/{self.client_id}/text/{text_id}/model/{self.model_id}/apply_async")
|
270
306
|
result = self.retort.load(resp.json(), Result)
|
271
307
|
if modify_scores:
|
272
308
|
result = self.score_modifier.modify(result)
|
@@ -279,7 +315,7 @@ class AsyncMostClient(object):
|
|
279
315
|
if not is_valid_id(audio_id):
|
280
316
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
281
317
|
|
282
|
-
resp = await self.post(f"
|
318
|
+
resp = await self.post(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/apply_status")
|
283
319
|
return self.retort.load(resp.json(), JobStatus)
|
284
320
|
|
285
321
|
async def fetch_results(self, audio_id,
|
@@ -290,7 +326,7 @@ class AsyncMostClient(object):
|
|
290
326
|
if not is_valid_id(audio_id):
|
291
327
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
292
328
|
|
293
|
-
resp = await self.get(f"
|
329
|
+
resp = await self.get(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/results")
|
294
330
|
result = self.retort.load(resp.json(), Result)
|
295
331
|
if modify_scores:
|
296
332
|
result = self.score_modifier.modify(result)
|
@@ -303,7 +339,7 @@ class AsyncMostClient(object):
|
|
303
339
|
if not is_valid_id(audio_id):
|
304
340
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
305
341
|
|
306
|
-
resp = await self.get(f"
|
342
|
+
resp = await self.get(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/text")
|
307
343
|
return self.retort.load(resp.json(), Result)
|
308
344
|
|
309
345
|
async def fetch_dialog(self, audio_id) -> DialogResult:
|
@@ -313,7 +349,18 @@ class AsyncMostClient(object):
|
|
313
349
|
if not is_valid_id(audio_id):
|
314
350
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
315
351
|
|
316
|
-
resp = await self.get(f"
|
352
|
+
resp = await self.get(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/dialog")
|
353
|
+
return self.retort.load(resp.json(), DialogResult)
|
354
|
+
|
355
|
+
async def update_dialog(self, audio_id, dialog: Dialog) -> DialogResult:
|
356
|
+
if not is_valid_id(self.model_id):
|
357
|
+
raise RuntimeError("Please choose valid model to apply. [try list_models()]")
|
358
|
+
|
359
|
+
if not is_valid_id(audio_id):
|
360
|
+
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
361
|
+
|
362
|
+
resp = await self.put(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/dialog",
|
363
|
+
json={"dialog": dialog.to_dict()})
|
317
364
|
return self.retort.load(resp.json(), DialogResult)
|
318
365
|
|
319
366
|
async def export(self, audio_ids: List[str],
|
@@ -325,7 +372,7 @@ class AsyncMostClient(object):
|
|
325
372
|
if not is_valid_id(self.model_id):
|
326
373
|
raise RuntimeError("Please choose valid model to apply. [try list_models()]")
|
327
374
|
|
328
|
-
resp = await self.get(f"
|
375
|
+
resp = await self.get(f"/{self.client_id}/model/{self.model_id}/export",
|
329
376
|
params={'audio_ids': ','.join(audio_ids),
|
330
377
|
"aggregated_by": aggregated_by,
|
331
378
|
"aggregation_title": aggregation_title})
|
@@ -334,7 +381,7 @@ class AsyncMostClient(object):
|
|
334
381
|
async def store_info(self,
|
335
382
|
audio_id: str,
|
336
383
|
data: Dict[str, str]):
|
337
|
-
resp = await self.post(f"
|
384
|
+
resp = await self.post(f"/{self.client_id}/audio/{audio_id}/info",
|
338
385
|
json={
|
339
386
|
"data": data,
|
340
387
|
})
|
@@ -343,7 +390,7 @@ class AsyncMostClient(object):
|
|
343
390
|
async def fetch_info(self, audio_id: str) -> Dict[str, str]:
|
344
391
|
if not is_valid_id(audio_id):
|
345
392
|
raise RuntimeError("Please use valid audio_id. [try audio.id from list_audios()]")
|
346
|
-
resp = await self.get(f"
|
393
|
+
resp = await self.get(f"/{self.client_id}/audio/{audio_id}/info")
|
347
394
|
return self.retort.load(resp.json(), StoredAudioData)
|
348
395
|
|
349
396
|
async def __call__(self, audio_path: Path,
|
@@ -371,7 +418,7 @@ class AsyncMostClient(object):
|
|
371
418
|
return audio
|
372
419
|
|
373
420
|
async def index_audio(self, audio_id: str) -> None:
|
374
|
-
resp = await self.post(f"
|
421
|
+
resp = await self.post(f"/{self.client_id}/audio/{audio_id}/model/{self.model_id}/indexing")
|
375
422
|
if resp.status_code >= 400:
|
376
423
|
raise RuntimeError("Audio can't be indexed")
|
377
424
|
return None
|
@@ -380,7 +427,7 @@ class AsyncMostClient(object):
|
|
380
427
|
query: str,
|
381
428
|
filter: SearchParams,
|
382
429
|
limit: int = 10) -> List[Audio]:
|
383
|
-
resp = await self.post(f"
|
430
|
+
resp = await self.post(f"/{self.client_id}/model/{self.model_id}/search",
|
384
431
|
json={
|
385
432
|
"query": query,
|
386
433
|
"filter": filter.to_dict(),
|
@@ -0,0 +1,11 @@
|
|
1
|
+
most/__init__.py,sha256=62uFFeM_1VVR83K3bTYWK3PEoqnmFCy9aWYerQ6U4Ds,67
|
2
|
+
most/_constrants.py,sha256=SlHKcBoXwe_sPzk8tdbb7lqhQz-Bfo__FhSoeFWodZE,217
|
3
|
+
most/api.py,sha256=t4RqDp-dJUfMayv_0FtBD8yKaGVZpnixCc7D7-UFSKY,17658
|
4
|
+
most/async_api.py,sha256=dBZIrzyPfstFMysxVNfrQdd4WDabBIsWMu2ogLsnPb4,18676
|
5
|
+
most/score_calculation.py,sha256=1XU1LfIH5LSCwAbAaKkr-EjH5qOTXrJKOUvhCCawka4,1054
|
6
|
+
most/types.py,sha256=Qgyv261J8b1cfbmeITz1C9QgkoCMGQQd_L4t4M3dd6M,3603
|
7
|
+
most_client-1.0.25.dist-info/METADATA,sha256=RmwkJHqjnOd8hyYX4Za8puXebVgR0Ehq1wo0ODUI2m8,1027
|
8
|
+
most_client-1.0.25.dist-info/WHEEL,sha256=DK49LOLCYiurdXXOXwGJm6U4DkHkg4lcxjhqwRa0CP4,91
|
9
|
+
most_client-1.0.25.dist-info/top_level.txt,sha256=2g5fk02LKkM1hV3pVVti_LQ60TToLBcR2zQ3JEKGVk8,5
|
10
|
+
most_client-1.0.25.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
11
|
+
most_client-1.0.25.dist-info/RECORD,,
|
@@ -1,10 +0,0 @@
|
|
1
|
-
most/__init__.py,sha256=62uFFeM_1VVR83K3bTYWK3PEoqnmFCy9aWYerQ6U4Ds,67
|
2
|
-
most/api.py,sha256=Fp9MeADwnjwf8_BYbleIKB0gFfsK3GNsNZDHRnqgOms,16256
|
3
|
-
most/async_api.py,sha256=7kFpsU6yCAeEjOroXL-t_m1RIOwLqmMyPq9tPhoUIjw,17243
|
4
|
-
most/score_calculation.py,sha256=1XU1LfIH5LSCwAbAaKkr-EjH5qOTXrJKOUvhCCawka4,1054
|
5
|
-
most/types.py,sha256=Qgyv261J8b1cfbmeITz1C9QgkoCMGQQd_L4t4M3dd6M,3603
|
6
|
-
most_client-1.0.23.dist-info/METADATA,sha256=pBQkXH2Ogl8Ot9SWv8gLnmB8r7j1t74eY3X6oCoC63M,1027
|
7
|
-
most_client-1.0.23.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
8
|
-
most_client-1.0.23.dist-info/top_level.txt,sha256=2g5fk02LKkM1hV3pVVti_LQ60TToLBcR2zQ3JEKGVk8,5
|
9
|
-
most_client-1.0.23.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
10
|
-
most_client-1.0.23.dist-info/RECORD,,
|
File without changes
|
File without changes
|