o
    BDi                     @   sd  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r=d dl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y_   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eeef deeef f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)	ParamSpecCallablec                   @      e Zd Zdd ZdS )r   c                 C   s   d | _ d | _d S N)argskwargsself_ r   b/var/www/Datamplify/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   s   t ttj ttjjjtjj_ttj	j
jtj	j
_ttj	j
jtj	j
_ttj	j
dr5t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clientClient	send_data	_wrap_endreceive_end_of_queryhasattrr"   receive_resultr   r   r   r   
setup_once*   s"   



z&ClickhouseDriverIntegration.setup_once)r!   N)r   r   r   
identifieroriginstaticmethodr0   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namer2   queryzdb.query_id	db.params)lenget
sentry_sdk
start_spanr   DBr   r2   _sentry_span_set_db_dataset_datar   )r   r   r%   r>   r9   r;   spanretr6   r   r   _innerL   s$   

z_wrap_start.<locals>._inner)r
   r   r4   r   r   r5   )r6   rK   r   rJ   r   r$   K   s    r$   c                    "   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   rE   z	db.resultr>   )messagecategorydata)
getattrr%   r   rG   r	   scopeadd_breadcrumb_datapopfinish)r   r   resinstancerH   rJ   r   r   
_inner_endn   s   z_wrap_end.<locals>._inner_endr4   r   r   r5   )r6   rX   r   rJ   r   r,   m   s   r,   c                    rL   )Nr   r   r!   c                     sj   | d }| d }t |jdd }|d ur.t||j t r.|jdg }|| |d|  | i |S )Nr   r8   rE   r?   )rP   r%   rF   r   rS   rA   extendrG   )r   r   rW   rO   rH   	db_paramsrJ   r   r   _inner_send_data   s   
z)_wrap_send_data.<locals>._inner_send_datarY   )r6   r\   r   rJ   r   r(      s   r(   rH   r%   c                 C   sR   |  tjd |  tj|j |  tj|j |  tj|j |  tj	|j
 d S )N
clickhouse)rG   r   	DB_SYSTEMSERVER_ADDRESShostSERVER_PORTportDB_NAMEdatabaseDB_USERuser)rH   r%   r   r   r   rF      s
   rF   ) rB   sentry_sdk.constsr   r   sentry_sdk.integrationsr   r   r   sentry_sdk.tracingr   sentry_sdk.scoper   sentry_sdk.utilsr	   r
   typingr   r   r   r   r   r    ImportErrorr   r4   r5   r$   r,   r(   r%   r&   rF   r   r   r   r   <module>   s<    !""""