
    vKg                    p   % 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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  SS	KJrJrJrJ r   SS
K!J"r"J#r#  \(       a7  S SK$J%r%  SSK&J'r'  \\\\(\)\\\)\(4   \\)\(\(\(4   4   4   r*S\+S'   \\*   r,S\+S'   OS\+S'   \-r, " S S5      r.\R^                  SMS j5       r0SNS jr1SNS jr2SOS jr3SNS jr4SNS jr5SNS jr6SNS jr7\Rp                  Rs                  \:" \S5      (       + SS9SNS j5       r;SNS jr<\SNS  j5       r=\Rp                  Rs                  \R|                  S!:g  S"S9SNS# j5       r?SNS$ jr@SNS% jrASPS& jrBSNS' jrCSNS( jrD\Rp                  R                  S)S*\R                  4\R                  " S+\R                  \S,9/5            SQS- j5       rISNS. jrJSRS/ jrK\R                  " S0S19 " S2 S35      5       rM\Rp                  R                  S4\R                  \M" S5S*S6S7S894\R                  " \R                  \M" S9S+S:S;S89\S,9/5      SSS< j5       rNSNS= jrOSNS> jrPSNS? jrQSNS@ jrRSNSA jrSSNSB jrTSOSC jrUSNSD jrVSOSE jrWSNSF jrXSNSG jrY\Rp                  Rs                  \:" \SH5      (       + SIS9SNSJ j5       rZSNSK jr[SNSL jr\g)T    )annotationsN)Path)AddressFamily
SocketKind)TYPE_CHECKINGAnyCallableListTupleUnion   )_coresocket)
binds_ipv6creates_ipv6)_NUMERIC_ONLY
SocketType_SocketType	_try_sync)assert_checkpointswait_all_tasks_blocked)	TypeAlias)SocketStreamr   GaiTupleGetAddrInfoResponseobjectc                  L    \ rS rSrSS jrS	S jr        S
S jrSS jrSrg)MonkeypatchedGAI+   c                ,    Xl         0 U l        / U l        g N_orig_getaddrinfo
_responsesrecord)selforig_getaddrinfos     W/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/trio/_tests/test_socket.py__init__MonkeypatchedGAI.__init__,   s    !1LN-/    c                    [         R                  " U R                  5      nUR                  " U0 UD6nUR	                  5         UR
                  nUR                  (       a   eU$ r!   )inspect	signaturer#   bindapply_defaultsargskwargs)r&   r1   r2   sigboundfrozenbounds         r(   _frozenbindMonkeypatchedGAI._frozenbind2   sS     6 67$)&)jj<<r+   c                @    XR                   U R                  " U0 UD6'   g r!   )r$   r6   )r&   responser1   r2   s       r(   setMonkeypatchedGAI.set:   s!     >F(($9&9:r+   c                   U R                   " U0 UD6nU R                  R                  U5        X0R                  ;   a  U R                  U   $ US   [        R
                  -  (       a  U R                  " U0 UD6$ [        SU 35      e)Nz%gai called with unexpected arguments )r6   r%   appendr$   stdlib_socketAI_NUMERICHOSTr#   RuntimeError)r&   r1   r2   r4   s       r(   getaddrinfoMonkeypatchedGAI.getaddrinfoB   s}      $1&15!OO#??5))2Y555))4:6::!FugNOOr+   r"   N)r'   z"Callable[..., GetAddrInfoResponse]returnNone)r1   r   r2   r   rD   ztuple[Any, ...])r9   GetAddrInfoResponse | strr1   r   r2   r   rD   rE   )r1   r   r2   r   rD   rF   )	__name__
__module____qualname____firstlineno__r)   r6   r:   rB   __static_attributes__ r+   r(   r   r   +   sB    0F+F F 	F
 
FPr+   r   c                z    [        [        R                  5      nU R                  [        SUR                  5        U$ )NrB   )r   r?   rB   setattr)monkeypatch
controllers     r(   	monkeygairQ   M   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_ValueErrora   s    #z**r+   )rV   BaseExceptionrD   bool)r   r   pytestraisesKeyErrorBlockingIOErrorrU   )rW   s    r(   test__try_syncr_   T   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_SOCKETr?   TCP_NODELAYgaierrorntohsrL   r+   r(   test_socket_has_some_reexportsrf   r   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!   rL   )gai_tupfamilytype_proto	canonnamesockaddrs         r(   interesting_fields;test_getaddrinfo.<locals>.check.<locals>.interesting_fields   s     9@5F5X8,,r+   c                >   > U  Vs/ sH  nT" U5      PM     sn$ s  snf r!   rL   )gai_listrj   rp   s     r(   filtered1test_getaddrinfo.<locals>.check.<locals>.filtered   s%     @HHxG&w/xHHHs   )rj   r   rD   zdtuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int]])rs   r   rD   zjlist[tuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int]]]rL   )gotexpectedrt   rp   s      @r(   checktest_getaddrinfo.<locals>.check   sM    		-		-
		-		I)		I
		I } 2222r+   	127.0.0.112345type )rz   90  ::1)r   r   r   r   x   hostportr   rk   r}   rm   flagshostr=   )r   r   r   r   r   r   EAI_BADHINTSasdf)rv   r   rw   r   rD   rE   )r   ra   rB   SOCK_STREAMAF_INETIPPROTO_TCP
