
    i                    P   U d dl mZ d dlZd dlZ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mZmZmZmZmZmZ d dlZd dlZd dlmZ ddlmZ er-d d	lmZmZmZ d d
lm Z  d dl!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'  e#d          Z( ed          Z)eZ*de+d<    G d d          Z, ej-        d          Z.de+d<    ej-        d          Z/de+d<   dbdZ0dcdZ1ej2        Z3e3 e4edd           z  Z3	 	 	 	 ddded)Z5dfd-Z6dgd0Z7dhd4Z8 eej9        d5d56          ej:        ej;        d fdid;            Z9ej<        d<k    ses) e=ed=          r eej>        d5d56          djd@            Z>ej<        d<k    re?Z@de+dA<   e?ZAde+dB<   ej:        ZBn#dZBdCe+dD<   e?e	z  dz  Z@de+dA<   ej        e?z  ZAde+dB<    eejC        d5d56          eBe
j;        d fdkdF            ZC eej        d5d56          ej:        ej;        d dfdldI            ZdmdLZD e4edMd            e4edNd           z   ZE	 dndodWZFdpd]ZG G d^ d3          ZHeHjI        J                                D ]X\  ZKZLeKM                    d_          seLjN        r"ej        ejH        fD ]ZO e4eOeKd          ZPePr	ePjN        r nLePjN        eL_N        Y G d` daeH          ZQdS )q    )annotationsN)index)AddressFamily
SocketKind)TYPE_CHECKINGAnyConcatenateSupportsIndex	TypeAliasTypeVaroverload)wraps   )_core)	AwaitableCallableIterable)TracebackType)Buffer	ParamSpecSelf)HostnameResolverSocketFactoryPTr   AddressFormatc                  2    e Zd Z	 dddZdd
ZddZddZdS )	_try_syncNblocking_exc_override&Callable[[BaseException], bool] | NonereturnNonec                    || _         d S N)_blocking_exc_override)selfr   s     S/home/piyush/.hermes/hermes-agent/venv/lib/python3.11/site-packages/trio/_socket.py__init__z_try_sync.__init__>   s     '<###    excBaseExceptionboolc                d    | j         t          |t                    S |                      |          S r$   )r%   
isinstanceBlockingIOError)r&   r*   s     r'   _is_blocking_io_errorz_try_sync._is_blocking_io_errorD   s/    &.c?333..s333r)   c                R   K   t           j                                         d {V  d S r$   )triolowlevelcheckpoint_if_cancelledr&   s    r'   
__aenter__z_try_sync.__aenter__J   s2      m3355555555555r)   exc_typetype[BaseException] | None	exc_valueBaseException | None	tracebackTracebackType | Nonec                   K   ||                      |          rdS t          j                                         d {V  dS )NTF)r0   r2   r3   cancel_shielded_checkpointr&   r7   r9   r;   s       r'   	__aexit__z_try_sync.__aexit__M   sS        T%?%?	%J%J  4-::<<<<<<<<<5r)   r$   )r   r    r!   r"   r*   r+   r!   r,   r!   r"   )r7   r8   r9   r:   r;   r<   r!   r,   )__name__
__module____qualname__r(   r0   r6   r@    r)   r'   r   r   =   sp         IM< < < < <4 4 4 46 6 6 6     r)   r   hostname_resolverz%_core.RunVar[HostnameResolver | None]	_resolversocket_factoryz"_core.RunVar[SocketFactory | None]_socket_factoryHostnameResolver | Noner!   c                n    t                               d          }t                               |            |S )a\  Set a custom hostname resolver.

    By default, Trio's :func:`getaddrinfo` and :func:`getnameinfo` functions
    use the standard system resolver functions. This function allows you to
    customize that behavior. The main intended use case is for testing, but it
    might also be useful for using third-party resolvers like `c-ares
    <https://c-ares.haxx.se/>`__ (though be warned that these rarely make
    perfect drop-in replacements for the system resolver). See
    :class:`trio.abc.HostnameResolver` for more details.

    Setting a custom hostname resolver affects all future calls to
    :func:`getaddrinfo` and :func:`getnameinfo` within the enclosing call to
    :func:`trio.run`. All other hostname resolution in Trio is implemented in
    terms of these functions.

    Generally you should call this function just once, right at the beginning
    of your program.

    Args:
      hostname_resolver (trio.abc.HostnameResolver or None): The new custom
          hostname resolver, or None to restore the default behavior.

    Returns:
      The previous hostname resolver (which may be None).

    N)rH   getset)rG   olds     r'   set_custom_hostname_resolverrP   e   s-    : --

