
    <|h[                     V   d dl mZ d dl mZ d dlmZ  ej
                          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Zd dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ eZ  G d de!      Z" G d de"      Z# ejH                  d      s G d de"e      Z%e%Zne#Z G d dejL                        Z' G d dejL                        Z( G d dejL                        Z) G d dejL                        Z*e+dk(  r ejX                          yy)     )print_function)absolute_import)monkeyN)wraps)reraise)six)LARGE_TIMEOUT)support)paramstcp_listener)skipWithoutExternalNetwork)skipOnMacOnCI)Thread)Eventc                       e Zd ZdZd Zy)
BaseThreadNc                 >     t               fd       }| _        y )Nc                  T    	  | i |S #  t        j                         _         xY wN)sysexc_infoterminal_exc)argskwargsselftargets     X/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/tests/test__socket.pyerrors_are_fatalz-BaseThread.__init__.<locals>.errors_are_fatal+   s0    t.v..$'LLN!s    ')r   r   )r   r   r   s   `` r   __init__zBaseThread.__init__*   s"    	v	 
	 '    )__name__
__module____qualname__r   r     r!   r   r   r   '   s    L'r!   r   c                        e Zd ZddZd Zd Zy)GreenletThreadNc                 z    t         j                  | |       t        j                  | j                  g| | _        y r   )r   r    geventspawnr   glet)r   r   r   s      r   r    zGreenletThread.__init__6   s+    D&)LL4t4	r!   c                 :     | j                   j                  |i |S r   )r+   join)r   r   r   s      r   r-   zGreenletThread.join:   s    tyy~~t.v..r!   c                 8    | j                   j                          S r   )r+   readyr   s    r   is_alivezGreenletThread.is_alive=   s    99??$$$r!   )Nr%   )r"   r#   r$   r    r-   r1   r%   r!   r   r'   r'   4   s    5/%r!   r'   	threadingc                       e Zd Zd Zy)ThreadThreadc                     |j                  d      }t        j                  | |       t        j                  | fd| j                  i| | j                          y )Nr   )popr   r    _Threadr   start)r   r   r   s      r   r    zThreadThread.__init__B   sE    ZZ)Ff-T@$++@@JJLr!   N)r"   r#   r$   r    r%   r!   r   r4   r4   A   s    	r!   r4   c            
       2   e Zd ZdZej
                  Zdj                   ed      D  cg c]  }t        |       c}}}       Z
 ee
e      se
j                  d      Z
fdZd Z	 	 d#dZd$dZd	 Zej(                  rd
 Z ed      d        Zd Zd Zd Zd Zd Zd ZdZddz  Z e jB                  d      d        Z"d Z#d Z$d Z%d Z& e'd      d        Z( e'd      d        Z)d Z* e+jX                   e-ed       d!      d"        Z.xZ/S c c}}} w )%TestTCPNz, i N  asciic                 r   t         t        |           dt        j                  v r)g 	 ddlm fd| j                  fd}|| _        nd | _	        | j                  | j                               | _        | j                  j                         d   | _        y # t        $ r	 ddlm Y w xY w)	Nz-vr   )perf_counter)timec                  h    st                j                  d       t        d        z  g|   y )N   z
	 -> %0.6f)printappend)r   nowprinteds    r   logzTestTCP.setUp.<locals>.logZ   s+    GNN1%mce+3d3r!   c                 8     d|        | ffd	} |       | S )NzRegistering for teardownc                 <     d|        | j                          d } y )NzClosing on teardown)close)orE   s    r   cz%TestTCP.setUp.<locals>.cot.<locals>.cc   s    -q1GGIAr!   r%   )rI   rJ   rE   orig_cots     r   cotzTestTCP.setUp.<locals>.cota   s$    .2  r!   c                       y)zDoes nothingNr%   )_argss    r   rE   zTestTCP.setUp.<locals>.logl   s    r!   r@   )superr:   setUpr   argvr>   r=   ImportError_close_on_teardownrE   _setup_listenerlistenergetsocknameport)r   rL   rE   rC   rK   rD   	__class__s     @@@@r   rP   zTestTCP.setUpR   s    gt"$388G-44 ..H '*D# //0D0D0FG MM--/2	O  -,-s   B$ $B65B6c                     t               S r   r   r0   s    r   rT   zTestTCP._setup_listener   s
    ~r!   c                     | j                  t        j                               }|j                  |xs t        j                  |xs | j
                  f       ||j                  |       ||j                  |       |S r   )rS   socketconnectr   DEFAULT_CONNECTrW   