SOCK_DGRAMAF_INET6IPPROTO_UDPr:   r%   r[   r\   rd   EAI_SOCKTYPEaddEAI_SERVICEhasattrr   valueerrnorA   )rQ   rx   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)rz   i  )rz   1234)z
google.comP   r   )	localhostr   rz   r   rz   80)	r?   NI_NUMERICHOSTNI_NUMERICSERVr   ra   getnameinfor[   r\   rd   )
ni_numericrv   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	  rL   N)rG   rH   rI   rJ   rK   rL   r+   r(   MySocketr   	  s    r+   r   )r?   
socketpairrT   ra   r   from_stdlib_socketfilenosendrecvr[   r\   	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      )
r?   r   ra   fromfdr   rk   r}   rm   r   r   )r   r   r   s      r(   test_from_fdr     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>.child  s?     oiioYYq\!T))) 	!s    AAAA	A	A)r   r   rD   rE   )ra   r   r   open_nursery
start_soon)r   abnurserys       r(   test_socketpair_simpler     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platformra   r   shareosgetpidr   r   r   r   )r   r   shareda2s       r(   test_fromsharer   '  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!   )ra   r   rT   r   rk   r   ss    r(   test_socketr   6  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!   )ra   r   r   r   rT   r   rk   r   s    r(   test_socket_v6r   <  s]     	(('*<*<	=!W//0000xx7+++++ 
>	=	=s   4BAB9	B
BBlinuxz
linux onlyc            	     t  #    SSK Jn JnJnJn  X4 VVs/ sH#  nX#4 H  n[
        R                   " XE5      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?   ra   r   rk   r}   detachr   close)
r   r   r   r   rk   rl   socketsr   tsocket_sockettsocket_from_fds
             r(   test_sniff_sockoptsr   C  s	    AA
 ))F .E 	V+. 	,)  
  v}}?$$555""fkk111 "..'O%%666##v{{222 s   D8)D2C:D8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   rk   r   
setsockopt)ra   r   rT   r   intget_inheritableset_inheritabler   r   rc   
getsockoptreprr   r   dirr[   r\   AttributeErrorr   r?   r   r}   rk   rm   )r   cm_enter_valuefdstdlib_socks       r(   test_SocketType_basicsr   d  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!   )ra   r   setsockopt_tests)r   _s     r(   test_SocketType_setsockoptr     s'     >>D	 
s   A /	A 
=A c                v   [        [        S5      (       a0  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! , (       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   ra   r   rb   r   r   rc   r[   r\   r   r   s    r(   r   r     s     w)****G,C,CT1M 	OOG'')<)<eD 
y(L	M++W-@-@%K 
N 
y(L	M++W-@-@$G 
N	M	 
N	M 
N	Ms   1D 0D*
D'*
D8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   )	ra   r   duprT   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)	ra   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_typerz   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   )ra   r   r/   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   )ra   r   is_readabler   r   wait_readabler   r  s     r(   test_SocketType_is_readabler    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   rk   TF)r?   rB   r   rd   rL   r+   r(   gai_without_v4mapped_is_buggyr     s>    !!)Q}7M7MN  !! s   $' >>F)slotsc                  >    \ rS rSr% S\S'   S\S'   S\S'   S\S'   Srg)		Addressesi	  strbind_allr   	arbitrary	broadcastrL   N)rG   rH   rI   rJ   __annotations__rK   rL   r+   r(   r   r   	  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>.pad-  s,    d)a- d)a-r+   c                .   > T" U5      T" U 5      :X  d   eg r!   rL   )actualrw   r-  s     r(   	assert_eq*test_SocketType_resolve.<locals>.assert_eq3  s     8}F+++r+   r  )Nr~   r   TlocalF)FTc                @   >#    TR                  U TS9I S h  vN $  N7f)Nr3  )_resolve_address_nocp)r1   r4  r   s    r(   r   $test_SocketType_resolve.<locals>.resM  s0      "77 8    s   http)r'  r   )r'  r   r   r   )r'  r   r   )r'  r   r   )r'  r   r   r   )r'  r   r   r   )r'  r   )r'  r   r   )r'  r   r   r   )r'  r   r   )r'  r   r   r   )r  r8  )z::ffff:1.2.3.4r   )z<broadcast>{   r9  )r  r   EAI_ADDRFAMILY)rk   r}   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, ...]rD   r<  )r0  r<  rw   r<  rD   rE   )r1   ztuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int] | tuple[str, str] | tuple[str, str, int] | tuple[str, str, int, int]rD   r   ) ra   r   r   rT   r   r6  r!  bytesr"  r   r#  r   IPPROTO_IPV6IPV6_V6ONLYr$  r  r[   r\   rd   
EAI_NONAME
EAI_NODATAr   r   r:  r   r   
AF_NETLINKr   r   r   OSErrorrU   )r  r&  r1  nullrv   r   r   r   netlink_sockr  r4  r-  r   r,  s             @@@@r(   test_SocketType_resolverF    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0   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 _ #% 
,	+ K L. ; 24747
 46969 9 6 / 54, R #G,  % :9 ( :9 8 5 C 
,	+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   rz   
   r   r   )z1.2:3r=   )
