o
    ha                     @   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   `/var/www/html/pro-man-master/venv/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   SOCKET_CONNECTIONr   r   set_data)r#   r$   r%   integrationspanreal_create_connectionr   r   create_connection2   s    $z3_patch_create_connection.<locals>.create_connection)r   r0   _GLOBAL_DEFAULT_TIMEOUT)r0   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   
SOCKET_DNSr   r   r+   )r   r   familytypeprotoflagsr,   r-   real_getaddrinfor   r   getaddrinfoP   s   $z'_patch_getaddrinfo.<locals>.getaddrinfo)r   r   r   r   )r   r9   )r9   r   r7   r   r   L   s   
r   )r   r&   sentry_sdk._typesr   sentry_sdk.constsr   sentry_sdk.integrationsr   r   r   typingr   r   r	   r
   __all__r   r   r   r   r   r   r   r   <module>   s    