Ë
    uPêj*{  ã                   ót  — d Z ddlZddlZddlZddlmZmZmZ ddlm	Z	m
Z
mZ ddlZddlmZmZ ddlmZmZ ddlmZmZmZmZ ddlmZ dd	lmZmZmZmZmZm Z m!Z!m"Z"m#Z# dd
l$m%Z%m&Z& e	rddl'm(Z) ne
Z) G d„ ded¬«      Z* G d„ de«      Z+ G d„ ded¬«      Z, G d„ ded¬«      Z- G d„ de«      Z. G d„ d«      Z/y)uE  
Handler for Soniox async speech-to-text transcription.

Soniox's async transcription API requires multiple HTTP calls:
  1. (optional) POST /v1/files                      â€” upload a local audio file
  2.            POST /v1/transcriptions             â€” create a transcription job
  3.            GET  /v1/transcriptions/{id}        â€” poll until status == "completed"
  4.            GET  /v1/transcriptions/{id}/transcript â€” fetch the transcript
  5. (optional) DELETE /v1/transcriptions/{id}      â€” cleanup
  6. (optional) DELETE /v1/files/{id}               â€” cleanup

Because this does not fit the single-request shape of
`base_llm_http_handler.audio_transcriptions`, the dispatch in
`litellm.main.transcription()` routes Soniox requests directly to this
handler (analogous to the OpenAI / Azure transcription handlers).
é    N)Ú	CoroutineÚMappingÚSequence)ÚTYPE_CHECKINGÚAnyÚFinal)ÚReadOnlyÚ	TypedDict)Úget_audio_file_nameÚprocess_audio_file)ÚAsyncHTTPHandlerÚHTTPHandlerÚ_get_httpx_clientÚget_async_httpx_client)ÚSonioxAudioTranscriptionConfig)	ÚSONIOX_DEFAULT_CLEANUPÚ SONIOX_DEFAULT_MAX_POLL_ATTEMPTSÚSONIOX_DEFAULT_POLL_INTERVALÚSONIOX_MAX_POLL_ATTEMPTSÚSONIOX_MAX_POLL_INTERVALÚSONIOX_MIN_POLL_INTERVALÚSONIOX_SECRET_FIELDSÚSonioxExceptionÚget_soniox_api_base)Ú	FileTypesÚTranscriptionResponse)ÚLoggingc                   óR   — e Zd ZU dZee   ed<   ee   ed<   ee   ed<   ee   ed<   y)Ú_TranscriptionMetaz<Fields the handler reads from a Soniox transcription object.ÚstatusÚerror_messageÚ
error_typeÚaudio_duration_msN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   ÚstrÚ__annotations__Úfloat© ó    út/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/soniox/audio_transcription/handler.pyr   r   =   s-   … ÙFà�S‰MÓØ˜C‘=Ó Ø˜‘ÓØ ‘Ô&r,   r   F)Útotalc                   ó"   — e Zd ZU dZee   ed<   y)Ú_IdentifiedResourcez<Soniox create/upload response, carrying the new resource id.ÚidN)r$   r%   r&   r'   r	   r(   r)   r+   r,   r-   r0   r0   F   s   … ÙFà�‰Ôr,   r0   c                   ó2   — e Zd ZU dZee   ed<   ee   ed<   y)Ú_SonioxErrorBodyz;Fields the handler reads from a Soniox error response body.r!   ÚerrorN)r$   r%   r&   r'   r	   Úobjectr)   r+   r,   r-   r3   r3   L   s   … ÙEà˜FÑ#Ó#Ø�FÑÔr,   r3   c                   ó\   — e Zd ZU dZee   ed<   ee   ed<   eee	e
f      ed<   ee   ed<   y)Ú_SonioxJsonViewz3Typed reads of decoded Soniox JSON response bodies.ÚresourceÚtranscriptionÚ
transcriptr4   N)r$   r%   r&   r'   r	   r0   r)   r   r   r(   r5   r3   r+   r,   r-   r7   r7   S   s=   … Ù=àÐ*Ñ+Ó+ØÐ.Ñ/Ó/Ø˜  f Ñ-Ñ.Ó.ØÐ$Ñ%Ô%r,   r7   c                   ó    — e Zd ZU dZee   ed<   ee   ed<   eee	      ed<   ee	dz     ed<   ee	dz     ed<   ee	dz     ed<   ee	dz     ed	<   y)
Ú_HandlerOptionsz7Handler-only options pulled out of ``optional_params``.Úpoll_intervalÚmax_attemptsÚcleanupNÚfilename_overrideÚ	audio_urlÚfile_idÚresponse_format)
r$   r%   r&   r'   r	   r*   r)   Úintr   r(   r+   r,   r-   r<   r<   \   sd   … ÙAà˜E‘?Ó"Ø˜3‘-ÓØ�h˜s‘mÑ$Ó$Ø  d¡
Ñ+Ó+Ø˜˜d™
Ñ#Ó#Ø�c˜D‘jÑ!Ó!Ø˜c D™jÑ)Ô)r,   r<   c            #       ór  — e Zd ZdZ	 	 	 	 d1dededz  dedededed	e	d
e
dedz  dedz  deez  dz  dedeeef   dz  dedz  deeeeef   z  fd„Zdedz  dedededz  dedz  dedeeef   deeeef   eeeef   ef   fd„Zdedeeef   dededz  deeef   f
d„Zedeeef   deeef   fd„«       Zed
e
dedz  dedeeef   ddf
d„«       Zed
e
dedz  dedz  deeef   deeef   ddfd„«       Zedej8                  defd„«       Zedej8                  dededdfd„«       Zdededz  dedededed
e
dedz  dedz  dedz  deeef   dedefd „Z d!ed"ed#eeef   ded$edz  dededefd%„Z!d!ed"ed#eeef   d&ed'ed(e	dededefd)„Z"d!ed"ed#eeef   d*e#e   d+edz  d&edz  deddfd,„Z$dededz  dedededed
e
dedz  dedz  dedz  deeef   dedefd-„Z%d!ed"ed#eeef   ded$edz  dededefd.„Z&d!ed"ed#eeef   d&ed'ed(e	dededefd/„Z'd!ed"ed#eeef   d*e#e   d+edz  d&edz  deddfd0„Z(y)2ÚSonioxAudioTranscriptionHandlerz1Orchestrates the Soniox async transcription flow.NÚmodelÚ
audio_fileÚoptional_paramsÚlitellm_paramsÚmodel_responseÚtimeoutÚmax_retriesÚlogging_objÚapi_keyÚapi_baseÚclientÚatranscriptionÚheadersÚprovider_configÚreturnc                 óò   — |xs
 t        «       }|du r3| j                  ||||||||	|
