o
    i\                     @   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
dddefddZdddZd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dZdS )r   socketzauto.socket.returnNc                   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   [/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/sentry_sdk/integrations/socket.py
setup_once   s   
zSocketIntegration.setup_oncer   N)__name__
__module____qualname__
identifieroriginstaticmethodr   r   r   r   r   r      s
    
hostUnion[bytes, str, None]portUnion[bytes, str, int, None]r   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)r   r   descriptionr   r   r   _get_span_description   s   r"   c                     s4   t j t jd f							d fd	d
} | t _d S )NaddressTuple[Optional[str], int]timeoutOptional[float]source_address2Optional[Tuple[Union[bytearray, bytes, str], int]]r   socket.socketc                    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   r#   r%   r'   )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_connection0   s    $z3_patch_create_connection.<locals>.create_connection)r#   r$   r%   r&   r'   r(   r   r)   )r   r8   _GLOBAL_DEFAULT_TIMEOUT)r8   r   r6   r   r   -   s   
r   c                     sD   t j 				ddddddtdtdtd	td
df fdd} | t _d S )Nr   r   r   r   r   familytypeprotoflagsr   zvList[Tuple[AddressFamily, SocketKind, int, str, Union[Tuple[str, int], Tuple[str, int, int, int], Tuple[int, bytes]]]]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/   r0   r   r1   r   
SOCKET_DNSr"   r   r3   )r   r   r:   r;   r<   r=   r4   r5   real_getaddrinfor   r   getaddrinfoL   s   $z'_patch_getaddrinfo.<locals>.getaddrinfo)r   r   r   r   )r   rA   int)rA   r   r?   r   r   I   s*   
r   r   )r   r.   sentry_sdk._typesr   sentry_sdk.constsr   sentry_sdk.integrationsr   r   r   typingr   r   r	   r
   __all__r   strr"   r   r   r   r   r   r   <module>   s&    

