
    hg                    X   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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/        dZd            Z0d[dZ1d[dZ2d\dZ3d[dZ4d[dZ5d[dZ6d[dZ7ej8        9                     e:ed            d!"          d[d#            Z;d[d$Z<ed[d%            Z=ej8        9                    ej>        d&k    d'"          d[d(            Z?d[d)Z@d[d*ZAd]d-ZBd[d.ZCd[d/ZDej8        E                    d0d1ejF        f ejG        d2ejH        e3          g          d^d8            ZId[d9ZJd_d;ZK ejL        d<=           G d> d?                      ZMej8        E                    d@ejF         eMdAd1dBdCD          f ejG        ejH         eMdEd2dFdGD          e3          g          d`dI            ZNd[dJZOd[dKZPd[dLZQd[dMZRd[dNZSd[dOZTd\dPZUd[dQZVd\dRZWd[dSZXd[dTZYej8        9                     e:edU           dV"          d[dW            ZZd[dXZ[d[dYZ\dS )a    )annotationsN)Path)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     P/var/www/fb-scrape/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._frozenbind2   sX     677$)&))j<r+   responseGetAddrInfoResponse | strc                0    || j          | j        |i |<   d S r$   )r&   r7   )r(   r8   r,   r-   s       r)   setzMonkeypatchedGAI.set:   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 )r7   r'   appendr&   stdlib_socketAI_NUMERICHOSTr%   RuntimeError)r(   r,   r-   r5   s       r)   getaddrinfozMonkeypatchedGAI.getaddrinfoB   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.   )r8   r9   r,   r   r-   r   r!   r"   )r,   r   r-   r   r!   r9   )__name__
__module____qualname__r*   r7   r;   rB    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 )NrB   )r   r?   rB   setattr)rG   
controllers     r)   	monkeygairL   M   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)rN   s    r)   _is_ValueErrorz&test__try_sync.<locals>._is_ValueErrora   s    #z***r+   )rN   rO   r!   rP   )r   r   pytestraisesKeyErrorBlockingIOErrorrS   )rT   s    r)   test__try_syncrY   T   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ntohsrF   r+   r)   test_socket_has_some_reexportsr`   r   sc    !99999-";;;;;}55555=M///////r+   rL   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$   rF   )re   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 rF   rF   ).0re   rm   s     r)   
<listcomp>zEtest_getaddrinfo.<locals>.check.<locals>.filtered.<locals>.<listcomp>   s%    HHHG&&w//HHHr+   rF   )rn   rm   s    r)   filteredz1test_getaddrinfo.<locals>.check.<locals>.filtered   s      IHHHxHHHHr+   )re   r   r!   rf   )rn   r   r!   ro   rF   )rb   rc   rt   rm   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 )rv   90  ::1)r|   r{   r   r   x   hostportr   rh   ry   rj   flagshostr=   )r~   r   r   r   r   r   EAI_BADHINTSasdf)rb   r   rc   r   r!   r"   )r   r[   rB   SOCK_STREAMAF_INETIPPROTO_TCP
SOCK_DGRAMAF_INET6IPPROTO_UDPr;   r'   rU   rV   r^   EAI_SOCKTYPEaddEAI_SERVICEhasattrr   valueerrnorA   )rL   ru   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)rv   i  )rv   1234)z
google.comP   r   )	localhostr   rv   r   rv   80)	r?   NI_NUMERICHOSTNI_NUMERICSERVr   r[   getnameinforU   rV   r^   )
ni_numericrb   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)rC   rD   rE   rF   r+   r)   MySocketr   	  s        r+   r   )r?   
socketpairrR   r[   r   from_stdlib_socketfilenosendrecvrU   rV   	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   r[   fromfdr   rh   ry   rj   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"   )r[   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platformr[   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$   )r[   r   rR   r   rh   r   ss    r)   test_socketr   6  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$   )r[   r   r   r   rR   r   rh   r   s    r)   test_socket_v6r   <  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 rF   )r?   r   )rr   rh   ri   r   r   s      r)   rs   z'test_sniff_sockopts.<locals>.<listcomp>H  sR        +.   	VU++   r+   r   )r   r   r   r   r   r[   r   rh   ry   detachr   close)r   r   socketsr   tsocket_sockettsocket_from_fdr   r   s         @@r)   test_sniff_sockoptsr   C  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   rh   r   
setsockopt)r[   r   rR   r   intget_inheritableset_inheritabler   r   r]   
getsockoptreprr   r   dirrU   rV   AttributeErrorr   r?   r   ry   rh   rj   )r   cm_enter_valuefdstdlib_socks       r)   test_SocketType_basicsr   d  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$   )r[   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   r[   r   r\   r   r   r]   rU   rV   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   )	r[   r   duprR   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)	r[   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_typerv   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   )r[   r   r2   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   )r[   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 rP   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   rh   TF)r?   rB   r   r^   rF   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)rC   rD   rE   __annotations__rF   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+   actualrc   r"   c                <     |           |           k    sJ d S r$   rF   )r,  rc   r+  s     r)   	assert_eqz*test_SocketType_resolve.<locals>.assert_eq3  s,     s8}}F++++++r+   r  )Nrz   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,   r0  r   s    r)   r   z$test_SocketType_resolve.<locals>.resM  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  r4  )z::ffff:1.2.3.4r   )z<broadcast>{   r5  )r  r   EAI_ADDRFAMILY)rh   ry   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&  rc   r&  r!   r"   )r,   r1  r!   r   ) r[   r   r   rR   r   r3  r  bytesr  r   r   r   IPPROTO_IPV6IPV6_V6ONLYr!  r  rU   rV   r^   
EAI_NONAME
EAI_NODATAr   r   r6  r   r   
AF_NETLINKr   r   r   OSErrorrS   )r  r#  r.  nullrb   r   r   r   netlink_sockr  r0  r+  r   r*  s             @@@@r)   test_SocketType_resolverA    sb     2 
(	(B     , , , , , , 
{	+	+	+ i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 # W	5 W	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====
%&~"- +      ",<<<<<&<<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_W	5%i5 i5 i5 i5 i5 i5 i5 i5 i5 i5 i5 i5 i5 i5 i5 i5 i5 i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   rv   
   r   r   )z1.2:3r=   )
r[   r   r2   r
  r	  r  r  rU   rV   r^   )r   sock2s     r)    test_SocketType_unresolved_namesrE    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   1rC  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 )NrC     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rJ  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 )NrC  )r   rU   rV   r   	Cancelledr   rL  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   brK  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   rS  rR  rK  rT  s   r)   t2z.test_SocketType_non_blocking_paths.<locals>.t2  rW  rX  rS  rR  r!   r"   )r?   r   r[   r   setblockingr   r   CancelScopecancelr   rU   rV   rO  r   r   r   r   r   cancel_scope)