t        |t        «      r|nd|xs i |¬«      S | j	                  ||||||||	|
t        |t
        «      r|nd|xs i |¬«      S )a¼  Sync/async dispatch for Soniox transcription requests.

        Note: ``max_retries`` is accepted for signature compatibility with
        ``litellm.transcription`` but is **not yet implemented** for the Soniox
        async pipeline. Transient HTTP failures during upload, create, poll,
        or fetch will surface immediately. Wrap calls with the standard
        ``litellm.Router`` / ``num_retries`` mechanism for retry behaviour.
        TN)rG   rH   rI   rJ   rK   rL   rN   rO   rP   rQ   rS   rT   )r   Ú_async_audio_transcriptionsÚ
isinstancer   Ú_sync_audio_transcriptionsr   )ÚselfrG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   Úconfigs                   r-   Úaudio_transcriptionsz4SonioxAudioTranscriptionHandler.audio_transcriptionso   s³   € ð2 (ÒKÔ+IÓ+Kˆà˜TÑ!Ø×3Ñ3ØØ%Ø /Ø-Ø-ØØ'ØØ!Ü!+¨FÔ4DÔ!E‘vÈ4Øš 2Ø &ð 4ó ð ð ×.Ñ.ØØ!Ø+Ø)Ø)ØØ#ØØÜ'¨´Ô<‘6À$Ø’M˜rØ"ð /ó 
ð 	
r,   c           
      óö  — |j                  |dg ||||¬«      }t        |«      }	t        |«      }
t        |
j	                  dt
        «      «      }	 t        |
j	                  dt        «      «      }|
j	                  dt        «      }|€g }nt        |t        «      r|g}nt        |«      }|
j	                  dd «      }t        j                  |«      st
        }t!        t"        t%        |t&        «      «      }t!        dt%        |t(        «      «      }|||||
j	                  dd «      |
j	                  d	d «      |
j	                  d
d «      dœ}|
j	                  dd «       ||	|
|fS # t        t        f$ r
 t        }Y �Œ	w xY w)NÚ )rS   rG   ÚmessagesrI   rJ   rO   rP   Úsoniox_polling_intervalÚsoniox_max_polling_attemptsÚsoniox_cleanupÚfilenameé   rA   rB   rC   )r=   r>   r?   r@   rA   rB   rC   Úlanguage)Úvalidate_environmentr   Údictr*   Úpopr   rD   r   Ú
