§
    xÅj.  ã                   ó¼   — d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 erd dl mZmZ d dlmZmZmZmZ dgZ G d	„ de¦  «        Zd
ddddefd„Zdd„Zdd„ZdS )é    N)ÚMYPY)ÚOPÚSPANDATA)ÚIntegration)Úhas_span_streaming_enabled)ÚAddressFamilyÚ
SocketKind)ÚListÚOptionalÚTupleÚUnionÚSocketIntegrationc                   ó4   — e Zd ZdZde› �Zedd„¦   «         ZdS )r   Úsocketzauto.socket.ÚreturnNc                  ó>   — 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© ó    úOC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/socket.pyÚ
setup_oncezSocketIntegration.setup_once   s"   € õ
 	!Ñ"Ô"Ð"ÝÑÔÐÐÐr   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚoriginÚstaticmethodr   r   r   r   r   r      sD   € € € € € Ø€JØ(˜JÐ(Ð(€Fàðð ð ñ „\ðð ð r   ÚhostúUnion[bytes, str, None]ÚportúUnion[bytes, str, int, None]r   c                 óÈ   — 	 |                       ¦   «         } n# t          t          f$ r Y nw xY w	 |                      ¦   «         }n# t          t          f$ r Y nw xY w| ›d|›�}|S )Nú:)ÚdecodeÚUnicodeDecodeErrorÚAttributeError)r    r"   Údescriptions      r   Ú_get_span_descriptionr*      sŒ   € ðØ�{Š{‰}Œ}ˆˆøÝ¥Ð/ð ð ð ØˆðøøøðØ�{Š{‰}Œ}ˆˆøÝ¥Ð/ð ð ð Øˆðøøøð "˜T˜T 4 4Ð(€KØÐs   ‚ —+ª+¯A ÁAÁAc                  ól   ‡— t           j        Št           j        d f	 	 	 	 	 	 	 d
ˆfd	„} | t           _        d S )NÚaddressúTuple[Optional[str], int]ÚtimeoutúOptional[float]Úsource_addressú2Optional[Tuple[Union[bytearray, bytes, str], int]]r   úsocket.socketc                 óô  •— t          j        ¦   «         }|                     t          ¦  «        }|€ ‰| ||¦  «        S t	          |j        ¦  «        rùt           j                             ¦   «         € ‰| ||¦  «        S t           j                             t          | d         | d         ¦  «        t          j        t          j        dœ¬¦  «        5 }| d         �&|                     t          j        | d         ¦  «         |                     t          j        | d         ¦  «          ‰| ||¬¦  «        cd d d ¦  «         S # 1 swxY w Y   d S t          j        t          j        t          | d         | d         ¦  «        t          j        ¬¦  «        5 }|                     d| ¦  «         |                     d|¦  «         |                     d	|¦  «          ‰| ||¬¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )
Nr   é   ©z	sentry.opzsentry.origin©ÚnameÚ
attributes)r,   r.   r0   ©Úopr7   r   r,   r.   r0   )Ú
sentry_sdkÚ
get_clientÚget_integrationr   r   ÚoptionsÚtracesÚget_current_spanÚ
start_spanr*   r   ÚSOCKET_CONNECTIONr   Úset_attributer   ÚSERVER_ADDRESSÚSERVER_PORTÚset_data)r,   r.   r0   ÚclientÚintegrationÚspanÚreal_create_connections         €r   Úcreate_connectionz3_patch_create_connection.<locals>.create_connection1   sƒ  ø€ õ
 Ô&Ñ(Ô(ˆØ×,Ò,Õ->Ñ?Ô?ˆØÐØ)Ð)¨'°7¸NÑKÔKÐKå% f¤nÑ5Ô5ð 	ÝÔ ×1Ò1Ñ3Ô3Ð;Ø-Ð-¨g°wÀÑOÔOÐOåÔ"×-Ò-Ý*¨7°1¬:°w¸q´zÑBÔBå!#Ô!5Ý%6Ô%=ðð ð .ñ ô ð ð Ø˜1”:Ð)Ø×&Ò&¥xÔ'>ÀÈÄ
