
    'hy                       % S SK Jr  S SKrS SK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  S SKrS SKrSSKJrJr  SSKJrJrJrJr  SS	KJrJrJrJrJ r   SS
K!J"r"J#r#  \(       a`  S SK$J%r%  S SK&J'r'  SSK(J)r)  \*\\\+\,\\*\,\+4   \*\,\+\+\+4   \*\+\-4   4   4   r.S\/S'   \0\.   r1S\/S'   \*\\,\-S4   \\,\-\+S4   \+\+\+\+4   r2S\/S'   O	S\/S'   \3r1\3r2 " S S5      r4\Rj                  SOS j5       r6SPS jr7SPS jr8SQS jr9SPS jr:SPS jr;SPS jr<SPS jr=\R|                  R                  \@" \S5      (       + SS9SPS  j5       rASPS! jrB\SPS" j5       rC\R|                  R                  \R                  S#:g  S$S9SPS% j5       rESPS& jrFSPS' jrGSRS( jrHSPS) jrISPS* jrJ\R|                  R                  S+S,\R                  4\R                  " S-\R                  \S.9/5            SSS/ j5       rOSPS0 jrPSTS1 jrQ\R                  " S2S39 " S4 S55      5       rS\R|                  R                  S6\R                  \S" S7S,S8S9S:94\R                  " \R                  \S" S;S-S<S=S:9\S.9/5      SUS> j5       rTSPS? jrUSPS@ jrV\SPSA j5       rW\SPSB j5       rXSPSC jrYSPSD jrZSQSE jr[SPSF jr\SQSG jr]SPSH jr^SPSI jr_\R|                  R                  \@" \SJ5      (       + SKS9SPSL j5       r`SPSM jraSPSN jrbg)V    )annotationsN)Path)AddressFamily
SocketKind)TYPE_CHECKINGUnioncast   )_coresocket)
binds_ipv6can_create_ipv6creates_ipv6slow)_NUMERIC_ONLYAddressFormat
SocketType_SocketType	_try_sync)assert_checkpointswait_all_tasks_blocked)Callable)	TypeAlias)SocketStreamr   GaiTupleGetAddrInfoResponseGetAddrInfoArgsobjectc                      \ rS rSrSr    SS jr    S	             S
S jjr    S	               SS jjr    S	             SS jjrSr	g)MonkeypatchedGAI6   _orig_getaddrinfo
_responsesrecordc                ,    Xl         0 U l        / U l        g Nr"   )selforig_getaddrinfos     `/var/www/home/psychics-availability/venv/lib/python3.13/site-packages/trio/_tests/test_socket.py__init__MonkeypatchedGAI.__init__9   s     "2  	 .0    c           	         [         R                  " U R                  5      nUR                  XX4XVS9nUR	                  5         UR
                  n	UR                  (       a   eU	$ Nfamilytypeprotoflags)inspect	signaturer#   bindapply_defaultsargskwargs)
r(   hostportr1   r2   r3   r4   sigboundfrozenbounds
             r*   _frozenbindMonkeypatchedGAI._frozenbindH   sV      6 67FUXjj<<r-   c                F    UU R                   U R                  UUUUUUS9'   g r/   )r$   r@   )r(   responser;   r<   r1   r2   r3   r4   s           r*   setMonkeypatchedGAI.setX   s:    &  	  		
r-   c                   U R                  XX4XV5      nU R                  R                  U5        XpR                  ;   a  U R                  U   $ U[        R
                  -  (       a  U R                  XX4XV5      $ [        SU 35      e)Nz%gai called with unexpected arguments )r@   r%   appendr$   stdlib_socketAI_NUMERICHOSTr#   RuntimeError)r(   r;   r<   r1   r2   r3   r4   r>   s           r*   getaddrinfoMonkeypatchedGAI.getaddrinfom   sy       V5H5!OO#??5))]111))$fEQQ!FugNOOr-   N)r)   zaCallable[[str | bytes | None, str | bytes | int | None, int, int, int, int], GetAddrInfoResponse]returnNone)r   r   r   r   )r;   str | bytes | Noner<   str | bytes | int | Noner1   intr2   rQ   r3   rQ   r4   rQ   rM   r   )rC   GetAddrInfoResponse | strr;   rO   r<   rP   r1   rQ   r2   rQ   r3   rQ   r4   rQ   rM   rN   )r;   rO   r<   rP   r1   rQ   r2   rQ   r3   rQ   r4   rQ   rM   rR   )
__name__
__module____qualname____firstlineno__	__slots__r+   r@   rD   rK   __static_attributes__ r-   r*   r    r    6   s=   =I0
0 
0&   ' 	
    
* + ! '	
     
2 P P 'P 	P
 P P P 
#P Pr-   r    c                z    [        [        R                  5      nU R                  [        SUR                  5        U$ )NrK   )r    rH   rK   setattr)monkeypatch
controllers     r*   	monkeygair^      s0    !-";";<J}j6L6LMr-   c            	       #    [        5          [        5        IS h  vN    S S S 5      IS h  vN   S S S 5        [        5          [        R                  " [        5         [        5        IS h  vN   [        e N\ NM! , IS h  vN  (       d  f       Nb= f! , (       d  f       Nk= f N9! , IS h  vN  (       d  f       O= f S S S 5        O! , (       d  f       O= fS S S 5        O! , (       d  f       O= f[        5        IS h  vN    [
        e! , IS h  vN  (       d  f       O= fSS jn [        U 5       IS h  vN    [        e! , IS h  vN  (       d  f       O= f[        5          [        R                  " [
        5         [        U 5       IS h  vN    [
        e! , IS h  vN  (       d  f       O= f S S S 5        O! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f7f)Nc                "    [        U [        5      $ r'   )
isinstance
ValueError)excs    r*   _is_ValueError&test__try_sync.<locals>._is_ValueError   s    #z**r-   )rc   BaseExceptionrM   bool)r   r   pytestraisesKeyErrorBlockingIOErrorrb   )rd   s    r*   test__try_syncrl      s    		;; ; 
 
	]]8$ {{ ;;; 
	 #{{{{ %$$ 
		
 {{ {{+ (( )(( 
	]]?+ 00%% 1000 ,++ 
		sk  G7BA9BA=BA;BG7C(C.B(
/C2B*9B;B=B	BB	B
B%!G7(C*C0B31C=C	C(
C	C(	G7(
C62G7D
G7DD*DD*&G7EG7EE$EE$ G71G&GF
G!F((F?.F1/F?;G	G&
G	G&	G7&
G40G7c                 $   [         R                  [        R                  :X  d   e[         R                  [        R                  :X  d   e[         R                  [        R                  :X  d   e[         R
                  [        R
                  :X  d   eg r'   )tsocket
SOL_SOCKETrH   TCP_NODELAYgaierrorntohsrY   r-   r*   test_socket_has_some_reexportsrs      sh    !9!9999-";";;;;}55555==M/////r-   c           
     8  #    SS jn[        5          [        R                  " SS[        R                  S9I S h  vN nS S S 5        U" W[        R                  [        R                  [        R
                  SS4/5        [        5          [        R                  " SS[        R                  S9I S h  vN nS S S 5        U" U[        R                  [        R                  [        R                  SS4/5        U R                  S	S
SSSSSS9  [        5          [        R                  " SS5      I S h  vN nS S S 5        US	:X  d   eU R                  S   S:X  d   e[        5          [        R                  " [        R                  5       n[        R                  " SSSS9I S h  vN   S S S 5        S S S 5        [        R                  1nUR                  [        R                   5        [#        [        S5      (       a  UR                  [        R$                  5        WR&                  R(                  U;   d   e[        5          [        R                  " [*        5         [        R                  " SS5      I S h  vN   S S S 5        S S S 5        g  GNV! , (       d  f       GN[= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN*! , (       d  f       GN/= f! , (       d  f       GN9= f N{! , (       d  f       N= f! , (       d  f       g = f7f)Nc                X   ^     SS jm    SU4S jjnU" U 5      U" U5      :X  d   eg )Nc                    U u  pp4nXU4$ r'   rY   )gai_tupr1   type__proto
_canonnamesockaddrs         r*   interesting_fields;test_getaddrinfo.<locals>.check.<locals>.interesting_fields   s     ;B7F6x8,,r-   c                @   > U  Vs/ s H  nT" U5      PM     sn$ s  snf r'   rY   )gai_listrw   r|   s     r*   filtered1test_getaddrinfo.<locals>.check.<locals>.filtered   s%     @HHxG&w/xHHHs   )rw   r   rM   zatuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]])r   r   rM   zglist[tuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]rY   )gotexpectedr   r|   s      @r*   checktest_getaddrinfo.<locals>.check   sM    		-		-
		-		I)		I
		I } 2222r-   	127.0.0.112345r2    )r   90  ::1)r   r   r   r   x   hostr<   r   r0   r;   )r   r<   r   r   r   r   EAI_BADHINTSasdf)r   r   r   r   rM   rN   )r   rn   rK   SOCK_STREAMAF_INETIPPROTO_TCP
SOCK_DGRAMAF_INET6IPPROTO_UDPrD   r%   rh   ri   rq   EAI_SOCKTYPEaddEAI_SERVICEhasattrr   valueerrnorJ   )r^   r   resexcinfoexpected_errnoss        r*   test_getaddrinfor      s\    3> 
	''W7CVCVWW 
 
 ####$	
 
	''wW=O=OPP 
	   ""##$	
 MM#wqqMK		''77 
#::B#@@@@ 
	]]7++,%%eW2>>> - 
 ++,O++,w''G001==/111
 
	]]<(%%fg666 ) 
	i X 
	" Q 
	" 8 
	 ? -, 
	" 7 )( 
	s  L(JJJAL
(J(2J%3J(7A LJ=2J:3J=7/L&%K$K%K&K*K$2BLL	K8:K6;K8?L		LJ
J"L%J((
J72L:J==
KLK
K!	K$$
K3.L6K88
L	L		
LLc                 j  #    [         R                  [         R                  -  n [        5          [        R
                  " SU 5      I S h  vN nS S S 5        WS:X  d   e[        5          [        R                  " [        R                  5         [        R
                  " SS5      I S h  vN   S S S 5        S S S 5        [        5          [        R                  " [        R                  5         [        R
                  " SS5      I S h  vN   S S S 5        S S S 5        [         R
                  " SS5      u  p#[        R
                  " SS5      I S h  vN nXU4:X  d   e[        R
                  " S[        R                  5      I S h  vN nUSU4:X  d   e[        R
                  " S[        R                  5      I S h  vN nXS4:X  d   eg  GN! , (       d  f       GN= f GN8! , (       d  f       GN== f! , (       d  f       GNG= f N! , (       d  f       GN= f! , (       d  f       GN= f N N Nt7f)	N)r   i  )r   1234)z
google.comP   r   )	localhostr   r   r   r   80)	rH   NI_NUMERICHOSTNI_NUMERICSERVr   rn   getnameinforh   ri   rq   )
ni_numericr   r;   services       r*   test_getnameinfor     s    --0L0LLJ		''(;ZHH 
'''' 
	]]7++,%%&8!<<< - 
 
	]]7++,%%&7;;; - 

 "--.?CMD ##$5q9
9C/!!!##$5w7M7MN
NC;((((##$5w7M7MN
NC,/ I 
	 = -, 
	 < -, 
	 : O Os   ,H3G	G
GH3(%G5G#(G )G#-G55H3%H,H	HH	H;H3H-5H3H/6H3<H1=H3G
GH3 G##
G2	-G55
H?H3H		
H	H
H*%	H3/H31H3c                   #    [         R                  " 5       u  p[        U [        R                  5      (       a   eU    U   [        R
                  " U 5      n[        U[        R                  5      (       d   eU R                  5       UR                  5       :X  d   eUR                  S5      I S h  vN   UR                  S5      S:X  d   e S S S 5        S S S 5        [        R                  " [        5         [        R
                  " S5        S S S 5         " S S[         R                  5      nU" 5        n[        R                  " [        5         [        R
                  " U5        S S S 5        S S S 5        g  N! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NL= f! , (       d  f       g = f7f)N   x   c                      \ rS rSrSrg))test_from_stdlib_socket.<locals>.MySocketi<  rY   N)rS   rT   rU   rV   rX   rY   r-   r*   MySocketr   <  s    r-   r   )rH   
socketpairra   rn   r   from_stdlib_socketfilenosendrecvrh   ri   	TypeErrorr   )sasbtar   mysocks        r*   test_from_stdlib_socketr   .  s1    %%'FB"g001111	R''+"g001111yy{biik)))ggdmwwqzT!!!  
y	!""1% 
"=''  
v]]9%&&v. & 
 		 R 
"	! &% 
s   ;GF A0E;0E91E;F"G7F(G6F?F.(F?0	G9E;;
F		F
FG
F+'G.
F<	8F??
G	Gc                   #    [         R                  " 5       u  p[        R                  " U R	                  5       U R
                  U R                  U R                  5      nU    U   U   UR	                  5       U R	                  5       :w  d   eUR                  S5      I S h  vN   UR                  S5      S:X  d   e S S S 5        S S S 5        S S S 5        g  N5! , (       d  f       N!= f! , (       d  f       N*= f! , (       d  f       g = f7f)Nr      )
rH   r   rn   fromfdr   r1   r2   r3   r   r   )r   r   r   s      r*   test_from_fdr   D  s     %%'FB			RYY	BB	Ryy{biik)))ggdmwwqzT!!! R RRs`   AD!C:$C)'9C C
!C=C)C:	DC
C&"C))
C7	3C::
DDc            	       #    SS jn [         R                  " 5       u  pU   U   [        R                  " 5        IS h  vN nUR	                  X5        UR	                  X5        S S S 5      IS h  vN   S S S 5        S S S 5        g  NG N! , IS h  vN  (       d  f       N,= f! , (       d  f       N5= f! , (       d  f       g = f7f)Nc                   #    [        S5        U R                  S5      I S h  vN   U R                  S5      I S h  vN S:X  d   eg  N$ N7f)Nzsending hello   hr   )printr   r   )socks    r*   child%test_socketpair_simple.<locals>.childN  s?     oiioYYq\!T))) 	!s    AAAA	A	A)r   r   rM   rN   )rn   r   r   open_nursery
start_soon)r   abnurserys       r*   test_socketpair_simpler   M  sx     *
 DA	
A%%''7u(u( (' '''' Asy   CB5B$B
B$#B
%B$0B1B$5B5=	CB$B$
B!BB!B$$
B2	.B55
C?C	fromsharezwindows only)reasonc                 X  #    [         (       a  [        R                  S:w  a  g [        R                  " 5       u  pU    U   U R                  [        R                  " 5       5      n[        R                  " U5      nU   U R                  5       UR                  5       :w  d   eUR                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   e S S S 5        S S S 5        S S S 5        g  N= N&! , (       d  f       N#= f! , (       d  f       N,= f! , (       d  f       g = f7f)Nwin32r   r   )r   sysplatformrn   r   shareosgetpidr   r   r   r   )r   r   shareda2s       r*   test_fromsharer   Z  s     }0DA	
A%v&88:,,,''$-?d*** 	   " R	 Aso   :D*D=D<9C75C3
6C7C5

C7D"D*	D*3C75C77
DD
D	D
D'#D*c                    #    [         R                  " 5        n [        U [         R                  5      (       d   eU R                  [         R
                  :X  d   e S S S 5        g ! , (       d  f       g = f7fr'   )rn   r   ra   r   r1   r   ss    r*   test_socketr   i  sK     		Q!W//0000xx7??*** 
		s   A5AA$	A5$
A2.A5c                 *  #    [         R                  " [         R                  [         R                  5       n [	        U [         R
                  5      (       d   eU R                  [         R                  :X  d   e S S S 5        g ! , (       d  f       g = f7fr'   )rn   r   r   r   ra   r   r1   r   s    r*   test_socket_v6r   o  s]     	(('*<*<	=!W//0000xx7+++++ 
>	=	=s   4BAB9	B
BBlinuxz
linux onlyc            	       #    SSK Jn JnJnJn  [
        (       a  X4OU 4nU VVs/ s H$  nX#4  H  n[        R                   " XV5      PM     M&     nnnU H  n[        R                   " UR                  5       S9n	U	R                  UR                  :X  d   eU	R                  UR                  :X  d   eU	R                  5         [        R                  " UR                  5       X5      n
U
R                  UR                  :X  d   eU
R                  UR                  :X  d   eU
R                  5         UR                  5         M     g s  snnf 7f)Nr   )r   r   r   r   r   )r   r   r   r   r   r   rH   rn   r   r1   r2   detachr   close)r   r   r   r   familiesr1   rx   socketsr   tsocket_sockettsocket_from_fds              r*   test_sniff_sockoptsr   v  s    AA '6o"G:H F .E 	V+. 	,  
  v}}?$$555""fkk111 "..'O%%666##v{{222 s   #E
+EC:E
c                   #    [         R                  " 5       n U  nXL d   e[        U R                  5       [        5      (       d   eU R                  5       (       a   eU R                  S5        U R                  5       (       d   eU R                  [         R                  [         R                  S5        U R                  [         R                  [         R                  5      (       a   eU R                  [         R                  [         R                  S5        U R                  [         R                  [         R                  5      (       d   e S S S 5        U R                  5       S:X  d   e[        U 5        [         R                  " 5        n U R                  5       nU R                  5       U:X  d   eU R                  5       S:X  d   e S S S 5        [         R                  " 5       n U R                  5       S:  d   eU R                  5         U R                  5       S:X  d   eS[        U 5      ;   d   eS[        U 5      ;   d   eS[        U 5      ;   d   e[        R                   " ["        5         U R$                    S S S 5        [&        R                  " 5       n[         R(                  " U5      n U R*                  UR*                  :X  d   eU R,                  UR,                  :X  d   eU R.                  UR.                  :X  d   eU R                  5         g ! , (       d  f       GN= f! , (       d  f       GNd= f! , (       d  f       N= f7f)NTFr   r   r1   r   
setsockopt)rn   r   ra   r   rQ   get_inheritableset_inheritabler   r   rp   
getsockoptreprr   r   dirrh   ri   AttributeErrorr   rH   r   r2   r1   r3   )r   cm_enter_valuefdstdlib_socks       r*   test_SocketType_basicsr     sw    >>D	%%%$++-----''))))T"##%%%%++W-@-@%H??7#6#68K8KLLLL++W-@-@$Gw22G4G4GHHHH 
 ;;=B 	J 
	T[[]{{}"""{{}""" 
 >>D;;=AJJL;;=B
 s4y   SY3t9$$$ 
~	&		 
'  &&(K%%k2D99(((((;;+,,,,,::*****JJL] 
$ 
	& 
'	&sO   M
D3L>M
=L'
B&M
0L9=BM

L$M
'
L61M
9
MM
c                    #    [         R                  " 5       n U  n[        U 5        S S S 5        g ! , (       d  f       g = f7fr'   )rn   r   setsockopt_tests)r   _s     r*   test_SocketType_setsockoptr     s'     >>D	 
s   A /	A 
=A c                   [        [        S5      (       a1   U R                  [        R                  [        R                  SS5        U R                  [        R                  [        R                  S5        [        R                  " [        SS9   U R                  [        R                  [        R                  SS5        SSS5        [        R                  " [        SS9   U R                  [        R                  [        R                  S5        SSS5        g! [
         a-  nUR                  S[        R                  4;   d   e SnAGNSnAff = f! , (       d  f       N= f! , (       d  f       g= f)	z6Extract these out, to be reused for SocketStream also.SO_BINDTODEVICENr   *   Fz"invalid value for argument 'value'match   )r   rn   r   ro   r   OSErrorr   EPERMr   rp   rh   ri   r   )r   es     r*   r   r     s    w)**	OOG..0G0GqQ  	OOG'')<)<eD 
y(L	M++W-@-@%K 
N 
y(L	M++W-@-@$G 
N	M-  	77     	$ 
N	M 
N	Ms/   0D 1E!0E%
E$"EE
E"%
E3c                 &  #    [         R                  " 5       u  pU    U   U R                  5       nU   [        U[         R                  5      (       d   eUR                  5       U R                  5       :w  d   eU R                  5         UR                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   e S S S 5        S S S 5        S S S 5        g  N= N&! , (       d  f       N#= f! , (       d  f       N,= f! , (       d  f       g = f7fNr   r   )	rn   r   dupra   r   r   r   r   r   )r   r   r   s      r*   test_SocketType_dupr    s     DA	
AUUWb'"4"4555599;!((*,,,GGI''$-?d***    " R Aso   DD C/A*CC
C5C
6
CC/	D 	DCC
C,(C//
C=	9D  
D
Dc                   #    [         R                  " 5       u  pU    U   U R                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   eU R                  (       a   eUR                  (       a   eU R                  [         R                  5        U R                  (       d   eUR                  (       a   eUR                  S5      I S h  vN S:X  d   eUR                  S5      I S h  vN   U R                  S5      I S h  vN S:X  d   e S S S 5        S S S 5        [         R                  " 5       u  pU    U   U R                  (       a   eU R                  [         R                  5        U R                  (       a   e S S S 5        S S S 5        [         R                  " 5       u  pU    U   U R                  (       a   eU R                  [         R                  5        U R                  (       d   e S S S 5        S S S 5        g  GN GN GNA GN% GN! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nl= f! , (       d  f       g = f7f)Nr   r   r-      y)	rn   r   r   r   did_shutdown_SHUT_WRshutdownSHUT_WRSHUT_RD	SHUT_RDWRr   r   s     r*   test_SocketType_shutdownr    s    DA	
AffTlVVAY$&&&))))))))	

7??#%%%%))))VVAY#%%%ffTlVVAY$&&&  DA	
A))))	

7??#))))) 
 DA	
A))))	

7$$%%%%% % 	  A A As   J	H3H!HH!HB	H!HH!6H7H!H
H!H3#!J	IAII!J	7I8:AI'I8		J	H!H!H!H!H!!
H0	+H33
I=J	
I	I
I$ J	'
I5	1I88
JJ	)addresssocket_typer   r   )marksc           	     n  #    [         R                  " U5      n[         R                  " U5      nU   U   UR                  U S45      I S h  vN   UR                  S5        UR	                  5       S S n[
        R                  " 5        IS h  vN nUR                  UR                  U5        UR                  5       I S h  vN u  pgS S S 5      IS h  vN   W   WUR                  5       s=:X  a  UR	                  5       :X  d   e   eUR                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   e S S S 5        S S S 5        S S S 5        g  GN N N N! , IS h  vN  (       d  f       N= f N` NI! , (       d  f       NF= f! , (       d  f       NO= f! , (       d  f       g = f7f)Nr      r
   r   r   )rn   r   r7   listengetsocknamer   r   r   connectacceptgetpeernamer   r   )r  r  listenerclientaddrr   serverclient_addrs           r*   test_SocketType_simple_serverr     s=     ~~k*H^^K(F	6mmWaL)))##%bq)%%''7v~~t4(0(9"9F (' &"4"4"6N&:L:L:NNNNNN++d###Q'4///  ) ("9 ('''
 $' V 6s   /F5F$FEAFE
F0E$E 
E$FE"FAFE>
F6F 
7
FF
F$	F5FF E$"F$E;*E-+E;7F>F F
FF
F!	F$$
F2.F5c                   #    [         R                  " 5       u  pU    U   U R                  5       (       a   eUR                  S5      I S h  vN   [        R
                  " U 5      I S h  vN   U R                  5       (       d   eU R                  S5      I S h  vN S:X  d   eU R                  5       (       a   e S S S 5        S S S 5        g  N Ne N7! , (       d  f       N= f! , (       d  f       g = f7fr  )rn   r   is_readabler   r   wait_readabler   r  s     r*   test_SocketType_is_readabler$  4  s     DA	
A==??""ffTl!!!$$$}}VVAY$&&&==??""? $ Asi   C5C$,CCC)C*/CC!C<C$	C5CCC
C!	C$$
C2.C5c                      [         R                  " SS[         R                  S9  g! [         R                   a     gf = f)N1.2.3.4r   r1   TF)rH   rK   r   rq   rY   r-   r*   gai_without_v4mapped_is_buggyr(  B  s>    !!)Q}7M7MN  !! s   $' >>F)slotsc                  >    \ rS rSr% S\S'   S\S'   S\S'   S\S'   Srg)		AddressesiK  strbind_allr   	arbitrary	broadcastrY   N)rS   rT   rU   rV   __annotations__rX   rY   r-   r*   r+  r+  K  s    MNNNr-   r+  )r  addrsz0.0.0.0r&  z255.255.255.255)r-  r   r.  r/  z::1::2z::ffff:255.255.255.255c                
  ^
^^^#    U [         R                  :H  mS%U4S jjm      S&U4S jjn[         R                  " U S9 m[        T[        5      (       d   eS H  nTR                  US4SS9I S h  vN n[        U[        [        45      (       a   eU" XAR                  S45        TR                  US4SS9I S h  vN n[        U[        [        45      (       a   eU" XAR                  S45        M     S	 GH  m
    S'U
U4S
 jjnU" U" UR                  S45      I S h  vN UR                  S45        T(       Ga,  U" U" S5      I S h  vN S5        U" U" S5      I S h  vN S5        U" U" S5      I S h  vN S5        U" U" S5      I S h  vN S5        U" U" S5      I S h  vN S5        U" U" S5      I S h  vN S5        U" U" S5      I S h  vN S5        U" U" S5      I S h  vN S5        U" U" S5      I S h  vN S5        U" U" S5      I S h  vN S5        TR                  [         R                  [         R                  S5        U" U" S5      I S h  vN S5        U" U" S5      I S h  vN UR                  S45        T(       a  [        5       (       d  TR                  [         R                  [         R                  S5        [         R"                  " [         R$                  5       nU" S5      I S h  vN   S S S 5        [         R&                  [         R(                  1n[+        [         S5      (       a  UR-                  [         R.                  5        WR0                  R2                  U;   d   e [         R                  " [         R4                  [         R6                  S9n[        U[        5      (       d   eUR                  ST
S9I S h  vN S:X  d   eUR9                  5         Sn	[         R"                  " [>        U	S 9   U" S!5      I S h  vN   S S S 5        [         R"                  " [>        U	S 9   U" S"5      I S h  vN   S S S 5        [         R"                  " [>        U	S 9   T(       a  U" S#5      I S h  vN   OU" S$5      I S h  vN   S S S 5        GM     S S S 5        g  GNE GN GN GNr GN^ GNJ GN6 GN" GN GN GN GN GN GN{ GNg GN! , (       d  f       GN= f GN! [:        [<        4 a     GNf = f N! , (       d  f       N= f N! , (       d  f       N= f N N! , (       d  f       GMT  = f! , (       d  f       g = f7f)(Nc                `   > T(       a%  [        U 5      S:  a  U S-  n [        U 5      S:  a  M  U $ )N   )r   )len)r  v6s    r*   pad$test_SocketType_resolve.<locals>.pado  s,    d)a- d)a-r-   c                .   > T" U5      T" U 5      :X  d   eg r'   rY   )actualr   r8  s     r*   	assert_eq*test_SocketType_resolve.<locals>.assert_equ  s     8}F+++r-   r'  Nr   r   TlocalF)FTc                   >#    TR                  U TS9I S h  vN n[        U[        5      (       d   e[        SU5      $  N'7f)Nr?  ztuple[Union[str, int], ...])_resolve_address_nocpra   tupler	   )r9   r   r@  r   s     r*   r   $test_SocketType_resolve.<locals>.res  sP      #88 9   "%////95AAs   A?(Ahttp)r2  r   )r2  r   r   r   )r2  r   r   )r2  r   r   )r2  r   r   r   )r2  r   r   r
   )r2  r   )r2  r   r   )r2  r   r   r   )r2  r   r   )r2  r   r   r
   )r&  rE  )z::ffff:1.2.3.4r   )z<broadcast>{   rF  )r&  r   EAI_ADDRFAMILY)r1   r2   r   H^address should be a \(host, port(, \[flowinfo, \[scopeid\]\])*\) tuple$r   r&  )r&  )r&  r   r   r   r   )r&  r   r   r   )r  tuple[str | int, ...]rM   rI  )r;  rI  r   rI  rM   rN   )r9   ztuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int] | tuple[str, str] | tuple[str, str, int] | tuple[str, str, int, int]rM   rI  ) rn   r   r   ra   r   rB  r,  bytesr-  r   r.  r   IPPROTO_IPV6IPV6_V6ONLYr/  r(  rh   ri   rq   
EAI_NONAME
EAI_NODATAr   r   rG  r   r   
AF_NETLINKr   r   r   r  rb   )r  r1  r<  nullr   r   r   r   netlink_sockr  r@  r8  r   r7  s             @@@@r*   test_SocketType_resolverR  T  s    2 
((	(B,%,', 
, 
{	+t$,,,, D22D":T2JJC!#U|4444cNNB/022D":U2KKC!#U|4444cOOR01  #EB0B 'B B" C& 9::U__b<QRL 113EFO 446HI$6 779KLO 446HI$6 779KL
 N 335GH$5 668JK$8 99;MN$5 668JK$8 99;MN  4 4g6I6I5Q$7 88:PQ C 4557MN 799 4 4g6I6I4P]]7#3#34o... 5 $+#5#5w7I7I"J7$455#''(>(>?}}**o===
%&~~"-- ++  ",<<<<&<<V5<QQ ""$aGz9)n$$ :z9,''' : 6777 3444 c #% 
,	+ K L2 ; 24747
 46969 9 6 / 54, R #G,  % :9 ( :9 8 5 G 
,	+s  >U%2U6R;7A
UR>A%U'S(*USU)S*U S
USU.S/USUSU3S4U
SU!S"AU'S"(U>S%?A>U=S+	S(

S+A8U1T 8*U"S=#5UT$T
%T)!U
T,T*
T,!U<UT=
U T?
!U%U2	U%;U>UUUU
UUUUUUUU"U%U(S++
S:5	U TUTUT
T'#U*T,,
T:6U=U?U
U	U
U"U%c                 
  #    [         R                  " 5        n U R                  S5      I S h  vN   U R                  5       S   S:X  d   eU R	                  S5        [         R                  " 5        nUR                  SU R                  5       S   45      I S h  vN   UR                  5       U R                  5       :X  d   e S S S 5        S S S 5        [         R                  " 5        n [        R                  " [         R                  5         U R                  S5      I S h  vN   S S S 5        S S S 5        g  GN N! , (       d  f       N= f! , (       d  f       N= f N<! , (       d  f       N@= f! , (       d  f       g = f7f)N)r   r   r   r   
   r   r   )z1.2:3r   )
rn   r   r7   r  r  r  r  rh   ri   rq   )r   sock2s     r*    test_SocketType_unresolved_namesrV    s    		Tii()))!!$333B^^--d.>.>.@.C DEEE$$&$*:*:*<<<<  
 
	T]]7++,))M*** - 
	 	*
 F  
	 + -, 
	s   FED8AE1(D=D;(D=EF(%E2E!"E#E!'E2/	F8E;D==
E	E
EFE!!
E/	+E22
F <Fc            
     n  ^^	#    [         R                  " 5       u  pU    U   [        R                  " U 5      mUR	                  S5        UR                  S5        [        R                  " 5        nUR                  5         [        5          [        R                  " [        R                  5         TR                  S5      I S h  vN   S S S 5        S S S 5        S S S 5        [        5          TR                  S5      I S h  vN S:X  d   e S S S 5        [        5          [        R                  " [        5         TR                  S5      I S h  vN   S S S 5        S S S 5        SU4S jjn[        R                  " 5        IS h  vN nUR!                  U5        [#        5       I S h  vN   UR                  S5        S S S 5      IS h  vN   SU4S jjn[        R                  " 5        IS h  vN nUR!                  U5        [#        5       I S h  vN   UR$                  R                  5         S S S 5      IS h  vN   [        R                  " U5      m	SUU	4S jjnSUU	4S	 jjn[        R                  " 5        IS h  vN nUR!                  U5        UR!                  U5        [#        5       I S h  vN   U R                  S
5        UR                  S5        [#        5       I S h  vN   U R                  S
5        UR                  S5        S S S 5      IS h  vN   S S S 5        S S S 5        g  GNm! , (       d  f       GNr= f! , (       d  f       GN|= f! , (       d  f       GN= f GNj! , (       d  f       GNh= f GN1! , (       d  f       GN6= f! , (       d  f       GN@= f GN" GN GN! , IS h  vN  (       d  f       GN= f GN GN GN! , IS h  vN  (       d  f       GN= f GNm GN< GN N! , IS h  vN  (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f7f)NF   1rT  hahac                    >#    [        5          T R                  S5      I S h  vN S:X  d   e S S S 5        g  N! , (       d  f       g = f7f)NrT     2r   r   r   s   r*   do_successful_blocking_recvGtest_SocketType_non_blocking_paths.<locals>.do_successful_blocking_recv  s8     #%WWR[(D000 &%( &%s%   A:8
:	A:
AAr[  c                   >#    [        5          [        R                  " [        R                  5         T R                  S5      I S h  vN   S S S 5        S S S 5        g  N! , (       d  f       N= f! , (       d  f       g = f7f)NrT  )r   rh   ri   r   	Cancelledr   r]  s   r*   do_cancelled_blocking_recvFtest_SocketType_non_blocking_paths.<locals>.do_cancelled_blocking_recv  sN     #%]]5??3''"+%% 4 &%% 43 &%sE   B%A1A A	A A1	BA  
A.	*A11
A?;Bc                 &  >#    [        5          T R                  S5      I S h  vN S:X  d   e S S S 5        [        5          TR                  S5      I S h  vN S:X  d   e S S S 5        g  NG! , (       d  f       ND= f N'! , (       d  f       g = f7f)Nr      a   br\  r   tbs   r*   t1.test_SocketType_non_blocking_paths.<locals>.t1/  l     #%WWQZ'4/// &#%WWQZ'4/// &% ( &% ( &%U   BA-A+
A-BB A>
B "	B+A--
A;7B>B  
B
Bc                 &  >#    [        5          TR                  S5      I S h  vN S:X  d   e S S S 5        [        5          T R                  S5      I S h  vN S:X  d   e S S S 5        g  NG! , (       d  f       ND= f N'! , (       d  f       g = f7f)Nr   rf  re  r\  rg  s   r*   t2.test_SocketType_non_blocking_paths.<locals>.t25  rk  rl  rf  re  rM   rN   )rH   r   rn   r   setblockingr   r   CancelScopecancelr   rh   ri   ra  r   r   r   r   r   cancel_scope)
r   r   cscoper^  r   rb  ri  rn  r   rh  s
           @@r*   "test_SocketType_non_blocking_pathsrv    s    ##%DA	
A''*	e 	
t FMMO#%]]5??3''"+%% 4 & !  !$,,, "  !y)ggfo%% * "
	1 %%''7:;(***FF4L ('	&
 %%''79:(***  '') (' ''*	0 	0	0 	0 %%''7r"r"(***FF4LFF4L(***FF4LFF4L ('{  & 43 &% !  % "!
 & *) "! (* (''' (* ('''2 ( + + ('''{ As	  P5P$AP/M
%M	/L4L1L4	M	MP+M- M*

M-PN9N	M?N	N)PN&
PN/'N)
(N/=PN,	%P.O

/P2OO
O0P;O<APO.
P0O95O1
63O9)O4
*&O9PO7P P$(	P51L44
M>M	
MM
M'"P*M--
M<7P?N	
NN
N#	P)N/,P/O5N86O	POPO+OO+&	P1O94O97P9P?P PP
P!	P$$
P2.P5c            
       ^^#    [         R                  " 5        m[        R                  " [        SS9   TR                  S5      I S h  vN   S S S 5        S S S 5        [         R                  " 5        m[        R                  " 5        mTR                  5         [        R                  " [        R                  5         TR                  S5      I S h  vN   S S S 5        S S S 5        S S S 5        [        R                  " 5        m[         R                  " 5        m[         R                  " 5        n U R                  S5      I S h  vN   U R                  5          " UU4S jS[        R                  5      n[        T[        5      (       d   eTR                  R!                  5         U" 5       Tl        [#        5          [        R                  " [        R                  5         TR                  U R%                  5       5      I S h  vN   S S S 5        S S S 5        TR'                  5       S:X  d   e S S S 5        S S S 5        S S S 5        [         R                  " 5        m[        R                  " [(        S	S9   TR                  S
5      I S h  vN   S S S 5        S S S 5        g  GN\! , (       d  f       GNa= f! , (       d  f       GNk= f GN! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f GN GN! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f N! , (       d  f       N= f! , (       d  f       g = f7f)NrH  r   r   r   r   r   c                  0   > \ rS rSr    SU U4S jjrSrg)3test_SocketType_connect_paths.<locals>.CancelSocketia  c                  > [        T[        5      (       d   eTR                  5         [        R                  " U R                  5       U R                  U R                  5      Tl        TR                  R                  U5        [        er'   )ra   r   rs  rH   r   r   r1   r2   _sockr  rk   )r(   r  rt  r   s     r*   r  ;test_SocketType_connect_paths.<locals>.CancelSocket.connectb  sg    
 &dK8888 '')!.!5!5		"DJ
 JJ&&w/))r-   rY   N)r  r   rM   rN   )rS   rT   rU   rV   r  rX   )rt  r   s   r*   CancelSocketrz  a  s    *** * *r-   r~  r   z^^\[\w+ \d+\] Error connecting to \('127\.0\.0\.\d', \d+\): (Connection refused|Unknown error)$)r   r
   )rn   r   rh   ri   rb   r  r   rr  rs  ra  r7   r  rH   ra   r   r|  r   r   r  r   r  )r  r~  rt  r   s     @@r*   test_SocketType_connect_pathsr  G  sO    		T]]]

 ,,{+++
 
 
	T L!u/ll#4555 0 ! 
 
			^^w~~'78-- 0111OO
* *}33 *& dK0000JJ%DJ#%]]5??3,,x';';'=>>> 4 & ;;=B&&&C (8 
J 
	T]]s
 ,,/000
 
	_ ,
 
 
	 6 0/ !  
	 2> ? 43 &%= (8'7 
	h 1
 
 
	s~  N	J:J(	J%
J(J:N	3K3	5K!>KK
KK! K3(N	MM1L/L
A8L/?%L	$#LLLL	L/3M;MN	 M8:M'M%M'M8	N	%J((
J7	2J::
K	N	K
KK!!
K0	+K33
L=N	L/L
LL	
L,'L//
L>9M
M	M
M"N	%M''
M5	1M88
NN	c                   #    Sn [         R                  " 5        n[        R                  " [        SU < S3S9   UR                  U S45      I S h  vN   S S S 5        S S S 5        g  N! , (       d  f       N= f! , (       d  f       g = f7f)Nr   z#^\[\w+ \d+\] Error connecting to \(z*, 2\): (Connection refused|Unknown error)$r   r
   )rn   r   rh   ri   r  r  )r  r   s     r*   test_address_in_socket_errorr    so     G		T]]8Cmn
 ,,|,,,
 
	 -
 
 
	sE   B
A9A(A&A(A9	B
&A((
A6	2A99
BB
c            	     H  ^#    [         R                  " 5        m[        R                  " 5        n       SU4S jjn[	        U [
        5      (       d   eXl        [        5          [        R                  " [         R                  5         U R                  S5      I S h  vN   S S S 5        S S S 5        U R                  5       S:X  d   e S S S 5        S S S 5        g  N<! , (       d  f       N@= f! , (       d  f       NI= f! , (       d  f       N;= f! , (       d  f       g = f7f)Nc                  >#    U S:X  d   eU(       a   eTR                  5         [        R                  " 5       I S h  vN   g  N7fr>  )rs  r   
checkpoint)r  r@  rt  s     r*   rB  Vtest_resolve_address_exception_in_connect_closes_socket.<locals>._resolve_address_nocp  s:     
 "}$}  y##%&&(((s   :AAAr   r   )r  r   r@  rg   rM   rN   )r   rr  rn   r   ra   r   rB  r   rh   ri   ra  r  r   )r   rB  rt  s     @r*   7test_resolve_address_exception_in_connect_closes_socketr    s     				^^)&) ) 	) dK0000)>&#%]]5??3,,r*** 4 & ;;=B&&&#  
	" + 43 &%  
	su   D"D6D %%C/
C	C C	$C/,D D	D"C	
C,(C//
C=9D  
D	
D
DD"c            	     $  #    [         R                  " 5       u  pU    U   U R                  S5      I S h  vN S:X  d   eUR                  S[         R                  5      I S h  vN S:X  d   eUR                  S5      I S h  vN S:X  d   eU R                  S5      I S h  vN   [        S5      nUR                  U5      I S h  vN   US:X  d   e[        U S5      (       a@  U R                  S// 5      I S h  vN S:X  d   eUR                  S5      I S h  vN S:X  d   eS S S 5        S S S 5        [         R                  " [         R                  S9n [         R                  " [         R                  S9nU    U   U R                  S	5      I S h  vN   UR                  S	5      I S h  vN   UR                  5       S
UR                  5       S   4/nU H[  nU R                  SU5      I S h  vN S:X  d   eUR                  S5      I S h  vN u  pVUS:X  d   eX`R                  5       :X  a  M[   e   [        [         S5      (       a  U R                  S[         R                  UR                  5       5      I S h  vN   U R                  S[         R                  UR                  5       5      I S h  vN   U R                  SUR                  5       5      I S h  vN   UR                  S5      I S h  vN u  pVUS:X  d   eX`R                  5       :X  d   eU R                  SUR                  5       5      I S h  vN S:X  d   e[        S5      nUR!                  U5      I S h  vN u  pvUS:X  d   eUS:X  d   eX`R                  5       :X  d   e[        US5      (       aw  U R                  SUR                  5       5      I S h  vN S:X  d   eUR#                  S5      I S h  vN u  pXpUS:X  d   eU/ :X  d   eU	S:X  d   eX`R                  5       :X  d   e[        US5      (       a  U R                  SUR                  5       5      I S h  vN S:X  d   e[        S5      n
[        S5      nUR%                  X/5      I S h  vN nUu  pxpUS:X  d   eU
S:X  d   eUS:X  d   eU/ :X  d   eU	S:X  d   eX`R                  5       :X  d   e[        U S5      (       a\  U HV  nU R                  SS// SU5      I S h  vN S:X  d   eUR                  S5      I S h  vN SU R                  5       4:X  a  MV   e   S S S 5        S S S 5        [         R                  " [         R                  S9n [         R                  " [         R                  S9nU    U   UR                  S	5      I S h  vN   U R'                  UR                  5       5      I S h  vN   U R                  S5      I S h  vN   U R                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   eUR                  S5      I S h  vN S:X  d   e S S S 5        S S S 5        g  GN GN GN GN GN GNi GNM! , (       d  f       GNL= f! , (       d  f       GNV= f GN GN GN GN GN GN GN GN GNi GNB GN GN GNc GN0 GN GN! , (       d  f       GN= f! , (       d  f       GN= f GN; GN GN N N N! , (       d  f       N= f! , (       d  f       g = f7f)Nr   r   rT  s
   x         sendmsgs   xxxr   r   rx  r   MSG_MOREs   yyys   zzzs	   xxxyyyzzzs
   xxx       recvmsgr   recvmsg_intos   xyzwr5  r
   s   xys   zw s   yzs   xyz)rn   r   r   r   MSG_PEEK	bytearray	recv_intor   r  r   r   r7   r  sendtorecvfromr  recvfrom_intor  r  r  )r   r   buftargetstargetdatar  nbytesancdata	msg_flagsbuf1buf2rets                r*   test_send_recv_variantsr    s    DA	
AVVD\!Q&&&VVB 0 011T999VVBZ4''' ffTlmkk#((((1i  F8R00A555#v---   	G../AG../A	
Aff%&&&ff%&&&==?[!--/!2D$EF F&&11Q666!"B/LT6>!>==?***	  7J''((67#3#3Q]]_EEE((67#3#3Q]]_EEE((61==?333!"B/LT<'''==?*** XXfammo66!;;;m s33{{****}}&&&1i  &!--/::a???56YYr]/B,TI6>!>b= =>!>==?***1n%%'1==?;;q@@@Q<DQ<D|44C14.ViQ;;5= =?***b= =>!>==?***1i  !YYe}b!VDDIIIZZ^+/HHHH "w ~ 	G../AG../A	
Aff%&&&ii((( ffVnffVnVVBZ6)))VVBZ6))) c "1 	 1# A& 	'& 2/ FE3/
 73 ;/B < 5 E+{ AD 	'( 	 As  \Y9Y'Y-Y'"Y#Y'YY' Y!#Y'Y3Y'8Y!9Y'Y$
Y'"Y9*A\8[;Z;ZZ;)Z*AZ;-Z
.Z;Z
Z;0AZ;;Z<6Z;2Z3'Z;ZZ;3Z 4AZ;:Z#;)Z;$Z&%AZ;Z)Z;#Z,$A(Z;Z/5Z;Z2A5Z;8Z5
9Z;Z8
Z;2Z;6[>A\[?[.$[%&[.["[.$[%%[.=[(>[.[*[.5[,6
[.[?		\Y'Y'Y'Y'Y'!Y'$Y''
Y6	1Y99
Z\Z;Z;Z;Z;Z;Z;Z; Z;#Z;&Z;)Z;,Z;/Z;2Z;5Z;8Z;;
[
	[
[\[."[.%[.([.*[.,[..
[<	8[??
\	\c                \  #    U R                  SSS5        U R                  SSS[        S9  U R                  SSS[        S9  U R                  SS	S5        U R                  SS
S5        [        R                  " SS5      I S h  vN S:X  d   e[        R                  " SS5      I S h  vN S:X  d   e[        R                  " SS5      I S h  vN S:X  d   e[        R                  " S
S5      I S h  vN S:X  d   e[        R                  " SS5      I S h  vN S:X  d   eg  N N| NY N6 N7f)Nu
   ok faß.des   xn--fa-hia.der   zok ::1r   )r4   s   ::1badzfass.dezxn--fa-hia.deu   faß.de)rD   r   rn   rK   )r^   s    r*   	test_idnar    s     MM, 0"5MM(E2]M;MM(FBmM<MM%B'MM%"-$$UB//8;;;$$VR00H<<<$$Y33|CCC$$_b99\III$$%5r::lJJJ	 0039:sZ   B D,D"$D,'D$($D,D&$D,1D(2$D,D*D,$D,&D,(D,*D,c                    #    [         R                  " S5      I S h  vN S:X  d   e[         R                  " S5      I S h  vN S:X  d   eg  N/ N7f)Nudp   tcp   )rn   getprotobynamerY   r-   r*   test_getprotobynamer  '  sG      ''.."444''..!333 /.s!   AA#A AAAc           
       #     " S S5      nU" 5       n[         R                  " U5      b   e[         R                  SSS4S[         R                  SS4SS[         R                  S4SSS[         R
                  44 H/  n[         R                  " SS/UQ76 I S h  vN SSS/UQ7:X  a  M/   e   [         R                  " SS5      I S h  vN nS	nXE:X  d   e[         R                  " S
S5      I S h  vN S:X  d   e[         R                  " S 5      UL d   eU R                  SSSSSSSS9  [         R                  " SS5      I S h  vN S:X  d   eg  N N Nd N7f)Nc                  P    \ rS rSr              SS jr      SS jrSrg)5test_custom_hostname_resolver.<locals>.CustomResolveri0  c                   #    SXX4XV4$ 7f)N
custom_gairY   )r(   r;   r<   r1   r2   r3   r4   s          r*   rK   Atest_custom_hostname_resolver.<locals>.CustomResolver.getaddrinfo1  s      !$fEIIs   	c                   #    SX4$ 7f)N
custom_gnirY   )r(   r{   r4   s      r*   r   Atest_custom_hostname_resolver.<locals>.CustomResolver.getnameinfo<  s     
 !(22s   rY   N)r;   r,  r<   r,  r1   rQ   r2   rQ   r3   rQ   r4   rQ   rM   z(tuple[str, str, str, int, int, int, int])r{   z+tuple[str, int] | tuple[str, int, int, int]r4   rQ   rM   z<tuple[str, tuple[str, int] | tuple[str, int, int, int], int])rS   rT   rU   rV   rK   r   rX   rY   r-   r*   CustomResolverr  0  su    		J		J 		J 			J
 		J 		J 		J 6		J	3A	3 	3 J		3r-   r  r   r   foor  s	   localhostu   föö)r  s
   xn--f-1gaar  r   r   r   r   r   )r  r   r   r   r   r<   r0   r;   )	rn   set_custom_hostname_resolverr   r   r   AI_CANONNAMErK   r   rD   )r^   r  crvalsr   r   s         r*   test_custom_hostname_resolverr  .  s~    3 3& 
	B//3;;; 
!Q"	
GA&	
Aw""A&	
Aq'&&'	 ((eCdCCH
 	H
 
 	
 
 ##GU3
3C?H??$$S!,, 1    //5;;; MM#wqqMK$$VV44;;;1 D 4 - 5sO   BEEE*EE	'E0E1AEEEEEEc                   #     " S S5      n U " 5       n[         R                  " U5      b   e[         R                  " 5       S[         R                  [         R                  S4:X  d   e[         R                  " SSS5      S:X  d   e[
        R                  " 5       R                  5       n[         R                  " US	9n[        US
5      (       d   eUR                  5         [         R                  " 5       u  pEU   U   [        US
5      (       d   e[        US
5      (       d   e S S S 5        S S S 5        [         R                  " S 5      UL d   eg ! , (       d  f       N2= f! , (       d  f       N;= f7f)Nc                  .    \ rS rSr        SS jrSrg)7test_custom_socket_factory.<locals>.CustomSocketFactoryil  c                    SXU4$ )NhirY   )r(   r1   r2   r3   s       r*   r   >test_custom_socket_factory.<locals>.CustomSocketFactory.socketm  s     &..r-   rY   N)r1   r   r2   r   r3   rQ   rM   z*tuple[str, AddressFamily, SocketKind, int])rS   rT   rU   rV   r   rX   rY   r-   r*   CustomSocketFactoryr  l  s-    	/!	/ 	/ 		/
 8	/r-   r  r  r   r   r
   r   )r  r   r
   r   r   r7   )
rn   set_custom_socket_factoryr   r   r   rH   r   r   r   r   )r  csfr   wrappedr   r   s         r*   test_custom_socket_factoryr  k  s!    / / 
C,,S1999>>goow7J7JANNNN>>!Q"o555 
				&	&	(BnnB'G7F####MMO DA	
Aq&!!!!q&!!!!  ,,T2c999	 As6   C7E29E!<'E$E!,$E2
E	E!!
E/+E2c                     [         R                  " [        5         [        R                  " 5         S S S 5        g ! , (       d  f       g = fr'   )rh   ri   r   rn   r   rY   r-   r*   test_SocketType_is_abstractr    s&    	y	! 
"	!	!s	   :
AAF_UNIXzno unix domain socketsc                   #    SS jn [         R                  " 5        nU " U S35      I S h  vN   U " [        U S35      5      I S h  vN   U " [        R                  " U S35      5      I S h  vN   S S S 5         [        R
                  " S5      R                  5       R                  S5      nU " SU-   5      I S h  vN   g  N N} NX! , (       d  f       N\= f N! [         a     g f = f7f)	Nc                t  #    [         R                  " [         R                  S9 nUR                  U 5      I S h  vN   UR	                  S5        [         R                  " [         R                  S9 nUR                  U 5      I S h  vN   UR                  5       I S h  vN u  p4U   UR                  S5      I S h  vN   UR                  S5      I S h  vN S:X  d   e S S S 5        S S S 5        S S S 5        g  N Nu N_ NC N,! , (       d  f       N)= f! , (       d  f       N2= f! , (       d  f       g = f7f)Nr'  rT  r   r   )	rn   r   r  r7   r  r  r  r   r   )pathlsockcsockssockr   s        r*   check_AF_UNIX.test_unix_domain_socket.<locals>.check_AF_UNIX  s     ^^7??3u**T"""LLw75mmD)))!&/**T***!&A.$666  8 43" */*. U 87 43s   #D8D'C;7D'2DC=DC? D(D=D
>DD

D"D*D'2	D8;D'=D?DDD
DD
D$	 D''
D51D8z/sockz/sock1z/sock2r  asciis    trio-test-)r  zstr | bytes | os.PathLike[str]rM   rN   )	tempfileTemporaryDirectoryr   r   fsencodeurandomhexencodeFileNotFoundError)r  tmpdircookies      r*   test_unix_domain_socketr    s     
	7 
	$	$	&& vhe,---DF86!23444BKK6(&(9:;;; 
'B##%,,W5-6777 	.4; 
'	& 	8 s   C-C
CC
C	&C
/C0C
4C-=AC >C?C C-C
C
C


CC-C 
C*'C-)C**C-c            	       ^^#    [         R                  " 5       u  pU    U   U R                  S5        SS-  m  U R                  T5        M  ! [         a     Of = f[
        R                  " U 5      mSUU4S jjnSU4S jjn[        R                  " 5        IS h  vN  nUR                  U5        UR                  U5        [        5       I S h  vN    TR                  5         S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fS S S 5        O! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f7f)NFr   i c                    >#    [         R                  " [        R                  5         T R	                  T5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7fr'   )rh   ri   r   ClosedResourceErrorr   )r   r  s   r*   sender)test_interrupted_by_close.<locals>.sender  s<     u889ffTl"" :9" :9,   %AAAA	AA
AAc                    >#    [         R                  " [        R                  5         T R	                  S5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7f)Nr   )rh   ri   r   r  r   )r   s   r*   receiver+test_interrupted_by_close.<locals>.receiver  s:     u889ffQi :9 :9r  rp  )rH   r   rq  r   rk   rn   r   r   r   r   r   r   )a_stdlibb_stdlibr  r  r   r   r  s        @@r*   test_interrupted_by_closer    s     &113H	8U#e|	d#  		 &&x0	# 	#	  %%''7v&x((***GGI	 ('''''+ 88s   ED7DA
ADAADB 
D"0C:C
C:(D3C64D:D DDD	D7
D+	'D7.	E7
EEc                   #    Sn / n[        SU S5       H!  n [        R                  " 5       u  p4XU/-  nM#     [        R                  " 5        IS h  vN nU H#  nUR                  [        R                  U5        M%     [        R                  " 5       I S h  vN   UR                  R                  5         S S S 5      IS h  vN   U H  nUR                  5         M     g ! [         aK  nUR                  [        R
                  [        R                  4;   d   e[        SU S35         S nA  M  S nAff = f N N Nz! , IS h  vN  (       d  f       N= f7f)Ni  r   r
   zUnable to open more than z	 sockets.)rangerH   r   r  r   EMFILEENFILEr   r   r   r   r#  r   rt  rs  r   )totalr   openedr   r   rc   r   r   s           r*   test_many_socketsr    s    EG5!$		 ++-DA 	q6 % !!##wFu22F; **,,,##%	 $#
    	 99u|| <<<<-fXY?@	 $ 	- $###s   EC!#ED9EAD?D;D?7ED=E!
D6+?D1*E1D66E;D?=E?EEEE)r\   zpytest.MonkeyPatchrM   r    rp  )r^   r    rM   rN   )r   zSocketType | SocketStreamrM   rN   )r  r,  r  r   rM   rN   )rM   rg   )r  r   r1  r+  rM   rN   )c
__future__r   r   r5   r   r   rH   r   r  pathlibr   r   r   typingr   r   r	   attrsrh   r   r   rn   _core._tests.tutilr   r   r   r   _socketr   r   r   r   r   testingr   r   collections.abcr   typing_extensionsr   _highlevel_socketr   rC  rQ   r,  rJ  r   r0  listr   r   r   r    fixturer^   rl   rs   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r   r   r  r  parametrizer   paramr   r   r$  r(  definer+  rR  rV  rv  r  r  r  r  r  r  r  r  r  r  r  r  rY   r-   r*   <module>r     s   "   	  
   , - -   ' P P V V @(+0eCHouS#sC%78%U
:KKL		NHi  &*(^3!&c5$c5#t#$	"OY   OGP GPT  &<0W7tF/,"
) 55nM+ N++ , , CLLG+LA BB0fHB	+&6 	goo&UG,,J?000 
00(# E    OO"%#+		
 	 2	 		
0z510z5z+&GV E1 E1R 	- 	-'.]*@K$4:<z:@
 33<TU V@<r-   