
     nhy                       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j5        d\d            Z6d]dZ7d]dZ8d^dZ9d]dZ:d]dZ;d]d Z<d]d!Z=ej>        ?                     e@ed"           d#$          d]d%            ZAd]d&ZBed]d'            ZCej>        ?                    ejD        d(k    d)$          d]d*            ZEd]d+ZFd]d,ZGd_d/ZHd]d0ZId]d1ZJej>        K                    d2d3ejL        f ejM        d4ejN        e5          g          d`d:            ZOd]d;ZPdad=ZQ ejR        d>?           G d@ dA                      ZSej>        K                    dBejL         eSdCd3dDdEF          f ejM        ejN         eSdGd4dHdIF          e5          g          dbdK            ZTd]dLZUd]dMZVed]dN            ZWed]dO            ZXd]dPZYd]dQZZd^dRZ[d]dSZ\d^dTZ]d]dUZ^d]dVZ_ej>        ?                     e@edW           dX$          d]dY            Z`d]dZZad]d[ZbdS )c    )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                  P    e Zd ZdZddZ	 	 	 	 dddZ	 	 	 	 dddZ	 	 	 	 dddZdS )MonkeypatchedGAI_orig_getaddrinfo
_responsesrecordorig_getaddrinfoaCallable[[str | bytes | None, str | bytes | int | None, int, int, int, int], GetAddrInfoResponse]returnNonec                0    || _         i | _        g | _        d S Nr!   )selfr%   s     k/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.11/site-packages/trio/_tests/test_socket.py__init__zMonkeypatchedGAI.__init__9   s%     "2  	 .0    r   hoststr | bytes | Noneportstr | bytes | int | Nonefamilyinttypeprotoflagsr   c                    t          j        | j                  }|                    ||||||          }|                                 |j        }	|j        rJ |	S Nr3   r5   r6   r7   )inspect	signaturer"   bindapply_defaultsargskwargs)
r+   r/   r1   r3   r5   r6   r7   sigboundfrozenbounds
             r,   _frozenbindzMonkeypatchedGAI._frozenbindH   sb      677tFURWXXj<r.   responseGetAddrInfoResponse | strc           
     L    || j         |                     ||||||          <   d S r9   )r#   rD   )r+   rE   r/   r1   r3   r5   r6   r7   s           r,   setzMonkeypatchedGAI.setX   sG    &  	   		
 		
 		
r.   c                   |                      ||||||          }| j                            |           || j        v r| j        |         S |t          j        z  r|                     ||||||          S t          d|           )Nz%gai called with unexpected arguments )rD   r$   appendr#   stdlib_socketAI_NUMERICHOSTr"   RuntimeError)r+   r/   r1   r3   r5   r6   r7   rB   s           r,   getaddrinfozMonkeypatchedGAI.getaddrinfom   s       tVT5%HH5!!!DO##?5))]11 	P))$fdE5QQQNuNNOOOr.   N)r%   r&   r'   r(   )r   r   r   r   )r/   r0   r1   r2   r3   r4   r5   r4   r6   r4   r7   r4   r'   r   )rE   rF   r/   r0   r1   r2   r3   r4   r5   r4   r6   r4   r7   r4   r'   r(   )r/   r0   r1   r2   r3   r4   r5   r4   r6   r4   r7   r4   r'   rF   )__name__
__module____qualname__	__slots__r-   rD   rH   rN    r.   r,   r    r    6   s        =I0 0 0 0&     *     2 P P P P P P Pr.   r    monkeypatchpytest.MonkeyPatchr'   c                z    t          t          j                  }|                     t          d|j                   |S )NrN   )r    rK   rN   setattr)rT   
controllers     r,   	monkeygairY      s3    !-";<<J}j6LMMMr.   r(   c                   K   t                      5  t                      4 d {V  	 d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   t                      5  t          j        t                    5  t                      4 d {V  t          # 1 d {V swxY w Y   	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t                      4 d {V  t
          # 1 d {V swxY w Y   dd} t          |           4 d {V  t          # 1 d {V swxY w Y   t                      5  t          j        t
                    5  t          |           4 d {V  t
          # 1 d {V swxY w Y   	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NexcBaseExceptionr'   boolc                ,    t          | t                    S r*   )
isinstance
ValueError)r[   s    r,   _is_ValueErrorz&test__try_sync.<locals>._is_ValueError   s    #z***r.   )r[   r\   r'   r]   )r   r   pytestraisesKeyErrorBlockingIOErrorr`   )ra   s    r,   test__try_syncrf      s     			  ;; 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	               
		  ]8$$ 	 	 {{                      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	              
 {{                     + + + + ((                      
		 & &]?++ 	& 	& 00 & & & & & & & &%%& & & & & & & & & & & & & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&& & & & & & & & & & & & & & & & & &s   A:A
A	AA	AAA0C
CB''
B11C4B15C9CC			CC		CC #C ;D
DD-D55
D?D?G.F*F
FF*FF*G*F.	.G1F.	2GG	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 d S r*   )tsocket
SOL_SOCKETrK   TCP_NODELAYgaierrorntohsrS   r.   r,   test_socket_has_some_reexportsrm      sc    !99999-";;;;;}55555=M///////r.   rY   c           	       K   dd}t                      5  t          j        ddt          j        	           d {V }d d d            n# 1 swxY w Y    ||t          j        t          j        t          j        d
dfg           t                      5  t          j        ddt          j        	           d {V }d d d            n# 1 swxY w Y    ||t          j        t          j        t          j        d
dfg           | 	                    ddddddd           t                      5  t          j        dd           d {V }d d d            n# 1 swxY w Y   |dk    sJ | j
        d         dk    sJ t                      5  t          j        t          j                  5 }t          j        ddd	           d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        h}|                    t          j                   t#          t          d          r|                    t          j                   |j        j        |v sJ t                      5  t          j        t*                    5  t          j        dd           d {V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Ngotr   expectedr'   r(   c                P    d
ddfd	} ||            ||          k    sJ d S )Ngai_tupr   r'   atuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]c                    | \  }}}}}|||fS r*   rS   )rr   r3   type__proto
_canonnamesockaddrs         r,   interesting_fieldsz;test_getaddrinfo.<locals>.check.<locals>.interesting_fields   s"     ;B7FE6:xE8,,r.   gai_listr   glist[tuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int, int] | tuple[int, bytes]]]c                     fd| D             S )Nc                &    g | ]} |          S rS   rS   ).0rr   ry   s     r,   
<listcomp>zEtest_getaddrinfo.<locals>.check.<locals>.filtered.<locals>.<listcomp>   s%    HHHG&&w//HHHr.   rS   )rz   ry   s    r,   filteredz1test_getaddrinfo.<locals>.check.<locals>.filtered   s      IHHHxHHHHr.   )rr   r   r'   rs   )rz   r   r'   r{   rS   )ro   rp   r   ry   s      @r,   checkztest_getaddrinfo.<locals>.check   sf    		- 		- 		- 		-		I 		I 		I 		I 		I 		I x}} 2 2222222r.   	127.0.0.112345r5    )r   90  ::1)r   r   r   r   x   hostr1   r   r:   r/   )r   r1   r   r   r   r   EAI_BADHINTSasdf)ro   r   rp   r   r'   r(   )r   rh   rN   SOCK_STREAMAF_INETIPPROTO_TCP
SOCK_DGRAMAF_INET6IPPROTO_UDPrH   r$   rb   rc   rk   EAI_SOCKTYPEaddEAI_SERVICEhasattrr   valueerrnorM   )rY   r   resexcinfoexpected_errnoss        r,   test_getaddrinfor      s     3 3 3 3> 
		 X X'W7CVWWWWWWWWWX X X X X X X X X X X X X X X 
