o
    0 ia                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ er0d dl mZm	Z	 d dl
mZmZmZmZ dgZG dd deZd	d
 Zdd Zdd ZdS )    N)MYPY)OP)Integration)AddressFamily
SocketKind)TupleOptionalUnionListSocketIntegrationc                   @   s&   e Zd ZdZde Zedd ZdS )r   socketzauto.socket.c                   C   s   t   t  dS )zs
        patches two of the most used functions of socket: create_connection and getaddrinfo(dns resolver)
        N)_patch_create_connection_patch_getaddrinfo r   r   j/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/sentry_sdk/integrations/socket.py
setup_once   s   
zSocketIntegration.setup_onceN)__name__
__module____qualname__
identifieroriginstaticmethodr   r   r   r   r   r      s
    
c              	   C   sX   z|   } W n ttfy   Y nw z|  }W n ttfy#   Y nw d| |f }|S )Nz%s:%s)decodeUnicodeDecodeErrorAttributeError)hostportdescriptionr   r   r   _get_span_description   s   r   c                     s$   t j t jd f fdd	} | t _d S )Nc                    s   t  t}|d u r | ||S t jtjt| d | d tjd!}|	d|  |	d| |	d|  | ||dW  d    S 1 sFw   Y  d S )Nr      opnamer   addresstimeoutsource_address)r#   r$   r%   )

sentry_sdk
get_clientget_integrationr   
start_spanr   ZSOCKET_CONNECTIONr   r   set_data)r#   r$   r%   integrationspanZreal_create_connectionr   r   create_connection2   s    $z3_patch_create_connection.<locals>.create_connection)r   r.   _GLOBAL_DEFAULT_TIMEOUT)r.   r   r-   r   r   .   s
   
r   c                     s   t j d fdd	} | t _d S )Nr   c                    s   t  t}|d u r | |||||S t jtjt| |tjd}|	d|  |	d|  | |||||W  d    S 1 sAw   Y  d S )Nr    r   r   )
r&   r'   r(   r   r)   r   Z
SOCKET_DNSr   r   r*   )r   r   familytypeprotoflagsr+   r,   Zreal_getaddrinfor   r   getaddrinfoP   s   $z'_patch_getaddrinfo.<locals>.getaddrinfo)r   r   r   r   )r   r5   )r5   r   r4   r   r   L   s   
r   )r   r&   Zsentry_sdk._typesr   Zsentry_sdk.constsr   Zsentry_sdk.integrationsr   r   r   typingr   r   r	   r
   __all__r   r   r   r   r   r   r   r   <module>   s    