Ë
    tPêjí¡  ã                   óž  — U d Z ddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZ ddlZed   Zed   Zed   Zed	   ZddlZdd
lm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! ddl"m#Z# ddl$m%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/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<­ ddl=m>Z>m?Z? ddl@mAZAmBZBmCZCmDZD  e,«       ZEdeeFz  dz  deGfd„ZH e2«       ZIeeJd<    e%«       ZKeeJd <    e4«       ZLeeJd!<    e'«       ZMeeJd"<   eB	 	 	 	 d=d#e9d$ed%   d&e8dz  ded'eNeFeFf   dz  d(eNeFeFf   dz  de;fd)„«       ZOeB	 	 	 	 d>d#e9d$ed%   d&e8dz  dedz  d'eNeFeFf   dz  d(eNeFeFf   dz  de;eeee;f   z  fd*„«       ZPeB	 	 	 d?d+eFded'eNeFeFf   dz  d(eNeFeFf   dz  de;f
d,„«       ZQeB	 	 	 d?d+eFded'eNeFeFf   dz  d(eNeFeFf   dz  de1f
d-„«       ZReB	 	 	 d?d+eFded'eNeFeFf   dz  d(eNeFeFf   dz  deeee1f   f
d.„«       ZSeB	 	 	 	 d=d+eFd/eFdz  deeFz  d'eNeFeFf   dz  d(eNeFeFf   dz  de0fd0„«       ZTeB	 	 	 	 d@ded$eFdz  d'eNeFeFf   dz  d(eNeFeFf   dz  fd1„«       ZUeB	 	 	 	 d@ded$eFdz  d'eNeFeFf   dz  d(eNeFeFf   dz  fd2„«       ZVeB	 	 	 	 	 dAd+eFded'eNeFeFf   dz  d(eNeFeFf   dz  d3eWd4eGde:ez  fd5„«       ZXeB	 	 	 	 	 	 dBd+eFd/eFdz  deeFz  dz  d'eNeFeFf   dz  d(eNeFeFf   dz  d3eWd4eGde:ez  eeee:f   z  eeeef   z  fd6„«       ZYd+eFd/eFdz  deeFz  dz  d'eNeFeFf   dz  d(eNeFeFf   dz  d3eWd7eZd8e[ej¸                  z  d9e!dz  d:eGd;edz  deeeeef   z  fd<„Z]y)Cz_
Main File for Files API implementation

https://platform.openai.com/docs/api-reference/files

é    N)Ú	Coroutine)Úpartial)ÚAnyÚFinalÚLiteralÚcast)	ÚopenaiÚazureÚgeminiÚ	vertex_aiÚbedrockÚhosted_vllmÚlitellm_proxyÚmanusÚ	anthropic)r	   r
   r   r   r   r   r   r   )r	   r
   r   r   r   r   )r	   r
   r   r   r   )Úget_secret_str)ÚFileContentStreamingResponse)ÚFileContentProviderÚFileContentStreamingResult)Ú/add_trusted_model_credentials_to_litellm_params)Úget_llm_provider©ÚLogging)Úget_azure_credentials)ÚAzureOpenAIFilesAPI)ÚBedrockFilesHandler)ÚAsyncHTTPHandlerÚHTTPHandler)ÚBaseLLMHTTPHandler)Úget_openai_credentials)ÚFileDeletedÚ
FileObjectÚOpenAIFilesAPI)ÚVertexAIFilesHandler)ÚCreateFileRequestÚFileContentRequestÚFileExpiresAfterÚ	FileTypesÚHttpxBinaryResponseContentÚOpenAIFileObject)Ú*)Ú+OPENAI_COMPATIBLE_BATCH_AND_FILES_PROVIDERSÚLlmProviders)ÚProviderConfigManagerÚclientÚget_litellm_paramsÚsupports_httpx_timeoutÚcustom_llm_providerÚreturnc                 ó   — | t         v S )zN
    Return whether file content streaming is supported for the provider.
    )r,   )r2   s    úW/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/files/main.pyÚ_should_sdk_support_streamingr6   K   s   € ð Ô"MÐMÐMó    Úopenai_files_instanceÚazure_files_instanceÚvertex_ai_files_instanceÚbedrock_files_instanceÚfileÚpurpose)Ú
assistantsÚbatchz	fine-tuneÚmessagesÚexpires_afterÚextra_headersÚ
extra_bodyc              ‹   ót  K  — 	 t        j                  «       }d|d<   | |||||dœ|¥}t        t        fi |¤Ž}	t	        j
                  «       }
t        |
j                  |	«      }|j                  d|«      ƒ d{  –—† }t        j                  |«      r|ƒ d{  –—† }|S |}|S 7 Œ)7 Œ# t        $ r}|‚d}~ww xY w­w)zÅ
    Async: Files are used to upload documents that can be used with features like Assistants, Fine-tuning, and Batch API.

    LiteLLM Equivalent of POST: POST https://api.openai.com/v1/files
    TÚacreate_file)r<   r=   rA   r2   rB   rC   N)
