
    ,hy                       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
 d dlmZmZ d dl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mZmZ dd	lmZmZmZmZm Z  dd
l!m"Z"m#Z# er`d dl$m%Z% d 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   e*e+e-f   f   f   Z.de/d<   e0e.   Z1de/d<   e*ee,e-df   ee,e-e+df   e+e+e+e+f   Z2de/d<   n	de/d<   e3Z1e3Z2 G d d      Z4ejj                  dOd       Z6dPdZ7dPdZ8dQdZ9dPdZ:dPdZ;dPdZ<dPdZ=ej|                  j                   e@ed       d      dPd        ZAdPd!ZBedPd"       ZCej|                  j                  ej                  d#k7  d$      dPd%       ZEdPd&ZFdPd'ZGdRd(ZHdPd)ZIdPd*ZJej|                  j                  d+d,ej                  f ej                  d-ej                  e.      g      	 	 	 	 	 	 dSd/       ZOdPd0ZPdTd1ZQ ej                  d23       G d4 d5             ZSej|                  j                  d6ej                   eSd7d,d8d9:      f ej                  ej                   eSd;d-d<d=:      e.      g      dUd>       ZTdPd?ZUdPd@ZVedPdA       ZWedPdB       ZXdPdCZYdPdDZZdQdEZ[dPdFZ\dQdGZ]dPdHZ^dPdIZ_ej|                  j                   e@edJ       dK      dPdL       Z`dPdMZadPdNZby)V    )annotationsN)Path)AddressFamily
SocketKind)TYPE_CHECKINGUnioncast   )_coresocket)
binds_ipv6can_create_ipv6creates_ipv6slow)_NUMERIC_ONLYAddressFormat
SocketType_SocketType	_try_sync)assert_checkpointswait_all_tasks_blocked)Callable)	TypeAlias)SocketStreamr   GaiTupleGetAddrInfoResponseGetAddrInfoArgsobjectc                      e Zd ZdZ	 	 	 	 ddZ	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 d	dZ	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
dZ	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)MonkeypatchedGAI_orig_getaddrinfo
_responsesrecordc                .    || _         i | _        g | _        y Nr!   )selforig_getaddrinfos     Y/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/trio/_tests/test_socket.py__init__zMonkeypatchedGAI.__init__9   s!     "2  	 .0    c                    t        j                  | j                        }|j                  ||||||      }|j	                          |j
                  }	|j                  rJ |	S Nfamilytypeprotoflags)inspect	signaturer"   bindapply_defaultsargskwargs)
r'   hostportr/   r0   r1   r2   sigboundfrozenbounds
             r)   _frozenbindzMonkeypatchedGAI._frozenbindH   sZ      6 67tFURWXjj<<r+   c           
     L    || j                   | j                  ||||||      <   y r-   )r#   r>   )r'   responser9   r:   r/   r0   r1   r2   s           r)   setzMonkeypatchedGAI.setX   s:    &  	  		
r+   c                   | j                  ||||||      }| j                  j                  |       || j                  v r| j                  |   S |t        j
                  z  r| j                  ||||||      S t        d|       )Nz%gai called with unexpected arguments )r>   r$   appendr#   stdlib_socketAI_NUMERICHOSTr"   RuntimeError)r'   r9   r:   r/   r0   r1   r2   r<   s           r)   getaddrinfozMonkeypatchedGAI.getaddrinfom   s       tVT5%H5!DOO#??5))]111))$fdE5QQ!FugNOOr+   N)r(   zaCallable[[str | bytes | None, str | bytes | int | None, int, int, int, int], GetAddrInfoResponse]returnNone)r   r   r   r   )r9   str | bytes | Noner:   str | bytes | int | Noner/   intr0   rL   r1   rL   r2   rL   rH   r   )r@   GetAddrInfoResponse | strr9   rJ   r:   rK   r/   rL   r0   rL   r1   rL   r2   rL   rH   rI   )r9   rJ   r:   rK   r/   rL   r0   rL   r1   rL   r2   rL   rH   rM   )__name__