E ##$	
   
		 Q Q'wW=OPPPPPPPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q	E  "#$	
   MM#wqqMKKK			 8 8'777777778 8 8 8 8 8 8 8 8 8 8 8 8 8 8#::::B#@@@@@ 
		 ? ?]7+,, 	?%eW2>>>>>>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? +,O+,,,w'' 2G0111=/1111
 
		 7 7]<(( 	7 	7%fg666666666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   (A		AA(CC
C
+EEEG'&GG'G	G'G	G''G+.G+0K

J2&K
2J6	6K
9J6	:K

KKc                   K   t           j        t           j        z  } t                      5  t	          j        d|            d {V }d d d            n# 1 swxY w Y   |dk    sJ t                      5  t          j        t          j                  5  t	          j        dd           d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t                      5  t          j        t          j                  5  t	          j        dd           d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        dd          \  }}t	          j        dd           d {V }|||fk    sJ t	          j        dt          j                   d {V }|d|fk    sJ t	          j        dt          j                   d {V }||dfk    sJ d S )	N)r   i  )r   1234)z
google.comP   r   )	localhostr   r   r   r   80)	rK   NI_NUMERICHOSTNI_NUMERICSERVr   rh   getnameinforb   rc   rk   )
ni_numericro   r/   services       r,   test_getnameinfor     sw     -0LLJ			 I I'(;ZHHHHHHHHI I I I I I I I I I I I I I I''''' 
		 = =]7+,, 	= 	=%&8!<<<<<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	== = = = = = = = = = = = = = = 
		 < <]7+,, 	< 	<%&7;;;;;;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<< < < < < < < < < < < < < < <
 "-.?CCMD' #$5q99
9
9
9
9
9
9C4/!!!!#$5w7MNN
N
N
N
N
N
NC;(((((#$5w7MNN
N
N
N
N
N
NC4,s}   AAA3CB:.C:B>	>CB>	CCC*E	D1%E1D5	5E8D5	9EEEc                   K   t          j                    \  } }t          | t          j                  rJ | 5  |5  t          j        |           }t          |t          j                  sJ |                                 |                                k    sJ |                    d           d {V  |                    d          dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j
        t                    5  t          j        d           d d d            n# 1 swxY w Y    G d dt           j                  } |            5 }t          j
        t                    5  t          j        |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N   x   c                      e Zd ZdS ))test_from_stdlib_socket.<locals>.MySocketN)rO   rP   rQ   rS   r.   r,   MySocketr   <  s        r.   r   )rK   
socketpairr_   rh   r   from_stdlib_socketfilenosendrecvrb   rc   	TypeErrorr   )sasbtar   mysocks        r,   test_from_stdlib_socketr   .  s     %''FB"g011111	 " "R " "'++"g011111yy{{biikk))))ggdmmwwqzzT!!!!!" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 
y	!	! & &"1%%%& & & & & & & & & & & & & & &    ='    
 /v]9%% 	/ 	/&v...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	// / / / / / / / / / / / / / / / / /s}   C1BCC1C	C1!C	"C11C58C5D66D:=D:#F6=FF6F"	"F6%F"	&F66F:=F:c                 
  K   t          j                    \  } }t          j        |                                 | j        | j        | j                  }| 5  |5  |5  |                                |                                 k    sJ |                    d           d {V  |	                    d          dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr      )
rK   r   rh   fromfdr   r3   r5   r6   r   r   )r   r   r   s      r,   test_from_fdr   D  s     %''FB			RY	B	BB	 " "R " " " "yy{{biikk))))ggdmmwwqzzT!!!!!" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "s[   C8C A#C	=C 	CC CC C8 C$	$C8'C$	(C88C<?C<c                 z  K   dd} t          j                    \  }}|5  |5  t          j                    4 d {V }|                    | |           |                    | |           d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nsockr   r'   r(   c                   K   t          d           |                     d           d {V  |                     d           d {V dk    sJ d S )Nzsending hello   hr   )printr   r   )r   s    r,   childz%test_socketpair_simple.<locals>.childN  si      oiiooYYq\\!!!!!!T))))))r.   )r   r   r'   r(   )rh   r   r   open_nursery
start_soon)r   abnurserys       r,   test_socketpair_simpler   M  s     * * * *
 DAq	
 ) )A ) )%'' 	) 	) 	) 	) 	) 	) 	)7ua(((ua(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )sW   B0B-A;)B;
BBB	BB0B	B0B	 B00B47B4	fromsharezwindows only)reasonc                 L  K   t           rt          j        dk    rd S t          j                    \  } }| 5  |5  |                     t          j                              }t          j        |          }|5  | 	                                |	                                k    sJ |
                    d           d {V  |                    d           d {V dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nwin32r   r   )r   sysplatformrh   r   shareosgetpidr   r   r   r   )r   r   shareda2s       r,   test_fromsharer   Z  s      00DAq	
 + +A + +%%v&& 	+ 	+88::,,,,''$--??????d*****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+	+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +sY   D=D4A)C*D*C..D1C.2D5DD	DD		DD Dc                    K   t          j                    5 } t          | t           j                  sJ | j        t           j        k    sJ 	 d d d            d S # 1 swxY w Y   d S r*   )rh   r   r_   r   r3   r   ss    r,   test_socketr   i  s      			 +Q!W/00000x7?*****+ + + + + + + + + + + + + + + + + +s   4A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            d S # 1 swxY w Y   d S r*   )rh   r   r   r   r_   r   r3   r   s    r,   test_socket_v6r   o  s      	('*<	=	= ,!W/00000x7++++++, , , , , , , , , , , , , , , , , ,s   4A..A25A2linuxz
linux onlyc                   K   ddl m} m}mm t
          r| |fn| f}fd|D             }|D ]}t          j         |                                          }|j        |j        k    sJ |j	        |j	        k    sJ |
                                 t          j        |                                |           }|j        |j        k    sJ |j	        |j	        k    sJ |                                 |                                 d S )Nr   )r   r   r   r   c                H    g | ]}fD ]}t          j        ||          S rS   )rK   r   )r~   r3   ru   r   r   s      r,   r   z'test_sniff_sockopts.<locals>.<listcomp>|  sR        +.   	VU++   r.   r   )r   r   r   r   r   r   rh   r   r3   r5   detachr   close)	r   r   familiessocketsr   tsocket_sockettsocket_from_fdr   r   s	          @@r,   test_sniff_sockoptsr   v  sN     AAAAAAAAAAAA '6E""G:H      G
    v}}???$5555"fk1111 ".';OO%6666#v{2222 r.   c                 V  K   t          j                    } | 5 }|| u sJ t          |                                 t                    sJ |                                 rJ |                     d           |                                 sJ |                     t           j        t           j	        d           | 
                    t           j        t           j	                  rJ |                     t           j        t           j	        d           | 
                    t           j        t           j	                  sJ 	 d d d            n# 1 swxY w Y   |                                 dk    sJ t          |            t          j                    5 } |                                 }|                                 |k    sJ |                                 dk    sJ 	 d d d            n# 1 swxY w Y   t          j                    } |                                 dk    s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            n# 1 swxY w Y   t'          j                    }t          j        |          } | j        |j        k    sJ | j        |j        k    sJ | j        |j        k    sJ |                                  d S )NTFr   r   r3   r   
setsockopt)rh   r   r_   r   r4   get_inheritableset_inheritabler   r   rj   
getsockoptreprr   r   dirrb   rc   AttributeErrorr   rK   r   r5   r3   r6   )r   cm_enter_valuefdstdlib_socks       r,   test_SocketType_basicsr     s     >D	 
I%%%%$++-------'')))))T"""##%%%%%+W-@%HHH??7#68KLLLLL+W-@$GGGw2G4GHHHHHH
I 
I 
I 
I 
I 
I 
I 
I 
I 
I 
I 
I 
I 
I 
I ;;==B 	JJJ 
		 #T[[]]{{}}""""{{}}"""""# # # # # # # # # # # # # # # >D;;==AJJLLL;;==B
 s4yy    SYY3t99$$$$ 
~	&	&  		                &((K%k22D9(((((;+,,,,,:*****JJLLLLLs7   DEEEA	G!!G%(G%J--J14J1c                    K   t          j                    } | 5 }t          |            d d d            d S # 1 swxY w Y   d S r*   )rh   r   setsockopt_tests)r   _s     r,   test_SocketType_setsockoptr     s      >D	                  s   599r   SocketType | SocketStreamc                   t          t          d          r\	 |                     t          j        t          j        dd           n.# t
          $ r!}|j        dt          j        fv sJ Y d}~nd}~ww xY w|                     t          j        t          j	        d           t          j        t          d          5  |                     t          j        t          j	        dd           ddd           n# 1 swxY w Y   t          j        t          d          5  |                     t          j        t          j	        d           ddd           dS # 1 swxY w Y   dS )	z6Extract these out, to be reused for SocketStream also.SO_BINDTODEVICENr   *   Fz"invalid value for argument 'value'match   )r   rh   r   ri   r   OSErrorr   EPERMr   rj   rb   rc   r   )r   es     r,   r   r     s    w)** 	OOG.0GqQQQQ 	 	 	7           	 	OOG')<eDDD 
y(L	M	M	M L L+W-@%KKKL L L L L L L L L L L L L L L 
y(L	M	M	M H H+W-@$GGGH H H H H H H H H H H H H H H H H Hs;   ,A 
A/A**A/8-C11C58C5,EEEc                 .  K   t          j                    \  } }| 5  |5  |                                 }|5  t          |t           j                  sJ |                                |                                 k    sJ |                                  |                    d           d {V  |                    d           d {V dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nr   r   )	rh   r   dupr_   r   r   r   r   r   )r   r   r   s      r,   test_SocketType_dupr    s     DAq	
 + +A + +UUWW 	+ 	+b'"45555599;;!((**,,,,GGIII''$--??????d*****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +sX   D
C2BCC2CC2"C#C2&D
2C6	6D
9C6	:D

DDc                 J  K   t          j                    \  } }| 5  |5  |                     d           d {V  |                    d           d {V dk    sJ | j        rJ |j        rJ |                     t           j                   | j        sJ |j        rJ |                    d           d {V dk    sJ |                    d           d {V  |                     d           d {V dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j                    \  } }| 5  |5  | j        rJ |                     t           j                   | j        rJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j                    \  } }| 5  |5  | j        rJ |                     t           j                   | j        sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r.      y)	rh   r   r   r   did_shutdown_SHUT_WRshutdownSHUT_WRSHUT_RD	SHUT_RDWRr   r   s     r,   test_SocketType_shutdownr    s     DAq	
 
' 
'A 
' 
'ffTllVVAYY$&&&&))))))))	

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

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

7$%%%%%%%%& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &s   DCD<DD	DD	DD#&D#F2F8FF	FF	FF"F>H2H 4H H	HH	HHH)addresssocket_typer   r   )marksr  strr  r   c                b  K   t          j        |          }t          j        |          }|5  |5  |                    | df           d {V  |                    d           |                                d d         }t          j                    4 d {V }|                    |j        |           |	                                 d {V \  }}d d d           d {V  n# 1 d {V swxY w Y   |5  ||
                                cxk    r|                                k    sn J |                    d           d {V  |                    d           d {V dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr      r
   r   r   )rh   r   r=   listengetsocknamer   r   r   connectacceptgetpeernamer   r   )r  r  listenerclientaddrr   serverclient_addrs           r,   test_SocketType_simple_serverr    s%      ~k**H^K((F	 
0 
06 
0 
0mmWaL)))))))))##%%bqb)%'' 	: 	: 	: 	: 	: 	: 	:7v~t444(0(9(9"9"9"9"9"9"9FK	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:  	0 	0&"4"4"6"6NNNN&:L:L:N:NNNNNNN++d#########Q''''''4/////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0s~   F$A(F9C#F#
C--F0C-1F6A2E5)F5E99F<E9=F F$F	F$F	F$$F(+F(c                   K   t          j                    \  } }| 5  |5  |                                 rJ |                    d           d {V  t	          j        |            d {V  |                                 sJ |                     d           d {V dk    sJ |                                 rJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r  )rh   r   is_readabler   r   wait_readabler   r  s     r,   test_SocketType_is_readabler"  4  s     DAq	
 # #A # #==??"""ffTll!!$$$$$$$$$}}VVAYY$&&&&==??""""# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #s5   CBC8CC	CC	CC #C r]   c                 v    	 t          j        ddt           j                   dS # t           j        $ r Y dS w xY w)N1.2.3.4r   r3   TF)rK   rN   r   rk   rS   r.   r,   gai_without_v4mapped_is_buggyr&  B  sP    !)Q}7MNNNN t !   uus   !% 88F)slotsc                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )	Addressesr  bind_allr   	arbitrary	broadcastN)rO   rP   rQ   __annotations__rS   r.   r,   r)  r)  K  s4         MMMNNNNNNNNNNNr.   r)  )r  addrsz0.0.0.0r$  z255.255.255.255)r*  r   r+  r,  z::1::2z::ffff:255.255.255.255r.  c                "
  
K   | t           j        k    d-fdd.fd}t          j        | 	          5 t          t                    sJ d
D ]}                    |dfd           d {V }t          |t          t          f          rJ  |||j        df                               |dfd           d {V }t          |t          t          f          rJ  |||j	        df           dD ]
d/
fd} | ||j
        df           d {V |j
        df           rT | |d           d {V d            | |d           d {V d            | |d           d {V d            | |d           d {V d            | |d           d {V d            | |d           d {V d            | |d           d {V d            | |d           d {V d            | |d           d {V d            | |d           d {V d                               t           j        t           j        d            | |d           d {V d             | |d!           d {V |j        d"f           rt                      sΉ                    t           j        t           j        d           t!          j        t           j                  5 } |d#           d {V  d d d            n# 1 swxY w Y   t           j        t           j        h}t+          t           d$          r|                    t           j                   |j        j        |v sJ 	 t          j        t           j        t           j        %          }t          |t                    sJ |                    d&
           d {V d&k    sJ |                                 n# t:          t<          f$ r Y nw xY wd'}	t!          j        t>          |	(          5   |d)           d {V  d d d            n# 1 swxY w Y   t!          j        t>          |	(          5   |d*           d {V  d d d            n# 1 swxY w Y   t!          j        t>          |	(          5  r |d+           d {V  n |d,           d {V  d d d            n# 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )0Nr  tuple[str | int, ...]r'   c                b    r+t          |           dk     r| dz  } t          |           dk     | S )N   )r   )len)r  v6s    r,   padz$test_SocketType_resolve.<locals>.pado  s9     	d))a-- d))a--r.   actualrp   r(   c                <     |           |           k    sJ d S r*   rS   )r7  rp   r6  s     r,   	assert_eqz*test_SocketType_resolve.<locals>.assert_equ  s,     s8}}F++++++r.   r%  Nr   r   TlocalF)FTr?   tuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int] | tuple[str, str] | tuple[str, str, int] | tuple[str, str, int, int]c                   K                        |            d {V }t          |t                    sJ t          d|          S )Nr;  ztuple[Union[str, int], ...])_resolve_address_nocpr_   tupler	   )r?   r   r<  r   s     r,   r   z$test_SocketType_resolve.<locals>.res  sp       #88 9         "%/////95AAAr.   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$  rA  )z::ffff:1.2.3.4r   )z<broadcast>{   rB  )r$  r   EAI_ADDRFAMILY)r3   r5   r   H^address should be a \(host, port(, \[flowinfo, \[scopeid\]\])*\) tuple$r   r$  )r$  )r$  r   r   r   r   )r$  r   r   r   )r  r1  r'   r1  )r7  r1  rp   r1  r'   r(   )r?   r=  r'   r1  ) rh   r   r   r_   r   r?  r  bytesr*  r   r+  r   IPPROTO_IPV6IPV6_V6ONLYr,  r&  rb   rc   rk   
EAI_NONAME
EAI_NODATAr   r   rC  r   r   
AF_NETLINKr   r   r   r   r`   )r  r.  r9  nullro   r   r   r   netlink_sockr  r<  r6  r   r5  s             @@@@r,   test_SocketType_resolverM  T  si     2 
(	(B     , , , , , , 
{	+	+	+ k5t$,,,,,  	2 	2D22D":T2JJJJJJJJC!#U|44444IcENB/00022D":U2KKKKKKKKC!#U|44444IcEOR01111 # Y	5 Y	5EB B B B B B B" ICC& 9::::::::U_b<QRRR R	L 1 11111113EFFF	O 4 44444446HIII	$6 7 77777779KLLL	O 4 44444446HIII	$6 7 77777779KLLL
 	N 3 33333335GHHH	$5 6 66666668JKKK	$8 9 9999999;MNNN	$5 6 66666668JKKK	$8 9 9999999;MNNN  4g6I5QQQ	$7 8 8888888:PQQQ ICC 4555555557MNNN  	>799 	> 4g6I4PPP]7#344 /#o........./ / / / / / / / / / / / / / / $+#5w7I"J7$455 @#''(>???}*o====
%&~"- +      ",<<<<<&<<V5<QQQQQQQQ    ""$$$$ #G,    bGz999 % %c)nn$$$$$$$% % % % % % % % % % % % % % %z999 ( (c,'''''''''( ( ( ( ( ( ( ( ( ( ( ( ( ( (   5 5  5#67777777777 #34444444445 5 5 5 5 5 5 5 5 5 5 5 5 5 5cY	5%k5 k5 k5 k5 k5 k5 k5 k5 k5 k5 k5 k5 k5 k5 k5 k5 k5 k5s   KT<LTLT!L"AT*O;,AT;PTP T/QTQTQT3RTRTRT7&S)T)S--T0S-1TTTc                   K   t          j                    5 } |                     d           d {V  |                                 d         dk    sJ |                     d           t          j                    5 }|                    d|                                 d         f           d {V  |                                |                                 k    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j                    5 } t          j        t           j	                  5  |                     d           d {V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)r   r   r   r   
   r   r   )z1.2:3r   )
rh   r   r=   r  r  r  r  rb   rc   rk   )r   sock2s     r,    test_SocketType_unresolved_namesrQ    s     			 =Tii()))))))))!!!$3333B^ 	=--d.>.>.@.@.C DEEEEEEEEE$$&&$*:*:*<*<<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	== = = = = = = = = = = = = = = 
		 +T]7+,, 	+ 	+))M*********	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	++ + + + + + + + + + + + + + + + + +sm   A$D :A"C)D )C-	-D 0C-	1D  DDE==E%E=%E)	)E=,E)	-E==FFc            
       	K   t          j                    \  } }| 5  |5  t          j        |           |                    d           |                    d           t          j                    5 }|                                 t                      5  t          j        t          j                  5                      d           d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t                      5                      d           d {V dk    sJ 	 d d d            n# 1 swxY w Y   t                      5  t          j        t                    5                      d           d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   dfd}t          j                    4 d {V }|                    |           t#                       d {V  |                    d           d d d           d {V  n# 1 d {V swxY w Y   dfd	}t          j                    4 d {V }|                    |           t#                       d {V  |j                                         d d d           d {V  n# 1 d {V swxY w Y   t          j        |          	d	fd
}d	fd}t          j                    4 d {V }|                    |           |                    |           t#                       d {V  |                     d           |                    d           t#                       d {V  |                     d           |                    d           d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NF   1rO  hahar'   r(   c                    K   t                      5                       d           d {V dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NrO     2r   r   r   s   r,   do_successful_blocking_recvzGtest_SocketType_non_blocking_paths.<locals>.do_successful_blocking_recv  s      #%% 1 1WWR[[((((((D000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   "AA	ArV  c                    K   t                      5  t          j        t          j                  5                       d           d {V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrO  )r   rb   rc   r   	Cancelledr   rX  s   r,   do_cancelled_blocking_recvzFtest_SocketType_non_blocking_paths.<locals>.do_cancelled_blocking_recv  s      #%% & &]5?33 & &''"++%%%%%%%& & & & & & & & & & & & & & && & & & & & & & & & & & & & & & & &s4   A1AA1A	A1 A	!A11A58A5c                 .  K   t                      5                       d           d {V dk    sJ 	 d d d            n# 1 swxY w Y   t                      5                      d           d {V dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr      a   brW  r   tbs   r,   t1z.test_SocketType_non_blocking_paths.<locals>.t1/  8     #%% 0 0WWQZZ''''''4/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0#%% 0 0WWQZZ''''''4/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0#   "AAA"B

