
     f                    X   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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 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          Z0de-d<    ej/        d          Z1de-d<   dbdZ2dcdZ3ej4        ej5        z  Z6	 	 	 	 ddded(Z7dfd,Z8dgd/Z9dhd3Z: eej;        d4d45          ej<        ej=        d fdid:            Z;ej>        d;k    ses) e?ed<          r eej@        d4d45          djd?            Z@ej>        d;k    reAZBde-d@<   eAZCde-dA<   ej<        ZDn+dZDdBe-dC<   eeAe	df         ZBde-d@<   eej        eAf         ZCde-dA<    eejE        d4d45          eDe
j=        d fdkdE            ZE eej        d4d45          ej<        ej=        d dfdldH            ZdmdKZF eGedLd            eGedMd           z   ZH	 dndodVZIdpd]ZJ G d^ d2          ZKeKjL        M                                D ]X\  ZNZOeNP                    d_          seOjQ        r"ej        ejK        fD ]ZR eGeReNd          ZSeSr	eSjQ        r nLeSjQ        eO_Q        Y G d` daeK          ZTdS )q    )annotationsN)index)AddressFamily
SocketKind)	TYPE_CHECKINGAny	AwaitableCallableLiteralSupportsIndexTypeVarUnionoverload)wraps   )_core)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] | Nonec                    || _         d S N)_blocking_exc_override)selfr!   s     O/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/trio/_socket.py__init__z_try_sync.__init__@   s     '<###    excBaseExceptionreturnboolc                d    | j         t          |t                    S |                      |          S r$   )r%   
isinstanceBlockingIOError)r&   r*   s     r'   _is_blocking_io_errorz_try_sync._is_blocking_io_errorE   s/    &.c?333..s333r)   Nonec                R   K   t           j                                         d {V  d S r$   )triolowlevelcheckpoint_if_cancelledr&   s    r'   
__aenter__z_try_sync.__aenter__K   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   r4   r5   cancel_shielded_checkpointr&   r9   r;   r=   s       r'   	__aexit__z_try_sync.__aexit__N   sS        T%?%?	%J%J  4-::<<<<<<<<<5r)   r$   )r!   r"   r*   r+   r,   r-   r,   r2   )r9   r:   r;   r<   r=   r>   r,   r-   )__name__
__module____qualname__r(   r1   r8   rB    r)   r'   r    r    ?   sl        NR< < < < <
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)rJ   getset)rI   olds     r'   set_custom_hostname_resolverrR   f   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)rL   rO   rP   )rK   rQ   s     r'   set_custom_socket_factoryrU      s0    0 

