
    i                        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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 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 d           n# e!e"f$ r Y nw xY wdZ# e            dz
  Z$ e%ej&        '                    d          p e(e$d                    Z)e)dk    rdZ)erdZ#de#iZ*er e+esdnde)          Z)d Z,d Z- G d d e.          Z/ G d! d"e0          Z1 G d# d$e.          Z2 G d% d&e.          Z3 G d' d(e.          Z4d) Z5d6d+Z6d, Z7d7d.Z8	 	 d8d0Z9d1 Z:d9d3Z;d4 Z<e=d5k    r e<             dS dS ):    N)contextmanager)	timedelta)
ThreadPool)	cpu_count)Lazy   )util)parse_resources)setup_resources)unparse_resources)RUNNING_ON_CI)PYPY)PY2)RESOLVER_ARES)RUN_LEAKCHECKS)OSX)six)travis	_testcapid   NWORKERS      
      timeout   c                     t           j                            |           s1|r/t          |          }t           j                            ||           S | S N)ospathisfile_dir_from_package_namejoin)filenamepackagepackage_dirs      D/usr/local/lib/python3.11/dist-packages/gevent/testing/testrunner.py_package_relative_filenamer)   >   sG    7>>(## 3 3,W55w||K222O    c                 v    t          j        |           }t          j                            |j                  }|S r   )	importlibimport_moduler    r!   dirname__file__)r&   package_modr'   s      r(   r#   r#   E   s.    )'22K'//+"677Kr*   c                   6    e Zd Zd Zd Zd Zed             ZdS )ResultCollectorc                 h    d| _         i | _        i | _        d| _        d| _        g | _        i | _        d S )Nr   )totalfailedpassedtotal_casestotal_skipped_all_resultsreranselfs    r(   __init__zResultCollector.__init__M   s:    



r*   c                     | j                             |           |s|| j        |j        <   nd| j        |j        <   | xj        |j        z  c_        | xj        |j        z  c_        | S )NT)	r9   appendr5   namer6   r7   	run_countr8   skipped_countr<   results     r(   __iadd__zResultCollector.__iadd__W   ss      ((( 	,'-DK$$'+DK$F,,f22r*   c                 X    | j                             |           || j        |j        <   | S )z
        collector <<= result

        Stores the result, but does not count it towards
        the number of cases run, skipped, passed or failed.
        )r9   r?   r:   r@   rC   s     r(   __ilshift__zResultCollector.__ilshift__b   s.     	  ((("(
6;r*   c                 T    t          | j        t          j        d          d          S )zk
        A new list of RunResult objects, sorted from longest running
        to shortest running.
        run_durationT)keyreverse)sortedr9   operator
attrgetterr;   s    r(   longest_running_testsz%ResultCollector.longest_running_testsm   s1     d'"-n=="$ $ $ 	$r*   N)__name__
__module____qualname__r=   rE   rG   propertyrO    r*   r(   r2   r2   K   s\          	 	 		 	 	 $ $ X$ $ $r*   r2   c                       e Zd ZdS )FailFastN)rP   rQ   rR   rT   r*   r(   rV   rV   x   s        Dr*   rV   c                   Z    e Zd ZdZdZdddddedddZd Zd Zd	 Z	d
 Z
d Zd ZddZdS )Runnerg?g?rT   Fallowed_return_codesconfigured_failing_testsfailfastquietconfigured_run_alone_testsworker_countsecond_chancec                ,   || _         || _        || _        || _        |r|rJ || _        || _        t                      | _        t          | j                   | j        _	        g | _
        t          t          |          |          pd| _        || _        dS )a  
        :keyword allowed_return_codes: Return codes other than
           0 that are counted as a success. Needed because some versions
           of Python give ``unittest`` weird return codes.
        :keyword quiet: Set to True or False to explicitly choose. Set to
            `None` to use the default, which may come from the environment variable
            ``GEVENTTEST_QUIET``.
        r   N)_tests_configured_failing_tests_quiet_configured_run_alone_tests	_failfast_second_chancer2   resultslenr4   _running_jobsmin_worker_count_allowed_return_codes)	r<   testsrZ   r[   r\   r]   r^   r_   r`   s	            r(   r=   zRunner.__init__   s    $ )A&+E(////!+&(( -- U\::?a%9"""r*   c                 >   | j         |d<   | j        
| j        |d<   t          j        |fi |}|sE| j        r>| xj        |z  c_        t          j        d|j        d           t          j        |fi |}|s| j        rt          |          | xj        |z  c_        d S )NrZ   r]   z> %swarningcolor)
rm   rd   r	   runrg   rh   logr@   rf   rV   )r<   cmdkwargsrD   s       r(   _run_onezRunner._run_one   s    )-)C%&;""kF7O#(((( 	-$- 	-LLV#LLHVV[	::::Xc,,V,,F 	 $. 	 
 3--r*   c                 ,   | j         dd         D ]q}|                                s|                                r| j                             |           F|                                 t          j        d|           rt          | j                   S )zLClean up the list of running jobs, returning how many are still outstanding.Nz!Internal error in testrunner.py: )rj   ready
successfulremovegetsysexitri   )r<   rs     r(   _reapzRunner._reap   s    #AAA& 	H 	HA7799 ||~~ H"))!,,,,!!FGGGG4%&&&r*   c                     t          j        dt          | j                  d           | j        r8|                                 sd S t          j        | j                   | j        6d S d S )NzReaping %d jobsdebugrq   )r	   rt   ri   rj   r   sleepTIME_WAIT_REAPr;   s    r(   	_reap_allzRunner._reap_all   sy    "C(:$;$;7KKKK  	,::<< Jt*+++   	, 	, 	, 	, 	,r*   c                     	 |                                  | j        k     r;|                    | j        |f|pi           }| j                            |           d S t          j        | j                   rr   )	r   rl   apply_asyncrw   rj   r?   r	   r   TIME_WAIT_SPAWN)r<   poolru   optionsjobs        r(   _spawnzRunner._spawn   sp    	-zz||d000&&t}sgw}"MM"))#...Jt+,,,	-r*   c           
      H   t          j        d| j        dt          j        ddt          z            d           | j        dk    p| j        t           _        t          j                    }	 |                                  nb# t          $ rA | 
                    t          j                    |z
  d           t          j        d	             t          j                      xY w|                                  | 
                    t          j                    |z
  d
           d S )Nz+Running tests in parallel with concurrency  numberz(concurrency available: %d).r   F)r~   z(partial results)
T)r	   rt   rl   	_colorizeAVAIL_NWORKERSrd   BUFFER_OUTPUTperf_counter
_run_testsKeyboardInterrupt_report	traceback	print_excr   )r<   starts     r(   __call__zRunner.__call__   s"   N8%B^%STTTT
 	 	 	 "/!3Bt{!##	OO  	 	 	LL*,,u45LAAAH*+++	!!!T&((50t<<<<<s   ,B AC c                 r   g }| j         }t          | j                  }	 |D ]M\  }}|pi }t          | j        |          r|                    ||f           6|                     |||           N|                                 |                                 |r*t          j
        d           |D ]\  }} | j        |fi | dS dS # t          $ rP 	 t          j
        d           |                                  Y dS # t          $ r |                                  w xY w |                                  xY w)z#Runs the tests, produces no report.zRunning tests marked standalonez*Waiting for currently running to finish...N)rb   r   rl   matchesre   r?   r   closer$   r	   rt   rw   r   r   	terminate)r<   	run_alonern   r   ru   r   s         r(   r   zRunner._run_tests   s   	$,--	 % 4 4W!-R4;SAA 4$$c7^4444KKc73333JJLLLIIKKK 2:;;;$- 2 2LC!DM#1111112 22 2  	 	 	EFFF      $      	NNs   B$C 
D6(C== DD6c                 D    | j         }t          |||| j                   d S )N)r~   tookr[   )rh   reportrc   )r<   elapsed_timer~   rh   s       r(   r   zRunner._report  s9    ,%)%C		
 	
 	
 	
 	
 	
r*   NF)rP   rQ   rR   r   r   DEFAULT_NWORKERSr=   rw   r   r   r   r   r   r   rT   r*   r(   rX   rX   {   s        NO
 ')*,,..$ :  :  :  :  :D  "
' 
' 
', , ,- - -= = =0  >
 
 
 
 
 
r*   rX   c                   &    e Zd Zd Zd Zd Zd ZdS )TravisFoldingRunnerc                      | _         | _        t          t          t	          j                                         _        |j         fd}||_        d S )Nc                                                        	                                                 d S #                                  w xY wr   )_begin_fold	_end_fold)	run_testsr<   s   r(   r   z0TravisFoldingRunner.__init__.<locals>._run_tests  sQ    !	         s	   
7 A)_runner_travis_fold_msgstrintr	   r   _travis_fold_namer   )r<   runnertravis_fold_msgr   r   s   `   @r(   r=   zTravisFoldingRunner.__init__  sl     /!$S):)<)<%=%=!>!> %		! 	! 	! 	! 	! 	! 'r*   c                 D    t          j        | j        | j                   d S r   )r   
fold_startr   r   r;   s    r(   r   zTravisFoldingRunner._begin_fold#  s,    $0/	1 	1 	1 	1 	1r*   c                 8    t          j        | j                   d S r   )r   fold_endr   r;   s    r(   r   zTravisFoldingRunner._end_fold'  s    ./////r*   c                 *    |                                  S r   )r   r;   s    r(   r   zTravisFoldingRunner.__call__*  s    ||~~r*   N)rP   rQ   rR   r=   r   r   r   rT   r*   r(   r   r     sP        ' ' '"1 1 10 0 0    r*   r   c                       e Zd ZdZdZ	 	 	 	 	 	 	 ddZ G d de          Zee	d                         Z
ed	             Zd
 Zd ZdS )	DiscoveryNrT   FTc           	         |pi | _         t          |pd          | _        || _        |                    dt                                | _        || _        |rO|                    d          }|D ]7}| j                            t          t          ||                               8|r:| j                            |                    dt                                           |r|| _
        t          |          | _        d S d S )NrT   TEST_FILE_OPTIONS,IGNORE_COVERAGE)configsetignorern   r|   configured_test_optionsallow_combinesplitupdateload_list_from_filer&   r#   r'   )	r<   rn   ignore_filesignoredcoverager&   r   r   fs	            r(   r=   zDiscovery.__init__2  s    l'-R((