BBc                 .  K   t                      5                      d           d {V dk    sJ 	 d d d            n# 1 swxY w Y   t                      5                       d           d {V dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r_  r^  rW  r`  s   r,   t2z.test_SocketType_non_blocking_paths.<locals>.t25  rc  rd  r_  r^  r'   r(   )rK   r   rh   r   setblockingr   r   CancelScopecancelr   rb   rc   r[  r   r   r   r   r   cancel_scope)
r   r   cscoperY  r   r\  rb  rf  r   ra  s
           @@r,   "test_SocketType_non_blocking_pathsrm    s     #%%DAq	
 E EA E E'**	e 	
t   	&FMMOOO#%% & &]5?33 & &''"++%%%%%%%& & & & & & & & & & & & & & && & & & & & & & & & & & & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&  !! 	- 	-$$$$$$,,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-  !! 	& 	&y)) & &ggfoo%%%%%%%& & & & & & & & & & & & & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
	1 	1 	1 	1 	1 	1 %'' 	 	 	 	 	 	 	7:;;;(*********FF4LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		& 	& 	& 	& 	& 	&
 %'' 	* 	* 	* 	* 	* 	* 	*79:::(********* '')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* '**	0 	0 	0 	0 	0 	0 	0	0 	0 	0 	0 	0 	0 	0 %'' 	 	 	 	 	 	 	7r"""r"""(*********FF4LLLFF4LLL(*********FF4LLLFF4LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	{E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E E Es{  O>AO&2#D
C3	4CC3	C  C3	#C $C3	'D
3C77D
:C7;D
>O&
DO&DO&#"EO&EO&EO&+GF-	!G-F11G4F15G8O&GO&G"O&.?H?-O&?
I		O&I	"O&/AK2O&
KO&K>O&B'O	7O&	
OO&OO&O>&O*	*O>-O*	.O>>PPc            
       K   t          j                    5 t          j        t          d          5                      d           d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j                    5 t          j                    5                                  t          j        t          j	                  5                      d           d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j                    5 t          j                    5 t          j                    5 } | 
                    d           d {V  |                                   G fddt          j                  }t          t                    sJ j                                          |            _        t#                      5  t          j        t          j	                  5                      |                                            d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y                                   dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j                    5 t          j        t(          d	          5                      d
           d {V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrD  r   r   r   r   r   c                      e Zd Zd fdZdS )3test_SocketType_connect_paths.<locals>.CancelSocketr  r   r'   r(   c                
   t          t                    sJ                                  t          j        |                                 | j        | j                  _        j        	                    |           t          r*   )r_   r   rj  rK   r   r   r3   r5   _sockr  re   )r+   r  rk  r   s     r,   r  z;test_SocketType_connect_paths.<locals>.CancelSocket.connectb  st    
 &dK88888 '')))!.!5	" "DJ
 J&&w///))r.   N)r  r   r'   r(   )rO   rP   rQ   r  )rk  r   s   r,   CancelSocketrq  a  s8        * * * * * * * * *r.   rt  r   z^^\[\w+ \d+\] Error connecting to \('127\.0\.0\.\d', \d+\): (Connection refused|Unknown error)$)r   r
   )rh   r   rb   rc   r`   r  r   ri  rj  r[  r=   r  rK   r_   r   rs  r   r   r  r   r   )r  rt  rk  r   s     @@r,   test_SocketType_connect_pathsru  G  sO     			 ,T]]
 
 
 	, 	,
 ,,{+++++++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, , , , , , , , , , , , , , , 
		 6T   	6L!!!u// 6 6ll#45555555556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	66 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
			 "'^ !	'w~'7'7 !	'8-- 0111111111OO
* * * * * * * *}3 * * *& dK00000J%DJ#%% ? ?]5?33 ? ?,,x';';'='=>>>>>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;;==B&&&&&C!	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	' !	'"' "' "' "' "' "' "' "' "' "' "' "' "' "' "'J 
		 1T]s
 
 
 	1 	1 ,,/000000000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1sg  A3AA3A 	 A3#A 	$A33A7:A7D.%3DD 4D DDDDD.D	D.D	D..D25D2K K4BJ.I<	+.I%I<	%I))I<	,I)-I<	0J.<J  J.J J."K.J22K5J26K9KK			KK		KK #K :ML>2M>M	MM	MMMc                   K   d} t          j                    5 }t          j        t          d| d          5  |                    | df           d {V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   z#^\[\w+ \d+\] Error connecting to \(z*, 2\): (Connection refused|Unknown error)$r   r
   )rh   r   rb   rc   r   r  )r  r   s     r,   test_address_in_socket_errorrw    s!     G			 -T]nnnn
 
 
 	- 	- ,,|,,,,,,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-- - - - - - - - - - - - - - - - - -s4    A:A"A:"A&	&A:)A&	*A::A>A>c            	     &  K   t          j                    5 t          j                    5 } d
fd}t	          | t
                    sJ || _        t                      5  t          j	        t           j
                  5  |                     d           d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                 d	k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r   r<  r]   r'   r(   c               ~   K   | dk    sJ |rJ                                   t          j                     d {V  d S r:  )rj  r   
checkpoint)r  r<  rk  s     r,   r?  zVtest_resolve_address_exception_in_connect_closes_socket.<locals>._resolve_address_nocp  sZ      
 "}}}}   y##%%%&(((((((((((r.   r   r   )r  r   r<  r]   r'   r(   )r   ri  rh   r   r_   r   r?  r   rb   rc   r[  r  r   )r   r?  rk  s     @r,   7test_resolve_address_exception_in_connect_closes_socketr{    s     				 '^ 	') ) ) ) ) ) dK00000)>D&#%% + +]5?33 + +,,r*********+ + + + + + + + + + + + + + ++ + + + + + + + + + + + + + + ;;==B&&&&&#	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's|   D3C.B<=B%	B<%B))B<,B)-B<0C.<C  C.C C."D.C2	2D5C2	6DD
D
c            	     >  K   t          j                    \  } }| 5  |5  |                     d           d {V dk    sJ |                    dt           j                   d {V dk    sJ |                    d           d {V dk    sJ |                     d           d {V  t          d          }|                    |           d {V  |dk    sJ t          | d          rD|                     dgg            d {V dk    sJ |                    d           d {V dk    sJ d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j	        t           j
                  } t          j	        t           j
                  }| 5  |5  |                     d	           d {V  |                    d	           d {V  |                                d
|                                d         fg}|D ]d}|                     d|           d {V dk    sJ |                    d           d {V \  }}|dk    sJ ||                                 k    sJ et          t           d          r|                     dt           j        |                                           d {V  |                     dt           j        |                                           d {V  |                     d|                                           d {V  |                    d           d {V \  }}|dk    sJ ||                                 k    sJ |                     d|                                           d {V dk    sJ t          d          }|                    |           d {V \  }}|dk    sJ |dk    sJ ||                                 k    sJ t          |d          r|                     d|                                           d {V dk    sJ |                    d           d {V \  }}}	}|dk    sJ |g k    sJ |	dk    sJ ||                                 k    sJ t          |d          r|                     d|                                           d {V dk    sJ t          d          }
t          d          }|                    |
|g           d {V }|\  }}}	}|dk    sJ |
dk    sJ |dk    sJ |g k    sJ |	dk    sJ ||                                 k    sJ t          | d          r`|D ]]}|                     ddgg d|           d {V dk    sJ |                    d           d {V d|                                 fk    sJ ^d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j	        t           j
                  } t          j	        t           j
                  }| 5  |5  |                    d	           d {V  |                     |                                           d {V  |                     d           d {V  |                     d           d {V  |                    d           d {V dk    sJ |                    d           d {V dk    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   rO  s
   x         sendmsgs   xxxr   r   ro  r   MSG_MOREs   yyys   zzzs	   xxxyyyzzzs
   xxx       recvmsgr   recvmsg_intos   xyzwr3  r
   s   xys   zw s   yzs   xyz)rh   r   r   r   MSG_PEEK	bytearray	recv_intor   r}  r   r   r=   r  sendtorecvfromr~  recvfrom_intor  r  r  )r   r   buftargetstargetdatar  nbytesancdata	msg_flagsbuf1buf2rets                r,   test_send_recv_variantsr    s	     DAq	
 . .A . .VVD\\!!!!!!Q&&&&VVB 011111111T9999VVBZZ4'''' ffTllmmkk#(((((1i   	.F8R00000000A5555######v----. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  	G.///AG.///A	
 =I =IA =I =Iff%&&&&&&&&&ff%&&&&&&&&&==??[!--//!2D$EF  	+ 	+F&&11111111Q6666!"B//////LT46>>>>1==??***** 7J'' 	+((67#3Q]]__EEEEEEEEE((67#3Q]]__EEEEEEEEE((61==??333333333!"B//////LT4<''''1==??**** XXfammoo66666666!;;;;mm s33333333{{{{*****q}}&&&&1i   	+&!--//::::::::a????56YYr]]/B/B/B/B/B/B,T7It6>>>>b====>>>>1==??****1n%% 	+'1==??;;;;;;;;q@@@@Q<<DQ<<Dd|44444444C14.VWiQ;;;;5====?****b====>>>>1==??****1i   	I! I IYYe}b!VDDDDDDDDIIIIZZ^^++++++/HHHHHH{=I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I =I~ 	G.///AG.///A	
 * *A * *ff%&&&&&&&&&ii((((((((( ffVnnffVnnVVBZZ6))))VVBZZ6)))))* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *s   EDD:.E:D>	>ED>	EEEWPW;WW	WW	WW"%W")\,C[:.\:[>	>\[>	\\\c                V  K   |                      ddd           |                      dddt                     |                      dddt                     |                      dd	d           |                      dd
d           t          j        dd           d {V dk    sJ t          j        dd           d {V dk    sJ t          j        dd           d {V dk    sJ t          j        d
d           d {V dk    sJ t          j        dd           d {V dk    sJ d S )Nu
   ok faß.des   xn--fa-hia.der   zok ::1r   )r7   s   ::1badzfass.dezxn--fa-hia.deu   faß.de)rH   r   rh   rN   )rY   s    r,   	test_idnar    sv      MM, 0"555MM(E2]M;;;MM(FBmM<<<MM%B'''MM%"---$UB////////8;;;;$VR00000000H<<<<$Y33333333|CCCC$_b99999999\IIII$%5r::::::::lJJJJJJr.   c                    K   t          j        d           d {V dk    sJ t          j        d           d {V dk    sJ d S )Nudp   tcp   )rh   getprotobynamerS   r.   r,   test_getprotobynamer  '  sj       '........"4444'........!333333r.   c           	     f  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|R   d {V dddg|R k    sJ (t          j        dd           d {V }d	}||k    sJ t          j        d
d           d {V dk    sJ t          j        d           |u sJ |                     ddddddd           t          j        dd           d {V dk    sJ d S )Nc                      e Zd ZddZddZdS )5test_custom_hostname_resolver.<locals>.CustomResolverr/   r  r1   r3   r4   r5   r6   r7   r'   (tuple[str, str, str, int, int, int, int]c                   K   d||||||fS )N
custom_gairS   )r+   r/   r1   r3   r5   r6   r7   s          r,   rN   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getaddrinfo1  s       !$fdE5IIr.   rx   +tuple[str, int] | tuple[str, int, int, int]<tuple[str, tuple[str, int] | tuple[str, int, int, int], int]c                   K   d||fS )N
custom_gnirS   )r+   rx   r7   s      r,   r   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getnameinfo<  s      
 !(E22r.   N)r/   r  r1   r  r3   r4   r5   r4   r6   r4   r7   r4   r'   r  )rx   r  r7   r4   r'   r  )rO   rP   rQ   rN   r   rS   r.   r,   CustomResolverr  0  s@        		J 		J 		J 		J	3 	3 	3 	3 	3 	3r.   r  r   r   foor  s	   localhostu   föö)r  s
   xn--f-1gaar  r   r   r   r   r   )r  r   r   r   r   r1   r:   r/   )	rh   set_custom_hostname_resolverr   r   r   AI_CANONNAMErN   r   rH   )rY   r  crvalsro   rp   s         r,   test_custom_hostname_resolverr  .  s     3 3 3 3 3 3 3 3& 
		B/33;;; 
