
    \jQ                     b   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 d d	lmZmZmZ n G d
 d      Z G d d      Z e       Z	 d dlmZ d dlmZ d dlmZ  G d de      Z ed      Z  ed      Z!ddZ"ddZ#ddZ$ddZ%y# e$ r	  ed      w xY w)    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 Zy)r   c                      d | _         d | _        y N)argskwargsself_s     S/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/clickhouse_driver.py__init__zParamSpec.__init__   s    DIDK    N)__name__
__module____qualname__r    r   r   r   r      s    	r   r   c                       e Zd Zd Zy)	_Callablec                      y r   r    r   s     r   __getitem__z_Callable.__getitem__   s    r   N)r   r   r   r$   r    r   r   r"   r"      s    	r   r"   )VERSION)Client)
Connectionz clickhouse-driver not installed.c                   ,    e Zd ZdZde Zedd       Zy)ClickhouseDriverIntegrationclickhouse_driverzauto.db.Nc                  p   t        t        t               t        t        j
                        t        _        t                t        t        j                        t        _	        t        t        d      r"t        t        j                        t        _        t        t        j                        t        _        y )Nreceive_end_of_insert_query)r   r)   r%   _wrap_startr'   
send_query_wrap_send_data	_wrap_endr&   receive_end_of_queryhasattrr,   receive_resultr    r   r   
setup_oncez&ClickhouseDriverIntegration.setup_once-   su    :GD !,J,A,A B
 	 '00K0K&L#6891:222F. !*&*?*? @r   returnN)r   r   r   
identifieroriginstaticmethodr4   r    r   r   r)   r)   )   s'    $J
|$FA Ar   r)   PTc                 :     t        t               d fd       }|S )Nc                     | d   }| d   }t        |       dkD  r| d   n|j                  d      }t        |       dkD  r| d   n|j                  d      }t        j                  t        j
                  |t        j                        }||_        t        ||       |j                  d|       |r|j                  d	|       |rt               r|j                  d
|        | i |}|S )Nr         query_id   params)opnamer8   queryzdb.query_id	db.params)lenget
sentry_sdk
start_spanr   DBr)   r8   _sentry_span_set_db_dataset_datar	   )	r   r   
connectionrE   r@   rB   spanretfs	           r   _innerz_wrap_start.<locals>._innerG   s    !W
Q!$i!m47J1GIMavzz(/C$$uu.55
 #'
T:&gu%MM-2-/MM+v.   
r   r   zP.argsr   zP.kwargsr6   r;   )r   r)   )rR   rS   s   ` r   r-   r-   F   s%     ;Q? @: Mr   c                      d fd}|S )Nc                  p    | i |}| d   }t        |j                  dd       }||t               r|j                  d|       t	               5  |j
                  j                  |j                  j                  d      d|j                         d d d        |j                          |S # 1 sw Y   xY w)Nr   rL   z	db.resultrE   )messagecategorydata)
getattrrO   r	   rN   r
   scopeadd_breadcrumb_datapopfinish)r   r   resinstancerP   rR   s        r   
_inner_endz_wrap_end.<locals>._inner_endi   s      7x**NDA#:#<k3/,. 

)) JJNN73gDJJ * 
 KKM
 s   AB,,B5rT   r    )rR   rb   s   ` r   r0   r0   h   s    $ r   c                  J    t         j                  	 dfd	} | t         _        y )Nc                 f  	
 t        | j                  dd       }|t        || j                         t               rf|j                  j                  dg       	t        |t        t        f      r	j                  |       n|
d	
fd} |       }|j                  d	        | ||||g|i |S )NrL   rF   c               3   F   K   D ]  } j                  |        |   y wr   )append)item	db_params	orig_datas    r   wrapped_generatorzD_wrap_send_data.<locals>._inner_send_data.<locals>.wrapped_generator   s)     $- 'D%,,T2"&J's   !)r6   zIterator[Any])rZ   rO   rM   r	   r]   rH   
isinstancelisttupleextendrN   )r   sample_blockrY   types_checkcolumnarr   r   rP   rj   rh   ri   original_send_datas            @@r   _inner_send_dataz)_wrap_send_data.<locals>._inner_send_data   s     t=t/&( JJNN;;	dT5M2$$T* !%I
' -.Dk95!,k8
>B
FL
 	
r   )FF)r&   	send_data)rs   rr   s    @r   r/   r/   ~   s%    )) ?D 
D (Fr   c                    | j                  t        j                  d       | j                  t        j                  d       | j                  t        j                  |j
                         | j                  t        j                  |j                         | j                  t        j                  |j                         | j                  t        j                  |j                         y )N
clickhousezclickhouse-driver)rN   r   	DB_SYSTEMDB_DRIVER_NAMESERVER_ADDRESShostSERVER_PORTportDB_NAMEdatabaseDB_USERuser)rP   rO   s     r   rM   rM      s    MM($$l3MM())+>?MM()):??;MM(&&
8MM(""J$7$78MM(""JOO4r   )rR   Callable[P, T]r6   r   r5   )rP   r   rO   r'   r6   N)&rI   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*   r%   clickhouse_driver.clientr&   clickhouse_driver.connectionr'   ImportErrorr)   r:   r;   r-   r0   r/   rM   r    r   r   <module>r      s     * U U # 4 T )
 (//  
 {H;)/7A+ A2 cNCLD,%(P5C  ;
9
::;s   "B   B.