
    CjQ                        S r SSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
JrJrJrJrJrJrJr  SSKr\S   r\S   r\S   r\S	   rSSKrSS
KJr  SSKJr  SSKJrJr  SSKJr  SSK J!r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  SSK)J*r*J+r+  SSK,J-r-  SSK.J/r/  SSK0J1r1J2r2J3r3  SSK4J5r5  SSK6J7r7J8r8J9r9J:r:J;r;J<r<  SSK=7  SSK>J?r?J@r@  SSKAJBrBJCrCJDrDJErE  \-" 5       rFS\\\\G4      S\H4S jrI\3" 5       rJ\&" 5       rK\5" 5       rL\(" 5       rMS\\G\4   S\\G\4   SS4S  jrN\C    S;S!\:S"\S#   S$\\9   S\S%\\\G\G4      S&\\\G\G4      S\<4S' jj5       rO\C    S<S!\:S"\S#   S$\\9   S\\   S%\\\G\G4      S&\\\G\G4      S\\<\\\\<4   4   4S( jj5       rP\C   S=S)\GS\S%\\\G\G4      S&\\\G\G4      S\<4
S* jj5       rQ\C   S=S)\GS\S%\\\G\G4      S&\\\G\G4      S\24
S+ jj5       rR\C   S=S)\GS\S%\\\G\G4      S&\\\G\G4      S\\\\24   4
S, jj5       rS\C    S;S)\GS-\\G   S\\\G4   S%\\\G\G4      S&\\\G\G4      S\14S. jj5       rT\C    S>S\S"\\G   S%\\\G\G4      S&\\\G\G4      4S/ jj5       rU\C    S>S\S"\\G   S%\\\G\G4      S&\\\G\G4      4S0 jj5       rV\C     S?S)\GS\S%\\\G\G4      S&\\\G\G4      S1\WS2\HS\\;\4   4S3 jj5       rX\C      S@S)\GS-\\G   S\\\\G4      S%\\\G\G4      S&\\\G\G4      S1\WS2\HS\\;\\\\\;4   \\\\4   4   4S4 jj5       rYS)\GS-\\G   S\\\\G4      S%\\\G\G4      S&\\\G\G4      S1\WS5\ZS6\\[\R                  4   S7\\"   S8\HS9\\   S\\\\\\4   4   4S: jr]g)Az_
Main File for Files API implementation

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

    N)partial)MappingProxyType)Any	CoroutineDictLiteralOptionalUnioncast)openaiazuregemini	vertex_aibedrockhosted_vllmmanus	anthropic)r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   )get_secret_str)FileContentStreamingResponse)FileContentProviderFileContentStreamingResult)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                     U [         ;   $ )zF
Return whether file content streaming is supported for the provider.
)r-   )r3   s    d/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/litellm/files/main.py_should_sdk_support_streamingr7   I   s     "MMM    litellm_params_dictkwargsc                 x    UR                  S5      n[        U[        [        0 5      5      5      (       a  UU S'   g g )N#_litellm_internal_model_credentials)get
isinstancetyper   )r9   r:   trusted_model_credentialss      r6   0_add_trusted_model_credentials_to_litellm_paramsrA   Y   sA     !'

+P Q+T2B22F-GHH% 	AB Ir8   filepurpose)
assistantsbatchz	fine-tunemessagesexpires_afterextra_headers
extra_bodyc                   #     [         R                  " 5       nSUS'   U UUUUUS.UEn[        [        40 UD6n	[        R
                  " 5       n
