o
    0 iy                     @  s2  d dl mZ d dlZd dlmZmZmZmZmZ 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mZ d dlmZmZmZ zd dlZd d	lmZ W n ey]   ed
w G dd deZedZd0ddZ ededZ!ej"ddd1d d!Z#ddd2d"d#Z$d3d%d&Z%d0d'd(Z&d4d.d/Z'dS )5    )annotationsN)AnyTypeVarCallable	AwaitableIterator)OPSPANDATA)_check_minimum_versionIntegrationDidNotEnable)Span)add_query_sourcerecord_sql_queries)ensure_integration_enabledparse_versioncapture_internal_exceptions)
BaseCursorzasyncpg not installed.c                   @  s<   e Zd ZdZde ZdZdddddZedddZdS )AsyncPGIntegrationasyncpgzauto.db.F)record_paramsr   boolc                C  s
   |t _d S )N)r   _record_params)selfr    r   k/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/sentry_sdk/integrations/asyncpg.py__init__   s   
zAsyncPGIntegration.__init__returnNonec                  C  s|   t tj} tt|  ttjjtj_ttjj	tj_	ttjj
ddtj_
ttjjtj_ttjjtj_ttjjtj_d S )NTexecutemany)r   r   __version__r
   r   _wrap_execute
Connectionexecute_wrap_connection_methodZ_executeZ_executemany_wrap_cursor_creationcursorprepare_wrap_connect_addrZconnect_utilsZ_connect_addr)Zasyncpg_versionr   r   r   
setup_once    s    


zAsyncPGIntegration.setup_onceN)r   r   )r   r   )	__name__
__module____qualname__
identifieroriginr   r   staticmethodr*   r   r   r   r   r      s    
r   TfCallable[..., Awaitable[T]]r   c                      d fdd}|S )	Nargsr   kwargsr   r1   c                    s   t  td u r | i |I d H S t| dkr$ | i |I d H S | d }td |d d dtjd} | i |I d H }W d    n1 sHw   Y  t  t| W d    |S 1 s`w   Y  |S )N      F)r'   queryparams_list
paramstyler    span_origin)	
sentry_sdk
get_clientget_integrationr   lenr   r/   r   r   )r5   r6   r9   spanresr2   r   r   _inner;   s.   


z_wrap_execute.<locals>._innerr5   r   r6   r   r   r1   r   r2   rD   r   rC   r   r"   :   s   r"   	SubCursor)boundFr   r'   SubCursor | Noner9   strr:   tuple[Any, ...] | Noner    r   Iterator[Span]c             	   c  sv    t  t}|d ur|jsd }|rdnd }t| ||||| d utjd}|V  W d    d S 1 s4w   Y  d S )NZpyformat)r'   r9   r:   r;   r    Zrecord_cursor_reprr<   )r=   r>   r?   r   r   r   r/   )r'   r9   r:   r    ZintegrationZparam_stylerA   r   r   r   _record\   s"   "rM   c                  s   d fdd}|S )	Nr5   r   r6   r   r1   c                    s   t  td u r| i |I d H S | d }t| dkr"| d nd }td || d}t|| d  | i |I d H }W d    |S 1 sIw   Y  |S )Nr8   r7   r   r   )r=   r>   r?   r   r@   rM   _set_db_datar5   r6   r9   r:   rA   rB   r    r2   r   r   rD   y   s   
z'_wrap_connection_method.<locals>._innerrE   r   )r2   r    rD   r   rP   r   r%   v   s   r%   Callable[..., T]c                   s   t t d fdd}|S )	Nr5   r   r6   r   r1   c                    s~   | d }t | dkr| d nd }td ||dd}t|| d   | i |}|d| W d    |S 1 s8w   Y  |S )Nr8   r7   Fr   r   z	db.cursor)r@   rM   rN   set_datarO   rC   r   r   rD      s    


z%_wrap_cursor_creation.<locals>._innerrE   )r   r   rF   r   rC   r   r&      s   r&   c                   r4   )	Nr5   r   r6   r   r1   c               	     s6  t  td u r | i |I d H S |d j}|d j}t jtjdtj	di}|
tjd |d}|rUz|
tj|d  |
tj|d  W n	 tyT   Y nw |
tj| |
tj| t  t jdd|jd	 W d    n1 szw   Y   | i |I d H }W d    |S 1 sw   Y  |S )
Nparamsconnect)opnamer/   
postgresqladdrr   r8   r9   )messagecategorydata)r=   r>   r?   r   userdatabaseZ
start_spanr   ZDBr/   rR   r	   	DB_SYSTEMgetSERVER_ADDRESSSERVER_PORT
IndexErrorDB_NAMEDB_USERr   Zadd_breadcrumb_data)r5   r6   r\   r]   rA   rX   rB   rC   r   r   rD      s@   



z"_wrap_connect_addr.<locals>._innerrE   r   rF   r   rC   r   r)      s   r)   rA   r   connr   r   c                 C  s   |  tjd |j}|r*z|  tj|d  |  tj|d  W n	 ty)   Y nw |jj}|r7|  tj	| |jj
}|rF|  tj| d S d S )NrW   r   r8   )rR   r	   r^   Z_addrr`   ra   rb   _paramsr]   rc   r\   rd   )rA   rf   rX   r]   r\   r   r   r   rN      s    rN   )r2   r3   r   r3   )
r'   rI   r9   rJ   r:   rK   r    r   r   rL   )r2   r3   r    r   r   r3   )r2   rQ   r   rQ   )rA   r   rf   r   r   r   )(
__future__r   
contextlibtypingr   r   r   r   r   r=   Zsentry_sdk.constsr   r	   Zsentry_sdk.integrationsr
   r   r   Zsentry_sdk.tracingr   Zsentry_sdk.tracing_utilsr   r   Zsentry_sdk.utilsr   r   r   r   Zasyncpg.cursorr   ImportErrorr   r1   r"   rG   contextmanagerrM   r%   r&   r)   rN   r   r   r   r   <module>   s6    


#