Ë
    uPêj–R  ã                   ól  — d dl Z d dlmZ d dlmZmZmZ d dlZd dlm	Z	m
Z
 d dlZd dlmZmZmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZ d dlmZ ddl m!Z! erd dl"m#Z$  G d„ de«      Z% G d„ de«      Z& G d„ de
«      Z' G d„ de
«      Z(de%defd„Z)de&de*e+e,f   fd„Z- G d„ de«      Z.y)é    N)Ú	Coroutine)ÚTYPE_CHECKINGÚFinalÚProtocol)ÚReadOnlyÚ	TypedDict)Úasync_safe_getÚencode_url_path_segmentÚsafe_get)Ú_get_httpx_clientÚget_async_httpx_client)ÚVertexAIErrorÚget_vertex_base_url)Ú	VertexLLM)ÚCreateBatchRequest)ÚVERTEX_CREDENTIALS_TYPESÚVertexAIBatchPredictionJobÚVertexBatchPredictionResponse)ÚLiteLLMBatché   )ÚVertexAIBatchTransformation©ÚLoggingc                   ó   — e Zd ZdZdefd„Zy)Ú_VertexBatchJsonSourcezLAn HTTP response whose JSON body is a single Vertex AI batch prediction job.Úreturnc                  ó   — y ©N© ©Úselfs    úk/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/vertex_ai/batches/handler.pyÚjsonz_VertexBatchJsonSource.json%   ó   � ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r#   r   r%   r"   r   r   "   s   „ ÙVà8Ð3Ô8r%   r   c                   ó&   — e Zd ZdZdeeef   fd„Zy)Ú_VertexBatchListJsonSourcezNAn HTTP response whose JSON body is a page of Vertex AI batch prediction jobs.r   c                  ó   — y r   r   r    s    r"   r#   z_VertexBatchListJsonSource.json+   r$   r%   N)r&   r'   r(   r)   ÚdictÚstrÚobjectr#   r   r%   r"   r+   r+   (   s   „ ÙXà,�d˜3 ˜;Ñ'Ô,r%   r+   c                   ó"   — e Zd ZU dZee   ed<   y)Ú_VertexBatchPayloadViewzGHolds one decoded batch prediction job so the payload reads back typed.ÚpayloadN)r&   r'   r(   r)   r   r   Ú__annotations__r   r%   r"   r1   r1   .   s   … ÙQàÐ3Ñ4Ô4r%   r1   c                   ó6   — e Zd ZU dZeej                     ed<   y)Ú_FetchedResponseViewzOHolds one ``safe_get`` result so the response reads back as ``httpx.Response``.ÚresponseN)r&   r'   r(   r)   r   ÚhttpxÚResponser3   r   r%   r"   r5   r5   4   s   … ÙYà�u—~‘~Ñ&Ô&r%   r5   r6   r   c                 ó"   — | j                  «       S r   ©r#   ©r6   s    r"   Ú_vertex_batch_payloadr<   :   ó   € Ø�=‰=‹?Ðr%   c                 ó"   — | j                  «       S r   r:   r;   s    r"   Ú_vertex_batch_list_payloadr?   >   r=   r%   c                   óÆ  ‡ — e Zd Zdefˆ fd„Zdedededz  dedz  dedz  d	edz  d
ee	j                  z  dedz  deeeeef   z  fd„Zdededeeef   defd„Zd	ededefd„Z	 ddedededz  dedz  dedz  d	edz  d
ee	j                  z  dedz  dddeeeeef   z  fd„Z	 ddedeeef   dddefd„Zdededz  dedz  dedz  dedz  dedz  d	edz  d
ee	j                  z  dedz  fd„Zdedeeef   deeef   fd„Zdedededz  dedz  dedz  d	edz  d
ee	j                  z  dedz  deeeeef   z  fd„Z	 d dededeeef   d
ee	j                  z  def
d„Zˆ xZS )!ÚVertexAIBatchPredictionÚgcs_bucket_namec                 ó2   •— t        ‰| �  |i |¤Ž || _        y r   )ÚsuperÚ__init__rB   )r!   rB   ÚargsÚkwargsÚ	__class__s       €r"   rE   z VertexAIBatchPrediction.__init__C   s   ø€ Ü‰Ñ˜$Ð) &Ò)Ø.ˆÕr%   Ú	_is_asyncÚcreate_batch_dataÚapi_baseNÚvertex_credentialsÚvertex_projectÚvertex_locationÚtimeoutÚmax_retriesr   c	                 óH  — t        «       }	| j                  ||d¬«      \  }
}| j                  |xs d|xs |¬«      }t        |j	                  d«      «      dkD  r|j	                  d«      d   }nd}| j                  |dd |d d |d |xs ||xs dd	¬
«      \  }}dd|
› �dœ}t        j                  |¬«      }|du r| j                  |||¬«      S |	j                  ||t        j                  |«      ¬«      }d|j                  «       i}|d   }t        j                  |¬«      }|S )NÚ	vertex_ai©ÚcredentialsÚ
project_idÚcustom_llm_providerúus-central1©rN   rM   ú:r   éÿÿÿÿÚ Úv1©rK   rV   Úgemini_api_keyÚendpointÚstreamÚauth_headerÚurlÚmodelrM   rN   Úvertex_api_versionúapplication/json; charset=utf-8úBearer ©zContent-TypeÚAuthorization)ÚrequestT)Úvertex_batch_requestrK   Úheaders©rb   rk   Údatar2   r;   )r   Ú_ensure_access_tokenÚcreate_vertex_batch_urlÚlenÚsplitÚ_check_custom_proxyr   Ú9transform_openai_batch_request_to_vertex_ai_batch_requestÚ_async_create_batchÚpostr#   ÚdumpsÚ;transform_vertex_ai_batch_response_to_openai_batch_response)r!   rI   rJ   rK   rL   rM   rN   rO   rP   Úsync_handlerÚaccess_tokenrU   Údefault_api_baser_   Ú_rk   rj   r6   Úpayload_viewÚ_json_responseÚvertex_batch_responses                        r"   Úcreate_batchz$VertexAIBatchPrediction.create_batchG   sŒ  € ô 0Ó1ˆà#'×#<Ñ#<Ø*Ø%Ø +ð $=ó $
Ñ ˆ�jð #'×">Ñ">Ø+Ò<¨}Ø)Ò7¨Zð #?ó #
Ðô
 Ð×%Ñ% cÓ*Ó+¨aÒ/Ø'×-Ñ-¨cÓ2°2Ñ6‰HàˆHà×.Ñ.ØØ +ØØØØØ ØØ)Ò7¨ZØ+Ò<¨}Ø#ð /ó 
