Ë
    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  G d
„ de
«      Z G d„ de«      Zy)zÄ
Support for Scaleway's OpenAI-compatible `/v1/audio/transcriptions` endpoint.

API reference: https://www.scaleway.com/en/developers/api/generative-apis/#path-audio-create-an-audio-transcription
é    )ÚFinalN)Úprocess_audio_file)ÚAudioTranscriptionRequestDataÚBaseAudioTranscriptionConfig)ÚBaseLLMException)Úget_secret_str)ÚAllMessageValuesÚ&OpenAIAudioTranscriptionOptionalParams)Ú	FileTypesÚTranscriptionResponsec                   ó   — e Zd Zy)Ú#ScalewayAudioTranscriptionExceptionN)Ú__name__Ú
__module__Ú__qualname__© ó    ú}/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/scaleway/audio_transcription/transformation.pyr   r      s   „ Ør   r   c                   ó*  — 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)Ú ScalewayAudioTranscriptionConfigÚmodelÚreturnc                 ó
   — g d¢S )N)ÚlanguageÚpromptÚresponse_formatÚtemperatureÚtimestamp_granularitiesr   )Úselfr   s     r   Úget_supported_openai_paramsz<ScalewayAudioTranscriptionConfig.get_supported_openai_params   s   € ò
ð 	
r   Ú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_paramsz2ScalewayAudioTranscriptionConfig.map_openai_params'   sL   € ð #'×"BÑ"BÀ5Ó"IÐØ&×,Ñ,Ó.ò 	'‰DˆAˆqØÐ$Ò$Ø%&� Ò"ð	'ð Ðr   NÚapi_baseÚapi_keyÚlitellm_paramsÚstreamc                 ó6   — |€dn|j                  d«      }|› d�S )Nzhttps://api.scaleway.ai/v1ú/z/audio/transcriptions)Úrstrip)r   r+   r,   r   r"   r-   r.   s          r   Úget_complete_urlz1ScalewayAudioTranscriptionConfig.get_complete_url4   s)   € ð 4<Ð3CÑ/ÈÏÉÐY\ÓI]ˆØ�Ð0Ð1Ð1r   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )N©Úmessager4   r5   )r   )r   r3   r4   r5   s       r   Úget_error_classz0ScalewayAudioTranscriptionConfig.get_error_class@   s   € Ü2Ø!Ø#Øô
ð 	
r   Úmessagesc                 óz   — |€t        d«      }|st        ddi ¬«      ‚d|› �ddœ}|j                  |xs i «       |S )NÚSCW_SECRET_KEYz^Scaleway API key not found. Pass `api_key=...` or set the SCW_SECRET_KEY environment variable.i‘  r7   zBearer úapplication/json)ÚAuthorizationÚaccept)r   r   Úupdate)	r   r5   r   r:   r"   r-   r,   r+   Údefault_headerss	            r   Úvalidate_environmentz5ScalewayAudioTranscriptionConfig.validate_environmentG   s]   € ð ˆ?Ü$Ð%5Ó6ˆGáÜ5àtàØôð ð  ' w iÐ0Ø(ñ"
ˆð 	×Ñ˜wš}¨"Ô-ØÐr   Ú
audio_filec                 óâ   — t        |«      }d|i}| j                  |«      D ]  }|j                  |«      }|€Œ|||<   Œ d|j                  |j                  |j
                  fi}	t        ||	¬«      S )Nr   Úfile)ÚdataÚfiles)r   r    ÚgetÚfilenameÚfile_contentÚcontent_typer   )
r   r   rC   r"   r-   Úprocessed_audioÚform_fieldsÚkeyÚvaluerG   s
             r   Ú%transform_audio_transcription_requestzFScalewayAudioTranscriptionConfig.transform_audio_transcription_requestd   s�   € ô "4°JÓ!?ˆà$+¨UÐ#3ˆØ×3Ñ3°EÓ:ò 	)ˆCØ#×'Ñ'¨Ó,ˆEØÑ Ø#(�˜CÒ ð	)ð Ø×(Ñ(Ø×,Ñ,Ø×,Ñ,ðð
ˆô -°+ÀUÔKÐKr   Úraw_responsec                 ó¨  — |j                   j                  d«      xs dj                  «       }d|vrt        |j                  ¬«      S 	 |j                  «       }|j                  d«      xs d}t        |¬«      }d|v r|d   |d<   d|v r|d   |d<   ||_	        |S # t        $ r- t        |j                  |j                  |j                   ¬«      ‚w xY w)	Nzcontent-typeÚ r=   )Útextr7   rT   Úsegmentsr   )
r5   rH   Úlowerr   rT   ÚjsonÚ	Exceptionr   r4   Ú_hidden_params)r   rQ   rK   Úresponse_jsonrT   Úresponses         r   Ú&transform_audio_transcription_responsezGScalewayAudioTranscriptionConfig.transform_audio_transcription_response}   sé   € ð  ,×3Ñ3×7Ñ7¸ÓGÒMÈ2×TÑTÓVˆØ \Ñ1Ü(¨l×.?Ñ.?Ô@Ð@ð	Ø#/×#4Ñ#4Ó#6ˆMð $×'Ñ'¨Ó/Ò5°2ˆÜ/°TÔ:ˆà˜Ñ&Ø#0°Ñ#<ˆH�ZÑ Ø˜Ñ&Ø#0°Ñ#<ˆH�ZÑ à"/ˆÔØˆøô! ò 	Ü5Ø$×)Ñ)Ø(×4Ñ4Ø$×,Ñ,ôð ð	ús   Á	B Â6Cr%   )NN)r   r   r   ÚstrÚlistr
   r    ÚdictÚboolr*   r2   ÚintÚhttpxÚHeadersr   r9   r	   rB   r   r   rP   ÚResponser   r\   r   r   r   r   r      s—  „ ð
°ð 
¸Ð>dÑ9eó 
ðà ðð ðð ð	ð
 ðð 
óð( #ñ
2à˜‘*ð
2ð �t‘ð
2ð ð	
2ð
 ð
2ð ð
2ð �t‘ð
2ð 
ó
2ð
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfvó 
ð #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
óð:LàðLð ðLð ð	Lð
 ðLð 
'óLð2à—n‘nðð 
ôr   r   )Ú__doc__Útypingr   rb   Ú,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   r   r   r   r   r   ú<module>rm      sJ   ðñõ ã å K÷õ GÝ 7÷÷ Aô	Ð*:ô 	ôzÐ'Cõ zr   