
    #)f                    Z   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<   	 	 	 	 d5dZ2	 	 	 	 d6dZ3ejh                  ejj                  z  Z6	 	 	 	 d7	 	 	 	 	 	 	 	 	 	 	 	 	 d8dZ7	 	 	 	 	 	 d9dZ8d:dZ9d;dZ: eejv                  d d !      ejx                  ejz                  d f	 	 	 	 	 	 	 	 	 d<d"       Z;ej|                  d#k(  ses% e?ed$      r eej                  d d !      d=d%       Z@ej|                  d#k(  reAZBde-d&<   eAZCde-d'<   ejx                  ZDn*dZDd(e-d)<   eeAe	df   ZBde-d&<   eej                  eAf   ZCde-d'<    eej                  d d !      eDe
jz                  d f	 	 	 	 	 	 	 d>d*       ZE eej                  d d !      ejx                  ejz                  d df	 	 	 	 	 	 	 	 	 d?d+       Z	 	 	 	 	 	 	 	 	 	 d@d,ZF eGed-d        eGed.d       z   ZH	 dA	 	 	 	 	 	 	 dBd/ZI	 	 	 	 	 	 	 	 	 	 	 	 	 	 dCd0ZJ G d1 d      ZKeKj                  j                         D ]m  \  ZNZOeNj                  d2      seOj                  r$ej                  ej                  fD ]  ZR eGeReNd      ZSeSseSj                  s n ]eSj                  eO_Q        o  G d3 d4eK      ZTy)D    )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                  B    e Zd Z	 d	 ddZddZd	dZ	 	 	 	 	 	 	 	 d
dZy)	_try_syncNc                    || _         y N)_blocking_exc_override)selfblocking_exc_overrides     I/var/www/html/flask-app/venv/lib/python3.12/site-packages/trio/_socket.py__init__z_try_sync.__init__@   s     '<#    c                \    | j                   t        |t              S | j                  |      S r"   )r#   
isinstanceBlockingIOError)r$   excs     r&   _is_blocking_io_errorz_try_sync._is_blocking_io_errorE   s,    &&.c?33..s33r(   c                \   K   t         j                  j                          d {    y 7 wr"   )triolowlevelcheckpoint_if_cancelledr$   s    r&   
__aenter__z_try_sync.__aenter__K   s     mm33555s   ",*,c                   K   || j                  |      ryt        j                  j                          d {    y7 w)NTF)r-   r/   r0   cancel_shielded_checkpointr$   exc_type	exc_value	tracebacks       r&   	__aexit__z_try_sync.__aexit__N   s>       T%?%?	%J --::<<< =s   6A >A r"   )r%   z&Callable[[BaseException], bool] | Noner,   BaseExceptionreturnboolr=   None)r7   type[BaseException] | Noner8   BaseException | Noner9   TracebackType | Noner=   r>   )__name__
__module____qualname__r'   r-   r3   r:    r(   r&   r    r    ?   sG    NR<%K<
46, ( (	
 
r(   r    hostname_resolverz%_core.RunVar[HostnameResolver | None]	_resolversocket_factoryz"_core.RunVar[SocketFactory | None]_socket_factoryc                Z    t         j                  d      }t         j                  |        |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_resolverrP   f   s$    : --
CMM#$Jr(   c                Z    t         j                  d      }t         j                  |        |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   rM   rN   )rJ   rO   s     r&   set_custom_socket_factoryrR      s'    0 

d
#C'Jr(   c           
     J  K   dd}t        |      4 d{    t        j                  | |||||t        z        cddd      d{    S 7 67 # 1 d{  7  sw Y   nxY wt	        | t
              r9	 | j                  d      } n&# t        $ r t        j                  | d      } Y nw xY wt        j                  d      }||j                  | |||||       d{  7  S t        j                  j                  t        j                  | |||||d       d{  7  S w)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`.

    c                t    t        | t        j                        xr | 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34 7		^666	
r(   NasciiT)uts46abandon_on_cancelr;   )r    rU   getaddrinfo_NUMERIC_ONLYr*   strencodeUnicodeEncodeError_idnarI   rM   r/   	to_threadrun_sync)hostportfamilytypeprotoflagsrY   hrs           r&   r^   r^      s    @
 -. 
 
))$eU]-B

 
 
 
 
 
 
 $	2;;w'D! 	2 <<D1D		2
 
