o
    i>                     @  s  U d dl mZ d dlZd dl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 d dlZd dlmZmZ zd dlmZ W n eyJ   ed	w zd d
lmZ ejZd%ddZee_W n	 eyg   Y nw dZded< d&ddZG dd deZd'ddZG dd  d eZ d(d#d$Z!dS ))    )annotationsN)Any)LoggerLoggerProvider	LogRecord)get_current_span)	TypeAlias)handle_internal_errors	safe_repr)GoogleGenAiSdkInstrumentorzThe `logfire.instrument_google_genai()` method requires the `opentelemetry-instrumentation-google-genai` package.
You can install this with:
    pip install 'logfire[google-genai]')	dict_utilkeystrvaluer   argskwargsc                 O  s:   zt | |g|R i |W S  ty   | t|i Y S w N)original_flatten_compound_value	Exceptionr
   )r   r   r   r    r   q/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/logfire/_internal/integrations/google_genai.pywrapped_flatten_compound_value   s
   r   zdict[str, Any] | strr   Partxreturnc                 C  s   t | trt| dS | S )Nzutf-8)
isinstancebytesbase64	b64encodedecode)r   r   r   r   default_json*   s   r    c                   @  s   e Zd ZedddZdS )	SpanEventLoggerrecordr   r   Nonec                 C  s   t  }t|jtsJ |jsJ i |j}|jdkr;d|v r:t|d tr:|dd }dd |D }d|d|d< nd|v rGt|d |d< |d	|jd
d |d	< |j	|jdt
j|tdid d S )Nzgen_ai.choicecontentpartsc                 S  s   g | ]}t |qS r   )transform_part).0partr   r   r   
<listcomp>8   s    z(SpanEventLogger.emit.<locals>.<listcomp>	assistant)roler$   messager+   .   
event_body)default)
attributes)r   r   bodydict
event_namepopr&   getsplit	add_eventjsondumpsr    )selfr"   spanr2   r%   	new_partsr   r   r   emit/   s   


"zSpanEventLogger.emitN)r"   r   r   r#   )__name__
__module____qualname__r	   r>   r   r   r   r   r!   .   s    r!   r(   c                 C  s>   t | tr| S dd |  D }t| dgkr|d S |S )Nc                 S  s   i | ]\}}|d ur||qS r   r   )r'   kvr   r   r   
<dictcomp>E   s    z"transform_part.<locals>.<dictcomp>text)r   r   itemslistkeys)r(   new_partr   r   r   r&   B   s   
r&   c                   @  s   e Zd Zd	ddZdS )
SpanEventLoggerProviderr   r   r   r   r!   c                 O  s   t |i |S r   )r!   )r;   r   r   r   r   r   
get_loggerL   s   z"SpanEventLoggerProvider.get_loggerN)r   r   r   r   r   r!   )r?   r@   rA   rK   r   r   r   r   rJ   K   s    rJ   logfire_instancelogfire.Logfirec                 K  s0   t  jdi t | j | j d| d S )N)logger_providertracer_providermeter_providerr   )r   
instrumentrJ   configget_tracer_providerget_meter_provider)rL   r   r   r   r   instrument_google_genaiP   s   

rU   )r   r   r   r   r   r   r   r   )r   r   r   r   )r(   r   r   r   )rL   rM   r   r   )"
__future__r   r   r9   typingr   opentelemetry._logsr   r   r   opentelemetry.tracer   typing_extensionsr   logfirelogfire._internal.utilsr	   r
   *opentelemetry.instrumentation.google_genair   ImportErrorRuntimeErrorr   _flatten_compound_valuer   r   r   r   __annotations__r    r!   r&   rJ   rU   r   r   r   r   <module>   s<    



	