
    gr(                         d dl mZmZmZmZmZ d dl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 dd	lmZ  G d
 de      Zy)    )Any	CoroutineOptionalUnioncastN)AsyncAzureOpenAIAzureOpenAI)FileDeleted)verbose_logger)BaseLLM)*   )get_azure_openai_clientc                       e Zd ZdZd fdZdede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f      deeeeeef   f   fdZdede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f      deeeeeef   f   fdZdede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f      fdZdede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f      fdZ	 dde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f      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    U/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/azure/files/handler.pyr   zAzureOpenAIFilesAPI.__init__   s        create_file_dataopenai_clientc                    K   t        j                  d|        |j                  j                  di | d {   }t        j                  d|       |S 7 w)Nzcreate_file_data=%szcreate_file_response=%s )r   debugfilescreate)r   r   r   responses       r   acreate_filez AzureOpenAIFilesAPI.acreate_file   sU     
 	24DE3,,33G6FGG6A Hs   6AAA	_is_asyncapi_baseapi_keyapi_versiontimeoutmax_retriesclientc	           	          t        |||||||      }	|	t        d      |du r.t        |	t              st        d      | j	                  ||	      S  |	j
                  j                  di |}
|
S )N)r&   r%   r'   r(   r)   r*   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   )r   
ValueError
isinstancer   r#   r    r!   )r   r$   r   r%   r&   r'   r(   r)   r*   r   r"   s              r   create_filezAzureOpenAIFilesAPI.create_file&   s     $!''# 	   B  m-=>  B  $$!1 %   .=&&--A0@Ar   file_content_requestc                    K    |j                   j                  di | d {   }t        |j                        S 7 w)Nr"   r   )r    contentHttpxBinaryResponseContentr"   )r   r1   r   r"   s       r   afile_contentz!AzureOpenAIFilesAPI.afile_contentL   s>     
 5,,44L7KLL)83D3DEE Ms    ?=?c	           
      &   t        |||||d ||      }	|	t        d      |du r.t        |	t              st        d      | j	                  ||	      S  t        t        |	      j                  j                  di |}
t        |
j                        S )N)r&   r%   r(   r'   r)   organizationr*   r$   r,   Tr-   )r1   r   r3   r   )r   r.   r/   r   r6   r   r	   r    r4   r5   r"   )r   r$   r1   r%   r&   r(   r)   r'   r*   r   r"   s              r   file_contentz AzureOpenAIFilesAPI.file_contentT   s     $!''!#	 	   B  m-=>  B  %%%9+ &   B4]399AA 
"
 *83D3DEEr   file_idc                 Z   K   |j                   j                  |       d {   }|S 7 w)Nr:   )r    retriever   r:   r   r"   s       r   aretrieve_filez"AzureOpenAIFilesAPI.aretrieve_file   s/     
 ',,55g5FF Gs    +)+c	           
          t        ||||d |||      }	|	t        d      |du r.t        |	t              st        d      | j	                  ||	      S |	j
                  j                  |      }
|
S )Nr&   r%   r(   r)   r8   r'   r*   r$   r,   Tr-   r:   r   r<   )r   r.   r/   r   r?   r    r=   )r   r$   r:   r%   r&   r(   r)   r'   r*   r   r"   s              r   retrieve_filez!AzureOpenAIFilesAPI.retrieve_file   s     $!'!'#	 	   B  m-=>  B  &&+ '   !&&///@r   c                    K   |j                   j                  |       d {   }t        |t              st        |dd      S |S 7 $w)Nr<   Tfileiddeletedobject)r    deleter/   r
   r>   s       r   adelete_filez AzureOpenAIFilesAPI.adelete_file   sH     
 ',,33G3DD(K0'4GG	 Es    A	A%A	r8   c
           
         t        |||||||	|      }
|
t        d      |du r.t        |
t              st        d      | j	                  ||
      S |
j
                  j                  |      }t        |t              st        |dd      S |S )	NrA   r,   Tr-   rB   r<   rE   rF   )r   r.   r/   r   rK   r    rJ   r
   )r   r$   r:   r%   r&   r(   r)   r8   r'   r*   r   r"   s               r   delete_filezAzureOpenAIFilesAPI.delete_file   s     $!')'#	 	   B  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rN   )r/   strr    list)r   r   rN   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	           
      :   t        ||||d |||      }	|	t        d      |du r.t        |	t              st        d      | j	                  ||	      S t        |t
              r|	j                  j                  |      }
|
S |	j                  j                         }
|
S )NrA   r,   Tr-   )rN   r   rP   )r   r.   r/   r   rS   rQ   r    rR   )r   r$   r%   r&   r(   r)   rN   r'   r*   r   r"   s              r   
list_fileszAzureOpenAIFilesAPI.list_files   s     $!'!'#	 	   B  m-=>  B  ##+ $  
 gs#$**///@H  %**//1Hr   )r   Nr   )NN)NNN)!__name__
__module____qualname____doc__r   CreateFileRequestr   
FileObjectr#   boolr   rQ   r   floathttpxTimeoutintr	   r   r   r0   FileContentRequestr5   r6   r9   r?   rC   r
   rK   rM   rS   rU   __classcell__)r   s   @r   r   r      s   + ( 
	& BF$$ ,$ 3-	$
 #$ c]$ uemm+,$ c]$ {,<<=>$ 
z9S#z%9::	;$LF0F (F 
$	F  &*AE+F+F 1+F 3-	+F
 #+F uemm+,+F c]+F c]+F {,<<=>+F 
"Ic38R.R$SS
+FZ ( 
	  &*AE'' ' 3-	'
 #' uemm+,' c]' c]' {,<<=>'R		 (	 
		& '+%)AE++ + 3-	+
 #+ uemm+,+ c]+ sm+ c]+ {,<<=>+` "&	'	 #	$ "&%)AE++ 3-+ #	+
 uemm+,+ c]+ #+ c]+ {,<<=>+r   r   )typingr   r   r   r   r   r^   openair   r	   openai.types.file_deletedr
   litellm._loggingr   litellm.llms.baser   litellm.types.llms.openaicommon_utilsr   r   r   r   r   <module>rj      s.    8 8  0 1 + % ' 2R' Rr   