CMM#$$$Jr)   SocketFactory | Nonec                n    t                               d          }t                               |            |S )a  Set a custom socket object factory.

    This function allows you to replace Trio's normal socket class with a
    custom class. This is very useful for testing, and probably a bad idea in
    any other circumstance. See :class:`trio.abc.HostnameResolver` for more
    details.

    Setting a custom socket factory affects all future calls to :func:`socket`
    within the enclosing call to :func:`trio.run`.

    Generally you should call this function just once, right at the beginning
    of your program.

    Args:
      socket_factory (trio.abc.SocketFactory or None): The new custom
          socket factory, or None to restore the default behavior.

    Returns:
      The previous socket factory (which may be None).

    N)rJ   rM   rN   )rI   rO   s     r'   set_custom_socket_factoryrS      s0    0 

d
#
#C'''Jr)   AI_NUMERICSERVhostbytes | str | Noneportbytes | str | int | Nonefamilyinttypeprotoflagsqlist[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]c           
     L  K   dd}t          |          4 d{V  t          j        | |||||t          z            cddd          d{V  S # 1 d{V swxY w Y   t	          | t
                    r=	 |                     d          } n&# t          $ r t          j        | d	          } Y nw xY wt          
                    d          }| |                    | |||||           d{V S t          j                            t          j        | |||||d
           d{V S )aT  Look up a numeric address given a name.

    Arguments and return values are identical to :func:`socket.getaddrinfo`,
    except that this version is async.

    Also, :func:`trio.socket.getaddrinfo` correctly uses IDNA 2008 to process
    non-ASCII domain names. (:func:`socket.getaddrinfo` uses IDNA 2003, which
    can give the wrong result in some cases and cause you to connect to a
    different host than the one you intended; see `bpo-17305
    <https://bugs.python.org/issue17305>`__.)

    This function's behavior can be customized using
    :func:`set_custom_hostname_resolver`.

    r*   r+   r!   r,   c                `    t          | t          j                  o| j        t          j        k    S r$   )r.   _stdlib_socketgaierrorerrno
EAI_NONAME)r*   s    r'   numeric_only_failurez)getaddrinfo.<locals>.numeric_only_failure   s)    sN344 7	^66	
r)   NasciiT)uts46abandon_on_cancelrA   )r   ra   getaddrinfo_NUMERIC_ONLYr.   strencodeUnicodeEncodeError_idnarH   rM   r2   	to_threadrun_sync)rU   rW   rY   r[   r\   r]   re   hrs           r'   rj   rj      s     H
 
 
 
 -.. 
 
 
 
 
 
 
 
)M!
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
" $ 2	2;;w''DD! 	2 	2 	2 <D111DDD		2
 
t		B	~^^D$eUKKKKKKKKK^,,&" - 	
 	
 	
 	
 	
 	
 	
 	
 		
s#   !A
AA7B  B0/B0sockaddr+tuple[str, int] | tuple[str, int, int, int]tuple[str, str]c                   K   t                               d          }||                    | |           d{V S t          j                            t          j        | |d           d{V S )a  Look up a name given a numeric address.

    Arguments and return values are identical to :func:`socket.getnameinfo`,
    except that this version is async.

    This function's behavior can be customized using
    :func:`set_custom_hostname_resolver`.

    NTrh   )rH   rM   getnameinfor2   rp   rq   ra   )rs   r]   rr   s      r'   rw   rw     s       
t		B	~^^He444444444^,,&"	 - 
 
 
 
 
 
 
 
 	
r)   namerl   c                j   K   t           j                            t          j        | d           d{V S )zkLook up a protocol number by name. (Rarely used.)

    Like :func:`socket.getprotobyname`, but async.

    Trh   N)r2   rp   rq   ra   getprotobyname)rx   s    r'   rz   rz     sQ       ((% )         r)   sock_stdlib_socket.socket
SocketTypec                     t          |           S )z]Convert a standard library :class:`socket.socket` object into a Trio
    socket object.

    )_SocketType)r{   s    r'   from_stdlib_socketr   0  s    
 tr)   rF   assignedupdatedfdr
   AddressFamily | intSocketKind | intc                    t          |||t          |                     \  }}}t          t          j        | |||                    S )z=Like :func:`socket.fromfd`, but returns a Trio socket object.)_sniff_sockopts_for_filenor   r   ra   fromfd)r   rY   r[   r\   type_s        r'   r   r   8  sD     6fdE5QS99UUFE5n3BuMMNNNr)   win32	fromshareinfobytesc                D    t          t          j        |                     S )z@Like :func:`socket.fromshare`, but returns a Trio socket object.)r   ra   r   )r   s    r'   r   r   H  s     ".":4"@"@AAAr)   FamilyTTypeTr"   FamilyDefaulttuple[SocketType, SocketType]c                p    t          j        | ||          \  }}t          |          t          |          fS )zTLike :func:`socket.socketpair`, but returns a pair of Trio socket
    objects.

    )ra   
socketpairr   )rY   r[   r\   leftrights        r'   r   r   X  s8     !+FD%@@KD%t$$&8&?&?@@r)   fileno
int | Nonec                    |4t                               d          }||                    | ||          S nt          | |||          \  } }}t	          j        | |||          }t          |          S )zCreate a new Trio socket, like :class:`socket.socket`.

    This function's behavior can be customized using
    :func:`set_custom_socket_factory`.

    N)rJ   rM   socketr   ra   r   )rY   r[   r\   r   sfstdlib_sockets         r'   r   r   f  s     ~  &&>99VT5111  9	
 
e #)&$vFFMm,,,r)   r   1tuple[AddressFamily | int, SocketKind | int, int]c                `   t           j        dk    r| ||fS ddlm}m}m}m} t          j        | |||          }	 |                    ||          } |                    ||          }|                    ||          }|	                                 n# |	                                 w xY w| ||fS )zCCorrect SOCKOPTS for given fileno, falling back to provided values.linuxr   )	SO_DOMAINSO_PROTOCOLSO_TYPE
SOL_SOCKET)r   )
sysplatformr   r   r   r   r   ra   
getsockoptdetach)	rY   r   r\   r   r   r   r   r   sockobjs	            r'   r   r     s     |wue##            #FE5HHHG##J	::"":{;;"":w77 	5%s   AB B(SOCK_NONBLOCKSOCK_CLOEXECFfn2Callable[Concatenate[_stdlib_socket.socket, P], T]wait_fn2Callable[[_stdlib_socket.socket], Awaitable[None]]maybe_availr,   3Callable[Concatenate[_SocketType, P], Awaitable[T]]c                     t           dd          d fd            }d j         d|_        |r|xj        d j         dz  c_        |S )N)rC   rF   r   r&   r   argsP.argskwargsP.kwargsr!   r   c                8   K    | j         g|R i | d {V S r$   )_nonblocking_helper)r&   r   r   r   r   s      r'   wrapperz1_make_simple_sock_method_wrapper.<locals>.wrapper  s>      -T-grKDKKKFKKKKKKKKKr)   zLike :meth:`socket.socket.z`, but async.

            z7Only available on platforms where :meth:`socket.socket.z` is available.)r&   r   r   r   r   r   r!   r   )_wrapsrC   __doc__)r   r   r   r   s   ``  r'    _make_simple_sock_method_wrapperr     s    
 B333L L L L L L 43LR[   GO  
bk   	
 Nr)   r   ipv6_v6only
