
    i                     
   d dl mZmZ d dlmZmZmZ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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'y)    )ABCabstractmethod)TYPE_CHECKINGAnyDictListOptionalUnionN)FileDeleted)UserAPIKeyAuth)TwoStepFileUploadConfig)AllMessageValuesCreateFileRequestFileContentRequest%OpenAICreateFileRequestOptionalParamsOpenAIFileObjectOpenAIFilesPurpose)LlmProvidersModelResponse   )
BaseConfig)Logging)Router)HttpxBinaryResponseContentc                       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e   dee   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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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e   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&e$dee   d'ee%   de#fd(Z&y#)*BaseFilesConfigreturnc                      y N selfs    {/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/base_llm/files/transformation.pycustom_llm_providerz#BaseFilesConfig.custom_llm_provider$   s     	    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"   r)   s     r#   get_supported_openai_paramsz+BaseFilesConfig.get_supported_openai_params3   s     	r%   api_baseapi_keyoptional_paramslitellm_paramsdatac                 .    | j                  |||||      S )N)r,   r-   r)   r.   r/   )get_complete_url)r"   r,   r-   r)   r.   r/   r0   s          r#   get_complete_file_urlz%BaseFilesConfig.get_complete_file_url9   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"   r)   r4   r.   r/   s        r#   transform_create_file_requestz-BaseFilesConfig.transform_create_file_requestJ   s      	r%   raw_responselogging_objc                      y r   r    )r"   r)   r7   r8   r/   s        r#   transform_create_file_responsez.BaseFilesConfig.transform_create_file_response\        	r%   file_idc                      y)z>Transform file retrieve request into provider-specific format.Nr    r"   r<   r.   r/   s       r#   transform_retrieve_file_requestz/BaseFilesConfig.transform_retrieve_file_requestf   r;   r%   c                      y)z4Transform file retrieve response into OpenAI format.Nr    r"   r7   r8   r/   s       r#    transform_retrieve_file_responsez0BaseFilesConfig.transform_retrieve_file_responsep   r;   r%   c                      y)z<Transform file delete request into provider-specific format.Nr    r>   s       r#   transform_delete_file_requestz-BaseFilesConfig.transform_delete_file_requestz   r;   r%   r   c                      y)z2Transform file delete response into OpenAI format.Nr    rA   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"   rG   r.   r/   s       r#   transform_list_files_requestz,BaseFilesConfig.transform_list_files_request   r;   r%   c                      y)z0Transform file list response into OpenAI format.Nr    rA   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"   rL   r.   r/   s       r#   transform_file_content_requestz.BaseFilesConfig.transform_file_content_request   r;   r%   r   c                      y)z3Transform file content response into OpenAI format.Nr    rA   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"   r)   rQ   r.   r/   rR   s         r#   transform_requestz!BaseFilesConfig.transform_request   s     "l
 	
r%   Nmodel_responserequest_dataencoding	json_modec                     t        d      )Nz_AudioTranscriptionConfig does not need a response transformation for audio transcription modelsrT   )r"   r)   r7   rW   r8   rX   rQ   r.   r/   rY   r-   rZ   s               r#   transform_responsez"BaseFilesConfig.transform_response   s     "m
 	
r%   )NN)'__name__
__module____qualname__propertyr   r   r$   strr(   r   r   r+   r	   dictr   r3   r
   bytesr6   httpxResponseLiteLLMLoggingObjr   r:   tupler?   rB   rD   rF   rI   rK   rN   rP   r   rV   r   r   boolr\   r    r%   r#   r   r   #   s6   \       	3	4 

3-
 #
 	

 
 
  
"  , 	
  
tS%!::	; " } nn '	
  
    	
 
sDy	  nn ' 	
 
    	
 
sDy	  nn ' 	
 
  #  	
 
sDy	  nn ' 	
 
	  2  	
 
sDy	  nn ' 	
 
& 



 '(

 	


 

 

 


. "&$(

 nn
 &	

 '
 
 '(
 
 
 
 #
 D>
 

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e   dee   de
fd
       Zedee   dee   dedee
   fd       Zed	edee   dedede
f
d       Zed	edee   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"   rk   rl   rm   rn   ro   s         r#   acreate_filezBaseFileEndpoints.acreate_file   s      	   Nr<   c                    K   y wr   r    )r"   r<   rn   rl   s       r#   afile_retrievez BaseFileEndpoints.afile_retrieve         	rr   rG   r0   c                    K   y wr   r    )r"   rG   rn   r0   s       r#   
afile_listzBaseFileEndpoints.afile_list   ru   rr   c                    K   y wr   r    r"   r<   rn   rl   r0   s        r#   afile_deletezBaseFileEndpoints.afile_delete         	rr   r   c                    K   y wr   r    ry   s        r#   afile_contentzBaseFileEndpoints.afile_content   r{   rr   r   )r]   r^   r_   r   r   r   r   ra   Spanr   r   rq   r	   rt   r   r   rw   rz   r}   r    r%   r#   rj   rj      st   .  "&c	
 #' * 
  
 (,	 #+4. V$	
 
  ,- #+4. 	
 
	   #+4. 	
  
   #+4. 	
  
& r%   rj   )(abcr   r   typingr   r   r   r   r	   r
   rd   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   *litellm.litellm_core_utils.litellm_loggingr   _LiteLLMLoggingObjlitellm.routerr   _Routerr   rf   r~   r   rj   r    r%   r#   <module>r      ss    # B B  1 / 7  < ,X0D*DFDFo
j o
d0 0r%   