o
    0 i                     @   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   u/home/app/PaddleOCR-VL-test/.venv_paddleocr/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
ConnectionZ
send_query_wrap_send_data	_wrap_endclientClientZreceive_end_of_queryhasattrr$   Zreceive_resultr   r   r   r   
setup_once+   s   


z&ClickhouseDriverIntegration.setup_oncer#   N)r   r   r   
identifieroriginstaticmethodr.   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namer1   queryzdb.query_id	db.params)lenget
sentry_sdkZ
start_spanr   ZDBr!   r1   _sentry_span_set_db_dataset_datar   )r   r   r'   r=   r8   r:   spanretr5   r   r   _innerK   s$   

z_wrap_start.<locals>._inner)r
   r!   r3   r   r   r4   )r5   rH   r   rG   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   rB   z	db.resultr=   )messagecategorydata)
getattrr'   r   rD   r	   scopeZadd_breadcrumb_datapopfinish)r   r   resinstancerE   rG   r   r   
_inner_endm   s   z_wrap_end.<locals>._inner_end)r3   r   r   r4   )r5   rS   r   rG   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 )NrB   r>   r#   Iterator[Any]c                  3   s     D ]
}   |  | V  qd S r   )append)itemZ	db_paramsZ	orig_datar   r   wrapped_generator   s
   
zD_wrap_send_data.<locals>._inner_send_data.<locals>.wrapped_generator)r#   rT   )rL   r'   rC   r   rN   r@   
isinstancelisttupleextendrD   )	r   Zsample_blockrK   Ztypes_checkZcolumnarr   r   rE   rX   Zoriginal_send_datarW   r   _inner_send_data   s$   
z)_wrap_send_data.<locals>._inner_send_data)FF)r"   r+   r,   Z	send_data)r^   r   r]   r   r)      s   
"r)   rE   r'   c                 C   sR   |  tjd |  tj|j |  tj|j |  tj|j |  tj	|j
 d S )NZ
clickhouse)rD   r   Z	DB_SYSTEMZSERVER_ADDRESShostZSERVER_PORTportZDB_NAMEZdatabaseZDB_USERuser)rE   r'   r   r   r   rC      s
   rC   r/   )#rA   Zsentry_sdk.constsr   r   Zsentry_sdk.integrationsr   r   r   Zsentry_sdk.tracingr   Zsentry_sdk.scoper   Zsentry_sdk.utilsr	   r
   typingr   r   collections.abcr   r   r   r   r   r"   ImportErrorr!   r3   r4   r&   r*   r)   r'   r(   rC   r   r   r   r   <module>   s>    """
(