bool | intaddresslocalc                 K   |t           j        k    r8t          |t                    rt	          |          dk    st          d          n|t           j        k    rAt          |t                    rdt	          |          cxk    rdk    sn t          d          ndt          t           d          rM|t           j        k    r=t          |t          t          t          j        f          sJ t          j        |          S |S |^}}}t          |t                    r1|/	 t          j        ||           |S # t           t"          f$ r Y nw xY w|dk    rd }|dk    rd}d	}	|r|	t           j        z  }	|t           j        k    r|s|	t           j        z  }	t)          |||| ||	           d {V }
t	          |
          d
k    sJ |
^^ }}}|t           j        k    rot+          |          }t	          |          dk    sJ t	          |          dk    r|d         |d<   t	          |          dk    r|d         |d<   t          |          S |S )N   z&address should be a (host, port) tuple   z=address should be a (host, port, [flowinfo, [scopeid]]) tupleAF_UNIX z<broadcast>z255.255.255.255r   r      )ra   AF_INETr.   tuplelen
ValueErrorAF_INET6hasattrr   rl   r   osPathLikefspathrZ   	inet_ptonOSError	TypeError
AI_PASSIVEAI_V4MAPPEDrj   list)r   rY   r\   r   r   r   rU   rW   _r]   gai_resnormedlist_normeds                r'   _resolve_address_nocpr     s      ''''5)) 	GW1B1BEFFF 2C	>*	*	*'5)) 	c'll1G1G1G1Ga1G1G1G1GO   2H 
	+	+ .:P0P0P'C#<=====y!!! ND$ $ !1	$VT222 N # 	 	 	D	
 rzz} E +** ((((++dFE5%HHHHHHHHG w<<1La1 (((6ll6{{aw<<1$QZKNw<<1$QZKN[!!!Ms   D4 4EEc                      e Zd Zdh fdZdidZdidZdjdZdjd	Zedkd            Z	edld            Z		 dmdndZ	edod            Z
edpd            Z
	 dmdqdZ
 eej        d          fdrdZdsdZdtd!Zej        d"k    ses eej        d#          rdud%Zdvd'Zdwd.Zedxd0            Zedyd2            Zedid3            Zedsd4            Zdzd6Zd{d7Zdhd8Z d|d:Z!d}d<Z"dsd=Z#dhd>Z$d~d@Z%d|dAZ&dddEZ'	 	 dddJZ(	 dddMZ)	 	 dddOZ*ej        d"k    ses eej        dP          r	 	 dddSZ+ej        d"k    ses eej        dT          r	 	 dddXZ,dddYZ-edd\            Z.edd]            Z.dd`Z.ej        d"k    ses; eej        da          r. e/ej        j0        dbdbc          	 	 	 dddg            Z0 xZ1S  xZ1S  xZ1S )r}   r!   r"   c                    t                                                       t          |           t          u rt	          d          d S )Nz`SocketType is an abstract class; use trio.socket.socket if you want to construct a socket object)superr(   r[   r}   r   )r&   	__class__s    r'   r(   zSocketType.__init__#  sI    ::##4   $#r)   rZ   c                    t           r$   NotImplementedErrorr5   s    r'   r   zSocketType.detach-      !!r)   c                    t           r$   r   r5   s    r'   r   zSocketType.fileno0  r   r)   r   c                    t           r$   r   r5   s    r'   getpeernamezSocketType.getpeername3  r   r)   c                    t           r$   r   r5   s    r'   getsocknamezSocketType.getsockname6  r   r)   leveloptnamec                    d S r$   rF   r&   r   r   s      r'   r   zSocketType.getsockopt9      ;>3r)   buflenr   c                    d S r$   rF   r&   r   r   r   s       r'   r   zSocketType.getsockopt<      JM#r)   Nr   int | bytesc                    t           r$   r   r   s       r'   r   zSocketType.getsockopt?  
     "!r)   valueint | Bufferc                    d S r$   rF   r&   r   r   r   s       r'   
setsockoptzSocketType.setsockoptG      QTQTr)   optlenc                    d S r$   rF   r&   r   r   r   r   s        r'   r   zSocketType.setsockoptJ  	     sr)   int | Buffer | Nonec                    t           r$   r   r   s        r'   r   zSocketType.setsockoptS  s
     "!r)      backlogc                    t           r$   r   r&   r  s     r'   listenzSocketType.listen\  r   r)   r,   c                    t           r$   r   r5   s    r'   get_inheritablezSocketType.get_inheritable_  r   r)   inheritablec                    t           r$   r   r&   r  s     r'   set_inheritablezSocketType.set_inheritableb  r   r)   r   share
process_idc                    t           r$   r   r&   r  s     r'   r  zSocketType.sharei  s    %%r)   r   c                    t           r$   r   r5   s    r'   	__enter__zSocketType.__enter__l  r   r)   r7   r8   r9   r:   r;   r<   c                    t           r$   r   r?   s       r'   __exit__zSocketType.__exit__o  r   r)   r   c                    t           r$   r   r5   s    r'   rY   zSocketType.familyw      !!r)   r   c                    t           r$   r   r5   s    r'   r[   zSocketType.type{  r  r)   c                    t           r$   r   r5   s    r'   r\   zSocketType.proto  r  r)   c                    t           )zBReturn True if the socket has been shut down with the SHUT_WR flagr   r5   s    r'   did_shutdown_SHUT_WRzSocketType.did_shutdown_SHUT_WR  s
     "!r)   rl   c                    t           r$   r   r5   s    r'   __repr__zSocketType.__repr__  r   r)   c                    t           r$   r   r5   s    r'   dupzSocketType.dup  r   r)   c                    t           r$   r   r5   s    r'   closezSocketType.close  r   r)   r   c                   K   t           r$   r   r&   r   s     r'   bindzSocketType.bind        !!r)   flagc                    t           r$   r   r&   r#  s     r'   shutdownzSocketType.shutdown  r   r)   c                    t           )zpReturn True if the socket is readable. This is checked with `select.select` on Windows, otherwise `select.poll`.r   r5   s    r'   is_readablezSocketType.is_readable  r  r)   c                   K   t           )zIConvenience method that calls trio.lowlevel.wait_writable for the object.r   r5   s    r'   wait_writablezSocketType.wait_writable  s      !!r)    tuple[SocketType, AddressFormat]c                   K   t           r$   r   r5   s    r'   acceptzSocketType.accept  r"  r)   c                   K   t           r$   r   r   s     r'   connectzSocketType.connect  r"  r)   r   r]   Awaitable[bytes]c                   t           r$   r   r&   r   r]   s      r'   recvzSocketType.recv  r   r)   bufferr   nbytesAwaitable[int]c                    t           r$   r   r&   r4  r5  r]   s       r'   	recv_intozSocketType.recv_into  r   r)   bufsize&Awaitable[tuple[bytes, AddressFormat]]c                   t           r$   r   r&   r:  r]   s      r'   recvfromzSocketType.recvfrom  r   r)   $Awaitable[tuple[int, AddressFormat]]c                    t           r$   r   r8  s       r'   recvfrom_intozSocketType.recvfrom_into  r   r)   recvmsg
ancbufsizeBAwaitable[tuple[bytes, list[tuple[int, int, bytes]], int, object]]c                   t           r$   r   r&   r:  rC  r]   s       r'   rB  zSocketType.recvmsg  
     &%r)   recvmsg_intobuffersIterable[Buffer]@Awaitable[tuple[int, list[tuple[int, int, bytes]], int, object]]c                   t           r$   r   r&   rI  rC  r]   s       r'   rH  zSocketType.recvmsg_into  rG  r)   c                   t           r$   r   r&   r   r]   s      r'   sendzSocketType.send  r   r)   data!tuple[object, ...] | str | Bufferc               
   K   d S r$   rF   r&   rQ  r   s      r'   sendtozSocketType.sendto         cr)   c               
   K   d S r$   rF   r&   rQ  r]   r   s       r'   rU  zSocketType.sendto         cr)   r   objectc                   K   t           r$   r   )r&   r   s     r'   rU  zSocketType.sendto  r"  r)   sendmsgrF   r   ancdata!Iterable[tuple[int, int, Buffer]]AddressFormat | Nonec                  K   t           r$   r   r&   rI  r]  r]   r   s        r'   r\  zSocketType.sendmsg  s       &%r)   rB   r!   rZ   r!   r   r   rZ   r   rZ   r!   rZ   r   rZ   r   rZ   r   rZ   r!   r   r$   r   rZ   r   rZ   r   r   r!   r   r   rZ   r   rZ   r   r   r!   r"   
r   rZ   r   rZ   r   r"   r   rZ   r!   r"   
r   rZ   r   rZ   r   r   r   r   r!   r"   r  rZ   r!   r"   r!   r,   r  r,   r!   r"   r  rZ   r!   r   r!   r   r7   r8   r9   r:   r;   r<   r!   r"   r!   r   r!   r   r!   rl   r!   r}   r   r   r!   r"   r#  rZ   r!   r"   r!   r+  r   r   rZ   r]   rZ   r!   r0  r   r   r4  r   r5  rZ   r]   rZ   r!   r6  r:  rZ   r]   rZ   r!   r;  r4  r   r5  rZ   r]   rZ   r!   r?  r:  rZ   rC  rZ   r]   rZ   r!   rD  rI  rJ  rC  rZ   r]   rZ   r!   rK  r   r   r]   rZ   r!   r6  rQ  r   r   rR  r!   rZ   rQ  r   r]   rZ   r   rR  r!   rZ   r   rZ  r!   rZ   rF   r   N
rI  rJ  r]  r^  r]   rZ   r   r_  r!   rZ   )2rC   rD   rE   r(   r   r   r   r   r   r   r   minra   	SOMAXCONNr  r  r
  r   r   r   r   r   r  r  r  propertyrY   r[   r\   r  r  r  r  r!  r&  r(  r*  r-  r/  r3  r9  r>  rA  rB  rH  rP  rU  r   r\  __classcell__)r   s   @r'   r}   r}   "  s5            " " " "" " " "" " " "" " " " >>> X>MMM XM "	" " " " " TTT XT   X "" " " " " %(C(@#$F$F " " " " "" " " "" " " " |w %gn&;WEE 	& 	& 	& 	&" " " "" " " " " " " X" " " " X" " " " X" " " " X"" " " "" " " "" " " "" " " "" " " "" " " "" " " "" " " "" " " "" " " " " 	" " " " " " " " " " 	" " " " " |w %gn&;YGG   		& 	& 	& 	& 	& |w %gn&;^LL   		& 	& 	& 	& 	&" " " " "    X    X" " " " |w %gn&;YGG  
%-B	G	G	G :<,0	& 	& 	& 	& 
H	G	& 	& 	& 	& 	& r)   __c                     e Zd ZdxdZdydZdydZdzd
ZdzdZed{d            Z	ed|d            Z		 d}d~dZ	edd            Z
edd            Z
	 d}ddZ
 eej        d          fddZdd!Zdd#Zej        d$k    ses eej        d%          rdd'Zdd)Zdd0Zedd2            Zedd4            Zedyd5            Zedd6            Zdd8Zdd:Zdd;Z dd=Z!dd?Z"dd@Z#ddAZ$ddCZ%ddMZ& e'ej        j(        e)j*                  Z+ddOZ(ddPZ,erdddTZ- e'ej        j-        e)j*                  Z-er	 	 dddYZ. e'ej        j.        e)j*                  Z.er	 ddd\Z/ e'ej        j/        e)j*                  Z/er	 	 ddd^Z0 e'ej        j0        e)j*                  Z0ej        d$k    ses7 eej        d_          r&er	 	 dddbZ1 e'ej        j1        e)j*        dcd          Z1ej        d$k    ses7 eej        de          r&er	 	 dddiZ2 e'ej        j2        e)j*        dcd          Z2erdddjZ3 e'ej        j3        e)j$                  Z3eddm            Z4eddn            Z4 e5ej        j4        dodop          ddr            Z4ej        d$k    ses9 eej        ds          r* e5ej        j6        dodop          	 	 	 dddw            Z6dS dS dS )r   r{   r|   r!   r"   c                    t          |          t          j        ur%t          dt          |          j         d          || _        | j                            d           d| _        d S )Nz.expected object of type 'socket.socket', not ''F)r[   ra   r   r   rC   _socksetblocking_did_shutdown_SHUT_WR)r&   r{   s     r'   r(   z_SocketType.__init__  sn    ::^222 WdATWWW   

u%%%%*"""r)   rZ   c                4    | j                                         S r$   )r  r   r5   s    r'   r   z_SocketType.detach#      z  """r)   c                4    | j                                         S r$   )r  r   r5   s    r'   r   z_SocketType.fileno&  r  r)   r   c                4    | j                                         S r$   )r  r   r5   s    r'   r   z_SocketType.getpeername)      z%%'''r)   c                4    | j                                         S r$   )r  r   r5   s    r'   r   z_SocketType.getsockname,  r  r)   r   r   c                    d S r$   rF   r   s      r'   r   z_SocketType.getsockopt/  r   r)   r   r   c                    d S r$   rF   r   s       r'   r   z_SocketType.getsockopt2  r   r)   Nr   r   c                t    || j                             ||          S | j                             |||          S r$   )r  r   r   s       r'   r   z_SocketType.getsockopt5  s;     >:((888z$$UGV<<<r)   r   r   c                    d S r$   rF   r   s       r'   r   z_SocketType.setsockopt?  r   r)   r   c                    d S r$   rF   r   s        r'   r   z_SocketType.setsockoptB  r   r)   r   c                    |-|t          d          | j                            |||          S |t          d|d          | j                            ||||          S )NzKinvalid value for argument 'value', must not be None when specifying optlenz$invalid value for argument 'value': z%, must be None when specifying optlen)r   r  r   r   s        r'   r   z_SocketType.setsockoptK  s     >}a   :((???eueee   z$$UGUFCCCr)   r   r  c                6    | j                             |          S r$   )r  r  r  s     r'   r  z_SocketType.listena  s    z  )))r)   r,   c                4    | j                                         S r$   )r  r  r5   s    r'   r  z_SocketType.get_inheritabled  s    z))+++r)   r  c                6    | j                             |          S r$   )r  r
  r	  s     r'   r
  z_SocketType.set_inheritableg  s    z))+666r)   r   r  r  c                6    | j                             |          S r$   )r  r  r  s     r'   r  z_SocketType.sharen  s    :##J///r)   r   c                    | S r$   rF   r5   s    r'   r  z_SocketType.__enter__q  s    r)   r7   r8   r9   r:   r;   r<   c                :    | j                             |||          S r$   )r  r  r?   s       r'   r  z_SocketType.__exit__t  s     z""8Y	BBBr)   r   c                    | j         j        S r$   )r  rY   r5   s    r'   rY   z_SocketType.family|  s    z  r)   r   c                    | j         j        S r$   )r  r[   r5   s    r'   r[   z_SocketType.type  s    zr)   c                    | j         j        S r$   )r  r\   r5   s    r'   r\   z_SocketType.proto  s    zr)   c                    | j         S r$   )r  r5   s    r'   r  z _SocketType.did_shutdown_SHUT_WR  s    ))r)   rl   c                R    t          | j                                      dd          S )Nzsocket.socketztrio.socket.socket)reprr  replacer5   s    r'   r  z_SocketType.__repr__  s#    DJ''9MNNNr)   r}   c                N    t          | j                                                  S )z"Same as :meth:`socket.socket.dup`.)r   r  r  r5   s    r'   r  z_SocketType.dup  s    4:>>++,,,r)   c                    | j                                         dk    r?t          j                            | j                    | j                                          d S d S )N)r  r   r2   r3   notify_closingr  r5   s    r'   r  z_SocketType.close  sU    :"$$M((444J %$r)   r   c                  K   |                      |d           d {V }t          t          d          rM| j        t          j        k    r8|d         r0t
          j                            | j        j	        |           d {V S t
          j
                                         d {V  | j        	                    |          S )NTr   r   r   )r   r   ra   rY   r   r2   rp   rq   r  r!  r3   
