Ë
    uPêjåW  ã                   ó0  — 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	m
Z
mZmZ d dlmZ d dlZd dlmZmZmZ d dlZd dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z( e	rd dl)m*Z+ ddl,m-Z. e+Z/e.Z-ne
Z/e
Z- G d„ de«      Z0y)é    N)ÚMapping)ÚBufferedReaderÚBytesIO)ÚMappingProxyType)ÚTYPE_CHECKINGÚAnyÚFinalÚcast)Úquote)ÚFileContentÚ	FileTypesÚRequestFiles)Úencode_url_path_segment)ÚBaseVideoConfig)ÚImageEditRequestUtils)Úget_secret_str)ÚCreateVideoRequest)ÚGenericLiteLLMParams)ÚCharacterObjectÚ VideoCreateOptionalRequestParamsÚVideoObject)Úencode_video_id_with_providerÚextract_original_character_idÚextract_original_video_id)ÚLoggingé   ©ÚBaseLLMExceptionc                   óÌ  ‡ — e Zd ZdZˆ fd„Zdedefd„Zdedede	de
fd„Z	 	 dEd
e
deded	z  ded	z  de
f
d„Zdeded	z  de
defd„Zde	fd„Zdededede
ded
e
dee
eef   fd„Zde
de
fd„Z	 	 dEdedej*                  deded	z  de
d	z  defd„Z	 dFdededed
e
ded	z  deee
f   fd„Z	 dFdedededed
e
de
eef   d	z  deee
f   fd„Zdej*                  dedefd „Z	 dFdej*                  deded	z  defd!„Z	 	 	 	 dGdeded
e
d"ed	z  d#ed	z  d$ed	z  d%e
eef   d	z  deee
f   fd&„Z 	 dFdej*                  deded	z  de
eef   fd'„Z!dededed
e
deee
f   f
d(„Z"dej*                  dedefd)„Z#dededed
e
deee
f   f
d*„Z$	 dFdej*                  deded	z  defd+„Z%d,ed-ed
e
ejL                  z  de'fd.„Z(d/ed0e)deded
e
deeef   fd1„Z*dej*                  dede+fd2„Z,d3ededed
e
deee
f   f
d4„Z-dej*                  dede+fd5„Z.	 	 	 dHdedededed
e
d6e)d	z  de
ee/f   d	z  d7e
ee/f   d	z  deee0ee/f   ed	z  f   fd8„Z1	 	 dEdej*                  deded	z  de
d	z  def
d9„Z2	 dFdeded:ededed
e
de
ee/f   d	z  deee
f   fd;„Z3	 dFdej*                  deded	z  defd<„Z4d=eeeef      d>ed?edd	fd@„Z5d0e)d?edeee6f   fdA„Z7d=eeee6f      d0e)d?edd	fdB„Z8d0e)dCedefdD„Z9ˆ xZ:S )IÚOpenAIVideoConfigz:
    Configuration class for OpenAI video generation.
    c                 ó"   •— t         ‰| �  «        y ©N)ÚsuperÚ__init__)ÚselfÚ	__class__s    €ún/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/openai/videos/transformation.pyr$   zOpenAIVideoConfig.__init__.   s   ø€ Ü‰ÑÕó    ÚmodelÚreturnc                 ó
   — g d¢S )zS
        Get the list of supported OpenAI parameters for video generation.
        )r)   ÚpromptÚinput_referenceÚsecondsÚsizeÚ