ÚasyncioÚget_event_loopr   Úcreate_fileÚcontextvarsÚcopy_contextÚrunÚrun_in_executorÚiscoroutineÚ	Exception)r<   r=   rA   r2   rB   rC   ÚkwargsÚloopÚ	call_argsÚfuncÚctxÚfunc_with_contextÚinit_responseÚresponseÚes                  r5   rE   rE   [   s×   è ø€ ðÜ×,Ñ,Ó.ˆØ!%ˆˆ~Ñð ØØ*Ø#6Ø*Ø$ñ
ð ð
ˆ	ô œkÑ7¨YÑ7ˆä ×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*ˆHð ˆð %ˆHàˆð  Søà*ùô
 ò ØˆûðüsY   ‚B8„A3B% Á7B!Á8B% ÂB#ÂB% ÂB8ÂB% Â B8Â!B% Â#B% Â%	B5Â.B0Â0B5Â5B8c                 óè  — 	 |j                  dd«      du }t        di |¤Ž}t        di |¤Ž}	t        t        dz  |j                  d«      «      }
|
€t        d«      ‚|j                  d«      }|j                  xs |j                  dd	«      xs d	}|�Ht        |t        j                  «      r.t        t        t        |«      «      du r|j                  xs d	}|}n,|�&t        |t        j                  «      st        |«      }n|€d
}|�t        | ||||¬«      }nt        | |||¬«      }t!        j"                  dt%        |«      ¬«      }|�St&        j)                  ||	||xs i |j*                  |j,                  |
||�t        |t.        t0        f«      r|nd|¬«
      }|S |t2        v rrt5        |j*                  |j,                  |j6                  ¬«      }t8        j)                  ||j*                  |j,                  ||j:                  |j6                  |¬«      }|S |dk(  rst=        |j*                  |j,                  |j>                  ¬«      }t@        j)                  ||j*                  |j,                  |j>                  ||j:                  ||	¬«      }|S tB        jD                  jG                  d|› d�d|t        jH                  ddt        jJ                  dd¬«      ¬«      ¬«      ‚# tL        $ r}|‚d}~ww xY w) zø
    Files are used to upload documents that can be used with features like Assistants, Fine-tuning, and Batch API.

    LiteLLM Equivalent of POST: POST https://api.openai.com/v1/files

    Specify either provider_list or custom_llm_provider.
    rE   FTNÚlitellm_logging_objzlogging_obj is requiredr/   Úrequest_timeoutéX  ç     À‚@)r<   r=   rA   rB   rC   )r<   r=   rB   rC   Ú ©ÚmodelÚprovider)
Úprovider_configÚlitellm_paramsÚcreate_file_dataÚheadersÚapi_baseÚapi_keyÚlogging_objÚ	_is_asyncr/   Útimeout©re   rf   Úorganization)rh   re   rf   ri   Úmax_retriesrk   rc   r
   ©re   rf   Úapi_version)rh   re   rf   rn   ri   rl   rc   rb   úLiteLLM doesn't support z^ for 'create_file'. Only ['openai', 'azure', 'vertex_ai', 'manus', 'anthropic'] are supported.ún/aé�  úUnsupported providerrH   ú"https://github.com/BerriAI/litellm©ÚmethodÚurl©Ústatus_codeÚcontentÚrequest©Úmessager_   Úllm_providerrV   © )'ÚpopÚGenericLiteLLMParamsÚdictr   ÚLiteLLMLoggingObjÚgetÚ
ValueErrorri   Ú
isinstanceÚhttpxÚTimeoutr1   ÚstrÚreadÚfloatr%   r.   Úget_provider_files_configr-   Úbase_llm_http_handlerrH   re   rf   r   r   r,   r    rk   r8   rl   r   rn   r9   ÚlitellmÚ
exceptionsÚBadRequestErrorÚResponseÚRequestrN   )r<   r=   rA   r2   rB   rC   rO   rh   Úoptional_paramsÚlitellm_params_dictrg   r/   ri   Úread_timeoutÚ_create_file_requestra   rV   Úopenai_credsÚazure_credsrW   s                       r5   rH   rH   ˆ   s*  € ð"fØ!Ÿ:™: n°eÓ<ÀÐDˆ	Ü!5Ñ!?¸Ñ!?ˆÜ%)¡^¨F¡^ÐÜ!Ô"3°dÑ":¸F¿J¹JÐG\Ó<]Ó^ˆØÐÜÐ6Ó7Ð7ØŸ
™
 8Ó,ˆð "×)Ñ)ÒV¨V¯Z©ZÐ8IÈ3Ó-OÒVÐSVˆð ÐÜ˜7¤E§M¡MÔ2Ü&¤t¬CÐ1DÓ'EÓFÈ%ÑOà")§,¡,Ò"5°#ˆLØ"‰GØÐ ¬°G¼U¿]¹]Ô)KÜ˜G“n‰GØˆ_ØˆGàÐ$Ü#4ØØØ+Ø+Ø%ô$Ñ ô $5ØØØ+Ø%ô	$Ð ô "7×!PÑ!PØÜ!Ð"5Ó6ô"
ˆð Ð&Ü,×8Ñ8Ø /Ø2Ø!5Ø%Ò+¨Ø(×1Ñ1Ø'×/Ñ/Ø'Ø#Ø"(Ð"4¼ÀFÌ[ÔZjÐLkÔ9l™ÐrvØð 9ó ˆHðl ˆðU !Ô$OÑOÜ"8Ø(×1Ñ1Ø'×/Ñ/Ø,×9Ñ9ô#ˆLô
 -×8Ñ8Ø#Ø%×.Ñ.Ø$×,Ñ,ØØ+×7Ñ7Ø)×6Ñ6Ø!5ð 9ó ˆHðH ˆð7 ! GÒ+Ü!6Ø(×1Ñ1Ø'×/Ñ/Ø+×7Ñ7ô"ˆKô
 ,×7Ñ7Ø#Ø$×-Ñ-Ø#×+Ñ+Ø'×3Ñ3ØØ+×7Ñ7Ø!5Ø2ð 8ó 	ˆHð* ˆô ×$Ñ$×4Ñ4Ø2Ð3FÐ2Gð  Hfð  gØØ0ÜŸ™Ø #Ø2Ü!ŸM™M°ÐDhÔiôð	 5ó 	ð 	øô ò Øˆûðús-   ‚FK! ÆA9K! ÈA7K! ÊAK! Ë!	K1Ë*K,Ë,K1Úfile_idc              ‹   ó’  K  — 	 t        j                  «       }d|d<   t        t        | |||fi |¤Ž}t	        j
                  «       }t        |j                  |«      }|j                  d|«      ƒ d{  –—† }	t        j                  |	«      r|	ƒ d{  –—† }
n|	}
t        di |
j                  «       ¤ŽS 7 Œ?7 Œ"# t        $ r}|‚d}~ww xY w­w)úa
    Async: Get file contents

    LiteLLM Equivalent of GET https://api.openai.com/v1/files
    TÚis_asyncNr~   )rF   rG   r   Úfile_retrieverI   rJ   rK   rL   rM   r*   Ú