ÑKÔKÐKØ×"Ò"¥8Ô#7¸À¼ÑDÔDÐDà-Ð-Ø#¨WÀ^ðñ ô ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð õ Ô&ÝÔ'Ý*¨7°1¬:°w¸q´zÑBÔBÝ(Ô/ðñ ô ð ð Ø—’˜i¨Ñ1Ô1Ð1Ø—’˜i¨Ñ1Ô1Ð1Ø—’Ð.°Ñ?Ô?Ð?à-Ð-Ø#¨WÀ^ðñ ô ðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s&   ÃA"D>Ä>EÅEÆAG-Ç-G1Ç4G1)r,   r-   r.   r/   r0   r1   r   r2   )r   rK   Ú_GLOBAL_DEFAULT_TIMEOUT)rK   rJ   s    @r   r   r   .   sk   ø€ Ý#Ô5Ðõ &,Ô%CØOSð(Ø,ð(à"ð(ð Mð(ð 
ð	(ð (ð (ð (ð (ð (ðT  1…FÔÐÐr   c                  ó’   ‡— t           j        Š	 	 	 	 ddddddt          dt          dt          d	t          d
dfˆf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           	      ó   •— t          j        ¦   «         }|                     t          ¦  «        }|€ ‰	| |||||¦  «        S t	          |j        ¦  «        �r›t           j                             ¦   «         € ‰	| |||||¦  «        S t           j                             t          | |¦  «        t          j        t          j        dœ¬¦  «        5 }t          | t          ¦  «        r!|                     t           j        | ¦  «         nIt          | t$          ¦  «        r4|                     t           j        |                      d¬¦  «        ¦  «         t          |t(          ¦  «        r!|                     t           j        |¦  «         nH|�F	 |                     t           j        t)          |¦  «        ¦  «         n# t,          t.          f$ r Y nw xY w ‰	| |||||¦  «        cd d d ¦  «         S # 1 swxY w Y   d S t          j        t          j        t          | |¦  «        t          j        ¬¦  «        5 }|                     d| ¦  «         |                     d|¦  «          ‰	| |||||¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr5   r6   Úreplace)Úerrorsr9   r    r"   )r;   r<   r=   r   r   r>   r?   r@   rA   r*   r   Ú
SOCKET_DNSr   Ú
isinstanceÚstrrC   r   rD   Úbytesr&   ÚintrE   Ú
ValueErrorÚ	TypeErrorrF   )
r    r"   rN   rO   rP   rQ   rG   rH   rI   Úreal_getaddrinfos
            €r   Úgetaddrinfoz'_patch_getaddrinfo.<locals>.getaddrinfoa   s5  ø€ õ Ô&Ñ(Ô(ˆØ×,Ò,Õ->Ñ?Ô?ˆØÐØ#Ð# D¨$°¸¸eÀUÑKÔKÐKå% f¤nÑ5Ô5ñ $	PÝÔ ×1Ò1Ñ3Ô3Ð;Ø'Ð'¨¨d°F¸DÀ%ÈÑOÔOÐOåÔ"×-Ò-Ý*¨4°Ñ6Ô6å!#¤Ý%6Ô%=ðð ð .ñ ô ð Pð Ý˜d¥CÑ(Ô(ð Ø×&Ò&¥xÔ'>ÀÑEÔEÐEÐEÝ ¥eÑ,Ô,ð Ø×&Ò&Ý Ô/°·²ÀI°Ñ1NÔ1Nñô ð õ ˜d¥CÑ(Ô(ð Ø×&Ò&¥xÔ';¸TÑBÔBÐBÐBØÐ%ðØ×*Ò*­8Ô+?ÅÀTÁÄÑKÔKÐKÐKøÝ&­	Ð2ð ð ð Ø˜ðøøøð (Ð'¨¨d°F¸DÀ%ÈÑOÔOð-Pð Pð Pð Pñ Pô Pð Pð Pð Pð Pð Pð Pøøøð Pð Pð Pð Pð Pð Põ0 Ô&Ý”=Ý*¨4°Ñ6Ô6Ý(Ô/ðñ ô ð Pð Ø—’˜f dÑ+Ô+Ð+Ø—’˜f dÑ+Ô+Ð+à'Ð'¨¨d°F¸DÀ%ÈÑOÔOðPð Pð Pð Pñ Pô Pð Pð Pð Pð Pð Pð Pøøøð Pð Pð Pð Pð Pð PsI   Ã
B8G$Æ-F1Æ0G$Æ1GÇG$ÇGÇG$Ç$G(Ç+G(È*<I3É3I7É:I7)r   r   r   r   )r   r]   rY   )r]   r\   s    @r   r   r   ^   sŸ   ø€ ÝÔ)Ðð
 ØØØð1Pð 1PØ'ð1Pà,ð1Põ ð1Põ ð	1Põ
 ð1Põ ð1Pð 
Bð1Pð 1Pð 1Pð 1Pð 1Pð 1Pðf %…FÔÐÐr   r   )r   r;   Úsentry_sdk._typesr   Úsentry_sdk.constsr   r   Úsentry_sdk.integrationsr   Úsentry_sdk.tracing_utilsr   r   r	   Útypingr
   r   r   r   Ú__all__r   rW   r*   r   r   r   r   r   ú<module>rd      s=  ðØ €€€à Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø /Ð /Ð /Ð /Ð /Ð /Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?àð 4Ø0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3àÐ
€ð
ð 
ð 
ð 
ð 
˜ñ 
ô 
ð 
ðØ
#ðØ+Iðàðð ð ð ð"-1ð -1ð -1ð -1ð`6%ð 6%ð 6%ð 6%ð 6%ð 6%r   