charactersÚuserÚextra_headers© )r%   r)   s     r'   Úget_supported_openai_paramsz-OpenAIVideoConfig.get_supported_openai_params1   s   € ò	
ð 		
r(   Úvideo_create_optional_paramsÚdrop_paramsc                 ó   — t        |«      S )z:No mapping applied since inputs are in OpenAI spec already)Údict)r%   r5   r)   r6   s       r'   Úmap_openai_paramsz#OpenAIVideoConfig.map_openai_params@   s   € ô Ð0Ó1Ð1r(   NÚheadersÚapi_keyÚlitellm_paramsc                 óÔ   — |r|j                   r|xs |j                   }|xs/ t        j                   xs t        j                  xs t        d«      }|j	                  dd|› �i«       |S )NÚOPENAI_API_KEYÚAuthorizationzBearer )r;   ÚlitellmÚ
openai_keyr   Úupdate)r%   r:   r)   r;   r<   s        r'   Úvalidate_environmentz&OpenAIVideoConfig.validate_environmentI   sg   € ñ ˜n×4Ò4ØÒ7 ×!7Ñ!7ˆGàÒfœWŸ_™_Òf´×0BÑ0BÒfÄnÐUeÓFfˆØ�‰à 7¨7¨)Ð!4ðô	
ð
 ˆr(   Úapi_basec                 ó2   — |€d}|j                  d«      › d�S )zC
        Get the complete URL for OpenAI video generation.
        zhttps://api.openai.com/v1ú/z/videos)Úrstrip)r%   r)   rD   r<   s       r'   Úget_complete_urlz"OpenAIVideoConfig.get_complete_url\   s&   € ð ÐØ2ˆHà—/‘/ #Ó&Ð' wÐ/Ð/r(   c                  ó   — y)NTr3   )r%   s    r'   Úuse_multipart_form_dataz)OpenAIVideoConfig.use_multipart_form_dataj   s   € Ør(   r,   Ú$video_create_optional_request_paramsc                 ór  — |j                  «       D ��ci c]  \  }}|dvr||“Œ }}}t        d||dœ|¤Ž}	t        t        |	«      }
| j	                  |
«      }
|j                  d«      }|
j                  «       D ��ci c]  \  }}|dvsŒ||“Œ }}}g }|�| j                  ||d¬«       |||fS c c}}w c c}}w )zF
        Transform the video creation request for OpenAI API.
        )r)   r2   r,   )r)   r,   r-   )r-   )Ú
files_listÚimageÚ
field_namer3   )Úitemsr   r
   r8   Ú-_decode_character_ids_in_create_video_requestÚgetÚ_add_image_to_files)r%   r)   r,   rD   rK   r<   r:   ÚkÚvÚvideo_create_requestÚrequest_dictÚ_input_referenceÚdata_without_filesrM   s                 r'   Útransform_video_create_requestz0OpenAIVideoConfig.transform_video_create_requestm   sö   € ð =×BÑBÓD÷0
á��1ØÐ<Ñ<ð ˆq‰Dð0
Ð,ñ 0
ô  2Ðu¸ÀfÑuÐPtÑuÐÜœDÐ"6Ó7ˆØ×IÑIÈ,ÓWˆð #G×"JÑ"JÐK\Ó"]ÐØ6B×6HÑ6HÓ6J×$k©d¨a°ÈaÐWjÒNj Q¨¡TÐ$kÐÑ$kØ9;ˆ
ð Ð'Ø×$Ñ$Ø%Ø&Ø,ð %ô ð
 " :¨xÐ7Ð7ùó/0
ùó %ls   ”B-Á;B3ÂB3rW   c                 óf  — |j                  d«      }t        |t        «      s|S g }|D ]�  }t        |t        «      s|j	                  |«       Œ%|j                  d«      }t        |t
        «      r+t        |«      }t        |«      |d<   |j	                  |«       Œq|j	                  |«       Œƒ ||d<   |S )a%  
        Decode LiteLLM-managed encoded character ids for provider requests.

        OpenAI expects character ids like `char_...`. If a caller sends
        `character_<base64-encoded-provider-payload>`, convert it back to the
        original provider id before forwarding upstream.
        r0   Úid)rR   Ú
isinstanceÚlistr8   ÚappendÚstrr   )r%   rW   Úraw_charactersÚdecoded_charactersÚ	characterÚcharacter_idÚdecoded_characters          r'   rQ   z?OpenAIVideoConfig._decode_character_ids_in_create_video_request“   sµ   € ð !-× 0Ñ 0°Ó >ˆÜ˜.¬$Ô/ØÐà/1ÐØ'ò 	5ˆIÜ˜i¬Ô.Ø"×)Ñ)¨)Ô4Øà$Ÿ=™=¨Ó.ˆLÜ˜,¬Ô,Ü$(¨£OÐ!Ü*GÈÓ*UÐ! $Ñ'Ø"×)Ñ)Ð*;Õ<à"×)Ñ)¨)Õ4ð	5ð &8ˆ�\Ñ"ØÐr(   Úraw_responseÚlogging_objÚcustom_llm_providerÚrequest_datac                 óB  — t        j                  |j                  «       «      }|r(|j                  rt	        |j                  ||«      |_        i }|r1t        |d«      r%|j                  r	 t        |j                  «      |d<   ||_
        |S # t        t        f$ r Y Œw xY w)z-Transform the OpenAI video creation response.r.   Úduration_seconds©r   Úmodel_validateÚjsonr\   r   Úhasattrr.   ÚfloatÚ