t	B	~^^D$eUKKKK^^,,&&" - 	
 	
 	
 		
s   D#AD#!AD#AD#D#A#AA#D#7B	 D#	 B,)D#+B,,3D#C" =D#D D#c                   K   t         j                  d      }||j                  | |       d{   S t        j                  j                  t        j                  | |d       d{   S 7 =7 w)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`.

    NTr\   )rI   rM   getnameinfor/   rd   re   rU   )sockaddrrk   rl   s      r&   rn   rn      sj      
t	B	~^^He444^^,,&&%4 - 
 
 	
 5
s!   -A1A-8A1(A/)A1/A1c                ~   K   t         j                  j                  t        j                  | d       d{   S 7 w)zkLook up a protocol number by name. (Rarely used.)

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

    Tr\   N)r/   rd   re   rU   getprotobyname)names    r&   rq   rq     s;      ((%%tt )    s   4=;=
SocketTypec                    t        |       S )z]Convert a standard library :class:`socket.socket` object into a Trio
    socket object.

    )_SocketType)socks    r&   from_stdlib_socketrw     s    
 tr(   rG   assignedupdatedc                z    t        |||t        |             \  }}}t        t        j                  | |||            S )z=Like :func:`socket.fromfd`, but returns a Trio socket object.)_sniff_sockopts_for_filenor   rw   rU   fromfd)fdrh   ri   rj   type_s        r&   r}   r}   '  s<     6fdE5QS9UFE5n33BuMNNr(   win32	fromsharec                >    t        t        j                  |             S )z@Like :func:`socket.fromshare`, but returns a Trio socket object.)rw   rU   r   )infos    r&   r   r   7  s     ".":":4"@AAr(   FamilyTTypeTzLiteral[None]FamilyDefaultc                b    t        j                  | ||      \  }}t        |      t        |      fS )zTLike :func:`socket.socketpair`, but returns a pair of Trio socket
    objects.

    )rU   
socketpairrw   )rh   ri   rj   leftrights        r&   r   r   G  s2     !++FD%@KD%t$&8&?@@r(   c                    |*t         j                  d      }|%|j                  | ||      S 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   rM   socketr|   rU   rw   )rh   ri   rj   filenosfstdlib_sockets         r&   r   r   U  sn     ~  &>99VT5118D%
e #))&$vFMm,,r(   c                >   t         j                  dk7  r| ||fS ddlm}m}m}m} t        j                  | |||      }	 |j                  ||      } |j                  ||      }|j                  ||      }|j                          | ||fS # |j                          w xY w)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   rU   
getsockoptdetach)	rh   r   rj   r   r   r   r   r   sockobjs	            r&   r|   r|   n  s     ||wue##  ##FE5HG##J	:"":{;"":w7 	5% 	s   6B
 
