
     f1                    L   U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZmZmZmZmZ d dlZd dlZddlmZmZ ddlmZmZ ddlmZmZmZmZ dd	lm Z m!Z! erFd d
l"m#Z# ddl$m%Z% ee	e
e&e'eee'e&f         ee'e&e&e&f         f         f         Z(de)d<   ee(         Z*de)d<   nde)d<   e+Z* G d d          Z,ej-        dYd            Z.dZdZ/dZdZ0d[dZ1dZdZ2dZdZ3dZdZ4dZdZ5ej6        7                     e8ed           d !          dZd"            Z9dZd#Z:edZd$            Z;ej6        7                    ej<        d%k    d&!          dZd'            Z=dZd(Z>dZd)Z?d\d,Z@dZd-ZAdZd.ZBej6        C                    d/d0ejD        f ejE        d1ejF        e2          g          d]d7            ZGdZd8ZHd^d:ZI ejJ        d;<           G d= d>                      ZKej6        C                    d?ejD         eKd@d0dAdBC          f ejE        ejF         eKdDd1dEdFC          e2          g          d_dH            ZLdZdIZMdZdJZNdZdKZOdZdLZPdZdMZQdZdNZRd[dOZSdZdPZTd[dQZUdZdRZVdZdSZWej6        7                     e8edT           dU!          dZdV            ZXdZdWZYdZdXZZdS )`    )annotationsN)AddressFamily
SocketKind)TYPE_CHECKINGAnyCallableListTupleUnion   )_coresocket)
binds_ipv6creates_ipv6)_NUMERIC_ONLY
SocketType_SocketType	_try_sync)assert_checkpointswait_all_tasks_blocked)	TypeAlias)SocketStreamr   GaiTupleGetAddrInfoResponseobjectc                  .    e Zd ZddZdd
ZddZddZdS )MonkeypatchedGAIorig_getaddrinfo"Callable[..., GetAddrInfoResponse]returnNonec                0    || _         i | _        g | _        d S N)_orig_getaddrinfo
_responsesrecord)selfr   s     Z/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/trio/_tests/test_socket.py__init__zMonkeypatchedGAI.__init__+   s    !1LN-/    argsr   kwargstuple[Any, ...]c                    t          j        | j                  } |j        |i |}|                                 |j        }|j        rJ |S r#   )inspect	signaturer$   bindapply_defaultsr+   r,   )r'   r+   r,   sigboundfrozenbounds         r(   _frozenbindzMonkeypatchedGAI._frozenbind1   sX     677$)&))j<r*   responseGetAddrInfoResponse | strc                0    || j          | j        |i |<   d S r#   )r%   r6   )r'   r7   r+   r,   s       r(   setzMonkeypatchedGAI.set9   s*     >F(($9&99:::r*   c                     | j         |i |}| j                            |           || j        v r| j        |         S |d         t          j        z  r | j        |i |S t          d|           )Nz%gai called with unexpected arguments )r6   r&   appendr%   stdlib_socketAI_NUMERICHOSTr$   RuntimeError)r'   r+   r,   r4   s       r(   getaddrinfozMonkeypatchedGAI.getaddrinfo>   s      $1&115!!!DO##?5))2Y55 	P)4)4:6:::NuNNOOOr*   N)r   r   r    r!   )r+   r   r,   r   r    r-   )r7   r8   r+   r   r,   r   r    r!   )r+   r   r,   r   r    r8   )__name__
__module____qualname__r)   r6   r:   rA    r*   r(   r   r   *   sn        0 0 0 0   F F F F
P P P P P Pr*   r   monkeypatchpytest.MonkeyPatchr    c                z    t          t          j                  }|                     t          d|j                   |S )NrA   )r   r>   rA   setattr)rF   
controllers     r(   	monkeygairK   I   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)rM   s    r(   _is_ValueErrorz&test__try_sync.<locals>._is_ValueError]   s    #z***r*   )rM   rN   r    rO   )r   r   pytestraisesKeyErrorBlockingIOErrorrR   )rS   s    r(   test__try_syncrX   P   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_SOCKETr>   TCP_NODELAYgaierrorntohsrE   r*   r(   test_socket_has_some_reexportsr_   n   sc    !99999-";;;;;}55555=M///////r*   rK   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    dtuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int]]c                    | \  }}}}}|||fS r#   rE   )rd   familytype_proto	canonnamesockaddrs         r(   interesting_fieldsz;test_getaddrinfo.<locals>.check.<locals>.interesting_fields   s"     9@5FE5)XE8,,r*   gai_listr   jlist[tuple[AddressFamily, SocketKind, tuple[str, int] | tuple[str, int, int] | tuple[str, int, int, int]]]c                     fd| D             S )Nc                &    g | ]} |          S rE   rE   ).0rd   rl   s     r(   
<listcomp>zEtest_getaddrinfo.<locals>.check.<locals>.filtered.<locals>.<listcomp>   s%    HHHG&&w//HHHr*   rE   )rm   rl   s    r(   filteredz1test_getaddrinfo.<locals>.check.<locals>.filtered   s      IHHHxHHHHr*   )rd   r   r    re   )rm   r   r    rn   rE   )ra   rb   rs   rl   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type )ru   90  ::1)r{   rz   r   r   x   hostportr   rg   rx   ri   flagshostr<   )r}   r~   r   r   r   r   EAI_BADHINTSasdf)ra   r   rb   r   r    r!   )r   rZ   rA   SOCK_STREAMAF_INETIPPROTO_TCP
SOCK_DGRAMAF_INET6IPPROTO_UDPr:   r&   rT   rU   r]   EAI_SOCKTYPEaddEAI_SERVICEhasattrr   valueerrnor@   )rK   rt   resexcinfoexpected_errnoss        r(   test_getaddrinfor   z   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)ru   i  )ru   1234)z
google.comP   r   )	localhostr   ru   r   ru   80)	r>   NI_NUMERICHOSTNI_NUMERICSERVr   rZ   getnameinforT   rU   r]   )
ni_numericra   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)rB   rC   rD   rE   r*   r(   MySocketr     s        r*   r   )r>   
socketpairrQ   rZ   r   from_stdlib_socketfilenosendrecvrT   rU   	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      )
r>   r   rZ   fromfdr   rg   rx   ri   r   r   )r   r   r   s      r(   test_from_fdr     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>.child  si      oiiooYYq\\!!!!!!T))))))r*   )r   r   r    r!   )rZ   r   r   open_nursery
start_soon)r   abnurserys       r(   test_socketpair_simpler     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platformrZ   r   shareosgetpidr   r   r   r   )r   r   shareda2s       r(   test_fromsharer   #  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#   )rZ   r   rQ   r   rg   r   ss    r(   test_socketr   2  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#   )rZ   r   r   r   rQ   r   rg   r   s    r(   test_socket_v6r   8  s      	('*<	=	= ,!W/00000x7++++++, , , , , , , , , , , , , , , , , ,s   4A..A25A2linuxz
linux onlyc                   K   ddl m} m}mm fd| |f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 rE   )r>   r   )rq   rg   rh   r   r   s      r(   rr   z'test_sniff_sockopts.<locals>.<listcomp>D  sR        +.   	VU++   r*   r   )r   r   r   r   r   rZ   r   rg   rx   detachr   close)r   r   socketsr   tsocket_sockettsocket_from_fdr   r   s         @@r(   test_sniff_sockoptsr   ?  s;     AAAAAAAAAAAA    )  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   rg   r   
setsockopt)rZ   r   rQ   r   intget_inheritableset_inheritabler   r   r\   
getsockoptreprr   r   dirrT   rU   AttributeErrorr   r>   r   rx   rg   ri   )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#   )rZ   r   setsockopt_tests)r   _s     r(   test_SocketType_setsockoptr     s      >D	                  s   599r   SocketType | SocketStreamc                Z   t          t          d          r,|                     t          j        t          j        dd           |                     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   rZ   r   r[   r   r   r\   rT   rU   r   r   s    r(   r   r     s    w)** N*G,CT1MMM 	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$   -CCC',D  D$'D$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   )	rZ   r   duprQ   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)	rZ   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_typeru   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   )rZ   r   r1   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   )rZ   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 rO   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   rg   TF)r>   rA   r   r]   rE   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)rB   rC   rD   __annotations__rE   r*   r(   r  r    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 ]
d0
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 )1Nr  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>.pad(  s9     	d))a-- d))a--r*   actualrb   r!   c                <     |           |           k    sJ d S r#   rE   )r+  rb   r*  s     r(   	assert_eqz*test_SocketType_resolve.<locals>.assert_eq.  s,     s8}}F++++++r*   r  )Nry   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]r   c                B   K                        |            d {V S )Nr.  )_resolve_address_nocp)r+   r/  r   s    r(   r   z$test_SocketType_resolve.<locals>.resG  sJ       "77 8         r*   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  r3  )z::ffff:1.2.3.4r   )z<broadcast>{   r4  )r  r   EAI_ADDRFAMILY)rg   rx   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%  )r+  r%  rb   r%  r    r!   )r+   r0  r    r   ) rZ   r   r   rQ   r   r2  r  bytesr  r   r  r   IPPROTO_IPV6IPV6_V6ONLYr   r  rT   rU   r]   
EAI_NONAME
EAI_NODATAr   r   r5  r   r   
AF_NETLINKr   r   r   OSErrorrR   )r  r"  r-  nullra   r   r   r   netlink_sockr  r/  r*  r   r)  s             @@@@r(   test_SocketType_resolver@    sa     2 
(	(B     , , , , , ,
 
{	+	+	+ h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 # V	5 V	5E       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====
%&~"-G4F      ",<<<<<&<<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 5]V	5%h5 h5 h5 h5 h5 h5 h5 h5 h5 h5 h5 h5 h5 h5 h5 h5 h5 h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   ru   
   r   r   )z1.2:3r<   )
rZ   r   r1   r	  r  r
  r  rT   rU   r]   )r   sock2s     r(    test_SocketType_unresolved_namesrD    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   1rB  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 )NrB     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rI  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 )NrB  )r   rT   rU   r   	Cancelledr   rK  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   brJ  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   rR  rQ  rJ  rS  s   r(   t2z.test_SocketType_non_blocking_paths.<locals>.t2  rV  rW  rR  rQ  r    r!   )r>   r   rZ   r   setblockingr   r   CancelScopecancelr   rT   rU   rN  r   r   r   r   r   cancel_scope)
r   r   cscoperL  r   rO  rU  rY  r   rT  s
           @@r(   "test_SocketType_non_blocking_pathsr`    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 )Nr6  r   r   r   ru   r   c                      e Zd Zd fdZdS )	3test_SocketType_connect_paths.<locals>.CancelSocketr+   r   r,   r    r!   c                    t          t                    sJ                                  t          j        |                                 | j        | j                  _         j        j	        |i | t          r#   )rQ   r   r]  r>   r   r   rg   rx   _sockr
  rW   )r'   r+   r,   r^  r   s      r(   r
  z;test_SocketType_connect_paths.<locals>.CancelSocket.connect  st    %dK88888 '')))!.!5t{DI" "DJ 'DJ&7777))r*   N)r+   r   r,   r   r    r!   )rB   rC   rD   r
  )r^  r   s   r(   CancelSocketrd    s8        
* 
* 
* 
* 
* 
* 
* 
* 
*r*   rg  r<   z^^\[\w+ \d+\] Error connecting to \('127\.0\.0\.\d', \d+\): (Connection refused|Unknown error)$)ru   r   )rZ   r   rT   rU   rR   r
  r   r\  r]  rN  r1   r  r>   rQ   r   rf  r   r   r	  r   r=  )r  rg  r^  r   s     @@r(   test_SocketType_connect_pathsrh    sN     			 ,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&&&&&9	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'' ' ' ' ' ' ' ' ' ' ' ' ' ' '@ 
		 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 )Nru   z#^\[\w+ \d+\] Error connecting to \(z*, 2\): (Connection refused|Unknown error)$r   r   )rZ   r   rT   rU   r=  r
  )r  r   s     r(   test_address_in_socket_errorrj  =  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                f   K                                     t          j                     d {V  d S r#   )r]  r   
checkpoint)r'   r+   r,   r^  s      r(   r2  zVtest_resolve_address_exception_in_connect_closes_socket.<locals>._resolve_address_nocpL  sB       ##%%%&(((((((((((r*   ry   r<   )r'   r   r+   r   r,   r   r    r!   )r   r\  rZ   r   rQ   r   r2  r   rT   rU   rN  r
  r   )r   r2  r^  s     @r(   7test_resolve_address_exception_in_connect_closes_socketrn  G  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   rB  s
   x         sendmsgs   xxxr   rw   rb  r   MSG_MOREs   yyys   zzzs	   xxxyyyzzzs
   xxx       recvmsgr   recvmsg_intos   xyzwr'  r   s   xys   zw s   yzs   xyz)rZ   r   r   r   MSG_PEEK	bytearray	recv_intor   rp  r   r   r1   r	  sendtorecvfromrq  recvfrom_intorr  rs  r
  )r   r   buftargetstargetdatar  nbytesancdata	msg_flagsbuf1buf2rets                r(   test_send_recv_variantsr  Z  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{   )r   s   ::1badzfass.dezxn--fa-hia.deu   faß.de)r:   r   rZ   rA   )rK   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   )rZ   getprotobynamerE   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  r~   rg   r   rx   ri   r   r    (tuple[str, str, str, int, int, int, int]c                   K   d||||||fS )N
