Ë
    uPêjA/  ã                   óÞ   — d dl Z d dlmZmZ d dlmZ d dlmZmZ d dl	Z	d dl
mZmZ d dl­ d dlmZ d dlmZ er!d d	lmZ d d
lmZ d dlmZ ddlmZ eZeZeZeZneZeZeZeZ G d„ de«      Zy)é    N)ÚABCÚabstractmethod)ÚMapping)ÚTYPE_CHECKINGÚAny)ÚFileContentÚRequestFiles)Ú*)ÚGenericLiteLLMParams)Ú VideoCreateOptionalRequestParams)ÚLogging)ÚCharacterObject)ÚVideoObjecté   ©ÚBaseLLMExceptionc                   ó.  — e Zd Zd„ Zed„ «       Zededefd„«       Z	ede
dededefd„«       Ze	 	 d=d
ededed	z  ded	z  def
d„«       Zededed	z  dedefd„«       Zdefd„Zedededededed
edeeeef   fd„«       Ze	 	 d=dedej,                  deded	z  ded	z  defd„«       Ze	 d>dededed
eded	z  deeef   fd„«       Zedej,                  dedefd„«       Zdej,                  dedefd„Ze	 d>dedededed
edeeef   d	z  deeef   fd„«       Ze	 d>dej,                  deded	z  defd „«       Z e	 	 	 	 d?d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"e	 d>dej,                  deded	z  deeef   fd&„«       Z#edededed
edeeef   f
d'„«       Z$edej,                  dedefd(„«       Z%edededed
edeeef   f
d)„«       Z&e	 d>dej,                  deded	z  defd*„«       Z'd+e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
d0„Z+dej,                  dede)fd1„Z,dededed
edeeef   d	z  f
d2„Z-	 	 	 d@dedededed
ed3e.d	z  deeef   d	z  d4eeef   d	z  deee/ee0f   ed	z  f   fd5„Z1	 	 d=dej,                  deded	z  ded	z  def
d6„Z2	 d>deded7ededed
edeeef   d	z  deeef   fd8„Z3	 d>dej,                  deded	z  defd9„Z4d:ed;e!d
eejj                  z  de6fd<„Z7y	)AÚBaseVideoConfigc                  ó   — y ©N© ©Úselfs    úp/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/base_llm/videos/transformation.pyÚ__init__zBaseVideoConfig.__init__    s   € Øó    c                 ó  — | j                   j                  «       D ��ci c]`  \  }}|j                  d«      sJ|j                  d«      s9t        |t        j
                  t        j                  t        t        f«      s|�||“Œb c}}S c c}}w )NÚ__Ú_abc)	Ú__dict__ÚitemsÚ
startswithÚ
isinstanceÚtypesÚFunctionTypeÚBuiltinFunctionTypeÚclassmethodÚstaticmethod)ÚclsÚkÚvs      r   Ú
get_configzBaseVideoConfig.get_config#   s€   € ð Ÿ™×*Ñ*Ó,÷
á��1Ø—<‘< Ô%Ø—L‘L Ô(ÜØä×&Ñ&Ü×-Ñ-ÜÜ ð	ôð �ð ˆq‰Dó
ð 	
ùó 
s   žA%BÚmodelÚreturnc                  ó   — y r   r   )r   r-   s     r   Úget_supported_openai_paramsz+BaseVideoConfig.get_supported_openai_params6   s   € àr   Úvideo_create_optional_paramsÚdrop_paramsc                  ó   — y r   r   )r   r1   r-   r2   s       r   Úmap_openai_paramsz!BaseVideoConfig.map_openai_params:   ó   € ð 	r   NÚheadersÚapi_keyÚlitellm_paramsc                 ó   — i S r   r   )r   r6   r-   r7   r8   s        r   Úvalidate_environmentz$BaseVideoConfig.validate_environmentC   s	   € ð ˆ	r   Úapi_basec                 ó    — |€t        d«      ‚|S )z{
        OPTIONAL

        Get the complete url for the request

        Some providers need `model` in `api_base`
        zapi_base is required)Ú
ValueError)r   r-   r;   r8   s       r   Úget_complete_urlz BaseVideoConfig.get_complete_urlM   s   € ð ÐÜÐ3Ó4Ð4Øˆr   c                  ó   — y)zÏ
        Whether video create requests without files must still be sent as
        multipart/form-data (the encoding the OpenAI SDK always uses for
        /videos), instead of falling back to JSON.
        Fr   r   s    r   Úuse_multipart_form_dataz'BaseVideoConfig.use_multipart_form_data_   s   € ð r   ÚpromptÚ$video_create_optional_request_paramsc                  ó   — y r   r   )r   r-   rA   r;   rB   r8   r6   s          r   Útransform_video_create_requestz.BaseVideoConfig.transform_video_create_requestg   s   € ð 	r   Úraw_responseÚlogging_objÚcustom_llm_providerÚrequest_datac                  ó   — y r   r   )r   r-   rE   rF   rG   rH   s         r   Útransform_video_create_responsez/BaseVideoConfig.transform_video_create_responses   s   € ð 	r   Úvideo_idÚvariantc                  ó   — y)z¬
        Transform the video content request into a URL and data/params

        Returns:
            Tuple[str, Dict]: (url, params) for the video content request
        Nr   )r   rK   r;   r8   r6   rL   s         r   Útransform_video_content_requestz/BaseVideoConfig.transform_video_content_request~   ó   � r   c                  ó   — y r   r   ©r   rE   rF   s      r   Ú transform_video_content_responsez0BaseVideoConfig.transform_video_content_responseŽ   ó   € ð 	r   c              ƒ   ó0   K  — | j                  ||¬«      S ­w)aÐ  
        Async transform video content download response to bytes.
        Optional method - providers can override if they need async transformations
        (e.g., RunwayML for downloading video from CloudFront URL).

        Default implementation falls back to sync transform_video_content_response.

        Args:
            raw_response: Raw HTTP response
            logging_obj: Logging object

        Returns:
            Video content as bytes
        )rE   rF   )rR   rQ   s      r   Ú&async_transform_video_content_responsez6BaseVideoConfig.async_transform_video_content_response–   s&   è ø€ ð( ×4Ñ4Ø%Ø#ð 5ó 
ð 	
ùs   ‚Ú
extra_bodyc                  ó   — y)zŸ
        Transform the video remix request into a URL and data

        Returns:
            Tuple[str, Dict]: (url, data) for the video remix request
        Nr   )r   rK   rA   r;   r8   r6   rV   s          r   Útransform_video_remix_requestz-BaseVideoConfig.transform_video_remix_request¯   rO   r   c                  ó   — y r   r   ©r   rE   rF   rG   s       r   Útransform_video_remix_responsez.BaseVideoConfig.transform_video_remix_responseÀ   r5   r   ÚafterÚlimitÚorderÚextra_queryc                  ó   — y)z¡
        Transform the video list request into a URL and params

        Returns:
            Tuple[str, Dict]: (url, params) for the video list request
        Nr   )r   r;   r8   r6   r\   r]   r^   r_   s           r   Útransform_video_list_requestz,BaseVideoConfig.transform_video_list_requestÉ   rO   r   c                  ó   — y r   r   rZ   s       r   Útransform_video_list_responsez-BaseVideoConfig.transform_video_list_responseÛ   r5   r   c                  ó   — y)z¡
        Transform the video delete request into a URL and data

        Returns:
            Tuple[str, Dict]: (url, data) for the video delete request
        Nr   ©r   rK   r;   r8   r6   s        r   Útransform_video_delete_requestz.BaseVideoConfig.transform_video_delete_requestä   rO   r   c                  ó   — y r   r   rQ   s      r   Útransform_video_delete_responsez/BaseVideoConfig.transform_video_delete_responseó   rS   r   c                  ó   — y)z®
        Transform the video retrieve request into a URL and data/params

        Returns:
            Tuple[str, Dict]: (url, params) for the video retrieve request
        Nr   re   s        r   Ú'transform_video_status_retrieve_requestz7BaseVideoConfig.transform_video_status_retrieve_requestû   rO   r   c                  ó   — y r   r   rZ   s       r   Ú(transform_video_status_retrieve_responsez8BaseVideoConfig.transform_video_status_retrieve_response
  r5   r   ÚnameÚvideoc                 ó   — t        d«      ‚)zÆ
        Transform the video create character request into a URL and files list (multipart).

        Returns:
            Tuple[str, list]: (url, files_list) for the multipart POST request
        ú9video create character is not supported for this provider©ÚNotImplementedError)r   rm   rn   r;   r8   r6   s         r   Ú(transform_video_create_character_requestz8BaseVideoConfig.transform_video_create_character_request  s   € ô "Ð"]Ó^Ð^r   c                 ó   — t        d«      ‚)Nrp   rq   rQ   s      r   Ú)transform_video_create_character_responsez9BaseVideoConfig.transform_video_create_character_response#  s   € ô
 "Ð"]Ó^Ð^r   Úcharacter_idc                 ó   — t        d«      ‚)z¤
        Transform the video get character request into a URL and params.

        Returns:
            Tuple[str, Dict]: (url, params) for the GET request
        ú6video get character is not supported for this providerrq   )r   rv   r;   r8   r6   s        r   Ú%transform_video_get_character_requestz5BaseVideoConfig.transform_video_get_character_request*  s   € ô "Ð"ZÓ[Ð[r   c                 ó   — t        d«      ‚)Nrx   rq   rQ   s      r   Ú&transform_video_get_character_responsez6BaseVideoConfig.transform_video_get_character_response9  s   € ô
 "Ð"ZÓ[Ð[r   c                  ó   — y)a‘  
        Return (url, body) for a pre-fetch HTTP call that must be made before
        transform_video_edit_request, or None if no pre-fetch is required.

        Providers that need to retrieve the source video before constructing the
        edit request (e.g. Vertex AI) should override this method.  The handler
        uses the existing shared httpx client so the call is properly async.
        Nr   re   s        r   Úget_video_edit_prefetch_paramsz.BaseVideoConfig.get_video_edit_prefetch_params@  s   € ð r   Ú
video_fileÚprefetched_source_datac	                 ó   — t        d«      ‚)aƒ  
        Transform the video edit request into a URL plus either JSON data or
        multipart form fields and files.

        Returns:
            tuple[str, Mapping[str, object], RequestFiles | None]: (url, data,
            files). When files is None the handler sends data as JSON; otherwise
            data holds the form fields and files holds the uploaded source video.
        ú-video edit is not supported for this providerrq   )	r   rA   rK   r;   r8   r6   r~   rV   r   s	            r   Útransform_video_edit_requestz,BaseVideoConfig.transform_video_edit_requestQ  s   € ô( "Ð"QÓRÐRr   c                 ó   — t        d«      ‚)Nr�   rq   )r   rE   rF   rG   rH   s        r   Útransform_video_edit_responsez-BaseVideoConfig.transform_video_edit_responseg  s   € ô "Ð"QÓRÐRr   Úsecondsc                 ó   — t        d«      ‚)z¢
        Transform the video extension request into a URL and JSON data.

        Returns:
            Tuple[str, Dict]: (url, data) for the POST request
        ú2video extension is not supported for this providerrq   )r   rA   rK   r…   r;   r8   r6   rV   s           r   Ú!transform_video_extension_requestz1BaseVideoConfig.transform_video_extension_requestp  s   € ô  "Ð"VÓWÐWr   c                 ó   — t        d«      ‚)Nr‡   rq   rZ   s       r   Ú"transform_video_extension_responsez2BaseVideoConfig.transform_video_extension_response‚  s   € ô "Ð"VÓWÐWr   Úerror_messageÚstatus_codec                 ó$   — ddl m}  ||||¬«      ‚)Nr   r   )rŒ   Úmessager6   )Úchat.transformationr   )r   r‹   rŒ   r6   r   s        r   Úget_error_classzBaseVideoConfig.get_error_classŠ  s   € Ý:áØ#Ø!Øô
ð 	
r   )NNr   )NNNN)NNN)8Ú__name__Ú
__module__Ú__qualname__r   r'   r,   r   ÚstrÚlistr0   r   ÚboolÚdictr4   r   r:   r>   r@   Útupler	   rD   ÚhttpxÚResponseÚLiteLLMLoggingObjr   rJ   rN   ÚbytesrR   rU   r   rX   r[   Úintra   rc   rf   rh   rj   rl   rs   r   ru   ry   r{   r}   r   r   Úobjectr‚   r„   rˆ   rŠ   ÚHeadersr   r�   r   r   r   r   r      sI  „ òð ñ
ó ð
ð$ ð°ð ¸ò ó ðð ðà&Fðð ðð ð	ð
 
òó ðð ð
 #Ø6:ñàðð ðð �t‘ð	ð
 -¨tÑ3ðð 
òó ðð ðàðð ˜‘*ðð ð	ð
 
òó ðð"¨ó ð ð	àð	ð ð	ð ð		ð
 /3ð	ð -ð	ð ð	ð 
ˆt�\ 3Ð&Ñ	'ò	ó ð	ð ð +/Ø$(ñàðð —n‘nðð 'ð	ð
 ! 4™Zðð ˜T‘kðð 
òó ðð ð #ñàðð ðð -ð	ð
 ðð �t‘ðð 
ˆs�DˆyÑ	òó ðð ðà—n‘nðð 'ðð 
ò	ó ðð
à—n‘nð
ð 'ð
ð 
ó	
ð2 ð -1ñàðð ðð ð	ð
 -ðð ðð ˜˜c˜‘N TÑ)ðð 
ˆs�DˆyÑ	òó ðð  ð
 +/ñ	à—n‘nðð 'ðð ! 4™Zð	ð
 
òó ðð ð !Ø Ø Ø-1ñàðð -ðð ð	ð
 �T‰zðð �T‰zðð �T‰zðð ˜#˜s˜(‘^ dÑ*ðð 
ˆs�DˆyÑ	òó ðð" ð
 +/ñ	à—n‘nðð 'ðð ! 4™Zð	ð
 
ˆc�3ˆh‰òó ðð ðàðð ðð -ð	ð
 ðð 
ˆs�DˆyÑ	òó ðð ðà—n‘nðð 'ðð 
ò	ó ðð ðàðð ðð -ð	ð
 ðð 
ˆs�DˆyÑ	òó ðð ð
 +/ñ	à—n‘nðð 'ðð ! 4™Zð	ð
 
òó ðð_àð_ð ð_ð ð	_ð
 -ð_ð ð_ð 
ˆs�DˆyÑ	ó_ð _à—n‘nð_ð 'ð_ð 
ó	_ð\àð\ð ð\ð -ð	\ð
 ð\ð 
ˆs�DˆyÑ	ó\ð\à—n‘nð\ð 'ð\ð 
ó	\ðàðð ðð -ð	ð
 ðð 
ˆs�DˆyÑ	˜DÑ	 óð0 *.Ø,0Ø8<ñSàðSð ðSð ð	Sð
 -ðSð ðSð   $Ñ&ðSð ˜˜c˜‘N TÑ)ðSð !% S¨# X¡°Ñ 5ðSð 
ˆs�G˜C ˜KÑ(¨,¸Ñ*=Ð=Ñ	>óSð4 +/Ø$(ñSà—n‘nðSð 'ðSð ! 4™Zð	Sð
 ˜T‘kðSð 
óSð" -1ñXàðXð ðXð ð	Xð
 ðXð -ðXð ðXð ˜˜c˜‘N TÑ)ðXð 
ˆs�DˆyÑ	óXð, +/ñ	Xà—n‘nðXð 'ðXð ! 4™Zð	Xð
 
óXð
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfvô 
r   r   )r$   Úabcr   r   Úcollections.abcr   Útypingr   r   r™   Úhttpx._typesr   r	   Úlitellm.types.responses.mainÚlitellm.types.routerr   Úlitellm.types.videos.mainr   Ú*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjr   Ú_CharacterObjectr   Ú_VideoObjectr�   r   Ú_BaseLLMExceptionr›   r   r   r   r   ú<module>r¬      si   ðÛ ß #Ý #ß %ã ß 2ä *Ý 5Ý FáÝXÝMÝEåKà*ÐØ(ÐØ€KØ&�OàÐØÐØ€KØ€Oôr
�cõ r
r   