ValueErrorÚOverflowErrorr   rX   r(   ÚlistÚmathÚisfiniteÚmaxr   Úminr   r   )rZ   rH   rI   rJ   rO   rP   rT   rS   Úauth_headersÚbase_urlÚparamsr=   r>   Úcleanup_rawr?   r@   Úclamped_poll_intervalÚclamped_max_attemptsÚhandler_optss                      r-   Ú_preparez(SonioxAudioTranscriptionHandler._prepare­   s€  € ð  .×BÑBØØØØ+Ø)ØØð Có 
ˆô .¨hÓ7ˆô ˜_Ó-ˆô ˜fŸj™jÐ)BÔD`ÓaÓbˆð	<Ü˜vŸz™zÐ*GÔIiÓjÓkˆLð $ŸZ™ZÐ(8Ô:PÓQˆØÐØ!#‰GÜ˜¤SÔ)Ø"�m‰Gä˜;Ó'ˆGØ#)§:¡:¨j¸$Ó#?Ðô �}‰}˜]Ô+Ü8ˆMÜ'*Ô+CÄSÈÔXpÓEqÓ'rÐÜ&)¨!¬S°Ô?WÓ-XÓ&YÐð 3Ø0ØØ!2ØŸ™ K°Ó6Ø—z‘z )¨TÓ2Ø%Ÿz™zÐ*;¸TÓBñ0
ˆð 	�
‰
�:˜tÔ$à˜X v¨|Ð;Ð;øôI œMÐ*ò 	<Ü;‹Lð	<ús   ÁE ÅE8Å7E8rv   rB   c                 óŽ   — d|i}|j                  «       D ]  \  }}|€Œ	|||<   Œ |j                  d«      r|d   |d<   |r||d<   |S )NrG   rA   rB   )ÚitemsÚget)rZ   rG   rI   rv   rB   ÚbodyÚkeyÚvalues           r-   Ú_build_create_bodyz2SonioxAudioTranscriptionHandler._build_create_bodyø   sk   € ð +2°5Ð)9ˆà)×/Ñ/Ó1ò 	‰JˆC�Øˆ}ØØˆD�ŠIð	ð
 ×Ñ˜KÔ(Ø ,¨[Ñ 9ˆD�ÑÙØ%ˆD�‰Oàˆr,   r{   c                 óZ   — | s| S t        | «      }t        D ]  }||v sŒ||   €Œd||<   Œ |S )a  Return a shallow copy of ``body`` with secret fields redacted.

        Soniox's create-transcription body can include
        ``webhook_auth_header_value`` (a shared secret used to authenticate
        webhook callbacks). Forwarding that value to logging callbacks would
        let anyone with read access to those sinks forge webhook requests, so
        we replace any value of a known secret-bearing field with the literal
        ``"[REDACTED]"`` before logging. Non-secret fields are passed through
        unchanged.
        z
[REDACTED])rg   r   )r{   ÚredactedÚfields      r-   Ú_redact_body_for_loggingz8SonioxAudioTranscriptionHandler._redact_body_for_logging  sE   € ñ ØˆKÜ˜t›*ˆÜ)ò 	/ˆEØ˜Ò  X¨e¡_Ñ%@Ø".�˜’ð	/ð ˆr,   c           	      ó€   — 	 | j                  d ||› d�dt        j                  |«      dœ¬«       y # t        $ r Y y w xY w)Nú/v1/transcriptionsT)rP   rR   Úcomplete_input_dict)ÚinputrO   Úadditional_args)Úpre_callrF   r‚   Ú	Exception)rN   rO   rP   r{   s       r-   Ú_safe_log_pre_callz2SonioxAudioTranscriptionHandler._safe_log_pre_call!  sX   € ð	Ø× Ñ ØØà#+ *Ð,>Ð ?Ø&*Ü+J×+cÑ+cÐdhÓ+iñ!ð !õ øô ò 	ñ ð	ús   ‚.1 ±	=¼=Úoriginal_responsec                 ó’   — 	 | j                  |rt        |«      nd |dt        j                  |«      i|¬«       y # t        $ r Y y w xY w)Nr…   )r†   rO   r‡   r‹   )Ú	post_callr   rF   r‚   r‰   )rN   rH   rO   r{   r‹   s        r-   Ú_safe_log_post_callz3SonioxAudioTranscriptionHandler._safe_log_post_call7  sX   € ð
	Ø×!Ñ!Ù9CÔ)¨*Ô5ÈØØ!6Ô8W×8pÑ8pÐquÓ8vÐ wØ"3ð	 "õ øô ò 	ñ ð	ús   ‚7: º	AÁAÚresponsec                 ó0   — d| j                  «       i}|d   S )Nr9   )Újson)r�   Úpolleds     r-   Ú_transcription_metaz3SonioxAudioTranscriptionHandler._transcription_metaK  s   € à*9¸8¿=¹=»?Ð)KˆØ�oÑ&Ð&r,   Úactionc                 ód  — | j                   dk\  r†	 d| j                  «       i}|d   j                  d«      xs" |d   j                  d«      xs | j                  }|j                  d|› d| j                   › d|› �| j                   | j                  ¬«      ‚y # t        $ r | j                  }Y ŒSw xY w)Né�  r4   r!   zSoniox z failed (HTTP z): ©r!   Ústatus_coderS   )r˜   r‘   rz   Útextr‰   Úget_error_classrS   )r�   rT   r”   ÚpayloadÚmessages        r-   Ú_raise_for_responsez3SonioxAudioTranscriptionHandler._raise_for_responseP  sÉ   € ð ×Ñ 3Ò&ð(Ø3:¸H¿M¹M»OÐ2L�Ø! 'Ñ*×.Ñ.¨Ó?ÒqÀ7È7ÑCS×CWÑCWÐX_ÓC`ÒqÐdl×dqÑdq�ð "×1Ñ1Ø '¨ x¨~¸h×>RÑ>RÐ=SÐSVÐW^ÐV_Ð`Ø$×0Ñ0Ø ×(Ñ(ð 2ó ð ð 'øô ò (Ø"Ÿ-™-’ð(ús   ‘A
B ÂB/Â.B/c                 óp  — | j                  |||||	||¬«      \  }}}}t        |
t        «      r|
nt        d|j	                  dd «      i¬«      }|j	                  d«      }d }d }	 |sJ|j	                  d«      s9|€t        ddd ¬«      ‚| j                  |||||j	                  d	«      ||¬
«      }|}| j                  ||||«      }| j                  ||||«       |j                  |› d�|||¬«      }| j                  ||d«       d|j                  «       i}|d   d   }| j                  |||||d   |d   ||¬«      }|j	                  |› d|› d�||¬«      }| j                  ||d«       d|j                  «       i}||d   dœ}|j                  |||j	                  d«      ¬«      }| j                  |||||«       |j	                  d«      }|j                  j!                  |d|�t#        |«      dz  nd dœ«       || j%                  ||||d   |||¬ «       S # | j%                  ||||d   |||¬ «       w xY w)!N©rH   rI   rJ   rO   rP   rT   rS   Ú
ssl_verify)rr   rB   rA   úbSoniox transcription requires one of: a file argument, an `audio_url` kwarg, or a `file_id` kwarg.r–   ©rœ   r˜   rS   r@   ©Úhttp_clientrq   rp   rH   r@   rL   rT   r„   ©ÚurlrS   r‘   rL   úcreate transcriptionr8   r1   r=   r>   ©r¤   rq   rp   Útranscription_idr=   r>   rL   rT   ú/v1/transcriptions/ú/transcript©r¦   rS   rL   úfetch transcriptr:   ©r9   r:   rC   ©rK   rC   r#   Úsonioxç     @�@©rG   Úcustom_llm_providerÚaudio_transcription_durationr?   ©r¤   rq   rp   r?   Úfile_id_to_cleanupr©   rL   )rw   rX   r   r   rz   r   Ú_sync_upload_filer~   rŠ   Úpostr�   r‘   Ú_sync_poll_until_completedÚ_build_response_from_payloadrŽ   Ú_hidden_paramsÚupdater*   Ú_sync_cleanup)rZ   rG   rH   rI   rJ   rK   rL   rN   rO   rP   rQ   rS   rT   rp   rq   Ú
opt_paramsrv   r¤   rB   Úuploaded_file_idr©   r{   Úcreate_respÚcreatedÚtranscription_metaÚtranscript_respÚfetchedr›   r�   r#   s                                 r-   rY   z:SonioxAudioTranscriptionHandler._sync_audio_transcriptionsf  s  € ð <@¿=¹=Ø!Ø+Ø)ØØØ+Øð <Ió <
Ñ8ˆ�h 
¨Lô ˜&¤+Ô.ñ ô "Ø(¨.×*<Ñ*<¸\È4Ó*PÐQôð	 	ð ×"Ñ" 9Ó-ˆØ'+ÐØ'+ÐðS	Ù <×#3Ñ#3°KÔ#@ØÐ%Ü)ðJð %(Ø $ôð ð $(×#9Ñ#9Ø +Ø%Ø!-Ø)Ø&2×&6Ñ&6Ð7JÓ&KØ#Ø$3ð $:ó $Ð ð +�à×1Ñ1°%¸À\ÐSZÓ[ˆDØ×#Ñ# K°¸(ÀDÔIà!,×!1Ñ!1Ø�jÐ 2Ð3Ø$ØØð	 "2ó "ˆKð ×$Ñ$ [°/ÐCYÔZØ/9¸;×;KÑ;KÓ;MÐ.NˆGØ& zÑ2°4Ñ8Ðà(,×(GÑ(GØ'Ø!Ø)Ø!1Ø*¨?Ñ;Ø)¨.Ñ9ØØ /ð )Hó 	)Ðð &1§_¡_Ø�jÐ 3Ð4DÐ3EÀ[ÐQØ$Øð &5ó &ˆOð
 ×$Ñ$ _°oÐGYÔZØ/;¸_×=QÑ=QÓ=SÐ.TˆGà/AÐQXÐYeÑQfÑgˆGØ-×JÑJØØ-Ø ,× 0Ñ 0Ð1BÓ Cð Kó ˆHð ×$Ñ$ [°*¸gÀtÈWÔUà'9×'=Ñ'=Ð>QÓ'RÐØ×#Ñ#×*Ñ*à"Ø+3à=NÐ=ZœÐ/Ó0°6Ò9Ð`dñ	ôð à×ÑØ'Ø!Ø)Ø$ YÑ/Ø#3Ø!1Øð õ øˆD×ÑØ'Ø!Ø)Ø$ YÑ/Ø#3Ø!1Øð õ ús   Á$FH ÈH5r¤   rq   rp   r@   c                 ó  — t        |«      }|xs |j                  }	d|	|j                  |j                  fi}
d|d   i}|j	                  |› d�||
|¬«      }| j                  ||d«       d|j                  «       i}|d   d   S ©NÚfileÚAuthorizationz	/v1/files)r¦   rS   ÚfilesrL   zupload filer8   r1   ©r   rc   Úfile_contentÚcontent_typer¸   r�   r‘   ©rZ   r¤   rq   rp   rH   r@   rL   rT   Ú	processedrc   rÉ   Úupload_headersÚrespÚuploadeds                 r-   r·   z1SonioxAudioTranscriptionHandler._sync_upload_fileâ  sª   € ô .¨jÓ9ˆ	Ø+ÒA¨y×/AÑ/Aˆà�X˜y×5Ñ5°y×7MÑ7MÐNð
ˆð "1°,¸Ñ2OÐ PˆØ!×&Ñ&Ø�*˜IÐ&Ø"ØØð	 'ó 
ˆð 	× Ñ   ¸ÔFØ,6¸¿	¹	»Ð+DˆØ˜
Ñ# DÑ)Ð)r,   r©   r=   r>   c	           	      óÔ  — t        |«      D ]½  }	|j                  |› d|› �||¬«      }
| j                  |
|d«       | j                  |
«      }|j                  d«      }|dk(  r|c S |dk(  rJ|j	                  d|› d|j                  d	«      xs |j                  d
«      xs d› �d|
j
                  ¬«      ‚t        j                  |«       Œ¿ |j	                  d|› d|› d|› d�di ¬«      ‚©Nrª   r¬   zpoll transcriptionr    Ú	completedr4   zSoniox transcription z	 failed: r!   r"   zunknown erroriô  r—   z did not complete after z polling attempts (interval=zs).iø  )Úrangerz   r�   r“   rš   rS   ÚtimeÚsleep©rZ   r¤   rq   rp   r©   r=   r>   rL   rT   Ú_rÐ   Údatar    s                r-   r¹   z:SonioxAudioTranscriptionHandler._sync_poll_until_completedý  s2  € ô �|Ó$ò 	&ˆAØ—?‘?Ø�jÐ 3Ð4DÐ3EÐFØ$Øð #ó ˆDð
 ×$Ñ$ T¨?Ð<PÔQØ×+Ñ+¨DÓ1ˆDØ—X‘X˜hÓ'ˆFØ˜Ò$Ø’Ø˜Ò Ø%×5Ñ5à/Ð0@Ð/AÀØŸ8™8 OÓ4Òa¸¿¹ÀÓ8NÒaÐRaÐbðdð !$Ø ŸL™Lð 6ó ð ô �J‰J�}Õ%ð)	&ð* ×-Ñ-à'Ð(8Ð'9Ð9QØ�.Ð <¸]¸OÈ3ðPð Øð .ó 
ð 	
r,   r?   r¶   c                 óÊ   — |sy d|v r|r	 |j                  |› d|› �||¬«       d|v r|r	 |j                  |› d|› �||¬«       y y y # t        $ r Y Œ.w xY w# t        $ r Y y w xY w©Nr9   rª   r¬   rÇ   z
/v1/files/©Údeleter‰   ©rZ   r¤   rq   rp   r?   r¶   r©   rL   s           r-   r½   z-SonioxAudioTranscriptionHandler._sync_cleanup&  s°   € ñ ØØ˜gÑ%Ñ*:ð
Ø×"Ñ"Ø#˜*Ð$7Ð8HÐ7IÐJØ(Ø#ð #ô ð �WÑÑ!3ðØ×"Ñ"Ø#˜* JÐ/AÐ.BÐCØ(Ø#ð #õ ð "4Ðøô ò ñ ð	ûô ò áðús"   ‹A «A Á	AÁAÁ	A"Á!A"c              ƒ   ó$  K  — dd l }| j                  |||||	||¬«      \  }}}}t        |
t        «      r|
n2t	        |j
                  j                  d|j                  dd «      i¬«      }|j                  d«      }d }d }	 |sR|j                  d«      sA|€t        ddd ¬	«      ‚| j                  |||||j                  d