'-zz2Esuu'M'M$* 	I'--c22L! I I""3':1g'F'F#G#GHHHH 	EKvzz*;SUUCCDDD 	?"DL5g>>D	? 	?r*   c                      e Zd Zd Ze ej        d           ej        d          fd            Zed             Zed             Z	e ej        d           ej        d           ej        d	           ej        d
          fd            Z
d Zd Ze ej        d          fd            Zd Zd Zd Zed             Zd ZddZd Zd ZdS )Discovery.Discoveredc                     t          j                    | _        |d         | _        |d         | _        || _        || _        || _        || _        g | _	        g | _
        g | _        g | _        d S )N	RUN_ALONEFAILING_TESTS)r    getcwdorig_dirconfigured_run_aloner[   r&   r   r   r   	to_importstd_monkey_patch_filesno_monkey_patch_filescommands)r<   r&   r   r   r   r   s         r(   r=   zDiscovery.Discovered.__init__N  si    IKKDM(.{(;D%,2?,CD)"DL+BD(!.D DKDN*,D')+D&DMMMr*   s   [^#].*patch_all\(\)s       .*patch_all\(\)c                 r    t          |                    |                     o|                    |            S r   )boolsearch)contents_patch_present_patch_indenteds      r(   __makes_simple_monkey_patchz0Discovery.Discovered.__makes_simple_monkey_patch]  s=     ^**84455 9 (..x888r*   c                 
    d| vS )Ns   testrunner-no-monkey-combinerT   r   s    r(   __file_allows_monkey_combinez1Discovery.Discovered.__file_allows_monkey_combinek  s    2(BBr*   c                 
    d| vS )Ns   testrunner-no-combinerT   r   s    r(   __file_allows_combinez*Discovery.Discovered.__file_allows_combineo  s    +8;;r*   s       greentest.main\(\)s       unittest.main\(\)s    from gevent.testing import.*mains       main\(\)c                     |                     |           p>|                     |           p)|                     |           o|                     |           S r   r   )r   _greentest_main_unittest_main_import_main_mains        r(   __calls_unittest_main_toplevelz3Discovery.Discovered.__calls_unittest_main_toplevels  sY      &&x00 N!((22N ''11Lell86L6Lr*   c                 ^    t           p&|| j        v p|| j        v pt          | j        |          S r   )r   r   r   r   r[   )r<   r%   s     r(   __has_configz!Discovery.Discovered.__has_config  sD     Dt;;Dt88D 48(CC	r*   c                     | j         oi|                     |           oS|                     |          o>|                     |          o)|                     |          o|                     |          S r   )r   _Discovered__has_config&_Discovered__makes_simple_monkey_patch'_Discovered__file_allows_monkey_combine _Discovered__file_allows_combine)_Discovered__calls_unittest_main_toplevelr<   r%   r   s      r(   __can_monkey_combinez)Discovery.Discovered.__can_monkey_combine  s    " B))(333B44X>>B 55h??B ..x88	B
 77AAr*   s   [^#].*patch_\w*\(c                 .    |                     |            S r   r   )r   r   s     r(   __makes_no_monkey_patchz,Discovery.Discovered.__makes_no_monkey_patch  s    %,,X6666r*   c                     | j         oT|                     |           o>|                     |          o)|                     |          o|                     |          S r   )r   r   "_Discovered__makes_no_monkey_patchr   r   r   s      r(   __can_nonmonkey_combinez,Discovery.Discovered.__can_nonmonkey_combine  sp    " B))(333B00::B ..x88B 77AAr*   c                 "    t           j        dg}|S )N-u)r}   
executable)r<   ru   s     r(   __begin_commandz$Discovery.Discovered.__begin_command  s    >4(C, Jr*   c                    d|v r| j                             |           d S |                     ||          r%| j                            | j        r|n|           d S |                     ||          r%| j                            | j        r|n|           d S |                                 }| j        r|                    d|z              n|                    |           t          	                                }|
                    | j                            |i                      | j                            ||f           d S )Ns
   TESTRUNNER-m)r   r?   _Discovered__can_monkey_combiner   r&   "_Discovered__can_nonmonkey_combiner   _Discovered__begin_commandDEFAULT_RUN_OPTIONScopyr   r   r|   r   )r<   qualified_namer%   r   ru   r   s         r(   
__add_testzDiscovery.Discovered.__add_test  sN   (( %%n55555**8X>> 5+22T\3_>>W_`````--hAA 5*11DL2^..V^_____ **,,< ) JJtn45555JJx(((-2244t;??"MMNNN$$c7^44444r*   c                     d | D             S )Nc                 @    g | ]}||                     d           |S )-)
startswith).0xs     r(   
<listcomp>z9Discovery.Discovered.__remove_options.<locals>.<listcomp>  s.    BBB!aBS0A0ABABBBr*   rT   )lsts    r(   __remove_optionsz%Discovery.Discovered.__remove_options  s    BBsBBBBr*   c                    | j         D ]o}t          j        |          }|                                D ]D\  }}|                     |          d         | j        v r(| j                            ||f           Ep| j         d d = d S )N)r   r,   r-   
TESTRUNNER_Discovered__remove_optionsr   r   r?   )r<   r  moduleru   r   s        r(   __expand_importsz%Discovery.Discovered.__expand_imports  s    "&. 9 9"0@@$*$5$5$7$7 9 9LC,,S11"5DD M((#w88889 qqq!!!r*      c                 x  	 |sd S ddl m} ddg		fd} |||          D ]\  }}|                                 }|                    d           |                    d           |D ]}|                    |           | j                            d|t                                          f           |d d = d S )Nr   )groupbyc                 v    d         k    rdd<   dxx         dz  cc<   dxx         dz  cc<   d         S )Nr   r   rT   )_cnt
group_sizes    r(   
make_groupz;Discovery.Discovered.__combine_commands.<locals>.make_group  sN    q6J&&CFFFFaKFFFA!1vr*   r   unittest)	itertoolsr  r  r?   r   insertr  r  )
r<   filesr  r  r  r  groupru   r@   r  s
     `      @r(   __combine_commandsz'Discovery.Discovered.__combine_commands  s    ))))))a&C      $GE:66 K K5**,,

4   

:&&&! % %DJJt$$$$$$Q.A.F.F.H.H(IJJJJaaar*   c                    |                     d          rB|x}}|t          d          dz   d          }|                    dt          j                  dz   }n;t          j                            |          d         }| j        r| j        dz   |z   n|}t          j                            |          }t          j        	                    |          s<|
                    d          s't          j        	                    |dz             r|dz  }t          |d          5 }|                                }d d d            n# 1 swxY w Y   |                     |||           d S )Ngevent.testsr   r   .pyr   rb)r
  ri   replacer    sepr!   splitextr&   abspathexistsendswithopenread_Discovered__add_test)r<   r%   r  module_nameabs_filenamer   r   s          r(   
visit_filezDiscovery.Discovered.visit_file  s   "">22 c/77#C$7$7!$;$<$<=#++C885@ g..x88;EI\!b!3k!A!AWb 7??844L|44&$--e44& |e';<<& %lD)) $Q 6688$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ OONHh?????s   D>>EEc                 8   |D ]}|                      |           t                              | j                  5  |                                  d d d            n# 1 swxY w Y   |                     | j                   |                     | j                   d S r   )r3  r   _in_dirr   _Discovered__expand_imports_Discovered__combine_commandsr   r   )r<   	filenamesr%   s      r(   visit_filesz Discovery.Discovered.visit_files   s    % * *))))""4=11 ( (%%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (##D$?@@@##D$>?????s   AA"ANr  )rP   rQ   rR   r=   staticmethodrecompiler   r   r   r   r   r   r   r  r  r0  r  r6  r7  r3  r9  rT   r*   r(   
Discoveredr   M  s       	 	 	 
  *rz*ABB *
+B C C	 	 	 
	 
	C 	C 
	C 
	< 	< 
	< 
 !+
+E F F)rz*CDD'RZ(LMM bj!122	 	 	 
		 	 		 	 	 
