
    i                       % S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
  S SKJrJrJrJrJrJrJr  S SKrS SKrS SKJr  SSKJr  \(       a*  S S	KJrJrJr  S S
KJ r   S SK!J"r"J#r#J$r$  SSK%J&r&J'r'  \#" S5      r(\" S5      r)\r*S\+S'    " S S5      r,\RZ                  " S5      r.S\+S'   \RZ                  " S5      r/S\+S'       S6S jr0    S7S jr1\Rd                  r3\3\4" \SS 5      -  r3    S8             S9S jjr5      S:S jr6S;S jr7S<S  jr8\" \Rr                  S!S!S"9\Rt                  \Rv                  S 4         S=S# jj5       r9\Rx                  S$:X  d  \(       d(  \=" \S%5      (       a  \" \R|                  S!S!S"9S>S& j5       r>\Rx                  S$:X  a  \?r@S\+S''   \?rAS\+S('   \Rt                  rBO(SrBS)\+S*'   \?\	-  S-  r@S\+S''   \R                  \?-  rAS\+S('   \" \R                  S!S!S"9\B\
Rv                  S 4       S?S+ jj5       rC\" \R                  S!S!S"9\Rt                  \Rv                  S S4         S@S, jj5       r          SAS- jrD\4" \S.S 5      \4" \S/S 5      -  ) rE SB       SCS0 jjrF              SDS1 jrG " S2 S5      rH\HR                  R                  5        H  u  rKrL\KR                  S35      (       d  \LR                  (       a  M/  \R                  \R                  4 H)  rO\4" \O\KS5      rP\P(       d  M  \PR                  (       d  M)    O   Mv  \PR                  \LlN        M      " S4 S5\H5      rQg)E    )annotationsN)index)AddressFamily
SocketKind)TYPE_CHECKINGAnyConcatenateSupportsIndex	TypeAliasTypeVaroverload)wraps   )_core)	AwaitableCallableIterable)TracebackType)Buffer	ParamSpecSelf)HostnameResolverSocketFactoryPTr   AddressFormatc                  X    \ rS rSr S   S	S jjrS
S jrSS jr        SS jrSrg)	_try_sync=   Nc                    Xl         g N_blocking_exc_override)selfblocking_exc_overrides     9C:\des-py\RoboSAPF\venv\Lib\site-packages\trio/_socket.py__init___try_sync.__init__>   s
     '<#    c                ^    U R                   c  [        U[        5      $ U R                  U5      $ r!   )r#   
isinstanceBlockingIOError)r$   excs     r&   _is_blocking_io_error_try_sync._is_blocking_io_errorD   s,    &&.c?33..s33r)   c                \   #    [         R                  R                  5       I S h  vN   g  N7fr!   )triolowlevelcheckpoint_if_cancelledr$   s    r&   
__aenter___try_sync.__aenter__J   s     mm33555s   ",*,c                   #    Ub  U R                  U5      (       a  g[        R                  R                  5       I S h  vN   g N7f)NTF)r.   r1   r2   cancel_shielded_checkpointr$   exc_type	exc_value	tracebacks       r&   	__aexit___try_sync.__aexit__M   s@       T%?%?	%J%J --::<<< =s   <AAAr"   r!   )r%   z&Callable[[BaseException], bool] | NonereturnNoner-   BaseExceptionr?   boolr?   r@   )r:   type[BaseException] | Noner;   BaseException | Noner<   TracebackType | Noner?   rC   )	__name__
__module____qualname____firstlineno__r'   r.   r5   r=   __static_attributes__ 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    [         R                  S5      n[         R                  U 5        U$ )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)rO   getset)rN   olds     r&   set_custom_hostname_resolverrV   e   s$    : --
CMM#$Jr)   c                Z    [         R                  S5      n[         R                  U 5        U$ )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)rQ   rS   rT   )rP   rU   s     r&   set_custom_socket_factoryrX      s'    0 