settimeoutsetblocking)r   hostrW   timeoutblockingsocks         r   create_connectionzTestTCP.create_connection   sh    &&v}}7d4f44d6GdiiHIOOG$X&r!   c                    	
  j                   
 
d|       g t               		
 fd}t        |      }	  
d         j                  di |}	j	                           
d|dt        |             	  t        ||      |      } 
d|        
d       t        |d	      r	 |j                         }	 |j                  t        j                          
d
       |j                          	 |j                  d       |j!                         rJ |j"                  rt%        |j"                    | j&                  }d   j)                  d      |j)                  d      } j+                  d   |d           j+                  t              t        |              j+                  |       y # t        t        f$ r Y w xY w# t        $ r Y w xY w#  
d       t        |d	      r'	 |j                         }n# t        t        f$ r Y nw xY w	 |j                  t        j                         n# t        $ r Y nw xY w 
d
       |j                          w xY w# |j                  d       |j!                         rJ w xY w)Nztest_sendall using methodc            
          dj                          j                   j                         \  } }	 | j                  d      5 } d| d|       j                           d       j	                  |j                                 d|dt        d	                d d d        ~| j                          ~ y # 1 sw Y   xY w# | j                          ~ w xY w)
Nz
	acceptingrbmodez#	accepted on server; client conn iszfile isz	readingz	done readingz	got bytesr   )rU   acceptmakefilesetrB   readlenrH   )conn_raccepted_eventrE   	read_datar   s      r   accept_and_readz.TestTCP._test_sendall.<locals>.accept_and_read   s    t}}-mm**,GD!
]]]- M>iQRS"&&($$$QVVX.(![#il:KLM 

M M 

s$   C AB:	C :C?C Cr   zcreating client connectionz%Client got accepted event from serverz; sending dataz$Client sent data: result from methodzClient will unwrap and shutdownunwrapzClient will close
   r      ,r%   )rE   r   r   rd   waitrn   getattrhasattrrv   
ValueErrorOSErrorshutdownr[   	SHUT_RDWRrH   r-   r1   r   r   	long_datasplitassertEqual)r   data
match_dataclient_methodclient_argsrt   serverclientxrr   rE   rs   s   `        @@@r   _test_sendallzTestTCP._test_sendall   sb    hh'7		  /8	),-+T++:k:F" !7AQSVW[S\] 2GFM248:A>5668,
!' OOF$4$45 '(KKO(((V(()JaL&&t,	%%d+
1z!}5YZ9J/E '0     1 5668,
!'&0  
 OOF$4$45  '(KKO((((s   >I# :G I# *F6 ;G I# 6G	I# G		I# 	GI# GI# I 1HI HI HI H87I 8	II II  I# #%Jc                 :    | j                  | j                         y r   )r   r   r0   s    r   test_sendall_strzTestTCP.test_sendall_str   s    4>>*r!   c                 `    | j                  t        j                  | j                               y r   )r   r   	text_typer   r0   s    r   test_sendall_unicodezTestTCP.test_sendall_unicode   s    s}}T^^<=r!   z3Sometimes fails for no apparent reason (buffering?)c                 f    t        j                   d| j                        }| j                  |       y )NB)arrayr   r   r   r   s     r   test_sendall_arrayzTestTCP.test_sendall_array   s$    {{3/4 r!   c                 ,    d}| j                  ||       y )Nr!   r   r   s     r   test_sendall_emptyzTestTCP.test_sendall_empty   s    4&r!   c                 0    d}| j                  ||d       y )Nr!   rw   ra   r   r   s     r   test_sendall_empty_with_timeoutz'TestTCP.test_sendall_empty_with_timeout   s    4r2r!   c                 0    d}| j                  ||d       y )Ns   hi
