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

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

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

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

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

/P2OO
O0P;O<APO.
P0O95O1
63O9)O4
*&O9PO7P P$(	P51L44
M>M	
MM
M'"P*M--
M<7P?N	
NN
N#	P)N/,P/O5N86O	POPO+OO+&	P1O94O97P9P?P PP
P!	P$$
P2.P5c            
       ^^#    [         R                  " 5        m[        R                  " [        SS9   TR                  S5      I S h  vN   S S S 5        S S S 5        [         R                  " 5        m[        R                  " 5        mTR                  5         [        R                  " [        R                  5         TR                  S5      I S h  vN   S S S 5        S S S 5        S S S 5        [        R                  " 5        m[         R                  " 5        m[         R                  " 5        n U R                  S5      I S h  vN   U R                  5          " UU4S jS[        R                  5      n[        T[        5      (       d   eTR                  R!                  5         U" 5       Tl        [#        5          [        R                  " [        R                  5         TR                  U R%                  5       5      I S h  vN   S S S 5        S S S 5        TR'                  5       S:X  d   e S S S 5        S S S 5        S S S 5        [         R                  " 5        m[        R                  " [(        S	S9   TR                  S
5      I S h  vN   S S S 5        S S S 5        g  GN\! , (       d  f       GNa= f! , (       d  f       GNk= f GN! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f GN GN! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f N! , (       d  f       N= f! , (       d  f       g = f7f)NrF  r   r   r   r   r   c                  0   > \ rS rSr    SU U4S jjrSrg)3test_SocketType_connect_paths.<locals>.CancelSocketiY  c                  > [        T[        5      (       d   eTR                  5         [        R                  " U R                  5       U R                  U R                  5      Tl        TR                  R                  U5        [        er&   )r`   r   rq  rG   r   r   r0   r1   _sockr  rj   )r'   r  rr  r   s     r)   r  ;test_SocketType_connect_paths.<locals>.CancelSocket.connectZ  sg    
 &dK8888 '')!.!5!5		"DJ
 JJ&&w/))r,   rX   N)r  r   rL   rM   )rR   rS   rT   rU   r  rW   )rr  r   s   r)   CancelSocketrx  Y  s    *** * *r,   r|  r   z^^\[\w+ \d+\] Error connecting to \('127\.0\.0\.\d', \d+\): (Connection refused|Unknown error)$)r   r
   )rm   r   rg   rh   ra   r  r   rp  rq  r_  r6   r  rG   r`   r   rz  r   r   r  r   r   )r  r|  rr  r   s     @@r)   test_SocketType_connect_pathsr}  @  sO    		T]]]

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

CC-C 
C*'C-)C**C-c            	       ^^#    [         R                  " 5       u  pU    U   U R                  S5        SS-  m  U R                  T5        M  ! [         a     Of = f[
        R                  " U 5      mSUU4S jjnSU4S jjn[        R                  " 5        IS h  vN  nUR                  U5        UR                  U5        [        5       I S h  vN    TR                  5         S S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fS S S 5        O! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f7f)NFr   i c                    >#    [         R                  " [        R                  5         T R	                  T5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7fr&   )rg   rh   r   ClosedResourceErrorr   )r   r  s   r)   sender)test_interrupted_by_close.<locals>.sender  s<     u889ffTl"" :9" :9,   %AAAA	AA
AAc                    >#    [         R                  " [        R                  5         T R	                  S5      I S h  vN   S S S 5        g  N! , (       d  f       g = f7f)Nr   )rg   rh   r   r  r   )r   s   r)   receiver+test_interrupted_by_close.<locals>.receiver  s:     u889ffQi :9 :9r  rn  )rG   r   ro  r   rj   rm   r   r   r   r   r   r   )a_stdlibb_stdlibr  r  r   r   r  s        @@r)   test_interrupted_by_closer    s     &113H	8U#e|	d#  		 &&x0	# 	#	  %%''7v&x((***GGI	 ('''''+ 88s   ED7DA
ADAADB 
D"0C:C
C:(D3C64D:D DDD	D7
D+	'D7.	E7
EEc                   #    Sn / n[        SU S5       H!  n [        R                  " 5       u  p4XU/-  nM#     [        R                  " 5        IS h  vN nU H#  nUR                  [        R                  U5        M%     [        R                  " 5       I S h  vN   UR                  R                  5         S S S 5      IS h  vN   U H  nUR                  5         M     g ! [         aK  nUR                  [        R
                  [        R                  4;   d   e[        SU S35         S nA  M  S nAff = f N N Nz! , IS h  vN  (       d  f       N= f7f)Ni  r   r
   zUnable to open more than z	 sockets.)rangerG   r   r   r   EMFILEENFILEr   r   r   r   r!  r   rr  rq  r   )totalr   openedr   r   rb   r   r   s           r)   test_many_socketsr    s    EG5!$		 ++-DA 	q6 % !!##wFu22F; **,,,##%	 $#
    	 99u|| <<<<-fXY?@	 $ 	- $###s   EC!#ED9EAD?D;D?7ED=E!
D6+?D1*E1D66E;D?=E?EEEE)r[   zpytest.MonkeyPatchrL   r   rn  )r]   r   rL   rM   )r   zSocketType | SocketStreamrL   rM   )r  r*  r  r   rL   rM   )rL   rf   )r  r   r/  r)  rL   rM   )b
__future__r   r   r4   r   r   rG   r   r  pathlibr   r   r   typingr   r   r	   attrsrg   r   r   rm   _core._tests.tutilr   r   r   _socketr   r   r   r   r   testingr   r   collections.abcr   typing_extensionsr   _highlevel_socketr   rA  rP   r*  rH  r   r.  listr   r   r   r   fixturer]   rk   rr   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r   r   r  r  parametrizer   paramr   r  r"  r&  definer)  rP  rT  rt  r}  r  r  r  r  r  r  r  r  r  r  r  rX   r,   r)   <module>r     sz   "   	  
   , - -   ' J J 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4	+&6 	goo&UG,,J?000 
00(# E    OO"%#+		
 	 2	 		
0z510z5z+&GVB1L-'.]*@K$4:<z:@
 33<TU V@<r,   