r   r   cscoperM  r   rP  rV  rZ  r   rU  s
           @@r)   "test_SocketType_non_blocking_pathsra    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 )Nr7  r   r   r   rv   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$   )rR   r   r^  r?   r   r   rh   ry   _sockr  rX   )r(   r,   r-   r_  r   s      r)   r  z;test_SocketType_connect_paths.<locals>.CancelSocket.connect  sv    %dK88888 '')))!.!5	" "DJ
 'DJ&7777))r+   N)r,   r   r-   r   r!   r"   )rC   rD   rE   r  )r_  r   s   r)   CancelSocketre    s8        * * * * * * * * *r+   rh  r=   z^^\[\w+ \d+\] Error connecting to \('127\.0\.0\.\d', \d+\): (Connection refused|Unknown error)$)rv   r   )r[   r   rU   rV   rS   r  r   r]  r^  rO  r2   r	  r?   rR   r   rg  r   r   r
  r   r>  )r  rh  r_  r   s     @@r)   test_SocketType_connect_pathsri    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&&&&&=	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'' ' ' ' ' ' ' ' ' ' ' ' ' ' 'D 
		 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 )Nrv   z#^\[\w+ \d+\] Error connecting to \(z*, 2\): (Connection refused|Unknown error)$r   r   )r[   r   rU   rV   r>  r  )r  r   s     r)   test_address_in_socket_errorrk  F  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)   r3  zVtest_resolve_address_exception_in_connect_closes_socket.<locals>._resolve_address_nocpU  sB      
 ##%%%&(((((((((((r+   rz   r=   )r(   r   r,   r   r-   r   r!   r"   )r   r]  r[   r   rR   r   r3  r   rU   rV   rO  r  r   )r   r3  r_  s     @r)   7test_resolve_address_exception_in_connect_closes_socketro  P  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   rC  s
   x         sendmsgs   xxxr   rx   rc  r   MSG_MOREs   yyys   zzzs	   xxxyyyzzzs
   xxx       recvmsgr   recvmsg_intos   xyzwr(  r   s   xys   zw s   yzs   xyz)r[   r   r   r   MSG_PEEK	bytearray	recv_intor   rq  r   r   r2   r
  sendtorecvfromrr  recvfrom_intors  rt  r  )r   r   buftargetstargetdatar  nbytesancdata	msg_flagsbuf1buf2rets                r)   test_send_recv_variantsr  e  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   r[   rB   )rL   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   )r[   getprotobynamerF   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   rh   r   ry   rj   r   r!   (tuple[str, str, str, int, int, int, int]c                   K   d||||||fS )N
custom_gairF   )r(   r   r   rh   ry   rj   r   s          r)   rB   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getaddrinfo  s       !$fdE5IIr+   rl   +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_gnirF   )r(   rl   r   s      r)   r   zAtest_custom_hostname_resolver.<locals>.CustomResolver.getnameinfo  s      
 !(E22r+   N)r   r  r   r  rh   r   ry   r   rj   r   r   r   r!   r  )rl   r  r   r   r!   r  )rC   rD   rE   rB   r   rF   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   )	r[   set_custom_hostname_resolverr   r   r   AI_CANONNAMErB   r   r;   )rL   r  crvalsrb   rc   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>.CustomSocketFactoryrh   r   ry   r   rj   r   r!   *tuple[str, AddressFamily, SocketKind, int]c                    d|||fS )NhirF   )r(   rh   ry   rj   s       r)   r   z>test_custom_socket_factory.<locals>.CustomSocketFactory.socket  s     &$..r+   N)rh   r   ry   r   rj   r   r!   r  )rC   rD   rE   r   rF   r+   r)   CustomSocketFactoryr    s(        	/ 	/ 	/ 	/ 	/ 	/r+   r  r  r   r   r   r   )r  r   r   r   r   r2   )
