
    ,h                    V   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r.d 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<   	 	 	 	 d6dZ1	 	 	 	 d7dZ2ejf                  Z4e4 e5edd       z  Z4	 	 	 	 d8	 	 	 	 	 	 	 	 	 	 	 	 	 d9dZ6	 	 	 	 	 	 d:dZ7d;dZ8d<d Z9 eejt                  d!d!"      ejv                  ejx                  d f	 	 	 	 	 	 	 	 	 d=d#       Z:ejz                  d$k(  ses% e>ed%      r eej~                  d!d!"      d>d&       Z?ejz                  d$k(  re@ZAde,d'<   e@ZBde,d(<   ejv                  ZCn*dZCd)e,d*<   ee@e	df   ZAde,d'<   eej                  e@f   ZBde,d(<    eej                  d!d!"      eCe
jx                  d f	 	 	 	 	 	 	 d?d+       ZD eej                  d!d!"      ejv                  ejx                  d df	 	 	 	 	 	 	 	 	 d@d,       Z	 	 	 	 	 	 	 	 	 	 dAd-ZE e5ed.d        e5ed/d       z   ZF	 dB	 	 	 	 	 	 	 dCd0ZG	 	 	 	 	 	 	 	 	 	 	 	 	 	 dDd1ZH G d2 d      ZIeIj                  j                         D ]m  \  ZLZMeLj                  d3      seMj                  r$ej                  ej                  fD ]  ZP e5ePeLd      ZQeQseQj                  s n ]eQj                  eM_O        o  G d4 d5eI      ZRy)E    )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                  F    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     N/var/www/html/Resume-Scraper/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_errorC   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__I   s     mm33555s   ",*,c                   K   || j                  |      ryt        j                  j                          d {    y7 w)NTF)r,   r.   r/   cancel_shielded_checkpointr#   exc_type	exc_value	tracebacks       r%   	__aexit__z_try_sync.__aexit__L   s>       T%?%?	%J --::<<< =s   6A >A r!   )r$   z&Callable[[BaseException], bool] | NonereturnNoner+   BaseExceptionr:   boolr:   r;   )r6   type[BaseException] | Noner7   BaseException | Noner8   TracebackType | Noner:   r>   )__name__
__module____qualname__r&   r,   r2   r9    r'   r%   r   r   <   sU     IM<E< 
<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)rH   getset)rG   olds     r%   set_custom_hostname_resolverrO   d   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)rJ   rL   rM   )rI   rN   s     r%   set_custom_socket_factoryrQ      s'    0 

d
#C'Jr'   AI_NUMERICSERVc           
     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_idnarH   rL   r.   	to_threadrun_sync)hostportfamilytypeprotoflagsrY   hrs           r%   r^   r^      s$    H
 -. 
 
))M!

 
 
 
 
 
 