model_dumprN   )r˜   r2   rB   rC   rO   rP   rR   rS   rT   rU   rV   rW   s               r5   Úafile_retrieverž     sÑ   è ø€ ðÜ×,Ñ,Ó.ˆØ!ˆˆzÑô ÜØØØØñ
ð ñ
ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*‰Hà$ˆHäÑ8 (×"5Ñ"5Ó"7Ñ8Ð8ð  Søà*ùô
 ò ØˆûðüsM   ‚C„A,B4 Á0B0Á1B4 ÂB2ÂB4 Â/CÂ0B4 Â2B4 Â4	CÂ=B?Â?CÃCc                 ó|  — 	 t        d&i |¤Ž}|j                  xs |j                  dd«      xs d}|�:t        |t        j
                  «      r t        |«      du r|j                  xs d}|}n,|�&t        |t        j
                  «      st        |«      }n|€d}|j                  dd«      du }|t        v rrt        |j                  |j                  |j                  ¬«      }	t        j!                  | ||	j                  |	j                  ||j"                  |	j                  ¬	«      }
�nô|d
k(  rrt%        |j                  |j                  |j&                  ¬«      }t(        j!                  ||j                  |j                  |j&                  ||j"                  | ¬«      }
�n}t+        j,                  dt/        |«      ¬«      }|��t1        d&i |¤Ž}t3        ||¬«       |j                  |d<   |j                  |d<   |j                  d«      }|€rddlm}  |dg d|rdndt9        j8                  «       |j                  dt;        t=        j>                  «       «      «      t;        |j                  d«      xs d«      ¬«      }|j                  d«      }t@        j!                  | |||xs i |||�t        |tB        tD        f«      r|nd|¬«      }
nRtF        jH                  jK                  d|› d�d|t	        jL                  dd t	        jN                  d!d"¬#«      ¬$«      ¬%«      ‚tQ        tR        |
«      S # tT        $ r}|‚d}~ww xY w)'ú{
    Returns the contents of the specified file.

    LiteLLM Equivalent of POST: POST https://api.openai.com/v1/files
    rZ   r[   NFr\   r›   Trj   ©r˜   rh   re   rf   ri   rl   rk   r
   rm   )rh   re   rf   rn   ri   rl   r˜   r]   r^   ©r“   rO   rf   re   rY   r   r   rž   rœ   Úlitellm_call_idÚid©r_   r@   ÚstreamÚ	call_typeÚ
start_timer£   Úfunction_idr/   ©r˜   ra   rb   rd   rg   rh   r/   ri   ro   zU for 'file_retrieve'. Only 'openai', 'azure', 'manus', and 'anthropic' are supported.rp   rq   rr   Úcreate_threadrs   rt   rw   r{   r~   )+r€   ri   rƒ   r…   r†   r‡   r1   r‰   rŠ   r   r,   r    re   rf   rk   r8   Úretrieve_filerl   r   rn   r9   r.   r‹   r-   r0   r   Ú*litellm.litellm_core_utils.litellm_loggingr   Útimerˆ   Úuuid_moduleÚuuid4rŒ   r   r   r�   rŽ   r�   r�   r‘   r   r"   rN   )r˜   r2   rB   rC   rO   r’   ri   r”   rh   r–   rV   r—   ra   r“   rg   r‚   r/   rW   s                     r5   rœ   rœ   +  sE  € ðoÜ!5Ñ!?¸Ñ!?ˆà!×)Ñ)ÒV¨V¯Z©ZÐ8IÈ3Ó-OÒVÐSVˆð ÐÜ˜7¤E§M¡MÔ2Ü&Ð':Ó;¸uÑDà")§,¡,Ò"5°#ˆLØ"‰GØÐ ¬°G¼U¿]¹]Ô)KÜ˜G“n‰GØˆ_ØˆGà!Ÿ:™: j°%Ó8¸DÐ@ˆ	àÔ"MÑMÜ"8Ø(×1Ñ1Ø'×/Ñ/Ø,×9Ñ9ô#ˆLô
 -×:Ñ:ØØ#Ø%×.Ñ.Ø$×,Ñ,ØØ+×7Ñ7Ø)×6Ñ6ð ;ó ŠHð ! GÒ+Ü!6Ø(×1Ñ1Ø'×/Ñ/Ø+×7Ñ7ô"ˆKô
 ,×9Ñ9Ø#Ø$×-Ñ-Ø#×+Ñ+Ø'×3Ñ3ØØ+×7Ñ7Øð :ó ŠHô &;×%TÑ%TØÜ%Ð&9Ó:ô&ˆOð Ñ*Ü-?Ñ-IÀ&Ñ-IÐ#Ü?Ø(;Ø!õð 2A×1HÑ1HÐ# IÑ.Ø2A×2JÑ2JÐ# JÑ/à$Ÿj™jÐ)>Ó?�ØÐ&õñ #4Ø Ø!#Ø$Ù6?Ñ"2À_Ü#'§9¡9£;Ø(.¯
©
Ð3DÄcÌ+×J[ÑJ[ÓJ]ÓF^Ó(_Ü$'¨¯
©
°4Ó(8Ò(>¸BÓ$?ô#�Kð !'§
¡
¨8Ó 4�Ü0×>Ñ>Ø#Ø$3Ø#6Ø)Ò/¨RØ +Ø'à"(Ð"4¼ÀFÌ[ÔZjÐLkÔ9l™Ðrvà#ð ?ó ‘ô ×(Ñ(×8Ñ8Ø6Ð7JÐ6Kð  Lað  bØØ!4Ü"Ÿ^™^Ø$'Ø 6Ü %§¡Ø#2Ø Dô!ôð	 9ó ð ô ”J Ó)Ð)øÜò Øˆûðús   ‚L(L+ Ì+	L;Ì4L6Ì6L;c              ‹   ó¦  K  — 	 t        j                  «       }|j                  dd«      }d|d<   t        t        | ||||fi |¤Ž}t        j                  «       }t        |j                  |«      }	|j                  d|	«      ƒ d{  –—† }
t        j                  |
«      r|
ƒ d{  –—† }n|
}t        t        |«      S 7 Œ67 Œ# t        $ r}|‚d}~ww xY w­w)z^
    Async: Delete file

    LiteLLM Equivalent of DELETE https://api.openai.com/v1/files
    r_   NTr›   )rF   rG   r   r   Úfile_deleterI   rJ   rK   rL   rM   r   r!   rN   )r˜   r2   rB   rC   rO   rP   r_   rR   rS   rT   rU   rV   rW   s                r5   Úafile_deleter³   «  sÚ   è ø€ ðÜ×,Ñ,Ó.ˆØ—z‘z '¨4Ó0ˆØ!ˆˆzÑô ÜØØØØØñ
ð ñ
ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*‰Hà$ˆHä”K Ó*Ð*ð  Søà*ùô
 ò ØˆûðüsM   ‚C„A?B> ÂB:ÂB> Â"B<Â#B> Â9CÂ:B> Â<B> Â>	CÃC	Ã	CÃCr_   c                 óÆ  — 	 	 |�t        ||«      \  }}}}t        d&i |¤Ž}t        d&i |¤Ž}t	        ||¬«       |j
                  xs |j                  dd«      xs d}	|j                  d«      }