d
#C'Jr)   AI_NUMERICSERVc                V  #    SS jn[        U5       ISh  vN   [        R                  " U UUUUU[        -  5      sSSS5      ISh  vN   $  N7 N! , ISh  vN  (       d  f       O= f[	        U [
        5      (       a8   U R                  S5      n O%! [         a    [        R                  " U SS9n  Of = f[        R                  S5      nUb  UR                  XX#XE5      I Sh  vN  $ [        R                  R                  [        R                  U UUUUUSS9I Sh  vN  $ 7f)a,  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                ~    [        U [        R                  5      =(       a    U R                  [        R                  :H  $ r!   )r+   _stdlib_socketgaierrorerrno
EAI_NONAME)r-   s    r&   numeric_only_failure)getaddrinfo.<locals>.numeric_only_failure   s.    sN334 7		^666	
r)   NasciiT)uts46abandon_on_cancelrA   )r   r\   getaddrinfo_NUMERIC_ONLYr+   strencodeUnicodeEncodeError_idnarO   rS   r1   	to_threadrun_sync)hostportfamilytypeprotoflagsr`   hrs           r&   rf   rf      s    H
 -..))M!
 /....." $	2;;w'D! 	2 <<D1D		2
 
t	B	~^^DeKKKK^^,,&&" - 	
 	
 	
 		
s   D)AD)"AD)	A
D)D)A*AA*&D)B D)B74D)6B771D)(C+):D)#D&$D)c                   #    [         R                  S5      nUb  UR                  X5      I Sh  vN $ [        R                  R                  [        R                  U USS9I Sh  vN $  N: N7f)zLook 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`.

NTrd   )rO   rS   getnameinfor1   rl   rm   r\   )sockaddrrs   rt   s      r&   rv   rv     si      
t	B	~^^H444^^,,&&"	 - 
 
 	
 5
s!   -A.A*5A.%A,&A.,A.c                x   #    [         R                  R                  [        R                  U SS9I Sh  vN $  N7f)zcLook up a protocol number by name. (Rarely used.)

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

