Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 40 additions & 11 deletions deepgram/clients/abstract_async_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,33 +33,62 @@ def __init__(self, config: DeepgramClientOptions):
self.config = config
self.client = httpx.AsyncClient()

async def get(self, url: str, options=None):
async def get(self, url: str, options=None, addons=None, **kwargs):
return await self._handle_request(
"GET", url, params=options, headers=self.config.headers
"GET",
url,
params=options,
addons=addons,
headers=self.config.headers,
**kwargs
)

async def post(self, url: str, options=None, **kwargs):
async def post(self, url: str, options=None, addons=None, **kwargs):
return await self._handle_request(
"POST", url, params=options, headers=self.config.headers, **kwargs
"POST",
url,
params=options,
addons=addons,
headers=self.config.headers,
**kwargs
)

async def put(self, url: str, options=None, **kwargs):
async def put(self, url: str, options=None, addons=None, **kwargs):
return await self._handle_request(
"PUT", url, params=options, headers=self.config.headers, **kwargs
"PUT",
url,
params=options,
addons=addons,
headers=self.config.headers,
**kwargs
)

async def patch(self, url: str, options=None, **kwargs):
async def patch(self, url: str, options=None, addons=None, **kwargs):
return await self._handle_request(
"PATCH", url, params=options, headers=self.config.headers, **kwargs
"PATCH",
url,
params=options,
addons=addons,
headers=self.config.headers,
**kwargs
)

async def delete(self, url: str, options=None):
return await self._handle_request("DELETE", url, params=options, headers=self.config.headers)
async def delete(self, url: str, options=None, addons=None, **kwargs):
return await self._handle_request(
"DELETE",
url,
params=options,
addons=addons,
headers=self.config.headers,
**kwargs
)

async def _handle_request(self, method, url, params, headers, **kwargs):
async def _handle_request(self, method, url, params, addons, headers, **kwargs):
new_url = url
if params is not None:
new_url = append_query_params(new_url, params)
if addons is not None:
new_url = append_query_params(new_url, addons)

try:
with httpx.Client() as client:
Expand Down
58 changes: 46 additions & 12 deletions deepgram/clients/abstract_sync_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,33 +34,67 @@ def __init__(self, config: DeepgramClientOptions):

self.config = config

def get(self, url: str, options=None, timeout=None):
def get(self, url: str, options=None, addons=None, timeout=None, **kwargs):
return self._handle_request(
"GET", url, params=options, headers=self.config.headers, timeout=timeout
"GET",
url,
params=options,
addons=addons,
headers=self.config.headers,
timeout=timeout,
**kwargs
)

def post(self, url: str, options=None, timeout=None, **kwargs):
def post(self, url: str, options=None, addons=None, timeout=None, **kwargs):
return self._handle_request(
"POST", url, params=options, headers=self.config.headers, timeout=timeout, **kwargs
"POST",
url,
params=options,
addons=addons,
headers=self.config.headers,
timeout=timeout,
**kwargs
)

def put(self, url: str, options=None, timeout=None, **kwargs):
def put(self, url: str, options=None, addons=None, timeout=None, **kwargs):
return self._handle_request(
"PUT", url, params=options, headers=self.config.headers, timeout=timeout, **kwargs
"PUT",
url,
params=options,
addons=addons,
headers=self.config.headers,
timeout=timeout,
**kwargs
)

def patch(self, url: str, options=None, timeout=None, **kwargs):
def patch(self, url: str, options=None, addons=None, timeout=None, **kwargs):
return self._handle_request(
"PATCH", url, params=options, headers=self.config.headers, timeout=timeout, **kwargs
"PATCH",
url,
params=options,
addons=addons,
headers=self.config.headers,
timeout=timeout,
**kwargs
)

def delete(self, url: str, options=None, timeout=None):
return self._handle_request("DELETE", url, params=options, headers=self.config.headers, timeout=timeout)
def delete(self, url: str, options=None, addons=None, timeout=None, **kwargs):
return self._handle_request(
"DELETE",
url,
params=options,
addons=addons,
headers=self.config.headers,
timeout=timeout,
**kwargs
)

def _handle_request(self, method, url, params, headers, timeout, **kwargs):
def _handle_request(self, method, url, params, addons, headers, timeout, **kwargs):
new_url = url
if params is not None:
new_url = append_query_params(url, params)
new_url = append_query_params(new_url, params)
if addons is not None:
new_url = append_query_params(new_url, addons)

