
    h'                     |    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 ddlmZ  G d	 d
e      Zy)    )Any	CoroutineOptionalUnioncastN)AsyncAzureOpenAIAzureOpenAI)FileDeleted)verbose_logger)*   )BaseAzureLLMc                   T    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   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   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   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      de
e   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      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    \/var/www/Befach/backend/env/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|       t	        di |j                         S 7 3w)Nzcreate_file_data=%szcreate_file_response=%s )r   debugfilescreateOpenAIFileObject
model_dump)r   r   r   responses       r   acreate_filez AzureOpenAIFilesAPI.acreate_file   sg     
 	24DE3,,33G6FGG6A8("5"5"788 Hs   6A.A,4A.	_is_asyncapi_baseapi_keyapi_versiontimeoutmax_retriesclientlitellm_paramsc
                 <   | j                  |	xs i |||||      }
|
t        d      |du r.t        |
t              st        d      | j	                  ||
      S  t        t        |
      j                  j                  di |}t        di |j                         S )N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   )get_azure_openai_client
ValueError
isinstancer   r$   r   r	   r   r    r!   r"   )r   r%   r   r&   r'   r(   r)   r*   r+   r,   r   r#   s               r   create_filezAzureOpenAIFilesAPI.create_file%   s     (()/R# ) 
 	   B  m-=>  B  $$!1 %   A4]399@@TCST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   r5   r   r#   s       r   afile_contentz!AzureOpenAIFilesAPI.afile_contentK   s>     
 5,,44L7KLL)83D3DEE Ms    ?=?c
                 6   | j                  |	xs i |||||      }
|
t        d      |du r.t        |
t              st        d      | j	                  ||
      S  t        t        |
      j                  j                  di |}t        |j                        S )Nr.   r/   Tr0   )r5   r   r7   r   )r1   r2   r3   r   r:   r   r	   r   r8   r9   r#   )r   r%   r5   r&   r'   r)   r*   r(   r+   r,   r   r#   s               r   file_contentz AzureOpenAIFilesAPI.file_contentS   s      (()/R# ) 
 	   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
                     | j                  |	xs i |||||      }
|
t        d      |du r.t        |
t              st        d      | j	                  ||
      S |
j
                  j                  |      }|S )Nr.   r/   Tr0   r=   r   r?   )r1   r2   r3   r   rB   r   r@   )r   r%   r=   r&   r'   r)   r*   r(   r+   r,   r   r#   s               r   retrieve_filez!AzureOpenAIFilesAPI.retrieve_file   s     (()/R# ) 
 	   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   deleter3   r
   rA   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 r.t        |t              st        d      | j	                  ||      S |j
                  j                  |      }t        |t              st        |dd      S |S )	Nr.   r/   Tr0   rD   r?   rG   rH   )r1   r2   r3   r   rM   r   rL   r
   )r   r%   r=   r&   r'   r)   r*   rN   r(   r+   r,   r   r#   s                r   delete_filezAzureOpenAIFilesAPI.delete_file   s     (()/R# ) 
 	   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rQ   )r3   strr   list)r   r   rQ   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
                 J   | j                  |	xs i |||||      }
|
t        d      |du r.t        |
t              st        d      | j	                  ||
      S t        |t
              r|
j                  j                  |      }|S |
j                  j                         }|S )Nr.   r/   Tr0   )rQ   r   rS   )r1   r2   r3   r   rV   rT   r   rU   )r   r%   r&   r'   r)   r*   rQ   r(   r+   r,   r   r#   s               r   
list_fileszAzureOpenAIFilesAPI.list_files   s     (()/R# ) 
 	   B  m-=>  B  ##+ $  
 gs#$**///@H  %**//1Hr   )r   N)NN)NNN)NNNNr   )#__name__
__module____qualname____doc__r   CreateFileRequestr   r!   r$   boolr   rT   r   floathttpxTimeoutintr	   dictr   r   r4   FileContentRequestr9   r:   r<   
FileObjectrB   rE   r
   rM   rP   rV   rX   __classcell__)r   s   @r   r   r      s#   9+9 (9 
	9& BF)-$9$9 ,$9 3-	$9
 #$9 c]$9 uemm+,$9 c]$9 {,<<=>$9 !$9 
35E+E!FF	G$9LF0F (F 
$	F  &*AE)-*F*F 1*F 3-	*F
 #*F uemm+,*F c]*F c]*F {,<<=>*F !*F 
"Ic38R.R$SS
*FX ( 
	  &*AE)-&& & 3-	&
 #& uemm+,& c]& c]& {,<<=>& !&P		 (	 
		& '+%)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.types.llms.openaicommon_utilsr   r   r   r   r   <module>rm      s+    8 8  0 1 + ' 'N, Nr   