ValueErrorÚ	TypeErrorÚusage)r%   r)   rf   rg   rh   ri   Ú	video_objÚ
usage_datas           r'   Útransform_video_create_responsez1OpenAIVideoConfig.transform_video_create_response°   s™   € ô '×5Ñ5°l×6GÑ6GÓ6IÓJˆ	á 9§<¢<Ü8¸¿¹ÐGZÐ\aÓbˆIŒLàˆ
ÙÜ�y )Ô,°×1BÒ1BðÜ5:¸9×;LÑ;LÓ5M�JÐ1Ñ2ð %ˆ	ŒàÐøô	 #¤IÐ.ò Ùðúó   Á+B ÂBÂBÚvideo_idÚvariantc                 ó”   — t        |«      }t        |d¬«      }|j                  d«      › d|› d�}|�|› dt        |d¬«      › �}i }	||	fS )zâ
        Transform the video content request for OpenAI API.

        OpenAI API expects the following request:
        - GET /v1/videos/{video_id}/content
        - GET /v1/videos/{video_id}/content?variant=thumbnail
        rx   ©rO   rF   z/contentz	?variant=Ú )Úsafe)r   r   rG   r   )
r%   rx   rD   r<   r:   ry   Úoriginal_video_idÚencoded_video_idÚurlÚdatas
             r'   Útransform_video_content_requestz1OpenAIVideoConfig.transform_video_content_requestÉ   so   € ô $=¸XÓ#FÐÜ"9Ð:KÐXbÔ"cÐð —‘ Ó%Ð& aÐ(8Ð'9¸ÐBˆØÐð
 �E˜¤5¨°rÔ#:Ð";Ð<ˆCð *,ˆà�DˆyÐr(   Ú
extra_bodyc                 ó–   — t        |«      }t        |d¬«      }|j                  d«      › d|› d�}	d|i}
|r|
j                  |«       |	|
fS )z¡
        Transform the video remix request for OpenAI API.

        OpenAI API expects the following request:
        - POST /v1/videos/{video_id}/remix
        rx   r{   rF   z/remixr,   )r   r   rG   rB   )r%   rx   r,   rD   r<   r:   rƒ   r~   r   r€   r�   s              r'   Útransform_video_remix_requestz/OpenAIVideoConfig.transform_video_remix_requesté   se   € ô $=¸XÓ#FÐÜ"9Ð:KÐXbÔ"cÐð !Ÿ™¨Ó,Ð-¨QÐ/?Ð.@ÀÐGˆð   Ð(ˆñ Ø�K‰K˜
Ô#à�DˆyÐr(   c                 ó   — |j                   S )z5Transform the OpenAI video content download response.)Úcontent©r%   rf   rg   s      r'   Ú transform_video_content_responsez2OpenAIVideoConfig.transform_video_content_response  s   € ð ×#Ñ#Ð#r(   c                 óB  — t        j                  |j                  «       «      }|r(|j                  rt	        |j                  |d«      |_        i }|r1t        |d«      r%|j                  r	 t        |j                  «      |d<   ||_
        |S # t        t        f$ r Y Œw xY w)z<
        Transform the OpenAI video remix response.
        Nr.   rk   rl   )r%   rf   rg   rh   rt   ru   s         r'   Útransform_video_remix_responsez0OpenAIVideoConfig.transform_video_remix_response  s›   € ô '×5Ñ5°l×6GÑ6GÓ6IÓJˆ	á 9§<¢<Ü8¸¿¹ÐGZÐ\`ÓaˆIŒLð ˆ
ÙÜ�y )Ô,°×1BÒ1BðÜ5:¸9×;LÑ;LÓ5M�JÐ1Ñ2ð %ˆ	ŒàÐøô #¤IÐ.ò Ùðúrw   ÚafterÚlimitÚorderÚextra_queryc                 ó†   — |}i }	|�t        |«      |	d<   |�t        |«      |	d<   |�||	d<   |r|	j                  |«       ||	fS )zŽ
        Transform the video list request for OpenAI API.

        OpenAI API expects the following request:
        - GET /v1/videos
        rŒ   r�   rŽ   )r   r`   rB   )