|	�:t        |	t        j                  «      r t        |«      du r|	j                  xs d}|}	n,|	�&t        |	t        j                  «      st        |	«      }	n|	€d}	|j                  dd«      d	u }|t        v rrt        |j                   |j"                  |j$                  ¬
«      }t&        j)                  | ||j                   |j"                  |	|j*                  |j$                  ¬«      }�nÌ|dk(  rtt-        |j                   |j"                  |j.                  ¬«      }t0        j)                  ||j                   |j"                  |j.                  |	|j*                  | |
|¬«	      }�nSt3        j4                  dt7        |«      ¬«      }|�ß|j"                  |d<   |j                   |d<   |j                  d«      }|€rddlm}  |dg d|rdndt=        j<                  «       |j                  dt?        tA        jB                  «       «      «      t?        |j                  d«      xs d«      ¬«      }tD        j)                  | |||xs i |||
�t        |
tF        tH        f«      r|
nd|	¬«      }nRtJ        jL                  jO                  d|› d�d|t        jP                  dd t        jR                  d!d"¬#«      ¬$«      ¬%«      ‚tU        tV        |«      S # t        $ r Y �Œ6w xY w# t        $ r}|‚d}~ww xY w)'zW
    Delete file

    LiteLLM Equivalent of DELETE https://api.openai.com/v1/files
    Nr¢   rZ   r[   r/   Fr\   r›   Trj   r¡   r
   rm   )	rh   re   rf   rn   ri   rl   r˜   r/   rb   r]   r^   rf   re   rY   r   r   r³   r²   r£   r¤   r¥   rª   ro   z] for 'file_delete'. Only 'openai', 'azure', 'gemini', 'manus', and 'anthropic' are supported.rp   rq   rr   r«   rs   rt   rw   r{   r~   ),r   rN   r€   r0   r   ri   rƒ   r…   r†   r‡   r1   r‰   rŠ   r   r,   r    re   rf   rk   r8   Údelete_filerl   r   rn   r9   r.   r‹   r-   r­   r   r®   rˆ   r¯   r°   rŒ   r   r   r�   rŽ   r�   r�   r‘   r   r!   )r˜   r_   r2   rB   rC   rO   Ú_r’   r“   ri   r/   r”   rh   r–   rV   r—   ra   rg   r‚   rW   s                       r5   r²   r²   Ö  s„  € ðsð	ØÐ Ü/?ÀÐGZÓ/[Ñ,�Ð&¨¨1ô "6Ñ!?¸Ñ!?ˆÜ%7Ñ%A¸&Ñ%AÐÜ7Ø 3Øõ	
ð
 "×)Ñ)ÒV¨V¯Z©ZÐ8IÈ3Ó-OÒVÐSVˆàŸ
™
 8Ó,ˆð ÐÜ˜7¤E§M¡MÔ2Ü&Ð':Ó;¸uÑDà")§,¡,Ò"5°#ˆLØ"‰GØÐ ¬°G¼U¿]¹]Ô)KÜ˜G“n‰GØˆ_ØˆGØ!Ÿ:™: j°%Ó8¸DÐ@ˆ	ØÔ"MÑMÜ"8Ø(×1Ñ1Ø'×/Ñ/Ø,×9Ñ9ô#ˆLô
 -×8Ñ8ØØ#Ø%×.Ñ.Ø$×,Ñ,ØØ+×7Ñ7Ø)×6Ñ6ð 9ó ŠHð ! GÒ+Ü!6Ø(×1Ñ1Ø'×/Ñ/Ø+×7Ñ7ô"ˆKô
 ,×7Ñ7Ø#Ø$×-Ñ-Ø#×+Ñ+Ø'×3Ñ3ØØ+×7Ñ7ØØØ2ð 8ó 
ŠHô &;×%TÑ%TØÜ%Ð&9Ó:ô&ˆOð Ð*Ø1@×1HÑ1HÐ# IÑ.Ø2A×2JÑ2JÐ# JÑ/à$Ÿj™jÐ)>Ó?�ØÐ&õñ #4Ø Ø!#Ø$Ù4=¡.À=Ü#'§9¡9£;Ø(.¯
©
Ð3DÄcÌ+×J[ÑJ[ÓJ]ÓF^Ó(_Ü$'¨¯
©
°4Ó(8Ò(>¸BÓ$?ô#�Kô 1×<Ñ<Ø#Ø$3Ø#6Ø)Ò/¨RØ +Ø'à"(Ð"4¼ÀFÌ[ÔZjÐLkÔ9l™Ðrvà#ð =ó ‘ô ×(Ñ(×8Ñ8Ø6Ð7JÐ6Kð  Lið  jØØ!4Ü"Ÿ^™^Ø$'Ø 6Ü %§¡Ø#2Ø Dô!ôð	 9ó ð ô ”K Ó*Ð*øô[ ò 	Úð	ûô\ ò Øˆûðús5   ƒM  –L)M Í 	MÍ	M ÍMÍM Í	M ÍMÍM c              ‹   óf  K  — 	 t        j                  «       }d|d<   t        t        | |||fi |¤Ž}t	        j
                  «       }t        |j                  |«      }|j                  d|«      ƒ d{  –—† }	t        j                  |	«      r|	ƒ d{  –—† }
|
S |	}
|
S 7 Œ)7 Œ# t        $ r}|‚d}~ww xY w­w)zZ
    Async: List files

    LiteLLM Equivalent of GET https://api.openai.com/v1/files
    Tr›   N)
