o
    i                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d d	lmZ d d
lmZ edi  dd ZdefddZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  ZdS )!    N)genai)config)GoogleGenAIAsyncStreamHandler)GoogleGenAIStreamHandler)unwrap)wrap)GoogleGenAIIntegration)make_traced_stream)extract_provider_and_model_namegoogle_genaic                   C   s   ddiS )Ngoogle.genaiz>=1.21.1 r   r   r   _/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/google_genai/patch.py_supported_versions   s   r   returnc                   C   s   t tddS )N__version__ )getattrr   r   r   r   r   get_version   s   r   c           	      C      t j}t|d\}}|jd|jj| jf ||dd*}d }z| |i |}|W |j||||dd W  d    S |j||||dd w 1 sGw   Y  d S Nkwargs%s.%sTprovidermodelsubmit_to_llmobsllmargsr   response	operationr   _datadog_integrationr
   trace	__class____name__llmobs_set_tags	funcinstancer    r   integrationprovider_name
model_namespanrespr   r   r   traced_generate   "   r1   c           	            t j}t|d\}}|jd|jj| jf ||dd-}d }z| |i |I d H }|W |j||||dd W  d    S |j||||dd w 1 sKw   Y  d S r   r#   r)   r   r   r   traced_async_generate+   $   r4   c           	   
   C   s   t j}t|d\}}|jd|jj| jf ||dd}z| |i |}t|t||||W S  tyI   |j	t
   |j|||d dd |   w r   )r   r$   r
   r%   r&   r'   r	   r   	Exceptionset_exc_infosysexc_infor(   finishr)   r   r   r   traced_generate_stream<   s"   r;   c           	   
      s   t j}t|d\}}|jd|jj| jf ||dd}z| |i |I d H }t|t||||W S  tyM   |j	t
   |j|||d dd |   w r   )r   r$   r
   r%   r&   r'   r	   r   r6   r7   r8   r9   r(   r:   r)   r   r   r   traced_async_generate_streamO   s$   r<   c           	      C   r   Nr   r   Tr   	embeddingr   r#   r)   r   r   r   traced_embed_contentb   r2   r?   c           	         r3   r=   r#   r)   r   r   r   traced_async_embed_contents   r5   r@   c                  C   st   t tddrd S dt_ttjd} | t_tddt tddt	 tddt
 tdd	t tdd
t tddt d S )N_datadog_patchFT)integration_configr   zmodels.Models.generate_contentz%models.Models.generate_content_streamz#models.AsyncModels.generate_contentz*models.AsyncModels.generate_content_streamzmodels.Models.embed_contentz models.AsyncModels.embed_content)r   r   rA   r   r   r   r$   r   r1   r;   r4   r<   r?   r@   )r,   r   r   r   patch   s   rC   c                   C   sx   t tddsd S dt_ttjjd ttjjd ttjjd ttjjd ttjjd ttjjd ttd d S )NrA   Fgenerate_contentgenerate_content_streamembed_contentr$   )r   r   rA   r   modelsModelsAsyncModelsdelattrr   r   r   r   unpatch   s   rK   )r8   googler   ddtracer   ,ddtrace.contrib.internal.google_genai._utilsr   r   $ddtrace.contrib.internal.trace_utilsr   r   ddtrace.llmobs._integrationsr   0ddtrace.llmobs._integrations.base_stream_handlerr	   )ddtrace.llmobs._integrations.google_utilsr
   _addr   strr   r1   r4   r;   r<   r?   r@   rC   rK   r   r   r   r   <module>   s*    