«      ||¬«      ƒ d {  –—† }|}| j                  ||||«      }| j                  ||||«       |j                  |› d�|||¬«      ƒ d {  –—† }| j                  ||d«       d|j                  «       i}|d   d   }| j                  |||||d   |d   ||¬«      ƒ d {  –—† }|j                  |› d|› d�||¬«      ƒ d {  –—† }| j                  ||d«       d|j                  «       i}||d   dœ}|j!                  |||j                  d«      ¬«      }| j#                  |||||«       |j                  d«      }|j$                  j'                  |d|�t)        |«      dz  nd dœ«       || j+                  ||||d    |||¬!«      ƒ d {  –—†  S 7 �Œ�7 �ŒH7 Œö7 ŒÖ7 Œ# | j+                  ||||d    |||¬!«      ƒ d {  –—†7   w xY w­w)"Nr   rŸ   r    )Úllm_providerrr   rB   rA   r¡   r–   r¢   r@   r£   r„   r¥   r§   r8   r1   r=   r>   r¨   rª   r«   r¬   r­   r:   r®   rC   r¯   r#   r°   r±   r²   r?   rµ   )Úlitellmrw   rX   r   r   ÚLlmProvidersÚSONIOXrz   r   Ú_async_upload_filer~   rŠ   r¸   r�   r‘   Ú_async_poll_until_completedrº   rŽ   r»   r¼   r*   Ú_async_cleanup)rZ   rG   rH   rI   rJ   rK   rL   rN   rO   rP   rQ   rS   rT   râ   rp   rq   r¾   rv   r¤   rB   r¿   r©   r{   rÀ   rÁ   rÂ   rÃ   rÄ   r›   r�   r#   s                                  r-   rW   z;SonioxAudioTranscriptionHandler._async_audio_transcriptionsM  ss  è ø€ ó 	à;?¿=¹=Ø!Ø+Ø)ØØØ+Øð <Ió <
Ñ8ˆ�h 
¨Lô ˜&Ô"2Ô3ñ ô 'Ø!(×!5Ñ!5×!<Ñ!<Ø(¨.×*<Ñ*<¸\È4Ó*PÐQôð	 	ð ×"Ñ" 9Ó-ˆØ'+ÐØ'+ÐðS	Ù <×#3Ñ#3°KÔ#@ØÐ%Ü)ðJð %(Ø $ôð ð *.×)@Ñ)@Ø +Ø%Ø!-Ø)Ø&2×&6Ñ&6Ð7JÓ&KØ#Ø$3ð *Aó *÷ $Ð ð +�à×1Ñ1°%¸À\ÐSZÓ[ˆDØ×#Ñ# K°¸(ÀDÔIà'2×'7Ñ'7Ø�jÐ 2Ð3Ø$ØØð	 (8ó (÷ "ˆKð ×$Ñ$ [°/ÐCYÔZØ/9¸;×;KÑ;KÓ;MÐ.NˆGØ& zÑ2°4Ñ8Ðà.2×.NÑ.NØ'Ø!Ø)Ø!1Ø*¨?Ñ;Ø)¨.Ñ9ØØ /ð /Oó 	/÷ 	)Ðð ,7¯?©?Ø�jÐ 3Ð4DÐ3EÀ[ÐQØ$Øð ,;ó ,÷ &ˆOð
 ×$Ñ$ _°oÐGYÔZØ/;¸_×=QÑ=QÓ=SÐ.TˆGà/AÐQXÐYeÑQfÑgˆGØ-×JÑJØØ-Ø ,× 0Ñ 0Ð1BÓ Cð Kó ˆHð ×$Ñ$ [°*¸gÀtÈWÔUà'9×'=Ñ'=Ð>QÓ'RÐØ×#Ñ#×*Ñ*à"Ø+3à=NÐ=ZœÐ/Ó0°6Ò9Ð`dñ	ôð à×%Ñ%Ø'Ø!Ø)Ø$ YÑ/Ø#3Ø!1Øð &ó ÷ ñ ðA$ùð"ùð	)øð&øð:ù�$×%Ñ%Ø'Ø!Ø)Ø$ YÑ/Ø#3Ø!1Øð &ó ÷ ò üsˆ   ‚A<JÁ?AI' ÃIÃA	I' ÄIÄAI' Å*I!Å+!I' ÆI#ÆB*I' È7JÉI%ÉJÉI' ÉI' É!I' É#I' É%JÉ'JÊJ	ÊJÊJc              ƒ   ó"  K  — t        |«      }|xs |j                  }	d|	|j                  |j                  fi}
d|d   i}|j	                  |› d�||
|¬«      ƒ d {  –—† }| j                  ||d«       d|j                  «       i}|d   d   S 7 Œ1­wrÆ   rÊ   rÍ   s                 r-   rå   z2SonioxAudioTranscriptionHandler._async_upload_fileÌ  s¸   è ø€ ô .¨jÓ9ˆ	Ø+ÒA¨y×/AÑ/Aˆà�X˜y×5Ñ5°y×7MÑ7MÐNð
ˆð "1°,¸Ñ2OÐ PˆØ'×,Ñ,Ø�*˜IÐ&Ø"ØØð	 -ó 
÷ 
ˆð 	× Ñ   ¸ÔFØ,6¸¿	¹	»Ð+DˆØ˜
Ñ# DÑ)Ð)ð
ús   ‚ABÁBÁ2Bc	           	   ƒ   ó  K  — t        |«      D ]Í  }	|j                  |› d|› �||¬«      ƒ d {  –—† }
| j                  |
|d«       | j                  |
«      }|j                  d«      }|dk(  r|c S |dk(  rJ|j	                  d|› d|j                  d	«      xs |j                  d
«      xs d› �d|
j
                  ¬«      ‚t        j                  |«      ƒ d {  –—†  ŒÏ |j	                  d|› d|› d|› d�di ¬«      ‚7 ŒÎ7 Œ&­wrÓ   )rÕ   rz   r�   r“   rš   rS   Úasyncior×   rØ   s                r-   ræ   z;SonioxAudioTranscriptionHandler._async_poll_until_completedæ  sL  è ø€ ô �|Ó$ò 	/ˆAØ$Ÿ™Ø�jÐ 3Ð4DÐ3EÐFØ$Øð )ó ÷ ˆDð
 ×$Ñ$ T¨?Ð<PÔQØ×+Ñ+¨DÓ1ˆDØ—X‘X˜hÓ'ˆFØ˜Ò$Ø’Ø˜Ò Ø%×5Ñ5à/Ð0@Ð/AÀØŸ8™8 OÓ4Òa¸¿¹ÀÓ8NÒaÐRaÐbðdð !$Ø ŸL™Lð 6ó ð ô —-‘- Ó.×.Ñ.ð)	/ð* ×-Ñ-à'Ð(8Ð'9Ð9QØ�.Ð <¸]¸OÈ3ðPð Øð .ó 
ð 	
ð)øð& /ús"   ‚+D ­C<®B)D ÃC>Ã%D Ã>D c              ƒ   óú   K  — |sy d|v r$|r"	 |j                  |› d|› �||¬«      ƒ d {  –—†  d|v r&|r#	 |j                  |› d|› �||¬«      ƒ d {  –—†  y y y 7 Œ/# t        $ r Y Œ8w xY w7 Œ# t        $ r Y y w xY w­wrÜ   rÝ   rß   s           r-   rç   z.SonioxAudioTranscriptionHandler._async_cleanup  sÒ   è ø€ ñ ØØ˜gÑ%Ñ*:ð
Ø!×(Ñ(Ø#˜*Ð$7Ð8HÐ7IÐJØ(Ø#ð )ó ÷ ð ð �WÑÑ!3ðØ!×(Ñ(Ø#˜* JÐ/AÐ.BÐCØ(Ø#ð )ó ÷ ñ ð "4Ððùô
 ò ñ ð	úðùô
 ò áðüsl   ‚
A;�A ©AªA ®A;µA, ÁA*ÁA, ÁA;ÁA Á	A'Á$A;Á&A'Á'A;Á*A, Á,	A8Á5A;Á7A8Á8A;)NFNN))r$   r%   r&   r'   r(   r   rg   r   r*   rD   ÚLiteLLMLoggingObjr   r   Úboolr   r   r5   r\   Útupler<   rw   r   r~   Ústaticmethodr‚   rŠ   rŽ   ÚhttpxÚResponser   r“   r�   rY   r·   r¹   r   r½   rW   rå   ræ   rç   r+   r,   r-   rF   rF   h   sÏ  „ Ù;ð$ 9=Ø$Ø)-ØAEñ8
àð8
ð  Ñ$ð8
ð ð	8
ð
 ð8
ð .ð8
ð ð8
ð ð8
ð 'ð8
ð �t‘ð8
ð ˜‘*ð8
ð Ð.Ñ.°Ñ5ð8
ð ð8
ð �c˜3�h‘ $Ñ&ð8
ð 8¸$Ñ>ð8
ð  
 ¨6°6Ð;PÐ+PÑ!QÑ	Qó!8
ð|I<à Ñ$ðI<ð ðI<ð ð	I<ð
 �t‘ðI<ð ˜‘*ðI<ð 8ðI<ð �c˜3�h‘ðI<ð 
ØˆS�#ˆX‰ØØˆS�&ˆ[ÑØð	ñ
óI<ðVàðð !  f Ñ-ðð &ð	ð
 �t‘ðð 
ˆc�6ˆkÑ	óð* ð t¨C°¨KÑ'8ð ¸TÀ#ÀvÀ+Ñ=Nò ó ðð& ðØ&ðà�t‘ðð ðð �3˜�;Ñð	ð
 
òó ðð* ðØ&ðà Ñ$ðð �t‘ðð �3˜�;Ñð	ð
 # 3¨ ;Ñ/ðð 
òó ðð& ð' e§n¡nð 'Ð9Kò 'ó ð'ð ðØ—.‘.ðà7ðð ðð 
ò	ó ðð*zàðzð  Ñ$ðzð ð	zð
 ðzð .ðzð ðzð 'ðzð �t‘ðzð ˜‘*ðzð ˜dÑ"ðzð �c˜3�h‘ðzð 8ðzð 
ózðx*à ð*ð ð*ð ˜3 ˜8‘nð	*ð
 ð*ð  ™:ð*ð ð*ð 8ð*ð 
ó*ð6'
à ð'
ð ð'
ð ˜3 ˜8‘nð	'
ð
 ð'
ð ð'
ð ð'
ð ð'
ð 8ð'
ð 
ó'
ðR!à ð!ð ð!ð ˜3 ˜8‘nð	!ð
 ˜#‘ð!ð   $™Jð!ð  ™*ð!ð ð!ð 
ó!ðN}àð}ð  Ñ$ð}ð ð	}ð
 ð}ð .ð}ð ð}ð 'ð}ð �t‘ð}ð ˜‘*ð}ð ! 4Ñ'ð}ð �c˜3�h‘ð}ð 8ð}ð 