r[   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$   )rU   rV   r   r[   r   rF   r+   r)   test_SocketType_is_abstractr  ;  s      	y	!	!                   s   =AA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  rC  r   r   )	r[   r   r  r2   r	  r  r  r   r   )r  lsockcsockssockr   s        r)   check_AF_UNIXz.test_unix_domain_socket.<locals>.check_AF_UNIXE  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$   )rU   rV   r   ClosedResourceErrorr   )r   r~  s   r)   senderz)test_interrupted_by_close.<locals>.senderp  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   )rU   rV   r   r  r   )r   s   r)   receiverz+test_interrupted_by_close.<locals>.receivert  s      u899    ffQii                                   r  r[  )r?   r   r\  r   rX   r[   r   r   r   r   r   r   )a_stdlibb_stdlibr  r  r   r   r~  s        @@r)   test_interrupted_by_closer  a  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   rN   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)rG   rH   r!   r   r[  )rL   r   r!   r"   )r   r   r!   r"   )r  r  r  r   r!   r"   )r!   rP   )r  r   r#  r  r!   r"   )]
__future__r   r   r0   r   r   r?   r   r  pathlibr   r   r   typingr   r   r	   r
   r   r   attrsrU   rz   r   r[   _core._tests.tutilr   r   _socketr   r   r   r   testingr   r   typing_extensionsr   _highlevel_socketr   r   r  r   r"  r   r   r   fixturerL   rY   r`   r   r   r   r   r   markskipifr   r   r   r   r   r   r   r   r   r   r  parametrizer   paramr   r  r  r  definer  rA  rE  ra  ri  rk  ro  r  r  r  r  r  r  r  r  r  rF   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D    & & & &<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	   		
 		
 		
 0x5 x5 x51 0x5v+ + + +&G G G GV?1 ?1 ?1 ?1F- - - -' ' ' '*]* ]* ]* ]*@K K K K$4 4 4 4:< :< :< :<z: : : :@   
 333<TUU   VU@   <     r+   