__module____qualname__	__slots__r*   r>   rA   rG    r+   r)   r    r    6   s7   =I0
0 
0&   ' 	
    
* + ! '	
     
2 P P 'P 	P
 P P P 
#Pr+   r    c                z    t        t        j                        }| j                  t        d|j                         |S )NrG   )r    rD   rG   setattr)monkeypatch
controllers     r)   	monkeygairW      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+   )r\   BaseExceptionrH   bool)r   r   pytestraisesKeyErrorBlockingIOErrorr[   )r]   s    r)   test__try_syncrd      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_SOCKETrD   TCP_NODELAYgaierrorntohsrR   r+   r)   test_socket_has_some_reexportsrk      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&   rR   )gai_tupr/   type__proto
_canonnamesockaddrs         r)   interesting_fieldsz;test_getaddrinfo.<locals>.check.<locals>.interesting_fields   s"     ;B7FE6:xE8,,r+   c                :    | D cg c]
  } |       c}S c c}w r&   rR   )gai_listro   rt   s     r)   filteredz1test_getaddrinfo.<locals>.check.<locals>.filtered   s!     @HHG&w/HHHs   )ro   r   rH   zatuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]])rv   r   rH   zglist[tuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]rR   )gotexpectedrw   rt   s      @r)   checkztest_getaddrinfo.<locals>.check   sM    		-		-
		-		I)		I
		I } 2222r+   	127.0.0.112345r0    )r{   90  ::1)r   r   r   r   x   hostr:   r   r.   r9   )r   r:   r   r   r   r   EAI_BADHINTSasdf)rx   r   ry   r   rH   rI   )r   rf   rG   SOCK_STREAMAF_INETIPPROTO_TCP
SOCK_DGRAMAF_INET6IPPROTO_UDPrA   r$   r`   ra   ri   EAI_SOCKTYPEaddEAI_SERVICEhasattrr   valueerrnorF   )rW   rz   resexcinfoexpected_errnoss        r)   test_getaddrinfor      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)r{   i  )r{   1234)z
google.comP   r   )	localhostr   r{   r   r{   80)	rD   NI_NUMERICHOSTNI_NUMERICSERVr   rf   getnameinfor`   ra   ri   )
ni_numericrx   r9   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)rN   rO   rP   rR   r+   r)   MySocketr   <  s    r+   r   )rD   
socketpairrZ   rf   r   from_stdlib_socketfilenosendrecvr`   ra   	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      )
rD   r   rf   fromfdr   r/   r0   r1   r   r   )r   r   r   s      r)   test_from_fdr   D  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>.childN  sA     oiioYYq\!T))) 	!s    A
AA
AA
A
)r   r   rH   rI   )rf   r   r   open_nursery
start_soon)r   abnurserys       r)   test_socketpair_simpler   M  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platformrf   r   shareosgetpidr   r   r   r   )r   r   shareda2s       r)   test_fromsharer   Z  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&   )rf   r   rZ   r   r/   r   ss    r)   test_socketr   i  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&   )rf   r   r   r   rZ   r   r/   r   s    r)   test_socket_v6r   o  sa     	(('*<*<	= ,!W//00xx7+++++, , ,s   3B<A;2	B;B Blinuxz
linux onlyc            	     ~  K   ddl m} m}m}m} t
        r| |fn| f}|D cg c]!  }||fD ]  }t        j                   ||       # }}}|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 c c}}w w)Nr   )r   r   r   r   r   )r   r   r   r   r   r   rD   rf   r   r/   r0   detachr   close)r   r   r   r   familiesr/   rp   socketsr   tsocket_sockettsocket_from_fds              r)   test_sniff_sockoptsr   v  s    AA '6"G:H  +.  	VU++G 
   v}}?$$55""fkk11 "..';O%%66##v{{22s   D=&D7C6D=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)NTFr   r   r/   r   
setsockopt)rf   r   rZ   r   rL   get_inheritableset_inheritabler   r   rh   
getsockoptreprr   r   dirr`   ra   AttributeErrorr   rD   r   r0   r/   r1   )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&   )rf   r   setsockopt_tests)r   _s     r)   test_SocketType_setsockoptr     s3     >>D	   s   :.	:7:c                   t        t        d      r1	 | 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# t
        $ r+}|j                  dt        j                  fv sJ Y d}~d}~ww xY w# 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   rf   r   rg   r   OSErrorr   EPERMr   rh   r`   ra   r   )r   es     r)   r   r     s    w)*	OOG..0G0GqQ  	OOG'')<)<eD 
