avartha-python-sdk 0.0.4__py3-none-any.whl → 0.0.6__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.
- avartha/_config.py +25 -10
- avartha/_realtime_asr.py +9 -1
- avartha/_speech_http.py +7 -1
- avartha/_speech_resources.py +47 -9
- avartha/client.py +12 -0
- avartha/elevenlabs.py +1 -0
- avartha/openai.py +1 -0
- avartha/types/realtime/realtime_reasoning_effort.py +3 -1
- {avartha_python_sdk-0.0.4.dist-info → avartha_python_sdk-0.0.6.dist-info}/METADATA +6 -5
- {avartha_python_sdk-0.0.4.dist-info → avartha_python_sdk-0.0.6.dist-info}/RECORD +14 -14
- {avartha_python_sdk-0.0.4.dist-info → avartha_python_sdk-0.0.6.dist-info}/WHEEL +0 -0
- {avartha_python_sdk-0.0.4.dist-info → avartha_python_sdk-0.0.6.dist-info}/licenses/LICENSE +0 -0
- {avartha_python_sdk-0.0.4.dist-info → avartha_python_sdk-0.0.6.dist-info}/licenses/THIRD_PARTY_NOTICES +0 -0
- {avartha_python_sdk-0.0.4.dist-info → avartha_python_sdk-0.0.6.dist-info}/top_level.txt +0 -0
avartha/_config.py
CHANGED
|
@@ -8,12 +8,28 @@ from urllib.parse import urlsplit, urlunsplit
|
|
|
8
8
|
|
|
9
9
|
import httpx
|
|
10
10
|
|
|
11
|
-
Tier = Literal["serverless"
|
|
11
|
+
Tier = Literal["serverless"]
|
|
12
12
|
DEFAULT_BASE_URL = "https://platform.preview.avartha.ai"
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ConfigurationError(ValueError):
|
|
16
|
-
"""Missing credentials or an invalid service URL."""
|
|
16
|
+
"""Missing credentials, an unsupported tier, or an invalid service URL."""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def validate_tier(tier: Tier) -> None:
|
|
20
|
+
if tier != "serverless":
|
|
21
|
+
raise ConfigurationError(
|
|
22
|
+
"Only tier='serverless' is supported. Dedicated capacity is unavailable."
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def reject_dedicated_url(value: str) -> str:
|
|
27
|
+
"""Reject the dedicated inference route, including behind a proxy prefix."""
|
|
28
|
+
if re.search(r"(?:^|/)inference/dedicated(?:/|$)", httpx.URL(value).path):
|
|
29
|
+
raise ConfigurationError(
|
|
30
|
+
"Dedicated capacity is unavailable. Use a serverless inference URL."
|
|
31
|
+
)
|
|
32
|
+
return value
|
|
17
33
|
|
|
18
34
|
|
|
19
35
|
def api_key(value: str | None) -> str:
|
|
@@ -41,12 +57,13 @@ def http_url(value: str) -> str:
|
|
|
41
57
|
or (parts.port is not None and not 1 <= parts.port <= 65535)
|
|
42
58
|
):
|
|
43
59
|
raise ValueError("Invalid URL authority")
|
|
44
|
-
|
|
60
|
+
normalized = str(httpx.URL(value)).rstrip("/")
|
|
45
61
|
except (ValueError, httpx.InvalidURL):
|
|
46
62
|
raise ConfigurationError(
|
|
47
63
|
"Use an absolute http(s) base URL without credentials, query, fragment, "
|
|
48
64
|
"whitespace, or backslashes."
|
|
49
65
|
) from None
|
|
66
|
+
return reject_dedicated_url(normalized)
|
|
50
67
|
|
|
51
68
|
|
|
52
69
|
def platform_url(value: str | None = None) -> str:
|
|
@@ -60,20 +77,18 @@ def platform_url(value: str | None = None) -> str:
|
|
|
60
77
|
|
|
61
78
|
|
|
62
79
|
def openai_url(root: str | None = None, tier: Tier = "serverless") -> str:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return f"{platform_url(root)}/inference/{tier}/openai/v1"
|
|
80
|
+
validate_tier(tier)
|
|
81
|
+
return f"{platform_url(root)}/inference/serverless/openai/v1"
|
|
66
82
|
|
|
67
83
|
|
|
68
84
|
def elevenlabs_url(
|
|
69
85
|
value: str | None = None, *, root: str | None = None, tier: Tier = "serverless"
|
|
70
86
|
) -> str:
|
|
87
|
+
validate_tier(tier)
|
|
71
88
|
override = value if value is not None else os.getenv("AVARTHA_ELEVENLABS_BASE_URL")
|
|
72
89
|
if override is not None:
|
|
73
90
|
return http_url(override)
|
|
74
|
-
|
|
75
|
-
raise ConfigurationError("tier must be 'serverless' or 'dedicated'.")
|
|
76
|
-
return f"{platform_url(root)}/inference/{tier}/elevenlabs"
|
|
91
|
+
return f"{platform_url(root)}/inference/serverless/elevenlabs"
|
|
77
92
|
|
|
78
93
|
|
|
79
94
|
def websocket_url(value: str) -> str:
|
|
@@ -147,4 +162,4 @@ def websocket_override(value: str) -> str:
|
|
|
147
162
|
"websocket_base_url must be the service base before /realtime; "
|
|
148
163
|
"the SDK appends /realtime when connecting."
|
|
149
164
|
)
|
|
150
|
-
return not_vendor_host(normalized, field="websocket_base_url")
|
|
165
|
+
return not_vendor_host(reject_dedicated_url(normalized), field="websocket_base_url")
|
avartha/_realtime_asr.py
CHANGED
|
@@ -7,7 +7,7 @@ import json
|
|
|
7
7
|
import logging
|
|
8
8
|
from collections.abc import Callable
|
|
9
9
|
from enum import Enum
|
|
10
|
-
from typing import Any, Required, TypedDict, cast
|
|
10
|
+
from typing import Any, Literal, Required, TypedDict, cast
|
|
11
11
|
|
|
12
12
|
from websockets.asyncio.client import ClientConnection
|
|
13
13
|
|
|
@@ -45,6 +45,7 @@ class RealtimeEvents(str, Enum): # noqa: UP042 - preserve the upstream str() re
|
|
|
45
45
|
COMMITTED_TRANSCRIPT = "committed_transcript"
|
|
46
46
|
COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS = "committed_transcript_with_timestamps"
|
|
47
47
|
COMMITTED_TRANSCRIPT_ENTITIES = "committed_transcript_entities"
|
|
48
|
+
WARNING = "warning"
|
|
48
49
|
ERROR = "error"
|
|
49
50
|
AUTH_ERROR = "auth_error"
|
|
50
51
|
QUOTA_EXCEEDED = "quota_exceeded"
|
|
@@ -69,9 +70,15 @@ class _SharedOptions(TypedDict, total=False):
|
|
|
69
70
|
vad_threshold: float
|
|
70
71
|
min_speech_duration_ms: int
|
|
71
72
|
min_silence_duration_ms: int
|
|
73
|
+
# Avartha turn controls require VAD; availability is validated by the server.
|
|
74
|
+
turn_model: Literal["silence", "smart_turn_v3"]
|
|
75
|
+
turn_threshold: float
|
|
72
76
|
language_code: str
|
|
73
77
|
secondary_languages: list[str]
|
|
74
78
|
include_timestamps: bool
|
|
79
|
+
# Avartha extensions: diarization also requires include_timestamps=True.
|
|
80
|
+
diarize: bool
|
|
81
|
+
include_logprobs: bool
|
|
75
82
|
include_language_detection: bool
|
|
76
83
|
keyterms: list[str]
|
|
77
84
|
no_verbatim: bool
|
|
@@ -105,6 +112,7 @@ _NON_ERRORS = {
|
|
|
105
112
|
RealtimeEvents.COMMITTED_TRANSCRIPT,
|
|
106
113
|
RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS,
|
|
107
114
|
RealtimeEvents.COMMITTED_TRANSCRIPT_ENTITIES,
|
|
115
|
+
RealtimeEvents.WARNING,
|
|
108
116
|
RealtimeEvents.ERROR,
|
|
109
117
|
}
|
|
110
118
|
|
avartha/_speech_http.py
CHANGED
|
@@ -5,7 +5,7 @@ import email.utils
|
|
|
5
5
|
import json
|
|
6
6
|
import random
|
|
7
7
|
import time
|
|
8
|
-
from collections.abc import Mapping
|
|
8
|
+
from collections.abc import Callable, Mapping
|
|
9
9
|
from datetime import UTC, datetime
|
|
10
10
|
from typing import Any
|
|
11
11
|
from urllib.parse import quote
|
|
@@ -38,6 +38,9 @@ class HttpResponse[T]:
|
|
|
38
38
|
def close(self) -> None:
|
|
39
39
|
self._response.close()
|
|
40
40
|
|
|
41
|
+
def map_data[U](self, transform: Callable[[T], U]) -> "HttpResponse[U]":
|
|
42
|
+
return HttpResponse(self._response, transform(self.data))
|
|
43
|
+
|
|
41
44
|
|
|
42
45
|
class AsyncHttpResponse[T]:
|
|
43
46
|
"""Async variant of the typed HTTP response wrapper."""
|
|
@@ -57,6 +60,9 @@ class AsyncHttpResponse[T]:
|
|
|
57
60
|
async def close(self) -> None:
|
|
58
61
|
await self._response.aclose()
|
|
59
62
|
|
|
63
|
+
def map_data[U](self, transform: Callable[[T], U]) -> "AsyncHttpResponse[U]":
|
|
64
|
+
return AsyncHttpResponse(self._response, transform(self.data))
|
|
65
|
+
|
|
60
66
|
|
|
61
67
|
def segment(value: str) -> str:
|
|
62
68
|
if value in {".", ".."}:
|
avartha/_speech_resources.py
CHANGED
|
@@ -8,6 +8,7 @@ an Avartha extension. Transport and credentials are handled inside the SDK.
|
|
|
8
8
|
import builtins
|
|
9
9
|
from collections.abc import Sequence
|
|
10
10
|
|
|
11
|
+
from ._exceptions import ApiError
|
|
11
12
|
from ._speech_config import RequestOptions
|
|
12
13
|
from ._speech_http import (
|
|
13
14
|
AsyncHttpResponse,
|
|
@@ -17,7 +18,42 @@ from ._speech_http import (
|
|
|
17
18
|
segment,
|
|
18
19
|
)
|
|
19
20
|
from .types.speech import GetVoicesResponse, GetVoicesV2Response, Model, Voice, VoiceSettings
|
|
20
|
-
from .types.speech_language import SpeechLanguageList
|
|
21
|
+
from .types.speech_language import SpeechLanguage, SpeechLanguageList
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _model_languages(models: list[Model], model_id: str) -> SpeechLanguageList:
|
|
25
|
+
matches = [model for model in models if model.model_id == model_id]
|
|
26
|
+
if len(matches) != 1:
|
|
27
|
+
raise ApiError(body=f"ASR model {model_id!r} is missing or ambiguous in the model catalog")
|
|
28
|
+
model = matches[0]
|
|
29
|
+
model_type = getattr(model, "model_type", None)
|
|
30
|
+
# Direct ASR runtimes expose vendor capabilities without Platform's type tag.
|
|
31
|
+
is_asr = model_type == "speech_to_text" or (
|
|
32
|
+
model_type is None
|
|
33
|
+
and model.can_do_text_to_speech is False
|
|
34
|
+
and model.can_do_voice_conversion is False
|
|
35
|
+
)
|
|
36
|
+
if not is_asr:
|
|
37
|
+
raise ApiError(body=f"Model {model_id!r} is not identified as ASR in the model catalog")
|
|
38
|
+
languages = model.languages
|
|
39
|
+
if languages is None:
|
|
40
|
+
raise ApiError(body=f"Language metadata is unavailable for ASR model {model_id!r}")
|
|
41
|
+
if not isinstance(languages, list) or any(
|
|
42
|
+
not isinstance(getattr(language, "language_id", None), str)
|
|
43
|
+
or not language.language_id
|
|
44
|
+
or not isinstance(getattr(language, "name", None), str)
|
|
45
|
+
or not language.name
|
|
46
|
+
for language in languages
|
|
47
|
+
):
|
|
48
|
+
raise ApiError(body=f"Invalid language metadata for ASR model {model_id!r}")
|
|
49
|
+
return SpeechLanguageList(
|
|
50
|
+
object="list",
|
|
51
|
+
model=model_id,
|
|
52
|
+
language_hints_supported=bool(languages),
|
|
53
|
+
languages=[
|
|
54
|
+
SpeechLanguage(code=language.language_id, name=language.name) for language in languages
|
|
55
|
+
],
|
|
56
|
+
)
|
|
21
57
|
|
|
22
58
|
|
|
23
59
|
class RawVoices:
|
|
@@ -137,12 +173,13 @@ class RawLanguages:
|
|
|
137
173
|
def list(
|
|
138
174
|
self, *, model_id: str, request_options: RequestOptions | None = None
|
|
139
175
|
) -> HttpResponse[SpeechLanguageList]:
|
|
140
|
-
|
|
141
|
-
"v1/
|
|
142
|
-
|
|
143
|
-
params={
|
|
176
|
+
response = self._client.get(
|
|
177
|
+
"v1/models",
|
|
178
|
+
builtins.list[Model],
|
|
179
|
+
params={},
|
|
144
180
|
request_options=request_options,
|
|
145
181
|
)
|
|
182
|
+
return response.map_data(lambda models: _model_languages(models, model_id))
|
|
146
183
|
|
|
147
184
|
|
|
148
185
|
class Voices:
|
|
@@ -361,12 +398,13 @@ class AsyncRawLanguages:
|
|
|
361
398
|
async def list(
|
|
362
399
|
self, *, model_id: str, request_options: RequestOptions | None = None
|
|
363
400
|
) -> AsyncHttpResponse[SpeechLanguageList]:
|
|
364
|
-
|
|
365
|
-
"v1/
|
|
366
|
-
|
|
367
|
-
params={
|
|
401
|
+
response = await self._client.get(
|
|
402
|
+
"v1/models",
|
|
403
|
+
builtins.list[Model],
|
|
404
|
+
params={},
|
|
368
405
|
request_options=request_options,
|
|
369
406
|
)
|
|
407
|
+
return response.map_data(lambda models: _model_languages(models, model_id))
|
|
370
408
|
|
|
371
409
|
|
|
372
410
|
class AsyncVoices:
|
avartha/client.py
CHANGED
|
@@ -16,6 +16,12 @@ class Avartha:
|
|
|
16
16
|
|
|
17
17
|
openai_options, elevenlabs_options and control_options are forwarded to
|
|
18
18
|
their respective constructors (for timeouts, transports, retry settings).
|
|
19
|
+
|
|
20
|
+
Live STT through elevenlabs.speech_to_text.realtime remains asynchronous.
|
|
21
|
+
Await connect(), send(), commit(), and the transcription connection's close().
|
|
22
|
+
Register callbacks with on() without awaiting. Use AsyncAvartha for an async
|
|
23
|
+
application.
|
|
24
|
+
Close live sessions separately before closing this client.
|
|
19
25
|
"""
|
|
20
26
|
|
|
21
27
|
def __init__(
|
|
@@ -30,6 +36,9 @@ class Avartha:
|
|
|
30
36
|
elevenlabs_options: dict[str, Any] | None = None,
|
|
31
37
|
control_options: dict[str, Any] | None = None,
|
|
32
38
|
) -> None:
|
|
39
|
+
_config.validate_tier(tier)
|
|
40
|
+
for options in (openai_options, elevenlabs_options):
|
|
41
|
+
_config.validate_tier((options or {}).get("tier", "serverless"))
|
|
33
42
|
key, root = _config.api_key(api_key), _config.platform_url(base_url)
|
|
34
43
|
self._elevenlabs_base_url = _config.elevenlabs_url(
|
|
35
44
|
elevenlabs_base_url, root=root, tier=tier
|
|
@@ -99,6 +108,9 @@ class AsyncAvartha:
|
|
|
99
108
|
elevenlabs_options: dict[str, Any] | None = None,
|
|
100
109
|
control_options: dict[str, Any] | None = None,
|
|
101
110
|
) -> None:
|
|
111
|
+
_config.validate_tier(tier)
|
|
112
|
+
for options in (openai_options, elevenlabs_options):
|
|
113
|
+
_config.validate_tier((options or {}).get("tier", "serverless"))
|
|
102
114
|
key, root = _config.api_key(api_key), _config.platform_url(base_url)
|
|
103
115
|
self._elevenlabs_base_url = _config.elevenlabs_url(
|
|
104
116
|
elevenlabs_base_url, root=root, tier=tier
|
avartha/elevenlabs.py
CHANGED
|
@@ -45,6 +45,7 @@ class _Client:
|
|
|
45
45
|
environment: str | Enum | None = None,
|
|
46
46
|
websocket_limits: WebSocketLimits | None = None,
|
|
47
47
|
) -> None:
|
|
48
|
+
_config.validate_tier(tier)
|
|
48
49
|
self.api_key = _config.api_key(api_key)
|
|
49
50
|
if base_url is None and environment is not None:
|
|
50
51
|
base_url = str(environment.value) if isinstance(environment, Enum) else environment
|
avartha/openai.py
CHANGED
|
@@ -121,6 +121,7 @@ class _Client:
|
|
|
121
121
|
_enforce_credentials: bool = True,
|
|
122
122
|
tier: Tier = "serverless",
|
|
123
123
|
) -> None:
|
|
124
|
+
_config.validate_tier(tier)
|
|
124
125
|
if data_residency is not None:
|
|
125
126
|
raise ConfigurationError(
|
|
126
127
|
"data_residency selects a vendor host; use an Avartha base_url."
|
|
@@ -3,4 +3,6 @@
|
|
|
3
3
|
from typing import Literal, TypeAlias
|
|
4
4
|
|
|
5
5
|
__all__ = ["RealtimeReasoningEffort"]
|
|
6
|
-
RealtimeReasoningEffort: TypeAlias = Literal[
|
|
6
|
+
RealtimeReasoningEffort: TypeAlias = Literal[
|
|
7
|
+
"none", "minimal", "low", "medium", "high", "xhigh", "max"
|
|
8
|
+
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: avartha-python-sdk
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.6
|
|
4
4
|
Summary: Python clients for Avartha Realtime text, streaming speech, and platform management
|
|
5
5
|
Author-email: "Avartha Inc." <team@avartha.ai>
|
|
6
6
|
License-Expression: LicenseRef-Avartha-Proprietary
|
|
@@ -47,9 +47,10 @@ export AVARTHA_API_KEY='avk_...'
|
|
|
47
47
|
export AVARTHA_BASE_URL='https://platform.preview.avartha.ai'
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Clients default to the preview platform and
|
|
51
|
-
`AVARTHA_BASE_URL` for another environment
|
|
52
|
-
|
|
50
|
+
Clients default to the preview platform and support only serverless inference.
|
|
51
|
+
Set `AVARTHA_BASE_URL` for another environment. Use model and voice IDs available
|
|
52
|
+
to your workspace. Unsupported tier values and dedicated inference URLs raise
|
|
53
|
+
`ConfigurationError` locally before any request.
|
|
53
54
|
|
|
54
55
|
## Discover models
|
|
55
56
|
|
|
@@ -107,7 +108,7 @@ Inference consumes credits.
|
|
|
107
108
|
| Multi-context TTS | `ElevenLabs` / `AsyncElevenLabs`: `text_to_speech.connect_multi_context` |
|
|
108
109
|
| Realtime ASR | `await client.speech_to_text.realtime.connect(...)` on either speech client |
|
|
109
110
|
| Speech discovery | Speech clients: models, voices, voice settings, ASR languages |
|
|
110
|
-
| Workspaces, members, invitations
|
|
111
|
+
| Workspaces, members, invitations | `Control` / `AsyncControl` |
|
|
111
112
|
| Combined inference and management | `Avartha` / `AsyncAvartha` |
|
|
112
113
|
|
|
113
114
|
Managed inference uses WebSockets; Chat Completions, Responses, HTTP TTS,
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
avartha/__init__.py,sha256=fusR2DiiRSAaZCIhLrxRdyJWjA8p9uL4PAVGXbArjXM,2821
|
|
2
|
-
avartha/_config.py,sha256=
|
|
2
|
+
avartha/_config.py,sha256=mzaHiqYH_7N4okLijiRbJlCNyxvZn4Ni_A_OAZDtOTA,6314
|
|
3
3
|
avartha/_exceptions.py,sha256=_QY7SEw2nqyOz3pNxDWi40GW1xqB3EZxJ0t4iJ-YBpQ,1588
|
|
4
4
|
avartha/_http_errors.py,sha256=gU8eapqYcI7Q3M8lAxwVH-qwz-TnQf2loBThFKG0ka8,406
|
|
5
5
|
avartha/_models.py,sha256=KB4PeFvktbSOKbT-qMX5tjsExEg9cwufZ3ourx8GcVI,7331
|
|
6
6
|
avartha/_openai_http.py,sha256=8jA9ywFi4OqrAwYn9MThlgiEDXkao2Thja6VpX8fikU,10149
|
|
7
7
|
avartha/_openai_http_errors.py,sha256=MRZJMddDPVFMEo_KOlwsmkKXMZB6H39tLut5KyDFRaI,2123
|
|
8
8
|
avartha/_pacing.py,sha256=31ajT2i7ChcQJBZJCBwUDrTiMZrlSv6ziQwgqGIKvlc,1807
|
|
9
|
-
avartha/_realtime_asr.py,sha256=
|
|
9
|
+
avartha/_realtime_asr.py,sha256=Cdy8xDuU4N6c-VCZof7UmVtkFsCq4UlSgx_rw1y88Mc,12038
|
|
10
10
|
avartha/_realtime_openai.py,sha256=Su9xfsYmYCIMPwxBKuVbQp_tWoC9lUI8gidmexGmIow,23226
|
|
11
11
|
avartha/_realtime_resources.py,sha256=rZj8hBYuLP9kTX56hhXTGE8R3crW_Wfmn46VY_dL3TM,7489
|
|
12
12
|
avartha/_realtime_tts.py,sha256=j6X2REqTNr2een-G47K7248k29kamr113EG8CrmrXPA,33763
|
|
13
13
|
avartha/_sentinels.py,sha256=eX9pg8L8DMWOLrNLfJKWjcFHC5GZO0I_snULCum0ehg,433
|
|
14
14
|
avartha/_speech_config.py,sha256=jL0M8Z6MGXzfgf3Lm7QMMEKDtVXCW5-jrqz5WEtu9g4,1781
|
|
15
|
-
avartha/_speech_http.py,sha256=
|
|
16
|
-
avartha/_speech_resources.py,sha256=
|
|
15
|
+
avartha/_speech_http.py,sha256=DXTqPOzLsGsPnyvuuokmfN0eT9OScWGMZj1iJm6oWPc,10940
|
|
16
|
+
avartha/_speech_resources.py,sha256=zBJHkQkllmWG_bmTIhwmjz9Nf7w4JMNkKJimnaIL3_4,18628
|
|
17
17
|
avartha/_unsupported.py,sha256=qrbsxi2SL6co5M2uLs4fTVOoISuUm58khoayeL22gPE,637
|
|
18
18
|
avartha/_websocket.py,sha256=9R05huh1n8spuyg1n_aIJN0Uk_kLG7BbNPD88wogIKY,855
|
|
19
19
|
avartha/_ws_state.py,sha256=Im2W-UJtCBimYU5vlYBbVRL06DGwuw0Q5ufy4sSGIeM,5049
|
|
20
|
-
avartha/client.py,sha256=
|
|
20
|
+
avartha/client.py,sha256=vNZmmWWdGhSxdwb-lqBbioP4DK4MpoUgFWLJfqR5zxo,5677
|
|
21
21
|
avartha/control.py,sha256=jB7I4ccDBaVh2OMLZXhEeAsGNparMLURZQXnh-I__ss,23894
|
|
22
|
-
avartha/elevenlabs.py,sha256=
|
|
22
|
+
avartha/elevenlabs.py,sha256=tFugwzE8XKbQZsK7P6w6fGXGz76Udp5vt039uVwzOi8,5462
|
|
23
23
|
avartha/errors.py,sha256=8HMwf2P4VXwk4tRC5ZwceVOUFkRD0wEu9Bn1gljIj0Y,1333
|
|
24
|
-
avartha/openai.py,sha256=
|
|
24
|
+
avartha/openai.py,sha256=9xlmNdx0E2HWYUf5tEI1UbS82y7XerY1T76Jx7sQv18,11955
|
|
25
25
|
avartha/pagination.py,sha256=_5qt1bAPKQiXjrHcD0J93yNpBKBhbTRzZfnL9WCUwMw,1471
|
|
26
26
|
avartha/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
27
|
avartha/conversational_ai/__init__.py,sha256=Pc7h5OczniKnF54UvMYVILdU-pCXyZ9YnxtzggBc294,217
|
|
@@ -122,7 +122,7 @@ avartha/types/realtime/realtime_mcp_tool_execution_error_param.py,sha256=ESoZmAb
|
|
|
122
122
|
avartha/types/realtime/realtime_mcphttp_error.py,sha256=LsYLVdqDZ4jUGvlUTpSdKAdgad73-0ls2tk4Z6M5nX8,269
|
|
123
123
|
avartha/types/realtime/realtime_mcphttp_error_param.py,sha256=X1dGkZnFu8MQqQU78gvOLPHIWR0L7ZJKG_x7hb1zCPQ,370
|
|
124
124
|
avartha/types/realtime/realtime_reasoning.py,sha256=5v3tvYRDDjnJTpT0amG9jLd1dxV2Qy7mAenDnhmDhTc,307
|
|
125
|
-
avartha/types/realtime/realtime_reasoning_effort.py,sha256=
|
|
125
|
+
avartha/types/realtime/realtime_reasoning_effort.py,sha256=LFk2Oyv60GonPWfBI7FM0MFrnTCviZWNWPey6aYcRK8,251
|
|
126
126
|
avartha/types/realtime/realtime_reasoning_param.py,sha256=YIMK-W-iZq3-PqBQFw8nYC4dIrhDbQJtkRqjvmZuwY8,355
|
|
127
127
|
avartha/types/realtime/realtime_response.py,sha256=mCQWWODuBHpEjQfWevtJ8BZ7lYmWxhhc415hWrMjGl8,1493
|
|
128
128
|
avartha/types/realtime/realtime_response_create_audio_output.py,sha256=h7Y4MqXEViQdliq81eLn601kGEnxam5ZCaPWNeO4VHU,741
|
|
@@ -248,9 +248,9 @@ avartha/types/speech/voice_sharing_response.py,sha256=KRO9Rq80wTYV5of2bRrFTVJSDf
|
|
|
248
248
|
avartha/types/speech/voice_sharing_response_category.py,sha256=0yFm6b7R4piHdNTdBWTQYKpNPxW8r2HJvnMdVpT7s5U,241
|
|
249
249
|
avartha/types/speech/voice_sharing_state.py,sha256=8EBRbrRaDhUEap39kDXmt54AYeG172fnuBmRV1TSHP4,201
|
|
250
250
|
avartha/types/speech/voice_verification_response.py,sha256=IL_Z1OTIiR9mvuaWzF9-GsL7pMRZ5fJeV_W3FfjLTTY,770
|
|
251
|
-
avartha_python_sdk-0.0.
|
|
252
|
-
avartha_python_sdk-0.0.
|
|
253
|
-
avartha_python_sdk-0.0.
|
|
254
|
-
avartha_python_sdk-0.0.
|
|
255
|
-
avartha_python_sdk-0.0.
|
|
256
|
-
avartha_python_sdk-0.0.
|
|
251
|
+
avartha_python_sdk-0.0.6.dist-info/licenses/LICENSE,sha256=1ulXrK7aq7kBXX1scK6IiOgnbwqpmK6kWIB3CYznVG8,1135
|
|
252
|
+
avartha_python_sdk-0.0.6.dist-info/licenses/THIRD_PARTY_NOTICES,sha256=R62M0553miTc6E42IVFLUIYkLFim_mf_Abq1lty0IaQ,13081
|
|
253
|
+
avartha_python_sdk-0.0.6.dist-info/METADATA,sha256=WVETx80YlFn1-OFO_CSQpGyMenSjNVrnQFD5Q-mNoPg,5633
|
|
254
|
+
avartha_python_sdk-0.0.6.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
255
|
+
avartha_python_sdk-0.0.6.dist-info/top_level.txt,sha256=cj2kDXl33tO2IPWPduSTukcwozPnYKOsVUVE9QZRUr0,8
|
|
256
|
+
avartha_python_sdk-0.0.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|