‰ˆˆ8ð >Ø& | nÐ5ñ
ˆô (×aÑaØ)ôð 	ð ˜ÑØ×+Ñ+Ø%9Ø!Øð ,ó ð ð '×+Ñ+ØØÜ—‘Ð0Ó1ð ,ó 
ˆð 9BÀ8Ç=Á=Ã?Ð7SˆØ ,¨YÑ 7ˆÜ ;× wÑ wØ#ô!
Ðð %Ð$r%   rj   rk   c              ƒ   óè  K  — t        t        j                  j                  ¬«      }	 |j	                  ||t        j                  |«      ¬«      ƒ d {  –—† }d|j                  «       i}|d   }	t        j                  |	¬«      }
|
S 7 Œ3# t        j                  $ rT}|j                  j                  }t        j                  j                  d|j                  j                  |d d «       ‚ d }~ww xY w­w)N©Úllm_providerrl   z1Vertex AI batch create failed: status=%s, body=%séè  r2   r;   )r   ÚlitellmÚLlmProvidersÚ	VERTEX_AIru   r#   rv   r7   ÚHTTPStatusErrorr6   ÚtextÚverbose_loggerÚerrorÚstatus_coder   rw   )r!   rj   rK   rk   Úclientr6   ÚeÚ
error_bodyr|   r}   r~   s              r"   rt   z+VertexAIBatchPrediction._async_create_batch‘   sæ   è ø€ ô /Ü ×-Ñ-×7Ñ7ô
ˆð	Ø$*§K¡KØØÜ—Z‘ZÐ 4Ó5ð %0ó %÷ ˆHð 9BÀ8Ç=Á=Ã?Ð7SˆØ ,¨YÑ 7ˆÜ ;× wÑ wØ#ô!
Ðð %Ð$ð'ùô
 ×$Ñ$ò 	Ø !§
