Ë
    uPêj7  ã                   ó(  — d dl mZmZ d dlm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mZmZmZmZmZ d d	lmZmZ d
dlmZ erd dlZd dlmZ d dl m!Z" d dlm#Z# eZ$eZ%e"Z!neZ$eZ%eZ! G d„ de«      Z& G d„ de«      Z' G d„ de«      Z(y)é    )ÚABCÚabstractmethod)ÚIterator)ÚTYPE_CHECKINGÚAnyÚUnionN)ÚFileDeleted)ÚUserAPIKeyAuth)ÚTwoStepFileUploadConfig)ÚAllMessageValuesÚCreateFileRequestÚFileContentRequestÚFileListPageÚ%OpenAICreateFileRequestOptionalParamsÚOpenAIFileObject)ÚLlmProvidersÚModelResponseé   )Ú
BaseConfig)ÚLogging)ÚRouter)ÚHttpxBinaryResponseContentc                   ó,   — e Zd ZdZedee   fd„«       Zy)ÚBaseFileUploadStreamaè  Re-iterable request body that yields an upload's bytes lazily.

    A provider returns one of these (inside the upload config from
    ``transform_create_file_request``) when the upload body can be produced
    incrementally; the HTTP handler then sends it in bounded chunks instead of
    buffering the whole payload, which is what exhausts memory on large uploads.

    ``iter_bytes`` must return a fresh iterator each call so the body can be
    replayed if the upload is retried.
    Úreturnc                  ó   — y ©N© ©Úselfs    úo/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/base_llm/files/transformation.pyÚ
iter_byteszBaseFileUploadStream.iter_bytes2   s   € Ø-0ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Úbytesr"   r   r#   r!   r   r   &   s    „ ñ	ð Ø0˜H U™OÒ0ó Ù0r#   r   c                   ó   — e Zd Zeedefd„«       «       Zedefd„«       Zedede	e
   fd„«       Zdedz  dedz  ded	ed
edefd„Zededed	ed
edeeeedf   f
d„«       Zededz  dej&                  ded
edef
d„«       Zeded	ed
edeeef   fd„«       Zedej&                  ded
edefd„«       Zeded	ed
edeeef   fd„«       Zedej&                  ded
eddfd„«       Zededz  d	ed
edeeef   fd„«       Zedej&                  ded
ede	e   fd„«       Zeddd	ed
edeeef   fd„«       Zedej&                  ded
eddfd „«       Zded!e	e    d	ed
ed"edefd#„Z!	 	 d*dedej&                  d$e"ded%ed!e	e    d	ed
ed&d'dedz  d(e#dz  de"fd)„Z$y)+ÚBaseFilesConfigr   c                  ó   — y r   r   r   s    r!   Úcustom_llm_providerz#BaseFilesConfig.custom_llm_provider7   s   € ð 	r#   c                  ó   — y)a  
        HTTP method to use for file uploads.
        Override this in provider configs if they need different methods.
        Default is POST (used by most providers like OpenAI, Anthropic).
        S3-based providers like Bedrock should return "PUT".
        ÚPOSTr   r   s    r!   Úfile_upload_http_methodz'BaseFilesConfig.file_upload_http_method<   s   € ð r#   Úmodelc                  ó   — y r   r   )r    r0   s     r!   Úget_supported_openai_paramsz+BaseFilesConfig.get_supported_openai_paramsF   s   € àr#   Úapi_baseNÚapi_keyÚoptional_paramsÚlitellm_paramsÚdatac                 ó.   — | j                  |||||¬«      S )N)r3   r4   r0   r5   r6   )Úget_complete_url)r    r3   r4   r0   r5   r6   r7   s          r!   Úget_complete_file_urlz%BaseFilesConfig.get_complete_file_urlJ   s+   € ð ×$Ñ$ØØØØ+Ø)ð %ó 