ra   r   r/   r  r  r  r  r[   r\   rd   )r   sock2s     r(    test_SocketType_unresolved_namesrJ    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   1rH  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)NrH     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rO  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)NrH  )r   r[   r\   r   	Cancelledr   rQ  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   brP  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   rZ  rY  rP  r[  s   r(   t2.test_SocketType_non_blocking_paths.<locals>.t2  r_  r`  rZ  rY  rD   rE   )r?   r   ra   r   setblockingr   r   CancelScopecancelr   r[   r\   rU  r   r   r   r   r   cancel_scope)
r   r   cscoperR  r   rV  r]  rb  r   r\  s
           @@r(   "test_SocketType_non_blocking_pathsrj    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)Nr;  r   r   r   rz   r   c                  (   > \ rS rSrSU U4S jjrSrg)3test_SocketType_connect_paths.<locals>.CancelSocketi  c                  > [        T[        5      (       d   eTR                  5         [        R                  " U R                  5       U R                  U R                  5      Tl        TR                  R                  " U0 UD6  [        er!   )rT   r   rg  r?   r   r   rk   r}   _sockr  r^   )r&   r1   r2   rh  r   s      r(   r  ;test_SocketType_connect_paths.<locals>.CancelSocket.connect  sj    %dK8888 '')!.!5!5		"DJ
 JJ&&77))r+   rL   N)r1   r   r2   r   rD   rE   )rG   rH   rI   rJ   r  rK   )rh  r   s   r(   CancelSocketrn    s    * *r+   rr  r=   z^^\[\w+ \d+\] Error connecting to \('127\.0\.0\.\d', \d+\): (Connection refused|Unknown error)$)rz   r   )ra   r   r[   r\   rU   r  r   rf  rg  rU  r/   r  r?   rT   r   rp  r   r   r  r   rC  )r  rr  rh  r   s     @@r(   test_SocketType_connect_pathsrs    sN    		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&&&= (8 
D 
	T]]s
 ,,/000
 
	Y ,
 
 
	 6 0/ !  
	 28 ? 43 &%7 (8'7 
	\ 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)Nrz   z#^\[\w+ \d+\] Error connecting to \(z*, 2\): (Connection refused|Unknown error)$r   r   )ra   r   r[   r\   rC  r  )r  r   s     r(   test_address_in_socket_errorru  F  so     G		T]]8Cmn
 ,,|,,,	
 
	
 -	
 
 
	sE   B
A9A(A&A(A9	B
&A((
A6	2A99
BB
c            	     L  ^#    [         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                l   >#    TR                  5         [        R                  " 5       I S h  vN   g  N7fr!   )rg  r   
checkpoint)r&   r1   r2   rh  s      r(   r6  Vtest_resolve_address_exception_in_connect_closes_socket.<locals>._resolve_address_nocpU  s&     
 ##%&&(((s   )424r~   r=   )r&   r   r1   r   r2   r   rD   rE   )r   rf  ra   r   rT   r   r6  r   r[   r\   rU  r  r   )r   r6  rh  s     @r(   7test_resolve_address_exception_in_connect_closes_socketrz  P  s     				^^))) ) 	) dK0000)>&#%]]5??3,,r*** 4 & ;;=B&&&  
	 + 43 &%  
	su   D$D8D'%C1C 	!C"C 	&C1.DD	D$C 	 
C.*C11
C?;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   rH  s
   x         sendmsgs   xxxr   r|   rl  r   MSG_MOREs   yyys   zzzs	   xxxyyyzzzs
   xxx       recvmsgr   recvmsg_intos   xyzwr*  r   s   xys   zw s   yzs   xyz)ra   r   r   r   MSG_PEEK	bytearray	recv_intor   r|  r   r   r/   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  e  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   )r   s   ::1badzfass.dezxn--fa-hia.deu   faß.de)r:   r   ra   rB   )rQ   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   )ra   getprotobynamerL   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>.CustomResolveri  c                   #    SXX4XV4$ 7f)N
custom_gairL   )r&   r   r   rk   r}   rm   r   s          r(   rB   Atest_custom_hostname_resolver.<locals>.CustomResolver.getaddrinfo  s      !$fEIIs   	c                   #    SX4$ 7f)N
custom_gnirL   )r&   ro   r   s      r(   r   Atest_custom_hostname_resolver.<locals>.CustomResolver.getnameinfo  s     
 !(22s   rL   N)r   r!  r   r!  rk   r   r}   r   rm   r   r   r   rD   z(tuple[str, str, str, int, int, int, int])ro   z+tuple[str, int] | tuple[str, int, int, int]r   r   rD   z<tuple[str, tuple[str, int] | tuple[str, int, int, int], int])rG   rH   rI   rJ   rB   r   rK   rL   r+   r(   CustomResolverr    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   r   r   )	ra   set_custom_hostname_resolverr   r   r   AI_CANONNAMErB   r   r:   )rQ   r  crvalsrv   rw   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>.CustomSocketFactoryi  c                    SXU4$ )NhirL   )r&   rk   r}   rm   s       r(   r   >test_custom_socket_factory.<locals>.CustomSocketFactory.socket  s     &..r+   rL   N)rk   r   r}   r   rm   r   rD   z*tuple[str, AddressFamily, SocketKind, int])rG   rH   rI   rJ   r   rK   rL   r+   r(   CustomSocketFactoryr    s-    	/!	/ 	/ 		/
 8	/r+   r  r  r   r   r   r   )r  r   r   r   r   r/   )
ra   set_custom_socket_factoryr   r   r   r?   r   r   r   r   )r  csfr   wrappedr   r   s         r(   test_custom_socket_factoryr    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7fr!   )r[   r\   r   ra   r   rL   r+   r(   test_SocketType_is_abstractr  ;  s(     	y	! 
"	!	!s   A<	A
A
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  rH  r   r   )	ra   r   r  r/   r  r  r  r   r   )pathlsockcsockssockr   s        r(   check_AF_UNIX.test_unix_domain_socket.<locals>.check_AF_UNIXE  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]rD   rE   )	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!   )r[   r\   r   ClosedResourceErrorr   )r   r  s   r(   sender)test_interrupted_by_close.<locals>.senderp  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   )r[   r\   r   r  r   )r   s   r(   receiver+test_interrupted_by_close.<locals>.receivert  s:     u889ffQi :9 :9r  rd  )r?   r   re  r   r^   ra   r   r   r   r   r   r   )a_stdlibb_stdlibr  r  r   r   r  s        @@r(   test_interrupted_by_closer  a  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.)ranger?   r   rC  r   EMFILEENFILEr   r   r   r   r  r   rh  rg  r   )totalr   openedr   r   rV   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)rO   zpytest.MonkeyPatchrD   r   rd  )rQ   r   rD   rE   )r   zSocketType | SocketStreamrD   rE   )r  r!  r  r   rD   rE   )rD   rZ   )r  r   r&  r   rD   rE   )]
__future__r   r   r-   r   r   r?   r   r  pathlibr   r   r   typingr   r   r	   r
   r   r   attrsr[   r~   r   ra   _core._tests.tutilr   r   _socketr   r   r   r   testingr   r   typing_extensionsr   _highlevel_socketr   r   r!  r   r%  r   r   r   fixturerQ   r_   rf   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r   r   r   r  parametrizer   paramr   r  r  r  definer   rF  rJ  rj  rs  ru  rz  r  r  r  r  r  r  r  r  r  rL   r+   r(   <module>r     s   "   	  
   , C C   ' 9 G G @+0eCHouS#sC%7889		;Hi  &*(^3 P PD  &<0W7tF/,"
) 55nM+ N++ , , CLLG+LA B@0fH&	+&6 	goo&UG,,J?000 
00(# E    OO"%#+		
 	 2	 		
0x510x5v+&GV?1F-'*]*@K$4:<z:@
 33<TU V@<r+   