
    #)f>                    4   U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZmZmZmZmZ d dlZd dlZddlmZmZ ddlmZmZ ddlmZmZmZmZ dd	lm Z m!Z! er7d d
l"m#Z# ddl$m%Z% ee	e
e&e'eee'e&f   ee'e&e&e&f   f   f   Z(de)d<   ee(   Z*de)d<   nde)d<   e+Z* G d d      Z,ejZ                  dLd       Z.dMdZ/dMdZ0dNdZ1dMdZ2dMdZ3dMdZ4dMdZ5ejl                  jo                   e8ed       d      dMd       Z9dMdZ:edMd       Z;ejl                  jo                  ejx                  d k7  d!      dMd"       Z=dMd#Z>dMd$Z?dOd%Z@dMd&ZAdMd'ZBejl                  j                  d(d)ej                  f ej                  d*ej                  e+      g      	 	 	 	 	 	 dPd,       ZGdMd-ZHdQd.ZI ej                  d/0       G d1 d2             ZKejl                  j                  d3ej                   eKd4d)d5d67      f ej                  ej                   eKd8d*d9d:7      e+      g      dRd;       ZLdMd<ZMdMd=ZNdMd>ZOdMd?ZPdMd@ZQdMdAZRdNdBZSdMdCZTdNdDZUdMdEZVdMdFZWejl                  jo                   e8edG       dH      dMdI       ZXdMdJZYdMdKZZy)S    )annotationsN)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                  <    e Zd ZddZddZ	 	 	 	 	 	 	 	 ddZd	dZy)
MonkeypatchedGAIc                .    || _         i | _        g | _        y N)_orig_getaddrinfo
_responsesrecord)selforig_getaddrinfos     T/var/www/html/flask-app/venv/lib/python3.12/site-packages/trio/_tests/test_socket.py__init__zMonkeypatchedGAI.__init__+   s    !1LN-/    c                    t        j                  | j                        } |j                  |i |}|j	                          |j
                  }|j                  rJ |S r   )inspect	signaturer    bindapply_defaultsargskwargs)r#   r-   r.   sigboundfrozenbounds         r%   _frozenbindzMonkeypatchedGAI._frozenbind1   sR     6 67$)&)jj<<r'   c                B    || j                    | j                  |i |<   y r   )r!   r2   )r#   responser-   r.   s       r%   setzMonkeypatchedGAI.set9   s&     >F((($9&9:r'   c                    | j                   |i |}| j                  j                  |       || j                  v r| j                  |   S |d   t        j
                  z  r | j                  |i |S t        d|       )Nz%gai called with unexpected arguments )r2   r"   appendr!   stdlib_socketAI_NUMERICHOSTr    RuntimeError)r#   r-   r.   r0   s       r%   getaddrinfozMonkeypatchedGAI.getaddrinfo>   s       $1&15!DOO#??5))2Y555)4))4:6::!FugNOOr'   N)r$   z"Callable[..., GetAddrInfoResponse]returnNone)r-   r   r.   r   r=   ztuple[Any, ...])r4   GetAddrInfoResponse | strr-   r   r.   r   r=   r>   )r-   r   r.   r   r=   r?   )__name__
__module____qualname__r&   r2   r5   r<    r'   r%   r   r   *   s<    0F1F:=FILF	F
Pr'   r   c                z    t        t        j                        }| j                  t        d|j                         |S )Nr<   )r   r9   r<   setattr)monkeypatch
controllers     r%   	monkeygairH   I   s0    !-";";<J}j6L6LMr'   c            	       K   t               5  t               4 d {    	 d d d       d {    d d d        t               5  t        j                  t              5  t               4 d {    t        7 [7 L# 1 d {  7  sw Y   \xY w# 1 sw Y   `xY w7 /# 1 d {  7  sw Y   nxY w	 d d d        n# 1 sw Y   nxY wd d d        n# 1 sw Y   nxY wt               4 d {  7   t
        # 1 d {  7  sw Y   nxY wdd} t        |       4 d {  7   t        # 1 d {  7  sw Y   nxY wt               5  t        j                  t
              5  t        |       4 d {  7   t
        # 1 d {  7  sw Y   nxY w	 d d d        n# 1 sw Y   nxY wd d d        y # 1 sw Y   y xY ww)Nc                "    t        | t              S r   )
isinstance
ValueError)excs    r%   _is_ValueErrorz&test__try_sync.<locals>._is_ValueError]   s    #z**r'   )rM   BaseExceptionr=   bool)r   r   pytestraisesKeyErrorBlockingIOErrorrL   )rN   s    r%   test__try_syncrU   P   s    		 ; 	 		 	 
	 ]]8$ 	 {  	 	 	 	 	     	 	 	  
 {    + (     
	 &]]?+ 	& 0 & &%%& & & &	& 	& 	&& & &sk  GBA8BA<BA:BGCB>-B
.B>1B8B:B<B	BB	
BBGB>B1%B(&B1-B>5	C>C	C
	GCG-C0.G2C99D?D DG!D$"G&D--D?3D64D?;GF6&F!6E9
7F!;FFF	FF!	F6!F*	&F6-	G6F?;Gc                    t         j                  t        j                  k(  sJ t         j                  t        j                  k(  sJ t         j                  t        j                  k(  sJ t         j
                  t        j
                  k(  sJ y r   )tsocket
SOL_SOCKETr9   TCP_NODELAYgaierrorntohsrC   r'   r%   test_socket_has_some_reexportsr\   n   s_    !9!999-";";;;}5555==M/////r'   c           	       K   dd}t               5  t        j                  ddt        j                         d {   }d d d         |t        j                  t        j                  t        j
                  ddfg       t               5  t        j                  ddt        j                         d {   }d d d         ||t        j                  t        j                  t        j                  ddfg       | j                  d	d
ddddd       t               5  t        j                  dd       d {   }d d d        |d	k(  sJ | j                  d   dk(  sJ t               5  t        j                  t        j                        5 }t        j                  ddd       d {    d d d        d d d        t        j                  h}|j                  t        j                          t#        t        d      r|j                  t        j$                         j&                  j(                  |v sJ t               5  t        j                  t*              5  t        j                  dd       d {    d d d        d d d        y 7 P# 1 sw Y   PxY w7 # 1 sw Y   xY w7 t# 1 sw Y   txY w7 # 1 sw Y   xY w# 1 sw Y   xY w7 b# 1 sw Y   axY w# 1 sw Y   y xY ww)Nc                P    	 	 	 	 dd	 	 	 	 dfd} ||        ||      k(  sJ y )Nc                    | \  }}}}}|||fS r   rC   )gai_tupfamilytype_proto	canonnamesockaddrs         r%   interesting_fieldsz;test_getaddrinfo.<locals>.check.<locals>.interesting_fields   s"     9@5FE5)XE8,,r'   c                :    | D cg c]
  } |       c}S c c}w r   rC   )gai_listr`   rf   s     r%   filteredz1test_getaddrinfo.<locals>.check.<locals>.filtered   s!     @HHG&w/HHHs   )r`   r   r=   zdtuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int]])rh   r   r=   zjlist[tuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int]]]rC   )gotexpectedri   rf   s      @r%   checkztest_getaddrinfo.<locals>.check{   sM    		-		-
		-		I)		I
		I } 2222r'   	127.0.0.112345type )rm   90  ::1)rs   rr   r   r   x   hostportr   ra   rp   rc   flagshostr7   )ru   rv   r   r   r   r   EAI_BADHINTSasdf)rj   r   rk   r   r=   r>   )r   rW   r<   SOCK_STREAMAF_INETIPPROTO_TCP