checkpointr   s     r'   r!  z_SocketType.bind  s      227$2GGGGGGGGNI..	,~555
 6
 00'JJJJJJJJJ -**,,,,,,,,,:??7+++r)   r#  c                    | j                             |           |t          j        t          j        fv r	d| _        d S d S )NT)r  r&  ra   SHUT_WR	SHUT_RDWRr  r%  s     r'   r&  z_SocketType.shutdown  sE    
D!!!N*N,DEEE)-D&&& FEr)   c                6   t           j        dk    r0t          j        | j        gg g d          \  }}}t	          |          S t          j                    }|                    | j        t          j                   t	          |                    d                    S )Nr   r   )r   r   selectr  r,   pollregisterPOLLIN)r&   rreadyr   ps       r'   r(  z_SocketType.is_readable  ss    <7""!=$*r2qAALFAq<<KMM	

4:v}---AFF1IIr)   c                H   K   t          j        | j                   d {V  d S r$   )r   r*  r  r5   s    r'   r*  z_SocketType.wait_writable  s1      !$*-----------r)   r   c                  K   | j         t          j        k    r0| j                            t          j        t          j                  }nd}t          | j        | j         | j	        |||           d {V S )NF)r   r   r   )
rY   ra   r   r  r   IPPROTO_IPV6IPV6_V6ONLYr   r[   r\   )r&   r   r   r   s       r'   r   z!_SocketType._resolve_address_nocp  s       ;.111*//+* KK
  K*IKJ#
 
 
 
 
 
 
 
 
 	