d
#
#C'''Jr)   hostbytes | str | Noneportbytes | str | int | Nonefamilyinttypeprotoflags]list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]]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_cancelrC   )r    rb   getaddrinfo_NUMERIC_ONLYr/   strencodeUnicodeEncodeError_idnarJ   rO   r4   	to_threadrun_sync)rV   rX   rZ   r\   r]   r^   rf   hrs           r'   rk   rk      s     @
 
 
 
 -.. 
 
 
 
 
 
 
 
)$eU]-B
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 $ 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   )rJ   rO   getnameinfor4   rq   rr   rb   )rt   r^   rs   s      r'   rx   rx      s       
t		B	~^^He4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)r4   rq   rr   rb   getprotobyname)ry   s    r'   r{   r{     sO       ((%tt )         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)   rH   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   '  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   7  s     ".":4"@"@AAAr)   FamilyTTypeTzLiteral[None]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   G  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)rL   rO   socketr   rb   r   )rZ   r\   r]   r   sfstdlib_sockets         r'   r   r   U  s     ~  &&>99VT5111  9D%
 
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   n  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)rE   rH   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   )_wrapsrE   __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localr   c               v  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          nYt          t           d          rB|t           j        k    r2t          |t          t          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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<00000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   D) )D=<D=c                      e Zd Zdl fdZdmdZdmdZdndZdnd	Zedod            Z	edpd            Z		 dqdrdZ	edsd            Z
edtd            Z
	 dqdudZ
 eej        d          fdvdZdwdZdxd!Zej        d"k    ses eej        d#          rdyd%Zdzd'Zd{d.Zed|d0            Zed}d2            Zedmd3            Zedwd4            Zd~d6Zdd7Zdld8Z dd:Z!dd<Z"dwd=Z#dld>Z$dd@Z%ddAZ&dddFZ'	 dddLZ(	 dddOZ)	 dddQZ*ej        d"k    ses eej        dR          r	 	 dddUZ+ej        d"k    ses eej        dV          r	 	 dddZZ,ddd\Z-edd`            Z.edda            Z.dddZ.ej        d"k    ses; eej        de          r. e/ej        j0        dfdfg          	 	 	 dddk            Z0 xZ1S  xZ1S  xZ1S )r~   r,   r2   c                    t                                                       t          |           t          k    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$   NotImplementedErrorr7   s    r'   r   zSocketType.detach      !!r)   c                    t           r$   r   r7   s    r'   r   zSocketType.fileno  r   r)   r   c                    t           r$   r   r7   s    r'   getpeernamezSocketType.getpeername  r   r)   c                    t           r$   r   r7   s    r'   getsocknamezSocketType.getsockname"  r   r)   leveloptnamec                   d S r$   rH   r&   r   r   s      r'   r   zSocketType.getsockopt%      >Acr)   buflenr   c                   d S r$   rH   r&   r   r   r   s       r'   r   zSocketType.getsockopt(      MPSr)   Nr   int | bytesc                   t           r$   r   r   s       r'   r   zSocketType.getsockopt+  
     "!r)   valueint | Bufferc                   d S r$   rH   r&   r   r   r   s       r'   
setsockoptzSocketType.setsockopt0      TWTWr)   optlenc                   d S r$   rH   r&   r   r   r   r   s        r'   r   zSocketType.setsockopt3  	     sr)   int | Buffer | Nonec                   t           r$   r   r   s        r'   r   zSocketType.setsockopt8  s
     "!r)      backlogc                   t           r$   r   r&   r  s     r'   listenzSocketType.listenB  r   r)   r-   c                    t           r$   r   r7   s    r'   get_inheritablezSocketType.get_inheritableE  r   r)   inheritablec                    t           r$   r   r&   r  s     r'   set_inheritablezSocketType.set_inheritableH  r   r)   r   share