=GRZH]=^=^ 	7 	7 	7 
	7	 	 		 	 	4	5 	5 	5< 
	C 	C 
	C	" 	" 	"	 	 	 	4	@ 	@ 	@>	@ 	@ 	@ 	@ 	@r*   r>  c              #      K   t          j                    }| rt          j        |            	 d V  t          j        |           d S # t          j        |           w xY wr   )r    r   chdir)r'   olddirs     r(   r5  zDiscovery._in_dir(  se        	"H[!!!	EEEHVBHVs   A Ac                    | j         }|                     | j        | j        | j        | j        | j                  }|                     | j                  5  |s3t          t          j
        d                    t          dg          z
  }nt          |          }| j        r
|| j        z  }t          |          }|                    |           d d d            n# 1 swxY w Y   |S )Nz	test_*.pyztest_support.py)rn   r>  r&   r   r   r   r   r5  r'   r   globrL   r9  )r<   rn   
discovereds      r(   rD  zDiscovery.discovered3  s   
__T\43O%)[$+t?QS S
 \\$*++ 	* 	* #DIk2233c;L:M6N6NNE

{ % $5MME""5)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*" s   A:CC!Cc                 4    t          | j        j                  S r   )iterrD  r   r;   s    r(   __iter__zDiscovery.__iter__M  s    DO,---r*   c                 4    t          | j        j                  S r   )ri   rD  r   r;   s    r(   __len__zDiscovery.__len__P  s    4?+,,,r*   )NNrT   FNNT)rP   rQ   rR   r'   r&   r=   objectr>  r;  r   r5  r   rD  rG  rI  rT   r*   r(   r   r   .  s        KG ? ? ? ?6Y@ Y@ Y@ Y@ Y@V Y@ Y@ Y@v   ^ \ 
  
T2. . .- - - - -r*   r   c                    g }| rt          t          | |                    5 }|D ]G}|                    dd          d                                         }|r|                    |           H	 d d d            n# 1 swxY w Y   |S )N#r   r   )r.  r)   r   stripr?   )r%   r&   rD   r   r  s        r(   r   r   S  s    F %,Xw??@@ 	%A % %GGCOOA&,,.. %MM!$$$%	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 Ms   AA::A>A>Tc                 b   t          |t                    rd                    |          }| D ]}|s|                    d          r|                    dd          }|                    d|z             s)|                    |                    dd                    r dS d|vr	||k    r dS dS )Nr   zFLAKY  r&  TF)
isinstancelistr$   r
  r(  r-  )possibilitiescommandinclude_flakylines       r(   r   r   _  s    '4   $((7##   	!:!: 	||Hb))
 C$J'' 	7+;+;DLLPR<S<S+T+T 	44w7d??445r*   c                     | dk     rd| z  S t          t          t          |                               } |                     d          r
