
    gB                       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 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<   e/e-         Z0de.d<   e)ee+e,df         ee+e,e*df         e*e*e*e*f         Z1de.d<   n	de.d<   e2Z0e2Z1 G d d          Z3ej4        d\d            Z5d]dZ6d]dZ7d^dZ8d]dZ9d]dZ:d]d Z;d]d!Z<ej=        >                     e?ed"           d#$          d]d%            Z@d]d&ZAed]d'            ZBej=        >                    ejC        d(k    d)$          d]d*            ZDd]d+ZEd]d,ZFd_d/ZGd]d0ZHd]d1ZIej=        J                    d2d3ejK        f ejL        d4ejM        e5          g          d`d:            ZNd]d;ZOdad=ZP ejQ        d>?           G d@ dA                      ZRej=        J                    dBejK         eRdCd3dDdEF          f ejL        ejM         eRdGd4dHdIF          e5          g          dbdK            ZSd]dLZTd]dMZUd]dNZVd]dOZWd]dPZXd]dQZYd^dRZZd]dSZ[d^dTZ\d]dUZ]d]dVZ^ej=        >                     e?edW           dX$          d]dY            Z_d]dZZ`d]d[ZadS )c    )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                  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     c/var/www/html/nodeJS/PythonScripts/venv3.11/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r2   r4   r5   r6   )inspect	signaturer!   bindapply_defaultsargskwargs)
r*   r.   r0   r2   r4   r5   r6   sigboundfrozenbounds
             r+   _frozenbindzMonkeypatchedGAI._frozenbindH   sb      677tFURWXXj<r-   responseGetAddrInfoResponse | strc           
     L    || j         |                     ||||||          <   d S r8   )r"   rC   )r*   rD   r.   r0   r2   r4   r5   r6   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 )rC   r#   appendr"   stdlib_socketAI_NUMERICHOSTr!   RuntimeError)r*   r.   r0   r2   r4   r5   r6   rA   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.   r/   r0   r1   r2   r3   r4   r3   r5   r3   r6   r3   r&   r   )rD   rE   r.   r/   r0   r1   r2   r3   r4   r3   r5   r3   r6   r3   r&   r'   )r.   r/   r0   r1   r2   r3   r4   r3   r5   r3   r6   r3   r&   rE   )__name__