if timeout is None:
timeout = httpx.Timeout(10.0, connect=10.0)
Expand Down
16 changes: 11 additions & 5 deletions deepgram/clients/live/v1/async_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,19 @@ def __init__(self, config: DeepgramClientOptions):
self._event_handlers = {event: [] for event in LiveTranscriptionEvents}
self.websocket_url = convert_to_websocket_url(self.config.url, self.endpoint)

async def start(self, options: LiveOptions = None, **kwargs):
async def start(self, options: LiveOptions = None, addons: dict = None, **kwargs):
self.logger.debug("AsyncLiveClient.start ENTER")
self.logger.info("kwargs: %s", options)
self.logger.info("addons: %s", addons)
self.logger.info("options: %s", kwargs)

self.options = options
self.kwargs = kwargs
if addons is not None:
self.__dict__.update(addons)
if kwargs is not None:
self.kwargs = kwargs
else:
self.kwargs = dict()

if isinstance(options, LiveOptions):
self.logger.info("LiveOptions switching class -> json")
Expand Down Expand Up @@ -93,7 +99,7 @@ async def _start(self) -> None:
await self._emit(
LiveTranscriptionEvents.Transcript,
result=result,
kwargs=self.kwargs,
**dict(self.kwargs),
)
case LiveTranscriptionEvents.Metadata.value:
self.logger.debug(
Expand All @@ -103,7 +109,7 @@ async def _start(self) -> None:
await self._emit(
LiveTranscriptionEvents.Metadata,
metadata=result,
kwargs=self.kwargs,
**dict(self.kwargs),
)
case LiveTranscriptionEvents.Error.value:
self.logger.debug(
Expand All @@ -113,7 +119,7 @@ async def _start(self) -> None:
await self._emit(
LiveTranscriptionEvents.Error,
error=result,
kwargs=self.kwargs,
**dict(self.kwargs),
)
case _:
self.logger.error(
Expand Down
20 changes: 13 additions & 7 deletions deepgram/clients/live/v1/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,22 @@ def __init__(self, config: DeepgramClientOptions):
self._event_handlers = {event: [] for event in LiveTranscriptionEvents}
self.websocket_url = convert_to_websocket_url(self.config.url, self.endpoint)

def start(self, options: LiveOptions = None, **kwargs):
def start(self, options: LiveOptions = None, addons: dict = None, **kwargs):
"""
Starts the WebSocket connection for live transcription.
"""
self.logger.debug("LiveClient.start ENTER")
self.logger.info("kwargs: %s", options)
self.logger.info("addon: %s", addons)
self.logger.info("options: %s", kwargs)

self.options = options
self.kwargs = kwargs
if addons is not None:
self.__dict__.update(addons)
if kwargs is not None:
self.kwargs = kwargs
else:
self.kwargs = dict()

if isinstance(options, LiveOptions):
self.logger.info("LiveOptions switching class -> json")
Expand Down Expand Up @@ -127,7 +133,7 @@ def _listening(self) -> None:
self._emit(
LiveTranscriptionEvents.Transcript,
result=result,
kwargs=self.kwargs,
**dict(self.kwargs),
)
case LiveTranscriptionEvents.Metadata.value:
self.logger.debug(
Expand All @@ -137,7 +143,7 @@ def _listening(self) -> None:
self._emit(
LiveTranscriptionEvents.Metadata,
metadata=result,
kwargs=self.kwargs,
**dict(self.kwargs),
)
case LiveTranscriptionEvents.Error.value:
self.logger.debug(
Expand All @@ -147,7 +153,7 @@ def _listening(self) -> None:
self._emit(
LiveTranscriptionEvents.Error,
error=result,
kwargs=self.kwargs,
**dict(self.kwargs),
)
case _:
self.logger.error(
Expand Down Expand Up @@ -225,7 +231,7 @@ def send(self, data) -> int:
ret = self._socket.send(data)
self.lock_send.release()

self.logger.spam("send bytes: %d", ret)
self.logger.spam(f"send bytes: {ret}")
self.logger.spam("LiveClient.send LEAVE")
return ret

Expand Down Expand Up @@ -259,7 +265,7 @@ def finish(self):
self.listening = None
self.logger.notice("listening thread joined")

if self._socket:
if self._socket is not None:
self.logger.notice("closing socket...")
self._socket.close()

Expand Down
Loading