o
    Zh                     @   sz  d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dl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ya   e	dw ejdk rke	d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 )"    )Hub)OPSPANDATA)_should_send_default_pii)IntegrationDidNotEnable)Span)TYPE_CHECKING)capture_internal_exceptions)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   `/var/www/html/lang_env/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   Nz clickhouse-driver not installed.)r      r   z#clickhouse-driver >= 0.2.0 requiredc                   @   s   e Zd ZdZedddZdS )ClickhouseDriverIntegrationclickhouse_driverreturnNc                   C   sv   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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)_wrap_startr    
connection
ConnectionZ
send_query_wrap_send_dataclientZClientZ	send_data	_wrap_endZreceive_end_of_queryhasattrr"   Zreceive_resultr   r   r   r   
setup_once-   s    



z&ClickhouseDriverIntegration.setup_once)r!   N)r   r   r   
identifierstaticmethodr*   r   r   r   r   r   *   s    r   PTfr!   c                    "   dt jdt jdtf fdd}|S )Nr   r   r!   c            	         s   t j}|td u r | i |S | d }| d }t| dkr#| d n|d}t| dkr2| d n|d}|jtj|d}||_	t
|| |d| |rU|d	| |r`t r`|d
|  | i |}|S )Nr      r   query_id   params)opdescriptionqueryzdb.query_id	db.params)r   currentZget_integrationr   lengetZ
start_spanr   ZDB_sentry_span_set_db_dataset_datar   )	r   r   hubr$   r7   r2   r4   spanretr/   r   r   _innerM   s"   

z_wrap_start.<locals>._innerr-   r   r   r.   )r/   rC   r   rB   r   r#   L   s   r#   c                    r0   )Nr   r   r!   c                     s    | i |}| d }|j j}|d urE|d ur t r |d| t  |jj|jdd|jd W d    n1 s<w   Y  |	  |S )Nr   z	db.resultr7   )messagecategorydata)
r$   r<   r   r>   r
   r?   Zadd_breadcrumb_datapopfinish)r   r   resinstancer@   rB   r   r   
_inner_endm   s   z_wrap_end.<locals>._inner_endrD   )r/   rM   r   rB   r   r(   l   s   r(   c                    r0   )Nr   r   r!   c                     s\   | d }| d }|j j}t||j  t r'|jdg }|| |d|  | i |S )Nr   r   r8   )r$   r<   r=   r   rH   r;   extendr>   )r   r   rL   rG   r@   Z	db_paramsrB   r   r   _inner_send_data   s   
z)_wrap_send_data.<locals>._inner_send_datarD   )r/   rO   r   rB   r   r&      s   r&   r@   r$   c                 C   sR   |  tjd |  tj|j |  tj|j |  tj|j |  tj	|j
 d S )NZ
clickhouse)r>   r   Z	DB_SYSTEMZSERVER_ADDRESShostZSERVER_PORTportZDB_NAMEZdatabaseZDB_USERuser)r@   r$   r   r   r   r=      s
   r=   )!Z
sentry_sdkr   Zsentry_sdk.constsr   r   Zsentry_sdk.hubr   Zsentry_sdk.integrationsr   r   Zsentry_sdk.tracingr   Zsentry_sdk._typesr	   Zsentry_sdk.utilsr
   typingr   r   r   r   r    ImportErrorVERSIONr   r-   r.   r#   r(   r&   r$   r%   r=   r   r   r   r   <module>   sB    
"" "