ð 	
r#   Úcreate_file_datar   c                  ó   — y)aE  
        Transform OpenAI-style file creation request into provider-specific format.

        Returns:
            - dict: For pre-signed single-step uploads (e.g., Bedrock S3)
            - str/bytes: For traditional file uploads
            - TwoStepFileUploadConfig: For two-step upload process (e.g., Manus, GCS)
        Nr   )r    r0   r;   r5   r6   s        r!   Útransform_create_file_requestz-BaseFilesConfig.transform_create_file_request[   ó   � r#   Úraw_responseÚlogging_objc                  ó   — y r   r   )r    r0   r?   r@   r6   s        r!   Útransform_create_file_responsez.BaseFilesConfig.transform_create_file_responsel   s   € ð 	r#   Úfile_idc                  ó   — y)z>Transform file retrieve request into provider-specific format.Nr   ©r    rC   r5   r6   s       r!   Útransform_retrieve_file_requestz/BaseFilesConfig.transform_retrieve_file_requestv   r>   r#   c                  ó   — y)z4Transform file retrieve response into OpenAI format.Nr   ©r    r?   r@   r6   s       r!   Ú transform_retrieve_file_responsez0BaseFilesConfig.transform_retrieve_file_response   r>   r#   c                  ó   — y)z<Transform file delete request into provider-specific format.Nr   rE   s       r!   Útransform_delete_file_requestz-BaseFilesConfig.transform_delete_file_requestˆ   r>   r#   r	   c                  ó   — y)z2Transform file delete response into OpenAI format.Nr   rH   s       r!   Útransform_delete_file_responsez.BaseFilesConfig.transform_delete_file_response‘   r>   r#   Úpurposec                  ó   — y)z:Transform file list request into provider-specific format.Nr   )r    rN   r5   r6   s       r!   Útransform_list_files_requestz,BaseFilesConfig.transform_list_files_requestš   r>   r#   c                  ó   — y)z0Transform file list response into OpenAI format.Nr   rH   s       r!   Útransform_list_files_responsez-BaseFilesConfig.transform_list_files_response£   r>   r#   Úfile_content_requestr   c                  ó   — y)z=Transform file content request into provider-specific format.Nr   )r    rS   r5   r6   s       r!   Útransform_file_content_requestz.BaseFilesConfig.transform_file_content_request¬   r>   r#   r   c                  ó   — y)z3Transform file content response into OpenAI format.Nr   rH   s       r!   Útransform_file_content_responsez/BaseFilesConfig.transform_file_content_responseµ   r>   r#   ÚmessagesÚheadersc                 ó   — t        d«      ‚)Nz^AudioTranscriptionConfig does not need a request transformation for audio transcription models©ÚNotImplementedError)r    r0   rX   r5   r6   rY   s         r!   Útransform_requestz!BaseFilesConfig.transform_request¾   s   € ô "Øló
ð 	
r#   Úmodel_responseÚrequest_dataÚencodingztiktoken.Encoding | NoneÚ	json_modec                 ó   — t        d«      ‚)Nz_AudioTranscriptionConfig does not need a response transformation for audio transcription modelsr[   )r    r0   r?   r^   r@   r_   rX   r5   r6   r`   r4   ra   s               r!   Útransform_responsez"BaseFilesConfig.transform_responseÊ   s   € ô "Ømó
ð 	
r#   ©NN)%r$   r%   r&   Úpropertyr   r   r,   Ústrr/   Úlistr   r2   Údictr   r:   r   r(   r=   ÚhttpxÚResponseÚLiteLLMLoggingObjr   rB   ÚtuplerF   rI   rK   rM   rP   rR   rU   rW   r   r]   r   Úboolrc   r   r#   r!   r*   r*   6   s^  „ ØØð \ò ó ó ðð ð¨ò ó ðð ð°ð ¸Ð>cÑ9dò ó ðð
à˜‘*ð
ð �t‘ð
ð ð	
ð
 ð
ð ð
ð  ó
ð" ðàðð ,ðð ð	ð
 ðð 
ˆt�S˜%Ð!:Ð:Ñ	;òó ðð  ðà�T‰zðð —n‘nðð 'ð	ð
 ðð 
òó ðð ðMàðMð ðMð ð	Mð
 
ˆs�DˆyÑ	òMó ðMð ðCà—n‘nðCð 'ðCð ð	Cð
 
òCó ðCð ðKàðKð ðKð ð	Kð
 
ˆs�DˆyÑ	òKó ðKð ðAà—n‘nðAð 'ðAð ð	Að
 
òAó ðAð ðIà�t‘ðIð ðIð ð	Ið
 
ˆs�DˆyÑ	òIó ðIð ð?à—n‘nð?ð 'ð?ð ð	?ð
 
ÐÑ	ò?ó ð?ð ðLà2ðLð ðLð ð	Lð
 
ˆs�DˆyÑ	òLó ðLð ðBà—n‘nðBð 'ðBð ð	Bð
 
&òBó ðBð

àð

ð Ð'Ñ(ð

ð ð	

ð
 ð

ð ð

ð 
ó

ð. #Ø!%ñ
àð
ð —n‘nð
ð &ð	
ð
 'ð
ð ð
ð Ð'Ñ(ð
ð ð
ð ð
ð -ð
ð �t‘ð
ð ˜$‘;ð
ð 
ô
r#   r*   c                   ó  — e Zd Zedededee   dede	de
fd„«       Ze	 dd	ededz  dedz  de
fd
„«       Ze	 	 ddedz  dedz  de	dedz  dedz  dedefd„«       Zed	ededz  dedede
f
d„«       Zed	ededz  dededdf
d„«       Zy)ÚBaseFileEndpointsÚcreate_file_requestÚ
llm_routerÚtarget_model_names_listÚlitellm_parent_otel_spanÚuser_api_key_dictr   c              ƒ   ó   K  — y ­wr   r   )r    rp   rq   rr   rs   rt   s         r!   Úacreate_filezBaseFileEndpoints.acreate_fileÞ   s   è ø€ ð 	ùó   ‚NrC   c              ƒ   ó   K  — y ­wr   r   )r    rC   rs   rq   s       r!   Úafile_retrievez BaseFileEndpoints.afile_retrieveé   s   è ø€ ð 	ùrw   rN   ÚlimitÚafterr7   c              ‹   ó   K  — y ­wr   r   )r    rN   rs   rt   rz   r{   r7   s          r!   Ú
afile_listzBaseFileEndpoints.afile_listò   s   è ø€ ð 	ùrw   c              ‹   ó   K  — y ­wr   r   ©r    rC   rs   rq   r7   s        r!   Úafile_deletezBaseFileEndpoints.afile_deleteþ   ó   è ø€ ð 	ùrw   r   c              ‹   ó   K  — y ­wr   r   r   s        r!   Úafile_contentzBaseFileEndpoints.afile_content  r�   rw   r   rd   )r$   r%   r&   r   r   r   rg   rf   ÚSpanr
   r   rv   ry   Úintrh   r   r}   r€   rƒ   r   r#   r!   ro   ro   Ý   s™  „ Øðà.ðð ðð "& c¡ð	ð
 #'ðð *ðð 
òó ðð ð
 %)ñ	àðð #'¨¡+ðð ˜T‘Mð	ð
 
òó ðð ð !Ø ñ	à�t‘ð	ð #'¨¡+ð	ð *ð		ð
 �T‰zð	ð �T‰zð	ð ð	ð 
ò	ó ð	ð ðàðð #'¨¡+ðð ð	ð
 ðð 
òó ðð ðàðð #'¨¡+ðð ð	ð
 ðð 
&òó ñr#   ro   ))Úabcr   r   Úcollections.abcr   Útypingr   r   r   ri   Úopenai.types.file_deletedr	   Úlitellm.proxy._typesr
   Úlitellm.types.filesr   Úlitellm.types.llms.openair   r   r   r   r   r   Úlitellm.types.utilsr   r   Úchat.transformationr   ÚtiktokenÚ*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjÚlitellm.routerr   Ú_Routerr   rk   r„   r   r*   ro   r   r#   r!   ú<module>r”      s…   ðß #Ý $ß ,Ñ ,ã Ý 1å /Ý 7÷÷ ÷ <å ,áÛåXÝ0ÝDà*ÐØ€DØ�FàÐØ€DØ€Fô1˜3ô 1ô d
�jô d
ôN3˜õ 3r#   