F)rb   r   r   s     r   test_sendall_nonblockingz TestTCP.test_sendall_nonblocking  s    
 46r!   c                 0    d}| j                  ||d       y )Nr!   send)r   r   r   s     r   test_empty_sendzTestTCP.test_empty_send
  s    4V<r!   c                     d fd}t        |      } j                         } j                  |j                               }t        |j                  f      }t        j                  d       |j                  d       t        j                  d       |j                          |j                          |j                          |j                          y )Ni c                  *   j                   j                         \  } }j                  |        t        | j                  dz  f      }	 | j                  d      }j                  |d       |j                          y # |j                          w xY w)N   tr   r   i     hello world)rU   rj   rS   r   sendallrecvr   r-   )remote_clientrp   senderresultNr   s       r   r   z'TestTCP.test_fullduplex.<locals>.server  s}    #}}335M1##M2 =#8#8#'!80F&++D1  8s   #B   Bru   r   皙?r   )
r   rd   rS   rk   rm   r>   sleepr   rH   r-   )r   r   server_threadr   client_fileclient_readerr   s   `     @r   test_fullduplexzTestTCP.test_fullduplex  s    	 f-'')--foo.?@k&6&6aUC

3~&

3 	 	r!   c                      fd}t        |      } j                         }	 |j                  d       t        j                         } j	                   j
                        5  |j                  d       d d d        t        j                         |z
  } j                  |dd       |j                          y # 1 sw Y   DxY w# |j                          w xY w)Nc                  b    j                   j                         \  } }j                  |        y r   )rU   rj   rS   ro   rp   r   s     r   rj   z)TestTCP.test_recv_timeout.<locals>.accept1  s)     mm**,GD!##D)r!   ru   r@   i   g?g?)	r   rd   r^   r>   assertRaisesTIMEOUT_ERRORr   assertTimeWithinRanger-   )r   rj   acceptorr   r8   tooks   `     r   test_recv_timeoutzTestTCP.test_recv_timeout0  s    	* ('')	a IIKE""4#5#56 "D!"99;&D&&tWg>MMO" "
 MMOs$   A C $B962C 9C>C CTs   helloi z2On Windows send() accepts whatever is thrown at itc                     g t         fd      } j                         }t        j                  d       sJ |j	                  d       t        j                         }	  j                   j                        5  |j                   j                         d d d         j                  r*t        j                         |z
  } j                  |dd       |j                          |j                          d   d   j                          y # 1 sw Y   vxY w# |j                          |j                          d   d   j                          w xY w)Nc                  V     j                  j                  j                               S r   )rB   rU   rj   )client_sockr   s   r   <lambda>z.TestTCP.test_sendall_timeout.<locals>.<lambda>R  s    ););DMM<P<P<R)S r!   ru   r   g
ףp=
?gzG?r   )r   rd   r>   r   r^   r   r   r   _test_sendall_data _test_sendall_timeout_check_timer   r-   rH   )r   r   r   r8   r   r   s   `    @r   test_sendall_timeoutzTestTCP.test_sendall_timeoutO  s	   !ST'')

3{#				&""4#5#56 8t667844yy{U***4t<MMOLLNN1##%8 8 MMOLLNN1##%s$   $D ?D>D DD 8Ec                 |     fd}t        |      }	  j                         }|j                  d      }|j                          |j	                         } j                  |d        j                  |j                         d       |j                          |j                          y # |j                          w xY w)Nc                      j                   j                         \  } }| j                  d      }|j                  d       |j	                          |j                          | j                          y Nwbrh      hello
)rU   rj   rk   writeflushrH   ro   rp   fdr   s      r   accept_oncez*TestTCP.test_makefile.<locals>.accept_onced  sP    mm**,GD!D)BHHZ HHJHHJJJLr!   ru   rg   rh   r   r!   )r   rd   rk   rH   readliner   rm   r-   )r   r   r   r   r   lines   `     r   test_makefilezTestTCP.test_makefilec  s    	 -
	++-F //t/4KLLN'')DT:.[--/5MMOHMMOs   BB) )B;c                 f     fd}t        |      }	  j                         }|j                  d       |j                  d      } j	                   j
                  |j                         |j                          |j                          |j                          y # |j                          w xY w)Nc                      j                   j                         \  } }	 t        j                  d       | j	                          y # | j	                          w xY w)Ng333333?)rU   rj   r>   r   rH   r   s     r   r   z2TestTCP.test_makefile_timeout.<locals>.accept_once{  s<    mm**,GD!

3