¡
§¡ˆJÜ×"Ñ"×(Ñ(ØCØ—
‘
×&Ñ&Ø˜5˜DÐ!ôð
 ûð	üs;   ‚%C2¨*B ÁBÁB Á/C2ÂB ÂC/ÂAC*Ã*C/Ã/C2c                 ó.   — t        |«      }|› d|› d|› d�S )z0Return the base url for the vertex garden modelsz/v1/projects/z/locations/z/batchPredictionJobs)r   )r!   rN   rM   Úbase_urls       r"   ro   z/VertexAIBatchPrediction.create_vertex_batch_url°   s*   € ô .¨oÓ>ˆØ�˜=¨Ð(8¸ÀOÐCTÐThÐiÐir%   Úbatch_idÚlogging_objzLiteLLMLoggingObj | Nonec
                 óæ  — t        «       }
| j                  ||d¬«      \  }}| j                  |xs d|xs |¬«      }t        |d¬«      }|› d|› �}t	        |j                  d«      «      d	kD  r|j                  d«      d
   }nd}| j                  |dd |d d |d |xs ||xs dd¬«      \  }}dd|› �dœ}|du r| j                  |||	¬«      S |	�/ddlm	} t        |	|«      r|	j                  ddi ||d|› d�dœ¬«       dt        |
||¬«      i}|d   }|j                  dk7  r1t        |j                  d|j                  › d|j                  › �¬«      ‚t!        j"                  t%        |«      ¬«      }|S ) NrR   rS   rW   rX   r‘   ©Ú
field_nameú/rY   r   rZ   r[   r\   r]   re   rf   rg   T)rK   rk   r’   r   r   ú.
GET Request Sent from LiteLLM:
curl -X GET \
úb \
-H 'Authorization: Bearer ***REDACTED***' \
-H 'Content-Type: application/json; charset=utf-8'
©Úcomplete_input_dictrK   rk   Úrequest_str©ÚinputÚapi_keyÚadditional_argsr6   ©rk   éÈ   úError: ú ©r‹   Úmessager;   )r   rn   ro   r
   rp   rq   rr   Ú_async_retrieve_batchÚ*litellm.litellm_core_utils.litellm_loggingr   Ú
isinstanceÚpre_callr   r‹   r   rˆ   r   rw   r<   )r!   rI   r‘   rK   rL   rM   rN   rO   rP   r’   rx   ry   rU   rz   Úencoded_batch_idr_   r{   rk   r   Úfetchedr6   r~   s                         r"   Úretrieve_batchz&VertexAIBatchPrediction.retrieve_batchº   s  € ô 0Ó1ˆà#'×#<Ñ#<Ø*Ø%Ø +ð $=ó $
Ñ ˆ�jð  ×7Ñ7Ø+Ò<¨}Ø)Ò7¨Zð 8ó 
Ðô #:¸(ÈzÔ"ZÐØ.Ð/¨qÐ1AÐ0BÐCÐäÐ×%Ñ% cÓ*Ó+¨aÒ/Ø'×-Ñ-¨cÓ2°2Ñ6‰HàˆHà×.Ñ.ØØ +ØØØØØ ØØ)Ò7¨ZØ+Ò<¨}Ø#ð /ó 
‰ˆˆ8ð >Ø& | nÐ5ñ
ˆð
 ˜ÑØ×-Ñ-Ø!ØØ'ð .ó ð ð Ð"ÝJä˜+ wÔ/Ø×$Ñ$ØØà/1Ø$,Ø#*ð/à'˜jð )SðTñ%ð %ô ð. œØØØôð0
ˆð " *Ñ-ˆà×Ñ 3Ò&ÜØ$×0Ñ0¸GÀH×DXÑDXÐCYÐYZÐ[c×[hÑ[hÐZiÐ:jôð ô !<× wÑ wÜ*¨8Ó4ô!
Ðð %Ð$r%   c           
   ƒ   ó´  K  — t        t        j                  j                  ¬«      }|�/ddlm} t        ||«      r|j                  ddi ||d|› d�dœ¬«       d	t        |||¬
«      ƒ d {  –—† i}|d	   }|j                  dk7  r1t        |j                  d|j                  › d|j                  › �¬«      ‚t        j                  t        |«      ¬«      }|S 7 Œk­w)Nr�   r   r   r[   r—   r˜   r™   rœ   r6   r    r¡   r¢   r£   r¤   r;   )r   r„   r…   r†   r§   r   r¨   r©   r	   r‹   r   rˆ   r   rw   r<   )	r!   rK   rk   r’   rŒ   r   r«   r6   r~   s	            r"   r¦   z-VertexAIBatchPrediction._async_retrieve_batch$  s  è ø€ ô /Ü ×-Ñ-×7Ñ7ô
ˆð
 Ð"ÝJä˜+ wÔ/Ø×$Ñ$ØØà/1Ø$,Ø#*ð/à'˜jð )SðTñ%ð %ô ð, œnØØØô÷ ð0
