o
    h                     @   sh   d dl Z d dlmZ erd dlmZmZ d dlmZ d dlZd dlm	Z	 dddZ
dd	d
Zdd ZdS )    N)TYPE_CHECKING)AnyCallable)Span)loggerTc              
      s   t | dr6z	t|   dW S  ty5 } ztd| t| ttt	t
fr'| nt
| W  Y d }~S d }~ww t| trV rKt| dkrKt| d  dS t fdd| D S t| trf fdd	|  D S t| ttt	t
frq| S t
| S )
N
model_dumpunpackz+Could not convert pydantic data to JSON: %s   r   c                 3   s    | ]	}t | d V  qdS )r   N_normalize_data).0xr    U/var/www/html/pro-man-master/venv/lib/python3.10/site-packages/sentry_sdk/ai/utils.py	<genexpr>   s    z"_normalize_data.<locals>.<genexpr>c                    s   i | ]\}}|t | d qS )r   r   )r   kvr   r   r   
<dictcomp>   s    z#_normalize_data.<locals>.<dictcomp>)hasattrr   r   	Exceptionr   warning
isinstanceintfloatboolstrlistlendictitems)datar	   er   r   r   r      s   
*

r   c                 C   sD   t ||d}t|ttttfr| || d S | |t| d S )Nr   )	r   r   r   r   r   r   set_datajsondumps)spankeyvaluer	   
normalizedr   r   r   set_data_normalized"   s   r*   c                  C   s*   t  } | d uo| jd u}|rt jS t jS )N)
sentry_sdkget_current_spancontaining_transaction
start_spanstart_transaction)current_spantransaction_existsr   r   r   get_start_span_function+   s   r2   )T)r$   typingr   r   r   sentry_sdk.tracingr   r+   sentry_sdk.utilsr   r   r*   r2   r   r   r   r   <module>   s    

	