r)   r   r   r   r   r   r   r   r   r   c                  K   t                      4 d {V   || j        g|R i |cd d d           d {V  S # 1 d {V swxY w Y   	  || j                   d {V  	  || j        g|R i |S # t          $ r Y nw xY w9r$   )r   r  r/   )r&   r   r   r   r   s        r'   r   z_SocketType._nonblocking_helper  sZ     8 ;; 	3 	3 	3 	3 	3 	3 	3 	32dj24222622	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3	'$*%%%%%%%%%r$*6t666v666"   		s!   ;
AA$A5 5
BBr+  c                b   K   |                                   d{V \  }}t          |          |fS )z-Like :meth:`socket.socket.accept`, but async.N)_acceptr   )r&   r{   addrs      r'   r-  z_SocketType.accept  s<      <<>>))))))
d!$''--r)   c           	     >  K   	 |                      |d           d {V }t                      4 d {V  | j                            |          cd d d           d {V  S # 1 d {V swxY w Y   t	          j        | j                   d {V  n-# t          j        $ r | j                                          w xY w| j        	                    t          j        t          j                  }|dk    r(t          |d|dt          j        |                     d S )NFr  r   zError connecting to z: )r   r   r  r/  r   r*  r2   	Cancelledr  r   ra   r   SO_ERRORr   r   strerror)r&   r   errs      r'   r/  z_SocketType.connect  s     
;	 66we6LLLLLLLLG {{ 03 03 03 03 03 03 03 03` z))'22a03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03f %dj1111111111~ 	 	 	 J	 j##N$=~?VWW!88#UgUU2;sCSCSUUVVV 8s.   1B A"B "
A,,B /A,0"B *B=r   r]   r0  c                   d S r$   rF   r2  s      r'   r3  z_SocketType.recva        r)   r4  r   r5  r6  c                   d S r$   rF   r8  s       r'   r9  z_SocketType.recv_inton  s	     !Sr)   r:  r;  c                   d S r$   rF   r=  s      r'   r>  z_SocketType.recvfrom  s	    
 69Sr)   r?  c                   d S r$   rF   r8  s       r'   rA  z_SocketType.recvfrom_into  s	     473r)   rB  rC  rD  c                   d S r$   rF   rF  s       r'   rB  z_SocketType.recvmsg  s     VYUXr)   T)r   rH  rI  rJ  rK  c                   d S r$   rF   rM  s       r'   rH  z_SocketType.recvmsg_into  s     TWSVr)   c                   d S r$   rF   rO  s      r'   rP  z_SocketType.send  r  r)   rQ  rR  c               
   K   d S r$   rF   rT  s      r'   rU  z_SocketType.sendto  rV  r)   c               
   K   d S r$   rF   rX  s       r'   rU  z_SocketType.sendto  rY  r)   rF   r   rZ  c                   K   t          |          }|                     |d         d           d{V |d<    | j        t          j        t
          j        j        g|R   d{V S )z3Similar to :meth:`socket.socket.sendto`, but async.r  Fr  N)r   r   r   r   r*  ra   r   rU  )r&   r   	args_lists      r'   rU  z_SocketType.sendto  s      
 JJ	"88b8OOOOOOOO	" .T-!(
 
 
 
 
 
 
 
 
 
 	
r)   r\  r]  r^  r_  c                  K   ||                      |d           d{V }|                     t          j        t          j        j        ||||           d{V S )zSimilar to :meth:`socket.socket.sendmsg`, but async.

            Only available on platforms where :meth:`socket.socket.sendmsg` is
            available.

            NFr  )r   r   r   r*  ra   r   r\  ra  s        r'   r\  z_SocketType.sendmsg  s       " $ : :7% : P PPPPPPP11#%-        r)   )r{   r|   r!   r"   rb  rc  rd  re  r$   rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rB   rt  ru  )r   r   r   r,   r!   r   )
r   r   r   r   r   r   r   r   r!   r   rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  )7rC   rD   rE   r(   r   r   r   r   r   r   r   r  ra   r  r  r  r
  r   r   r   r   r   r  r  r  r  rY   r[   r\   r  r  r  r  r!  r&  r(  r*  r   r   r   r-  r   wait_readabler  r/  r3  r9  r>  rA  rB  rH  rP  rU  r   r\  rF   r)   r'   r   r     s       	+ 	+ 	+ 	+ # # # ## # # #( ( ( (( ( ( ( >>> X>MMM XM "	= = = = = TTT XT   X "D D D D D, %(C(@#$F$F * * * * *, , , ,7 7 7 7 |w %gn&;WEE 	0 	0 	0 	0   C C C C ! ! ! X!    X       X  * * * X*O O O O- - - -   
, , , ,$. . . .   . . . .
 
 
 
8$ $ $ $T /.$ G
. . . .DW DW DW DW\  POOOOO++" D  ! 	! 	! 	! 	! 	! 10' I  9
 	9 	9 	9 	9 	9 0/& H  7 	7 	7 	7 	7 	7 54+ M |w %gn&;YGG   	Y
 #$	Y Y Y Y Y 32!)
 
 
 |w %gn&;^LL   	W
 #$	W W W W W 87!.
 
 
  POOOOO++" D    X    X VN!(2rBBB
 
 
 CB
$ |w %gn&;YGG  
%-B	G	G	G :<,0	 	 	 	 
H	G	 	 	 r)   r   )rG   rK   r!   rK   )rI   rQ   r!   rQ   )r   r   r   r   )rU   rV   rW   rX   rY   rZ   r[   rZ   r\   rZ   r]   rZ   r!   r^   )rs   rt   r]   rZ   r!   ru   )rx   rl   r!   rZ   )r{   r|   r!   r}   )
r   r
   rY   r   r[   r   r\   rZ   r!   r}   )r   r   r!   r}   )rY   r   r[   r   r\   rZ   r!   r   )
rY   r   r[   r   r\   rZ   r   r   r!   r}   )
rY   r   r   r   r\   rZ   r   r   r!   r   )F)r   r   r   r   r   r,   r!   r   )r   rZ   rY   r   r\   rZ   r   r   r   r   r   r,   r!   r   )R
__future__r   r   r  r   ra   r   operatorr   r   r   typingr   r   r	   r
   r   r   r   idnaro   r2   
trio._utilr   r   r   r   collections.abcr   r   r   typesr   typing_extensionsr   r   r   _abcr   r   r   r   r   __annotations__r   RunVarrH   rJ   rP   rS   AI_NUMERICHOSTrk   getattrrj   rw   rz   r   r   r   SOCK_STREAMr   r   r   rZ   r   r   r   r   r   _SOCK_TYPE_MASKr   r   r}   __dict__itemsrx   obj
startswithr   stdlib_type
stdlib_objr   rF   r)   r'   <module>r     s
   " " " " " " " 				      



       , , , , , , , ,                       & & & & & &       ==========######999999999955555555	#A GCLL            H 4@5<@S3T3T	 T T T T6BelCS6T6T T T T T   D   F - )91== = P
 P
 P
 P
 P
f
 
 
 
2
 
 
 
*    B777 #1"8+7	O O O O 87O <7 !'.+>>  VN$r2>>>B B B ?>B
 <7GE"*MMM},t3G3333%,s2E2222 !B;;;#(
A 
A 
A 
A <;
A B777"0"8+7	- - - - 87-6       T GNOQ//gnna001     NG G G GT^& ^& ^& ^& ^& ^& ^& ^&D $**,, % %ID#t  %,n.GG  W[$55
 	*, 	E$CKKM M M M M* M M M M Mr)   