ˆð " *Ñ-ˆØ×Ñ 3Ò&ÜØ$×0Ñ0¸GÀH×DXÑDXÐCYÐYZÐ[c×[hÑ[hÐZiÐ:jôð ô !<× wÑ wÜ*¨8Ó4ô!
Ðð %Ð$ðús   ‚A(CÁ*CÁ+A,CÚafterÚlimitc
           	      ó„  — t        «       }
| j                  ||d¬«      \  }}| j                  |xs d|xs |¬«      }t        |j	                  d«      «      dkD  r|j	                  d«      d   }nd}| j                  |dd |d d |¬	«      \  }}d
d|› �dœ}|�dt        |«      ini }|�d|ini }i |¥|¥}|du r| j                  |||¬«      S |
j                  |||¬«      }|j                  dk7  r1t        |j                  d|j                  › d|j                  › �¬«      ‚t        |«      }t        j                  |¬«      }|S )NrR   rS   rW   rX   rY   r   rZ   r[   )rK   rV   r^   r_   r`   ra   rb   re   rf   rg   ÚpageSizeÚ	pageTokenT)rK   rk   Úparams©rb   rk   r³   r¡   r¢   r£   r¤   r;   )r   rn   ro   rp   rq   rr   r.   Ú_async_list_batchesÚgetr‹   r   rˆ   r?   r   Ú?transform_vertex_ai_batch_list_response_to_openai_list_response)r!   rI   r®   r¯   rK   rL   rM   rN   rO   rP   rx   ry   rU   rz   r_   r{   rk   Úlimit_paramsÚafter_paramsr³   r6   r}   r~   s                          r"   Úlist_batchesz$VertexAIBatchPrediction.list_batchesZ  sÃ  € ô 0Ó1ˆà#'×#<Ñ#<Ø*Ø%Ø +ð $=ó $
Ñ ˆ�jð #'×">Ñ">Ø+Ò<¨}Ø)Ò7¨Zð #?ó #
Ðô
 Ð×%Ñ% cÓ*Ó+¨aÒ/Ø'×-Ñ-¨cÓ2°2Ñ6‰HàˆHà×.Ñ.ØØ +ØØØØØ ð /ó 
‰ˆˆ8ð >Ø& | nÐ5ñ
ˆð
 KPÐJ[¨z¼3¸u»:Ñ.FÐacˆØFKÐFW¨{¸EÑ.BÐ]_ˆØ8˜<Ð8¨<Ð8ˆà˜ÑØ×+Ñ+Ø!ØØð ,ó ð ð '×*Ñ*ØØØð +ó 
ˆð ×Ñ 3Ò&ÜØ$×0Ñ0¸GÀH×DXÑDXÐCYÐYZÐ[c×[hÑ[hÐZiÐ:jôð ô !;¸8Ó Dˆä'×gÑgØ'ôð 	ð
 %Ð$r%   r³   c              ƒ   óT  K  — t        t        j                  j                  ¬«      }|j	                  |||¬«      ƒ d {  –—† }|j
                  dk7  r1t        |j
                  d|j
                  › d|j                  › �¬«      ‚t        |«      }t        j                  |¬«      }|S 7 Œg­w)Nr�   r´   r¡   r¢   r£   r¤   r;   )r   r„   r…   r†   r¶   r‹   r   rˆ   r?   r   r·   )r!   rK   rk   r³   rŒ   r6   r}   r~   s           r"   rµ   z+VertexAIBatchPrediction._async_list_batches¥  s¸   è ø€ ô /Ü ×-Ñ-×7Ñ7ô
ˆð !'§
¡
ØØØð !+ó !
÷ 
ˆð
 ×Ñ 3Ò&ÜØ$×0Ñ0¸GÀH×DXÑDXÐCYÐYZÐ[c×[hÑ[hÐZiÐ:jôð ô !;¸8Ó Dˆä'×gÑgØ'ôð 	ð
 %Ð$ð!
ús   ‚<B(¾B&¿A(B(c	                 óD  — | j                  ||d¬«      \  }	}
| j                  |xs d|xs |
¬«      }t        |d¬«      }|› d|› �}|› d�}| j                  |dd d	d d |d |xs |
|xs dd
¬«      \  }}|j	                  d«      r|j                  d«      }n$|j                  dd«      d   j                  d«      }dd|	› �dœ}|du r| j                  ||||¬«      S t        «       }	 |j                  ||t        j                  i «      |¬«       |j+                  ||¬«      }|j&                  dk7  rit        j                   j#                  d|j&                  |j(                  d d «       t-        |j&                  d|j&                  › d|j(                  › �¬«      ‚t/        j0                  t3        |«      ¬«      }|S # t        j                  $ rR}t        j                   j#                  d|j$                  j&                  |j$                  j(                  d d «       ‚ d }~ww xY w)NrR   rS   rW   rX   r‘   r”   r–   z:cancelÚcancelr\   r]   r   r   re   rf   rg   T)rK   Úretrieve_api_baserk   rO   ©rb   rk   rm   rO   ú1Vertex AI batch cancel failed: status=%s, body=%srƒ   ©rb   rk   r¡   ú@Vertex AI batch retrieve-after-cancel failed: status=%s, body=%sr¢   r£   r¤   r;   )rn   ro   r
   rr   ÚendswithÚremovesuffixÚrsplitÚrstripÚ_async_cancel_batchr   ru   r#   rv   r7   r‡   r„   r‰   rŠ   r6   r‹   rˆ   r¶   r   r   rw   r<   )r!   rI   r‘   rK   rL   rM   rN   rO   rP   ry   rU   rz   rª   Úretrieve_api_base_defaultÚcancel_api_base_defaultr{   r¾   rk   rx   r�   Úretrieve_responser~   s                         r"   Úcancel_batchz$VertexAIBatchPrediction.cancel_batchÀ  s�  € ð $(×#<Ñ#<Ø*Ø%Ø +ð $=ó $
Ñ ˆ�jð #'×">Ñ">Ø+Ò<¨}Ø)Ò7¨Zð #?ó #
Ðô
 #:¸(ÈzÔ"ZÐØ.>Ð-?¸qÐAQÐ@RÐ+SÐ!Ø,EÐ+FÀgÐ)NÐà×.Ñ.ØØ +ØØØØØ'ØØ)Ò7¨ZØ+Ò<¨}Ø#ð /ó 
‰ˆˆ8ð ×Ñ˜YÔ'Ø (× 5Ñ 5°iÓ @Ñà (§¡°	¸1Ó =¸aÑ @× GÑ GÈÓ LÐð >Ø& | nÐ5ñ
ˆð
 ˜ÑØ×+Ñ+Ø!Ø"3ØØð	 ,ó ð ô 0Ó1ˆð	Ø×ÑØØÜ—Z‘Z “^Øð	 ô ð $0×#3Ñ#3Ø!Øð $4ó $
Ðð ×(Ñ(¨CÒ/Ü×"Ñ"×(Ñ(ØRØ!×-Ñ-Ø!×&Ñ& u¨Ð-ôô
  Ø-×9Ñ9Ø!Ð"3×"?Ñ"?Ð!@ÀÐBS×BXÑBXÐAYÐZôð ô
 !<× wÑ wÜ*Ð+<Ó=ô!
Ðð %Ð$øô7 ×$Ñ$ò 	Ü×"Ñ"×(Ñ(ØCØ—
‘
×&Ñ&Ø—
‘
—‘  Ð&ôð
 ûð	ús   Ã&(F: Æ:HÇAHÈHr¾   c              ƒ   óö  K  — t        t        j                  j                  ¬«      }	 |j	                  ||t        j                  i «      |¬«      ƒ d {  –—†  |j                  ||¬«      ƒ d {  –—† }|j                  dk7  rit        j                  j                  d|j                  |j                  d d «       t        |j                  d|j                  › d	|j                  › �¬
«      ‚t!        j"                  t%        |«      ¬«      }|S 7 Œ¸# t        j                  $ rR}t        j                  j                  d|j                  j                  |j                  j                  d d «       ‚ d }~ww xY w7 �Œ­w)Nr�   r¿   rÀ   rƒ   rÁ   r¡   rÂ   r¢   r£   r¤   r;   )r   r„   r…   r†   ru   r#   rv   r7   r‡   r‰   rŠ   r6   r‹   rˆ   r¶   r   r   rw   r<   )	r!   rK   r¾   rk   rO   rŒ   r�   rÊ   r~   s	            r"   rÇ   z+VertexAIBatchPrediction._async_cancel_batch  sp  è ø€ ô /Ü ×-Ñ-×7Ñ7ô
ˆð	Ø—+‘+ØØÜ—Z‘Z “^Øð	 ó ÷ ð ð *0¯©Ø!Øð *4ó *
÷ $
Ðð ×(Ñ(¨CÒ/Ü×"Ñ"×(Ñ(ØRØ!×-Ñ-Ø!×&Ñ& u¨Ð-ôô
  Ø-×9Ñ9Ø!Ð"3×"?Ñ"?Ð!@ÀÐBS×BXÑBXÐAYÐZôð ô
 !<× wÑ wÜ*Ð+<Ó=ô!
Ðð %Ð$ðCùô ×$Ñ$ò 	Ü×"Ñ"×(Ñ(ØCØ—
‘
×&Ñ&Ø—
‘
—‘  Ð&ôð
 ûð	úð$
ûsH   ‚%E9¨+D ÁDÁD ÁE9Á.E6Á/BE9ÄD ÄE3Ä!AE.Å.E3Å3E9r   )g     À‚@)r&   r'   r(   r.   rE   Úboolr   r   Úfloatr7   ÚTimeoutÚintr   r   r/   r   r   r-   rt   ro   r¬   r¦   rº   rµ   rË   rÇ   Ú__classcell__)rH   s   @r"   rA   rA   B   s  ø„ ð/¨õ /ðH%àðH%ð .ðH%ð ˜‘*ð	H%ð
 5°tÑ;ðH%ð ˜d™
ðH%ð ˜t™ðH%ð ˜Ÿ™Ñ&ðH%ð ˜4‘ZðH%ð 
˜	 &¨&°,Ð">Ñ?Ñ	?óH%ðT%à8ð%ð ð%ð �c˜3�h‘ð	%ð
 
ó%ð>jàðjð ðjð 
ó	jð( 37ñh%àðh%ð ðh%ð ˜‘*ð	h%ð
 5°tÑ;ðh%ð ˜d™
ðh%ð ˜t™ðh%ð ˜Ÿ™Ñ&ðh%ð ˜4‘Zðh%ð 0ðh%ð 
˜	 &¨&°,Ð">Ñ?Ñ	?óh%ð\ 37ñ	4%àð4%ð �c˜3�h‘ð4%ð 0ð	4%ð
 
ó4%ðlI%àðI%ð �T‰zðI%ð �T‰zð	I%ð
 ˜‘*ðI%ð 5°tÑ;ðI%ð ˜d™
ðI%ð ˜t™ðI%ð ˜Ÿ™Ñ&ðI%ð ˜4‘ZóI%ðV%àð%ð �c˜3�h‘ð%ð �S˜#�X‘ó	%ð6]%àð]%ð ð]%ð ˜‘*ð	]%ð
 5°tÑ;ð]%ð ˜d™
ð]%ð ˜t™ð]%ð ˜Ÿ™Ñ&ð]%ð ˜4‘Zð]%ð 
˜	 &¨&°,Ð">Ñ?Ñ	?ó]%ðH */ñ,%àð,%ð ð,%ð �c˜3�h‘ð	,%ð
 ˜Ÿ™Ñ&ð,%ð 
÷,%r%   rA   )/r#   Úcollections.abcr   Útypingr   r   r   r7   Útyping_extensionsr   r   r„   Ú$litellm.litellm_core_utils.url_utilsr	   r
   r   Ú&litellm.llms.custom_httpx.http_handlerr   r   Ú#litellm.llms.vertex_ai.common_utilsr   r   Ú@litellm.llms.vertex_ai.gemini.vertex_and_google_ai_studio_geminir   Úlitellm.types.llms.openair   Úlitellm.types.llms.vertex_air   r   r   Úlitellm.types.utilsr   Útransformationr   r§   r   ÚLiteLLMLoggingObjr   r+   r1   r5   r<   r-   r.   r/   r?   rA   r   r%   r"   ú<module>rÞ      s¾   ðÛ Ý %ß 1Ñ 1ã ß 1ã ÷ñ ÷
÷ SÝ VÝ 8÷ñ õ
 -å 7áÝWô9˜Xô 9ô- ô -ô5˜iô 5ô'˜9ô 'ðÐ$:ð Ð?\ó ðÐ)Cð ÈÈSÐRXÈ[ÑHYó ôI%˜iõ I%r%   