
    g                    T   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 d dlZd dlZd dlmZ ddlmZ er1d d	lmZmZmZ d d
lmZ d dl m!Z!m"Z"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          Z0de,d<   dadZ1dbdZ2ej3        ej4        z  Z5	 	 	 	 dcddd(Z6ded,Z7dfd/Z8dgd3Z9 eej:        d4d45          ej;        ej<        d fdhd:            Z:ej=        d;k    ses) e>ed<          r eej?        d4d45          did?            Z?ej=        d;k    re@ZAde,d@<   e@ZBde,dA<   ej;        ZCn+dZCdBe,dC<   ee@e	df         ZAde,d@<   eej        e@f         ZBde,dA<    eejD        d4d45          eCe
j<        d fdjdE            ZD eej        d4d45          ej;        ej<        d dfdkdH            ZdldKZE eFedLd            eFedMd           z   ZG	 dmdndVZHdod\ZI G d] d2          ZJeJjK        L                                D ]X\  ZMZNeMO                    d^          seNjP        r"ej        ejJ        fD ]ZQ eFeQeMd          ZReRr	eRjP        r nLeRjP        eN_P        Y G d_ d`eJ          ZSdS )p    )annotationsN)index)AddressFamily
SocketKind)TYPE_CHECKINGAnySupportsIndexTypeVarUnionoverload)wraps   )_core)	AwaitableCallableIterable)TracebackType)BufferConcatenate	ParamSpecSelf	TypeAlias)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     X/var/www/html/nodeJS/PythonScripts/venv3.11/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_errorC   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__I   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)r1   r3   r4   cancel_shielded_checkpointr'   r8   r:   r<   s       r(   	__aexit__z_try_sync.__aexit__L   sS        T%?%?	%J%J  4-::<<<<<<<<<5r*   r%   )r    r!   r"   r#   r+   r,   r"   r-   r"   r#   )r8   r9   r:   r;   r<   r=   r"   r-   )__name__
__module____qualname__r)   r1   r7   rA    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)rI   getset)rH   olds     r(   set_custom_hostname_resolverrQ   d   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)rK   rN   rO   )rJ   rP   s     r(   set_custom_socket_factoryrT      s0    0 

d
#
#C'''Jr*   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_cancelrB   )r   ra   getaddrinfo_NUMERIC_ONLYr/   strencodeUnicodeEncodeError_idnarI   rN   r3   	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   )rI   rN   getnameinfor3   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)r3   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   ,  s    
 tr*   rG   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   4  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   D  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   T  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)rK   rN   socketr   ra   r   )rY   r[   r\   r   sfstdlib_sockets         r(   r   r   b  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)rD   rG   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   )_wrapsrD   __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%   NotImplementedErrorr6   s    r(   r   zSocketType.detach)      !!r*   c                    t           r%   r   r6   s    r(   r   zSocketType.fileno,  r   r*   r   c                    t           r%   r   r6   s    r(   getpeernamezSocketType.getpeername/  r   r*   c                    t           r%   r   r6   s    r(   getsocknamezSocketType.getsockname2  r   r*   leveloptnamec                    d S r%   rG   r'   r   r   s      r(   r   zSocketType.getsockopt5      ;>3r*   buflenr   c                    d S r%   rG   r'   r   r   r   s       r(   r   zSocketType.getsockopt8      JM#r*   Nr   int | bytesc                    t           r%   r   r   s       r(   r   zSocketType.getsockopt;  
     "!r*   valueint | Bufferc                    d S r%   rG   r'   r   r   r   s       r(   
setsockoptzSocketType.setsockoptC      QTQTr*   optlenc                    d S r%   rG   r'   r   r   r   r   s        r(   r   zSocketType.setsockoptF  	     sr*   int | Buffer | Nonec                    t           r%   r   r   s        r(   r   zSocketType.setsockoptO  s
     "!r*      backlogc                    t           r%   r   r'   r  s     r(   listenzSocketType.listenX  r   r*   r-   c                    t           r%   r   r6   s    r(   get_inheritablezSocketType.get_inheritable[  r   r*   inheritablec                    t           r%   r   r'   r  s     r(   set_inheritablezSocketType.set_inheritable^  r   r*   r   share
process_idc                    t           r%   r   r'   r  s     r(   r  zSocketType.sharee  s    %%r*   r   c                    t           r%   r   r6   s    r(   	__enter__zSocketType.__enter__h  r   r*   r8   r9   r:   r;   r<   r=   c                    t           r%   r   r@   s       r(   __exit__zSocketType.__exit__k  r   r*   r   c                    t           r%   r   r6   s    r(   rY   zSocketType.familys      !!r*   r   c                    t           r%   r   r6   s    r(   r[   zSocketType.typew  r  r*   c                    t           r%   r   r6   s    r(   r\   zSocketType.proto{  r  r*   c                    t           )zBReturn True if the socket has been shut down with the SHUT_WR flagr   r6   s    r(   did_shutdown_SHUT_WRzSocketType.did_shutdown_SHUT_WR  s
     "!r*   rl   c                    t           r%   r   r6   s    r(   __repr__zSocketType.__repr__  r   r*   c                    t           r%   r   r6   s    r(   dupzSocketType.dup  r   r*   c                    t           r%   r   r6   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   r6   s    r(   is_readablezSocketType.is_readable  r  r*   c                   K   t           )zIConvenience method that calls trio.lowlevel.wait_writable for the object.r   r6   s    r(   wait_writablezSocketType.wait_writable  s      !!r*    tuple[SocketType, AddressFormat]c                   K   t           r%   r   r6   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%   rG   r'   rQ  r   s      r(   sendtozSocketType.sendto         cr*   c               
   K   d S r%   rG   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*   sendmsgrG   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*   rC   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   r8   r9   r:   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   rG   r   N
rI  rJ  r]  r^  r]   rZ   r   r_  r"   rZ   )2rD   rE   rF   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   rD   _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   r6   s    r(   r   z_SocketType.detach      z  """r*   c                4    | j                                         S r%   )r  r   r6   s    r(   r   z_SocketType.fileno"  r  r*   r   c                4    | j                                         S r%   )r  r   r6   s    r(   r   z_SocketType.getpeername%      z%%'''r*   c                4    | j                                         S r%   )r  r   r6   s    r(   r   z_SocketType.getsockname(  r  r*   r   r   c                    d S r%   rG   r   s      r(   r   z_SocketType.getsockopt+  r   r*   r   r   c                    d S r%   rG   r   s       r(   r   z_SocketType.getsockopt.  r   r*   Nr   r   c                t    || j                             ||          S | j                             |||          S r%   )r  r   r   s       r(   r   z_SocketType.getsockopt1  s;     >:((888z$$UGV<<<r*   r   r   c                    d S r%   rG   r   s       r(   r   z_SocketType.setsockopt;  r   r*   r   c                    d S r%   rG   r   s        r(   r   z_SocketType.setsockopt>  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.setsockoptG  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.listen]  s    z  )))r*   r-   c                4    | j                                         S r%   )r  r  r6   s    r(   r  z_SocketType.get_inheritable`  s    z))+++r*   r  c                6    | j                             |          S r%   )r  r
  r	  s     r(   r
  z_SocketType.set_inheritablec  s    z))+666r*   r   r  r  c                6    | j                             |          S r%   )r  r  r  s     r(   r  z_SocketType.sharej  s    :##J///r*   r   c                    | S r%   rG   r6   s    r(   r  z_SocketType.__enter__m  s    r*   r8   r9   r:   r;   r<   r=   c                :    | j                             |||          S r%   )r  r  r@   s       r(   r  z_SocketType.__exit__p  s     z""8Y	BBBr*   r   c                    | j         j        S r%   )r  rY   r6   s    r(   rY   z_SocketType.familyx  s    z  r*   r   c                    | j         j        S r%   )r  r[   r6   s    r(   r[   z_SocketType.type|  s    zr*   c                    | j         j        S r%   )r  r\   r6   s    r(   r\   z_SocketType.proto  s    zr*   c                    | j         S r%   )r  r6   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  replacer6   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  r6   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   r3   r4   notify_closingr  r6   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   r3   rp   rq   r  r!  r4   
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  r6   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  r0   )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*  r3   	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%   rG   r2  s      r(   r3  z_SocketType.recv]        r*   r4  r   r5  r6  c                   d S r%   rG   r8  s       r(   r9  z_SocketType.recv_intoj  s	     !Sr*   r:  r;  c                   d S r%   rG   r=  s      r(   r>  z_SocketType.recvfrom}  s	    
 69Sr*   r?  c                   d S r%   rG   r8  s       r(   rA  z_SocketType.recvfrom_into  s	     473r*   rB  rC  rD  c                   d S r%   rG   rF  s       r(   rB  z_SocketType.recvmsg  s     VYUXr*   T)r   rH  rI  rJ  rK  c                   d S r%   rG   rM  s       r(   rH  z_SocketType.recvmsg_into  s     TWSVr*   c                   d S r%   rG   rO  s      r(   rP  z_SocketType.send  r  r*   rQ  rR  c               
   K   d S r%   rG   rT  s      r(   rU  z_SocketType.sendto  rV  r*   c               
   K   d S r%   rG   rX  s       r(   rU  z_SocketType.sendto  rY  r*   rG   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  rC   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  )7rD   rE   rF   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\  rG   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   )rH   rL   r"   rL   )rJ   rR   r"   rR   )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   )T
__future__r   r   r  r   ra   r   operatorr   r   r   typingr   r   r	   r
   r   r   idnaro   r3   
trio._utilr   r   r   r   collections.abcr   r   r   typesr   typing_extensionsr   r   r   r   r   _abcr   r   r   r   r   __annotations__r   RunVarrI   rK   rQ   rT   AI_NUMERICHOSTAI_NUMERICSERVrk   rj   rw   rz   r   r   r   SOCK_STREAMr   r   r   rZ   r   r   r   r   r   getattr_SOCK_TYPE_MASKr   r   r}   __dict__itemsrx   obj
startswithr   stdlib_type
stdlib_objr   rG   r*   r(   <module>r     s   " " " " " " " 				      



       , , , , , , , ,                     & & & & & &       ==========######QQQQQQQQQQQQQQ55555555	#A GCLL            H 4@5<@S3T3T	 T T T T6BelCS6T6T T T T T   D   B -0MM 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sM478G8888^2C78E8888 !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*   