process_idc                   t           r$   r   r&   r  s     r'   r  zSocketType.shareO  s    %%r)   r   c                    t           r$   r   r7   s    r'   	__enter__zSocketType.__enter__R  r   r)   r9   r:   r;   r<   r=   r>   c                    t           r$   r   rA   s       r'   __exit__zSocketType.__exit__U  s
     "!r)   r   c                    t           r$   r   r7   s    r'   rZ   zSocketType.family]      !!r)   r   c                    t           r$   r   r7   s    r'   r\   zSocketType.typea  r  r)   c                    t           r$   r   r7   s    r'   r]   zSocketType.protoe  r  r)   c                    t           )zBReturn True if the socket has been shut down with the SHUT_WR flagr   r7   s    r'   did_shutdown_SHUT_WRzSocketType.did_shutdown_SHUT_WRi  r   r)   rm   c                    t           r$   r   r7   s    r'   __repr__zSocketType.__repr__n  r   r)   c                    t           r$   r   r7   s    r'   dupzSocketType.dupq  r   r)   c                    t           r$   r   r7   s    r'   closezSocketType.closet  r   r)   r   c                   K   t           r$   r   r&   r   s     r'   bindzSocketType.bindw        !!r)   flagc                    t           r$   r   r&   r#  s     r'   shutdownzSocketType.shutdownz  r   r)   c                    t           )zpReturn True if the socket is readable. This is checked with `select.select` on Windows, otherwise `select.poll`.r   r7   s    r'   is_readablezSocketType.is_readable}  r  r)   c                   K   t           )zIConvenience method that calls trio.lowlevel.wait_writable for the object.r   r7   s    r'   wait_writablezSocketType.wait_writable  s      !!r)    tuple[SocketType, AddressFormat]c                   K   t           r$   r   r7   s    r'   acceptzSocketType.accept  r"  r)   c                   K   t           r$   r   r   s     r'   connectzSocketType.connect  r"  r)   r   _SocketType__buflen_SocketType__flagsAwaitable[bytes]c                    t           r$   r   _SocketType__selfr0  r1  s      r'   recvzSocketType.recv  r   r)   bufferr   nbytesr^   Awaitable[int]c                    t           r$   r   r5  r7  r8  r^   s       r'   	recv_intozSocketType.recv_into  r   r)   _SocketType__bufsize&Awaitable[tuple[bytes, AddressFormat]]c                    t           r$   r   r5  r=  r1  s      r'   recvfromzSocketType.recvfrom  r   r)   $Awaitable[tuple[int, AddressFormat]]c                    t           r$   r   r;  s       r'   recvfrom_intozSocketType.recvfrom_into  r   r)   recvmsg_SocketType__ancbufsize?Awaitable[tuple[bytes, list[tuple[int, int, bytes]], int, Any]]c                    t           r$   r   r5  r=  rF  r1  s       r'   rE  zSocketType.recvmsg  
     &%r)   recvmsg_into_SocketType__buffersIterable[Buffer]=Awaitable[tuple[int, list[tuple[int, int, bytes]], int, Any]]c                    t           r$   r   r5  rL  rF  r1  s       r'   rK  zSocketType.recvmsg_into  rJ  r)   _SocketType__bytesc                    t           r$   r   r5  rQ  r1  s      r'   sendzSocketType.send  r   r)   _SocketType__data_SocketType__address!tuple[object, ...] | str | Bufferc                
   K   d S r$   rH   r&   rU  rV  s      r'   sendtozSocketType.sendto         cr)   c                
   K   d S r$   rH   r&   rU  r1  rV  s       r'   rZ  zSocketType.sendto  s       cr)   r   r   c                   K   t           r$   r   )r&   r   s     r'   rZ  zSocketType.sendto  r"  r)   sendmsgrH   r   _SocketType__ancdata!Iterable[tuple[int, int, Buffer]]AddressFormat | Nonec                   K   t           r$   r   r&   rL  r`  r1  rV  s        r'   r_  zSocketType.sendmsg  s       &%r)   rD   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,   r2   