r%   rD   r<   r:   rŒ   r�   rŽ   r�   r€   Úparamss
             r'   Útransform_video_list_requestz.OpenAIVideoConfig.transform_video_list_request,  sa   € ð" ˆð ˆØÐä7¸Ó>ˆF�7‰OØÐÜ! %›jˆF�7‰OØÐØ#ˆF�7‰Oñ Ø�M‰M˜+Ô&à�Fˆ{Ðr(   c                 ó2  — |j                  «       }|�rd|v rÿ|j                  dg «      D ]:  }t        |t        «      sŒd|v sŒt	        |d   ||j                  d«      «      |d<   Œ< |j                  dg «      }|j                  d«      r>d }|r't        |d   t        «      r|d   j                  d«      }t	        |d   ||«      |d<   |j                  d«      r>d }|r't        |d   t        «      r|d   j                  d«      }t	        |d   ||«      |d<   |S )Nr�   r\   r)   Úfirst_idr   Úlast_idéÿÿÿÿ)rn   rR   r]   r8   r   )	r%   rf   rg   rh   Úresponse_datart   Ú	data_listÚfirst_modelÚ
last_models	            r'   Útransform_video_list_responsez/OpenAIVideoConfig.transform_video_list_responseO  s3  € ð  ,×0Ñ0Ó2ˆâ 6¨]Ñ#:Ø*×.Ñ.¨v°rÓ:ò �	Ü˜i¬Õ.°4¸9Ò3DÜ&CØ! $™Ø+Ø!Ÿ™ gÓ.ó'�I˜d’Oðð  -×0Ñ0°¸Ó<ˆIØ× Ñ  Ô,Ø"�Ù¤¨I°a©L¼$Ô!?Ø"+¨A¡,×"2Ñ"2°7Ó";�KÜ,IØ! *Ñ-Ø'Øó-�˜jÑ)ð
 × Ñ  Ô+Ø!�
Ù¤¨I°b©M¼4Ô!@Ø!*¨2¡×!2Ñ!2°7Ó!;�JÜ+HØ! )Ñ,Ø'Øó,�˜iÑ(ð Ðr(   c                 ój   — t        |«      }t        |d¬«      }|j                  d«      › d|› �}i }||fS )zž
        Transform the video delete request for OpenAI API.

        OpenAI API expects the following request:
        - DELETE /v1/videos/{video_id}
        rx   r{   rF   ©r   r   rG   ©	r%   rx   rD   r<   r:   r~   r   r€   r�   s	            r'   Útransform_video_delete_requestz0OpenAIVideoConfig.transform_video_delete_requestx  sM   € ô $=¸XÓ#FÐÜ"9Ð:KÐXbÔ"cÐð !Ÿ™¨Ó,Ð-¨QÐ/?Ð.@ÐAˆð *,ˆà�DˆyÐr(   c                 óL   — t        j                  |j                  «       «      }|S )z=
        Transform the OpenAI video delete response.
        )r   rm   rn   )r%   rf   rg   rt   s       r'   Útransform_video_delete_responsez1OpenAIVideoConfig.transform_video_delete_response�  s#   € ô '×5Ñ5°l×6GÑ6GÓ6IÓJˆ	àÐr(   c                 ój   — t        |«      }t        |d¬«      }|j                  d«      › d|› �}i }||fS )z>
        Transform the OpenAI video retrieve request.
        rx   r{   rF   r�   rž   s	            r'   Ú'transform_video_status_retrieve_requestz9OpenAIVideoConfig.transform_video_status_retrieve_request�  sM   € ô $=¸XÓ#FÐÜ"9Ð:KÐXbÔ"cÐð !Ÿ™¨Ó,Ð-¨QÐ/?Ð.@ÐAˆð *,ˆà�DˆyÐr(   c                 ó    — t        j                  |j                  «       «      }|r(|j                  rt	        |j                  |d«      |_        |S )z?
        Transform the OpenAI video retrieve response.
        N©r   rm   rn   r\   r   ©r%   rf   rg   rh   rt   s        r'   Ú(transform_video_status_retrieve_responsez:OpenAIVideoConfig.transform_video_status_retrieve_response³  sB   € ô '×5Ñ5°l×6GÑ6GÓ6IÓJˆ	á 9§<¢<Ü8¸¿¹ÐGZÐ\`ÓaˆIŒLàÐr(   Úerror_messageÚstatus_codec                 ó$   — ddl m}  ||||¬«      ‚)Nr   r   )r©   Úmessager:   )Úbase_llm.chat.transformationr   )r%   r¨   r©   r:   r   s        r'   Úget_error_classz!OpenAIVideoConfig.get_error_classÄ  s   € ÝDáØ#Ø!Øô
ð 	
r(   ÚnameÚvideoc                 óf   — |j                  d«      › d�}dd |ffg}| j                  ||d«       ||fS )NrF   z/charactersr®   r¯   )rG   Ú_add_video_to_files)r%   r®   r¯   rD   r<   r:   r€   rM   s           r'   Ú(transform_video_create_character_requestz:OpenAIVideoConfig.transform_video_create_character_requestÍ  sG   € ð !Ÿ™¨Ó,Ð-¨[Ð9ˆØ;AÀDÈ$À<Ð:PÐ9Qˆ
Ø× Ñ  ¨U°GÔ<Ø�JˆÐr(   c                 óH   — t        j                  |j                  «       «      S r"   ©r   rm   rn   rˆ   s      r'   Ú)transform_video_create_character_responsez;OpenAIVideoConfig.transform_video_create_character_responseÚ  ó   € ô
 ×-Ñ-¨l×.?Ñ.?Ó.AÓBÐBr(   rd   c                 óf   — t        |«      }t        |d¬«      }|j                  d«      › d|› �}|i fS )Nrd   r{   rF   z/characters/)r   r   rG   )r%   rd   rD   r<   r:   Úoriginal_character_idÚencoded_character_idr€   s           r'   Ú%transform_video_get_character_requestz7OpenAIVideoConfig.transform_video_get_character_requestá  sD   € ô (EÀ\Ó'RÐÜ&=Ð>SÐ`nÔ&oÐØ Ÿ™¨Ó,Ð-¨\Ð:NÐ9OÐPˆØ�Bˆwˆr(   c                 óH   — t        j                  |j                  «       «      S r"   r´   rˆ   s      r'   Ú&transform_video_get_character_responsez8OpenAIVideoConfig.transform_video_get_character_responseí  r¶   r(   Ú
video_fileÚprefetched_source_datac	                 óî   — |j                  d«      › d�}	|�6| j                  |d«      f}
|rt        d|i|¥«      nt        d|i«      }|	||
fS t        |«      }|d|idœ}|r|j	                  |«       |	|d fS )NrF   z/editsr¯   r,   r\   )r,   r¯   )rG   Ú_video_file_tupler   r   rB   )r%   r,   rx   rD   r<   r:   r½   rƒ   r¾   r€   ÚfilesÚ	form_datar~   r�   s                 r'   Útransform_video_edit_requestz.OpenAIVideoConfig.transform_video_edit_requestô  s¥   € ð !Ÿ™¨Ó,Ð-¨VÐ4ˆàÐ!Ø*.×*@Ñ*@ÀÈWÓ*UÐ)WˆEñ ô ! (¨FÐ!A°jÐ!AÔBä% x°Ð&8Ó9ð ð
 ˜	 5Ð(Ð(ä#<¸XÓ#FÐØ4:ÀdÐL]ÐE^Ñ)_ˆÙØ�K‰K˜
Ô#Ø�D˜$ˆÐr(   c                 ó    — t        j                  |j                  «       «      }|r(|j                  rt	        |j                  |d «      |_        |S r"   r¥   )r%   rf   rg   rh   ri   rt   s         r'   Útransform_video_edit_responsez/OpenAIVideoConfig.transform_video_edit_response  sB   € ô '×5Ñ5°l×6GÑ6GÓ6IÓJˆ	Ù 9§<¢<Ü8¸¿¹ÐGZÐ\`ÓaˆIŒLØÐr(   r.   c                 ó~   — t        |«      }|j                  d«      › d�}	||d|idœ}
|r|
j                  |«       |	|
fS )NrF   z/extensionsr\   )r,   r.   r¯   )r   rG   rB   )r%   r,   rx   r.   rD   r<   r:   rƒ   r~   r€   r�   s              r'   Ú!transform_video_extension_requestz3OpenAIVideoConfig.transform_video_extension_request  sV   € ô $=¸XÓ#FÐØ Ÿ™¨Ó,Ð-¨[Ð9ˆàØØÐ-Ð.ñ*
ˆñ
 Ø�K‰K˜