__module____qualname__	__slots__r,   rC   rG   rM    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 )NrM   )r   rJ   rM   setattr)rS   
controllers     r+   	monkeygairX      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)rZ   s    r+   _is_ValueErrorz&test__try_sync.<locals>._is_ValueError   s    #z***r-   )rZ   r[   r&   r\   )r   r   pytestraisesKeyErrorBlockingIOErrorr_   )r`   s    r+   test__try_syncre      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_SOCKETrJ   TCP_NODELAYgaierrorntohsrR   r-   r+   test_socket_has_some_reexportsrl      sc    !99999-";;;;;}55555=M///////r-   rX   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)   rR   )rq   r2   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 rR   rR   ).0rq   rx   s     r+   
<listcomp>zEtest_getaddrinfo.<locals>.check.<locals>.filtered.<locals>.<listcomp>   s%    HHHG&&w//HHHr-   rR   )ry   rx   s    r+   filteredz1test_getaddrinfo.<locals>.check.<locals>.filtered   s      IHHHxHHHHr-   )rq   r   r&   rr   )ry   r   r&   rz   rR   )rn   ro   r   rx   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r4    )r   90  ::1)r   r   r   r   x   hostr0   r   r9   r.   )r   r0   r   r   r   r   EAI_BADHINTSasdf)rn   r   ro   r   r&   r'   )r   rg   rM   SOCK_STREAMAF_INETIPPROTO_TCP
SOCK_DGRAMAF_INET6IPPROTO_UDPrG   r#   ra   rb   rj   EAI_SOCKTYPEaddEAI_SERVICEhasattrr   valueerrnorL   )rX   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)	rJ   NI_NUMERICHOSTNI_NUMERICSERVr   rg   getnameinfora   rb   rj   )
ni_numericrn   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)rN   rO   rP   rR   r-   r+   MySocketr   <  s        r-   r   )rJ   
socketpairr^   rg   r   from_stdlib_socketfilenosendrecvra   rb   	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      )
rJ   r   rg   fromfdr   r2   r4   r5   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'   )rg   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platformrg   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)   )rg   r   r^   r   r2   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)   )rg   r   r   r   r^   r   r2   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 rR   )rJ   r   )r}   r2   rt   r   r   s      r+   r~   z'test_sniff_sockopts.<locals>.<listcomp>|  sR        +.   	VU++   r-   r   )r   r   r   r   r   r   rg   r   r2   r4   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   r2   r   
setsockopt)rg   r   r^   r   r3   get_inheritableset_inheritabler   r   ri   
getsockoptreprr   r   dirra   rb   AttributeErrorr   rJ   r   r4   r2   r5   )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)   )rg   r   setsockopt_tests)r   _s     r+   test_SocketType_setsockoptr     s      >D	                  s   599r   SocketType | SocketStreamc                   t          t          d          rR	 |                     t          j        t          j        dd           n$# t
          $ r}|j        dk    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   rg   r   rh   r   OSErrorr   r   ri   ra   rb   r   )r   es     r+   r   r     s    w)** !	!OOG.0GqQQQQ 	! 	! 	!
 7b=========	! 	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%.-C''C+.C+,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   )	rg   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)	rg   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   )rg   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   )rg   r   is_readabler   r   wait_readabler   r
  s     r+   test_SocketType_is_readabler   -  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   r2   TF)rJ   rM   r   rj   rR   r-   r+   gai_without_v4mapped_is_buggyr$  ;  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)rN   rO   rP   __annotations__rR   r-   r+   r'  r'  D  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>.padh  s9     	d))a-- d))a--r-   actualro   r'   c                <     |           |           k    sJ d S r)   rR   )r5  ro   r4  s     r+   	assert_eqz*test_SocketType_resolve.<locals>.assert_eqn  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 )Nr9  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"  r?  )z::ffff:1.2.3.4r   )z<broadcast>{   r@  )r"  r   EAI_ADDRFAMILY)r2   r4   r   H^address should be a \(host, port(, \[flowinfo, \[scopeid\]\])*\) tuple$r   r"  )r"  )r"  r   r   r   r   )r"  r   r   r   )r  r/  r&   r/  )r5  r/  ro   r/  r&   r'   )r>   r;  r&   r/  ) rg   r   r   r^   r   r=  r  bytesr(  r   r)  r   IPPROTO_IPV6IPV6_V6ONLYr*  r$  ra   rb   rj   
