
    ^h'                         S SK JrJr  S SKrS SKJrJr  S SKJr  S SK	r	S SK
Jr  S SKJr  S SKJr  S SKJrJr  S	S
KJr   " S S\5      rg)    )OptionalUnionN)AsyncOpenAIOpenAI)	BaseModel)get_audio_file_name)Logging)	FileTypes)TranscriptionResponse convert_to_model_response_object   )OpenAIChatCompletionc                      \ rS rSrS\S\S\\\R                  4   4S jr
S\S\S\\\R                  4   4S jr  SS	\S
\S\S\S\S\S\S\\   S\\   S\S\4S jjr    SS
\S\S\S\S\S\\   S\\   4S jjrSrg)OpenAIAudioTranscription   openai_aclientdatatimeoutc                   #     [         R                  SL ad  UR                  R                  R                  R
                  " S0 UDSU0D6I Sh  vN n[        UR                  5      nUR                  5       nXV4$ UR                  R                  R
                  " S0 UDSU0D6I Sh  vN nSU4$  Nb N
! [         a  nUeSnAff = f7fz
Helper to:
- call openai_aclient.audio.transcriptions.with_raw_response when litellm.return_response_headers is True
- call openai_aclient.audio.transcriptions.create by default
Tr   N 
litellmreturn_response_headersaudiotranscriptionswith_raw_responsecreatedictheadersparse	Exception)selfr   r   r   raw_responser    responsees           d/home/james-whalen/.local/lib/python3.13/site-packages/litellm/llms/openai/transcriptions/handler.py(make_openai_audio_transcriptions_requestAOpenAIAudioTranscription.make_openai_audio_transcriptions_request   s     	..$6(..==OOVV (/  
 |334'--/((!/!5!5!D!D!K!K!dd!d\c!ddX~% e 	G	sY   C	A
B5 B1+B5 :C	;-B5 (B3)B5 0C	1B5 3B5 5
C?CCC	openai_clientc                 f    [         R                  SL a\  UR                  R                  R                  R
                  " S0 UDSU0D6n[        UR                  5      nUR                  5       nXV4$ UR                  R                  R
                  " S0 UDSU0D6nSU4$ ! [         a  nUeSnAff = fr   r   )r#   r*   r   r   r$   r    r%   r&   s           r'   -make_sync_openai_audio_transcriptions_requestFOpenAIAudioTranscription.make_sync_openai_audio_transcriptions_request-   s    	..$6!''66HHOO (/ 
 |334'--/(((..==DD]t]U\]X~% 	G	s   A.B 1-B 
B0)B++B0Nmodel
audio_fileoptional_paramsmodel_responsemax_retrieslogging_objapi_keyapi_baseatranscriptionreturnc                    XS.UEnUSL a  U R                  UUUUUU	U
UUS9	$ U R                  SUU	UUS9nUR                  S UR                  UR                  R
                  SUS.S9  U R                  UUUS9u  p[        U[        5      (       a  UR                  5       nO[        US	9R                  5       nUR                  [        U5      US
U0US9  SSS.n[        UUUSS9nU$ )N)r.   fileT)	r/   r   r1   r   r4   r5   clientr2   r3   F)is_asyncr4   r5   r   r2   r5   r6   complete_input_dictinputr4   additional_args)r*   r   r   textr=   r?   r4   r@   original_response	whisper-1openair.   custom_llm_provideraudio_transcriptionresponse_objectmodel_response_objecthidden_paramsresponse_type)async_audio_transcriptions_get_openai_clientpre_callr4   	_base_url_uri_referencer,   
isinstancer   
model_dumpr   	post_callr   r   )r#   r.   r/   r0   r1   r   r2   r3   r4   r5   r:   r6   r   r*   _r%   stringified_responserM   final_responses                      r'   audio_transcriptions-OpenAIAudioTranscription.audio_transcriptionsH   sb    FoFT!22%-!'' 3 
 
 !% 7 7# !8 !
 	!)))33BB"&'+ 	 	
 HH' I 
 h	**#+#6#6#8 #8h#G#R#R#T  	%j12D92	 	 	
 #.hO0Pau  N\  ly  I^  1_    c
           	      (  #     U R                  SUUUU	US9n
UR                  S U
R                  U
R                  R                  SUS.S9  U R                  U
UUS9I S h  vN u  pXR                  S'   [        U[        5      (       a  UR                  5       nO[        US9R                  5       nUR                  [        U5      USU0US	9  S
SS.n[        XUSS9$  N~! [         a%  nUR                  [        U[!        U5      S9  UeS nAff = f7f)NT)r;   r4   r5   r   r2   r:   r<   r>   )r   r   r   response_headersrA   r=   rC   rE   rF   rG   rI   rJ   )r?   r4   rD   )rP   rQ   r4   rR   rS   r(   model_call_detailsrT   r   rU   r   rV   r   r   r"   r?   str)r#   r/   r   r1   r   r3   r4   r5   r:   r2   r   r    r%   rX   rM   r&   s                   r'   rO   3OpenAIAudioTranscription.async_audio_transcriptions   sk    .	*.*A*A!' +B +N   &.. . 8 8 G G&*+/! !  '+&S&S- 'T ' !G
 BI**+=>(I..'/':':'<$'<('K'V'V'X$!!)*5!6 ="6	 "  '2(SM3DX  O\  lA  B  B%!&  	!!"%a& " 
 G	s<   DAC  C A=C  DC   
D* D

DDr   )NF)NNNN)__name__
__module____qualname____firstlineno__r   r   r   floathttpxTimeoutr(   r   r,   r`   r
   r   intLiteLLMLoggingObjr   boolrZ   rO   __static_attributes__r   r\   r'   r   r      sS   #  uemm+,	6  uemm+,	L $BB B 	B
 .B B B 'B #B 3-B B 
BV "&"&:: : .	:
 : ': #: 3-: :r\   r   )typingr   r   rg   rF   r   r   pydanticr   r   ,litellm.litellm_core_utils.audio_utils.utilsr   *litellm.litellm_core_utils.litellm_loggingr	   rj   litellm.types.utilsr
   litellm.utilsr   r   r   r   r   r\   r'   <module>rs      s2    "  &   L S ) Q )v3 vr\   