Trd   N)r1   rl   rm   r\   getprotobyname)names    r&   ry   ry     s<      ((%% )    s   1:8:
SocketTypec                    [        U 5      $ )zUConvert a standard library :class:`socket.socket` object into a Trio
socket object.

)_SocketType)socks    r&   from_stdlib_socketr   0  s    
 tr)   rM   assignedupdatedc                t    [        XU[        U 5      5      u  pn[        [        R                  " XXC5      5      $ )z=Like :func:`socket.fromfd`, but returns a Trio socket object.)_sniff_sockopts_for_filenor   r   r\   fromfd)fdrp   rq   rr   type_s        r&   r   r   8  s4     6fE5QS9UF5n33BMNNr)   win32	fromsharec                @    [        [        R                  " U 5      5      $ )z@Like :func:`socket.fromshare`, but returns a Trio socket object.)r   r\   r   )infos    r&   r   r   H  s     ".":":4"@AAr)   FamilyTTypeTr@   FamilyDefaultc                `    [         R                  " XU5      u  p4[        U5      [        U5      4$ )zLLike :func:`socket.socketpair`, but returns a pair of Trio socket
objects.

)r\   
socketpairr   )rp   rq   rr   leftrights        r&   r   r   X  s.     !++F%@KDt$&8&?@@r)   c                    Uc+  [         R                  S5      nUb  UR                  XU5      $ O[        U UUU5      u  pn[        R                  " XX#5      n[        U5      $ )zCreate a new Trio socket, like :class:`socket.socket`.

This function's behavior can be customized using
:func:`set_custom_socket_factory`.

N)rQ   rS   socketr   r\   r   )rp   rq   rr   filenosfstdlib_sockets         r&   r   r   f  sp     ~  &>99V511  9	
e #))&FMm,,r)   c                .   [         R                  S:w  a  XU4$ SSKJnJnJnJn  [        R                  " XX#S9n UR                  Xt5      n UR                  Xu5      nUR                  Xv5      nUR                  5         XU4$ ! UR                  5         f = f)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   r\   
getsockoptdetach)	rp   r   rr   r   r   r   r   r   sockobjs	            r&   r   r     s     ||we##  ##F5HG##J:"":;"":7 	% 	s   3B BSOCK_NONBLOCKSOCK_CLOEXECc                   ^ ^ [        T SSS9S	U U4S jj5       nST R                   S3Ul        U(       a#  U=R                  ST R                   S3-  sl        U$ )
N)rH   rM   r   c                N   >#    U R                   " TT/UQ70 UD6I S h  vN $  N7fr!   )_nonblocking_helper)r$   argskwargsfnwait_fns      r&   wrapper1_make_simple_sock_method_wrapper.<locals>.wrapper  s)     --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$   r}   r   P.argsr   P.kwargsr?   r   )_wrapsrH   __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                 #    U[         R                  :X  a0  [        U[        5      (       a  [	        U5      S:X  d  [        S5      eOU[         R                  :X  a9  [        U[        5      (       a  S[	        U5      s=::  a  S::  d  O  [        S5      eOm[        [         S5      (       aV  U[         R                  :X  aB  [        U[        [        [        R                  45      (       d   e[        R                  " U5      $ U$ Utpgn[        U[        5      (       a  Ub   [         R                  " X5        U$ US:X  a  S nUS:X  a  SnS	n	U(       a  U	[         R$                  -  n	U[         R                  :X  a  U(       d  U	[         R&                  -  n	[)        XgXX)5      I S h  vN n
[	        U
5      S
:  d   eU
tGt pnU[         R                  :X  aU  [+        U5      n[	        U5      S:X  d   e[	        U5      S:  a  US   US'   [	        U5      S:  a  US   US'   [        U5      $ U$ ! [         ["        4 a     GNf = f N7f)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      )r\   AF_INETr+   tuplelen
ValueErrorAF_INET6hasattrr   rh   bytesosPathLikefspathint	inet_ptonOSError	TypeError
AI_PASSIVEAI_V4MAPPEDrf   list)r   rp   rr   ipv6_v6onlyaddresslocalrn   ro   _rs   gai_resnormedlist_normeds                r&   _resolve_address_nocpr     s     ''''5))W1BEFF 2C	>**	*'5))c'l1Ga1GO  2H 
	+	+.:P:P0P'C#<====yy!! ND $!1	$$V2 Nrz} E*** (((+++F5HHG w<1La1 (((6l6{aw<1$QZKNw<1$QZKN[!!MK # 		* Is8   DI H' 4A,I  H>!BI 'H;7I :H;;I c                    ^  \ rS rSrS3U 4S jjrS4S jrS4S jrS5S jrS5S jr\	S6S j5       r
\	S7S j5       r
 S8       S9S	 jjr
\	S:S
 j5       r\	          S;S j5       r S8         S<S jjr\" \R                  S5      4S=S jjrS>S jrS?S jr\R&                  S:X  d  \(       d  \" \R,                  S5      (       a  S@S jrSAS jr        SBS jr\SCS j5       r\SDS j5       r\S4S j5       r\S>S j5       rSES jrSFS jr S3S jr!SGS jr"SHS jr#S>S jr$S3S  jr%SIS! jr&SGS" jr'SJSKS# jjr(  SL       SMS$ jjr) SJ     SNS% jjr*  SL       SOS& jjr+\R&                  S:w  d  \(       d(  \" \R,                  S'5      (       a    SL       SPS( jjr,\R&                  S:w  d  \(       d(  \" \R,                  S)5      (       a    SL       SQS* jjr-SJSRS+ jjr.\	      SSS, j5       r/\	        STS- j5       r/SUS. jr/\R&                  S:w  d  \(       dV  \" \R,                  S/5      (       a8  \0" \R,                  Rb                  S0S0S19   SV         SWS2 jj5       r1S0r2U =r3$ S0r2U =r3$ S0r2U =r3$ )Xr{   i"  c                \   > [         TU ]  5         [        U 5      [        L a  [	        S5      eg )Nz`SocketType is an abstract class; use trio.socket.socket if you want to construct a socket object)superr'   rq   r{   r   )r$   	__class__s    r&   r'   SocketType.__init__#  s1    :#4  $r)   c                    [         er!   NotImplementedErrorr4   s    r&   r   SocketType.detach-      !!r)   c                    [         er!   r   r4   s    r&   r   SocketType.fileno0  r   r)   c                    [         er!   r   r4   s    r&   getpeernameSocketType.getpeername3  r   r)   c                    [         er!   r   r4   s    r&   getsocknameSocketType.getsockname6  r   r)   c                    g r!   rM   r$   leveloptnames      r&   r   SocketType.getsockopt9      ;>r)   c                    g r!   rM   r$   r   r   buflens       r&   r   r   <      JMr)   c                    [         er!   r   r   s       r&   r   r   ?  
     "!r)   c                    g r!   rM   r$   r   r   values       r&   