ó}ð~*à%ð*ð ð*ð ˜3 ˜8‘nð	*ð
 ð*ð  ™:ð*ð ð*ð 8ð*ð 
ó*ð4'
à%ð'
ð ð'
ð ˜3 ˜8‘nð	'
ð
 ð'
ð ð'
ð ð'
ð ð'
ð 8ð'
ð 
ó'
ðR!à%ð!ð ð!ð ˜3 ˜8‘nð	!ð
 ˜#‘ð!ð   $™Jð!ð  ™*ð!ð ð!ð 
ô!r,   rF   )0r'   rê   rl   rÖ   Úcollections.abcr   r   r   Útypingr   r   r   rð   Útyping_extensionsr	   r
   Ú,litellm.litellm_core_utils.audio_utils.utilsr   r   Ú&litellm.llms.custom_httpx.http_handlerr   r   r   r   Ú6litellm.llms.soniox.audio_transcription.transformationr   Ú litellm.llms.soniox.common_utilsr   r   r   r   r   r   r   r   r   Úlitellm.types.utilsr   r   Ú*litellm.litellm_core_utils.litellm_loggingr   rì   r   r0   r3   r7   r<   rF   r+   r,   r-   ú<module>rû      s®   ðñó" Û Û ß 8Ñ 8ß ,Ñ ,ã ß 1÷÷ó õ÷
÷ 
õ 
÷ Aáöð Ðô'˜¨%õ 'ô˜)ô ô�y¨õ ô&�i uõ &ô	*�iô 	*÷Hò Hr,   