Ë
    uPêjô  ã                   ó’   — d Z ddlmZ ddlZddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZmZ dd	lmZmZ d
dlmZ  G d„ de«      Zy)zº
Support for OVHCloud AI Endpoints `/v1/audio/transcriptions` endpoint.

Our unified API follows the OpenAI standard.
More information on our website: https://endpoints.ai.cloud.ovh.net
é    )ÚFinalN)Úprocess_audio_file)ÚAudioTranscriptionRequestDataÚBaseAudioTranscriptionConfig)ÚBaseLLMException)Úget_secret_str)ÚAllMessageValuesÚ&OpenAIAudioTranscriptionOptionalParams)Ú	FileTypesÚTranscriptionResponseé   ©ÚOVHCloudExceptionc                   ó*  — e Zd Zdedee   fd„Zdededededef
d„Z		 dd	edz  d
edz  dededededz  defd„Z
dededeej                  z  defd„Z	 	 ddededee   deded
edz  d	edz  defd„Zdededededef
d„Zdej*                  defd„Zy)Ú OVHCloudAudioTranscriptionConfigÚmodelÚreturnc                 ó
   — g d¢S )N)ÚlanguageÚpromptÚresponse_formatÚtimestamp_granularitiesÚtemperature© )Úselfr   s     ú}/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/ovhcloud/audio_transcription/transformation.pyÚget_supported_openai_paramsz<OVHCloudAudioTranscriptionConfig.get_supported_openai_params   s   € ò
ð 	
ó    Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 ól   — | j                  |«      }|j                  «       D ]  \  }}||v sŒ|||<   Œ |S ©N)r   Úitems)r   r   r    r   r!   Úsupported_paramsÚkÚvs           r   Úmap_openai_paramsz2OVHCloudAudioTranscriptionConfig.map_openai_params(   sL   € ð #'×"BÑ"BÀ5Ó"IÐØ&×,Ñ,Ó.ò 	'‰DˆAˆqØÐ$Ò$Ø%&� Ò"ð	'ð Ðr   NÚapi_baseÚapi_keyÚlitellm_paramsÚstreamc                 ó:   — |€dn|j                  d«      }|› d�}|S )Nz0https://oai.endpoints.kepler.ai.cloud.ovh.net/v1ú/z/audio/transcriptions)Úrstrip)r   r)   r*   r   r    r+   r,   Úcomplete_urls           r   Úget_complete_urlz1OVHCloudAudioTranscriptionConfig.get_complete_url5   s3   € ð JRÐIYÑEÐ_g×_nÑ_nÐorÓ_sˆØ!) 
Ð*?Ð@ˆØÐr   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )N©Úmessager3   r4   r   )r   r2   r3   r4   s       r   Úget_error_classz0OVHCloudAudioTranscriptionConfig.get_error_classB   s   € Ü Ø!Ø#Øô
ð 	
r   Úmessagesc                 óZ   — |€t        d«      }d|› �ddœ}|j                  |xs i «       |S )NÚOVHCLOUD_API_KEYzBearer zapplication/json)ÚAuthorizationÚaccept)r   Úupdate)	r   r4   r   r9   r    r+   r*   r)   Údefault_headerss	            r   Úvalidate_environmentz5OVHCloudAudioTranscriptionConfig.validate_environmentI   sD   € ð ˆ?Ü$Ð%7Ó8ˆGð  ' w iÐ0Ø(ñ"
ˆð 	×Ñ˜wš}¨"Ô-ØÐr   Ú
audio_filec                 óâ   — t        |«      }d|i}| j                  |«      D ]  }|j                  |«      }|€Œ|||<   Œ d|j                  |j                  |j
                  fi}	t        ||	¬«      S )aG  
        Transform the audio transcription request into OpenAI-compatible form-data.

        OVHCloud follows OpenAI's `/audio/transcriptions` format, so we:
        - Build a multipart form-data body with `file`, `model`, and optional params
        - Let the shared HTTP handler set the proper content-type boundary
        r   Úfile)ÚdataÚfiles)r   r   ÚgetÚfilenameÚfile_contentÚcontent_typer   )
r   r   rA   r    r+   Úprocessed_audioÚform_fieldsÚkeyÚvaluerE   s
             r   Ú%transform_audio_transcription_requestzFOVHCloudAudioTranscriptionConfig.transform_audio_transcription_request_   s“   € ô "4°JÓ!?ˆð �Uð$
ˆð
 ×3Ñ3°EÓ:ò 	)ˆCØ#×'Ñ'¨Ó,ˆEØÑ Ø#(�˜CÒ ð	)ð Ø×(Ñ(Ø×,Ñ,Ø×,Ñ,ðð
ˆô -°+ÀUÔKÐKr   Úraw_responsec                 ó\  — 	 |j                  «       }|j                  d«      xs |j                  d«      xs d}t        |¬«      }d|v r
|d   �|d   n|j                  d«      }|�||d<   ||_        |S # t        $ r- t        |j                  |j                  |j
                  ¬«      ‚w xY w)zm
        Transform OVHCloud audio transcription response to OpenAI-compatible TranscriptionResponse.
        r6   ÚtextÚ
transcriptÚ )rQ   ÚsecondsÚduration)	ÚjsonÚ	Exceptionr   rQ   r3   r4   rF   r   Ú_hidden_params)r   rO   Úresponse_jsonrQ   ÚresponserU   s         r   Ú&transform_audio_transcription_responsezGOVHCloudAudioTranscriptionConfig.transform_audio_transcription_response„   sÐ   € ð	Ø#/×#4Ñ#4Ó#6ˆMð $×'Ñ'¨Ó/ÒX°=×3DÑ3DÀ\Ó3RÒXÐVXˆÜ/°TÔ:ˆð ˜MÑ)¨m¸IÑ.FÐ.Rð ˜)Ò$à×"Ñ" :Ó.ð 	ð
 ÐØ(0ˆM˜*Ñ%à"/ˆÔØˆøô/ ò 	Ü#Ø$×)Ñ)Ø(×4Ñ4Ø$×,Ñ,ôð ð	ús   ‚A5 Á56B+r#   )NN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚlistr
   r   ÚdictÚboolr(   r1   ÚintÚhttpxÚHeadersr   r8   r	   r@   r   r   rN   ÚResponser   r[   r   r   r   r   r      s˜  „ ð	
°ð 	
¸Ð>dÑ9eó 	
ðà ðð ðð ð	ð
 ðð 
óð( #ñà˜‘*ðð �t‘ðð ð	ð
 ðð ðð �t‘ðð 
óð
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfvó 
ð #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
óð,#Làð#Lð ð#Lð ð	#Lð
 ð#Lð 
'ó#LðJ à—n‘nð ð 
ô r   r   )Ú__doc__Útypingr   rd   Ú,litellm.litellm_core_utils.audio_utils.utilsr   Ú8litellm.llms.base_llm.audio_transcription.transformationr   r   Ú)litellm.llms.base_llm.chat.transformationr   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.openair	   r
   Úlitellm.types.utilsr   r   Úutilsr   r   r   r   r   ú<module>rp      s@   ðñõ ã å K÷õ GÝ 7÷÷ Aå %ôHÐ'Cõ Hr   