Ô#Ø�DˆyÐr(   c                 ó    — t        j                  |j                  «       «      }|r(|j                  rt	        |j                  |d «      |_        |S r"   r¥   r¦   s        r'   Ú"transform_video_extension_responsez4OpenAIVideoConfig.transform_video_extension_response1  sB   € ô '×5Ñ5°l×6GÑ6GÓ6IÓJˆ	Ù 9§<¢<Ü8¸¿¹ÐGZÐ\`ÓaˆIŒLØÐr(   rM   rN   rO   c                 ó¼   — t        j                  |«      }t        |t        «      r!|j	                  ||j
                  ||ff«       y|j	                  |d||ff«       y)z<Add an image to the files list with appropriate content typezinput_reference.pngN)r   Úget_image_content_typer]   r   r_   r®   )r%   rM   rN   rO   Úimage_content_types        r'   rS   z%OpenAIVideoConfig._add_image_to_files<  s[   € ô %:×$PÑ$PÐQVÓ$WÐä�eœ^Ô,Ø×Ñ˜z¨E¯J©J¸Ð?QÐ+RÐSÕTà×Ñ˜zÐ,AÀ5ÐJ\Ð+]Ð^Õ_r(   c                 óX   — t        |dd«      xs d}| j                  ||¬«      }||||ffS )z­
        Build a multipart field tuple for a video upload with proper video MIME
        type detection: these paths must send video/mp4, not image/* content types.
        r®   Nzinput_video.mp4)r¯   Úfilename)ÚgetattrÚ_get_video_content_type)r%   r¯   rO   rÎ   Úcontent_types        r'   rÀ   z#OpenAIVideoConfig._video_file_tupleJ  s@   € ô
 " %¨°Ó6ÒKÐ:KˆØ"×:Ñ:ÀÐQYÐ:ÓZˆØ˜X u¨lÐ;Ð<Ð<r(   c                 óF   — |j                  | j                  ||«      «       y r"   )r_   rÀ   )r%   rM   r¯   rO   s       r'   r±   z%OpenAIVideoConfig._add_video_to_filesS  s   € ð 	×Ñ˜$×0Ñ0°¸
ÓCÕDr(   rÎ   c                 ó€  — t        j                  |«      \  }}|r|j                  d«      r|S 	 d}t        |t        «      st        |t
        «      rD|j                  «       }|j                  d«       |j                  d«      }|j                  |«       nt        |t        «      r|d d }d|v ry	 y# t        $ r Y yw xY w)Nzvideo/r(   r   é@   s   ftypz	video/mp4)Ú	mimetypesÚ
guess_typeÚ
startswithr]   r   r   ÚtellÚseekÚreadÚbytesÚ	Exception)r%   r¯   rÎ   Úguessed_content_typeÚ_Úheader_bytesÚcurrent_poss          r'   rÐ   z)OpenAIVideoConfig._get_video_content_type[  sÀ   € Ü"+×"6Ñ"6°xÓ"@ÑÐ˜aÙÐ$8×$CÑ$CÀHÔ$MØ'Ð'ð	ØˆLÜ˜%¤Ô)¬Z¸¼~Ô-NØ%*§Z¡Z£\�Ø—
‘
˜1”Ø$Ÿz™z¨"›~�Ø—
‘
˜;Õ'Ü˜E¤5Ô)Ø$ S b˜z�ð ˜,Ñ&Ø"ð 'ð øô	 ò 	Øð ð		ús   ¯A?B1 Â1	B=Â<B=)NNr"   )NNNN)NNN);Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r`   r^   r4   r   Úboolr8   r9   r   rC   rH   rJ   Útupler   rZ   rQ   ÚhttpxÚResponseÚLiteLLMLoggingObjr   rv   r‚   r   r…   rÛ   r‰   r‹   Úintr’   r›   rŸ   r¡   r£   r§   ÚHeadersr   r­   r   r²   r   rµ   rº   r¼   Úobjectr   rÃ   rÅ   rÇ   rÉ   rS   r   rÀ   r±   rÐ   Ú__classcell__)r&   s   @r'   r    r    )   s�  ø„ ñôð
°ð 
¸ó 
ð2à&Fð2ð ð2ð ð	2ð
 
ó2ð #Ø6:ñàðð ðð �t‘ð	ð
 -¨tÑ3ðð 
óð&0àð0ð ˜‘*ð0ð ð	0ð
 
ó0ð¨ó ð$8àð$8ð ð$8ð ð	$8ð
 /3ð$8ð -ð$8ð ð$8ð 
ˆt�\ 3Ð&Ñ	'ó$8ðLÈ$ð ÐSWó ðD +/Ø$(ñàðð —n‘nðð 'ð	ð
 ! 4™Zðð ˜T‘kðð 
óð> #ñàðð ðð -ð	ð
 ðð �t‘ðð 
ˆs�DˆyÑ	óðN -1ñàðð ðð ð	ð
 -ðð ðð ˜˜c˜‘N TÑ)ðð 
ˆs�DˆyÑ	óð<$à—n‘nð$ð 'ð$ð 
ó	$ð +/ñ	à—n‘nðð 'ðð ! 4™Zð	ð
 
óðD !Ø Ø Ø-1ñ!àð!ð -ð!ð ð	!ð
 �T‰zð!ð �T‰zð!ð �T‰zð!ð ˜#˜s˜(‘^ dÑ*ð!ð 
ˆs�DˆyÑ	ó!ðN +/ñ	'à—n‘nð'ð 'ð'ð ! 4™Zð	'ð
 
ˆc�3ˆh‰ó'ðRàðð ðð -ð	ð
 ðð 
ˆs�DˆyÑ	óð0à—n‘nðð 'ðð 
ó	ðàðð ðð -ð	ð
 ðð 
ˆs�DˆyÑ	óð4 +/ñ	à—n‘nðð 'ðð ! 4™Zð	ð
 
óð"
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfvó 
ðàðð ðð ð	ð
 -ðð ðð 
ˆs�DˆyÑ	óðCà—n‘nðCð 'ðCð 
ó	Cð
àð
ð ð
ð -ð	
ð
 ð
ð 
ˆs�DˆyÑ	ó
ðCà—n‘nðCð 'ðCð 
ó	Cð *.Ø/3Ø;?ñàðð ðð ð	ð
 -ðð ðð   $Ñ&ðð ˜˜f˜Ñ%¨Ñ,ðð !% S¨& [Ñ 1°DÑ 8ðð 
ˆs�G˜C ˜KÑ(¨,¸Ñ*=Ð=Ñ	>óð@ +/Ø$(ñ
à—n‘nð
ð 'ð
ð ! 4™Zð	
ð
 ˜T‘kð
ð 
ó
ð( 04ñàðð ðð ð	ð
 ðð -ðð ðð ˜˜f˜Ñ%¨Ñ,ðð 
ˆs�DˆyÑ	óð2 +/ñ		à—n‘nð	ð 'ð	ð ! 4™Zð		ð
 
ó	ð`à˜˜s C˜x™Ñ)ð`ð ð`ð ð	`ð
 
ó`ð= {ð =Àð =ÈÈcÐS\ÈnÑH]ó =ðEà˜˜s I˜~Ñ.Ñ/ðEð ðEð ð	Eð
 
óEð¨[ð ÀCð ÈC÷ r(   r    )1rÕ   Úcollections.abcr   Úior   r   Útypesr   Útypingr   r   r	   r
   Úurllib.parser   rç   Úhttpx._typesr   r   r   r@   Ú$litellm.litellm_core_utils.url_utilsr   Ú+litellm.llms.base_llm.videos.transformationr   Ú-litellm.llms.openai.image_edit.transformationr   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.openair   Úlitellm.types.routerr   Úlitellm.types.videos.mainr   r   r   Úlitellm.types.videos.utilsr   r   r   Ú*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjr¬   r   Ú_BaseLLMExceptionré   r    r3   r(   r'   ú<module>rÿ      s}   ðÛ Ý #ß &Ý "ß 2Ó 2Ý ã ß =Ñ =ã Ý HÝ GÝ OÝ 7Ý 8Ý 5÷ñ ÷
ñ ñ ÝXåUà*ÐØ(ÑàÐØÐôI	˜õ I	r(   