rF   rG   r   Ú	file_listrI   rJ   rK   rL   rM   rN   )r2   r=   rB   rC   rO   rP   rR   rS   rT   rU   rV   rW   s               r5   Ú
afile_listr¹   [  sÈ   è ø€ ðÜ×,Ñ,Ó.ˆØ!ˆˆzÑô ÜØØØØñ
ð ñ
ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*ˆHð ˆð %ˆHàˆð  Søà*ùô
 ò ØˆûðüsY   ‚B1„A,B Á0BÁ1B ÂBÂB ÂB1ÂB ÂB1ÂB ÂB Â	B.Â'B)Â)B.Â.B1c                 ó<  — 	 t        d$i |¤Ž}|j                  xs |j                  dd«      xs d}|�:t        |t        j
                  «      r t        | «      du r|j                  xs d}|}n,|�&t        |t        j
                  «      st        |«      }n|€d}|j                  dd«      du }t        j                  dt        | «      ¬	«      }	|	�ùt        d$i |¤Ž}
|j                  |
d
<   |j                  |
d<   |j                  d«      }|€oddlm}  |dg d|rdndt%        j$                  «       |j                  dt'        t)        j*                  «       «      «      t'        |j                  dd«      «      ¬«      }|j                  d«      }t,        j/                  ||	|
|xs i |||�t        |t0        t2        f«      r|nd|¬«      }|S | t4        v rrt7        |j                  |j                  |j8                  ¬«      }t:        j/                  |||j                  |j                  ||j<                  |j8                  ¬«      }|S | dk(  rrt?        |j                  |j                  |j@                  ¬«      }tB        j/                  ||j                  |j                  |j@                  ||j<                  |¬«      }|S tD        jF                  jI                  d| › d�d| t	        jJ                  ddt	        jL                  dd ¬!«      ¬"«      ¬#«      ‚# tN        $ r}|‚d}~ww xY w)%zS
    List files

    LiteLLM Equivalent of GET https://api.openai.com/v1/files
    rZ   r[   NFr\   r›   Tr]   r^   rf   re   rY   r   r   r¹   r¸   r£   r¤   r¥   r/   )r=   ra   rb   rd   rg   rh   r/   ri   rj   )r=   rh   re   rf   ri   rl   rk   r
   rm   )rh   re   rf   rn   ri   rl   r=   ro   zQ for 'file_list'. Only 'openai', 'azure', 'manus', and 'anthropic' are supported.rp   rq   rr   rs   rt   rw   r{   r~   )(r€   ri   rƒ   r…   r†   r‡   r1   r‰   rŠ   r   r.   r‹   r-   r0   rf   re   r­   r   r®   rˆ   r¯   r°   rŒ   Ú
list_filesr   r   r,   r    rk   r8   rl   r   rn   r9   r�   rŽ   r�   r�   r‘   rN   )r2   r=   rB   rC   rO   r’   ri   r”   rh   ra   r“   rg   r‚   r/   rV   r–   r—   rW   s                     r5   r¸   r¸   „  s6  € ðeÜ!5Ñ!?¸Ñ!?ˆà!×)Ñ)ÒV¨V¯Z©ZÐ8IÈ3Ó-OÒVÐSVˆð ÐÜ˜7¤E§M¡MÔ2Ü&Ð':Ó;¸uÑDà")§,¡,Ò"5°#ˆLØ"‰GØÐ ¬°G¼U¿]¹]Ô)KÜ˜G“n‰GØˆ_ØˆGà!Ÿ:™: j°%Ó8¸DÐ@ˆ	ô "7×!PÑ!PØÜ!Ð"5Ó6ô"
ˆð Ð&Ü);Ñ)E¸fÑ)EÐØ-<×-DÑ-DÐ 	Ñ*Ø.=×.FÑ.FÐ 
Ñ+à Ÿ*™*Ð%:Ó;ˆKØÐ"õñ 0ØØØ Ù.7™l¸[Ü#Ÿy™y›{Ø$*§J¡JÐ/@Ä#Äk×FWÑFWÓFYÓBZÓ$[Ü # F§J¡J¨t°RÓ$8Ó 9ô�ð #ŸJ™J xÓ0ˆFÜ,×7Ñ7ØØ /Ø2Ø%Ò+¨Ø'Ø#Ø"(Ð"4¼ÀFÌ[ÔZjÐLkÔ9l™ÐrvØð 8ó 	ˆHð ˆOØ Ô$OÑOÜ"8Ø(×1Ñ1Ø'×/Ñ/Ø,×9Ñ9ô#ˆLô
 -×7Ñ7ØØ#Ø%×.Ñ.Ø$×,Ñ,ØØ+×7Ñ7Ø)×6Ñ6ð 8ó ˆHðF ˆð5 ! GÒ+Ü!6Ø(×1Ñ1Ø'×/Ñ/Ø+×7Ñ7ô"ˆKô
 ,×6Ñ6Ø#Ø$×-Ñ-Ø#×+Ñ+Ø'×3Ñ3ØØ+×7Ñ7Øð 7ó ˆHð( ˆô ×$Ñ$×4Ñ4Ø2Ð3FÐ2Gð  HYð  ZØØ0ÜŸ™Ø #Ø2Ü!ŸM™M°ÐBfÔgôð	 5ó 	ð 	øô ò Øˆûðús-   ‚GL ÇA9L ÉA6L Ê9AL Ì	LÌLÌLÚ
chunk_sizer¦   c              ‹   ó’  K  — 	 t        j                  «       }d|d<   |j                  dd«      }t        t        f| ||||||dœ|¤Ž}	t        j                  «       }
t        |
j                  |	«      }|j                  d|«      ƒ d{  –—† }t        j                  |«      r|ƒ d{  –—† }|S |}|S 7 Œ)7 Œ# t        $ r}|‚d}~ww xY w­w)rš   TÚafile_contentr_   N)r˜   r_   r2   rB   rC   r¼   r¦   )rF   rG   r   r   Úfile_contentrI   rJ   rK   rL   rM   rN   )r˜   r2   rB   rC   r¼   r¦   rO   rP   r_   rR   rS   rT   rU   rV   rW   s                  r5   r¾   r¾   ù  sæ   è ø€ ðÜ×,Ñ,Ó.ˆØ"&ˆˆÑØ—z‘z '¨4Ó0ˆô Üð

