
    vKg2&                        S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  \R                  S:X  a  Sr	O\R                  S:X  a  Sr	OSr	S\4S	 jr
SS
 jrSS jrSS jr\R                  R                  \R                  S:H  SS9SS j5       r\R                  R                  \R                  S:g  SS9SS j5       rSS jrSS jrSS jrSS jrg)    N)FakeNetlinuxz<^\[Errno 107\] (Transport endpoint is|Socket) not connected$darwinz&^\[Errno 57\] Socket is not connected$z^\[Errno 10057\] Unknown error$returnc                  :    [        5       n U R                  5         U $ N)r   enable)fns    X/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/trio/_tests/test_fakenet.pyr
   r
      s    	BIIKI    c                    #    [        5         [        R                  R                  [        R                  R                  S9n [        R                  R                  [        R                  R                  S9nU R	                  S5      I S h  vN   U R                  5       u  p#US:X  d   eUS:w  d   e[        R                  " [        SS9 nU R	                  S5      I S h  vN   S S S 5        WR                  R                  [        R                  :X  d   e[        R                  " [        SS9 nUR	                  SU45      I S h  vN   S S S 5        UR                  R                  [        R                  :X  d   eUR                  S	U R                  5       5      I S h  vN   U R                  S
5      I S h  vN u  pVUS	:X  d   eXaR                  5       :X  d   eU R                  SUR                  5       5      I S h  vN   UR                  S
5      I S h  vN u  pVUS:X  d   eX`R                  5       :X  d   eg  GN GNb! , (       d  f       GNg= f GN! , (       d  f       GN= f N N Nn NW7f)Ntype	127.0.0.1r   r   r   z^\[\w+ \d+\] Invalid argument$match)z	192.0.2.1r   z7^\[\w+ \d+\] (Address (already )?in use|Unknown error)$   xyz
      abc)r
   triosocket
SOCK_DGRAMbindgetsocknamepytestraisesOSErrorvalueerrnoEINVAL
EADDRINUSEsendtorecvfrom)s1s2ipportexcdataaddrs          r   test_basic_udpr,      s    D			!7!7		8B			!7!7		8B
''"
###~~HB199	/
 
gg&'''	

 99??ell*** 
H
 
gg{D)***	

 99??e.....
))FBNN,
---{{2&JD6>>>>####
))FBNN,
---{{2&JD6>>>>####7 $ 	(	
 
 	+	
 
 .& .&s   B	I4H??I4I I!I%AI40IIIAI4!I,"I4:I.;AI4I0I4I2%I4I
II4I
I)$	I4.I40I42I4c                    #    [        5         [        R                  R                  [        R                  R                  S9n [        R                  R                  [        R                  R                  S9nU R	                  S5      I S h  vN   UR                  SU R                  5       5      I S h  vN   U R                  S5      I S h  vN u  p#g  NH N" N7f)Nr   r   r   r   )r
   r   r   r   r   r#   r   r$   )r%   r&   r*   r+   s       r   test_msg_truncr.   =   s     D			!7!7		8B			!7!7		8B
''"
###
))FBNN,
---{{2&JD$ $-&s6   B	CC'C3C4CCCCCc                  	  #    [        5         [        R                  R                  [        R                  R                  S9n [        R                  R                  [        R                  R                  S9n[        R
                  " [        SS9   UR                  S5      I Sh  vN   SSS5        U R                  S5      I Sh  vN   U R                  5       u  p#US:X  d   eUS:w  d   eUR                  S	U R                  5       5      I Sh  vN   U R                  S5      I Sh  vN u  pEUS	:X  d   eXQR                  5       :X  d   eU R                  S
UR                  5       5      I Sh  vN   UR                  S5      I Sh  vN nUS
:X  d   eU R                  SUR                  5       5      I Sh  vN S:X  d   e[        S5      n[        R
                  " [        SS9   UR                  USS9I Sh  vN u  puSSS5        UR                  U5      I Sh  vN u  puUS:X  d   eUS:X  d   eXPR                  5       :X  d   eU R                  SUR                  5       5      I Sh  vN S:X  d   e[        S5      nUR                  U5      I Sh  vN nUS:X  d   eUS:X  d   e[        R                   S:X  a/  [        R"                  R$                  S:X  a  [        R&                  n	OSn	[        R
                  " [(        [*        S9 n
UR-                  S5      I Sh  vN   SSS5        W
R.                  R0                  [0        R2                  :X  d   e[        R
                  " [        SS9   UR-                  SU	5      I Sh  vN   SSS5        [        R
                  " [        SS9   UR                  SXR                  5       5      I Sh  vN   SSS5        [        R
                  " [4        SS9   UR                  SXR                  5       S5      I Sh  vN   SSS5        g GN! , (       d  f       GN= f GN| GN5 GN GN GN GN GNX! , (       d  f       GN[= f GNJ GN GN GNN! , (       d  f       GNS= f N! , (       d  f       GN= f N! , (       d  f       N= f N! , (       d  f       g= f7f)z!Test all recv methods for codecovr   zcode will most likely hangr   r   Nr   r   r   r   s   defs   ghi   z^partial recvfrom_into$   )nbytess
   ghi          jkls
   jkl       r   cpython      mnoz"^FakeNet send flags must be 0, notzwrong number of arguments$z	extra arg)r
   r   r   r   r   r   NotImplementedErrorrecvr   r   r#   r$   	bytearrayrecvfrom_into	recv_intosysplatformimplementationnameMSG_MOREr   ENOTCONN_MSGsendr   r    ENOTCONN	TypeError)r%   r&   r'   r(   r*   r+   bufr2   buf2flagsr)   s              r   test_recv_methodsrH   F   s    D			!7!7		8B			!7!7		8B 
*2N	Oggbk 
P ''"
###~~HB199 ))FBNN,
---{{2&JD6>>>>#### ))FBNN,
---D6>> 62>>#344999
B-C	*2K	L!//A/>> 
M ++C00NVQ;;&&&&>>#### 62>>#344999R=D<<%%FQ;;''''
||w3#5#5#:#:i#G__ 
wl	3sggfo 
499??enn,,,	*2V	Wggfe$$$ 
X
 
*2V	Wii~~'7888 
X	y(D	Eii~~'7EEE 
F	Ek 	 
P	O $ .&
 . 5 ? 
M	L 1 5% 	 
4	3 	% 
X	W 	9 
X	W 	F 
F	Es  BSP0%P-&P0*SQA	SQS)Q*AS0Q1S	Q
/S9Q:.S(Q<Q=QSQ) AS.Q,/)SQ/A6SQ5$Q2%Q5)AS4R	
RR	!S0$RRR!S:%R0R. R0$	S-P00
P?:	SSSSSSQ
Q&!	S,S/S2Q55
R?SR		
RSR
R+'S.R00
R>:Swin32z"functions not in socket on windows)reasonc                  |  #    [         R                  S:w  Ga  [        5         [        R                  R	                  [        R                  R
                  S9n [        R                  R	                  [        R                  R
                  S9nUR                  S5      I S h  vN   [        R                  " [        [        S9 nUR                  S/5      I S h  vN   S S S 5        WR                  R                  [        R                  :X  d   eU R                  S/SSUR                  5       5      I S h  vN S	:X  d   eUR!                  S
5      I S h  vN u  p4pVUS:X  d   eU/ :X  d   eUS:X  d   eX`R                  5       :X  d   eU R#                  SUR                  5       5      I S h  vN S:X  d   e[%        S5      n[%        S	5      nUR'                  Xx/5      I S h  vN n	U	u  ppVU
S:X  d   eUS:X  d   eUS:X  d   eU/ :X  d   eUS:X  d   eX`R                  5       :X  d   eU R#                  SUR                  5       5      I S h  vN S:X  d   e[%        S5      nUR'                  U/5      I S h  vN n	U	u  ppVU
S:X  d   eUS:X  d   eU/ :X  d   eU[        R(                  :X  d   eX`R                  5       :X  d   e[        R                  " [*        SS9   U R-                  S5      I S h  vN   S S S 5        g g  GNa GN,! , (       d  f       GN1= f GN GN GNs GN@ N N N6! , (       d  f       g = f7f)NrI   r   r   r   r6   r3    r   r0   r   s   xyzw   r1   s   xys   zw s   xyzwv   z.^'FakeSocket' object has no attribute 'share'$)r<   r=   r
   r   r   r   r   r   r   r   rA   sendmsgr   r    rC   r   recvmsgr#   r9   recvmsg_into	MSG_TRUNCAttributeErrorshare)r%   r&   r)   r*   ancdata	msg_flagsr+   buf1rF   retr2   s              r   test_nonwindows_functionalityrY      s     ||w
[[T[[%;%;<[[T[[%;%;<gg&''' ]]7,73**fX&&& 8yy%..000ZZ"a1ABBaGGG13B+?(	v~~"}}A~~~~''''
 YYw(899Q>>>||OOTL11-0*){{u}}&&&"}}A~~~~'''' YYx)9::a???|OOTF++-0*){{u}}"}}F,,,,,~~'''']]B
 ((1+	
 
Y  	( ' 87 C+? : 2 ;+ 	
 
s   BL< L!!L<LLLAL<5L6L<LAL<,L-5L<"L"#A)L<L%*L<7L'8A%L<L+2L)3L+7L<L
L	L<L<L<"L<%L<'L<)L++
L95L<z#windows-specific fakesocket testingc                    #    [         R                  S:X  Gau  [        5         [        R                  R	                  [        R                  R
                  S9n [        R                  R	                  [        R                  R
                  S9nU R                  S5      I S h  vN   [        R                  " [        SS9   U R                  S/SSUR                  5       5      I S h  vN   S S S 5        [        R                  " [        S	S9   UR                  S5        S S S 5        [        R                  " [        S
S9   UR                  / 5        S S S 5        [        R                  " [        5         U R                  S5        S S S 5        g g  N N! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       g = f7f)NrI   r   r   z0^'FakeSocket' object has no attribute 'sendmsg'$r   r3   rL   r   z0^'FakeSocket' object has no attribute 'recvmsg'$z5^'FakeSocket' object has no attribute 'recvmsg_into'$)r<   r=   r
   r   r   r   r   r   r   rS   rO   r   rP   rQ   r7   rT   )r%   r&   s     r   test_windows_functionalityr[      sO     ||w
[[T[[%;%;<[[T[[%;%;<gg&''']]D
 **fXr1bnn.>???	

 ]]D
 JJqM	

 ]]I
 OOB	

 ]]./HHQK 0/)  	(
 @	
 


 


 

 0/s   BG F!G>'F%F&F*!GF#!G>F4"G2GGF
F G#
F1-G4
G>G
GGc                     #    [        5         [        R                  " [        5         [        R
                  R                  5         S S S 5        g ! , (       d  f       g = f7fr   )r
   r   r   r7   r   r   rL   r   r   test_basic_tcpr]      s2     D	*	+ 