" $	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\   )rH   rL   getnameinfor.   rd   re   rU   )sockaddrrk   rl   s      r%   rn   rn     sm      
t	B	~^^He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=      ((%% )    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'   rF   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}   7  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   G  s     ".":":4"@AAr'   FamilyTTypeTr;   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   W  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)rJ   rL   socketr|   rU   rw   )rh   ri   rj   filenosfstdlib_sockets         r%   r   r   e  sq     ~  &>99VT5118	
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|     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)rC   rF   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   )_wrapsrC   __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               4  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  sxt        d       t        d      t        t         d      rO|t         j                  k(  r<t        |t        t        t        j                  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PathLike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#<==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   DHH A"H>H?BHHHHHc                  B    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                Z    t         |           t        |       t        u 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!   NotImplementedErrorr1   s    r%   r   zSocketType.detach,      !!r'   c                    t         r!   r   r1   s    r%   r   zSocketType.fileno/  r   r'   c                    t         r!   r   r1   s    r%   getpeernamezSocketType.getpeername2  r   r'   c                    t         r!   r   r1   s    r%   getsocknamezSocketType.getsockname5  r   r'   c                     y r!   rF   r#   leveloptnames      r%   r   zSocketType.getsockopt8      ;>r'   c                     y r!   rF   r#   r   r   buflens       r%   r   zSocketType.getsockopt;      JMr'   c                    t         r!   r   r   s       r%   r   zSocketType.getsockopt>  
     "!r'   c                     y r!   rF   r#   r   r   values       r%   
setsockoptzSocketType.setsockoptF      QTr'   c                     y r!   rF   r#   r   r   r   optlens        r%   r   zSocketType.setsockoptI       r'   c                    t         r!   r   r   s        r%   r   zSocketType.setsockoptR  s
     "!r'      c                    t         r!   r   r#   backlogs     r%   listenzSocketType.listen[  r   r'   c                    t         r!   r   r1   s    r%   get_inheritablezSocketType.get_inheritable^  r   r'   c                    t         r!   r   r#   inheritables     r%   set_inheritablezSocketType.set_inheritablea  r   r'   r   sharec                    t         r!   r   r#   
process_ids     r%   r   zSocketType.shareh  s    %%r'   c                    t         r!   r   r1   s    r%   	__enter__zSocketType.__enter__k  r   r'   c                    t         r!   r   r5   s       r%   __exit__zSocketType.__exit__n  r   r'   c                    t         r!   r   r1   s    r%   rh   zSocketType.familyv      !!r'   c                    t         r!   r   r1   s    r%   ri   zSocketType.typez  r   r'   c                    t         r!   r   r1   s    r%   rj   zSocketType.proto~  r   r'   c                    t         )zBReturn True if the socket has been shut down with the SHUT_WR flagr   r1   s    r%   did_shutdown_SHUT_WRzSocketType.did_shutdown_SHUT_WR  s
     "!r'   c                    t         r!   r   r1   s    r%   __repr__zSocketType.__repr__  r   r'   c                    t         r!   r   r1   s    r%   dupzSocketType.dup  r   r'   c                    t         r!   r   r1   s    r%   closezSocketType.close  r   r'   c                   K   t         wr!   r   r#   r   s     r%   bindzSocketType.bind       !!   	c                    t         r!   r   r#   flags     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   r1   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   r1   s    r%   wait_writablezSocketType.wait_writable  s     !!r  c                   K   t         wr!   r   r1   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   r#   r   rk   s      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#   bufsizerk   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&  
ancbufsizerk   s       r%   r*  zSocketType.recvmsg  
     &%r'   recvmsg_intoc                   t         r!   r   r#   buffersr-  rk   s       r%   r/  zSocketType.recvmsg_into  r.  r'   c                   t         r!   r   r#   r   rk   s      r%   sendzSocketType.send  r   r'   c                  K   y wr!   rF   r#   datar   s      r%   sendtozSocketType.sendto           c                  K   y wr!   rF   r#   r8  rk   r   s       r%   r9  zSocketType.sendto        r;  c                   K   t         wr!   r   )r#   r   s     r%   r9  zSocketType.sendto  r  r  sendmsgrF   rx   c                  K   t         wr!   r   r#   r2  ancdatark   r   s        r%   r@  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   rI  r:   r;   r   r   r:   r;   r:   r>   r   r>   r:   r;   r   r   r:   r   r:   r   r6   r@   r7   rA   r8   rB   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   rk   r   r:   zAwaitable[bytes]r   r   r!  r   r"  r   rk   r   r:   Awaitable[int]r&  r   rk   r   r:   z&Awaitable[tuple[bytes, AddressFormat]]r!  r   r"  r   rk   r   r:   z$Awaitable[tuple[int, AddressFormat]]r&  r   r-  r   rk   r   r:   zBAwaitable[tuple[bytes, list[tuple[int, int, bytes]], int, object]]r2  Iterable[Buffer]r-  r   rk   r   r:   z@Awaitable[tuple[int, list[tuple[int, int, bytes]], int, object]]r   r   rk   r   r:   r^  r8  r   r   !tuple[object, ...] | str | Bufferr:   r   r8  r   rk   r   r   rf  r:   r   r   objectr:   r   rF   r   N