àØØ 3Ø'Ø!Ø!Øñ

ð ñ

ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*ˆHð ˆð %ˆHàˆð  Søà*ùô
 ò ØˆûðüsY   ‚C„BB4 ÂB0ÂB4 Â%B2Â&B4 Â+CÂ,B4 Â/CÂ0B4 Â2B4 Â4	CÂ=B?Â?CÃCc                 ó(	  — 	 t        d,i |¤Ž}t        d,i |¤Ž}	t        |	|¬«       |j                  xs |j	                  dd«      xs d}
|j	                  d«      }	 |�t        ||«      \  }}}}|
�Ht        |
t        j                  «      r.t        t        t        |«      «      du r|
j                  xs d}|}
n,|
�&t        |
t        j                  «      st        |
«      }
n|
€d}
t        | ||¬«      }|j!                  d	d«      d
u }|rAt#        |«      r6t%        | |||||||
t        t&        dz  |j	                  d«      «      ||¬«      S t)        j*                  dt-        |«      ¬«      }|�Ý|j.                  |	d<   |j0                  |	d<   |j	                  d«      }|€ot'        dg d|rd	ndt3        j2                  «       |j	                  dt        t5        j6                  «       «      «      t        |j	                  d«      xs d«      ¬«      }t8        j;                  |||	|xs i |||�t        |t<        t>        f«      r|nd|
¬«      }|S |t@        v rrtC        |j0                  |j.                  |jD                  ¬«      }tF        jI                  |||j0                  |j.                  |
|jJ                  |jD                  ¬«      }|S |dk(  rttM        |j0                  |j.                  |jN                  ¬«      }tP        jI                  ||j0                  |j.                  |jN                  |
|jJ                  |||	¬«	      }|S |dk(  r©|j0                  xs d}|jR                  xs tT        jR                  xs tW        d«      }|jX                  xs tT        jX                  xs tW        d«      }|jZ                  xs tW        d«      }t\        jI                  |||||||
|jJ                  |	¬«	      }|S |d k(  r1t^        jI                  |||j0                  |	|
|jJ                  ¬!«      }|S tT        j`                  jc                  d"|› d#�d$|t        jd                  d%d&t        jf                  d'd(¬)«      ¬*«      ¬+«      ‚# t        $ r Y �Œw xY w# t        $ r}|‚d}~ww xY w)-r    r¢   rZ   r[   r/   NFr\   ©r˜   rB   rC   r¾   TrY   )r˜   r_   r2   rB   rC   r¼   r’   ri   rg   rh   r/   r]   r^   rf   re   r¿   r£   r¤   r¥   )Úfile_content_requestra   rb   rd   rg   rh   r/   ri   rj   )rh   rÂ   re   rf   ri   rl   rk   r
   rm   )	rh   re   rf   rn   ri   rl   rÂ   r/   rb   r   ÚVERTEXAI_PROJECTÚVERTEXAI_LOCATIONÚVERTEXAI_CREDENTIALS)	rh   rÂ   re   Úvertex_credentialsÚvertex_projectÚvertex_locationri   rl   rb   r   )rh   rÂ   re   r’   ri   rl   ro   zm for 'file_content'. Supported providers are 'openai', 'azure', 'vertex_ai', 'bedrock', 'manus', 'anthropic'.rp   rq   rr   r«   rs   rt   rw   r{   r~   )4r€   r0   r   ri   rƒ   r   rN   r…   r†   r‡   r1   r   rˆ   r‰   rŠ   r&   r   r6   Úfile_content_streamingr‚   r.   r‹   r-   rf   re   r®   r¯   r°   rŒ   Úretrieve_file_contentr   r   r,   r    rk   r8   r¿   rl   r   rn   r9   rÇ   r�   r   rÈ   rÆ   r:   r;   rŽ   r�   r�   r‘   )r˜   r_   r2   rB   rC   r¼   r¦   rO   r’   r“   ri   r/   r¶   r”   Ú_file_content_requestrh   ra   rg   rV   r–   r—   re   Úvertex_ai_projectÚvertex_ai_locationrÆ   rW   s                             r5   r¿   r¿   (  sï  € ð*aÜ!5Ñ!?¸Ñ!?ˆÜ%7Ñ%A¸&Ñ%AÐÜ7Ø 3Øõ	
ð
 "×)Ñ)ÒV¨V¯Z©ZÐ8IÈ3Ó-OÒVÐSVˆØŸ
™
 8Ó,ˆð	ØÐ Ü/?ÀÐGZÓ/[Ñ,�Ð&¨¨1ð
 ÐÜ˜7¤E§M¡MÔ2Ü&¤t¬CÐ1DÓ'EÓFÈ%ÑOà")§,¡,Ò"5°#ˆLØ"‰GØÐ ¬°G¼U¿]¹]Ô)KÜ˜G“n‰GØˆ_ØˆGä'9ØØ'Ø!ô(
Ðð "Ÿ:™: o°uÓ=ÀÐEˆ	áÔ3Ð4GÔHÜ)ØØØ$7Ø+Ø%Ø%Ø /ØÜ Ô!2°TÑ!9¸6¿:¹:ÐF[Ó;\Ó]Ø#Øôð ô "7×!PÑ!PØÜ!Ð"5Ó6ô"
ˆð Ð&Ø-<×-DÑ-DÐ 	Ñ*Ø.=×.FÑ.FÐ 
Ñ+à Ÿ*™*Ð%:Ó;ˆKØÐ"Ü/ØØØ Ù1:™oÀÜ#Ÿy™y›{Ø$*§J¡JÐ/@Ä#Äk×FWÑFWÓFYÓBZÓ$[Ü # F§J¡J¨tÓ$4Ò$:¸Ó ;ô�ô -×BÑBØ%:Ø /Ø2Ø%Ò+¨Ø'Ø#Ø"(Ð"4¼ÀFÌ[ÔZjÐLkÔ9l™ÐrvØð Có 	ˆHð ˆOàÔ"MÑMÜ"8Ø(×1Ñ1Ø'×/Ñ/Ø,×9Ñ9ô#ˆLô
 -×9Ñ9Ø#Ø%:Ø%×.Ñ.Ø$×,Ñ,ØØ+×7Ñ7Ø)×6Ñ6ð :ó ˆHðF ˆðu ! GÒ+Ü!6Ø(×1Ñ1Ø'×/Ñ/Ø+×7Ñ7ô"ˆKô
 ,×8Ñ8Ø#Ø$×-Ñ-Ø#×+Ñ+Ø'×3Ñ3ØØ+×7Ñ7Ø%:ØØ2ð 9ó 
ˆHðh ˆðS ! KÒ/Ø-×6Ñ6Ò<¸"ˆHà×.Ñ.Òn´'×2HÑ2HÒnÌNÐ[mÓLnð ð  ×/Ñ/Òq´7×3JÑ3JÒqÌnÐ]pÓNqð ð )8×(JÑ(JÒ(tÌnÐ]sÓNtÐä/×<Ñ<Ø#Ø%:Ø!Ø#5Ø0Ø 2ØØ+×7Ñ7Ø2ð =ó 
ˆHð> ˆð) ! IÒ-Ü-×:Ñ:Ø#Ø%:Ø(×1Ñ1Ø 3ØØ+×7Ñ7ð ;ó ˆHð& ˆô ×$Ñ$×4Ñ4Ø2Ð3FÐ2Gð  Huð  vØØ0ÜŸ™Ø #Ø2Ü!ŸM™M°ÐFjÔkôð	 5ó 	ð 	øôM ò 	Úð	ûôb ò Øˆûðúsf   ‚AR ÁQ1 Á.CR Å	C>R ÉA9R ËA8R Ì;B-R Ï)5R ÐAR Ñ1	Q>Ñ:R Ñ=Q>Ñ>R Ò	RÒ
RÒRr’   ri   rg   rh   r/   c                 óŠ  ‡ ‡‡‡‡‡— ‰�w‰xs d‰_         ‰xs d‰j                  d<   ‰‰j                  d<   ‰j                  j                  di «      xs i }|j                  �|j                  |d<   |‰j                  d<   dt        dt        fˆˆ ˆˆfd„Št	        t        d	«      i ¬
«      Š‰t        v rt        |j                  |j                  |j                  ¬«      }t        j                  |	t        ‰ ||¬«      |j                  |j                  ||j                  |j                  ||
¬«	      Šnbt        j                  j!                  d‰› dt#        t        «      › d�d‰t%        j&                  ddt%        j(                  dd¬«      ¬«      ¬«      ‚t+        j,                  ‰«      rdt        fˆˆfd„} |«       S  ‰‰«      S )Nr]   r_   r2   rb   re   rV   r3   c           	      ób   •— t        t        | j                  ‰‰‰‰¬«      | j                  ¬«      S )N)Ústream_iteratorr˜   r_   r2   rg   ©rÐ   rd   )r   r   rÐ   rd   )rV   r2   r˜   rg   r_   s    €€€€r5   Ú_wrap_streaming_resultz6file_content_streaming.<locals>._wrap_streaming_resultù  s:   ø€ ô *Ü8Ø (× 8Ñ 8ØØØ$7Ø'ôð ×$Ñ$ô	
ð 		
r7   r~   rÑ   rj   rÁ   )	rh   rÂ   re   rf   ri   rl   rk   r¼   r/   ro   z7 for streaming 'file_content'. Supported providers are ú.rp   rq   rr   r«   rs   rt   rw   r{   c               “   ó0   •K  —  ‰ ‰ƒ d {  –—† «      S 7 Œ­w)Nr~   )rÒ   rV   s   €€r5   Ú_await_and_wrapz/file_content_streaming.<locals>._await_and_wrap-  s   øè ø€ Ù)°¯.Ó9Ð9¨.ús   ƒ‹Œ	)r_   Úmodel_call_detailsrƒ   re   r   Úiterr,   r    rf   rk   r8   rÉ   r&   rl   r�   rŽ   r�   Úsortedr†   r�   r‘   rF   rM   )r˜   r_   r2   rB   rC   r¼   r’   ri   rg   rh   r/   rb   r–   rÕ   rÒ   rV   s   ```     `     @@r5   rÉ   rÉ   á  sõ  ý€ ð ÐØ!šK RˆÔØ27²+¸2ˆ×&Ñ& wÑ/Ø@Sˆ×&Ñ&Ð'<Ñ=à +× >Ñ >× BÑ BÐCSÐUWÓ XÒ ^Ð\^ˆØ×#Ñ#Ð/Ø)8×)AÑ)AˆN˜:Ñ&Ø;Iˆ×&Ñ&Ð'7Ñ8ð
Ü,ð
ä	#÷
ð 
ô ^xÜ˜R›¨"ô^€Hð ÔIÑIÜ4Ø$×-Ñ-Ø#×+Ñ+Ø(×5Ñ5ô
ˆô
 )×?Ñ?ØÜ!3ØØ+Ø%ô"ð
 "×*Ñ*Ø ×(Ñ(ØØ'×3Ñ3Ø%×2Ñ2Ø!Øð @ó 
‰ô  × Ñ ×0Ñ0Ø.Ð/BÐ.CÐCzô  |Bô  Cnó  |oð  {pð  pqð  rØØ,Ü—^‘^ØØ.ÜŸ™¨_ÐBfÔgôð	 1ó 	
ð 		
ô ×Ñ˜8Ô$ð	:Ô'Aö 	:ñ Ó Ð á! (Ó+Ð+r7   )Nr	   NN)NNNN)r	   NN)r	   NNN)r	   NNé   F)NNNNrÙ   F)^Ú__doc__rF   rI   r®   Úuuidr¯   Úcollections.abcr   Ú	functoolsr   Útypingr   r   r   r   r†   ÚFileCreateProviderÚFileRetrieveProviderÚFileDeleteProviderÚFileListProviderr�   r   Úlitellm.files.streamingr   Úlitellm.files.typesr   r   Ú-litellm.litellm_core_utils.get_litellm_paramsr   Ú1litellm.litellm_core_utils.get_llm_provider_logicr   r­   r   r‚   Úlitellm.llms.azure.common_utilsr   Ú litellm.llms.azure.files.handlerr   Ú"litellm.llms.bedrock.files.handlerr   Ú&litellm.llms.custom_httpx.http_handlerr   r   Ú*litellm.llms.custom_httpx.llm_http_handlerr   Ú litellm.llms.openai.common_utilsr    Úlitellm.llms.openai.openair!   r"   r#   Ú$litellm.llms.vertex_ai.files.handlerr$   Úlitellm.types.llms.openair%   r&   r'   r(   r)   r*   Úlitellm.types.routerÚlitellm.types.utilsr,   r-   Úlitellm.utilsr.   r/   r0   r1   rŒ   rˆ   Úboolr6   r8   Ú__annotations__r9   r:   r;   r�   rE   rH   rž   rœ   r³   r²   r¹   r¸   Úintr¾   r¿   r€   rŠ   r‡   rÉ   r~   r7   r5   ú<module>rö      s   ðòó Û Û Û Ý %Ý ß ,Ó ,ã ð ðñ
Ð ð ØbñÐ ð Ð_Ñ`Ð ØÐSÑTÐ Û Ý "Ý @ß OÝ iÝ NÝ SÝ AÝ @Ý Bß PÝ IÝ Cß NÑ NÝ E÷÷ ô #÷÷ó ñ +Ó,Ð ð
NØ,¨sÑ2°TÑ9ðNà	óNñ  .Ó/Ð �uÓ /Ù1Ó3Ð �eÓ 3Ù"6Ó"8Ð ˜%Ó 8Ù 3Ó 5Ð ˜Ó 5ð ð .2Ø.6Ø+/Ø(,ñ)Ø
ð)àÐCÑDð)ð $ dÑ*ð)ð ,ð	)ð
 ˜˜S˜‘> DÑ(ð)ð �S˜#�X‘ Ñ%ð)ð ò)ó ð)ðX ð .2Ø59Ø+/Ø(,ñvØ