BSOCK_NONBLOCKSOCK_CLOEXECc                     t         dd      d	 fd       }d j                   d|_        |r#|xj                  d j                   dz  c_        |S )
N)rD   rG   rx   c                N   K    | j                   g|i | d {   S 7 wr"   )_nonblocking_helper)r$   argskwargsfnwait_fns      r&   wrapperz1_make_simple_sock_method_wrapper.<locals>.wrapper  s,     -T--grKDKFKKKKs   %#%zLike :meth:`socket.socket.z`, but async.

            z7Only available on platforms where :meth:`socket.socket.z` is available.)r$   ru   r   P.argsr   P.kwargsr=   r   )_wrapsrD   __doc__)r   r   maybe_availr   s   ``  r&    _make_simple_sock_method_wrapperr     sn    
 B3L 4L 5R[[M B GO Ebkk] S 	
 Nr(   c                 K   |t         j                  k(  r)t        |t              rt	        |      dk(  st        d      |t         j                  k(  r;t        |t              r dt	        |      cxk  rdk  sit        d       t        d      t        t         d      r@|t         j                  k(  r-t        |t        t        f      sJ t        j                  |      S |S |^}}}t        |t              r|	 t        j                  ||       |S |dk(  rd }|dk(  rd}d	}	|r|	t         j"                  z  }	|t         j                  k(  r|s|	t         j$                  z  }	t'        |||| ||	       d {   }
t	        |
      d
k\  sJ |
^^ }}}|t         j                  k(  rRt)        |      }t	        |      dk(  sJ t	        |      dk\  r|d   |d<   t	        |      dk\  r|d   |d<   t        |      S |S # t        t         f$ r Y w xY w7 w)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      )rU   AF_INETr*   tuplelen
ValueErrorAF_INET6hasattrr   r`   bytesosfspathint	inet_ptonOSError	TypeError
AI_PASSIVEAI_V4MAPPEDr^   list)r   rh   rj   ipv6_v6onlyaddresslocalrf   rg   _rk   gai_resnormedlist_normeds                r&   _resolve_address_nocpr     s     ''''5)W1BEFF	>**	*'5)c'l1Ga1GO  2HO  
	+.:P:P0P'C<00yy!! ND$ $!1	$$VT2 Nrz} E*** (((+++dFE5%HHG w<1La1 (((6l6{aw<1$QZKNw<1$QZKN[!!MK # 		* Is8   C4H	7G2 A"H	/H0BH	2HH	HH	c                  >    e Zd Zd2 fdZd3dZd3dZd4dZd4dZed5d       Z	ed6d       Z		 d7	 	 	 	 	 	 	 d8dZ	ed9d	       Z
e	 	 	 	 	 	 	 	 	 	 d:d
       Z
	 d7	 	 	 	 	 	 	 	 	 d;dZ
 eej                  d      fd<dZd=dZd>dZej$                  dk(  ses eej*                  d      rd?dZd@dZ	 	 	 	 	 	 	 	 dAdZedBd       ZedCd       Zed3d       Zed=d       ZdDdZdEdZd2dZ dFdZ!dGdZ"d=dZ#d2dZ$dHd Z%dFd!Z&dIdJd"Z'	 dK	 	 	 	 	 	 	 dLd#Z(	 dI	 	 	 	 	 dMd$Z)	 dK	 	 	 	 	 	 	 dNd%Z*ej$                  dk7  ses! eej*                  d&      r	 	 dK	 	 	 	 	 	 	 dOd'Z+ej$                  dk7  ses! eej*                  d(      r	 	 dK	 	 	 	 	 	 	 dPd)Z,dIdQd*Z-e	 	 	 	 	 	 dRd+       Z.e	 	 	 	 	 	 	 	 dSd,       Z.dTd-Z.ej$                  dk7  sesN eej*                  d.      r7 e/ej*                  j`                  d/d/0      	 	 	 dU	 	 	 	 	 	 	 	 	 dVd1       Z0 xZ1S  xZ1S  xZ1S )Wrs   c                \    t         |           t        |       t        k(  rt	        d      y )Nz`SocketType is an abstract class; use trio.socket.socket if you want to construct a socket object)superr'   ri   rs   r   )r$   	__class__s    r&   r'   zSocketType.__init__  s1    :#4  $r(   c                    t         r"   NotImplementedErrorr2   s    r&   r   zSocketType.detach      !!r(   c                    t         r"   r   r2   s    r&   r   zSocketType.fileno  r   r(   c                    t         r"   r   r2   s    r&   getpeernamezSocketType.getpeername  r   r(   c                    t         r"   r   r2   s    r&   getsocknamezSocketType.getsockname"  r   r(   c                    y r"   rG   r$   leveloptnames      r&   r   zSocketType.getsockopt%      >Ar(   c                    y r"   rG   r$   r   r   buflens       r&   r   zSocketType.getsockopt(      MPr(   c                   t         r"   r   r   s       r&   r   zSocketType.getsockopt+  
     "!r(   c                    y r"   rG   r$   r   r   values       r&   
setsockoptzSocketType.setsockopt0      TWr(   c                    y r"   rG   r$   r   r   r   optlens        r&   r   zSocketType.setsockopt3       r(   c                   t         r"   r   r   s        r&   r   zSocketType.setsockopt8  s
     "!r(      c                   t         r"   r   r$   backlogs     r&   listenzSocketType.listenB  r   r(   c                    t         r"   r   r2   s    r&   get_inheritablezSocketType.get_inheritableE  r   r(   c                    t         r"   r   r$   inheritables     r&   set_inheritablezSocketType.set_inheritableH  r   r(   r   sharec                   t         r"   r   r$   
process_ids     r&   r   zSocketType.shareO  s    %%r(   c                    t         r"   r   r2   s    r&   	__enter__zSocketType.__enter__R  r   r(   c                    t         r"   r   r6   s       r&   __exit__zSocketType.__exit__U  s
     "!r(   c                    t         r"   r   r2   s    r&   rh   zSocketType.family]      !!r(   c                    t         r"   r   r2   s    r&   ri   zSocketType.typea  r   r(   c                    t         r"   r   r2   s    r&   rj   zSocketType.protoe  r   r(   c                    t         )zBReturn True if the socket has been shut down with the SHUT_WR flagr   r2   s    r&   did_shutdown_SHUT_WRzSocketType.did_shutdown_SHUT_WRi  r   r(   c                    t         r"   r   r2   s    r&   __repr__zSocketType.__repr__n  r   r(   c                    t         r"   r   r2   s    r&   dupzSocketType.dupq  r   r(   c                    t         r"   r   r2   s    r&   closezSocketType.closet  r   r(   c                   K   t         wr"   r   r$   r   s     r&   bindzSocketType.bindw       !!   	c                    t         r"   r   r$   flags     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   r2   s    r&   is_readablezSocketType.is_readable}  r   r(   c                   K   t         w)zIConvenience method that calls trio.lowlevel.wait_writable for the object.r   r2   s    r&   wait_writablezSocketType.wait_writable  s     !!r  c                   K   t         wr"   r   r2   s    r&   acceptzSocketType.accept  r  r  c                   K   t         wr"   r   r  s     r&   connectzSocketType.connect  r  r  c                    t         r"   r   _SocketType__self_SocketType__buflen_SocketType__flagss      r&   recvzSocketType.recv  r   r(   c                    t         r"   r   r  buffernbytesrk   s       r&   	recv_intozSocketType.recv_into  r   r(   c                    t         r"   r   r  _SocketType__bufsizer  s      r&   recvfromzSocketType.recvfrom  r   r(   c                    t         r"   r   r"  s       r&   recvfrom_intozSocketType.recvfrom_into  r   r(   recvmsgc                    t         r"   r   r  r(  _SocketType__ancbufsizer  s       r&   r,  zSocketType.recvmsg  
     &%r(   recvmsg_intoc                    t         r"   r   r  _SocketType__buffersr/  r  s       r&   r1  zSocketType.recvmsg_into  r0  r(   c                    t         r"   r   r  _SocketType__bytesr  s      r&   sendzSocketType.send  r   r(   c                   K   y wr"   rG   r$   _SocketType__data_SocketType__addresss      r&   sendtozSocketType.sendto           c                   K   y wr"   rG   r$   r;  r  r<  s       r&   r=  zSocketType.sendto  s      r?  c                   K   t         wr"   r   )r$   r   s     r&   r=  zSocketType.sendto  r  r  sendmsgrG   rx   c                   K   t         wr"   r   r$   r4  _SocketType__ancdatar  r<  s        r&   rC  zSocketType.sendmsg  s      &%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   
int | Noner=   zint | bytesr   r   r   r   r   zint | Bufferr=   r@   
r   r   r   r   r   r@   r   r   r=   r@   
r   r   r   r   r   zint | Buffer | Noner   rL  r=   r@   r   r   r=   r@   r=   r>   r   r>   r=   r@   r   r   r=   r   r=   r   r7   rA   r8   rB   r9   rC   r=   r@   r=   r   r=   r   r=   r`   r=   rs   r   r   r=   r@   r  r   r=   r@   r=   z tuple[SocketType, AddressFormat]r   r  r   r  r   r=   zAwaitable[bytes]r   r   r#  r   r$  r   rk   r   r=   Awaitable[int]r(  r   r  r   r=   z&Awaitable[tuple[bytes, AddressFormat]]r#  r   r$  r   rk   r   r=   z$Awaitable[tuple[int, AddressFormat]]r(  r   r/  r   r  r   r=   z?Awaitable[tuple[bytes, list[tuple[int, int, bytes]], int, Any]]r4  Iterable[Buffer]r/  r   r  r   r=   z=Awaitable[tuple[int, list[tuple[int, int, bytes]], int, Any]]r7  r   r  r   r=   ra  r;  r   r<  !tuple[object, ...] | str | Bufferr=   r   r;  r   r  r   r<  ri  r=   r   r   r   r=   r   rG   r   N
r4  rf  rF  z!Iterable[tuple[int, int, Buffer]]r  r   r<  zAddressFormat | Noner=   r   )2rD   rE   rF   r'   r   r   r   r   r   r   r   minrU   	SOMAXCONNr   r   r   r   r   r   r   r   r   r   r   propertyrh   ri   rj   r  r  r  r	  r  r  r  r  r  r  r   r%  r)  r+  r,  r1  r8  r=  r   rC  __classcell__)r   s   @r&   rs   rs     s   """" A AP P AE""&)"3="	"
 W W&)26@C	  "" " 	"
 #" " 