r   r[   r   r[   r   r2   r   r[   r,   r2   
r   r[   r   r[   r   r   r   r   r,   r2   r  r[   r,   r2   r,   r-   r  r-   r,   r2   r  r[   r,   r   r,   r   r9   r:   r;   r<   r=   r>   r,   r2   r,   r   r,   r   r,   rm   r,   r~   r   r   r,   r2   r#  r[   r,   r2   r,   r+  r   r0  r[   r1  r[   r,   r2  r   r   r7  r   r8  r[   r^   r[   r,   r9  r=  r[   r1  r[   r,   r>  r7  r   r8  r[   r^   r[   r,   rB  r=  r[   rF  r[   r1  r[   r,   rG  rL  rM  rF  r[   r1  r[   r,   rN  rQ  r   r1  r[   r,   r9  rU  r   rV  rW  r,   r[   rU  r   r1  r[   rV  rW  r,   r[   r   r   r,   r[   rH   r   N
rL  rM  r`  ra  r1  r[   rV  rb  r,   r[   )2rE   rF   rG   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-  r/  r6  r<  rA  rD  rE  rK  rT  rZ  r   r_  __classcell__)r   s   @r'   r~   r~     s3            " " " "" " " "" " " "" " " " AAA XAPPP XP AE" " " " "
 WWW XW   X "" " " " " (+s>+CS'I'I " " " " "" " " "" " " " |w %gn&;WEE 	& 	& 	& 	&" " " "" " " " " " " X" " " " X" " " " X" " " " X"" " " "" " " "" " " "" " " "" " " "" " " "" " " "" " " "" " " "" " " " " ?@" " " " " 01" " " " " ?@" " " " "
 |w %gn&;YGG  !"		& 	& 	& 	& 	& |w %gn&;^LL  !"		& 	& 	& 	& 	&" " " " "    X    X" " " " |w %gn&;YGG  
%-B	G	G	G <>.2	& 	& 	& 	& 
H	G	& 	& 	& 	& 	& r)   __c                     e Zd Zd|dZd}dZd}dZd~d	Zd~d
Zedd            Z	edd            Z		 dddZ	edd            Z
edd            Z
	 ddd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d}d5            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dddUZ- e'ej        j-        e)j*                  Z-er	 ddd[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s6 eej        da          r%er	 ddddZ1 e'ej        j1        e)j*        def          Z1ej        d$k    ses7 eej        dg          r&er	 	 dddkZ2 e'ej        j2        e)j*        def          Z2erdddmZ3 e'ej        j3        e)j$                  Z3eddq            Z4eddr            Z4 e5ej        j4        dsdst          ddv            Z4ej        d$k    ses9 eej        dw          r* e5ej        j6        dsdst          	 	 	 ddd{            Z6dS dS dS )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   rE   _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,   r[   c                4    | j                                         S r$   )r  r   r7   s    r'   r   z_SocketType.detach      z  """r)   c                4    | j                                         S r$   )r  r   r7   s    r'   r   z_SocketType.fileno  r  r)   r   c                4    | j                                         S r$   )r  r   r7   s    r'   r   z_SocketType.getpeername       z%%'''r)   c                4    | j                                         S r$   )r  r   r7   s    r'   r   z_SocketType.getsockname  r  r)   r   r   c                   d S r$   rH   r   s      r'   r   z_SocketType.getsockopt  r   r)   r   r   c                   d S r$   rH   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.getsockopt  s;     >:((888z$$UGV<<<r)   r   r   r2   c                   d S r$   rH   r   s       r'   r   z_SocketType.setsockopt  r   r)   r   c                   d S r$   rH   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.setsockopt  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.listen2  s    z  )))r)   r-   c                4    | j                                         S r$   )r  r  r7   s    r'   r  z_SocketType.get_inheritable5  s    z))+++r)   r  c                6    | j                             |          S r$   )r  r
  r	  s     r'   r
  z_SocketType.set_inheritable8  s    z))+666r)   r   r  r  c               6    | j                             |          S r$   )r  r  r  s     r'   r  z_SocketType.share?  s    :##J///r)   r   c                    | S r$   rH   r7   s    r'   r  z_SocketType.__enter__B  s    r)   r9   r:   r;   r<   r=   r>   c                :    | j                             |||          S r$   )r  r  rA   s       r'   r  z_SocketType.__exit__E  s     z""8Y	BBBr)   r   c                    | j         j        S r$   )r  rZ   r7   s    r'   rZ   z_SocketType.familyM  s    z  r)   r   c                    | j         j        S r$   )r  r\   r7   s    r'   r\   z_SocketType.typeQ  s    zr)   c                    | j         j        S r$   )r  r]   r7   s    r'   r]   z_SocketType.protoU  s    zr)   c                    | j         S r$   )r  r7   s    r'   r  z _SocketType.did_shutdown_SHUT_WRY  s    ))r)   rm   c                R    t          | j                                      dd          S )Nzsocket.socketztrio.socket.socket)reprr  replacer7   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  r7   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   r4   r5   notify_closingr  r7   s    r'   r  z_SocketType.closed  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   r4   rq   rr   r  r!  r5   
checkpointr   s     r'   r!  z_SocketType.bindi  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  r7   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*//+^-G 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*  r4   	Cancelledr  r   rb   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   r0  r1  r2  c                    d S r$   rH   r4  s      r'   r6  z_SocketType.recv0        r)   r7  r   r8  r^   r9  c                    d S r$   rH   r;  s       r'   r<  z_SocketType.recv_into?  s     Sr)   r=  r>  c                    d S r$   rH   r@  s      r'   rA  z_SocketType.recvfromM  s    58Sr)   rB  c                    d S r$   rH   r;  s       r'   rD  z_SocketType.recvfrom_into[  s    363r)   rE  rF  rG  c                    d S r$   rH   rI  s       r'   rE  z_SocketType.recvmsgl  s    RURUr)   T)r   rK  rL  rM  rN  c                    d S r$   rH   rP  s       r'   rK  z_SocketType.recvmsg_into}  s    
 QTPSr)   rQ  c                    d S r$   rH   rS  s      r'   rT  z_SocketType.send  r  r)   rU  rV  rW  c                
   K   d S r$   rH   rY  s      r'   rZ  z_SocketType.sendto  r[  r)   c                
   K   d S r$   rH   r]  s       r'   rZ  z_SocketType.sendto  r[  r)   rH   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   rZ  )r&   r   	args_lists      r'   rZ  z_SocketType.sendto  s      
 JJ	"88b8OOOOOOOO	" .T-!(
 
 
 
 
 
 
 
 
 
 	
r)   r_  r`  ra  rb  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_  rd  s        r'   r_  z_SocketType.sendmsg  s       $"&"<"<Ye"<"T"TTTTTTT	11#%-        r)   )r|   r}   re  rf  rg  rh  r$   ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rD   rw  rx  )r   r   r   r-   r,   r   )
r   r   r   r   r   r   r   r   r,   r   ry  rz  r{  r|  r}  r~  r  r  r  r  r  r  r  r  r  )7rE   rF   rG   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  r/  r6  r<  rA  rD  rE  rK  rT  rZ  r   r_  rH   r)   r'   r   r     s       	+ 	+ 	+ 	+ # # # ## # # #( ( ( (( ( ( ( AAA XAPPP XP AE= = = = = WWW XW   X "D D D D D. (+s>+CS'I'I * * * * *, , , ,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- - - -   
, , , ,$. . . .   . . . .
 
 
 
6$ $ $ $T /.$e&9 G. . . .DW DW DW DW\  SRRRRR
 ,+"E$7 D  ! CD	! 	! 	! 	! 	! 10')< I  9 45	9 	9 	9 	9 	9 0/&(; H  7 CD	7 	7 	7 	7 	7 54+U-@ M |w %gn&;YGG   	V OPV V V V V 32!)5+>D
 
 
 |w %gn&;^LL   	T
 %& 	T T T T T 87!.0CQU
 
 
  SRRRRR++"E$7 D    X    X VN!(2rBBB
 
 
 CB
$ |w %gn&;YGG  
%-B	G	G	G <>.2	 	 	 	 
H	G	 	 	 r)   r   )rI   rM   r,   rM   )rK   rS   r,   rS   )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   )U
__future__r   r   r  r   rb   r   operatorr   r   r   typingr   r   r	   r
   r   r   r   r   r   idnarp   r4   
trio._utilr   r   r   r   collections.abcr   typesr   typing_extensionsr   r   r   r   r   _abcr   r   r   r   r   __annotations__r    RunVarrJ   rL   rR   rU   AI_NUMERICHOSTAI_NUMERICSERVrl   rk   rx   r{   r   r   r   SOCK_STREAMr   r   r   r[   r   r   r   r   r   getattr_SOCK_TYPE_MASKr   r   r~   __dict__itemsry   obj
startswithr   stdlib_type
stdlib_objr   rH   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            F 4@5<@S3T3T	 T T T T6BelCS6T6T T T T T   D   B -0MM G
 G
 G
 G
 G
T
 
 
 
*   &    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-0       T GNOQ//gnna001     NG G G GTI& I& I& I& I& I& I& I&Z $**,, % %ID#t  %,n.GG  W[$55
 	*, 	E$CKKg g g g g* g g g g gr)   