o
    0 i                     @   s  d dl mZmZ d dlmZmZmZ d dlmZm	Z	 d dl
mZmZmZ zd dlmZ d dlmZ d dlmZ W n eyC   edw d d	lmZ erdd d
lmZ d dlmZ d dlmZ d dlmZ G dd deZeedd Zeedd Zdd Z dd Z!dd Z"dS )    )
SPANSTATUSSPANDATA)_check_minimum_versionIntegrationDidNotEnable)add_query_sourcerecord_sql_queries)capture_internal_exceptionsensure_integration_enabledparse_version)Engine)listen)__version__zSQLAlchemy not installed.)TYPE_CHECKING)Any)ContextManager)Optional)Spanc                   @   s&   e Zd ZdZde Zedd ZdS )SqlalchemyIntegration
sqlalchemyzauto.db.c                  C   s:   t t} tt|  ttdt ttdt ttdt d S )NZbefore_cursor_executeZafter_cursor_executehandle_error)	r   SQLALCHEMY_VERSIONr   r   r   r   _before_cursor_execute_after_cursor_execute_handle_error)version r   n/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/sentry_sdk/integrations/sqlalchemy.py
setup_once   s
   
z SqlalchemyIntegration.setup_onceN)__name__
__module____qualname__
identifieroriginstaticmethodr   r   r   r   r   r      s
    
r   c           	      G   sV   t ||||r|jr|jjpd |tjd}||_| }|d ur)t||  ||_d S d S )N)
paramstyleexecutemanyZspan_origin)	r   dialectr%   r   r#   _sentry_sql_span_manager	__enter___set_db_data_sentry_sql_span)	conncursor	statement
parameterscontextr&   argsctx_mgrspanr   r   r   r   *   s   

r   c                 G   st   t |dd }|d urd |_|d d d  t |dd }|d ur8t  t| W d    d S 1 s1w   Y  d S d S )Nr(   r+   )getattrr(   __exit__r	   r   )r,   r-   r.   r/   r0   r1   r2   r3   r   r   r   r   @   s   
"r   c                 G   sb   | j }|d u r	d S t|dd }|d ur|tj t|dd }|d ur/d |_|d d d  d S d S )Nr+   r(   )execution_contextr4   Z
set_statusr   INTERNAL_ERRORr(   r5   )r0   r1   r6   r3   r2   r   r   r   r   O   s   r   c                 C   sH   t | } d| v r
dS d| v rdS d| v rdS d| v rdS d| v r"dS d S )NZsqlitepostgres
postgresqlZmariadbmysqloracle)str)namer   r   r   _get_db_systeme   s   r>   c                 C   s   t |jj}|d ur| tj| |jjd u rd S |jjj}|d ur)| tj| |jjj	}|d ur9| tj
| |jjj}|d urK| tj| d S d S )N)r>   Zenginer=   set_datar   Z	DB_SYSTEMurlZdatabaseZDB_NAMEhostZSERVER_ADDRESSportZSERVER_PORT)r3   r,   Z	db_systemZdb_nameserver_addressZserver_portr   r   r   r*   {   s   


r*   N)#Zsentry_sdk.constsr   r   Zsentry_sdk.integrationsr   r   r   Zsentry_sdk.tracing_utilsr   r   Zsentry_sdk.utilsr	   r
   r   Zsqlalchemy.enginer   Zsqlalchemy.eventr   r   r   r   ImportErrortypingr   r   r   r   Zsentry_sdk.tracingr   r   r   r   r   r>   r*   r   r   r   r   <module>   s2    