s   A Aru   r   rg   rh   )	r   rd   r^   rk   r   r   r   rH   r-   )r   r   r   r   r   s   `    r   test_makefile_timeoutzTestTCP.test_makefile_timeouty  s    	 -	++-Fc"d+Bd00"++>LLNHHJMMOHMMOs   A9B B0c                 P   t        j                   t         j                  t         j                  d      }| j                  |j                  t         j                         | j                  |j                  t         j                         | j                  d|j                         t        t         d      r|j                  d       | j                  |j                  t         j                         |j                  d        t        j                  dd      t         j                  t         j                  d      }	 |j                  d       | j                  |j                  |j                         |j                          |j                          y # |j                          w xY w)Nr   SOCK_NONBLOCKr@   r[   )r[   AF_INET
SOCK_DGRAMassertIsfamilyr   typeprotor{   r^   r_   r   get_originalrH   )r   s
std_sockets      r   test_attributeszTestTCP.test_attributes  s   MM&..&*;*;Q?ahh/!2!23AGG$6?+LLOMM!((FNN3MM!@,,Xx@QWQbQbdefJ#&&q)  !&&9  "		   "s   ;7F F%c                 h   t        j                   t         j                  t         j                        }	 |j                  d       |j	                  t
        j                  t        j                         f      }| j                  |t               |j                          y # |j                          w xY w)NF)r[   r   SOCK_STREAMr_   
connect_ex	greentestDEFAULT_LOCAL_HOST_ADDRr
   find_unused_portassertIsInstanceerrno_typesrH   )r   r   rets      r   *test_connect_ex_nonblocking_bad_connectionz2TestTCP.test_connect_ex_nonblocking_bad_connection  sr    MM&..&*<*<=	MM% ,,	 A A7C[C[C]^_C!!#{3GGIAGGIs   AB B1Tries to resolve hostnamec                 f   t        j                   t         j                  t         j                        }	 | j                  t         j                        5  |j                  dt        j                         f       d d d        |j                          y # 1 sw Y   xY w# |j                          w xY wNzfoo.bar.fizzbuzz)	r[   r   r   r   gaierrorr   r
   r   rH   r   r   s     r   test_connect_ex_gaierrorz TestTCP.test_connect_ex_gaierror  s     MM&..&*<*<=	""6??3 O0'2J2J2LMNO GGIO O GGIs#   B &B9B BB B0c                      fd}t        j                   t         j                  t         j                        } j                  t              5  d |_        d d d        |j                           G d dt         j                         } |t         j                  t         j                        } ||       y # 1 sw Y   `xY w)Nc                    	 j                  t        j                        5  | j                  dt	        j
                         f       d d d        | j                          y # 1 sw Y   xY w# | j                          w xY wr   )r   r[   r   r   r
   r   rH   )rc   r   s    r   do_itz7TestTCP.test_connect_ex_not_call_connect.<locals>.do_it  se    &&v7 VOO%79Q9Q9S$TUV 

V V 

s"   A- &A!A- !A*&A- -A?c                       e Zd Zd Zy)3TestTCP.test_connect_ex_not_call_connect.<locals>.Sc                     t        d      )NzShould not be called)AssertionError)r   r   s     r   r\   z;TestTCP.test_connect_ex_not_call_connect.<locals>.S.connect  s    $%;<<r!   N)r"   r#   r$   r\   r%   r!   r   Sr     s    =r!   r   )r[   r   r   r   AttributeErrorr\   rH   )r   r   r   r   s   `   r    test_connect_ex_not_call_connectz(TestTCP.test_connect_ex_not_call_connect  s    	 MM&..&*<*<=~. 	AI				= 	= fnnf001a	 	s   B55B>c                 l   t        j                   t         j                  t         j                        }	 |j                  d       | j	                  t
              5  |j                  t        j                  df       d d d        |j                          y # 1 sw Y   xY w# |j                          w xY w)NFi  )