,	+	+s   %A A	A 
AA c                  t  #    [        5         [        R                  R                  [        R                  R                  S9n [        R
                  " [        SS9   U R                  [        R                  [        R                  5        S S S 5        [        R
                  " [        SS9   U R                  [        R                  [        R                  S5        S S S 5        [        R
                  " [        SS9   U R                  [        R                  [        R                  S5        S S S 5        [        R
                  " [        SS9   U R                  [        R                  [        R                  S5        S S S 5        U R!                  S5        [        R
                  " [        S	S9   U R!                  S5        S S S 5        U R#                  5       (       a   eg ! , (       d  f       GN^= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nl= f7f)
Nr   z0^FakeNet doesn't implement getsockopt\(\d, \d\)$r   z%^FakeNet always has IPV6_V6ONLY=True$Fz:^FakeNet doesn't implement setsockopt\(\d+, \d+, \.\.\.\)$Tr5   z(^FakeNet can't make inheritable sockets$)r
   r   r   r   r   r   r   
getsockoptIPPROTO_TCPTCP_NODELAYr7   
setsockoptIPPROTO_IPV6IPV6_V6ONLY
SOL_SOCKETSO_REUSEADDRset_inheritableget_inheritable)r%   s    r   test_not_implemented_functionsri      s    D			!7!7		8B 
A
 	f((&*<*<=	
 
5
 	f))6+=+=uE	

 