| dd          } | S )N   z%.1fssecondsz0:r   )r   r   roundr
  rX  s    r(   format_secondsr[  q  s\    ||  )E'NN33344G$ !""+Nr*   r  c                 n   | j         }|sd S t          j        d           t          d|d         j        z            }dt          |          z   dz   }t                      }|D ]R}t          j        ||j        |j                   |                    |j                   t          |          |k    r d S Sd S )Nz
Longest-running tests:z%.1fr   %z.1f seconds: %s)	rO   r	   rt   ri   rI   r   r   r@   add)result_collectorhow_manyrO   #length_of_longest_formatted_decimalfrmt
seen_namesrD   s          r(   _show_longest_runningrd  z  s    ,B   	H'(((*-f7LQ7O7\.\*]*]'8999<MMDJ'  v*FK888v{###z??h&&EE ' r*   rT   c           	         | j         }| j        }| j        }| j        }| j        }t          |            |rdt          |          z  }nd}g }	g }
g }|D ])}t          ||d          r|                    |           *|r4t          j
        dt          |          |d           t          |           | j        r>t          j
        dt          | j                  |d	           t          | j                   |rt          j
        d
t          |          ||d	           |D ]?}t          ||d          r|	                    |           *|
                    |           @|	r4t          j
        dt          |	          |d	           t          |	           |
