
    i,                         d dl mZmZmZmZmZ d dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZ d dl ddlmZ  G d	 d
e      Zy)    )Any	CoroutineOptionalUnioncastN)AsyncAzureOpenAIAsyncOpenAIAzureOpenAIOpenAI)FileDeleted)verbose_logger)*   )BaseAzureLLMc                       e Zd ZdZd fdZededeee	f   fd       Z
dedeeef   defdZ	 	 ddeded	ee   d
ee   dee   deeej(                  f   dee   deeeeeef      dee   deeee	e	ef   f   fdZdedeeef   defdZ	 	 	 ddeded	ee   d
ee   deeej(                  f   dee   dee   deeeeeef      dee   deeee	e	ef   f   fdZdedeeef   defdZ	 	 	 ddeded	ee   d
ee   deeej(                  f   dee   dee   deeeeeef      dee   fdZ dedeeef   de!fdZ"	 	 	 	 d deded	ee   d
ee   deeej(                  f   dee   dee   dee   deeeeeef      dee   fdZ#	 d!deeef   dee   fdZ$	 	 	 	 d ded	ee   d
ee   deeej(                  f   dee   dee   dee   deeeeeef      dee   fdZ% xZ&S )"AzureOpenAIFilesAPIz
    AzureOpenAI methods to support for batches
    - create_file()
    - retrieve_file()
    - list_files()
    - delete_file()
    - file_content()
    - update_file()
    returnc                 "    t         |           y N)super__init__)self	__class__s    q/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/llms/azure/files/handler.pyr   zAzureOpenAIFilesAPI.__init__   s        create_file_datac                 b    t        |       }|j                  d      |j                  dd       |S )z
        Prepare create_file_data for OpenAI SDK.

        Removes expires_after if None to match SDK's Omit pattern.
        SDK expects file_create_params.ExpiresAfter | Omit, but FileExpiresAfter works at runtime.
        expires_afterN)dictgetpop)r   datas     r   _prepare_create_file_dataz-AzureOpenAIFilesAPI._prepare_create_file_data   s1     $%88O$,HH_d+r   openai_clientc                    K   t        j                  d|        |j                  j                  di | j	                  |       d {   }t        j                  d|       t        di |j                         S 7 3w)Nzcreate_file_data=%szcreate_file_response=%s )r   debugfilescreater#   OpenAIFileObject
model_dump)r   r   r$   responses       r   acreate_filez AzureOpenAIFilesAPI.acreate_file*   sr     
 	24DE3,,33gd6T6TUe6fgg6A8("5"5"788 hs   AA=A;4A=	_is_asyncapi_baseapi_keyapi_versiontimeoutmax_retriesclientlitellm_paramsc
                    | j                  |	xs i |||||      }
|
t        d      |du r4t        |
t        t        f      st        d      | j                  ||
      S  t        t        t        t        f   |
      j                  j                  di | j                  |      }t        di |j                         S )Nr5   r0   r/   r1   r4   r.   oAzureOpenAI client is not initialized. Make sure api_key is passed or OPENAI_API_KEY is set in the environment.TkAzureOpenAI client is not an instance of AsyncAzureOpenAI. Make sure you passed an AsyncAzureOpenAI client.)r   r$   r&   )get_azure_openai_client
ValueError
isinstancer   r	   r-   r   r   r
   r   r(   r)   r#   r*   r+   )r   r.   r   r/   r0   r1   r2   r3   r4   r5   r$   r,   s               r   create_filezAzureOpenAIFilesAPI.create_file4   s      (()/R# ) 
 	   B  m.>-LM  B  $$!1 %   P4k612MBHHOO  DRVRpRp  rB  SC  D8("5"5"788r   file_content_requestc                    K    |j                   j                  di | d {   }t        |j                        S 7 w)Nr,   r&   )r(   contentHttpxBinaryResponseContentr,   )r   r>   r$   r,   s       r   afile_contentz!AzureOpenAIFilesAPI.afile_content\   s>     
 5,,44L7KLL)83D3DEE Ms    ?=?c
                 \   | j                  |	xs i |||||      }