!Q"	
GA&	
Aw"A&	
Aq'&'	 
 
 (eCdCCCCCCCCCH
 	H
 H
 
 
 
 
 
 #GU33
3
3
3
3
3
3C?H(????$S!,,,,,,,, 1     /55;;;; MM#wqqMKKK$VV44444444;;;;;;r.   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                                                    }t          j        |	          }t          |d
          sJ |                                 t          j	                    \  }}|5  |5  t          |d
          sJ t          |d
          sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        d           |u sJ d S )Nc                      e Zd Zdd	Zd
S )7test_custom_socket_factory.<locals>.CustomSocketFactoryr3   r   r5   r   r6   r4   r'   *tuple[str, AddressFamily, SocketKind, int]c                    d|||fS )NhirS   )r+   r3   r5   r6   s       r,   r   z>test_custom_socket_factory.<locals>.CustomSocketFactory.socketm  s     &$..r.   N)r3   r   r5   r   r6   r4   r'   r  )rO   rP   rQ   r   rS   r.   r,   CustomSocketFactoryr  l  s(        	/ 	/ 	/ 	/ 	/ 	/r.   r  r  r   r   r
   r   )r  r   r
   r   r   r=   )
rh   set_custom_socket_factoryr   r   r   rK   r   r   r   r   )r  csfr   wrappedr   r   s         r,   test_custom_socket_factoryr  k  s     / / / / / / / / 


