o
    h                     @   s\  d dl Z d dlmZmZ d dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZmZ erEd dlmZ d d	lmZmZmZ nG d
d dZG dd dZe Zzd dlZW n eyg   edw G dd deZedZedZdeeef deeef fddZdeeef deeef fddZdddZde	dej j!ddfddZ"dS )     N)OPSPANDATA)_check_minimum_versionIntegrationDidNotEnable)Span)should_send_default_pii)capture_internal_exceptionsensure_integration_enabled)TYPE_CHECKINGTypeVar)Iterator)Any	ParamSpecCallablec                   @      e Zd Zdd ZdS )r   c                 C   s   d | _ d | _d S N)argskwargsself_ r   k/var/www/html/pro-man-master/venv/lib/python3.10/site-packages/sentry_sdk/integrations/clickhouse_driver.py__init__   s   
zParamSpec.__init__N)__name__
__module____qualname__r   r   r   r   r   r          r   c                   @   r   )	_Callablec                 C   s   d S r   r   r   r   r   r   __getitem__   s   z_Callable.__getitem__N)r   r   r   r    r   r   r   r   r      r   r   z clickhouse-driver not installed.c                   @   s(   e Zd ZdZde ZedddZdS )ClickhouseDriverIntegrationclickhouse_driverzauto.db.returnNc                   C   st   t ttj ttjjjtjj_t  t	tj
jjtj
j_ttj
jdr.t	tj
jjtj
j_t	tj
jjtj
j_d S )Nreceive_end_of_insert_query)r   r!   r"   VERSION_wrap_start
connection
Connection
send_query_wrap_send_data	_wrap_endclientClientreceive_end_of_queryhasattrr$   receive_resultr   r   r   r   
setup_once+   s   


z&ClickhouseDriverIntegration.setup_oncer#   N)r   r   r   
identifieroriginstaticmethodr1   r   r   r   r   r!   '   s
    
r!   PTfr#   c                    s,   t t dtjdtjdtf fdd}|S )Nr   r   r#   c                     s   | d }| d }t | dkr| d n|d}t | dkr!| d n|d}tjtj|tjd}||_t	|| |
d| |rF|
d	| |rQt rQ|
d
|  | i |}|S )Nr         query_id   params)opnamer4   queryzdb.query_id	db.params)lenget
sentry_sdk
start_spanr   DBr!   r4   _sentry_span_set_db_dataset_datar   )r   r   r'   r@   r;   r=   spanretr8   r   r   _innerK   s$   

z_wrap_start.<locals>._inner)r
   r!   r6   r   r   r7   )r8   rM   r   rL   r   r&   J   s    r&   c                    s"   dt jdt jdtf fdd}|S )Nr   r   r#   c                     s    | i |}| d }t |jdd }|d urH|d ur#t r#|d| t  |jj|jdd|jd W d    n1 s?w   Y  |	  |S )Nr   rG   z	db.resultr@   )messagecategorydata)
getattrr'   r   rI   r	   scopeadd_breadcrumb_datapopfinish)r   r   resinstancerJ   rL   r   r   
_inner_endm   s   z_wrap_end.<locals>._inner_end)r6   r   r   r7   )r8   rY   r   rL   r   r+   l   s   r+   c                     s(   t jjj 	d fdd	} | t jj_d S )NFc           	         s   t | jdd }|d ur;t|| j t r;|jdg  t|ttfr( 	| n|d fdd}| }|
d  | ||||g|R i |S )NrG   rA   r#   Iterator[Any]c                  3   s     D ]
}   |  | V  qd S r   )append)item	db_params	orig_datar   r   wrapped_generator   s
   
zD_wrap_send_data.<locals>._inner_send_data.<locals>.wrapped_generator)r#   rZ   )rQ   r'   rH   r   rT   rC   
isinstancelisttupleextendrI   )	r   sample_blockrP   types_checkcolumnarr   r   rJ   r`   original_send_datar]   r   _inner_send_data   s$   
z)_wrap_send_data.<locals>._inner_send_data)FF)r"   r,   r-   	send_data)rj   r   rh   r   r*      s   
"r*   rJ   r'   c                 C   sR   |  tjd |  tj|j |  tj|j |  tj|j |  tj	|j
 d S )N
clickhouse)rI   r   	DB_SYSTEMSERVER_ADDRESShostSERVER_PORTportDB_NAMEdatabaseDB_USERuser)rJ   r'   r   r   r   rH      s
   rH   r2   )#rD   sentry_sdk.constsr   r   sentry_sdk.integrationsr   r   r   sentry_sdk.tracingr   sentry_sdk.scoper   sentry_sdk.utilsr	   r
   typingr   r   collections.abcr   r   r   r   r   r"   ImportErrorr!   r6   r7   r&   r+   r*   r'   r(   rH   r   r   r   r   <module>   s>    """
(