|
t        d      |du r4t        |
t        t        f      st        d      | j                  ||
      S  t        t        t        t        f   |
      j                  j                  di |}t        |j                        S )Nr7   r8   Tr9   )r>   r$   r@   r&   )r:   r;   r<   r   r	   rC   r   r   r
   r   r(   rA   rB   r,   )r   r.   r>   r/   r0   r2   r3   r1   r4   r5   r$   r,   s               r   file_contentz AzureOpenAIFilesAPI.file_contentd   s    $ (()/R# ) 
 	   B  m.>-LM  B  %%%9+ &   Q4k612MBHHPP 
"
 *83D3DEEr   file_idc                 Z   K   |j                   j                  |       d {   }|S 7 w)NrF   )r(   retriever   rF   r$   r,   s       r   aretrieve_filez"AzureOpenAIFilesAPI.aretrieve_file   s/     
 ',,55g5FF Gs    +)+c
                     | j                  |	xs i |||||      }
|
t        d      |du r4t        |
t        t        f      st        d      | j                  ||
      S |
j                  j                  |      }|S )Nr7   r8   Tr9   rF   r$   rH   )r:   r;   r<   r   r	   rK   r(   rI   )r   r.   rF   r/   r0   r2   r3   r1   r4   r5   r$   r,   s               r   retrieve_filez!AzureOpenAIFilesAPI.retrieve_file   s      (()/R# ) 
 	   B  m.>-LM  B  &&+ '   !&&///@r   c                    K   |j                   j                  |       d {   }t        |t              st        |dd      S |S 7 $w)NrH   Tfileiddeletedobject)r(   deleter<   r   rJ   s       r   adelete_filez AzureOpenAIFilesAPI.adelete_file   sH     
 ',,33G3DD(K0'4GG	 Es    A	A%A	organizationc                 :   | j                  |
xs i ||||	|      }|t        d      |du r4t        |t        t        f      st        d      | j                  ||      S |j                  j                  |      }t        |t              st        |dd      S |S )	Nr7   r8   Tr9   rM   rH   rP   rQ   )	r:   r;   r<   r   r	   rV   r(   rU   r   )r   r.   rF   r/   r0   r2   r3   rW   r1   r4   r5   r$   r,   s                r   delete_filezAzureOpenAIFilesAPI.delete_file   s    " (()/R# ) 
 	   B  m.>-LM  B  $$+ %   !&&--g->(K0'4GGr   purposec                    K   t        |t              r&|j                  j                  |       d {   }|S |j                  j                          d {   }|S 7 *7 w)NrZ   )r<   strr(   list)r   r$   rZ   r,   s       r   alist_fileszAzureOpenAIFilesAPI.alist_files   s]     
 gs#*0055g5FFH  +005577H G7s!   0A!A#A!AA!A!c
                 V   | j                  |	xs i |||||      }
|
t        d      |du r4t        |
t        t        f      st        d      | j                  ||
      S t        |t              r|
j                  j                  |      }|S |
j                  j                         }|S )Nr7   r8   Tr9   )rZ   r$   r\   )	r:   r;   r<   r   r	   r_   r]   r(   r^   )r   r.   r/   r0   r2   r3   rZ   r1   r4   r5   r$   r,   s               r   
list_fileszAzureOpenAIFilesAPI.list_files  s      (()/R# ) 
 	   B  m.>-LM  B  ##+ $  
 gs#$**///@H  %**//1Hr   )r   N)NN)NNN)NNNNr   )'__name__
__module____qualname____doc__r   staticmethodCreateFileRequestr   r]   r   r#   r   r   r	   r*   r-   boolr   floathttpxTimeoutintr
   r   r   r=   FileContentRequestrB   rC   rE   
FileObjectrK   rN   r   rV   rY   r_   ra   __classcell__)r   s   @r   r   r      s    +	c3h 9+9 -{:;9 
	9* )-&9&9 ,&9 3-	&9
 #&9 c]&9 uemm+,&9 c]&9 +/DE
&9 !&9 
35E+E!FF	G&9PF0F -{:;F 
$	F  &* )-,F,F 1,F 3-	,F
 #,F uemm+,,F c],F c],F +/DE
,F !,F 
"Ic38R.R$SS
,F\ -{:; 
	  &* )-(( ( 3-	(
 #( uemm+,( c]( c]( +/DE
( !(T		 -{:;	 
		& '+%) )-,, , 3-	,
 #, uemm+,, c], sm, c], +/DE
, !,b "&	-{:;	 #	$ "&%) )-,, 3-, #	,
 uemm+,, c], #, c], +/DE
, !,r   r   )typingr   r   r   r   r   rj   openair   r	   r
   r   openai.types.file_deletedr   litellm._loggingr   litellm.types.llms.openaicommon_utilsr   r   r&   r   r   <module>rv      s.    8 8  E E 1 + ' 'g, gr   