EAI_NONAME
EAI_NODATAr   r   rA  r   r   
AF_NETLINKr   r   r   r   r_   )r  r,  r7  nullrn   r   r   r   netlink_sockr  r:  r4  r   r3  s             @@@@r+   test_SocketType_resolverK  M  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   )
rg   r   r<   r  r  r  r  ra   rb   rj   )r   sock2s     r+    test_SocketType_unresolved_namesrO    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   1rM  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 )NrM     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rT  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 )NrM  )r   ra   rb   r   	Cancelledr   rV  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   brU  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\  rU  r^  s   r+   t2z.test_SocketType_non_blocking_paths.<locals>.t2.  ra  rb  r]  r\  r&   r'   )rJ   r   rg   r   setblockingr   r   CancelScopecancelr   ra   rb   rY  r   r   r   r   r   cancel_scope)
r   r   cscoperW  r   rZ  r`  rd  r   r_  s
           @@r+   "test_SocketType_non_blocking_pathsrk    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 )NrB  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   rh  rJ   r   r   r2   r4   _sockr  rd   )r*   r  ri  r   s     r+   r  z;test_SocketType_connect_paths.<locals>.CancelSocket.connectZ  st    
 &dK88888 '')))!.!5	" "DJ
 J&&w///))r-   N)r  r   r&   r'   )rN   rO   rP   r  )ri  r   s   r+   CancelSocketro  Y  s8        * * * * * * * * *r-   rr  r   z^^\[\w+ \d+\] Error connecting to \('127\.0\.0\.\d', \d+\): (Connection refused|Unknown error)$)r   r
   )rg   r   ra   rb   r_   r  r   rg  rh  rY  r<   r  rJ   r^   r   rq  r   r   r  r   r   )r  rr  ri  r   s     @@r+   test_SocketType_connect_pathsrs  @  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
   )rg   r   ra   rb   r   r  )r  r   s     r+   test_address_in_socket_errorru    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 r8  )rh  r   
checkpoint)r  r:  ri  s     r+   r=  zVtest_resolve_address_exception_in_connect_closes_socket.<locals>._resolve_address_nocp  s[      
 "}}}}    ##%%%&(((((((((((r-   r   r   )r  r   r:  r\   r&   r'   )r   rg  rg   r   r^   r   r=  r   ra   rb   rY  r  r   )r   r=  ri  s     @r+   7test_resolve_address_exception_in_connect_closes_socketry    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   rM  s
   x         sendmsgs   xxxr   r   rm  r   MSG_MOREs   yyys   zzzs	   xxxyyyzzzs
   xxx       recvmsgr   recvmsg_intos   xyzwr1  r
   s   xys   zw s   yzs   xyz)rg   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   )r6   s   ::1badzfass.dezxn--fa-hia.deu   faß.de)rG   r   rg   rM   )rX   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   )rg   getprotobynamerR   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  r0   r2   r3   r4   r5   r6   r&   (tuple[str, str, str, int, int, int, int]c                   K   d||||||fS )N
custom_gairR   )r*   r.   r0   r2   r4   r5   r6   s          r+   rM   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getaddrinfo#  s       !$fdE5IIr-   rw   +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_gnirR   )r*   rw   r6   s      r+   r   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getnameinfo.  s      
 !(E22r-   N)r.   r  r0   r  r2   r3   r4   r3   r5   r3   r6   r3   r&   r  )rw   r  r6   r3   r&   r  )rN   rO   rP   rM   r   rR   r-   r+   CustomResolverr  "  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   r0   r9   r.   )	rg   set_custom_hostname_resolverr   r   r   AI_CANONNAMErM   r   rG   )rX   r  crvalsrn   ro   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>.CustomSocketFactoryr2   r   r4   r   r5   r3   r&   *tuple[str, AddressFamily, SocketKind, int]c                    d|||fS )NhirR   )r*   r2   r4   r5   s       r+   r   z>test_custom_socket_factory.<locals>.CustomSocketFactory.socket_  s     &$..r-   N)r2   r   r4   r   r5   r3   r&   r  )rN   rO   rP   r   rR   r-   r+   CustomSocketFactoryr  ^  s(        	/ 	/ 	/ 	/ 	/ 	/r-   r  r  r   r   r
   r   )r  r   r
   r   r   r<   )
rg   set_custom_socket_factoryr   r   r   rJ   r   r   r   r   )r  csfr   wrappedr   r   s         r+   test_custom_socket_factoryr  ]  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)   )ra   rb   r   rg   r   rR   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#  rM  r   r   )	rg   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)   )ra   rb   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   )ra   rb   r   r  r   )r   s   r+   receiverz+test_interrupted_by_close.<locals>.receiver  s      u899    ffQii                                   r  re  )rJ   r   rf  r   rd   rg   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.)rangerJ   r   r   r   EMFILEENFILEr   r   r   r   r  r   ri  rh  r   )totalr   openedr   r   rZ   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)rS   rT   r&   r   re  )rX   r   r&   r'   )r   r   r&   r'   )r  r  r  r   r&   r'   )r&   r\   )r  r   r,  r'  r&   r'   )b
__future__r   r   r:   r   r   rJ   r   r  pathlibr   r   r   typingr   r   r	   attrsra   r   r   rg   _core._tests.tutilr   r   r   _socketr   r   r   r   r   testingr   r   collections.abcr   typing_extensionsr   _highlevel_socketr   r>  r3   r  rC  r   r+  listr   r   r   r   fixturerX   re   rl   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r   r   r  r  parametrizer   paramr   r  r   r$  definer'  rK  rO  rk  rs  ru  ry  r  r  r  r  r  r  r  r  r  rR   r-   r+   <module>r     s=   " " " " " " "   				     



        , , , , , , , , - - - - - - - - - -   ' ' ' ' ' ' ' ' J J J J J J J J J J 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4	+ 	+ 	+ 	+& & & &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B1 B1 B1 B1L- - - -' ' ' '.]* ]* ]* ]*@K K K K$4 4 4 4:< :< :< :<z: : : :@   
 333<TUU   VU@   <     r-   