[        U
R                  U	5      nUR                  SU5      I Sh  vN n[         R                  " U5      (       a  UI Sh  vN nU$ UnU$  N/ N! [         a  nUeSnAff = f7f)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)rB   rC   rG   r3   rH   rI   N)
asyncioget_event_loopr   create_filecontextvarscopy_contextrunrun_in_executoriscoroutine	Exception)rB   rC   rG   r3   rH   rI   r:   loop	call_argsfuncctxfunc_with_contextinit_responseresponsees                  r6   rK   rK   c   s     %%'!%~ *#6*$
 
	 {0i0&&(#CGGT2"2249JKK}--**H  %H L*
  sY   CA5B- 9B):$B- B+B- $C%B- (C)B- +B- -
B>7B99B>>Cc                 (    UR                  SS5      SL n[        S0 UD6n[        S0 UD6n	[        [        [
           UR                  S5      5      n
U
c  [        S5      eUR                  S5      nUR                  =(       d    UR                  SS	5      =(       d    S	nUbS  [        U[        R                  5      (       a4  [        [        [        U5      5      SL a  UR                  =(       d    S	nUnO3Ub+  [        U[        R                  5      (       d  [        U5      nOUc  S
nUb  [!        U UUUUS9nO[!        U UUUS9n["        R$                  " S['        U5      S9nUb[  [(        R+                  UU	UU=(       d    0 UR,                  UR.                  U
UUb  [        U[0        [2        45      (       a  UOSUS9
nU$ U[4        ;   al  [7        UR,                  UR.                  UR8                  S9n[:        R+                  UUR,                  UR.                  UUR<                  UR8                  US9nU$ US:X  am  [?        UR,                  UR.                  UR@                  S9n[B        R+                  UUR,                  UR.                  UR@                  UUR<                  UU	S9nU$ [D        RF                  RI                  SRK                  U5      SU[        RL                  " SS[        RN                  " SSS9S9S9e! [P         a  nUeSnAff = f)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.
rK   FTlitellm_logging_objNzlogging_obj is requiredr0   request_timeoutX       @)rB   rC   rG   rH   rI   )rB   rC   rH   rI    modelprovider)
provider_configlitellm_paramscreate_file_dataheadersapi_baseapi_keylogging_obj	_is_asyncr0   timeoutrj   rk   organization)rm   rj   rk   rn   max_retriesrp   rh   r   rj   rk   api_version)rm   rj   rk   rs   rn   rq   rh   rg   zxLiteLLM doesn't support {} for 'create_file'. Only ['openai', 'azure', 'vertex_ai', 'manus', 'anthropic'] are supported.n/a  Unsupported providerrN   "https://github.com/BerriAI/litellmmethodurlstatus_codecontentrequestmessagerd   llm_providerr[    ))popGenericLiteLLMParamsdictr   r	   LiteLLMLoggingObjr=   
ValueErrorrn   r>   httpxTimeoutr2   strreadfloatr&   r/   get_provider_files_configr.   base_llm_http_handlerrN   rj   rk   r   r   r-   r!   rp   openai_files_instancerq   r   rs   azure_files_instancelitellm
exceptionsBadRequestErrorformatResponseRequestrT   )rB   rC   rG   r3   rH   rI   r:   rm   optional_paramsr9   rl   r0   rn   read_timeout_create_file_requestrf   r[   openai_credsazure_credsr\   s                       r6   rN   rN      sF   "oJJ~u5=	.88"nVn&'4I)J
 677H% "))VVZZ8I3-OVSV 7EMM22&tC1D'EF%O"<<.3L"G GU]])K)KGnG_G$#4++%$  $5+%	$  0II!"56
 &,88 /2!5%+(11'//'# )"6K9I+JKK   9 Hz Y !$OO1(11'//,99L
 -88#%..$,,+77)66!5 9 HL ; !G+/(11'//+77K
 ,77#$--#++'33+77!52 8 	H.  $$44 S  Z  Z' 0 #2!MMDhi 5    s-   F>L  A5L  7A2L  *AL   
L
LLfile_idc                   #     [         R                  " 5       nSUS'   [        [        U UUU40 UD6n[        R
                  " 5       n[        UR                  U5      nUR                  SU5      I Sh  vN n	[         R                  " U	5      (       a  U	I Sh  vN n
OU	n
[        S0 U
R                  5       D6$  NE N"! [         a  nUeSnAff = f7f)U
Async: Get file contents

LiteLLM Equivalent of GET https://api.openai.com/v1/files
Tis_asyncNr   )rL   rM   r   file_retrieverO   rP   rQ   rR   rS   r+   
model_dumprT   )r   r3   rH   rI   r:   rU   rW   rX   rY   rZ   r[   r\   s               r6   afile_retriever     s     %%'!z 
 
 &&(#CGGT2"2249JKK}--**H$H8("5"5"788 L*
  sM   CA.B< 2B83$B< B:B< 7C8B< :B< <
CCCCc                     [        S%0 UD6nUR                  =(       d    UR                  SS5      =(       d    SnUbE  [        U[        R
                  5      (       a&  [        U5      SL a  UR                  =(       d    SnUnO3Ub+  [        U[        R
                  5      (       d  [        U5      nOUc  SnUR                  SS5      SL nU[        ;   al  [        UR                  UR                  UR                  S9n	[        R!                  U UU	R                  U	R                  UUR"                  U	R                  S	9n
GOUS
:X  al  [%        UR                  UR                  UR&                  S9n[(        R!                  UUR                  UR                  UR&                  UUR"                  U S9n
GO[*        R,                  " S[/        U5      S9nUGb  [1        S%0 UD6n[3        UUS9  UR                  US'   UR                  US'   UR                  S5      nUc{  SSKJn  U" S/ SU(       a  SOS[8        R8                  " 5       UR                  S[;        [<        R>                  " 5       5      5      [;        UR                  S5      =(       d    S5      S9nUR                  S5      n[@        R!                  U UUU=(       d    0 UUUb  [        U[B        [D        45      (       a  UOSUS9n
OV[F        RH                  RK                  SRM                  U5      SU[        RN                  " SS[        RP                  " S S!S"9S#9S$9e[S        [T        U
5      $ ! [V         a  nUeSnAff = f)&o
Returns the contents of the specified file.

LiteLLM Equivalent of POST: POST https://api.openai.com/v1/files
r_   r`   NFra   r   Tro   r   rm   rj   rk   rn   rq   rp   r   rr   )rm   rj   rk   rs   rn   rq   r   rb   rc   r9   r:   rk   rj   r^   r   r   r   r   litellm_call_ididrd   rF   stream	call_type
start_timer   function_idr0   r   rf   rg   ri   rl   rm   r0   rn   zoLiteLLM doesn't support {} for 'file_retrieve'. Only 'openai', 'azure', 'manus', and 'anthropic' are supported.rt   ru   rv   create_threadrw   rx   r{   r   r   ),r   rn   r=   r>   r   r   r2   r   r   r   r-   r!   rj   rk   rp   r   retrieve_filerq   r   rs   r   r/   r   r.   r1   rA   *litellm.litellm_core_utils.litellm_loggingr   timer   uuid_moduleuuid4r   r   r   r   r   r   r   r   r   r   r#   rT   )r   r3   rH   rI   r:   r   rn   r   rm   r   r[   r   rf   r9   rl   r   r0   r\   s                     r6   r   r   <  s]   s.88!))VVZZ8I3-OVSV 7EMM22&':;uD"<<.3L"G GU]])K)KGnG_GJJz51T9	"MM1(11'//,99L
 -::#%..$,,+77)66 ; H !G+/(11'//+77K
 ,99#$--#++'33+77 : H 4MM%&9:O *&8&B6&B#@(;! 2A1H1H#I.2A2J2J#J/$jj)>?& #4 !#$6?"2_#'99;(.

-s;3D3D3F/G) %(

4(8(>B$?
#K  H-0>>#$3#6)/R +' "-&v=M/NOO  "# ?   ((88 N  U  U+  !4"^^$' 6 %_Jn o 9   J)) s   MM 
M"MM"c                   #     [         R                  " 5       nUR                  SS5      nSUS'   [        [        U UUUU40 UD6n[
        R                  " 5       n[        UR                  U5      n	UR                  SU	5      I Sh  vN n
[         R                  " U
5      (       a  U
I Sh  vN nOU
n[        [        U5      $  N< N! [         a  nUeSnAff = f7f)zR
Async: Delete file

LiteLLM Equivalent of DELETE https://api.openai.com/v1/files
rd   NTr   )rL   rM   r   r   file_deleterO   rP   rQ   rR   rS   r   r"   rT   )r   r3   rH   rI   r:   rU   rd   rW   rX   rY   rZ   r[   r\   s                r6   afile_deleter     s     %%'

7D)!z 
 
 &&(#CGGT2"2249JKK}--**H$HK** L*
  sM   CBC C$C *C+C CC C 
CCCCrd   c                      Ub  [        X5      u  pb  n[        S%0 UD6n[        S%0 UD6n[	        UUS9  UR
                  =(       d    UR                  SS5      =(       d    Sn	UR                  S5      n
U	bE  [        U	[        R                  5      (       a&  [        U5      SL a  U	R                  =(       d    SnUn	O3U	b+  [        U	[        R                  5      (       d  [        U	5      n	OU	c  Sn	UR                  SS5      S	L nU[        ;   al  [        UR                   UR"                  UR$                  S
9n[&        R)                  U UUR                   UR"                  U	UR*                  UR$                  S9nGOUS:X  an  [-        UR                   UR"                  UR.                  S9n[0        R)                  UUR                   UR"                  UR.                  U	UR*                  U U
US9	nGOh[2        R4                  " S[7        U5      S9nUb  UR"                  US'   UR                   US'   UR                  S5      nUc{  SSKJn  U" S/ SU(       a  SOS[<        R<                  " 5       UR                  S[?        [@        RB                  " 5       5      5      [?        UR                  S5      =(       d    S5      S9n[D        R)                  U UUU=(       d    0 UUU
b  [        U
[F        [H        45      (       a  U
OSU	S9nOV[J        RL                  RO                  SRQ                  U5      SU[        RR                  " SS[        RT                  " S S!S"9S#9S$9e[W        [X        U5      $ ! [         a     GN]f = f! [         a  nUeSnAff = f)&zK
Delete file

LiteLLM Equivalent of DELETE https://api.openai.com/v1/files
Nr   r_   r`   r0   Fra   r   Tro   r   r   rr   )	rm   rj   rk   rs   rn   rq   r   r0   rg   rb   rc   rk   rj   r^   r   r   r   r   r   r   r   r   zwLiteLLM doesn't support {} for 'file_delete'. Only 'openai', 'azure', 'gemini', 'manus', and 'anthropic' are supported.rt   ru   rv   r   rw   rx   r{   r   r   )-r   rT   r   r1   rA   rn   r=   r>   r   r   r2   r   r   r   r-   r!   rj   rk   rp   r   delete_filerq   r   rs   r   r/   r   r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   )r   rd   r3   rH   rI   r:   _r   r9   rn   r0   r   rm   r   r[   r   rf   rl   r   r\   s                       r6   r   r     s   y	 /?0,1
 /880:6:8 3	

 "))VVZZ8I3-OVSVH% 7EMM22&':;uD"<<.3L"G GU]])K)KGnG_GJJz51T9	"MM1(11'//,99L
 -88#%..$,,+77)66 9 H !G+/(11'//+77K
 ,77#$--#++'33+772 8 
H 4MM%&9:O *1@1H1H#I.2A2J2J#J/$jj)>?& #4 !#$4=.=#'99;(.

-s;3D3D3F/G) %(

4(8(>B$?
#K 1<<#$3#6)/R +' "-&v=M/NOO  "# =   ((88 V  ]  ]+  !4"^^$' 6 %_Jn o 9   K**c  		d  s5   M% MM6 %
M3/M6 2M33M6 6
N NNc                 x  #     [         R                  " 5       nSUS'   [        [        U UUU40 UD6n[        R
                  " 5       n[        UR                  U5      nUR                  SU5      I Sh  vN n	[         R                  " U	5      (       a  U	I Sh  vN n
U
$ U	n
U
$  N/ N! [         a  nUeSnAff = f7f)zN
Async: List files

LiteLLM Equivalent of GET https://api.openai.com/v1/files
Tr   N)
rL   rM   r   	file_listrO   rP   rQ   rR   rS   rT   )r3   rC   rH   rI   r:   rU   rW   rX   rY   rZ   r[   r\   s               r6   
afile_listr   v  s     %%'!z 
 
 &&(#CGGT2"2249JKK}--**H  %H L*
  sY   B:A.B& 2B"3$B& B$B& B:B& !B:"B& $B& &
B70B22B77B:c                     [        S#0 UD6nUR                  =(       d    UR                  SS5      =(       d    SnUbE  [        U[        R
                  5      (       a&  [        U 5      SL a  UR                  =(       d    SnUnO3Ub+  [        U[        R
                  5      (       d  [        U5      nOUc  SnUR                  SS5      SL n[        R                  " S[        U 5      S	9n	U	Gb  [        S#0 UD6n
UR                  U
S
'   UR                  U
S'   UR                  S5      nUcs  SSKJn  U" S/ SU(       a  SOS[$        R$                  " 5       UR                  S['        [(        R*                  " 5       5      5      ['        UR                  SS5      5      S9nUR                  S5      n[,        R/                  UU	U
U=(       d    0 UUUb  [        U[0        [2        45      (       a  UOSUS9nU$ U [4        ;   al  [7        UR                  UR                  UR8                  S9n[:        R/                  UUUR                  UR                  UUR<                  UR8                  S9nU$ U S:X  al  [?        UR                  UR                  UR@                  S9n[B        R/                  UUR                  UR                  UR@                  UUR<                  US9nU$ [D        RF                  RI                  SRK                  U 5      SU [        RL                  " SS[        RN                  " SSS 9S!9S"9e! [P         a  nUeSnAff = f)$zG
List files

LiteLLM Equivalent of GET https://api.openai.com/v1/files
r_   r`   NFra   r   Trb   rc   rk   rj   r^   r   r   r   r   r   r   r   r0   )rC   rf   rg   ri   rl   rm   r0   rn   ro   )rC   rm   rj   rk   rn   rq   rp   r   rr   )rm   rj   rk   rs   rn   rq   rC   zkLiteLLM doesn't support {} for 'file_list'. Only 'openai', 'azure', 'manus', and 'anthropic' are supported.rt   ru   rv   rw   rx   r{   r   r   ))r   rn   r=   r>   r   r   r2   r   r   r   r/   r   r.   r1   rk   rj   r   r   r   r   r   r   r   
list_filesr   r   r-   r!   rp   r   rq   r   rs   r   r   r   r   r   r   r   rT   )r3   rC   rH   rI   r:   r   rn   r   rm   rf   r9   rl   r   r0   r[   r   r   r\   s                     r6   r   r     sQ   n.88!))VVZZ8I3-OVSV 7EMM22&':;uD"<<.3L"G GU]])K)KGnG_GJJz51T9	 0II!"56
 &"4">v">-<-D-D	*.=.F.F
+ **%:;K" 0 .7l[#yy{$*JJ)3{/@/@/B+C% !$FJJtR$8 9
 ZZ)F,77 /2%+'# )"6K9I+JKK   8 H O $OO1(11'//,99L
 -77#%..$,,+77)66 8 HJ 9 !G+/(11'//+77K
 ,66#$--#++'33+77 7 H,  $$44 F  M  M' 0 #2!MMBfg 5    s-   G/L0 2A5L0 (A1L0 AL0 0
M:L<<M
chunk_sizer   c                   #     [         R                  " 5       nSUS'   UR                  SS5      n[        [        4U UUUUUUS.UD6n	[
        R                  " 5       n
[        U
R                  U	5      nUR                  SU5      I Sh  vN n[         R                  " U5      (       a  UI Sh  vN nU$ UnU$  N/ N! [         a  nUeSnAff = f7f)r   Tafile_contentrd   N)r   rd   r3   rH   rI   r   r   )rL   rM   r   r   file_contentrO   rP   rQ   rR   rS   rT   )r   r3   rH   rI   r   r   r:   rU   rd   rW   rX   rY   rZ   r[   r\   s                  r6   r   r     s     %%'"&

7D) 

 3'!!

 

 &&(#CGGT2"2249JKK}--**H  %H L*
  sY   CBB< B8	$B< -B:.B< 3C4B< 7C8B< :B< <
CCCCc                 	    [        S+0 UD6n[        S+0 UD6n	[        U	US9  UR                  =(       d    UR	                  SS5      =(       d    Sn
UR	                  S5      n Ub  [        X5      u  p  nU
bS  [        U
[        R                  5      (       a4  [        [        [        U5      5      SL a  U
R                  =(       d    SnUn
O3U
b+  [        U
[        R                  5      (       d  [        U
5      n
OU
c  Sn
[        U UUS9nUR!                  S	S5      S
L nU(       aG  [#        U5      (       a7  [%        U UUUUUUU
[        [&        [(           UR	                  S5      5      UUS9$ [*        R,                  " S[/        U5      S9nUb  UR0                  U	S'   UR2                  U	S'   UR	                  S5      nUcx  [)        S/ SU(       a  S	OS[4        R4                  " 5       UR	                  S[        [6        R8                  " 5       5      5      [        UR	                  S5      =(       d    S5      S9n[:        R=                  UUU	U=(       d    0 UUUb  [        U[>        [@        45      (       a  UOSU
S9nU$ U[B        ;   al  [E        UR2                  UR0                  URF                  S9n[H        RK                  UUUR2                  UR0                  U
URL                  URF                  S9nU$ US:X  an  [O        UR2                  UR0                  URP                  S9n[R        RK                  UUR2                  UR0                  URP                  U
URL                  UUU	S9	nU$ US:X  a  UR2                  =(       d    SnURT                  =(       d"    [V        RT                  =(       d    [Y        S5      nURZ                  =(       d"    [V        RZ                  =(       d    [Y        S5      nUR\                  =(       d    [Y        S5      n[^        RK                  UUUUUUU
URL                  U	S9	nU$ US :X  a.  [`        RK                  UUUR2                  U	U
URL                  S!9nU$ [V        Rb                  Re                  S"Rg                  U5      S#U[        Rh                  " S$S%[        Rj                  " S&S'S(9S)9S*9e! [         a     GNQf = f! [         a  nUeSnAff = f),r   r   r_   r`   r0   NFra   r   rH   rI   r   Tr^   )r   rd   r3   rH   rI   r   r   rn   rl   rm   r0   rb   rc   rk   rj   r   r   r   r   )file_content_requestrf   rg   ri   rl   rm   r0   rn   ro   )rm   r   rj   rk   rn   rq   rp   r   rr   )	rm   rj   rk   rs   rn   rq   r   r0   rg   r   VERTEXAI_PROJECTVERTEXAI_LOCATIONVERTEXAI_CREDENTIALS)	rm   r   rj   vertex_credentialsvertex_projectvertex_locationrn   rq   rg   r   )rm   r   rj   r   rn   rq   zLiteLLM doesn't support {} for 'file_content'. Supported providers are 'openai', 'azure', 'vertex_ai', 'bedrock', 'manus', 'anthropic'.rt   ru   rv   r   rw   rx   r{   r   r   )6r   r1   rA   rn   r=   r   rT   r>   r   r   r2   r   r   r   r   r'   r   r7   file_content_streamingr	   r   r/   r   r.   rk   rj   r   r   r   r   retrieve_file_contentr   r   r-   r!   rp   r   r   rq   r   rs   r   r   r   r   r   r   vertex_ai_files_instancebedrock_files_instancer   r   r   r   r   )r   rd   r3   rH   rI   r   r   r:   r   r9   rn   r0   r   r   _file_content_requestrm   rf   rl   r[   r   r   rj   vertex_ai_projectvertex_ai_locationr   r\   s                             r6   r   r   L  s#   *t.880:6:8 3	

 "))VVZZ8I3-OVSVH%	 /?0,1 7EMM22&tC1D'EF%O"<<.3L"G GU]])K)KGnG_G 2'!!
 JJ6$>	34GHH)$7+%% / ./<Q1R $ " 0II!"56
 &-<-D-D	*.=.F.F
+ **%:;K"/ 1:o#yy{$*JJ)3{/@/@/B+C% !$FJJt$4$: ;
 -BB%: /2%+'# )"6K9I+JKK   C H O"MM1(11'//,99L
 -99#%:%..$,,+77)66 : HV E !G+/(11'//+77K
 ,88#$--#++'33+77%:2 9 
Hx c !K/&//52H.. 6))6!"45   // 7**7!"56 
 "1!C!C "~&H 0<<#%:!#50 2+772 = 
HB - !I--::#%:(11 3+77 ; H*  $$44 b  i  i' 0 #2!MMFjk 5  k  		D  sf   AS	 "R8 4C5S	 *DS	 :A5S	 0A3S	 $C	S	 .3S	 "AS	 8
SS	 SS	 	
SSSr   rn   rl   rm   r0   c                   ^ ^^^^^ Tb  T=(       d    STl         T=(       d    STR                  S'   TTR                  S'   TR                  R                  S0 5      =(       d    0 nUR                  b  UR                  US'   UTR                  S'   S[        S[        4UU UU4S jjm[	        [        S	5      0 S
9mT[        ;   av  [        UR                  UR                  UR                  S9n[        R                  U	[        T UUS9UR                  UR                  UUR                  UR                  UU
S9	mOd[        R                  R!                  SR#                  T[%        [        5      5      ST[&        R(                  " SS[&        R*                  " SSS9S9S9e[,        R.                  " T5      (       a  S[        4UU4S jjnU" 5       $ T" T5      $ )Nrb   rd   r3   rg   rj   r[   r4   c           
      V   > [        [        U R                  TTTTS9U R                  S9$ )N)stream_iteratorr   rd   r3   rl   r   ri   )r   r   r   ri   )r[   r3   r   rl   rd   s    r6   _wrap_streaming_result6file_content_streaming.<locals>._wrap_streaming_result0  s:     *8 ( 8 8$7' $$	
 		
r8   r   r   ro   r   )	rm   r   rj   rk   rn   rq   rp   r   r0   zTLiteLLM doesn't support {} for streaming 'file_content'. Supported providers are {}.rt   ru   rv   r   rw   rx   r{   r   c                  0   >#    T " TI S h  vN 5      $  N7f)Nr   )r   r[   s   r6   _await_and_wrap/file_content_streaming.<locals>._await_and_wrapg  s     ).99.s   	)rd   model_call_detailsr=   rj   r   iterr-   r!   rk   rp   r   r   r'   rq   r   r   r   r   sortedr   r   r   rL   rS   )r   rd   r3   rH   rI   r   r   rn   rl   rm   r0   rg   r   r   r   r[   s   ```     `     @@r6   r   r     s    !KR27+2&&w/@S&&'<=$77;;<LbQWUW##/)8)A)AN:&;I&&'78
,
	#
 
  	#48RH  II-$--#++(55

 )??!3+%"
 "** (('33%22! @ 
    00jqq#BC ,^^._Bfg 1 
 	
 8$$	:'A 	: 	:   !(++r8   )Nr   NN)NNNN)r   NN)r   NNN)r   NN   F)NNNNr   F)^__doc__rL   rO   r   uuidr   	functoolsr   typesr   typingr   r   r   r   r	   r
   r   r   FileCreateProviderFileRetrieveProviderFileDeleteProviderFileListProviderr   r   litellm.files.streamingr   litellm.files.typesr   r   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/   r0   r1   r2   r   r   boolr7   r   r   r   r   rA   rK   rN   r   r   r   r   r   r   intr   r   r   r   r   r   r   r8   r6   <module>r      sh        " G G G  	  Q  NO BC   " @ O N S A @ B P I C N N E  #  +, 
N!%(;S(@"ABN	N '( *, /1 ,. 
c3h
15c3h
	
  15.6.2+/)
)CD) ,-) ,	)
 DcN+) c3h() ) )X  158<.2+/
CD ,- ""45	
 DcN+ c3h( YsC1A'ABBC D  19.2+/	%%-% DcN+% c3h(	% % %P  19.2+/	- DcN+ c3h(	  F  /7.2+/	''+' DcN+' c3h(	' sC#$' 'T   :B.2+/FFC=F 1367F DcN+	F
 c3h(F F FT ,4!.2+/	%)%c]% DcN+% c3h(	% %P ,4!.2+/	z)zc]z DcN+z c3h(	z zz  08.2+/!++,+ DcN++ c3h(	+
 + + %'AAB+ +\   EI.2+/!HHC=H "%(;S(@"ABH DcN+	H
 c3h(H H H c3223c32235H HVT,T, C=T, "%(;S(@"AB	T,
 DcN+T, c3h(T, T, *T, 5%--'(T, +,T, T, SMT, %yc;U1U'VVWT,r8   