custom_gairE   )r'   r   r~   rg   rx   ri   r   s          r(   rA   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getaddrinfo  s       !$fdE5IIr*   rk   +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_gnirE   )r'   rk   r   s      r(   r   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getnameinfo  s       !(E22r*   N)r   r  r~   r  rg   r   rx   r   ri   r   r   r   r    r  )rk   r  r   r   r    r  )rB   rC   rD   rA   r   rE   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}   r~   r   r   )	rZ   set_custom_hostname_resolverr   r   r   AI_CANONNAMErA   r   r:   )rK   r  crvalsra   rb   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>.CustomSocketFactoryrg   r   rx   r   ri   r   r    *tuple[str, AddressFamily, SocketKind, int]c                    d|||fS )NhirE   )r'   rg   rx   ri   s       r(   r   z>test_custom_socket_factory.<locals>.CustomSocketFactory.socket  s     &$..r*   N)rg   r   rx   r   ri   r   r    r  )rB   rC   rD   r   rE   r*   r(   CustomSocketFactoryr    s(        	/ 	/ 	/ 	/ 	/ 	/r*   r  r  r   r   r   r   )r  r   r   r   r   r1   )
rZ   set_custom_socket_factoryr   r   r   r>   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                    K   t          j        t                    5  t          j                     d d d            d S # 1 swxY w Y   d S r#   )rT   rU   r   rZ   r   rE   r*   r(   test_SocketType_is_abstractr  .  s      	y	!	!                   s   =AAAF_UNIXzno unix domain socketsc                 R  K   d
d} t          j                    5 }| 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 | bytesr    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  rB  r   r   )	rZ   r   r  r1   r  r
  r  r   r   )r  lsockcsockssockr   s        r(   check_AF_UNIXz.test_unix_domain_socket.<locals>.check_AF_UNIX8  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/sockr  asciis    trio-test-)r  r  r    r!   )tempfileTemporaryDirectoryr   urandomhexencodeFileNotFoundError)r  tmpdirr  cookies       r(   test_unix_domain_socketr  3  s)     
	7 	7 	7 	7 
	$	&	& "&mD!!!!!!!!!" " " " " " " " " " " " " " "B##%%,,W55m-677777777777   s"   =AA	AB 
