
    i-                        d dl mZ 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 d dlmZ d dlmZ d dlmZ  G d	 d
e          Z e            Zddgdg ddededee
j        rdndedeiZg ddgdZh dZdgZg Zej                            d          re                    d           dZd Z G d de          Zd  Z  e              e!d!k    r ej"                     dS dS )"    )print_function)absolute_importN)six)modules)PLATFORM_SPECIFIC_SUFFIXES)debug)MAPPINGc                       e Zd Zd ZdS )ANYc                     dS )NT )selfitems     C/usr/local/lib/python3.11/dist-packages/gevent/tests/test__all__.py__contains__zANY.__contains__   s    t    N)__name__
__module____qualname__r   r   r   r   r   r      s#            r   r   socketCAPIthread)allocateexit_threadinterrupt_main	start_newselectos	threading__builtin__builtinssignal)create_connectionRAND_addRAND_egdRAND_status_posixsubprocess)r   
subprocess>   gevent._ffigevent._utilgevent._tblibgevent._compatgevent._patchergevent._corecffigevent.threadinggevent._socketcommongevent._fileobjectposixgevent._fileobjectcommongevent.resolver._addressesgevent.resolver._hostsfilezgevent._queuewinzgevent.signalz<marker object>c                 F     t          j                    fd            }|S )Nc                 f    | j         s|                     d| j        z              |            d S )NzNeed stdlib counterpart to %s)stdlib_moduleskipTestmodname)r   fs    r   mz(skip_if_no_stdlib_counterpart.<locals>.mU   s:    ! 	JMM9DLHIII	$r   )	functoolswraps)r;   r<   s   ` r   skip_if_no_stdlib_counterpartr?   T   s8    _Q    
 Hr   c                       e Zd ZdZdZdZdZdZed             Z	d Z
d Zd Zd Zed             Zed	             Zed
             Zed             Zed             ZdS )AbstractTestMixinNFc                      j         }|                    t                    rt          j        d|z            t          j                    5  t          j        dt                     	 t          j
        |           _        n6# t          $ r) |t          j        v rd|z  }t          j        |           w xY w	 d d d            n# 1 swxY w Y   t           j        dd            _        t           j        dg            _        t           j        dg            _        t'          j        |           _         j        	 t-           j                   _        d _        t           j        dd            _         j        .d	 _         fd
t5           j                  D              _        d S d S # t          $ r Y d S w xY wd S )NzModule %s is platform specificignorezUnable to import %s__implements____imports____extensions__T__all__Fc                     g | ]F}|                     d           t          t          j        |          t          j                  D|GS )_)
startswith
isinstancegetattrr8   types
ModuleType).0nameclss     r   
<listcomp>z0AbstractTestMixin.setUpClass.<locals>.<listcomp>   s_     & & & #s33& !+733Dd+K+KUM] ^ ^	&& & &r   )r:   endswithr   unittestSkipTestwarningscatch_warningssimplefilterDeprecationWarning	importlibimport_modulemoduleImportErrorr   OPTIONAL_MODULESrL   rD   rE   rF   r	   getstdlib_name
__import__r8   stdlib_has_all
stdlib_alldir)rQ   r:   msgs   `  r   
setUpClasszAbstractTestMixin.setUpClassd   s*   +677 	P#$Dw$NOOO $&& 	 	!(,>???&4W==

   g666/'9C"+C000	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 %SZ1A4HH!#*mR@@$SZ1A2FF!+g..?&$.s$?$?! &*"!():It!L!L>)).C&& & & &$'(9$:$:& & &CNNN *)     '&s<   C)BC3B66CC