r2  rc  rC  z!Iterable[tuple[int, int, Buffer]]rk   r   r   zAddressFormat | Noner:   r   )2rC   rD   rE   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*  r/  r5  r9  r   r@  __classcell__)r   s   @r%   rs   rs   !  s#   """" > >M M "	"" " 	"
 
" T T  	
  
  """ " #	"
 " 
" %((@(@#$F """ ||wgn&;&;WE	&""," (" (	"
 
" " " " " " " " """"""""""" 	"" " 	"
 
" "" "
 
0" 	"" " 	"
 
." ||wgn&;&;YG  		&	& 	& 		& P	& ||wgn&;&;^L  		&%	& 	& 		& N	&"  3
 
    3	 
 " ||wgn&;&;YG 
%%--B	G :<,0	&%	& 7	& 		&
 *	& 	& 
H	&	 HMr'   __c                  2   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sL eej*                  d)      r9e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   rC   _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!   )rt  r   r1   s    r%   r   z_SocketType.detach"      zz  ""r'   c                6    | j                   j                         S r!   )rt  r   r1   s    r%   r   z_SocketType.fileno%  rx  r'   c                6    | j                   j                         S r!   )rt  r   r1   s    r%   r   z_SocketType.getpeername(      zz%%''r'   c                6    | j                   j                         S r!   )rt  r   r1   s    r%   r   z_SocketType.getsockname+  r{  r'   c                     y r!   rF   r   s      r%   r   z_SocketType.getsockopt.  r   r'   c                     y r!   rF   r   s       r%   r   z_SocketType.getsockopt1  r   r'   Nc                x    || j                   j                  ||      S | j                   j                  |||      S r!   )rt  r   r   s       r%   r   z_SocketType.getsockopt4  s9     >::((88zz$$UGV<<r'   c                     y r!   rF   r   s       r%   r   z_SocketType.setsockopt>  r   r'   c                     y r!   rF   r   s        r%   r   z_SocketType.setsockoptA  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   rt  r   r   s        r%   r   z_SocketType.setsockoptJ  sv     >}a  ::((??6ui?de  zz$$UGUFCCr'   r   c                8    | j                   j                  |      S r!   )rt  r   r   s     r%   r   z_SocketType.listen`  s    zz  ))r'   c                6    | j                   j                         S r!   )rt  r   r1   s    r%   r   z_SocketType.get_inheritablec  s    zz))++r'   c                8    | j                   j                  |      S r!   )rt  r   r   s     r%   r   z_SocketType.set_inheritablef  s    zz))+66r'   r   r   c                8    | j                   j                  |      S r!   )rt  r   r   s     r%   r   z_SocketType.sharem  s    ::##J//r'   c                    | S r!   rF   r1   s    r%   r   z_SocketType.__enter__p  s    r'   c                <    | j                   j                  |||      S r!   )rt  r   r5   s       r%   r   z_SocketType.__exit__s  s     zz""8Y	BBr'   c                .    | j                   j                  S r!   )rt  rh   r1   s    r%   rh   z_SocketType.family{  s    zz   r'   c                .    | j                   j                  S r!   )rt  ri   r1   s    r%   ri   z_SocketType.type  s    zzr'   c                .    | j                   j                  S r!   )rt  rj   r1   s    r%   rj   z_SocketType.proto  s    zzr'   c                    | j                   S r!   )rv  r1   s    r%   r  z _SocketType.did_shutdown_SHUT_WR  s    )))r'   c                L    t        | j                        j                  dd      S )Nzsocket.socketztrio.socket.socket)reprrt  replacer1   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   rt  r  r1   s    r%   r  z_SocketType.dup  s    4::>>+,,r'   c                    | j                   j                         dk7  rDt        j                  j	                  | j                          | j                   j                          y y )N)rt  r   r.   r/   notify_closingr
  r1   s    r%   r
  z_SocketType.close  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   rt  r  r/   
checkpointr  s     r%   r  z_SocketType.bind  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)rt  r  rU   SHUT_WR	SHUT_RDWRrv  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   selectrt  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  rt  r1   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   rt  r   IPPROTO_IPV6IPV6_V6ONLYr   ri   rj   )r#   r   r   r   s       r%   r   z!_SocketType._resolve_address_nocp  s|      ;;.111**//++**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   rt  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   rt  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!   rF   r  s      r%   r  z_SocketType.recv`      r'   c                    y r!   rF   r   s       r%   r#  z_SocketType.recv_intom  s     !r'   c                    y r!   rF   r%  s      r%   r'  z_SocketType.recvfrom  s    
 69r'   c                    y r!   rF   r   s       r%   r)  z_SocketType.recvfrom_into  s     47r'   r*  c                    y r!   rF   r,  s       r%   r*  z_SocketType.recvmsg  s	     VYr'   T)r   r/  c                    y r!   rF   r1  s       r%   r/  z_SocketType.recvmsg_into  s	     TWr'   c                    y r!   rF   r4  s      r%   r5  z_SocketType.send  r  r'   c                  K   y wr!   rF   r7  s      r%   r9  z_SocketType.sendto  r:  r;  c                  K   y wr!   rF   r=  s       r%   r9  z_SocketType.sendto  r>  r;  rF   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   r9  )r#   r   	args_lists      r%   r9  z_SocketType.sendto  s{     
 J	"88b8OO	" .T--!!((
 
 
 	
 P
s"   %A5A1AA5,A3-A53A5r@  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   r@  rB  s        r%   r@  z_SocketType.sendmsg  sn      " $ : :7% : PP11##%%--   Qs"   A(A$AA(A& A(&A()rv   _stdlib_socket.socketr:   r;   rD  rE  rF  rG  r!   rH  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  r?   rW  rX  )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   rY  rZ  r[  r\  r]  r_  r`  ra  rb  rd  re  rg  rh  rj  rk  )7rC   rD   rE   r&   r   r   r   r   r   r   r   rl  rU   rm  r   r   r   r   r   r   r   r   r   r   r   rn  rh   ri   rj   r  r  r  r
  r  r  r  r  r   r   r   r  r   wait_readabler  r  r  r#  r'  r)  r*  r/  r5  r9  r   r@  rF   r'   r%   ru   ru     s   	+ ##(( > >M M "	== = 	=
 
= T T  	
  
  "DD D #	D
 D 
D, %((@(@#$F *,7 ||wgn&;&;WE	0C,C (C (	C
 
C ! !       * *O-
,$..

 	

 

8$C$ ?$ 	$
 $ 
$T /$$G
.DW\ O+""D  	! 	! 		!
 	! 	! 1''I 
 	9	9 	9
 4	9 0&&H  	7 	7 		7
 	7 2	7 5++M ||wgn&;&;YG
 #$	YY  Y 	Y TY 3!!))
 ||wgn&;&;^L
 #$	W)W  W 	W RW 8!!..
 O+""D  3
 
    3	 
  N!!((2rB
 C
$ ||wgn&;&;YG 
%%--B	G :<,0	%	 7	 		
 *	 	 
H		 HMr'   ru   )rG   HostnameResolver | Noner:   r  )rI   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:   zqlist[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]])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   rI  r:   rs   )
rh   r  r   r  rj   r   r   rI  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   )S
__future__r   r   r  r   rU   r   operatorr   r   r   typingr   r   r	   r
   r   r   idnarc   r.   
trio._utilr   r   r   r   collections.abcr   r   r   typesr   typing_extensionsr   r   r   r   r   _abcr   r   r   r   r   __annotations__r   RunVarrH   rJ   rO   rQ   AI_NUMERICHOSTr_   getattrr^   rn   rq   rw   r}   r   SOCK_STREAMr   r   r   r   r   r   r   r   r|   _SOCK_TYPE_MASKr   r   rs   __dict__itemsrr   obj
startswithr   stdlib_type
stdlib_objru   rF   r'   r%   <module>r     s   " 	   
  ,    & ==#QQ5#A CL y  H 4@5<<@S3T	0 T6BellCS6T3 T.D(F -- )91= = P

P

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

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