" (+>+C+CS'I """ ||wgn&;&;WE	&""," (" (	"
 
" " " " " " " " """"""""""" ?@""(+"8;"	" 01""),"	/" ?@""(+"8;"	-"
 ||wgn&;&;YG !"		&	& 	& 		&
 M	& ||wgn&;&;^L !"		&'	& 	& 		&
 K	&" )J	    5	
 
 " ||wgn&;&;YG 
%%--B	G <>.2	&'	& 9	& 		&
 ,	& 	& 
H	&	 HMr(   __c                  ,   e Zd Zd7dZd8dZd8dZd9dZd9dZed:d       Z	ed;d       Z		 d<	 	 	 	 	 	 	 d=d	Z	ed>d
       Z
e	 	 	 	 	 	 	 	 	 	 d?d       Z
	 d<	 	 	 	 	 	 	 	 	 d@dZ
 eej                  d      fdAdZdBdZdCdZej$                  dk(  ses eej*                  d      rdDdZdEdZ	 	 	 	 	 	 	 	 dFdZedGd       ZedHd       Zed8d       ZedBd       ZdIdZdJdZdKdZ dLdZ!dMdZ"dBdZ#dKd Z$	 	 	 	 	 	 dNd!Z%	 	 	 	 	 	 	 	 	 	 dOd"Z& e'ej*                  jP                  e)jT                        Z+dPd#Z(dLd$Z,erdQdRd%Z- e'ej*                  jZ                  e)jT                        Z-er	 dS	 	 	 	 	 	 	 dTd&Z. e'ej*                  j\                  e)jT                        Z.er	 dQ	 	 	 	 	 dUd'Z/ e'ej*                  j^                  e)jT                        Z/er	 dS	 	 	 	 	 	 	 dVd(Z0 e'ej*                  j`                  e)jT                        Z0ej$                  dk7  sesK eej*                  d)      r8er	 dS	 	 	 	 	 	 	 dWd*Z1 e'ej*                  jb                  e)jT                  d+,      Z1ej$                  dk7  sesL eej*                  d-      r9er	 	 dS	 	 	 	 	 	 	 dXd.Z2 e'ej*                  jd                  e)jT                  d+,      Z2erdQdYd/Z3 e'ej*                  jf                  e)jH                        Z3e	 	 	 	 	 	 dZd0       Z4e	 	 	 	 	 	 	 	 d[d1       Z4 e5ej*                  jh                  d2d23      d\d4       Z4ej$                  dk7  sesH eej*                  d5      r4 e5ej*                  jl                  d2d23      	 	 	 d]	 	 	 	 	 	 	 	 	 d^d6       Z6yyy)_ru   c                    t        |      t        j                  ur"t        dt        |      j                   d      || _        | j
                  j                  d       d| _        y )Nz.expected object of type 'socket.socket', not ''F)ri   rU   r   r   rD   _socksetblocking_did_shutdown_SHUT_WR)r$   rv   s     r&   r'   z_SocketType.__init__  s^    :^222 @dATAT@UUVW  


u%%*"r(   c                6    | j                   j                         S r"   )rv  r   r2   s    r&   r   z_SocketType.detach      zz  ""r(   c                6    | j                   j                         S r"   )rv  r   r2   s    r&   r   z_SocketType.fileno  rz  r(   c                6    | j                   j                         S r"   )rv  r   r2   s    r&   r   z_SocketType.getpeername       zz%%''r(   c                6    | j                   j                         S r"   )rv  r   r2   s    r&   r   z_SocketType.getsockname  r}  r(   c                    y r"   rG   r   s      r&   r   z_SocketType.getsockopt  r   r(   c                    y r"   rG   r   s       r&   r   z_SocketType.getsockopt	  r   r(   Nc               x    || j                   j                  ||      S | j                   j                  |||      S r"   )rv  r   r   s       r&   r   z_SocketType.getsockopt  s9     >::((88zz$$UGV<<r(   c                    y r"   rG   r   s       r&   r   z_SocketType.setsockopt  r   r(   c                    y r"   rG   r   s        r&   r   z_SocketType.setsockopt  r   r(   c                   |*|t        d      | j                  j                  |||      S |t        d|d      | j                  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   rv  r   r   s        r&   r   z_SocketType.setsockopt  sv     >}a  ::((??6ui?de  zz$$UGUFCCr(   r   c               8    | j                   j                  |      S r"   )rv  r   r   s     r&   r   z_SocketType.listen2  s    zz  ))r(   c                6    | j                   j                         S r"   )rv  r   r2   s    r&   r   z_SocketType.get_inheritable5  s    zz))++r(   c                8    | j                   j                  |      S r"   )rv  r   r   s     r&   r   z_SocketType.set_inheritable8  s    zz))+66r(   r   r   c               8    | j                   j                  |      S r"   )rv  r   r   s     r&   r   z_SocketType.share?  s    ::##J//r(   c                    | S r"   rG   r2   s    r&   r   z_SocketType.__enter__B  s    r(   c                <    | j                   j                  |||      S r"   )rv  r   r6   s       r&   r   z_SocketType.__exit__E  s     zz""8Y	BBr(   c                .    | j                   j                  S r"   )rv  rh   r2   s    r&   rh   z_SocketType.familyM  s    zz   r(   c                .    | j                   j                  S r"   )rv  ri   r2   s    r&   ri   z_SocketType.typeQ  s    zzr(   c                .    | j                   j                  S r"   )rv  rj   r2   s    r&   rj   z_SocketType.protoU  s    zzr(   c                    | j                   S r"   )rx  r2   s    r&   r  z _SocketType.did_shutdown_SHUT_WRY  s    )))r(   c                L    t        | j                        j                  dd      S )Nzsocket.socketztrio.socket.socket)reprrv  replacer2   s    r&   r  z_SocketType.__repr__]  s    DJJ''9MNNr(   c                H    t        | j                  j                               S )z"Same as :meth:`socket.socket.dup`.)ru   rv  r  r2   s    r&   r  z_SocketType.dup`  s    4::>>+,,r(   c                    | j                   j                         dk7  rDt        j                  j	                  | j                          | j                   j                          y y )N)rv  r   r/   r0   notify_closingr	  r2   s    r&   r	  z_SocketType.closed  sB    ::"$MM((4JJ %r(   c                  K   | j                  |d       d {   }t        t        d      r^| j                  t        j                  k(  rA|d   r<t
        j                  j                  | j                  j                  |       d {   S t
        j                  j                          d {    | j                  j                  |      S 7 7 G7 #w)NTr   r   r   )r   r   rU   rh   r   r/   rd   re   rv  r  r0   
checkpointr  s     r&   r  z_SocketType.bindi  s     227$2GGNI.~555
 00'JJJ --**,,,::??7++ H K -s4   CCA-CC%C-C. CCCc                    | j                   j                  |       |t        j                  t        j                  fv rd| _        y y )NT)rv  r  rU   SHUT_WR	SHUT_RDWRrx  r  s     r&   r  z_SocketType.shutdown{  s;    

D!N**N,D,DEE)-D& Fr(   c                <   t         j                  dk(  r2t        j                  | j                  gg g d      \  }}}t	        |      S t        j
                         }|j                  | j                  t        j                         t	        |j                  d            S )Nr   r   )r   r   selectrv  r>   pollregisterPOLLIN)r$   rreadyr   ps       r&   r  z_SocketType.is_readable  sk    <<7"!==$**r2qALFAq<KKM	

4::v}}-AFF1Ir(   c                ^   K   t        j                  | j                         d {    y 7 wr"   )r   r  rv  r2   s    r&   r  z_SocketType.wait_writable  s     !!$**---s   #-+-c               ,  K   | j                   t        j                  k(  r9| j                  j	                  t        j
                  t        j                        }nd}t        | j                  | j                   | j                  |||       d {   S 7 w)NF)r   r   r   )
rh   rU   r   rv  r   IPPROTO_IPV6IPV6_V6ONLYr   ri   rj   )r$   r   r   r   s       r&   r   z!_SocketType._resolve_address_nocp  s{      ;;.111**//++^-G-GK  K*IIKKJJ#
 
 	
 
s   BBBBc                6  K   t               4 d {     || j                  g|i |cd d d       d {    S 7 +7 # 1 d {  7  sw Y   nxY w	  || j                         d {  7   	  || j                  g|i |S # t        $ r Y nw xY wBwr"   )r    rv  r+   )r$   r   r   r   r   s        r&   r   z_SocketType._nonblocking_helper  s     8 ; 	3 	3djj24262	3 	3 	3 	3 	3 	3 	3 $**%%%$**6t6v66" 	 sn   B=BAB?BBAA
AB,A/-B3B	 B		BBBBc                ^   K   | j                          d{   \  }}t        |      |fS 7 w)z-Like :meth:`socket.socket.accept`, but async.N)_acceptrw   )r$   rv   addrs      r&   r  z_SocketType.accept  s-     <<>)
d!$'-- *s   -+-c           	     r  K   	 | j                  |d       d {   }t               4 d {    | j                  j                  |      cd d d       d {    S 7 C7 27 	# 1 d {  7  sw Y   nxY wt	        j
                  | j                         d {  7   n2# t        j                  $ r | j                  j                           w xY w| j                  j                  t        j                  t        j                        }|dk7  r%t        |d|dt        j                  |             y w)NFr  r   zError connecting to z: )r   r    rv  r  r   r  r/   	Cancelledr	  r   rU   r   SO_ERRORr   r   strerror)r$   r   errs      r&   r  z_SocketType.connect  s    
;	 66we6LLG { 03 03` zz))'2a03 03 03 M03 03 03 03 03f %%djj111~~ 	 JJ	 jj##N$=$=~?V?VW!8#!5g[2;;sCSBTUVV s   D7B" AB" A B" A$B" A"B" D7B"  B" "B" $A6*A-+A62)B" BB" !D7"/CA&D7c                     y r"   rG   r  s      r&   r   z_SocketType.recv0      r(   c                     y r"   rG   r"  s       r&   r%  z_SocketType.recv_into?  s     r(   c                     y r"   rG   r'  s      r&   r)  z_SocketType.recvfromM  s    58r(   c                     y r"   rG   r"  s       r&   r+  z_SocketType.recvfrom_into[  s    36r(   r,  c                     y r"   rG   r.  s       r&   r,  z_SocketType.recvmsgl  s    RUr(   T)r   r1  c                     y r"   rG   r3  s       r&   r1  z_SocketType.recvmsg_into}  s	    
 QTr(   c                     y r"   rG   r6  s      r&   r8  z_SocketType.send  r  r(   c                   K   y wr"   rG   r:  s      r&   r=  z_SocketType.sendto  r>  r?  c                   K   y wr"   rG   rA  s       r&   r=  z_SocketType.sendto  r>  r?  rG   rx   c                   K   t        |      }| j                  |d   d       d{   |d<    | j                  t        j                  t
        j                  j                  g|  d{   S 7 I7 w)z3Similar to :meth:`socket.socket.sendto`, but async.r  Fr  N)r   r   r   r   r  rU   r   r=  )r$   r   	args_lists      r&   r=  z_SocketType.sendto  s{     
 J	"88b8OO	" .T--!!((
 
 
 	
 P
s"   %A5A1AA5,A3-A53A5rC  c                   K   || j                  |d       d{   }| j                  t        j                  t        j
                  j                  ||||       d{   S 7 H7 w)zSimilar to :meth:`socket.socket.sendmsg`, but async.

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

            NFr  )r   r   r   r  rU   r   rC  rE  s        r&   rC  z_SocketType.sendmsg  sn      $"&"<"<Ye"<"TT	11##%%--   Us"   A(A$AA(A& A(&A()rv   _stdlib_socket.socketrG  rH  rI  rJ  r"   rK  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  r?   rZ  r[  )r   r   r   r>   r=   r   )
r   2Callable[[_stdlib_socket.socket], Awaitable[None]]r   2Callable[Concatenate[_stdlib_socket.socket, P], T]r   r   r   r   r=   r   r\  r]  r^  r_  r`  rb  rc  rd  re  rg  rh  rj  rk  rl  rm  )7rD   rE   rF   r'   r   r   r   r   r   r   r   rn  rU   ro  r   r   r   r   r   r   r   r   r   r   r   rp  rh   ri   rj   r  r  r  r	  r  r  r  r  r   r   r   r  r   wait_readabler  r  r   r%  r)  r+  r,  r1  r8  r=  r   rC  rG   r(   r&   ru   ru     s   	+ ##(( A AP P AE==&)=3==	= W W&)26@C	  "D D 	D
 #D D 
D. (+>+C+CS'I *,7 ||wgn&;&;WE	0C,C (C (	C
 
C ! !       * *O-
,$..

 	

 

6$C$ ?$ 	$
 $ 
$T /$$e&9&9G.DW\ R
 ,""E$7$7D  CD	!"	!,/	!<?	!	! 1'')<)<I  45	9"	9-0	93	9 0&&(;(;H  CD	7"	7,/	7<?	71	7 5++U-@-@M ||wgn&;&;YG OPV#&V69VHKVPV 3!!))5+>+>D
 ||wgn&;&;^L
 %& 	T+T "T 	T
 OT 8!!..0C0CQU
 R+""E$7$7D )J	  '*7X	  N!!((2rB
 C
$ ||wgn&;&;YG 
%%--B	G <>.2	'	 9	 		
 ,	 	 
H		 HMr(   ru   )rH   HostnameResolver | Noner=   r  )rJ   SocketFactory | Noner=   r  )r   r   r   r   )rf   zbytes | str | Nonerg   zbytes | str | int | Nonerh   r   ri   r   rj   r   rk   r   r=   z]list[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int]]])ro   z+tuple[str, int] | tuple[str, int, int, int]rk   r   r=   ztuple[str, str])rr   r`   r=   r   )rv   r  r=   rs   )
r~   r   rh   AddressFamily | intri   SocketKind | intrj   r   r=   rs   )r   r   r=   rs   )rh   r   ri   r   rj   r   r=   ztuple[SocketType, SocketType])
rh   r  ri   r  rj   r   r   rL  r=   rs   )
rh   r  r   r  rj   r   r   rL  r=   z1tuple[AddressFamily | int, SocketKind | int, int])F)r   r  r   r  r   r>   r=   z3Callable[Concatenate[_SocketType, P], Awaitable[T]])r   r   rh   r   rj   r   r   z
bool | intr   r   r   r>   r=   r   )U
__future__r   r   r  r   rU   r   operatorr   r   r   typingr   r   r	   r
   r   r   r   r   r   idnarc   r/   
trio._utilr   r   r   r   collections.abcr   typesr   typing_extensionsr   r   r   r   r   _abcr   r   r   r   r   __annotations__r    RunVarrI   rK   rP   rR   AI_NUMERICHOSTAI_NUMERICSERVr_   r^   rn   rq   rw   r}   r   SOCK_STREAMr   r   r   r   r   r   r   r   r|   getattr_SOCK_TYPE_MASKr   r   rs   __dict__itemsrr   obj
startswithr   stdlib_type
stdlib_objru   rG   r(   r&   <module>r     s   " 	   
  ,
 
 
   & (#QQ5#A CL y  F 4@5<<@S3T	0 T6BellCS6T3 T.D(B --0M0MM G

G

"G
 G
 	G

 G
 G
G
T
9
BE

*& B7 #1"8"8+77	OOO O 	O
 O 8O <<7'.+> N$$r2>B ?B
 <<7GYE9"**M#'M='sM478GY8^22C78E98 !!B;#((
A
A

A 
A #	
A <
A B7"0"8"8+77	--
- - 	-
 - 8-0      	 
 7 T NOQ/nna01 :?  9	NGGG G
 G G G 	GTI& I&Z $$**, %ID#t%,,n.G.GG [$5
*,,
 	$$CK%g* gr(   