
     nh                    d   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<   dbdZ1dcdZ2ej3        Z4e4 e5edd           z  Z4	 	 	 	 ddded)Z6dfd-Z7dgd0Z8dhd4Z9 eej:        d5d56          ej;        ej<        d fdid;            Z:ej=        d<k    ses) e>ed=          r eej?        d5d56          djd@            Z?ej=        d<k    re@ZAde,dA<   e@ZBde,dB<   ej;        ZCn+dZCdCe,dD<   ee@e	df         ZAde,dA<   eej        e@f         ZBde,dB<    eejD        d5d56          eCe
j<        d fdkdF            ZD eej        d5d56          ej;        ej<        d dfdldI            ZdmdLZE e5edMd            e5edNd           z   ZF	 dndodWZGdpd]ZH G d^ d3          ZIeIjJ        K                                D ]X\  ZLZMeLN                    d_          seMjO        r"ej        ejI        fD ]ZP e5ePeLd          ZQeQr	eQjO        r nLeQjO        eM_O        Y G d` daeI          ZRdS )q    )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     `/var/www/html/mycamper/aliexpress-site/backend/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_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*   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_cancelrB   )r   rb   getaddrinfo_NUMERIC_ONLYr/   strencodeUnicodeEncodeError_idnarI   rN   r3   	to_threadrun_sync)rV   rX   rZ   r\   r]   r^   rf   hrs           r(   rk   rk      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`.

    NTri   )rI   rN   getnameinfor3   rq   rr   rb   )rt   r^   rs   s      r(   rx   rx     s       
t		B	~^^He444444444^,,&"	 - 
 
 
 
 
 
 
 
 	
r*   namerm   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.

    Tri   N)r3   rq   rr   rb   getprotobyname)ry   s    r(   r{   r{     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   rb   fromfd)r   rZ   r\   r]   type_s        r(   r   r   7  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   rb   r   )r   s    r(   r   r   G  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.

    )rb   
socketpairr   )rZ   r\   r]   leftrights        r(   r   r   W  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   rb   r   )rZ   r\   r]   r   sfstdlib_sockets         r(   r   r   e  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   rb   
getsockoptdetach)	rZ   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      )rb   AF_INETr/   tuplelen
ValueErrorAF_INET6hasattrr   rm   r   osPathLikefspathr[   	inet_ptonOSError	TypeError
AI_PASSIVEAI_V4MAPPEDrk   list)r   rZ   r]   r   r   r   rV   rX   _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*   r[   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.getpeername2  r   r*   c                    t           r%   r   r6   s    r(   getsocknamezSocketType.getsockname5  r   r*   leveloptnamec                    d S r%   rG   r'   r   r   s      r(   r   zSocketType.getsockopt8      ;>3r*   buflenr   c                    d S r%   rG   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%   rG   r'   r   r   r   s       r(   
setsockoptzSocketType.setsockoptF      QTQTr*   optlenc                    d S r%   rG   r'   r   r   r   r   s        r(   r   zSocketType.setsockoptI  	     sr*   int | Buffer | Nonec                    t           r%   r   r   s        r(   r   zSocketType.setsockoptR  s
     "!r*      backlogc                    t           r%   r   r'   r  s     r(   listenzSocketType.listen[  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_inheritablea  r   r*   r   share
process_idc                    t           r%   r   r'   r  s     r(   r  zSocketType.shareh  s    %%r*   r   c                    t           r%   r   r6   s    r(   	__enter__zSocketType.__enter__k  r   r*   r8   r9   r:   r;   r<   r=   c                    t           r%   r   r@   s       r(   __exit__zSocketType.__exit__n  r   r*   r   c                    t           r%   r   r6   s    r(   rZ   zSocketType.familyv      !!r*   r   c                    t           r%   r   r6   s    r(   r\   zSocketType.typez  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*   rm   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'   r5  r6  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   r9  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;  rD  r^   s       r(   rC  zSocketType.recvmsg  
     &%r*   recvmsg_intobuffersIterable[Buffer]@Awaitable[tuple[int, list[tuple[int, int, bytes]], int, object]]c                   t           r%   r   r'   rJ  rD  r^   s       r(   rI  zSocketType.recvmsg_into  rH  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'   rR  r   s      r(   sendtozSocketType.sendto         cr*   c               
   K   d S r%   rG   r'   rR  r^   r   s       r(   rV  zSocketType.sendto         cr*   r   objectc                   K   t           r%   r   )r'   r   s     r(   rV  zSocketType.sendto  r#  r*   sendmsgrG   r   ancdata!Iterable[tuple[int, int, Buffer]]AddressFormat | Nonec                  K   t           r%   r   r'   rJ  r^  r^   r   s        r(   r]  zSocketType.sendmsg  s       &%r*   rC   r"   r[   r"   r   r   r[   r   r[   r"   r[   r   r[   r   r[   r   r[   r"   r   r%   r   r[   r   r[   r   r   r"   r   r   r[   r   r[   r   r   r"   r#   
r   r[   r   r[   r   r#   r   r[   r"   r#   
r   r[   r   r[   r   r   r   r   r"   r#   r  r[   r"   r#   r"   r-   r  r-   r"   r#   r  r[   r"   r   r"   r   r8   r9   r:   r;   r<   r=   r"   r#   r"   r   r"   r   r"   rm   r"   r~   r   r   r"   r#   r$  r[   r"   r#   r"   r,  r   r   r[   r^   r[   r"   r1  r   r   r5  r   r6  r[   r^   r[   r"   r7  r;  r[   r^   r[   r"   r<  r5  r   r6  r[   r^   r[   r"   r@  r;  r[   rD  r[   r^   r[   r"   rE  rJ  rK  rD  r[   r^   r[   r"   rL  r   r   r^   r[   r"   r7  rR  r   r   rS  r"   r[   rR  r   r^   r[   r   rS  r"   r[   r   r[  r"   r[   rG   r   N
rJ  rK  r^  r_  r^   r[   r   r`  r"   r[   )2rD   rE   rF   r)   r   r   r   r   r   r   r   minrb   	SOMAXCONNr  r  r  r   r   r   r   r   r  r  r  propertyrZ   r\   r]   r  r  r  r  r"  r'  r)  r+  r.  r0  r4  r:  r?  rB  rC  rI  rQ  rV  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\   rb   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*   r[   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.getsockopt1  r   r*   Nr   r   c                t    || j                             ||          S | j                             |||          S r%   )r  r   r   s       r(   r   z_SocketType.getsockopt4  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.setsockoptA  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.setsockoptJ  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_inheritablec  s    z))+++r*   r  c                6    | j                             |          S r%   )r  r  r
  s     r(   r  z_SocketType.set_inheritablef  s    z))+666r*   r   r  r  c                6    | j                             |          S r%   )r  r  r  s     r(   r  z_SocketType.sharem  s    :##J///r*   r   c                    | S r%   rG   r6   s    r(   r  z_SocketType.__enter__p  s    r*   r8   r9   r:   r;   r<   r=   c                :    | j                             |||          S r%   )r  r  r@   s       r(   r  z_SocketType.__exit__s  s     z""8Y	BBBr*   r   c                    | j         j        S r%   )r  rZ   r6   s    r(   rZ   z_SocketType.family{  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*   rm   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   rb   rZ   r   r3   rq   rr   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'  rb   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   )
rZ   rb   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  r0  r   r+  r3   	Cancelledr  r   rb   r   SO_ERRORr   r   strerror)r'   r   errs      r(   r0  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^   r1  c                   d S r%   rG   r3  s      r(   r4  z_SocketType.recv`        r*   r5  r   r6  r7  c                   d S r%   rG   r9  s       r(   r:  z_SocketType.recv_intom  s	     !Sr*   r;  r<  c                   d S r%   rG   r>  s      r(   r?  z_SocketType.recvfrom  s	    
 69Sr*   r@  c                   d S r%   rG   r9  s       r(   rB  z_SocketType.recvfrom_into  s	     473r*   rC  rD  rE  c                   d S r%   rG   rG  s       r(   rC  z_SocketType.recvmsg  s     VYUXr*   T)r   rI  rJ  rK  rL  c                   d S r%   rG   rN  s       r(   rI  z_SocketType.recvmsg_into  s     TWSVr*   c                   d S r%   rG   rP  s      r(   rQ  z_SocketType.send  r  r*   rR  rS  c               
   K   d S r%   rG   rU  s      r(   rV  z_SocketType.sendto  rW  r*   c               
   K   d S r%   rG   rY  s       r(   rV  z_SocketType.sendto  rZ  r*   rG   r   r[  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+  rb   r   rV  )r'   r   	args_lists      r(   rV  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+  rb   r   r]  rb  s        r(   r]  z_SocketType.sendmsg  s       " $ : :7% : P PPPPPPP11#%-        r*   )r|   r}   r"   r#   rc  rd  re  rf  r%   rg  rh  ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  rC   ru  rv  )r   r   r   r-   r"   r   )
r   r   r   r   r   r   r   r   r"   r   rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  )7rD   rE   rF   r)   r   r   r   r   r   r   r   r  rb   r  r  r  r  r   r   r   r   r   r  r  r  r  rZ   r\   r]   r  r  r  r  r"  r'  r)  r+  r   r   r   r.  r   wait_readabler  r0  r4  r:  r?  rB  rC  rI  rQ  rV  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   )rV   rW   rX   rY   rZ   r[   r\   r[   r]   r[   r^   r[   r"   r_   )rt   ru   r^   r[   r"   rv   )ry   rm   r"   r[   )r|   r}   r"   r~   )
r   r	   rZ   r   r\   r   r]   r[   r"   r~   )r   r   r"   r~   )rZ   r   r\   r   r]   r[   r"   r   )
rZ   r   r\   r   r]   r[   r   r   r"   r~   )
rZ   r   r   r   r]   r[   r   r   r"   r   )F)r   r   r   r   r   r-   r"   r   )r   r[   rZ   r   r]   r[   r   r   r   r   r   r-   r"   r   )S
__future__r   r   r  r   rb   r   operatorr   r   r   typingr   r   r	   r
   r   r   idnarp   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_NUMERICHOSTrl   getattrrk   rx   r{   r   r   r   SOCK_STREAMr   r   r   r[   r   r   r   r   r   _SOCK_TYPE_MASKr   r   r~   __dict__itemsry   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   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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*   