setsockoptSocketType.setsockoptG      QTr)   c                    g r!   rM   r$   r   r   r   optlens        r&   r   r   J       r)   c                    [         er!   r   r   s        r&   r   r   S  s
     "!r)      c                    [         er!   r   r$   backlogs     r&   listenSocketType.listen\  r   r)   c                    [         er!   r   r4   s    r&   get_inheritableSocketType.get_inheritable_  r   r)   c                    [         er!   r   r$   inheritables     r&   set_inheritableSocketType.set_inheritableb  r   r)   r   sharec                    [         er!   r   r$   
process_ids     r&   r
  SocketType.sharei  s    %%r)   c                    [         er!   r   r4   s    r&   	__enter__SocketType.__enter__l  r   r)   c                    [         er!   r   r9   s       r&   __exit__SocketType.__exit__o  r   r)   c                    [         er!   r   r4   s    r&   rp   SocketType.familyw      !!r)   c                    [         er!   r   r4   s    r&   rq   SocketType.type{  r  r)   c                    [         er!   r   r4   s    r&   rr   SocketType.proto  r  r)   c                    [         e)zBReturn True if the socket has been shut down with the SHUT_WR flagr   r4   s    r&   did_shutdown_SHUT_WRSocketType.did_shutdown_SHUT_WR  s
     "!r)   c                    [         er!   r   r4   s    r&   __repr__SocketType.__repr__  r   r)   c                    [         er!   r   r4   s    r&   dupSocketType.dup  r   r)   c                    [         er!   r   r4   s    r&   closeSocketType.close  r   r)   c                   #    [         e7fr!   r   r$   r   s     r&   bindSocketType.bind       !!   	c                    [         er!   r   r$   flags     r&   shutdownSocketType.shutdown  r   r)   c                    [         e)zpReturn True if the socket is readable. This is checked with `select.select` on Windows, otherwise `select.poll`.r   r4   s    r&   is_readableSocketType.is_readable  r  r)   c                   #    [         e7f)zIConvenience method that calls trio.lowlevel.wait_writable for the object.r   r4   s    r&   wait_writableSocketType.wait_writable  s     !!r-  c                   #    [         e7fr!   r   r4   s    r&   acceptSocketType.accept  r,  r-  c                   #    [         e7fr!   r   r)  s     r&   connectSocketType.connect  r,  r-  c                   [         er!   r   r$   r   rs   s      r&   recvSocketType.recv  r   r)   c                    [         er!   r   r$   buffernbytesrs   s       r&   	recv_intoSocketType.recv_into  r   r)   c                   [         er!   r   r$   bufsizers   s      r&   recvfromSocketType.recvfrom  r   r)   c                    [         er!   r   rD  s       r&   recvfrom_intoSocketType.recvfrom_into  r   r)   recvmsgc                   [         er!   r   r$   rK  
ancbufsizers   s       r&   rQ  SocketType.recvmsg  
     &%r)   recvmsg_intoc                   [         er!   r   r$   buffersrT  rs   s       r&   rW  SocketType.recvmsg_into  rV  r)   c                   [         er!   r   r$   r   rs   s      r&   sendSocketType.send  r   r)   c                  #    g 7fr!   rM   r$   datar   s      r&   sendtoSocketType.sendto  
         c                  #    g 7fr!   rM   r$   rb  rs   r   s       r&   rc  rd    
      rf  c                   #    [         e7fr!   r   )r$   r   s     r&   rc  rd    r,  r-  sendmsgrM   r   c                  #    [         e7fr!   r   r$   rZ  ancdatars   r   s        r&   rk  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   
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   ru  r?   r@   r   r   r?   r@   r?   rC   r  rC   r?   r@   r  r   r?   r   r?   r   r:   rE   r;   rF   r<   rG   r?   r@   r?   r   r?   r   r?   rh   r?   r{   r   r   r?   r@   r0  r   r?   r@   r?   z tuple[SocketType, AddressFormat]r   r   r   rs   r   r?   zAwaitable[bytes]r   r   rE  r   rF  r   rs   r   r?   Awaitable[int]rK  r   rs   r   r?   z&Awaitable[tuple[bytes, AddressFormat]]rE  r   rF  r   rs   r   r?   z$Awaitable[tuple[int, AddressFormat]]rK  r   rT  r   rs   r   r?   zBAwaitable[tuple[bytes, list[tuple[int, int, bytes]], int, object]]rZ  Iterable[Buffer]rT  r   rs   r   r?   z@Awaitable[tuple[int, list[tuple[int, int, bytes]], int, object]]r   r   rs   r   r?   r  rb  r   r   !tuple[object, ...] | str | Bufferr?   r   rb  r   rs   r   r   r  r?   r   r   objectr?   r   rM   r   N
rZ  r  rn  z!Iterable[tuple[int, int, Buffer]]rs   r   r   zAddressFormat | Noner?   r   )4rH   rI   rJ   rK   r'   r   r   r   r   r   r   r   minr\   	SOMAXCONNr   r  r  r   r   r   r   r   r
  r  r  propertyrp   rq   rr   r  r   r#  r&  r*  r1  r4  r7  r:  r=  rA  rG  rL  rO  rQ  rW  r^  rc  r   rk  rL   __classcell__)r   s   @r&   r{   r{   "  s/   """" > >M M "	"" " 	"
 