r4t          j
        dt          |
          |d           t          |
           t          j
        d||rt          j        dd|z            nd||           |rc|
r/t          j        t#          dt          |
                               |rt          j        d           |dk    rt          j        d           d S d S d S )Nz in %srO  F)rT  z
%s/%s unexpected passeserrorrq   z
%s/%s tests rerunrp   z
%s/%s tests failed%sTz
%s/%s expected failuresz
%s/%s unexpected failuresz
Ran %s tests%s in %s files%sskippedz (skipped=%d)r   e   r   zNo tests found.)r4   r5   r6   r7   r8   rd  r[  r   r?   r	   rt   ri   
print_listr:   r   r}   r~   rk   )r_  r~   r   r[   r4   r5   r6   r7   r8   failed_expectedfailed_unexpectedpassed_unexpectedr@   s                r(   r   r     s    "E$F$F".K$2M*+++ ....O + ++TGGG 	+$$T*** &,c2C.D.DeSZ[[[[$%%% +&,<,B(C(CUR[\\\\#)*** *)3v;;t9UUUU 	/ 	/D/TJJJ /&&t,,,,!((.... 	(H0#o2F2FU^____''' 	*H2C8I4J4JEY`aaaa()))H(FS[y/M"ABBBY[    ( 	7HSc"34455666 	HSMMMA::H&'''''( (
 :r*   c                 :    | D ]}t          j        d|           d S )Nz - %s)r	   rt   )r  r@   s     r(   ri  ri    s0        $   r*   Fc                    d } |d          rdt           j        rt           j        dgk    rGddg}t          s|                    d           d                    |g dz             t
          j        d<    |d          rd	t
          j        d<    |d
          r| rdt
          j        d
<    |d          r| rdt
          j        d<    |d          rdt
          j        d<    |d          r| rdt
          j        d<   t           j        j        dk    r | sdt
          j        d<   dt
          j        d<   t
          j        	                    dd            d t
          j        D             }t          d |D                       }t          |                                          D ]\  }}t          j        d|||d           d S )Nc                 \    t          t          j                            |                      S r   )r   r    environr|   )rJ   s    r(   not_setz_setup_environ.<locals>.not_set  s!    
s++,,,,r*   PYTHONWARNINGSdefaultzdefault::DeprecationWarningzdefault::ResourceWarningr   )	zignore:::site:zignore:::pkgutil:zignore:::importlib._bootstrap:z'ignore:::importlib._bootstrap_external:z)ignore:::pkg_resources._vendor.pyparsing:zignore:::dns.namedict:zignore:::dns.hash:zignore:::dns.zone:zignore:::coverage.core:PYTHONFAULTHANDLERtrueGEVENT_DEBUGr   PYTHONTRACEMALLOC10PYTHONDEVMODE1PYTHONMALLOCfinalrO  PYTHONSAFEPATHc                 ^    i | ]*}|                     d           |t          j        |         +S ))PYTHONGEVENT)r
  r    rp  r  ks     r(   
<dictcomp>z"_setup_environ.<locals>.<dictcomp>*  sC       <<,--	2:a=  r*   c              3   4   K   | ]}t          |          V  d S r   )ri   r  s     r(   	<genexpr>z!_setup_environ.<locals>.<genexpr>/  s(      44a3q66444444r*   z%*s	=	%srq   )r}   warnoptionsr   r?   r$   r    rp  version_inforeleaselevelpopmaxrL   itemsr	   rt   )r   rq  defaultsinteresting_envswidest_kr  vs          r(   _setup_environr    s*   - - - 	 !! 1_1 O	{22 )
  	8OO6777'*xx <
 <
 <
 1
 ( (
#$< w#$$ 2+1
'(w~ -5 -%,
>"w"## / / +/
&'w *&)
?#w~ -5 - &-
>"
$///%.
>"&(
?# JNN#T***   
 44#344444H'--//00 > >1xAW=====> >r*   c            
      r   dd l } |                                 }|                    d           |                    ddd           |                    ddd	
           |                    ddd           |                    dddd           |                    ddd           |                    dddd           |                    ddd
           |                    ddt          t          d           |                    dddd !           |                    d"d#d$d%t
          d&'           |                    d(d)d*+           |                                }|                    d,ddd-           |                    d.d/ddd0           |                    d1d23           |                                }t          t          |j
        t                      n|j
                            |_
        t          |j
                  t          j        d4<   t          |j
                   |j        t           _        d5t          j        vr!t%          |j                  t          j        d5<   g }g }g }d}|j        s t          j                            d6          rt*          rt,          rt/          d7           nd}t          j                            d8          x}t          j        d9<   t*          r.t          j                            d:          x}t          j        d9<   t          j                            t6                    }	t          j                            |	d;          }