r[   r   r   r_   r   OverflowErrorr   r   r   rH   r   s     r   $test_connect_ex_nonblocking_overflowz,TestTCP.test_connect_ex_nonblocking_overflow  s    MM&..&*<*<=	MM% ""=1 Ii??GHI GGII I GGIs#   &B! "B<B! BB! !B3SOCK_CLOEXECzRequires SOCK_CLOEXECc                     t         j                  }t        j                   t         j                  t         j                  |z        } fd}t	        |      }	 |j                  t        j                   j                  f       |j                  d      } j                  |j                         d       |j                          |j                          |j                          y # |j                          w xY w)Nc                      j                   j                         \  } }| j                  d      }|j                  d       |j	                          | j	                          y r   )rU   rj   rk   r   rH   r   s      r   r   zATestTCP.test_connect_with_type_flags_ignored.<locals>.accept_once  sG    mm**,GD!D)BHHZ HHJJJLr!   ru   rg   rh   r   )r[   r   r   r   r   r\   r   r]   rW   rk   r   r   rH   r-   )r   r   r   r   r   r   s   `     r   $test_connect_with_type_flags_ignoredz,TestTCP.test_connect_with_type_flags_ignored  s     **MM&..&*<*<|*KL	 -	IIv--tyy9:&BR[[]J7HHJGGIMMOHMMOs   A=C' 'C9)NNNN)Nr   )0r"   r#   r$   __timeout__r[   ra   r   r-   rangestrr   
isinstancebytesencoderP   rT   rd   r   r   r   PY2r   r   r   r   r   r   r   r   r   r   r   r   skipOnWindowsr   r   r   r   r   r   r   r   r   unittest
skipUnlessr{   r   __classcell__).0r   r   rX   s   000@r   r:   r:   K   st   KNNM		5<88a3q689Ii'$$W-	-3^ ?C#']0~+ ww	> HI! J!'3
7=
B* (,$ "I- YQR& S&&,((   ;< =   ;< =0 X8022Y 9s   Dr:   c                   V    e Zd ZeZd Zd Zej                   e	d      d               Z
y)TestCreateConnectionc                     t        j                         }| j                  t        j                  d      5  t        j
                  t        j                  |ffddi| d d d        y # 1 sw Y   y xY w)Nz5refused|not known|already in use|assign|not availablera      )r
   r   assertRaisesRegexr[   errorrd   r   DEFAULT_BIND_ADDR)r   	conn_argsconnect_ports      r   test_refusesz!TestCreateConnection.test_refuses  sp    //1## H
 	 $$,,l; 	 	 	s   )A''A0c                 T    t        j                         }| j                  d|f       y )N )source_address)r
   r   r  )r   source_ports     r   test_refuses_from_portz+TestCreateConnection.test_refuses_from_port  s(    ..0 	"k):;r!   r   c                 l    G d dt                G fddt              d }dd lm} | j	                  |j
                  t        j
                         |j                  }|j                  }	 |_        ||_        | j                        5  t        j
                  d       d d d        | j	                  dt        j                               | j                  j                  d   j                         d	_	        ||_        ||_        y # 1 sw Y   lxY w# d	_	        ||_        ||_        w xY w)