C,S11999>gow7JANNNNN>!Q""o5555 
				&	&	(	(BnB'''G7F#####MMOOO DAq	
 " "A " "q&!!!!!q&!!!!!!" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ,T22c999999s6   5E8%D*E*D.	.E1D.	2EEEc                     t          j        t                    5  t          j                     d d d            d S # 1 swxY w Y   d S r*   )rb   rc   r   rh   r   rS   r.   r,   test_SocketType_is_abstractr    s    	y	!	!                   s   ;??AF_UNIXzno unix domain socketsc                   K   dd} t          j                    5 } | | d           d {V   | t          | d                     d {V   | t          j        | d                     d {V  d d d            n# 1 swxY w Y   	 t          j        d	                                                              d
          } | d|z              d {V  d S # t          $ r Y d S w xY w)Npathstr | bytes | os.PathLike[str]r'   r(   c                f  K   t          j        t           j                  5 }|                    |            d {V  |                    d           t          j        t           j                  5 }|                    |            d {V  |                                 d {V \  }}|5  |                    d           d {V  |                    d           d {V dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr%  rO  r   r   )	rh   r   r  r=   r  r  r  r   r   )r  lsockcsockssockr   s        r,   check_AF_UNIXz.test_unix_domain_socket.<locals>.check_AF_UNIX  s     ^7?333 	7u**T"""""""""LLw777 75mmD)))))))))!&//////q 7 7**T*********!&A......$666667 7 7 7 7 7 7 7 7 7 7 7 7 7 77 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7sZ   AD&2;D-=C7+D7C;;D>C;?DD&D	D&D	D&&D*-D*z/sockz/sock1z/sock2r  asciis    trio-test-)r  r  r'   r(   )	tempfileTemporaryDirectoryr   r   fsencodeurandomhexencodeFileNotFoundError)r  tmpdircookies      r,   test_unix_domain_socketr    s     
	7 	7 	7 	7 
	$	&	& <& mv,,,---------mDF!2!2!233444444444mBK6(9(9(9::;;;;;;;;;< < < < < < < < < < < < < < <B##%%,,W55m-677777777777   s%   ABB	BAC 
C+*C+c                   K   t          j                    \  } }| 5  |5  |                     d           ddz  	 	 |                                # t          $ r Y nw xY wt          j        |           d	fd}d	fd}t          j                    4 d {V }|	                    |           |	                    |           t                       d {V                                   d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
NFr   i Tr'   r(   c                    K   t          j        t          j                  5                                  d {V  d d d            d S # 1 swxY w Y   d S r*   )rb   rc   r   ClosedResourceErrorr   )r   r  s   r,   senderz)test_interrupted_by_close.<locals>.sender  s      u899 # #ffTll"""""""# # # # # # # # # # # # # # # # # #   AAAc                    K   t          j        t          j                  5                       d           d {V  d d d            d S # 1 swxY w Y   d S )Nr   )rb   rc   r   r  r   )r   s   r,   receiverz+test_interrupted_by_close.<locals>.receiver  s      u899    ffQii                                   r  rg  )rK   r   rh  r   re   rh   r   r   r   r   r   r   )a_stdlibb_stdlibr  r  r   r   r  s        @@r,   test_interrupted_by_closer    s     &133Hh	  8  U###e|	$d###$ 	 	 	D	 &x00	# 	# 	# 	# 	# 	# 	#	  	  	  	  	  	  %'' 	 	 	 	 	 	 	7v&&&x((((*********GGIII		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+                                sv   D7DA
A DA  =DAD0D
DDDDD7D#	#D7&D#	'D77D;>D;c                 j  K   d} g }t          d| d          D ]m}	 t          j                    \  }}nL# t          $ r?}|j        t          j        t          j        fv sJ t          d| d           Y d }~ nd }~ww xY w|||gz  }nt          j	                    4 d {V }|D ]"}|
                    t          j        |           #t          j                     d {V  |j                                         d d d           d {V  n# 1 d {V swxY w Y   |D ]}|                                 d S )Ni  r   r
   zUnable to open more than z	 sockets.)rangerK   r   r   r   EMFILEENFILEr   r   r   r   r!  r   rk  rj  r   )totalr   openedr   r   r[   r   r   s           r,   test_many_socketsr    s      EG5!$$  		 +--DAqq 	 	 	 9u| <<<<<?f???@@@EEEEE	 	Aq6!## & & & & & & &w 	< 	<Fu2F;;;;*,,,,,,,,,##%%%	& & & & & & & & & & & & & & & & & & & & & & & & & & &
    s'   2
A;4A66A;AD		
DD)rT   rU   r'   r    rg  )rY   r    r'   r(   )r   r   r'   r(   )r  r  r  r   r'   r(   )r'   r]   )r  r   r.  r)  r'   r(   )c
__future__r   r   r;   r   r   rK   r   r  pathlibr   r   r   typingr   r   r	   attrsrb   r   r   rh   _core._tests.tutilr   r   r   r   _socketr   r   r   r   r   testingr   r   collections.abcr   typing_extensionsr   _highlevel_socketr   r@  r4   r  rE  r   r-  listr   r   r   r    fixturerY   rf   rm   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r   r   r  r  parametrizer   paramr   r  r"  r&  definer)  rM  rQ  rm  ru  rw  r{  r  r  r  r  r  r  r  r  r  rS   r.   r,   <module>r     s\   " " " " " " "   				     



        , , , , , , , , - - - - - - - - - -   ' ' ' ' ' ' ' ' P P P P P P P P P P P P V V V V V V V V V V V V V V @ @ @ @ @ @ @ @ ((((((++++++000000eCHouS#sC%78%U
:KKL		NH     &*(^3333!&c5$c5#t#$	"O       OGP GP GP GP GP GP GP GPT    & & & &<0 0 0 0W7 W7 W7 W7t   F/ / / /," " " "
) 
) 
) 
) 555nMM+ + + NM++ + + + , , , , CLG+LAA   BAB0 0 0 0f   H H H HB	+ 	+ 	+ 	+& & & &6 	go&UG,J??? 0 0 0 0(# # # #    E         OI"%#+	  	
 	I 2	   		
 		
 		
 0z5 z5 z51 0z5z+ + + +&G G G GV E1 E1 E1 E1R 	- 	- 	- 	-' ' ' '.]* ]* ]* ]*@K K K K$4 4 4 4:< :< :< :<z: : : :@   
 333<TUU   VU@   <     r.   