C
F5 5
GGc                     t          | j        d          s[|                     | j        t          v p| j                            d          d           |                     d| j        z             d S d S )NrG   zgevent.monkey.zModule has no allz%s Needs __all__)hasattrr\   
assertTruer:   NO_ALLrJ   r9   r   s    r   skipIfNoAllzAbstractTestMixin.skipIfNoAll   s{    t{I.. 	=OO&S$,*A*ABR*S*S#  
 MM,t|;<<<<<	= 	=r   c                    |                                   i }t          j        d| j        z  |           |                    dd            d | _        |                     t          |          t          | j        j	                             |                     t          |          t          | j        j	                             d S )Nzfrom %s import *__builtins__)rl   r   exec_r:   popmaxDiffassertEqualsetr\   rG   sorted)r   namess     r   test_allzAbstractTestMixin.test_all   s     		$t|3U;;;		.$''' 	US)<%=%=>>>t{/B(C(CDDDDDr   c           	         |                                   t          | j        pd          t          | j        pd          z   t          | j        pd          z   }	 |                     t          |          t          | j        j                             d S # t          $ r! | 
                    d| j        z             Y d S t          $ r( t          d|d| j        j        d| j                  w xY w)Nr   z'Module %s fails the all formula; fix itzUnable to sort z
 from all z in )rl   tuplerD   rE   rF   rr   rt   r\   rG   AssertionErrorr9   r:   	TypeError)r   all_calculateds     r   test_all_formulaz"AbstractTestMixin.test_all_formula   s%    $%+,,D$+,,-D'-2../ 	
	VN33#DK$788: : : : : 	T 	T 	TMMCdlRSSSSSS 	 	 	 ."NNDK$7$7$7  	s   :B 'C1 1C1c           
          | j         t          v rd S | j        6| j        1t	          | j         d| j        d| j        d| j        d          d S d S )Nz (z) has __implements__ (z+) but no stdlib counterpart module exists ())r:   ALLOW_IMPLEMENTSrD   r8   ry   r\   r`   rk   s    r   "test_implements_presence_justifiedz4AbstractTestMixin.test_implements_presence_justified   sx     <+++F*t/A/I <<<d.A.A.A4CSCSCSUV V V +*/I/Ir   c           	      ,   t          | j        pd          t          | j                  z   D ]g}|| j        v r|t                              | j        d          v r/|t          | j                  v rFt          |d| j        d| j        d          d S )Nr   z is not found in z.__all__ nor in dir(r~   )
rx   rD   rE   rc   COULD_BE_MISSINGr_   r`   rd   r8   ry   )r   rP   s     r   $test_implements_subset_of_stdlib_allz6AbstractTestMixin.test_implements_subset_of_stdlib_all   s     $-344uT=M7N7NN 	B 	BDt&&'++D,<bAAAAs4-.... SWSWSWY]YkYkYkmqmmm  "A  B  B  B	B 	Br   c                    | j         pdD ]v}t          | j        |          }	 t          | j        |          }|                     ||           D# t
          $ r& |t                              | j        g           vr Y sw xY wd S )Nr   )	rD   rL   r\   r8   assertIsNotAttributeErrorr   r_   r`   r   rP   r   stdlib_items       r   #test_implements_actually_implementsz5AbstractTestMixin.test_implements_actually_implements   s    
 '-2 	 	D4;--D%d&8$??  {3333!   /33D4DbIIII JI	 	s   +A-A>=A>c                     | j         D ]B}t          | j        |          }t          | j        |          }|                     ||           Cd S )N)rE   rL   r\   r8   assertIsr   s       r   test_imports_actually_importsz/AbstractTestMixin.test_imports_actually_imports   sZ     $ 	- 	-D4;--D!$"4d;;KMM$,,,,	- 	-r   c                    | j         t          v rd S | j        D ]q}	 t          | j        |          rt          d|d| j                  3# t          $ r2}t          d|d|d| j        d| j        d| j         
          d }~ww xY wd S )N'z&' is not an extension, it is found in zGot TypeError (z
) getting z (of z) from /)r:   EXTRA_EXTENSIONSrF   rh   r8   ry   rz   )r   rP   exs      r   test_extensions_actually_extendz1AbstractTestMixin.test_extensions_actually_extend   s    
 <+++F' 	 	D4-t44 (.d00*       $nDDD$"5"5"5t7I7I7I4<<  	 	s   /A
B-BBc                 z   g }| j         D ]/}|t          | j        dg           vr|                    |           0| j        s7|d d          D ],}t          | j        |          r|                    |           -t                              | j	                  }|_g }|D ]X}||v r=t          | j        |t                    t          u rt          d| j        d|           C|                    |           Y|}|rA| j        rd| j        d| j        d|}nd| j        d| j        d|}t          |          d S )	NrG   zIncompleteImplWarning: .z%The following items
              in z.__all__
are missing from z:
                 z%The following items
          in dir(z)
are missing from )rc   rL   r\   appendrb   rh   removeNOT_IMPLEMENTEDr_   r`   _MISSINGr   r:   r8   ry   )r   missedrP   not_implementedresultre   s         r   test_completenessz#AbstractTestMixin.test_completeness   s   
 O 	$ 	$D74;	2>>>>d### " 	(qqq	 ( (4;-- (MM$''' *--d.>??&F ( (?** t{D(;;xGGddSTTTMM$''''F 	&" 	C 	C ,,,dkkk66C	C ,,,dkkk66C !%%%	& 	&r   )r   r   r   r:   rb   rc   r`   r8   classmethodrf   rl   rv   r|   r   r?   r   r   r   r   r   r   r   r   rA   rA   ]   s       GNJKM% % [%N= = =E E E  0	V 	V 	V #
B 
B #"
B #  #" #- - #"- #  #"( #)& )& #")& )& )&r   rA   c                  X   t          j        ddd          D ]\  } }|                    t                    r |                    d          r6|}|                    dd          }t          d|z   t          t          j        ft          |d          }|t                      |j	        <   d S )	NFT)
include_so	recursivecheck_optional__main__r   rI   Test_)r   r:   )r   walk_modulesrS   r   replacetyperA   rT   TestCaser   globals)rI   r:   orig_modnamemodname_no_periodrQ   s        r   _create_testsr   -  s    *et:?A A A & &
7677 	J'' 	 (00c::'' 12&' 
 
 #&		#,)& &r   r   )#
__future__r   r   r=   sysrT   rM   rZ   rV   gevent.testingr   r   gevent.testing.sysinfor   gevent.testing.utilr   gevent._patcherr	   objectr   PY2r   r   rj   r   r   platformrJ   r   r   r?   rA   r   r   mainr   r   r   <module>r      s4   & % % % % % & & & & & &     



              " " " " " " = = = = = = % % % % % % # # # # # #    &    
cee vhHHHc#W,MM*cc KJJ%&  
 
 
"     <5!! -O,,,   M& M& M& M& M& M& M& M&`& & &. zHMOOOOO r   