t          j                            |
          }
|
t          j        z   t          j                            d<d=          z   t          j        d<<   t          j                            d>          t          j        z   d?z   t          j        d@<   t/          dAt          j        d@         dB|
dC|           t          j                            |          sJ t          j                            t          j                            |
dD                    sJ tA          |j!        E           |j"        ri }tG          |j"        |j$                  |_"        tK          |j"                  5 }|&                                }d d d            n# 1 swxY w Y   tO          j(        ||           |dF         }|dG         }|dH         }tS          |j*        |j+        |||j$        ||j,        I          }|j-        rs|D ]O\  }}t/          t!          j.        ||                    dJ          |                    dK          L                     Pt/          dMt_          |          z             d S t*          rt`          rt/          dN           d S |j$        rQtc          |j$                  }t          j                            d<d=          t          j        z   |z   t          j        d<<   dO}td          j3        d dP         dQk    r|dRz  }ti          ||||j5        |j        ||j6        |j7        S          }|j8        rts          ||j8                  } |             d S )TNr   z--ignorez
--discover
store_truezOnly print the tests found.)actionhelpz--configzknown_failures.pyzkThe path to the config file containing FAILING_TESTS, IGNORED_TESTS and RUN_ALONE. Defaults to %(default)s.)rs  r  z
--coveragez+Enable coverage recording with coverage.py.z--quietTzRBe quiet. Defaults to %(default)s. Also the GEVENTTEST_QUIET environment variable.)r  rs  r  z	--verbosestore_falser]   )r  destz--debugFzEnable debug settings. If the GEVENT_DEBUG environment variable is not set, this sets it to 'debug'. This can also enable PYTHONTRACEMALLOC and the debug PYTHONMALLOC allocators, if not already set. Defaults to %(default)s.z	--packager%  z;Load tests from the given package. Defaults to %(default)s.z--processesz-jz[Use up to the given number of parallel processes to execute tests. Defaults to %(default)s.)rs  typer  z--no-combinez)Do not combine tests into process groups.)rs  r  r  r   z--usezRES1,RES2,...storea  specify which special resource intensive tests to run. "all" is the default; "none" may also be used. Disable individual resources with a leading -.For example, "-u-network". GEVENTTEST_USE_RESOURCES is used if no argument is given. To only use one resources, specify "-unone,resource".)metavarr  r  r  z--travis-foldMSGz2Emit Travis CI log fold markers around the output.)r  r  z--second-chancez"Give failed tests a second chance.z
--failfastz-xz%Stop running after the first failure.rn   *)nargsGEVENTTEST_USE_RESOURCESGEVENTTEST_QUIETGEVENTTEST_COVERAGEz,Ignoring coverage option on PyPy on CI; slowz.coveragercCOVERAGE_PROCESS_STARTz.coveragerc-pypycoveragesite
PYTHONPATHrO  r   z	.coverageCOVERAGE_FILEzEnabling coverage toz	with sitezand configuration filezsitecustomize.py)r   r   IGNORED_TESTSr   )r   r   r   r&   r   r   envsetenv)r  r  z%s tests found.zDNot running tests on pypy with c-ares; not a supported configurationrT      )r     r   r:  rY   ):argparseArgumentParseradd_argumentr   r   r
   add_mutually_exclusive_group