SOCK_DGRAMAF_INET6IPPROTO_UDPr5   r"   rQ   rR   rZ   EAI_SOCKTYPEaddEAI_SERVICEhasattrrz   valueerrnor;   )rH   rl   resexcinfoexpected_errnoss        r%   test_getaddrinfor   z   s    3> 
	 X''W7CVCVWWX 
 ####$	
 
	 Q''wW=O=OPPQ	   ""##$	
 MM#wqqMK		 8''778#:B#@@@ 
	 ?]]7++, 	?%%eW2>>>	?? ++,O++,w'G001==/11
 
	 7]]<( 	7%%fg666	77 7i XX X" QQ Q" 88 8 ?	? 	?? ?" 7	7 	77 7s  K2*JJJ AK2*J5J6J:A#K2J.7J+8J.<-K2)$KJ>)J;*J>.K6BK2K&K5K6K:K&	K2JJK2JJ(#K2+J..J83K2;J>>K	KKK2KK#	K&&K/+K2c                    K   t         j                  t         j                  z  } t               5  t	        j
                  d|        d {   }d d d        dk(  sJ t               5  t        j                  t        j                        5  t	        j
                  dd       d {    d d d        d d d        t               5  t        j                  t        j                        5  t	        j
                  dd       d {    d d d        d d d        t        j
                  dd      \  }}t	        j
                  dd       d {   }|||fk(  sJ t	        j
                  dt        j                         d {   }|d|fk(  sJ t	        j
                  dt        j                         d {   }||dfk(  sJ y 7 y# 1 sw Y   yxY w7 -# 1 sw Y   -xY w# 1 sw Y   2xY w7 # 1 sw Y   xY w# 1 sw Y   xY w7 7 7 Yw)	N)rm   i  )rm   1234)z
google.comP   r   )	localhostr   rm   r   rm   80)	r9   NI_NUMERICHOSTNI_NUMERICSERVr   rW   getnameinforQ   rR   rZ   )
ni_numericrj   ry   services       r%   test_getnameinfor      s    --0L0LLJ		 I''(;ZHHI''' 
	 =]]7++, 	=%%&8!<<<	== 
	 <]]7++, 	<%%&7;;;	<<
 "--.?CMD' ##$5q9
9C4/!!##$5w7M7MN
NC;(((##$5w7M7MN
NC4,/ II I =	= 	== = <	< 	<< < : O Os   ,HGG	GH&$G!
G$G%G)G!1H$G<'G0G.G0G<:HH	4H=H
>4H2H3HGG	HGG	G!!G+&H.G00G9	5G<<HH
HHc                 P  K   t        j                         \  } }t        | t        j                        rJ | 5  |5  t        j
                  |       }t        |t        j                        sJ | j                         |j                         k(  sJ |j                  d       d {    |j                  d      dk(  sJ 	 d d d        d d d        t        j                  t              5  t        j
                  d       d d d         G d dt         j                        } |       5 }t        j                  t              5  t        j
                  |       d d d        d d d        y 7 # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   8xY w# 1 sw Y   y xY ww)N   x   c                      e Zd Zy))test_from_stdlib_socket.<locals>.MySocketN)r@   rA   rB   rC   r'   r%   MySocketr     s    r'   r   )r9   
socketpairrK   rW   r   from_stdlib_socketfilenosendrecvrQ   rR   	TypeErrorr   )sasbtar   mysocks        r%   test_from_stdlib_socketr      sU    %%'FB"g0011	 "R "''+"g0011yy{biik))ggdmwwqzT!!!" " 
y	! &""1%&=''  
 /v]]9% 	/&&v.	// / 		" " " "& &	/ 	// /s   6F&E6A)E*$E(%E* E6!F&)F?(F&'FFF	F&(E**E3	/E66E?;F&FF&F	FF#F&c                   K   t        j                         \  } }t        j                  | j	                         | j
                  | j                  | j                        }| 5  |5  |5  |j	                         | j	                         k7  sJ |j                  d       d {    |j                  d      dk(  sJ 	 d d d        d d d        d d d        y 7 4# 1 sw Y   xY w# 1 sw Y    xY w# 1 sw Y   y xY ww)Nr      )
r9   r   rW   fromfdr   ra   rp   rc   r   r   )r   r   r   s      r%   test_from_fdr     s     %%'FB			RYY	BB	 "R " "yy{biik))ggdmwwqzT!!!" " " "" " " " " "s`   AC9 C-#C!&8CC
C:C!C-
	C9CCC!!C*	&C--C62C9c            	     r  K   dd} t        j                         \  }}|5  |5  t        j                         4 d {   }|j	                  | |       |j	                  | |       d d d       d {    d d d        d d d        y 7 I7 # 1 d {  7  sw Y   'xY w# 1 sw Y   +xY w# 1 sw Y   y xY ww)Nc                   K   t        d       | j                  d       d {    | j                  d       d {   dk(  sJ y 7 #7 w)Nzsending hello   hr   )printr   r   socks    r%   childz%test_socketpair_simple.<locals>.child  sA     oiioYYq\!T))) 	!s    A
AA
AA
A
)r   r   r=   r>   )rW   r   r   open_nursery
start_soon)r   abnurserys       r%   test_socketpair_simpler     s     *
 DAq	
 )A )%%' 	) 	)7ua(ua(	) 	)) ) )	) 	) 	) 	) 	)) ) ) )sy   B7B+BB
B %B
%B0B1B5B+=	B7BB
BBBBB(	$B++B40B7	fromsharezwindows only)reasonc                 &  K   t         rt        j                  dk7  ry t        j                         \  } }| 5  |5  | j                  t        j                               }t        j                  |      }|5  | j                         |j                         k7  sJ |j                  d       d {    |j                  d       d {   dk(  sJ 	 d d d        d d d        d d d        y 7 <7 %# 1 sw Y   xY w# 1 sw Y   "xY w# 1 sw Y   y xY ww)Nwin32r   r   )r   sysplatformrW   r   shareosgetpidr   r   r   r   )r   r   shareda2s       r%   test_fromsharer   #  s     0DAq	
 +A +%v& 	+88:,,''$-?d***	+	+ + +  "	+ 	+	+ + + +so   4DD;C948C-,C)
-C-C+
	C-C9D 	D)C-+C--C62C99D	>DD
Dc                    K   t        j                         5 } t        | t         j                        sJ | j                  t         j
                  k(  sJ 	 d d d        y # 1 sw Y   y xY wwr   )rW   r   rK   r   ra   r}   ss    r%   test_socketr   2  sO     		 +Q!W//00xx7??***+ + +s   A)<A	A)A&"A)c                   K   t        j                  t         j                  t         j                        5 } t	        | t         j
                        sJ | j                  t         j                  k(  sJ 	 d d d        y # 1 sw Y   y xY wwr   )rW   r   r   r   rK   r   ra   r   s    r%   test_socket_v6r   8  sa     	(('*<*<	= ,!W//00xx7+++++, , ,s   3B<A;2	B;B Blinuxz
linux onlyc                 n  K   ddl m} m}m}m} g }| |fD ]0  }||fD ]'  }|j                  t        j                   ||             ) 2 |D ]  }t        j                   |j                               }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                          t        j                  |j                         | |      }	|	j                  |j                  k(  sJ |	j                  |j                  k(  sJ |	j                          |j                           y w)Nr   )r}   r   r   r|   r   )r   r}   r   r   r|   r8   r9   rW   r   ra   rp   detachr   close)
r}   r   r   r|   socketsra   rb   r   tsocket_sockettsocket_from_fds
             r%   test_sniff_sockoptsr   ?  s    AA GH% @ +. 	@ENN=//>?	@@   v}}?$$55""fkk11 "..';O%%66##v{{22s   D3D5c                    K   t        j                         } | 5 }|| u sJ t        | j                         t              sJ | j                         rJ | j                  d       | j                         sJ | j                  t         j                  t         j                  d       | j                  t         j                  t         j                        rJ | j                  t         j                  t         j                  d       | j                  t         j                  t         j                        sJ 	 d d d        | j                         dk(  sJ t        |        t        j                         5 } | j                         }| j                         |k(  sJ | j                         dk(  sJ 	 d d d        t        j                         } | j                         dk\  sJ | j                          | j                         dk(  sJ dt        |       v sJ dt        |       v sJ dt        |       v sJ t        j                   t"              5  | j$                   d d d        t'        j                         }t        j(                  |      } | j*                  |j*                  k(  sJ | j,                  |j,                  k(  sJ | j.                  |j.                  k(  sJ | j                          y # 1 sw Y   xY w# 1 sw Y   KxY w# 1 sw Y   xY ww)NTFr7   r   ra   r   
setsockopt)rW   r   rK   r   intget_inheritableset_inheritabler   r~   rY   
getsockoptreprr   r   dirrQ   rR   AttributeErrorr{   r9   r   rp   ra   rc   )r   cm_enter_valuefdstdlib_socks       r%   test_SocketType_basicsr   _  sX    >>D	 
I%%$++---''))T"##%%++W-@-@%H??7#6#68K8KLL++W-@-@$Gw22G4G4GHHH
I ;;=B 	J 
	 #T[[]{{}""{{}"""# >>D;;=AJJL;;=B
 s4y  SY3t9$$ 
~	& 		  &&(K%%k2D99((((;;+,,,,::****JJL]
I 
I$# #& sO   LDK(4<L0;K5,BLLBL(K2-L5K?:LLLc                 x   K   t        j                         } | 5 }t        |        d d d        y # 1 sw Y   y xY wwr   )rW   r   setsockopt_tests)r   _s     r%   test_SocketType_setsockoptr     s3     >>D	   s   :.	:7:c                `   t        t        d      r0| j                  t        j                  t        j                  dd       | j                  t        j
                  t        j                  d       t        j                  t        d      5  | j                  t        j
                  t        j                  dd       ddd       t        j                  t        d      5  | j                  t        j
                  t        j                  d       ddd       y# 1 sw Y   ]xY w# 1 sw Y   yxY w)z6Extract these out, to be reused for SocketStream also.SO_BINDTODEVICENr   Fz"invalid value for argument 'value'match   )
r   rW   r   rX   r   r~   rY   rQ   rR   r   r   s    r%   r   r     s     w)***G,C,CT1M 	OOG'')<)<eD 
y(L	M L++W-@-@%KL 
y(L	M H++W-@-@$GH H	L LH Hs   1D0D$D!$D-c                   K   t        j                         \  } }| 5  |5  | j                         }|5  t        |t         j                        sJ |j                         | j                         k7  sJ | j                          |j                  d       d {    |j                  d       d {   dk(  sJ 	 d d d        d d d        d d d        y 7 <7 %# 1 sw Y   xY w# 1 sw Y   "xY w# 1 sw Y   y xY wwNr   r   )	rW   r   duprK   r   r   r   r   r   )r   r   r   s      r%   test_SocketType_dupr     s     DAq	
 +A +UUW 	+b'"4"45599;!((*,,GGI''$-?d***	++ + +  "	+ 	++ + + +so   C;C/C#A$CC
C/C
0	C:C#C/
	C;CCC C##C,	(C//C84C;c                 ~  K   t        j                         \  } }| 5  |5  | j                  d       d {    |j                  d       d {   dk(  sJ | j                  rJ |j                  rJ | j                  t         j                         | j                  sJ |j                  rJ |j                  d       d {   dk(  sJ |j                  d       d {    | j                  d       d {   dk(  sJ 	 d d d        d d d        t        j                         \  } }| 5  |5  | j                  rJ | j                  t         j                         | j                  rJ 	 d d d        d d d        t        j                         \  } }| 5  |5  | j                  rJ | j                  t         j                         | j                  sJ 	 d d d        d d d        y 7 7 7 +7 7 # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY w# 1 sw Y   y xY ww)Nr   r   r'      y)	rW   r   r   r   did_shutdown_SHUT_WRshutdownSHUT_WRSHUT_RD	SHUT_RDWRr   r   s     r%   test_SocketType_shutdownr     s    DAq	
 
'A 
'ffTlVVAY$&&))))))	

7??#%%%)))VVAY#%%ffTlVVAY$&&&
' 
' DAq	
 *A *)))	

7??#))))* *
 DAq	
 &A &)))	

7$$%%%%%& & &% 	 
' 
' 
' 
'* * * *& & & &s   H=HG5G'G5G*A4G5G-G5 G0!G59G3:	G5H!H=-H0<H-H5!H=H1<H%H1	H='G5*G5-G50G53G55G>	:HH
H=H	HH"H=%H.	*H11H:6H=)addresssocket_typerm   rs   )marksc           	     <  K   t        j                  |      }t        j                  |      }|5  |5  |j                  | df       d {    |j                  d       |j	                         d d }t        j                         4 d {   }|j                  |j                  |       |j                          d {   \  }}d d d       d {    5  |j                         cxk(  r|j	                         k(  sJ  J |j                  d       d {    |j                  d       d {   dk(  sJ 	 d d d        d d d        d d d        y 7 7 7 7 # 1 d {  7  sw Y   xY w7 Z7 C# 1 sw Y   <xY w# 1 sw Y   @xY w# 1 sw Y   y xY ww)Nr      r   r   r   )rW   r   r+   listengetsocknamer   r   r   connectacceptgetpeernamer   r   )r   r   listenerclientaddrr   serverclient_addrs           r%   test_SocketType_simple_serverr    ss     ~~k*H^^K(F	 
06 
0mmWaL)))##%bq)%%' 	: 	:7v~~t4(0(9"9FK	: 	:  	0&"4"4"6N&:L:L:NNNNN++d###Q'4///	0
0 
0 
0)	:"9	: 	: 	: 	:
 $'	0 	0
0 
0 
0 
0s   -FFF	E
A F
E
F0E>E
?EFEFAE8E4
E82E6
3	E8=FF	FFFEFE1%E(&E1-F4E86E88F=FF		FFFc                   K   t        j                         \  } }| 5  |5  | j                         rJ |j                  d       d {    t	        j
                  |        d {    | j                         sJ | j                  d       d {   dk(  sJ | j                         rJ 	 d d d        d d d        y 7 u7 Z7 1# 1 sw Y   xY w# 1 sw Y   y xY wwr   )rW   r   is_readabler   r   wait_readabler   r   s     r%   test_SocketType_is_readabler    s     DAq	
 #A #==?"ffTl!!!$$$}}VVAY$&&==?"?# # #$# # # #si   CC'CB<C#B>$*CC C+C3	C<C>C CC	CCCc                     	 t        j                  ddt         j                         y# t         j                  $ r Y yw xY w)N1.2.3.4r   ra   TF)r9   r<   r   rZ   rC   r'   r%   gai_without_v4mapped_is_buggyr    s>    !!)Q}7M7MN  !! s   &) ??F)slotsc                  6    e Zd ZU ded<   ded<   ded<   ded<   y)	Addressesstrbind_allr   	arbitrary	broadcastN)r@   rA   rB   __annotations__rC   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                N
  
K   | t         j                  k(  d%fd	 	 	 	 	 	 d&fd}t        j                  |       5 t        t              sJ dD ]  }j                  |dfd       d {   }t        |t        t        f      rJ  |||j                  df       j                  |dfd       d {   }t        |t        t        f      rJ  |||j                  df        d	D ]  
	 	 	 	 d'
fd
} | ||j                  df       d {   |j                  df       r, | |d       d {   d        | |d       d {   d        | |d       d {   d        | |d       d {   d        | |d       d {   d        | |d       d {   d        | |d       d {   d        | |d       d {   d        | |d       d {   d        | |d       d {   d       j                  t         j                  t         j                  d        | |d       d {   d        | |d       d {   |j                  df       rt               sԉj                  t         j                  t         j                  d       t!        j"                  t         j$                        5 } |d       d {    d d d        t         j&                  t         j(                  h}t+        t         d      r|j-                  t         j.                         j0                  j2                  |v sJ 	 t        j                  t         j4                  t         j6                        }t        |t              sJ |j                  d
       d {   dk(  sJ |j9                          d}	t!        j"                  t>        |	       5   |d!       d {    d d d        t!        j"                  t>        |	       5   |d"       d {    d d d        t!        j"                  t>        |	       5  r |d#       d {    n |d$       d {    d d d         	 d d d        y 7 $7 7 7 _7 K7 77 #7 7 7 7 7 7 7 h7 T7 # 1 sw Y   xY w7 # t:        t<        f$ r Y w xY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 7 # 1 sw Y   $xY w# 1 sw Y   y xY ww)(Nc                P    r"t        |       dk  r| dz  } t        |       dk  r| S )N   )r   )len)r  v6s    r%   padz$test_SocketType_resolve.<locals>.pad'  s,    d)a- d)a-r'   c                ,     |       |       k(  sJ y r   rC   )actualrk   r  s     r%   	assert_eqz*test_SocketType_resolve.<locals>.assert_eq-  s     8}F+++r'   r  )Nrq   r   TlocalF)FTc                F   K   j                  |        d {   S 7 w)Nr#  )_resolve_address_nocp)r-   r$  r   s    r%   r   z$test_SocketType_resolve.<locals>.resF  s1      "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  r'  )z::ffff:1.2.3.4r   )z<broadcast>{   r(  )r  r   EAI_ADDRFAMILY)ra   rp   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, ...]r=   r+  )r!  r+  rk   r+  r=   r>   )r-   ztuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int] | tuple[str, str] | tuple[str, str, int] | tuple[str, str, int, int]r=   r   ) rW   r   r   rK   r   r&  r  bytesr  r   r  r   IPPROTO_IPV6IPV6_V6ONLYr  r  rQ   rR   rZ   
EAI_NONAME
EAI_NODATAr   r   r)  r   r   
AF_NETLINKr   r   r   OSErrorrL   )r   r  r"  nullrj   r   r   r   netlink_sockr   r$  r  r   r  s             @@@@r%   test_SocketType_resolver5    s    2 
((	(B,%,1F,	,
 
{	+ h5t$,,  	2D22D":T2JJC!#U|44cENNB/022D":U2KKC!#U|44cEOOR01	2 # V	5E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 4 4g6I6I4P]]7#3#34 /o.../ $+#5#5w7I7I"J7$45#''(>(>?}}**o==
%&~~"--G4F4F  ",<<&<<V5<QQ ""$aGz9 %)n$$%z9 (,'''( 5 6777 34445 5]V	5%h5 h5 K L. ; 24747
 46969 9 6 // /* R #G,  %% % (( ( 8 55 5Ah5 h5s  <T%0T2R3A	T<R=ATR%T RTR"T.R%/TR(TR+T3R.4T
R1T!R4"T8R79TR:ATR=T,S -A3T S,S
-S1A1T#3S(T>S?6T5S.S,
S.#T)S<5S:
6S<:#TT+T
,T<T

=TT	T%TTTT"T%T(T+T.T1T4T7T:T=T TSS	TS)%T(S))T,S..S73T:S<<TTT
TTTT"T%c                   K   t        j                         5 } | j                  d       d {    | j                         d   dk(  sJ | j	                  d       t        j                         5 }|j                  d| j                         d   f       d {    |j                         | j                         k(  sJ 	 d d d        d d d        t        j                         5 } t        j                  t         j                        5  | j                  d       d {    d d d        d d d        y 7 7 # 1 sw Y   yxY w# 1 sw Y   }xY w7 2# 1 sw Y   1xY w# 1 sw Y   y xY ww)N)r   r   r   rm   
   r   r   )z1.2:3r7   )
rW   r   r+   r   r   r   r  rQ   rR   rZ   )r   sock2s     r%    test_SocketType_unresolved_namesr9    s7    		 =Tii()))!!$33B^^ 	=--d.>.>.@.C DEEE$$&$*:*:*<<<<	== 
	 +T]]7++, 	+))M***	++ + 	*
 F	= 	== = +	+ 	++ +s   E)ED2AE.(D7D5'D7?EE)#$EEEE!E)	E)2E5D77E 	<EEE)EE	EE&"E)c            
       	K   t        j                         \  } }| 5  |5  t        j                  |       |j	                  d       |j                  d       t        j                         5 }|j                          t               5  t        j                  t        j                        5  j                  d       d {    d d d        d d d        d d d        t               5  j                  d       d {   dk(  sJ 	 d d d        t               5  t        j                  t              5  j                  d       d {    d d d        d d d        dfd}t        j                         4 d {   }|j!                  |       t#                d {    |j                  d       d d d       d {    dfd}t        j                         4 d {   }|j!                  |       t#                d {    |j$                  j                          d d d       d {    t        j                  |      	d	fd}d	fd	}t        j                         4 d {   }|j!                  |       |j!                  |       t#                d {    | j                  d
       |j                  d       t#                d {    | j                  d
       |j                  d       d d d       d {    d d d        d d d        y 7 _# 1 sw Y   _xY w# 1 sw Y   dxY w# 1 sw Y   ixY w7 M# 1 sw Y   GxY w7 # 1 sw Y   xY w# 1 sw Y   xY w7 7 7 # 1 d {  7  sw Y   xY w7 7 7 l# 1 d {  7  sw Y   }xY w7 E7 7 7 # 1 d {  7  sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY ww)NF   1r7  hahac                    K   t               5   j                  d       d {   dk(  sJ 	 d d d        y 7 # 1 sw Y   y xY ww)Nr7     2r   r   r   s   r%   do_successful_blocking_recvzGtest_SocketType_non_blocking_paths.<locals>.do_successful_blocking_recv  sC     #% 1WWR[(D0001 1(1 1s$   A97	9	A9AAr>  c                    K   t               5  t        j                  t        j                        5   j                  d       d {    d d d        d d d        y 7 # 1 sw Y   xY w# 1 sw Y   y xY ww)Nr7  )r   rQ   rR   r   	Cancelledr   r@  s   r%   do_cancelled_blocking_recvzFtest_SocketType_non_blocking_paths.<locals>.do_cancelled_blocking_recv  s`     #% &]]5??3 &''"+%%&& &%& && &sE   A7$A+AAAA+	A7AA(	$A++A40A7c                   K   t               5   j                  d       d {   dk(  sJ 	 d d d        t               5  j                  d       d {   dk(  sJ 	 d d d        y 7 E# 1 sw Y   >xY w7 !# 1 sw Y   y xY ww)Nr      a   br?  r   tbs   r%   t1z.test_SocketType_non_blocking_paths.<locals>.t1       #% 0WWQZ'4///0#% 0WWQZ'4///0 0 (0 0 (0 0U   BA+A)	A+B A9A7	A9 	B)A++A40B7A99B>Bc                   K   t               5  j                  d       d {   dk(  sJ 	 d d d        t               5   j                  d       d {   dk(  sJ 	 d d d        y 7 E# 1 sw Y   >xY w7 !# 1 sw Y   y xY ww)Nr   rG  rF  r?  rH  s   r%   t2z.test_SocketType_non_blocking_paths.<locals>.t2  rK  rL  rG  rF  r=   r>   )r9   r   rW   r   setblockingr   r   CancelScopecancelr   rQ   rR   rC  r   r   r   r   r   cancel_scope)
r   r   cscoperA  r   rD  rJ  rN  r   rI  s
           @@r%   "test_SocketType_non_blocking_pathsrU    sA    ##%DAq	
 EA E''*	e 	
t  	&FMMO#% &]]5??3 &''"+%%&&	&  ! 	-$,,,	-  ! 	&y) &ggfo%%&	&
	1 %%' 	 	7:;(***FF4L	 		&
 %%' 	* 	*79:(***  '')	* 	* ''*	0	0 %%' 	 	7r"r"(***FF4LFF4L(***FF4LFF4L	 	{E E E && && &	& 	& %	- 	-
 && &	& 	&	*	 	 	 		**	* 	* 	* 	*2	 + +	 	 	 	{E E E Es  O,O AO-L=$L0	,L#L L#L0	L=O(M=M

>	MOM*4M		M
M	M*&O<M7
=O N M:
 N 5O M="O#N
$O'NN
N%O0N1?O0N5
1O40N?$N8
%3N?N;
&N??O
N=OO 	O, L##L-(L0	0L:5L==MO
MMOM	M'"M**M4/	O:N =O NN	N	ONON2%N(&N2-	O8N?;N?=O?OOOOO	O  O)%O,c            
     z  K   t        j                         5 t        j                  t        d      5  j                  d       d {    d d d        d d d        t        j                         5 t        j                         5 j                          t        j                  t        j                        5  j                  d       d {    d d d        d d d        d d d        t        j                         5 t        j                         5 t        j                         5 } | j                  d       d {    | j                           G fddt        j                        }t        t              sJ j                  j!                           |       _        t#               5  t        j                  t        j                        5  j                  | j%                                d {    d d d        d d d        j'                         dk(  sJ 	 d d d        d d d        d d d        t        j                         5 t        j                  t(        d	      5  j                  d
       d {    d d d        d d d        y 7 O# 1 sw Y   OxY w# 1 sw Y   TxY w7 # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w7 7 # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w7 # 1 sw Y   xY w# 1 sw Y   y xY ww)Nr*  r   r   r   rm   r   c                      e Zd Zd fdZy)3test_SocketType_connect_paths.<locals>.CancelSocketc                   t        t              sJ j                          t        j                  | j                         | j                  | j                        _         j                  j                  |i | t        r   )rK   r   rR  r9   r   r   ra   rp   _sockr   rT   )r#   r-   r.   rS  r   s      r%   r   z;test_SocketType_connect_paths.<locals>.CancelSocket.connect  sd    %dK88 '')!.!5!5t{{DII"DJ 'DJJ&&77))r'   N)r-   r   r.   r   r=   r>   )r@   rA   rB   r   )rS  r   s   r%   CancelSocketrY    s    
*r'   r\  r7   z^^\[\w+ \d+\] Error connecting to \('127\.0\.0\.\d', \d+\): (Connection refused|Unknown error)$)rm   r   )rW   r   rQ   rR   rL   r   r   rQ  rR  rC  r+   r   r9   rK   r   r[  r   r   r   r   r2  )r  r\  rS  r   s     @@r%   test_SocketType_connect_pathsr]    s    		 ,T]]]
 	,
 ,,{+++	,, 
	 6T  	6L!u/ 6ll#45556	66 
			 '^^ 	'w~~'7 	'8-- 0111OO
*}33 * dK00JJ%DJ#% ?]]5??3 ?,,x';';'=>>>?? ;;=B&&&9	' 	''@ 
	 1T]]s
 	1 ,,/000	11 1U ,	, 	,, , 66 6	6 	66 6 24 ?? ?? ?3	' 	' 	' 	'' 'X 1	1 	11 1s~  L;J)J
JJJ)L;3K4K<J9J6
J9KK&L;LL	,K=K 
A2K=4$K1	#K%;K#<K% K1	K=&L	.L6L;L/.L#L!L#L/	L;JJ&	!J))J3.L;6J99K>KK	KKL; K=#K%%K.*K1	1K:6K==LL		L	LLL;!L##L,	(L//L84L;c                   K   d} t        j                         5 }t        j                  t        d| d      5  |j                  | df       d {    d d d        d d d        y 7 # 1 sw Y   xY w# 1 sw Y   y xY ww)Nrm   z#^\[\w+ \d+\] Error connecting to \(z*, 2\): (Connection refused|Unknown error)$r   r   )rW   r   rQ   rR   r2  r   )r   r   s     r%   test_address_in_socket_errorr_  <  s     G		 -T]]8Cmn
 	- ,,|,,,		-- -
 -		- 	-- -sE   B  A4A(A&A(A4	B &A((A1	-A44A=9B c            	       K   t        j                         5 t        j                         5 } 	 	 	 	 	 	 	 	 dfd}t	        | t
              sJ || _        t               5  t        j                  t         j                        5  | j                  d       d {    d d d        d d d        | j                         dk(  sJ 	 d d d        d d d        y 7 ;# 1 sw Y   :xY w# 1 sw Y   >xY w# 1 sw Y   ,xY w# 1 sw Y   y xY ww)Nc                j   K   j                          t        j                          d {    y 7 wr   )rR  r   
checkpoint)r#   r-   r.   rS  s      r%   r&  zVtest_resolve_address_exception_in_connect_closes_socket.<locals>._resolve_address_nocpK  s'      ##%&&(((s   (313rq   r7   )r#   r   r-   r   r.   r   r=   r>   )r   rQ  rW   r   rK   r   r&  r   rQ   rR   rC  r   r   )r   r&  rS  s     @r%   7test_resolve_address_exception_in_connect_closes_socketrc  F  s     				 '^^ 	'))"%)14)) dK00)>D&#% +]]5??3 +,,r***++ ;;=B&&&	'' ' ++ ++ +	' 	'' 'su   DC:2C.$C"C	CC	C"%C.C:	DC	CC""C+'C..C7	3C::D?Dc            	       K   t        j                         \  } }| 5  |5  | j                  d       d {   dk(  sJ |j                  dt         j                         d {   dk(  sJ |j                  d       d {   dk(  sJ | j                  d       d {    t        d      }|j                  |       d {    |dk(  sJ t        | d      r>| j                  dgg        d {   dk(  sJ |j                  d       d {   dk(  sJ d d d        d d d        t        j                  t         j                        } t        j                  t         j                        }| 5  |5  | j                  d	       d {    |j                  d	       d {    |j                         d
|j                         d   fg}|D ]Y  }| j                  d|       d {   dk(  sJ |j                  d       d {   \  }}|dk(  sJ || j                         k(  rYJ  t        t         d      r| j                  dt         j                  |j                                d {    | j                  dt         j                  |j                                d {    | j                  d|j                                d {    |j                  d       d {   \  }}|dk(  sJ || j                         k(  sJ | j                  d|j                                d {   dk(  sJ t        d      }|j!                  |       d {   \  }}|dk(  sJ |dk(  sJ || j                         k(  sJ t        |d      ru| j                  d|j                                d {   dk(  sJ |j#                  d       d {   \  }}}	}|dk(  sJ |g k(  sJ |	dk(  sJ || j                         k(  sJ t        |d      r| j                  d|j                                d {   dk(  sJ t        d      }
t        d      }|j%                  |
|g       d {   }|\  }}}	}|dk(  sJ |
dk(  sJ |dk(  sJ |g k(  sJ |	dk(  sJ || j                         k(  sJ t        | d      rX|D ]S  }| j                  ddgg d|       d {   dk(  sJ |j                  d       d {   d| j                         fk(  rSJ  d d d        d d d        t        j                  t         j                        } t        j                  t         j                        }| 5  |5  |j                  d	       d {    | j'                  |j                                d {    | j                  d       d {    | j                  d       d {    |j                  d       d {   dk(  sJ |j                  d       d {   dk(  sJ 	 d d d        d d d        y 7 7 7 7 7 v7 K7 0# 1 sw Y   +xY w# 1 sw Y   0xY w7 7 7 z7 _7 7 7 7 7 G7 !7 7 7 O7 7 7 # 1 sw Y   xY w# 1 sw Y   xY w7 %7 7 7 7 7 # 1 sw Y   xY w# 1 sw Y   y xY ww)Nr   r   r7  s
   x         sendmsgs   xxxr   ro   rW  r   MSG_MOREs   yyys   zzzs	   xxxyyyzzzs
   xxx       recvmsgr   recvmsg_intos   xyzwr  r   s   xys   zw s   yzs   xyz)rW   r   r   r   MSG_PEEK	bytearray	recv_intor   re  r   r   r+   r   sendtorecvfromrf  recvfrom_intorg  rh  r   )r   r   buftargetstargetdatar  nbytesancdata	msg_flagsbuf1buf2rets                r%   test_send_recv_variantsry  Y  s    DAq	
 .A .VVD\!Q&&VVB 0 011T99VVBZ4'' ffTlmkk#(((1i F8R00A55#v--. .  	G../AG../A	
 =IA =Iff%&&&ff%&&&==?[!--/!2D$EF  	+F&&11Q66!"B/LT46>!1==?**		+ 7J'((67#3#3Q]]_EEE((67#3#3Q]]_EEE((61==?333!"B/LT4<''1==?** XXfammo66!;;m s33{***q}}&&1i &!--/::a??56YYr]/B,T7It6>!b= >!1==?**1n%'1==?;;q@@Q<DQ<Dd|44C14.VWiQ;5= ?**b= >!1==?**1i ! IYYe}b!VDDIIZZ^+/HHHIw=I =I~ 	G../AG../A	
 *A *ff%&&&ii((( ffVnffVnVVBZ6))VVBZ6)))* * *c "1 	 1#. . . .& 	'& 2/ FE3/
 73 ;/B < 5 E+{=I =I =I =ID 	'( 	* * * *s  [
YY X+,Y !X."Y ?X1 Y X4#Y X7-Y /X:0Y X=	Y YA[
1Z4Z
	Y
Z
"Y#AZ
&Y 
'Z
Y#
!Z
'AZ
,Y&-6Z
#Y)$'Z
Y,Z
$Y/%AZ
+Y2,(Z
Y5AZ
.Y8/Z
Y;A"Z
/Y>05Z
%Z&A-Z
Z
Z
1Z
2Z

Z
ZA[
'Z>*Z2?Z$ &Z2&Z''Z2?Z* Z2Z,Z21Z.2Z2Z0	Z2Z>"	[
+Y .Y 1Y 4Y 7Y :Y =Y  Y
	YY[
Z
Z
 Z
#Z
&Z
)Z
,Z
/Z
2Z
5Z
8Z
;Z
>Z
Z
Z
Z

Z	ZZ![
$Z2'Z2*Z2,Z2.Z20Z22Z;	7Z>>[[
c                T  K   | j                  ddd       | j                  dddt               | j                  dddt               | j                  dd	d       | j                  dd
d       t        j                  dd       d {   dk(  sJ t        j                  dd       d {   dk(  sJ t        j                  dd       d {   dk(  sJ t        j                  d
d       d {   dk(  sJ t        j                  dd       d {   dk(  sJ y 7 7 u7 T7 37 w)Nu
   ok faß.des   xn--fa-hia.der   zok ::1rs   )rx   s   ::1badzfass.dezxn--fa-hia.deu   faß.de)r5   r   rW   r<   )rH   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$$_b99\II$$%5r::lJJJ	 0039:sZ   BD(D"D(*D +"D(D""D(0D$1"D(D&D( D("D($D(&D(c                    K   t        j                  d       d {   dk(  sJ t        j                  d       d {   dk(  sJ y 7 ,7 w)Nudp   tcp   )rW   getprotobynamerC   r'   r%   test_getprotobynamer    sF      ''.."44''..!333 /.s   AA!AA
A
Ac           	       K    G d d      } |       }t        j                  |      J t         j                  dddfdt         j                  ddfddt         j                  dfdddt         j
                  ffD ],  }t        j                  ddg|  d {   dddg|k(  r,J  t        j                  dd       d {   }d	}||k(  sJ t        j                  d
d       d {   dk(  sJ t        j                  d       |u sJ | j                  ddddddd       t        j                  dd       d {   dk(  sJ y 7 7 7 b7 w)Nc                  D    e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZy)5test_custom_hostname_resolver.<locals>.CustomResolverc                   K   d||||||fS w)N
custom_gairC   )r#   ry   rv   ra   rp   rc   rx   s          r%   r<   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getaddrinfo  s      !$fdE5IIs   
c                   K   d||fS w)N
custom_gnirC   )r#   re   rx   s      r%   r   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getnameinfo  s      !(E22s   N)ry   r  rv   r  ra   r   rp   r   rc   r   rx   r   r=   z(tuple[str, str, str, int, int, int, int])re   z+tuple[str, int] | tuple[str, int, int, int]rx   r   r=   z<tuple[str, tuple[str, int] | tuple[str, int, int, int], int])r@   rA   rB   r<   r   rC   r'   r%   CustomResolverr    sp    		J		J 		J 			J
 		J 		J 		J 6		J	3G	3PS	3I	3r'   r  r   r   foor  s	   localhostu   föö)r  s
   xn--f-1gaar  r   r   r   r   r   )r  r   r   rt   ru   rv   rw   ry   )	rW   set_custom_hostname_resolverr}   r|   r~   AI_CANONNAMEr<   r   r5   )rH   r  crvalsrj   rk   s         r%   test_custom_hostname_resolverr    sw    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(E)AE<E=E	EEEc                   K    G d d      }  |        }t        j                  |      J t        j                         dt         j                  t         j                  dfk(  sJ t        j                  ddd      dk(  sJ t        j                         j                         }t        j                  |	      }t        |d
      sJ |j                          t        j                         \  }}|5  |5  t        |d
      sJ t        |d
      sJ 	 d d d        d d d        t        j                  d       |u sJ y # 1 sw Y   +xY w# 1 sw Y   /xY ww)Nc                  $    e Zd Z	 	 	 	 	 	 	 	 ddZy)7test_custom_socket_factory.<locals>.CustomSocketFactoryc                    d|||fS )NhirC   )r#   ra   rp   rc   s       r%   r   z>test_custom_socket_factory.<locals>.CustomSocketFactory.socket  s     &$..r'   N)ra   r   rp   r   rc   r   r=   z*tuple[str, AddressFamily, SocketKind, int])r@   rA   rB   r   rC   r'   r%   CustomSocketFactoryr    s-    	/!	/ 	/ 		/
 8	/r'   r  r  r   r   r   r   )r  r   r   r   r   r+   )
rW   set_custom_socket_factoryr   r}   r|   r9   r   r   r   r   )r  csfr   wrappedr   r   s         r%   test_custom_socket_factoryr    s"    / / 
C,,S199>>goow7J7JANNN>>!Q"o55 
				&	&	(BnnB'G7F##MMO DAq	
 "A "q&!!q&!!!" " ,,T2c999	" " " "s6   C-E/E2D:E"E:E	?EEEc                    K   t        j                  t              5  t        j                          d d d        y # 1 sw Y   y xY wwr   )rQ   rR   r   rW   r   rC   r'   r%   test_SocketType_is_abstractr  -  s2     	y	!   s   A:	AAAAF_UNIXzno unix domain socketsc                 B  K   dd} t        j                         5 }| d} | |       d {    d d d        	 t        j                  d      j	                         j                  d      } | d|z          d {    y 7 S# 1 sw Y   RxY w7 # t        $ r Y y w xY ww)Nc                ^  K   t        j                  t         j                        5 }|j                  |        d {    |j	                  d       t        j                  t         j                        5 }|j                  |        d {    |j                          d {   \  }}|5  |j                  d       d {    |j                  d       d {   dk(  sJ 	 d d d        d d d        d d d        y 7 7 u7 _7 B7 +# 1 sw Y   $xY w# 1 sw Y   (xY w# 1 sw Y   y xY ww)Nr  r7  r   r   )	rW   r   r  r+   r   r   r   r   r   )pathlsockcsockssockr   s        r%   check_AF_UNIXz.test_unix_domain_socket.<locals>.check_AF_UNIX7  s     ^^7??3 	7u**T"""LLw7 75mmD)))!&/q 7**T***!&A.$66677	7 	7" */*.7 77 7	7 	7s   %D-D!C?9D!6DDD#D$	D-D	D
D	D
	D	&D.D!6	D-?D!DDD	D		DDD	D!!D*&D-z/sockr   asciis    trio-test-)r  zstr | bytesr=   r>   )tempfileTemporaryDirectoryr   urandomhexencodeFileNotFoundError)r  tmpdirr  cookies       r%   test_unix_domain_socketr  2  s     
	7 
	$	$	& "&D!!!"B##%,,W5-6777	 	"" " 	8 sa   BBB BBA B :B;B ?B BBBB 	BBBBc            	     f  K   t        j                         \  } }| 5  |5  | j                  d       ddz  	 	 | j                         # t        $ r Y nw xY wt        j                  |       dfd}dfd}t        j                         4 d {  7  }|j                  |       |j                  |       t                d {  7   j                          d d d       d {  7   n# 1 d {  7  sw Y   nxY wd d d        n# 1 sw Y   nxY wd d d        y # 1 sw Y   y xY ww)NFr   i c                    K   t        j                  t        j                        5   j	                         d {    d d d        y 7 # 1 sw Y   y xY wwr   )rQ   rR   r   ClosedResourceErrorr   )r   rr  s   r%   senderz)test_interrupted_by_close.<locals>.sender_  sG     u889 #ffTl""# #"# #,   $AAA
A	A
AAAc                    K   t        j                  t        j                        5   j	                  d       d {    d d d        y 7 # 1 sw Y   y xY ww)Nr   )rQ   rR   r   r  r   )r   s   r%   receiverz+test_interrupted_by_close.<locals>.receiverc  sE     u889  ffQi      r  rO  )r9   r   rP  r   rT   rW   r   r   r   r   r   r   )a_stdlibb_stdlibr  r  r   r   rr  s        @@r%   test_interrupted_by_closer  P  s    &113Hh	 8 U#e|	d#  		 &&x0	#	  %%' 	 	7v&x((***GGI		 	 	 	 	+     s   D1D%DA	ADA=DB
D0C2
C
C2 D+C.,D2D8C;9D D	D%D	D%	D1%D.*D1c                   K   d} g }t        d| d      D ]!  }	 t        j                         \  }}|||gz  }# t        j                         4 d {   }|D ]"  }|j                  t        j                  |       $ t        j                          d {    |j                  j                          d d d       d {    |D ]  }|j                           y # t        $ rH}|j                  t        j
                  t        j                  fv sJ t        d| d       Y d }~ d }~ww xY w7 7 7 t# 1 d {  7  sw Y   xY ww)Ni  r   r   zUnable to open more than z	 sockets.)ranger9   r   r2  r   EMFILEENFILEr   r   r   r   r
  r   rS  rR  r   )totalr   openedr   r   rM   r   r   s           r%   test_many_socketsr  n  s<    EG5!$ 		 ++-DAq 	Aq6 !!# & &w 	<Fu22F;	<**,,,##%	& &
    	 99u|| <<<-fXY?@	& 	-& & & &s   E	C!E	D.E	?D4D0D42E	=D2>E		D+#=D& E	&D++E	0D42E	4E:D=;EE	)rF   zpytest.MonkeyPatchr=   r   rO  )rH   r   r=   r>   )r   zSocketType | SocketStreamr=   r>   )r   r  r   r   r=   r>   )r=   rP   )r   r   r  r  r=   r>   )[
__future__r   r   r)   r   r   r9   r   r  r   r   typingr   r   r   r	   r
   r   attrsrQ   rq   r   rW   _core._tests.tutilr   r   _socketr   r   r   r   testingr   r   typing_extensionsr   _highlevel_socketr   r   r  r   r  r   r   r   fixturerH   rU   r\   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r   r   r   r   parametrizer}   paramr   r  r  r  definer  r5  r9  rU  r]  r_  rc  ry  r|  r  r  r  r  r  r  r  rC   r'   r%   <module>r     s   "   	  
  , C C   ' 9 G G @+0eCHouS#sC%7889		;Hi  &*(^3 P P>  &<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	 		
0v510v5r+&GV=1B-'&]*@K$48<v:@
 33<TU V:<r'   