B&%B&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#   )rT   rU   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   )rT   rU   r   r  r   )r   s   r(   receiverz+test_interrupted_by_close.<locals>.receiverd  s      u899    ffQii                                   r  rZ  )r>   r   r[  r   rW   rZ   r   r   r   r   r   r   )a_stdlibb_stdlibr  r  r   r   r}  s        @@r(   test_interrupted_by_closer  Q  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.)ranger>   r   r=  r   EMFILEENFILEr   r   r   r   r  r   r^  r]  r   )totalr   openedr   r   rM   r   r   s           r(   test_many_socketsr  o  s      EG5!$$  		 +--DAqq 	 	 	 9u| <<<<<?f???@@@EEEEE	 	Aq6!## & & & & & & &w 	< 	<Fu2F;;;;*,,,,,,,,,##%%%	& & & & & & & & & & & & & & & & & & & & & & & & & & &
    s'   2
A;4A66A;AD		
DD)rF   rG   r    r   rZ  )rK   r   r    r!   )r   r   r    r!   )r  r  r  r   r    r!   )r    rO   )r  r   r"  r  r    r!   )[
__future__r   r   r/   r   r   r>   r   r  r   r   typingr   r   r   r	   r
   r   attrsrT   ry   r   rZ   _core._tests.tutilr   r   _socketr   r   r   r   testingr   r   typing_extensionsr   _highlevel_socketr   r   r  r   r!  r   r   r   fixturerK   rX   r_   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r   r   r   r  parametrizer   paramr   r  r  r  definer  r@  rD  r`  rh  rj  rn  r  r  r  r  r  r  r  r  r  rE   r*   r(   <module>r     s   " " " " " " "   				     



  , , , , , , , , C C C C C C C C C C C C C C C C   ' ' ' ' ' ' ' ' 9 9 9 9 9 9 9 9 G G G G G G G G G G G G @ @ @ @ @ @ @ @ !++++++000000eCHouS#sC%7889		;H     &*(^33333 P P P P P P P P>    & & & &<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@0 0 0 0f   H H H H&	+ 	+ 	+ 	+& & & &6 	go&UG,J??? 0 0 0 0&# # # #    E         OI"%#+	  	
 	I 2	   		
 		
 		
 0v5 v5 v51 0v5r+ + + +&G G G GV=1 =1 =1 =1B- - - -' ' ' '&]* ]* ]* ]*@K K K K$4 4 4 48< 8< 8< 8<v: : : :@   
 333<TUU   VU:   <     r*   