
    h                         d dl Z d dlmZmZmZmZ d dlZd dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZ d dlmZ dd	lmZ  e       Z G d
 de
      Zy)    N)Any	CoroutineOptionalUnion)LlmProviders)GCSBucketBaseGCSLoggingConfig)get_async_httpx_client)CreateFileRequestOpenAIFileObject)VERTEX_CREDENTIALS_TYPES   ) VertexAIJsonlFilesTransformationc                       e Zd ZdZ fdZdedee   dee   dee   dee   de	e
ej                  f   d	ee   d
efdZdedede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   f   fdZ xZS )VertexAIFilesHandlerz~
    Handles Calling VertexAI in OpenAI Files API format v1/files/*

    This implementation uploads files on GCS Buckets
    c                 `    t         |           t        t        j                        | _        y )N)llm_provider)super__init__r
   r   	VERTEX_AIasync_httpx_client)self	__class__s    `/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/vertex_ai/files/handler.pyr   zVertexAIFilesHandler.__init__   s$    "8%//#
    create_file_dataapi_basevertex_credentialsvertex_projectvertex_locationtimeoutmax_retriesreturnc                 N  K   | j                  i        d {   }| j                  |d   |d          d {   }	|d   }
t        j                  |j	                  d            \  }}| j                  |	|
||       d {   }t        j                  ||	      S 7 7 g7 w)
N)kwargsvertex_instancepath_service_account)r&   service_account_jsonbucket_namefile)openai_file_content)headersr)   object_namelogging_payload)r   gcs_upload_response)get_gcs_logging_configconstruct_request_headersvertex_ai_files_transformation7transform_openai_file_content_to_vertex_ai_file_contentget_log_json_data_on_gcs3transform_gcs_bucket_response_to_openai_file_object)r   r   r   r   r   r    r!   r"   gcs_logging_configr,   r)   r.   r-   r/   s                 r   async_create_filez&VertexAIFilesHandler.async_create_file!   s      6:5P5P 6Q 6
 0
 66./@A!34J!K 7 
 
 )7 +bb 0 4 4V < c 
	
 %)$>$>##+	 %? %
 
 .aa- 3 b 
 	
+0


s2   B%B B%B!A	B%B#B%!B%#B%	_is_asyncc	                     |r| j                  |||||||      S t        j                  | j                  |||||||            S )zn
        Creates a file on VertexAI GCS Bucket

        Only supported for Async litellm.acreate_file
        )r   r   r   r   r    r!   r"   )r8   asynciorun)	r   r9   r   r   r   r   r    r!   r"   s	            r   create_filez VertexAIFilesHandler.create_fileE   so    " ))!1!#5- /' *   ;;&&%5%'9#1$3# + ' 
 
r   )__name__
__module____qualname____doc__r   r   r   strr   r   floathttpxTimeoutintr   r8   boolr   r   r=   __classcell__)r   s   @r   r   r      s   
"
+"
 3-"
 %%=>	"

 !"
 "#"
 uemm+,"
 c]"
 
"
H&& ,& 3-	&
 %%=>& !& "#& uemm+,& c]& 
35E+E!FF	G&r   r   )r;   typingr   r   r   r   rD   litellmr   /litellm.integrations.gcs_bucket.gcs_bucket_baser   r	   &litellm.llms.custom_httpx.http_handlerr
   litellm.types.llms.openair   r   litellm.types.llms.vertex_air   transformationr   r2   r    r   r   <module>rQ      s?     2 2    J I A <!A!C W= Wr   