o
    ưi,                     @   s|   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T ddlmZ G d	d
 d
eZdS )    )Any	CoroutineOptionalUnioncastN)AsyncAzureOpenAIAsyncOpenAIAzureOpenAIOpenAI)FileDeleted)verbose_logger)*   )BaseAzureLLMc                       s  e Zd ZdZd* fddZededeee	f fddZ
ded	eeef defd
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dZded	eeef defd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dZded	eeef defd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dZ ded	eeef de!fd 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#d$Z#	d.d	eeef d%ee fd&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(d)Z%  Z&S )/AzureOpenAIFilesAPIz
    AzureOpenAI methods to support for batches
    - create_file()
    - retrieve_file()
    - list_files()
    - delete_file()
    - file_content()
    - update_file()
    returnNc                    s   t    d S N)super__init__)self	__class__ W/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/azure/files/handler.pyr      s   zAzureOpenAIFilesAPI.__init__create_file_datac                 C   s&   t | }|ddu r|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.
        Zexpires_afterN)dictgetpop)r   datar   r   r   _prepare_create_file_data   s   z-AzureOpenAIFilesAPI._prepare_create_file_dataopenai_clientc                    sJ   t d| |jjdi | |I d H }t d| tdi | S )Nzcreate_file_data=%szcreate_file_response=%sr   )r   debugfilescreater   OpenAIFileObject
model_dump)r   r   r    responser   r   r   acreate_file(   s
   z AzureOpenAIFilesAPI.acreate_file	_is_asyncapi_baseapi_keyapi_versiontimeoutmax_retriesclientlitellm_paramsc
                 C   s   | j |	pi |||||d}
|
d u rtd|du r+t|
ttfs$td| j||
dS tttt	f |
j
jdi | |}tdi | 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-   r.   r/   r    r&   r   r   r   create_file2   s.   
&zAzureOpenAIFilesAPI.create_filefile_content_requestc                    s&   |j jdi |I d H }t|jdS )Nr&   r   )r"   contentHttpxBinaryResponseContentr&   )r   r7   r    r&   r   r   r   afile_contentX   s   z!AzureOpenAIFilesAPI.afile_contentc
                 C   s   | j |	pi |||||d}
|
d u rtd|du r+t|
ttfs$td| j||
dS tttt	f |
j
jdi |}t|jdS )Nr0   r1   Tr2   )r7   r    r8   r   )r3   r4   r5   r   r   r;   r   r   r	   r
   r"   r9   r:   r&   )r   r(   r7   r)   r*   r,   r-   r+   r.   r/   r    r&   r   r   r   file_content`   s4   
z AzureOpenAIFilesAPI.file_contentfile_idc                    s   |j j|dI d H }|S )Nr=   )r"   retriever   r=   r    r&   r   r   r   aretrieve_file   s   z"AzureOpenAIFilesAPI.aretrieve_filec
                 C   sh   | j |	pi |||||d}
|
d u rtd|du r+t|
ttfs$td| j||
dS |
jj|d}|S )Nr0   r1   Tr2   r=   r    r>   )r3   r4   r5   r   r   rA   r"   r?   )r   r(   r=   r)   r*   r,   r-   r+   r.   r/   r    r&   r   r   r   retrieve_file   s0   
z!AzureOpenAIFilesAPI.retrieve_filec                    s2   |j j|dI d H }t|tst|dddS |S )Nr>   TfileidZdeletedobject)r"   deleter5   r   r@   r   r   r   adelete_file   s
   
z AzureOpenAIFilesAPI.adelete_fileorganizationc                 C   s   | j |
pi ||||	|d}|d u rtd|du r+t|ttfs$td| j||dS |jj|d}t|ts>t|dddS |S )	Nr0   r1   Tr2   rB   r>   rD   rE   )	r3   r4   r5   r   r   rI   r"   rH   r   )r   r(   r=   r)   r*   r,   r-   rJ   r+   r.   r/   r    r&   r   r   r   delete_file   s4   

zAzureOpenAIFilesAPI.delete_filepurposec                    s8   t |tr|jj|dI d H }|S |j I d H }|S )NrL   )r5   strr"   list)r   r    rL   r&   r   r   r   alist_files   s   
zAzureOpenAIFilesAPI.alist_filesc
                 C   s   | j |	pi |||||d}
|
d u rtd|du r+t|
ttfs$td| j||
dS t|tr9|
jj|d}|S |
j }|S )Nr0   r1   Tr2   )rL   r    rM   )	r3   r4   r5   r   r   rP   rN   r"   rO   )r   r(   r)   r*   r,   r-   rL   r+   r.   r/   r    r&   r   r   r   
list_files   s6   


zAzureOpenAIFilesAPI.list_files)r   N)NN)NNN)NNNNr   )'__name__
__module____qualname____doc__r   staticmethodZCreateFileRequestr   rN   r   r   r   r   r   r$   r'   boolr   floathttpxTimeoutintr	   r
   r   r6   ZFileContentRequestr:   r;   r<   Z
FileObjectrA   rC   r   rI   rK   rP   rQ   __classcell__r   r   r   r   r      s<   


	

&

	

,

	

(

	

/

	
r   )typingr   r   r   r   r   rY   Zopenair   r   r	   r
   Zopenai.types.file_deletedr   Zlitellm._loggingr   Zlitellm.types.llms.openaiZcommon_utilsr   r   r   r   r   r   <module>   s    