K
 	f))6+=+=tD	

 
K
 	f'')<)<a@	
 u	8
 	4 	
 !!#####A
 

 


 


 

 
s~   AH8/G!
!H8+0G3!H8<0H,!H80H=2H8/H' H8!
G0+H83
H=H8
HH8
H$ H8'
H51H8c                  (  #    [        5         [        R                  R                  [        R                  R                  S9n [        R
                  " [        [        S9 nU R                  5         S S S 5        WR                  R                  [        R                  :X  d   eU R                  S5      I S h  vN   [        R
                  " [        SS9   U R                  5         S S S 5        g ! , (       d  f       N= f NH! , (       d  f       g = f7f)Nr   r   r   zI^This method seems to assume that self._binding has a remote UDPEndpoint$)r
   r   r   r   r   r   r   rA   getpeernamer   r    rC   r   AssertionError)r%   r)   s     r   test_getpeernamerm     s     D			!7!7		8B	wl	3s
 
499??enn,,,
''"
###	Y
 		
 
 
4	3 $
 
sC   ADC.0AD6C?7DD%	D.
C<8D
DDc                  `  #    [        5         [        R                  " [        [        R
                  " S[        R                  R                   35      S9   [        R                  R                  5       n S S S 5        [        R                  R                  [        R                  R                  S9n U R                  5       S:X  d   eU R                  S5      I S h  vN   U R                  5       u  pUS:X  d   eUS:w  d   e[        R                  R                  [        R                  [        R                  S9nUR                  5       S:X  d   eUR                  S5      I S h  vN   UR                  5       tpnUS	:X  d   eUS:w  d   eUSS/:X  d   eg ! , (       d  f       GN+= f N NE7f)
Nz#FakeNet doesn't (yet) support type=r   r   )z0.0.0.0r   r   r   )familyr   )z::r   z::1)r
   r   r   r7   reescaper   r   SOCK_STREAMr   r   r   AF_INET6)r%   r'   r(   r&   _s        r   	test_initru     sb    D	ii1$++2I2I1JK

 [[!
 
		!7!7		8B>>~--- ''.
!!!~~HB199 
		6??9J9J		KB>>y((( '')
>>#LBq;;199A;;7
 
 " s>   AF.F4A'F.F*B
F.&F,'1F.
F'"	F.,F.)r   N)r    rp   r   r<   r   r   trio.testing._fake_netr   r=   rA   r
   r,   r.   rH   markskipifrY   r[   r]   ri   rm   ru   rL   r   r   <module>ry      s     	  
   * <<7RL\\X<L5LG  $F'>FB LLG/  2	2j LLG0  	4%$P r   