Nc                       e Zd Zy)3TestCreateConnection.test_base_exception.<locals>.EN)r"   r#   r$   r%   r!   r   Er    s    r!   r  c                   0    e Zd ZdZdZfdZ fdZd Zy)<TestCreateConnection.test_base_exception.<locals>.MockSocketr%   Fc                 2    xj                   | fz  c_         y r   )created)r   rp   
MockSockets     r   r    zETestCreateConnection.test_base_exception.<locals>.MockSocket.__init__$  s    ""tg-"r!   c                      |      r   r%   )r   rp   r  s     r   r\   zDTestCreateConnection.test_base_exception.<locals>.MockSocket.connect'  s    d
r!   c                     d| _         y )NT)closedr0   s    r   rH   zBTestCreateConnection.test_base_exception.<locals>.MockSocket.close*  s	    "r!   N)r"   r#   r$   r   r$  r    r\   rH   )r  r!  s   r   r!  r    s    GF.#r!   r!  c                      dgS )N)r@         r'     r%   )rp   s    r   mockgetaddrinfozATestCreateConnection.test_base_exception.<locals>.mockgetaddrinfo-  s    #%%r!   r   )r`   rW   r@   r%   )BaseExceptionobjectgevent.socketr[   r   rd   getaddrinfor   rn   r   
assertTruer$  )r   r)  gsocketorig_socketorig_getaddrinfor  r!  s        @@r   test_base_exceptionz(TestCreateConnection.test_base_exception  s	   
	 		# 	#	& 	(22F4L4LMnn"..	3'GN"1G""1% ;(()9:; QJ$6$6 78OOJ..q1889 "$J(GN"2G; ; "$J(GN"2Gs%   0D D%AD DD D3N)r"   r#   r$   r	   r   r  r  r   ignores_leakcheckr   r2  r%   r!   r   r  r    s9    K.<    ;<*3 = !*3r!   r  c                   <    e Zd Zej                  d        Zd Zd Zy)TestFunctionsc                     ddl m}  G d dt              }| j                  |j                        5  |j                   |       d       d d d        y # 1 sw Y   y xY w)Nr   )r[   c                       e Zd ZdZd Zy)+TestFunctions.test_wait_timeout.<locals>.ioNc                 .    t        j                  d       y )Nrw   )r)   r   )r   rN   s     r   r8   z1TestFunctions.test_wait_timeout.<locals>.io.startO  s    R r!   )r"   r#   r$   callbackr8   r%   r!   r   ior8  L  s    H!r!   r;  g{Gz?r   )r)   r[   r+  r   ra   ry   )r   r/  r;  s      r   test_wait_timeoutzTestFunctions.test_wait_timeoutG  sN     	-	! 	! w/ 	-LLtL,	- 	- 	-s   AAc                    g }t         j                  r3|j                  d       |j                  d       |j                  d       t        j                  d d dk  r|j                  d       | j                  d|       y )	Ngethostbynamegethostbyname_exgethostbyaddrr&  )r'     rd   r[   )exclude)r   PYPYrB   r   version_info!assertMonkeyPatchedFuncSignatures)r   rB  s     r   test_signatureszTestFunctions.test_signaturesV  sl    >>
 NN?+NN-.NN?+BQ') NN./..x.Ir!   c                    ddl m j                  j                  s| j	                  d       t        j                  d      s| j	                  d       d} G fddt              }| j                  |j                  ||             y )	Nr   )_socketcommonz
Needs IPv6	inet_ptonzNeeds inet_pton)z2607:f8b0:4000:80e::200eP   r   	   c                   (    e Zd ZW  j                  Zy)6TestFunctions.test_resolve_ipv6_scope_id.<locals>.sockN)r"   r#   r$   AF_INET6r   )SCs   r   rc   rM  r  s    [[Fr!   rc   )	r)   rH  
__socket__has_ipv6skipTestr{   r+  r   _resolve_addr)r   addrrc   rO  s      @r   test_resolve_ipv6_scope_idz(TestFunctions.test_resolve_ipv6_scope_idh  sh    .}}%%MM,'r}}k2MM+, 6	!6 	!dB,,T489r!   N)r"   r#   r$   r   r3  r<  rF  rU  r%   r!   r   r5  r5  E  s%      
- !
-J$:r!   r5  c                       e Zd Zd Zd Zd Zy)
TestSocketc                     t        j                          }|j                          | j                  t         j                        5  |j	                  t         j
                         d d d        y # 1 sw Y   y xY wr   )r[   rH   r   r  r~   r   r   s     r   test_shutdown_when_closedz$TestSocket.test_shutdown_when_closedx  sQ     MMO		v||, 	)JJv''(	) 	) 	)s    A--A6c                     dd l }t        j                         }	 |j                  |      }| j                  |       |j	                          y # |j	                          w xY w)Nr   )weakrefr[   refassertIsNotNonerH   )r   r[  r   ws       r   test_can_be_weak_refzTestSocket.test_can_be_weak_ref  sC    MMO	AA  #GGIAGGIs   "A Ac                     t        j                          }	 | j                  t              5  t        |d       d d d        |j	                          y # 1 sw Y   xY w# |j	                          w xY w)N__dict__)r[   r   r   rz   rH   r   s     r   test_has_no_dictzTestSocket.test_has_no_dict  sV    MMO	"">2 ':&' GGI' ' GGIs!   A AA AA A/N)r"   r#   r$   rY  r_  rb  r%   r!   r   rW  rW  v  s    )r!   rW  __main__)-
__future__r   r   r)   r   	patch_allr   r   r[   r>   r  	functoolsr   gevent._compatr   gevent.testingtestingr   r   r	   r
   r   gevent.testing.socketsr   gevent.testing.skippingr   r   r2   r   r7   r   intr   r+  r   r'   is_module_patchedr4   TestCaser:   r  r5  rW  r"   mainr%   r!   r   <module>rp     s	   % &      
       " "  ( " ! / > 1 ( 
' '
%Z 
%  v,z7  FFfi   fRO39-- O3b/:I&& /:b## < zINN r!   