" T T  	
  
  """ " #	"
 " 
" %((@(@#$F """ ||wgn&;&;WEE	&""," (" (	"
 
" " " " " " " " """"""""""" 	"" " 	"
 
" "" "
 
0" 	"" " 	"
 
." ||wgn&;&;YGG  		&	& 	& 		& P	& ||wgn&;&;^LL  		&%	& 	& 		& N	&"  3
 
    3	 
 " ||wgn&;&;YGG 
%%--B	G :<,0	&%	& 7	& 		&
 *	& 	& 
H	&	 HMr)   __c                  4   \ rS rSrS9S jrS:S jrS:S jrS;S jrS;S jr\	S<S j5       r
\	S=S j5       r
 S>       S?S
 jjr
\	S@S j5       r\	          SAS j5       r S>         SBS jjr\" \R                  S5      4SCS jjrSDS jrSES jr\R&                  S:X  d  \(       d  \" \R,                  S5      (       a  SFS jrSGS jr        SHS jr\SIS j5       r\SJS j5       r\S:S j5       r\SDS j5       rSKS jrSLS jr SMS jr!SNS jr"SOS jr#SDS  jr$SMS! jr%      SPS" jr&          SQS# jr'\(" \R,                  RR                  \*RV                  5      r,SRS$ jr)SNS% jr-\(       a  SSSTS& jjr.\(" \R,                  R\                  \*RV                  5      r.\(       a    SU       SVS' jjr/\(" \R,                  R^                  \*RV                  5      r/\(       a   SS     SWS( jjr0\(" \R,                  R`                  \*RV                  5      r0\(       a    SU       SXS) jjr1\(" \R,                  Rb                  \*RV                  5      r1\R&                  S:w  d  \(       dU  \" \R,                  S*5      (       a=  \(       a    SU       SYS+ jjr2\(" \R,                  Rd                  \*RV                  S,S-9r2\R&                  S:w  d  \(       dU  \" \R,                  S.5      (       a=  \(       a    SU       SZS/ jjr3\(" \R,                  Rf                  \*RV                  S,S-9r3\(       a  SSS[S0 jjr4\(" \R,                  Rh                  \*RJ                  5      r4\	      S\S1 j5       r5\	        S]S2 j5       r5\6" \R,                  Rj                  S3S3S49S^S5 j5       r5\R&                  S:w  d  \(       dP  \" \R,                  S65      (       a5  \6" \R,                  Rn                  S3S3S49   S_         S`S7 jj5       r7S8r8g	S8r8g	S8r8g	)ar}   i  c                    [        U5      [        R                  La"  [        S[        U5      R                   S35      eXl        U R
                  R                  S5        SU l        g )Nz.expected object of type 'socket.socket', not ''F)rq   r\   r   r   rH   _socksetblocking_did_shutdown_SHUT_WR)r$   r~   s     r&   r'   _SocketType.__init__  s\    :^222 @dATAT@UUVW  


u%%*"r)   c                6    U R                   R                  5       $ r!   )r  r   r4   s    r&   r   _SocketType.detach#      zz  ""r)   c                6    U R                   R                  5       $ r!   )r  r   r4   s    r&   r   _SocketType.fileno&  r  r)   c                6    U R                   R                  5       $ r!   )r  r   r4   s    r&   r   _SocketType.getpeername)      zz%%''r)   c                6    U R                   R                  5       $ r!   )r  r   r4   s    r&   r   _SocketType.getsockname,  r  r)   c                    g r!   rM   r   s      r&   r   _SocketType.getsockopt/  r   r)   c                    g r!   rM   r   s       r&   r   r  2  r   r)   Nc                v    Uc  U R                   R                  X5      $ U R                   R                  XU5      $ r!   )r  r   r   s       r&   r   r  5  s5     >::((88zz$$UV<<r)   c                    g r!   rM   r   s       r&   r   _SocketType.setsockopt?  r   r)   c                    g r!   rM   r   s        r&   r   r  B  r   r)   c                    Uc*  Uc  [        S5      eU R                  R                  XU5      $ Ub  [        SU< S35      eU R                  R                  XX45      $ )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   r  K  sp     >}a  ::((??6ui?de  zz$$UUCCr)   r   c                8    U R                   R                  U5      $ r!   )r  r   r   s     r&   r   _SocketType.listena  s    zz  ))r)   c                6    U R                   R                  5       $ r!   )r  r  r4   s    r&   r  _SocketType.get_inheritabled  s    zz))++r)   c                8    U R                   R                  U5      $ r!   )r  r  r  s     r&   r  _SocketType.set_inheritableg  s    zz))+66r)   r   r
  c                8    U R                   R                  U5      $ r!   )r  r
  r  s     r&   r
  _SocketType.sharen  s    ::##J//r)   c                    U $ r!   rM   r4   s    r&   r  _SocketType.__enter__q  s    r)   c                :    U R                   R                  XU5      $ r!   )r  r  r9   s       r&   r  _SocketType.__exit__t  s     zz""8	BBr)   c                .    U R                   R                  $ r!   )r  rp   r4   s    r&   rp   _SocketType.family|  s    zz   r)   c                .    U R                   R                  $ r!   )r  rq   r4   s    r&   rq   _SocketType.type  s    zzr)   c                .    U R                   R                  $ r!   )r  rr   r4   s    r&   rr   _SocketType.proto  s    zzr)   c                    U R                   $ r!   )r  r4   s    r&   r   _SocketType.did_shutdown_SHUT_WR  s    )))r)   c                L    [        U R                  5      R                  SS5      $ )Nzsocket.socketztrio.socket.socket)reprr  replacer4   s    r&   r   _SocketType.__repr__  s    DJJ''9MNNr)   c                H    [        U R                  R                  5       5      $ )z"Same as :meth:`socket.socket.dup`.)r}   r  r#  r4   s    r&   r#  _SocketType.dup  s    4::>>+,,r)   c                    U R                   R                  5       S:w  aD  [        R                  R	                  U R                   5        U R                   R                  5         g g )N)r  r   r1   r2   notify_closingr&  r4   s    r&   r&  _SocketType.close  sB    ::"$MM((4JJ %r)   c                  #    U R                  USS9I S h  vN n[        [        S5      (       ad  U R                  [        R                  :X  aF  US   (       a<  [
        R                  R                  U R                  R                  U5      I S h  vN $ [
        R                  R                  5       I S h  vN   U R                  R                  U5      $  N NG N#7f)NTr   r   r   )r   r   r\   rp   r   r1   rl   rm   r  r*  r2   
checkpointr)  s     r&   r*  _SocketType.bind  s     227$2GGNI..~555
 00'JJJ --**,,,::??7++ H K -s4   CCA8CC%C5C6 CCCc                    U R                   R                  U5        U[        R                  [        R                  4;   a  SU l        g g )NT)r  r1  r\   SHUT_WR	SHUT_RDWRr  r/  s     r&   r1  _SocketType.shutdown  s;    

D!N**N,D,DEE)-D& Fr)   c                B   [         R                  S:X  a3  [        R                  " U R                  // / S5      u  n  n[	        U5      $ [        R
                  " 5       nUR                  U R                  [        R                  5        [	        UR                  S5      5      $ )Nr   r   )r   r   selectr  rC   pollregisterPOLLIN)r$   rreadyr   ps       r&   r4  _SocketType.is_readable  sk    <<7"!==$**r2qALFAq<KKM	

4::v}}-AFF1Ir)   c                `   #    [         R                  " U R                  5      I S h  vN   g  N7fr!   )r   r7  r  r4   s    r&   r7  _SocketType.wait_writable  s     !!$**---s   $.,.c          	     (  #    U R                   [        R                  :X  a9  U R                  R	                  [        R
                  [        R                  5      nOSn[        U R                  U R                   U R                  UUUS9I S h  vN $  N7f)NF)r   r   r   )
rp   r\   r   r  r   IPPROTO_IPV6IPV6_V6ONLYr   rq   rr   )r$   r   r   r   s       r&   r   !_SocketType._resolve_address_nocp  s{      ;;.111**//++**K
  K*IIKKJJ#
 
 	
 
s   B	BBBc                D  #    [        5        IS h  vN   U" U R                  /UQ70 UD6sS S S 5      IS h  vN   $  N+ N! , IS h  vN  (       d  f       O= f U" U R                  5      I S h  vN     U" U R                  /UQ70 UD6$ ! [         a     Of = fMD  7fr!   )r   r  r,   )r$   r   r   r   r   s        r&   r   _SocketType._nonblocking_helper  s     8 ;;djj24262 ;;;;; $**%%%$**6t6v66" 	 sn   B =B AB ?B B AA
AB 1A42B 8B B 
BB BB c                \   #    U R                  5       I Sh  vN u  p[        U5      U4$  N7f)z-Like :meth:`socket.socket.accept`, but async.N)_acceptr   )r$   r~   addrs      r&   r:  _SocketType.accept  s*     <<>)
!$'-- *s   ,*,c           	       #     U R                  USS9I S h  vN n[        5        IS h  vN   U R                  R                  U5      sS S S 5      IS h  vN   $  NC N2 N	! , IS h  vN  (       d  f       O= f[        R
                  " U R                  5      I S h  vN    O3! [        R                   a    U R                  R                  5         e f = fU R                  R                  [        R                  [        R                  5      nUS:w  a'  [        USU< S[        R                  " U5       35      eg 7f)NFr  r   zError connecting to z: )r   r   r  r=  r   r7  r1   	Cancelledr&  r   r\   r   SO_ERRORr   r   strerror)r$   r   errs      r&   r=  _SocketType.connect  s     
;	 66we6LLG {{` zz))'2a #{{ M"{{{f %%djj111~~ 	 JJ	 jj##N$=$=~?V?VW!8#!5g[2;;sCSBTUVV s   D>B% AB% AB% A!	B% AB% D>B% B% B% !A8'A*(A84*B% B!B% $D>%0CA)D>c                   g r!   rM   r@  s      r&   rA  _SocketType.recva      Cr)   c                   g r!   rM   rD  s       r&   rG  _SocketType.recv_inton  s     !r)   c                   g r!   rM   rJ  s      r&   rL  _SocketType.recvfrom  s    
 69r)   c                   g r!   rM   rD  s       r&   rO  _SocketType.recvfrom_into  s     47r)   rQ  c                   g r!   rM   rS  s       r&   rQ  _SocketType.recvmsg  s	     VYr)   T)r   rW  c                   g r!   rM   rY  s       r&   rW  _SocketType.recvmsg_into  s	     TWr)   c                   g r!   rM   r]  s      r&   r^  _SocketType.send  r  r)   c                  #    g 7fr!   rM   ra  s      r&   rc  _SocketType.sendto  re  rf  c                  #    g 7fr!   rM   rh  s       r&   rc  r    ri  rf  rM   r   c                   #    [        U5      nU R                  US   SS9I Sh  vN US'   U R                  " [        R                  [
        R                  R                  /UQ76 I Sh  vN $  NI N7f)z3Similar to :meth:`socket.socket.sendto`, but async.r  Fr  N)r   r   r   r   r7  r\   r   rc  )r$   r   	args_lists      r&   rc  r    sw     
 J	"88b8OO	" --!!((
 
 
 	
 P
s"   "A2A.AA2)A0*A20A2rk  c                  #    Ub  U R                  USS9I Sh  vN nU R                  [        R                  [        R
                  R                  UUUU5      I Sh  vN $  NH N7f)zSimilar to :meth:`socket.socket.sendmsg`, but async.

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

NFr  )r   r   r   r7  r\   r   rk  rm  s        r&   rk  _SocketType.sendmsg  sl      " $ : :7% : PP11##%%--   Qs"   A&A"AA&A$A&$A&)r  r  )r~   _stdlib_socket.socketr?   r@   rp  rq  rr  rs  r!   rt  rv  rw  rx  ry  rz  r{  r|  r}  r~  r  r  r  r  rD   r  r  )r   r   r   rC   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  r  r  r  r  r  r  r  r  r  r  )9rH   rI   rJ   rK   r'   r   r   r   r   r   r   r   r  r\   r  r   r  r  r   r   r   r   r   r
  r  r  r  rp   rq   rr   r  r   r#  r&  r*  r1  r4  r7  r   r   r   r:  r   wait_readabler  r=  rA  rG  rL  rO  rQ  rW  r^  rc  r   rk  rL   rM   r)   r&   r}   r}     s   	+ ##(( > >M M "	== = 	=
 
= T T  	
  
  "DD D #	D
 D 
D, %((@(@#$F *,7 ||wgn&;&;WE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G
 #$	YY  Y 	Y TY 3!!))
 ||wgn&;&;^LL
 #$	W)W  W 	W RW 8!!..
 O+""D  3
 
    3	 
  N!!((2rB
 C
$ ||wgn&;&;YGG 
%%--B	G :<,0	%	 7	 		
 *	 	 
H		 HMr)   r}   )rN   HostnameResolver | Noner?   r  )rP   SocketFactory | Noner?   r  )r   r   r   r   )rn   zbytes | str | Nonero   zbytes | str | int | Nonerp   r   rq   r   rr   r   rs   r   r?   zqlist[tuple[AddressFamily, SocketKind, int, str, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]])rw   z+tuple[str, int] | tuple[str, int, int, int]rs   r   r?   ztuple[str, str])rz   rh   r?   r   )r~   r  r?   r{   )
r   r
   rp   AddressFamily | intrq   SocketKind | intrr   r   r?   r{   )r   r   r?   r{   )rp   r   rq   r   rr   r   r?   ztuple[SocketType, SocketType])
rp   r  rq   r  rr   r   r   ru  r?   r{   )
rp   r  r   r  rr   r   r   ru  r?   z1tuple[AddressFamily | int, SocketKind | int, int])F)r   r  r   r  r   rC   r?   z3Callable[Concatenate[_SocketType, P], Awaitable[T]])r   r   rp   r   rr   r   r   z
bool | intr   r   r   rC   r?   r   )R
__future__r   r   r  r   r\   r   operatorr   r   r   typingr   r   r	   r
   r   r   r   idnark   r1   
trio._utilr   r   r   r   collections.abcr   r   r   typesr   typing_extensionsr   r   r   _abcr   r   r   r   r   __annotations__r   RunVarrO   rQ   rV   rX   AI_NUMERICHOSTrg   getattrrf   rv   ry   r   r   r   SOCK_STREAMr   r   r   r   r   r   r   r   r   _SOCK_TYPE_MASKr   r   r{   __dict__itemsrz   obj
startswithr   stdlib_type
stdlib_objr}   rM   r)   r&   <module>r)     s   " 	   
  ,     & ==#995#A CL y  H 49<<@S3T	0 T6;llCS6T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},t3GY3%,,s2E92 !!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
:*,,, H
 	$$CK -M* Mr)   