ðvàÐCÑDðvð $ dÑ*ðvð ,¨dÑ2ð	vð
 ˜˜S˜‘> DÑ(ðvð �S˜#�X‘ Ñ%ðvð ˜	 # sÐ,<Ð"<Ñ=Ñ=òvó ðvðr ð 19Ø+/Ø(,ñ	%Øð%à-ð%ð ˜˜S˜‘> DÑ(ð%ð �S˜#�X‘ Ñ%ð	%ð ò%ó ð%ðP ð 19Ø+/Ø(,ñ	{Øð{à-ð{ð ˜˜S˜‘> DÑ(ð{ð �S˜#�X‘ Ñ%ð	{ð ò{ó ð{ð~ ð /7Ø+/Ø(,ñ	'Øð'à+ð'ð ˜˜S˜‘> DÑ(ð'ð �S˜#�X‘ Ñ%ð	'ð ˆs�C˜Ð#Ñ$ò'ó ð'ðT ð Ø4<Ø+/Ø(,ñ@Øð@à�‰:ð@ð ,¨cÑ1ð@ð ˜˜S˜‘> DÑ(ð	@ð
 �S˜#�X‘ Ñ%ð@ð ò@ó ð@ðH à,4ØØ+/Ø(,ñ	%Ø)ð%à�4‰Zð%ð ˜˜S˜‘> DÑ(ð%ð �S˜#�X‘ Ñ%ò	%ó ð%ðP à,4ØØ+/Ø(,ñ	qØ)ðqà�4‰Zðqð ˜˜S˜‘> DÑ(ðqð �S˜#�X‘ Ñ%ò	qó ðqðh ð 08Ø+/Ø(,Ø!Øñ+Øð+à,ð+ð ˜˜S˜‘> DÑ(ð+ð �S˜#�X‘ Ñ%ð	+ð
 ð+ð ð+ð  Ð"<Ñ<ò+ó ð+ð\ ð Ø<@Ø+/Ø(,Ø!ØñuØðuà�‰:ðuð -¨sÑ2°TÑ9ðuð ˜˜S˜‘> DÑ(ð	uð
 �S˜#�X‘ Ñ%ðuð ðuð ðuð Ø ñ!à��SÐ4Ð4Ñ5ñ6ð ��SÐ4Ð4Ñ5ñ6òuó ðuðpQ,àðQ,ð �‰:ðQ,ð -¨sÑ2°TÑ9ð	Q,ð
 ˜˜S˜‘> DÑ(ðQ,ð �S˜#�X‘ Ñ%ðQ,ð ðQ,ð *ðQ,ð �U—]‘]Ñ"ðQ,ð # TÑ)ðQ,ð ðQ,ð �$‰JðQ,ð   )¨C°Ð6PÐ,PÑ"QÑQôQ,r7   