y(L	M L++W-@-@%KL 
y(L	M H++W-@-@$GH H-  	77     	$L LH Hs/   0D 1E 0E	E" EEEE%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   )	rf   r   duprZ   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)	rf   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_typer{   r   )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   )rf   r   r5   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   )rf   r   is_readabler   r   wait_readabler   r  s     r)   test_SocketType_is_readabler  4  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   r/   TF)rD   rG   r   ri   rR   r+   r)   gai_without_v4mapped_is_buggyr  B  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)rN   rO   rP   __annotations__rR   r+   r)   r  r  K  s    MNNNr+   r  )r  addrsz0.0.0.0r  z255.255.255.255)r!  r   r"  r#  z::1::2z::ffff:255.255.255.255c                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>.pado  s,    d)a- d)a-r+   c                ,     |       |       k(  sJ y r&   rR   )actualry   r,  s     r)   	assert_eqz*test_SocketType_resolve.<locals>.assert_equ  s     8}F+++r+   r  Nr~   r   TlocalF)FTc                   K   j                  |        d {   }t        |t              sJ t        d|      S 7 "w)Nr1  ztuple[Union[str, int], ...])_resolve_address_nocprZ   tupler	   )r7   r   r2  r   s     r)   r   z$test_SocketType_resolve.<locals>.res  sK      #88 9   "%//95AA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  r6  )z::ffff:1.2.3.4r   )z<broadcast>{   r7  )r  r   EAI_ADDRFAMILY)r/   r0   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, ...]rH   r:  )r.  r:  ry   r:  rH   rI   )r7   ztuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int] | tuple[str, str] | tuple[str, str, int] | tuple[str, str, int, int]rH   r:  ) rf   r   r   rZ   r   r4  r   bytesr!  r   r"  r   IPPROTO_IPV6IPV6_V6ONLYr#  r  r`   ra   ri   
EAI_NONAME
EAI_NODATAr   r   r8  r   r   
AF_NETLINKr   r   r   r   r[   )r  r%  r/  nullrx   r   r   r   netlink_sockr  r2  r,  r   r+  s             @@@@r)   test_SocketType_resolverC  T  s    2 
((	(B,%,', 
, 
{	+ k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 # Y	5EB0B 'B" C& 9::U__b<QRL 113EFO 446HI$6 779KLO 446HI$6 779KL
 N 335GH$5 668JK$8 99;MN$5 668JK$8 99;MN  4 4g6I6I5Q$7 88:PQ C 4557MN 79 4 4g6I6I4P]]7#3#34 /o.../ $+#5#5w7I7I"J7$45#''(>(>?}}**o==
%&~~"-- ++  ",<<&<<V5<QQ ""$aGz9 %)n$$%z9 (,'''( 5 6777 34445 5cY	5%k5 k5 K L2 ; 24747
 46969 9 6 // /, R #G,  %% % (( ( 8 55 5Gk5 k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   r{   
   r   r   )z1.2:3r   )
rf   r   r5   r  r
  r  r  r`   ra   ri   )r   sock2s     r)    test_SocketType_unresolved_namesrG    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   1rE  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)NrE     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rL  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)NrE  )r   r`   ra   r   	Cancelledr   rN  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   brM  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   rU  rT  rM  rV  s   r)   t2z.test_SocketType_non_blocking_paths.<locals>.t25  rY  rZ  rU  rT  rH   rI   )rD   r   rf   r   setblockingr   r   CancelScopecancelr   r`   ra   rQ  r   r   r   r   r   cancel_scope)
r   r   cscoperO  r   rR  rX  r\  r   rW  s
           @@r)   "test_SocketType_non_blocking_pathsrc    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)Nr9  r   r   r   r{   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                  |       t        r&   )rZ   r   r`  rD   r   r   r/   r0   _sockr  rc   )r'   r  ra  r   s     r)   r  z;test_SocketType_connect_paths.<locals>.CancelSocket.connectb  sa    
 &dK88 '')!.!5!5		"DJ
 JJ&&w/))r+   N)r  r   rH   rI   )rN   rO   rP   r  )ra  r   s   r)   CancelSocketrg  a  s    *** *r+   rj  r   z^^\[\w+ \d+\] Error connecting to \('127\.0\.0\.\d', \d+\): (Connection refused|Unknown error)$)r{   r
   )rf   r   r`   ra   r[   r  r   r_  r`  rQ  r5   r
  rD   rZ   r   ri  r   r   r  r   r   )r  rj  ra  r   s     @@r)   test_SocketType_connect_pathsrk  G  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&&&C!	' !	'"'J 
	 1T]]s
 	1 ,,/000	11 1_ ,	, 	,, , 66 6	6 	66 6 2> ?? ?? ?=!	' !	' !	' !	'"' "'h 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)Nr{   z#^\[\w+ \d+\] Error connecting to \(z*, 2\): (Connection refused|Unknown error)$r   r
   )rf   r   r`   ra   r   r  )r  r   s     r)   test_address_in_socket_errorrm    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                  K   | dk(  sJ |rJ j                          t        j                          d {    y 7 wr0  )r`  r   
checkpoint)r  r2  ra  s     r)   r4  zVtest_resolve_address_exception_in_connect_closes_socket.<locals>._resolve_address_nocp  s7     
 "}$  ##%&&(((s   3><>r~   r   )r  r   r2  r_   rH   rI   )r   r_  rf   r   rZ   r   r4  r   r`   ra   rQ  r  r   )r   r4  ra  s     @r)   7test_resolve_address_exception_in_connect_closes_socketrq    s     				 '^^ 	')&) ) 	) dK00)>D&#% +]]5??3 +,,r***++ ;;=B&&&#	'' '" ++ ++ +	' 	'' 'su   DC80C,$C C	CC	C #C,C8		DC	CC  C)%C,,C5	1C88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   rE  s
   x         sendmsgs   xxxr   r}   re  r   MSG_MOREs   yyys   zzzs	   xxxyyyzzzs
   xxx       recvmsgr   recvmsg_intos   xyzwr)  r
   s   xys   zw s   yzs   xyz)rf   r   r   r   MSG_PEEK	bytearray	recv_intor   rs  r   r   r5   r  sendtorecvfromrt  recvfrom_intoru  rv  r  )r   r   buftargetstargetdatar  nbytesancdata	msg_flagsbuf1buf2rets                r)   test_send_recv_variantsr    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 ::1r   )r2   s   ::1badzfass.dezxn--fa-hia.deu   faß.de)rA   r   rf   rG   )rW   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   )rf   getprotobynamerR   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_gairR   )r'   r9   r:   r/   r0   r1   r2   s          r)   rG   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getaddrinfo1  s      !$fdE5IIs   
c                   K   d||fS w)N
custom_gnirR   )r'   rs   r2   s      r)   r   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getnameinfo<  s     
 !(E22s   N)r9   r   r:   r   r/   rL   r0   rL   r1   rL   r2   rL   rH   z(tuple[str, str, str, int, int, int, int])rs   z+tuple[str, int] | tuple[str, int, int, int]r2   rL   rH   z<tuple[str, tuple[str, int] | tuple[str, int, int, int], int])rN   rO   rP   rG   r   rR   r+   r)   CustomResolverr  0  su    		J		J 		J 			J
 		J 		J 		J 6		J	3A	3 	3 J		3r+   r  r   r   foor  s	   localhostu   föö)r  s
   xn--f-1gaar  r   r   r   r   r   )r  r   r   r   r   r:   r.   r9   )	rf   set_custom_hostname_resolverr   r   r   AI_CANONNAMErG   r   rA   )rW   r  crvalsrx   ry   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hirR   )r'   r/   r0   r1   s       r)   r   z>test_custom_socket_factory.<locals>.CustomSocketFactory.socketm  s     &$..r+   N)r/   r   r0   r   r1   rL   rH   z*tuple[str, AddressFamily, SocketKind, int])rN   rO   rP   r   rR   r+   r)   CustomSocketFactoryr  l  s-    	/!	/ 	/ 		/
 8	/r+   r  r  r   r   r
   r   )r  r   r
   r   r   r5   )
rf   set_custom_socket_factoryr   r   r   rD   r   r   r   r   )r  csfr   wrappedr   r   s         r)   test_custom_socket_factoryr  k  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                     t        j                  t              5  t        j                          d d d        y # 1 sw Y   y xY wr&   )r`   ra   r   rf   r   rR   r+   r)   test_SocketType_is_abstractr    s/    	y	!   s	   8AAF_UNIXzno unix domain socketsc                   K   dd} t        j                         5 } | | d       d {     | t        | d             d {     | t        j                  | d             d {    d d d        	 t        j
                  d      j                         j                  d      } | d|z          d {    y 7 7 {7 W# 1 sw Y   Vx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  rE  r   r   )	rf   r   r  r5   r
  r  r  r   r   )pathlsockcsockssockr   s        r)   check_AF_UNIXz.test_unix_domain_socket.<locals>.check_AF_UNIX  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/sockz/sock1z/sock2r	  asciis    trio-test-)r  zstr | bytes | os.PathLike[str]rH   rI   )	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-C1C#:A C :C;C ?C# CCCCC#C 	C C#C  C#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&   )r`   ra   r   ClosedResourceErrorr   )r   r  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   )r`   ra   r   r  r   )r   s   r)   receiverz+test_interrupted_by_close.<locals>.receiver  sE     u889  ffQi      r  r]  )rD   r   r^  r   rc   rf   r   r   r   r   r   r   )a_stdlibb_stdlibr  r  r   r   r  s        @@r)   test_interrupted_by_closer    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.)rangerD   r   r   r   EMFILEENFILEr   r   r   r   r  r   ra  r`  r   )totalr   openedr   r   r\   r   r   s           r)   test_many_socketsr    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	)rU   zpytest.MonkeyPatchrH   r    r]  )rW   r    rH   rI   )r   zSocketType | SocketStreamrH   rI   )r  r   r  r   rH   rI   )rH   r_   )r  r   r%  r  rH   rI   )c
__future__r   r   r3   r   r   rD   r   r  pathlibr   r   r   typingr   r   r	   attrsr`   r~   r   rf   _core._tests.tutilr   r   r   r   _socketr   r   r   r   r   testingr   r   collections.abcr   typing_extensionsr   _highlevel_socketr   r5  rL   r   r;  r   r$  listr   r   r   r    fixturerW   rd   rk   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r   r   r   r  parametrizer   paramr   r  r  r  definer  rC  rG  rc  rk  rm  rq  r  r  r  r  r  r  r  r  r  rR   r+   r)   <module>r     s   "   	  
   , - -   ' P P V V @(+0eCHouS#sC%78%U
:KKL		NHi  &*(^3!&c5$c5#t#$	"OY   OGP GPT  &<0W7tF/,"
) 55nM+ N++ , , CLLG+LA BB0fHB	+&6 	goo&UG,,J?000 
00(# E    OO"%#+		
 	 2	 		
0z510z5z+&GV E1 E1R 	- 	-'.]*@K$4:<z:@
 33<TU V@<r+   