parse_argsrQ  r   user   r    rp  r   r]   r	   QUIETr   r   r|   r   r   printr!   r+  r.   r/   r$   pathsepr)  r,  r  r   r   r)   r&   r.  r/  r   exec_r   rn   r   
no_combinediscovergetnameri   r   r#   r}   r  rX   r\   	processesr`   travis_foldr   )r  parserfail_parserr   r   r  r   r   
cov_configthis_dirsite_dirr   r   config_datarn   ru   r'   rZ   r   s                      r(   mainr  4  s%   OOO$$&&F

###
\*     /#     \:    
 ,1    
 MHHH
,C     ^J     t%5C#    
 ]8     g&_-  . . . Q  S S S 5577K,1  3 3 3 d<4  6 6 6 s+++!!G s0C?,,,UUVVGK .?w{-K-KBJ)*GK    DJ++),W]););
%&MMIH N2:>>*?@@ N 	NM 	N@AAAAH@BP]@^@^^J$<= hDFGOOTfDgDgg
RZ(@Awx00Hw||Hn==Hwx00H'/"*'<rz~~l\^?_?_'_BJ|$ +-'//#*>*>*G+*UBJ' ("*_*Ex*J8 8 8 7>>*-----7>>"',,x9K"L"LMMMMM''''~ (3GNGOTT'.!! 	#Q&&((K	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#	+v&&&//;'	^(  E  #! 	[ 	[LC$,sE(:(:7;;xCXCXYYYZZZZ#e**,----- 	M 	XYYYF? 	c0AAK')z~~lB'G'G"*'TWb'bBJ|$!BQB:-- !D( !5%2%-'0 *!/	
 	
 	
  	F(1DEEFs   S44S8;S8__main__)Tr:  )TNrT   r   )>r<  r}   r    rC  rM   r   r,   
contextlibr   datetimer   multiprocessing.poolr   multiprocessingr   gevent._utilr   rO  r	   	resourcesr
   r   r   sysinfor   r   r   r   r   r   r   r   
__import__ImportErrorOSErrorTIMEOUTr   r   rp  r|   r  r   r  rk   r)   r#   rJ  r2   	ExceptionrV   rX   r   r   r   r   r[  rd  r   ri  r  r  rP   rT   r*   r(   <module>r     s!   
			 



 				           % % % % % %       + + + + + + % % % % % %             & & & & & & & & & & & & ( ( ( ( ( ( " " " " " "             " " " " " " # # # # # #                  
	J{W 	 	 	D	 q3rz~~j11KSS5K5KLL b   G w 
  BsC.11Q0@AA    *$ *$ *$ *$ *$f *$ *$ *$Z	 	 	 	 	y 	 	 	R
 R
 R
 R
 R
V R
 R
 R
j    &   <c- c- c- c- c- c- c- c-J		 	 	   $     *  $&@( @( @( @(F     \> \> \> \>~l l l^ zDFFFFF s   B BB