§
    2@Äj¿~  ã                   ó6  — 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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mZmZmZmZmZ ddlmZ d dlmZ d dlmZ 	 d d	lmZ n# e$ r	 d d
lm Z Y nw xY wd„ Z! ed¬¦  «        d„ ¦   «         Z"d„ Z#d„ Z$ G d„ de%¦  «        Z& G d„ de
j'        ¦  «        Z( G d„ dej)        ¦  «        Z* G d„ de
j+        ¦  «        Z,dZ-d„ Z.d„ Z/ddœd„Z0d7d „Z1d!„ Z2d"„ Z3 G d#„ d$e4¦  «        Z5 G d%„ d&e j6        ¦  «        Z7 G d'„ d(ej8        ¦  «        Z9 G d)„ d*ej)        ¦  «        Z: G d+„ d,ej8        ¦  «        Z; G d-„ d.e%¦  «        Z< G d/„ d0e%¦  «        Z= G d1„ d2e%¦  «        Z>d3„ Z?d4Z@ G d5„ d6ej)        ¦  «        ZAdS )8é    N)Ú	lru_cache)ÚStringIO)ÚresultÚrunnerÚsignalsÚsuiteÚloaderÚcaseé   )Ú
TestLoader)Úconfig)Úmemoryutils)ÚTimeoutError)ÚEmptyc                 ó   ‡ — ˆ fd„}|S )zO
    Create a decorator allowing tests to be tagged with the *known_tags*.
    c                  óJ   •‡ — ‰ D ]}|‰vrt          d|›�¦  «        ‚Œˆ fd„}|S )zš
        Tag a test method with the given tags.
        Can be used in conjunction with the --tags command-line argument
        for runtests.py.
        zunknown tag: c                 ó(  •— t          | ¦  «        r/t          | t          ¦  «        s| j                             d¦  «        st          d¦  «        ‚	 | j        }n%# t          $ r t          ¦   «         x}| _        Y nw xY w| 	                    ‰¦  «         | S )NÚtest_z(@tag(...) should be used on test methods)
ÚcallableÚ
isinstanceÚtypeÚ__name__Ú
startswithÚ	TypeErrorÚtagsÚAttributeErrorÚsetÚupdate)ÚfuncÚsr   s     €úCC:\Projects\Historical\venv\Lib\site-packages\numba/testing/main.pyÚdecoratez1make_tag_decorator.<locals>.tag.<locals>.decorate-   s�   ø€ Ý˜T‘N”Nð L¥j°µtÑ&<Ô&<ð LØ”}×/Ò/°Ñ8Ô8ðLåÐ JÑKÔKÐKð&Ø”I��øÝ!ð &ð &ð &Ý #¡¤Ð%��D”I�I�Ið&øøøà�HŠH�T‰NŒNˆNØˆKs   ÁA ÁA:Á9A:©Ú
ValueError)r   Útr"   Ú
known_tagss   `  €r!   Útagzmake_tag_decorator.<locals>.tag#   sZ   øø€ ð ð 	;ð 	;ˆAØ˜
Ð"Ð"Ý �j°a°aÐ!9Ñ:Ô:Ð:ð #ð		ð 		ð 		ð 		ð 		ð ˆó    © )r&   r'   s   ` r!   Úmake_tag_decoratorr*      s#   ø€ ð
ð ð ð ð ð, €Jr(   é€   )Úmaxsizec                 ó~   — t          t          j                             t	          j        | ¦  «        ¦  «        ¦  «        S )zF
    Gets the mtime of the file in which a test class is defined.
    )ÚstrÚosÚpathÚgetmtimeÚinspectÚgetfile)Úclss    r!   Ú
_get_mtimer5   A   s,   € õ
 �rŒw×Ò¥¤°Ñ 4Ô 4Ñ5Ô5Ñ6Ô6Ð6r(   c                 óæ   — | j         }t          |¦  «        t          | ¦  «        z   }ddlm} ||                     ¦   «         v r.t          |j        ¦  «        ›dt          |j        ¦  «        ›d|›�}|S )a>  
    Return a key for sorting tests bases on mtime and test name. For CUDA
    tests, interleaving tests from different classes is dangerous as the CUDA
    context might get reset unexpectedly between methods of a class, so for
    CUDA tests the key prioritises the test module and class ahead of the
    mtime.
    r   )ÚCUDATestCaseú.ú )Ú	__class__r5   r.   Únumba.cuda.testingr7   ÚmroÚ
__module__r   )Úxr4   Úkeyr7   s       r!   Úcuda_sensitive_mtimer@   I   sy   € ð Œ+€CÝ
�S‰/Œ/�C ™FœFÑ
"€Cà/Ð/Ð/Ð/Ð/Ð/Ø�s—w’w‘y”yÐ Ð Ý ¤Ñ/Ô/Ð/Ð/µ°S´\Ñ1BÔ1BÐ1BÐ1BÀCÀCÐHˆà€Jr(   c                 óJ  ‡‡— t          | ¦  «        r| S | sd„ S 	 |                      d¦  «        \  ŠŠt          ‰¦  «        Št          ‰¦  «        Šn"# t          $ r d| z  }t	          |¦  «        ‚w xY w‰dk    rd„ S ‰dk     s‰dk     s‰‰k    rt	          d¦  «        ‚ˆˆfd„}|S )zçParses the argument string "useslice" as a shard index and number and
    returns a function that filters on those arguments. i.e. input
    useslice="1:3" leads to output something like `lambda x: zlib.crc32(x) % 3
    == 1`.
    c                 ó   — dS ©NTr)   ©r>   s    r!   ú<lambda>zparse_slice.<locals>.<lambda>d   ó   € ˜€ r(   ú:z�Expected arguments shard index and count to follow option `-j i:t`, where i is the shard number and t is the total number of shards, found '%s'r   c                 ó   — dS rC   r)   rD   s    r!   rE   zparse_slice.<locals>.<lambda>p   rF   r(   zSharding out of rangec                 óò   •— t          | | j        ¦  «        }dt          |di ¦  «        v rdS t          t          j        |                      ¦   «                              d¦  «        ¦  «        ¦  «        ‰z  ‰k    S )NÚalways_testr   Tzutf-8)ÚgetattrÚ_testMethodNameÚabsÚzlibÚcrc32ÚidÚencode)Útestr   ÚcountÚindexs     €€r!   Údecidezparse_slice.<locals>.decidet   si   ø€ Ý˜4 Ô!5Ñ6Ô6ˆDØ¥¨¨f°bÑ 9Ô 9Ð9Ð9Ø�tÝ•t”z $§'¢'¡)¤)×"2Ò"2°7Ñ";Ô";Ñ<Ô<Ñ=Ô=ÀÑEÈÒNÐNr(   )r   ÚsplitÚintÚ	Exceptionr$   )ÚusesliceÚmsgrU   rS   rT   s      @@r!   Úparse_slicer[   [   s   øø€ õ �ÑÔð ØˆØð Øˆ~Ðð	Ø!Ÿš¨Ñ,Ô,‰ˆ�Ý�E‘
”
ˆÝ�E‘
”
ˆˆøÝð ð ð ð@àBJñKð 	õ ˜‰oŒoÐðøøøð �‚z€zØˆ~ÐØ	�Šˆ�e˜a’i�i 5¨E¢> >ÝÐ0Ñ1Ô1Ð1ð	Oð 	Oð 	Oð 	Oð 	Oð 	Oð
 ˆs   š6A ÁA0c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú
TestListerz5Simply list available tests rather than running them.c                 ó.   — t          |¦  «        | _        d S ©N)r[   rY   )ÚselfrY   s     r!   Ú__init__zTestLister.__init__~   s   € Ý# HÑ-Ô-ˆŒˆˆr(   c                 ó°  — t          j        t          j        dd¬¦  «        }t	          |¦  «        | _        t          t          | j        | j        ¦  «        ¦  «        }| j         	                    t          ¬¦  «         |D ]#}t          |                     ¦   «         ¦  «         Œ$t          dt          | j        ¦  «        t          |¦  «        fz  ¦  «         |S )NTr   )ÚdescriptionsÚ	verbosity©r?   z%d tests found. %s selected)r   ÚTextTestResultÚsysÚstderrÚ_flatten_suiteÚ
_test_listÚlistÚfilterrY   Úsortr@   ÚprintrP   Úlen)r`   rR   r   Úmasked_listr%   s        r!   ÚrunzTestLister.run�   sÊ   € ÝÔ&¥s¤zÀØ12ð4ñ 4ô 4ˆå(¨Ñ.Ô.ˆŒÝ�6 $¤-°´ÑAÔAÑBÔBˆØŒ×ÒÕ!5ÐÑ6Ô6Ð6Øð 	ð 	ˆAÝ�!—$’$‘&”&‰MŒMˆMˆMÝÐ+­s°4´?Ñ/CÔ/CÝ/2°;Ñ/?Ô/?ð/Añ Añ 	Bô 	Bð 	Bàˆr(   N)r   r=   Ú__qualname__Ú__doc__ra   rq   r)   r(   r!   r]   r]   |   s8   € € € € € Ø?Ð?ð.ð .ð .ð
ð 
ð 
ð 
ð 
r(   r]   c                   ó4   ‡ — e Zd ZdZdˆ fd„	Zˆ fd„Zd„ Zˆ xZS )ÚSerialSuiteaA  A simple marker to make sure tests in this suite are run serially.

    Note: As the suite is going through internals of unittest,
          it may get unpacked and stuffed into a plain TestSuite.
          We need to set an attribute on the TestCase objects to
          remember they should not be run in parallel.
    r)   c                 óf   •— t          t          | ¦  «                             |¦  «         g | _        d S r_   )Úsuperru   ra   Úresource_infos)r`   Útestsr:   s     €r!   ra   zSerialSuite.__init__—   s/   ø€ Ý�k˜4Ñ Ô ×)Ò)¨%Ñ0Ô0Ð0Ø ˆÔÐÐr(   c                 óÒ   •— t          |t          j        ¦  «        s|D ]}|                      |¦  «         Œd S d|_        t          t          | ¦  «                             |¦  «         d S )NF)r   ÚunittestÚTestCaseÚaddTestÚ_numba_parallel_test_rw   ru   )r`   rR   r%   r:   s      €r!   r}   zSerialSuite.addTest›   sp   ø€ Ý˜$¥Ô 1Ñ2Ô2ð 	3àð  ð  �Ø—’˜Q‘”��ð ð  ð */ˆDÔ&Ý•+˜tÑ$Ô$×,Ò,¨TÑ2Ô2Ð2Ð2Ð2r(   c                 ó4  — | D ]”}|j         r nŠt          j        |                     ¦   «         ¦  «        }|                     ¦   «         5   ||¦  «         d d d ¦  «         n# 1 swxY w Y   | j                             |                     ¦   «         ¦  «         Œ•|S r_   )Ú
shouldStopr   ÚMemoryTrackerrP   Úmonitorrx   ÚappendÚget_summary)r`   r   rR   Úmemtracks       r!   rq   zSerialSuite.run¥   sØ   € àð 	?ð 	?ˆDØÔ ð Ø�Ý"Ô0°·²±´Ñ;Ô;ˆHØ×!Ò!Ñ#Ô#ð ð Ø��V‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð àÔ×&Ò& x×';Ò';Ñ'=Ô'=Ñ>Ô>Ð>Ð>Øˆs   ÁA Á A$	Á'A$	)r)   )r   r=   rr   rs   ra   r}   rq   Ú__classcell__©r:   s   @r!   ru   ru   Ž   so   ø€ € € € € ðð ð!ð !ð !ð !ð !ð !ð3ð 3ð 3ð 3ð 3ð	ð 	ð 	ð 	ð 	ð 	ð 	r(   ru   c                   ó$   ‡ — e Zd Zd„ Zˆ fd„Zˆ xZS )ÚBasicTestRunnerc                 ó\   — t          j        j        | fi |¤Ž t          |¦  «        | _        d S r_   )r   ÚTextTestRunnerra   r[   rY   )r`   rY   Úkwargss      r!   ra   zBasicTestRunner.__init__²   s1   € ÝÔÔ& tÐ6Ð6¨vÐ6Ð6Ð6Ý# HÑ-Ô-ˆŒˆˆr(   c                 ó  •— t          t          | j        t          |¦  «        ¦  «        ¦  «        }|                     t
          ¬¦  «         t          j        |¦  «        }t          t          | ¦  «         
                    |¦  «        S )Nre   )rk   rl   rY   ri   rm   r@   r{   Ú	TestSuiterw   r‰   rq   )r`   rR   rq   Úwrappedr:   s       €r!   rq   zBasicTestRunner.run¶   sg   ø€ Ý•6˜$œ-­¸Ñ)=Ô)=Ñ>Ô>Ñ?Ô?ˆØ�ŠÕ)ˆÑ*Ô*Ð*ÝÔ$ SÑ)Ô)ˆÝ•_ dÑ+Ô+×/Ò/°Ñ8Ô8Ð8r(   )r   r=   rr   ra   rq   r†   r‡   s   @r!   r‰   r‰   ±   sG   ø€ € € € € ð.ð .ð .ð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9r(   r‰   c                   ór   ‡ — e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZˆ fd„Zˆ fd„Zd„ Zˆ fd„Zdd	„Zˆ fd
„Zˆ xZS )ÚNumbaTestPrograma3  
    A TestProgram subclass adding the following options:
    * a -R option to enable reference leak detection
    * a --profile option to enable profiling of the test run
    * a -m option for parallel execution
    * a -l option to (only) list tests

    Currently the options are only added in 3.4+.
    FNé*   c                 ó  •— |                      dd ¦  «        }t          |¦  «        |d<   t          j                             d¦  «         |                      dd¦  «        | _         t          t          | ¦  «        j        |i |¤Ž d S )NÚtopleveldirÚ
testLoaderz:xÚnomultiprocF)	Úpopr   rg   Úwarnoptionsrƒ   r–   rw   r‘   ra   )r`   ÚargsrŒ   r”   r:   s       €r!   ra   zNumbaTestProgram.__init__Õ   s   ø€ Ø—j’j °Ñ5Ô5ˆÝ)¨+Ñ6Ô6ˆˆ|Ñõ 	Œ×Ò˜tÑ$Ô$Ð$Ø!Ÿ:š: m°UÑ;Ô;ˆÔØ.�Õ Ñ%Ô%Ô.°Ð?¸Ð?Ð?Ð?Ð?Ð?r(   c           	      ó–  •— t          t          | ¦  «                             ¦   «         }| j        €|                     ddddd¬¦  «         |                     ddd	d
t
          t          j        ¦   «         d¬¦  «         |                     ddddd¬¦  «         |                     ddt          d¬¦  «         |                     ddt          d¬¦  «         |                     ddt          d¬¦  «         |                     dddd¬¦  «         |                     ddd d
t          d!d"¬¦  «         d#„ }|                     d$d%d&|d'd
d(¬)¦  «         |S )*Nz-Rz	--refleakÚrefleakÚ
store_truezDetect reference / memory leaks)ÚdestÚactionÚhelpz-mz--multiprocessÚmultiprocessú?zParallelize tests)r�   Únargsr   ÚconstrŸ   ú-lz--listrk   zList tests without running themz--tagsr   zAComma-separated list of tags to select a subset of the test suite)r�   r   rŸ   z--exclude-tagsÚexclude_tagszDComma-separated list of tags to de-select a subset of the test suitez--randomÚrandom_selectz$Random proportion of tests to selectz	--profileÚprofilezProfile the test runz-jz--slicerY   ÚNonezShard the test sequencec                 ó0   — | dk    rt          d¦  «        ‚| S )NÚancestorzinvalid option for --gitdiffr#   rD   s    r!   Úgit_diff_strz:NumbaTestProgram._getParentArgParser.<locals>.git_diff_strÿ   s   € Ø�JŠˆÝ Ð!?Ñ@Ô@Ð@ØˆHr(   z-gz	--gitdiffÚgitdiffFz˜Run tests from changes made against origin/release0.68 as identified by `git diff`. If set to "ancestor", the diff compares against the common ancestor.)r�   r   Údefaultr¢   rŸ   )
rw   r‘   Ú_getParentArgParserÚ
testRunnerÚadd_argumentrW   ÚmultiprocessingÚ	cpu_countr.   Úfloat)r`   Úparserr«   r:   s      €r!   r®   z$NumbaTestProgram._getParentArgParserß   sß  ø€ õ Õ'¨Ñ.Ô.×BÒBÑDÔDˆØŒ?Ð"Ø×Ò  k¸	Ø'3Ø%Fð  ñ Hô Hð Hð 	×Ò˜DÐ"2¸Ø"%Ý!$Ý"1Ô";Ñ"=Ô"=Ø!4ð	 	ñ 	6ô 	6ð 	6ð
 	×Ò˜D (°Ø#/Ø!Bð 	ñ 	Dô 	Dð 	Dð 	×Ò˜H¨6½ð">ð 	ñ 	?ô 	?ð 	?ð 	×ÒÐ,°>Íð">ð 	ñ 	?ô 	?ð 	?ð 	×Ò˜J¨_Å5Ø!Gð 	ñ 	Iô 	Ið 	Ià×Ò˜K¨iØ#/Ø!7ð 	ñ 	9ô 	9ð 	9ð 	×Ò˜D )°*ÀCÝ!$¨FØ!:ð 	ñ 	<ô 	<ð 	<ð	ð 	ð 	ð
 	×Ò˜D +°IÀLØ$)°ð#Að 	ñ 	Cô 	Cð 	Cð ˆr(   c                 óº  — d }|D ]}||v r|€|}Œt          d|z  ¦  «        ‚Œ|��5|                     |¦  «        }	 ||k    r3||dz                                 ¦   «         }|                     |¦  «         nAd|v r.|                     d¦  «        d                              ¦   «         }nt          d¦  «        ‚n"# t          $ r d}t          ||z  ¦  «        ‚w xY w|                     d¦  «        rt          d¦  «        ‚d|v rd}t          ||z  ¦  «        ‚|d	d …                              dd
¦  «        }t          | ||¦  «         |                     |¦  «         d S d S )Nzargument %s supplied repeatedlyr   ú=Úunreachablez,%s requires at least one tag to be specifiedú-z,tag starts with '-', probably a syntax errorz1%s argument contains '=', probably a syntax erroré   Ú_)
r$   rT   ÚstripÚremoverV   ÚAssertionErrorÚ
IndexErrorr   ÚreplaceÚsetattr)	r`   ÚargvÚtagstrÚfoundr>   ÚposnÚtag_argsrZ   Úattrs	            r!   Ú_handle_tagszNumbaTestProgram._handle_tags  s¢  € ØˆØð 	Qð 	QˆAØ˜ˆ{ˆ{Ø�=Ø�E�Eå$Ð%FÈÑ%OÑPÔPÐPð	 ð ÑØ—:’:˜eÑ$Ô$ˆDð/Ø˜F’?�?Ø# D¨1¡Hœ~×3Ò3Ñ5Ô5�HØ—K’K Ñ)Ô)Ð)Ð)à˜e�|�|Ø$)§K¢K°Ñ$4Ô$4°QÔ$7×$=Ò$=Ñ$?Ô$?˜˜å,¨]Ñ;Ô;Ð;øøÝð /ð /ð /àD�Ý   v¡Ñ.Ô.Ð.ð/øøøð
 ×"Ò" 3Ñ'Ô'ð QÝ Ð!OÑPÔPÐPð �hˆˆØI�Ý   v¡Ñ.Ô.Ð.Ø˜!˜"˜"”:×%Ò% c¨3Ñ/Ô/ˆDÝ�D˜$ Ñ)Ô)Ð)Ø�KŠK˜ÑÔÐÐÐð3 Ðs   ¼A:B7 Â7Cc                 ó"  •— d|v r|                      d¦  «         d| _        t          t          | ¦  «                             |¦  «         t          | d¦  «        r| j                             ¦   «         s!| j        f| _	        |  
                    ¦   «          | j        r@d„ | j                             d¦  «        D ¦   «         }t          | j        |d¬¦  «        | _        | j        r@d„ | j                             d¦  «        D ¦   «         }t          | j        |d	¬¦  «        | _        | j        r%t!          | j        | j        | j        ¦  «        | _        | j        d
ur$t'          | j        | j        dk    ¬¦  «        | _        | j        dk    r	d| _        d S d S )Nr¤   TrR   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r)   ©r»   ©Ú.0r    s     r!   ú
<listcomp>z.NumbaTestProgram.parseArgs.<locals>.<listcomp>?  s    € Ð<Ð<Ð< !�A—G’G‘I”IÐ<Ð<Ð<r(   ú,Úinclude)Úmodec                 ó6   — g | ]}|                      ¦   «         ‘ŒS r)   rÊ   rË   s     r!   rÍ   z.NumbaTestProgram.parseArgs.<locals>.<listcomp>C  s    € ÐDÐDÐD !�A—G’G‘I”IÐDÐDÐDr(   ÚexcludeFrª   ©Úuse_common_ancestorr   )r¼   rk   rw   r‘   Ú	parseArgsÚhasattrrR   ÚcountTestCasesÚdefaultTestÚ	testNamesÚcreateTestsr   rV   Ú_choose_tagged_testsr¥   r¦   Ú_choose_random_testsÚrandom_seedr¬   Ú_choose_gitdiff_testsrd   Úbuffer)r`   rÁ   r   r:   s      €r!   rÕ   zNumbaTestProgram.parseArgs1  s›  ø€ Ø�4ˆ<ˆ<Ø�KŠK˜ÑÔÐØˆDŒIåÕ Ñ%Ô%×/Ò/°Ñ5Ô5Ð5õ �t˜VÑ$Ô$ð 	¨D¬I×,DÒ,DÑ,FÔ,Fð 	Ø"Ô.Ð0ˆDŒNØ×ÒÑÔÐàŒ9ð 	NØ<Ð< t¤y§¢°sÑ';Ô';Ð<Ñ<Ô<ˆDÝ,¨T¬Y¸À9ÐMÑMÔMˆDŒIàÔð 	NØDÐD tÔ'8×'>Ò'>¸sÑ'CÔ'CÐDÑDÔDˆDÝ,¨T¬Y¸À9ÐMÑMÔMˆDŒIàÔð 	?Ý,¨T¬Y¸Ô8JØ-1Ô-=ñ?ô ?ˆDŒIð Œ<˜uÐ$Ð$Ý-Ø”	Ø%)¤\°ZÒ%?ðñ ô ˆDŒIð
 Œ>˜QÒÐð ˆDŒKˆKˆKð Ðr(   c                 ó   — d S r_   r)   )r`   rÁ   ÚLoaders      r!   Ú_do_discoveryzNumbaTestProgram._do_discoveryU  s	   € ð
 	ˆr(   c                 ój  •‡ — ‰ j         r6t          ‰ _        t          t          d¦  «        st          j        d¦  «         nT‰ j        rt          ‰ j	        ¦  «        ‰ _        n3‰ j        €,t          ‰ j	        ‰ j        ‰ j        ‰ j        ¬¦  «        ‰ _        ‰ j        r`‰ j        sY‰ j        dk     rd}t!          |¦  «        ‚t#          t$          j        ‰ j        ‰ j	        ‰ j        ‰ j        ‰ j        ¬¦  «        ‰ _        ˆˆ fd„}‰ j        �r t*          j                             t*          j                             t          j        d         j        ¦  «        ¦  «        d         d	z   }t7          j        t:          j        ¬
¦  «        }|                     ¦   «          	 |                      |¦  «         | !                    ¦   «          tE          d|›�¦  «         | #                    |¦  «         d S # | !                    ¦   «          tE          d|›�¦  «         | #                    |¦  «         w xY w |¦   «          d S )NÚgettotalrefcountz^detecting reference leaks requires a debug build of Python, only memory leaks will be detected)rd   Úfailfastrß   r   zSValue specified for the number of processes to use in running the suite must be > 0c                  óV   •— t          t          ‰¦  «                             ¦   «          d S r_   )rw   r‘   ÚrunTests)r:   r`   s   €€r!   Úrun_tests_realz1NumbaTestProgram.runTests.<locals>.run_tests_realy  s&   ø€ ÝÕ" DÑ)Ô)×2Ò2Ñ4Ô4Ð4Ð4Ð4r(   Ú__main__r   z.prof)ÚtimerzWriting test profile data into )$r›   ÚRefleakTestRunnerr¯   rÖ   rg   ÚwarningsÚwarnrk   r]   rY   r‰   rd   rå   rß   r    r–   r$   ÚParallelTestRunnerr   r‹   r§   r/   r0   ÚsplitextÚbasenameÚmodulesÚ__file__ÚcProfileÚProfileÚtimeÚperf_counterÚenableÚruncallÚdisablern   Ú
dump_stats)r`   rZ   rè   ÚfilenameÚpr:   s   `    €r!   rç   zNumbaTestProgram.runTests\  sC  øø€ ØŒ<ð 	BÝ/ˆDŒOå�3Ð 2Ñ3Ô3ð OÝ”ð Nñ Oô Oð Oøð ŒYð 	BÝ(¨¬Ñ7Ô7ˆDŒOˆOàŒ_Ð$Ý-¨d¬mØ8<¼Ø7;´}Ø59´[ðBñ Bô BˆDŒOð
 Ôð 
	E TÔ%5ð 
	EØÔ  1Ò$Ð$ð4�å  ‘o”oÐ%Ý0µÔ1FØ15Ô1BØ15´Ø;?¼>Ø:>¼-Ø8<¼ðEñ Eô EˆDŒOð	5ð 	5ð 	5ð 	5ð 	5ð 	5ð Œ<ñ 	Ý”w×'Ò'Ý”× Ò ¥¤¨ZÔ!8Ô!AÑBÔBñô àôàñˆHõ Ô ¥tÔ'8Ð9Ñ9Ô9ˆAØ�HŠH‰JŒJˆJð'Ø—	’	˜.Ñ)Ô)Ð)à—	’	‘”�Ý�¸X¸XÐGÑHÔHÐHØ—’˜XÑ&Ô&Ð&Ð&Ð&øð —	’	‘”�Ý�¸X¸XÐGÑHÔHÐHØ—’˜XÑ&Ô&Ð&Ð&øøøàˆNÑÔÐÐÐs   ÆG) Ç)=H&r_   )r   r=   rr   rs   r›   r§   r    rY   rk   r   r¥   r¦   rÝ   ra   r®   rÇ   rÕ   râ   rç   r†   r‡   s   @r!   r‘   r‘   À   sç   ø€ € € € € ðð ð €GØ€GØ€LØ€HØ€DØ€DØ€LØ€MØ€Kð@ð @ð @ð @ð @ð+ð +ð +ð +ð +ðZ"ð "ð "ðJ"ð "ð "ð "ð "ðHð ð ð ð-ð -ð -ð -ð -ð -ð -ð -ð -r(   r‘   )z?numba.cuda.tests.cudapy.test_libdevice.TestLibdeviceCompilationznumba.tests.test_num_threadsz!numba.tests.test_parallel_backendznumba.tests.test_svmlznumba.tests.test_ufuncsc                 óÒ   — g }t          | t          j        t          t          f¦  «        r(| D ]$}|                     t          |¦  «        ¦  «         Œ%n|                     | ¦  «         |S )z&
    Workhorse for _flatten_suite
    )r   r{   rŽ   rk   ÚtupleÚextendÚ_flatten_suite_innerrƒ   )rR   ry   r>   s      r!   r   r   š  sp   € ð €EÝ�$�Ô+­Tµ5Ð9Ñ:Ô:ð Øð 	2ð 	2ˆAØ�LŠLÕ-¨aÑ0Ô0Ñ1Ô1Ð1Ð1ð	2ð 	�Š�TÑÔÐØ€Lr(   c                 óX  — t          | ¦  «        }t          ¦   «         }|D ]2}t          D ](}|t          |¦  «        v r|                     |¦  «         Œ)Œ3t          |¦  «        |z
  }d„ }t          ||¬¦  «        }|                     t          t          |¦  «        |¬¦  «        ¦  «         |S )z6
    Expand nested suite into list of test cases.
    c                 óD   — | j         t          | ¦  «        j        | j        fS r_   )r=   r   r   rL   rD   s    r!   r?   z_flatten_suite.<locals>.key·  s   € ØŒ|�T !™WœWÔ-¨qÔ/@Ð@Ð@r(   re   )r   r   Ú
_GENERATEDr.   ÚaddÚsortedrÿ   rk   )rR   ry   Ú	generatedr%   ÚgÚnormalr?   s          r!   ri   ri   §  sÁ   € õ ! Ñ&Ô&€Eõ ‘”€IØð !ð !ˆÝð 	!ð 	!ˆAØ•C˜‘F”Fˆ{ˆ{Ø—’˜aÑ Ô Ð øð	!õ �‰ZŒZ˜)Ñ#€FðAð Að Aå�6˜sÐ#Ñ#Ô#€EØ	‡L‚L•�˜Y™œ¨SÐ1Ñ1Ô1Ñ2Ô2Ð2Ø€Lr(   FrÓ   c                óŒ  ‡	— 	 ddl m} n# t          $ r t          d¦  «        ‚w xY w |d¦  «        Š	t          j                             dd¦  «        }|rt          d¦  «         d}nd	}‰	j                              ||d
¬¦  «         	                    ¦   «         }d„ |D ¦   «         }g }ˆ	fd„|D ¦   «         }t          | ¦  «        D ]P}t          |t          j        ¦  «        sJ ‚t          j        |j        ¦  «        }||v r|                     |¦  «         ŒQt          dt%          |¦  «        z  ¦  «         t          j        |¦  «        S )Nr   )ÚRepoz&gitpython needed for git functionalityr8   Únumbary   zGit diff by common ancestorzorigin/release0.68...HEADzorigin/release0.68..HEADT)Ú	name_onlyc                 óL   — g | ]!}t           j                             |¦  «        ‘Œ"S r)   )r/   r0   Únormpath)rÌ   r>   s     r!   rÍ   z)_choose_gitdiff_tests.<locals>.<listcomp>Ì  s(   € Ð<Ð<Ð<¨1•2”7×#Ò# AÑ&Ô&Ð<Ð<Ð<r(   c                 óZ   •— g | ]'}t           j                             ‰j        |¦  «        ‘Œ(S r)   )r/   r0   ÚjoinÚworking_dir)rÌ   r>   Úrepos     €r!   rÍ   z)_choose_gitdiff_tests.<locals>.<listcomp>Î  s,   ø€ ÐJÐJÐJ¸•2”7—<’< Ô 0°!Ñ4Ô4ÐJÐJÐJr(   zGit diff identified %s tests)Úgitr
  ÚImportErrorr$   r/   r0   r  rn   ÚdiffrV   ri   r   r{   r|   r2   Úgetsourcefiler:   rƒ   ro   rŽ   )
ry   rÔ   r
  r0   ÚtargetÚgdiff_pathsÚselectedrR   Úfnamer  s
            @r!   rÞ   rÞ   ¾  sr  ø€ ðCØÐÐÐÐÐÐøÝð Cð Cð CÝÐAÑBÔBÐBðCøøøàˆ4�‰9Œ9€DÝŒ7�<Š<˜ Ñ)Ô)€DØð ,ÝÐ,Ñ-Ô-Ð-Ø,ˆˆà+ˆØ”(—-’- ¨¸�-Ñ=Ô=×CÒCÑEÔE€Kà<Ð<°Ð<Ñ<Ô<€KØ€HØJÐJÐJÐJ¸kÐJÑJÔJ€KÝ˜uÑ%Ô%ð "ð "ˆÝ˜$¥Ô 1Ñ2Ô2Ð2Ð2Ð2ÝÔ% d¤nÑ5Ô5ˆØ�KÐÐØ�OŠO˜DÑ!Ô!Ð!øÝ	Ð
(­3¨x©=¬=Ñ
8Ñ9Ô9Ð9ÝÔ˜hÑ'Ô'Ð's   ƒ
 Š$rÏ   c                 óÔ  — g }t          |¦  «        }t          | ¦  «        D ]´}t          |t          j        ¦  «        sJ ‚t          ||j        ¦  «        }	 |j        }n# t          $ r Y nw xY wt          |dd¦  «        }|dk    r|�||z  r| 	                    |¦  «         Œ€|dk    r|�||z  s| 	                    |¦  «         Œ£t          d|z  ¦  «        ‚t          j        |¦  «        S )zÅ
    Select tests that are tagged/not tagged with at least one of the given tags.
    Set mode to 'include' to include the tests with tags, or 'exclude' to
    exclude the tests with the tags.
    r   NrÏ   rÒ   zInvalid 'mode' supplied: %s.)r   ri   r   r{   r|   rK   rL   Úim_funcr   rƒ   r$   rŽ   )ry   r   rÐ   r  rR   r   Ú
found_tagss          r!   rÛ   rÛ   ×  s  € ð €HÝˆt‰9Œ9€DÝ˜uÑ%Ô%ð Dð DˆÝ˜$¥Ô 1Ñ2Ô2Ð2Ð2Ð2Ý�t˜TÔ1Ñ2Ô2ˆð	à”<ˆDˆDøÝð 	ð 	ð 	ØˆDð	øøøõ ˜T 6¨4Ñ0Ô0ˆ
à�9ÒÐØÐ%¨*°tÑ*;Ð%Ø—’ Ñ%Ô%Ð%øØ�YÒÐàÐ!¨*°tÑ*;Ð!Ø—’ Ñ%Ô%Ð%øåÐ;¸dÑBÑCÔCÐCÝÔ˜hÑ'Ô'Ð's   ÁAÁ
A*Á)A*c                 óV  — t          j        ¦   «         }|                     |¦  «         t          | t          j        ¦  «        rt          | ¦  «        } |                     | t          t          | ¦  «        |z  ¦  «        ¦  «        } t          | d„ ¬¦  «        } t	          j        | ¦  «        S )z7
    Choose a given proportion of tests at random.
    c                 ó    —  | j         ¦   «         S r_   ©rP   )r
   s    r!   rE   z&_choose_random_tests.<locals>.<lambda>ÿ  s   € ¨7¨4¬7©9¬9€ r(   re   )ÚrandomÚRandomÚseedr   r{   rŽ   ri   ÚsamplerW   ro   r  )ry   Úratior#  Úrnds       r!   rÜ   rÜ   ö  s�   € õ Œ-‰/Œ/€CØ‡H‚HˆT�N„N€NÝ�%�Ô+Ñ,Ô,ð &Ý˜uÑ%Ô%ˆØ�JŠJ�u�c¥# e¡*¤*¨uÑ"4Ñ5Ô5Ñ6Ô6€EÝ�5Ð4Ð4Ð5Ñ5Ô5€EÝÔ˜eÑ$Ô$Ð$r(   c                  ó^  — t           j        } 	 t           j        }n# t          $ r d„ }Y nw xY wt           j        t           j        t           j        t           j        fD ]}|�|                     ¦   «          Œt          j	        ¦   «          t          j        ¦   «           | ¦   «          |¦   «         fS )Nc                  ó   — dS )Nr’   r)   r)   r(   r!   rE   z"_refleak_cleanup.<locals>.<lambda>  s   € ˜€ r(   )rg   Úgetallocatedblocksrä   r   Ústdoutrh   Ú
__stdout__Ú
__stderr__ÚflushÚ_clear_type_cacheÚgcÚcollect)Úfunc1Úfunc2Ústreams      r!   Ú_refleak_cleanupr4    s¦   € åÔ"€EðÝÔ$ˆˆøÝð ð ð Ø�
ˆˆˆðøøøõ
 ”:�sœz­3¬>½3¼>ÐJð ð ˆØÐØ�LŠL‰NŒNˆNøåÔÑÔÐå„J�L„L€LØˆ5‰7Œ7�E�E‘G”GÐÐs   Ž ›+ª+c                   ó   — e Zd ZdS )ÚReferenceLeakErrorN)r   r=   rr   r)   r(   r!   r6  r6    s   € € € € € Ø€Dr(   r6  c                   ó   — e Zd Zd„ ZdS )ÚIntPoolc                 ó   — |S r_   r)   )r`   r?   s     r!   Ú__missing__zIntPool.__missing__   s   € Øˆ
r(   N)r   r=   rr   r:  r)   r(   r!   r8  r8    s#   € € € € € ðð ð ð ð r(   r8  c                   ó,   ‡ — e Zd ZdZdZd„ Zˆ fd„Zˆ xZS )ÚRefleakTestResulté   é   c                 óp  — | j                              ¦   «          | j        }| j        }dg||z
  z  }dg||z
  z  }t	          ¦   «         }t          dd¦  «        D ]
}||          Œt          |¦  «        D ]Á}t          j        ¦   «         }|                     |¦  «         | 	                    ¦   «         sE| j
                             |j
        ¦  «         | j                             |j        ¦  «         t          ‚~t          ¦   «         \  }	}
||k    r"||
|z
           |||z
  <   ||	|z
           |||z
  <   |	|
}}ŒÂ||fS )Nr   i8ÿÿÿéÈ   )r3  r-  ÚrepetitionsÚwarmupr8  Úranger   Ú
TestResultrq   ÚwasSuccessfulÚfailuresrÿ   Úerrorsr½   r4  )r`   rR   ÚrepcountÚnwarmupÚ	rc_deltasÚalloc_deltasÚ	_int_poolÚiÚresÚalloc_afterÚrc_afterÚ	rc_beforeÚalloc_befores                r!   Ú
_huntLeakszRefleakTestResult._huntLeaks)  sV  € ØŒ×ÒÑÔÐàÔ#ˆØ”+ˆØ�C˜8 gÑ-Ñ.ˆ	Ø�s˜h¨Ñ0Ñ1ˆõ ‘I”Iˆ	Ý�t˜SÑ!Ô!ð 	ð 	ˆAØ�aŒLˆLˆLå�x‘”ð 	<ð 	<ˆAåÔ#Ñ%Ô%ˆCØ�HŠH�S‰MŒMˆMð ×$Ò$Ñ&Ô&ð %Ø”×$Ò$ S¤\Ñ2Ô2Ð2Ø”×"Ò" 3¤:Ñ.Ô.Ð.Ý$Ð$ØÝ$4Ñ$6Ô$6Ñ!ˆK˜Ø�GŠ|ˆ|Ø)2°8¸iÑ3GÔ)H�	˜!˜g™+Ñ&Ø,5°kÀLÑ6PÔ,Q�˜Q ™[Ñ)Ø&1°8˜)ˆLˆLØ˜,Ð&Ð&r(   c           
      óB  •— 	 |                       |¦  «        \  }}n'# t          $ r |                      ¦   «         rJ ‚Y d S w xY wd„ }d„ }d}|d|f|d|ffD ]�\  }}}	 |	|¦  «        rŒ|›d|›d|›dt          |¦  «        ›�}
d	}	 t	          |
¦  «        ‚# t
          $ r t          j        ¦   «         }Y nw xY w| j        r | j	         
                    |›d
|›d�¦  «         |                      ||¦  «         Œž|s*t          t          | ¦  «                             |¦  «         d S d S )Nc                 ó    — t          | ¦  «        S r_   )Úany©Údeltass    r!   Úcheck_rc_deltasz5RefleakTestResult.addSuccess.<locals>.check_rc_deltasQ  s   € Ý�v‘;”;Ðr(   c                 ó    — d|                       d¦  «        z  t          | ¦  «        k     rdS t          | ¦  «        t          d¦  «        k    sdS dS )Nr=  r   T)r   r   éÿÿÿÿF)rS   ro   r   rW  s    r!   Úcheck_alloc_deltasz8RefleakTestResult.addSuccess.<locals>.check_alloc_deltasT  sH   € à�6—<’< ‘?”?Ñ"¥S¨¡[¤[Ò0Ð0Ø�tå�v‘;”;¥# j¡/¤/Ò1Ð1Ø�tØ�5r(   FÚ
referenceszmemory blocksz leaked r9   z, sum=Tz = )rS  r½   rE  Úsumr6  rX   rg   Úexc_infoÚshowAllr3  ÚwriteÚ
addFailurerw   r<  Ú
addSuccess)r`   rR   rJ  rK  rY  r\  ÚfailedrX  Ú	item_nameÚcheckerrZ   r_  r:   s               €r!   rc  zRefleakTestResult.addSuccessH  s¡  ø€ ð	Ø&*§o¢o°dÑ&;Ô&;Ñ#ˆI�|�|øÝð 	ð 	ð 	à×)Ò)Ñ+Ô+Ð+Ð+Ð+ØˆFˆFð	øøøð	ð 	ð 	ð	ð 	ð 	ð ˆð ˜ oÐ6Ø˜?Ð,>Ð?ð+Að 	0ð 	0Ñ&ˆF�I˜wð ˆw�v‰Œð 
0à�D�D˜&˜&˜& ) ) )­S°©[¬[¨[ð:�à�ð.Ý,¨SÑ1Ô1Ð1øÝ ð .ð .ð .Ý"œ|™~œ~�H�H�Hð.øøøà”<ð HØ”K×%Ò%°I°I°I¸v¸v¸vÐ&FÑGÔGÐGØ—’  hÑ/Ô/Ð/øàð 	<ÝÕ# TÑ*Ô*×5Ò5°dÑ;Ô;Ð;Ð;Ð;ð	<ð 	<s    ƒ œ A ¿A ÂBÂB2Â1B2)r   r=   rr   rB  rA  rS  rc  r†   r‡   s   @r!   r<  r<  $  sQ   ø€ € € € € à€FØ€Kð'ð 'ð 'ð>'<ð '<ð '<ð '<ð '<ð '<ð '<ð '<ð '<r(   r<  c                   ó   — e Zd ZeZdS )rë   N)r   r=   rr   r<  Úresultclassr)   r(   r!   rë   rë   r  s   € € € € € Ø#€K€K€Kr(   rë   c                   ó   — e Zd ZdZd„ ZdS )ÚParallelTestResultzA
    A TestResult able to inject results from other results.
    c                 óú  — | j                              |j                              ¦   «         ¦  «         | j                              ¦   «          | xj        |j        z  c_        | j                             |j        ¦  «         | j                             |j        ¦  «         | j                             |j        ¦  «         | j	                             |j	        ¦  «         | j
                             |j
        ¦  «         dS )zI
        Add the results from the other *result* to this result.
        N)r3  ra  Úgetvaluer-  ÚtestsRunrF  rÿ   rG  ÚskippedÚexpectedFailuresÚunexpectedSuccesses)r`   r   s     r!   Úadd_resultszParallelTestResult.add_results{  sÐ   € ð 	Œ×Ò˜&œ-×0Ò0Ñ2Ô2Ñ3Ô3Ð3ØŒ×ÒÑÔÐØˆŒ˜œÑ(ˆŒØŒ×Ò˜Vœ_Ñ-Ô-Ð-ØŒ×Ò˜6œ=Ñ)Ô)Ð)ØŒ×Ò˜FœNÑ+Ô+Ð+ØÔ×$Ò$ VÔ%<Ñ=Ô=Ð=ØÔ ×'Ò'¨Ô(BÑCÔCÐCÐCÐCr(   N)r   r=   rr   rs   rq  r)   r(   r!   rj  rj  v  s2   € € € € € ðð ðDð Dð Dð Dð Dr(   rj  c                   ó$   — e Zd ZdZdZd„ Zdd„ZdS )Ú_MinimalResultz7
    A minimal, picklable TestResult-alike object.
    )
rF  rG  rn  ro  rp  r3  r€   rm  Útest_idÚresource_infoc                 ó   — d|_         dS )zR
        Remove any unpicklable attributes from TestCase instance *case*.
        N)Ú_outcomeForDoCleanups)r`   r
   s     r!   Ú
fixup_casez_MinimalResult.fixup_case“  s   € ð
 &*ˆÔ"Ð"Ð"r(   Nc           
      óB  — | j         D ]"}t          | |t          ||d ¦  «        ¦  «         Œ#| j        D ]\  }}|                      |¦  «         Œ| j        D ]\  }}|                      |¦  «         Œ| j        D ]\  }}|                      |¦  «         Œ|| _        || _        d S r_   )	Ú	__slots__rÀ   rK   ro  rx  rG  rF  rt  ru  )r`   Úoriginal_resultrt  ru  rÆ   r
   rº   s          r!   ra   z_MinimalResult.__init__š  sÊ   € Ø”Nð 	Fð 	FˆDÝ�D˜$¥¨¸¸tÑ DÔ DÑEÔEÐEÐEØÔ,ð 	"ð 	"‰GˆD�!Ø�OŠO˜DÑ!Ô!Ð!Ð!Ø”{ð 	"ð 	"‰GˆD�!Ø�OŠO˜DÑ!Ô!Ð!Ð!Ø”}ð 	"ð 	"‰GˆD�!Ø�OŠO˜DÑ!Ô!Ð!Ð!ØˆŒØ*ˆÔÐÐr(   )NN)r   r=   rr   rs   rz  rx  ra   r)   r(   r!   rs  rs  ‰  sH   € € € € € ðð ð$€Ið
*ð *ð *ð
+ð 
+ð 
+ð 
+ð 
+ð 
+r(   rs  c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú_FakeStringIOz:
    A trivial picklable StringIO-alike for Python 2.
    c                 ó   — || _         d S r_   ©Ú_value)r`   Úvalues     r!   ra   z_FakeStringIO.__init__¬  s   € ØˆŒˆˆr(   c                 ó   — | j         S r_   r  )r`   s    r!   rl  z_FakeStringIO.getvalue¯  s
   € ØŒ{Ðr(   N)r   r=   rr   rs   ra   rl  r)   r(   r!   r}  r}  §  s<   € € € € € ðð ðð ð ðð ð ð ð r(   r}  c                   ó>   — e Zd ZdZd„ Zd„ Zej        d„ ¦   «         ZdS )Ú_MinimalRunnerzu
    A minimal picklable object able to instantiate a runner in a
    child process and run a test case with it.
    c                 ó"   — || _         || _        d S r_   )Ú
runner_clsÚrunner_args)r`   r†  r‡  s      r!   ra   z_MinimalRunner.__init__¹  s   € Ø$ˆŒØ&ˆÔÐÐr(   c                 ó¾  — | j         }t          ¦   «         |d<    | j        di |¤Ž} |j        ¦   «         }t	          j        ¦   «          t	          j        |¦  «         |j        |_        |j        |_        t          j
        |                     ¦   «         ¦  «        }|                     ¦   «         5  |                      |¦  «        5   ||¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          |j                             ¦   «         ¦  «        |_        t#          ||                     ¦   «         |                     ¦   «         ¬¦  «        S )Nr3  )ru  r)   )r‡  r   r†  Ú_makeResultr   ÚinstallHandlerÚregisterResultrå   rß   r   r�   rP   r‚   Úcleanup_objectr}  r3  rl  rs  r„   )r`   rR   rŒ   r   r   r…   s         r!   Ú__call__z_MinimalRunner.__call__À  s½  € àÔ!ˆõ $™:œ:ˆˆxÑØ �”Ð*Ð* 6Ð*Ð*ˆØ#�Ô#Ñ%Ô%ˆåÔÑ Ô Ð ÝÔ˜vÑ&Ô&Ð&Ø œ/ˆŒØœˆŒåÔ,¨T¯WªW©Y¬YÑ7Ô7ˆØ×ÒÑÔð 	ð 	Ø×$Ò$ TÑ*Ô*ð ð Ø��V‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ & f¤m×&<Ò&<Ñ&>Ô&>Ñ?Ô?ˆŒÝ˜f d§g¢g¡i¤iØ,4×,@Ò,@Ñ,BÔ,BðDñ Dô Dð 	Ds6   Â.C3ÃCÃC3ÃC 	Ã C3Ã#C 	Ã$C3Ã3C7Ã:C7c              #   óÖ   K  — t          |j        ¦  «        }	 |V — t          |j        ¦  «        |z
  }|D ]
}|j        |= ŒdS # t          |j        ¦  «        |z
  }|D ]
}|j        |= Œw xY w)zu
        A context manager which cleans up unwanted attributes on a test case
        (or any other object).
        N)r   Ú__dict__)r`   rR   Úvanilla_attrsÚspurious_attrsÚnames        r!   rŒ  z_MinimalRunner.cleanup_object×  sš   è è € õ ˜DœMÑ*Ô*ˆð	(ØˆJˆJˆJå  ¤Ñ/Ô/°-Ñ?ˆNØ&ð (ð (�Ø”M $Ð'Ð'ð(ð (øõ ! ¤Ñ/Ô/°-Ñ?ˆNØ&ð (ð (�Ø”M $Ð'Ð'ð(øøøs   ˜A Á&A(N)	r   r=   rr   rs   ra   r�  Ú
contextlibÚcontextmanagerrŒ  r)   r(   r!   r„  r„  ³  s^   € € € € € ðð ð
'ð 'ð 'ðDð Dð Dð. Ôð(ð (ñ Ôð(ð (ð (r(   r„  c                 óÌ   — g }g }g t          |t          | ¦  «        ¦  «        ¢}d„ }|D ]8} ||¦  «        r|                     |¦  «         Œ#|                     |¦  «         Œ9||fS )z:
    Split test suite into parallel and serial tests.
    c                 ó‚   — | j         }t          | |¦  «        }|j        |k    r|j        dk    rdS t          | dd¦  «        S )NÚtestFailureFr~   T)rL   rK   r   )rR   Úmethod_nameÚmethods      r!   Úis_parallelizable_test_casez=_split_nonparallel_tests.<locals>.is_parallelizable_test_caseï  sL   € ð Ô*ˆÝ˜˜{Ñ+Ô+ˆØŒ?˜kÒ)Ð)¨f¬oÀÒ.NÐ.NØ�5å�tÐ4°dÑ;Ô;Ð;r(   )rl   ri   rƒ   )rR   ÚslicedÚptestsÚstestsÚflatrš  r%   s          r!   Ú_split_nonparallel_testsrŸ  æ  s‘   € ð €FØ€Fà2�V�F�N¨4Ñ0Ô0Ñ1Ô1Ð2€Dð<ð <ð <ð ð ð ˆØ&Ð& qÑ)Ô)ð 	Ø�MŠM˜!ÑÔÐÐà�MŠM˜!ÑÔÐÐà�6ˆ>Ðr(   i°  c                   ó<   ‡ — e Zd ZdZeZeZd„ Zd„ Z	d„ Z
ˆ fd„Zˆ xZS )rî   z\
    A test runner which delegates the actual running to a pool of child
    processes.
    c                 ó”   — t          j        j        | fi |¤Ž || _        || _        t          |¦  «        | _        || _        g | _        d S r_   )	r   r‹   ra   r†  Únprocsr[   rY   r‡  rx   )r`   r†  r¢  rY   rŒ   s        r!   ra   zParallelTestRunner.__init__  sQ   € ÝÔÔ& tÐ6Ð6¨vÐ6Ð6Ð6Ø$ˆŒØˆŒÝ# HÑ-Ô-ˆŒØ!ˆÔØ ˆÔÐÐr(   c                 ód  ‡ ‡	— t          ‰ j        ‰ j        ¦  «        }dŠ	ˆ	ˆ fd„t          dt	          ‰ j        ¦  «        ‰	¦  «        D ¦   «         }t          j        d¦  «        }	 |D ]Í}|                     ‰ j	        ¦  «        }	 ‰  
                    ||||¦  «         |j        r+|                     ¦   «          	 |                     ¦   «           ng|                     ¦   «          n## t          $ r |                     ¦   «          ‚ w xY w	 |                     ¦   «          Œµ# |                     ¦   «          w xY w|j        sÖt!          ‰ j        ¦  «        }|                     |¦  «         ‰ j                             |j        ¦  «         |t*          j        r€	 t/          d¦  «         ‰ j        D ]}t/          |¦  «         Œn2# t          $ r% t/          d¦  «         t1          j        ¦   «          Y nw xY wt/          d¦  «         S # t/          d¦  «         w xY wS 	 t*          j        r�	 t/          d¦  «         ‰ j        D ]}t/          |¦  «         Œn2# t          $ r% t/          d¦  «         t1          j        ¦   «          Y nw xY wt/          d¦  «         d S # t/          d¦  «         w xY wd S # t*          j        r€	 t/          d¦  «         ‰ j        D ]}t/          |¦  «         Œn2# t          $ r% t/          d¦  «         t1          j        ¦   «          Y nw xY wt/          d¦  «         w # t/          d¦  «         w xY ww xY w)Néd   c                 ó4   •— g | ]}‰j         ||‰z   …         ‘ŒS r)   )Ú_ptests)rÌ   rM  Ú
chunk_sizer`   s     €€r!   rÍ   z1ParallelTestRunner._run_inner.<locals>.<listcomp>  s?   ø€ ð Lð Lð LØð œ, q¨¨Z©Ð'7Ô8ð Lð Lð Lr(   r   Úspawnz=== Resource Infos ===z2ERROR: Ignored exception in priting resource infosz=== End Resource Infos ===)r„  r†  r‡  rC  ro   r¦  r±   Úget_contextÚPoolr¢  Ú_run_parallel_testsr€   Ú	terminater  ÚcloserX   ru   Ú_stestsrq   rx   rÿ   r   ÚIS_SUPPORTEDrn   Ú	tracebackÚ	print_exc)
r`   r   Úchild_runnerÚsplitted_testsÚspawnctxry   Úpoolr�  Úrir§  s
   `        @r!   Ú
_run_innerzParallelTestRunner._run_inner  sÍ  øø€ õ & d¤o°tÔ7GÑHÔHˆð ˆ
ðLð Lð Lð Lð LÝ#(¨­C°´Ñ,=Ô,=¸zÑ#JÔ#JðLñ Lô Lˆõ #Ô.¨wÑ7Ô7ˆð&	8Ø'ð  ð  �Ø—}’} T¤[Ñ1Ô1�ð Ø×,Ò,¨V°T¸<ÈÑOÔOÐOð Ô(ð %ØŸšÑ(Ô(Ð(Øð
 —I’I‘K”K�K�K�Kð Ÿ
š
™œ˜˜øõ !ð ð ð à—N’NÑ$Ô$Ð$àð	øøøð %ð —I’I‘K”K�K�Kø�D—I’I‘K”K�K�KøøøØÔ$ð å$ T¤\Ñ2Ô2�Ø—
’
˜6Ñ"Ô"Ð"àÔ#×*Ò*¨6Ô+@ÑAÔAÐAØõ Ô'ð 	8ð8ÝÐ2Ñ3Ô3Ð3Ø"Ô1ð "ð "˜Ý˜b™	œ	˜	˜	ð"øå ð *ð *ð *ÝÐNÑOÔOÐOÝÔ'Ñ)Ô)Ð)Ð)Ð)ð*øøøõ Ð6Ñ7Ô7Ð7Ð7ø•EÐ6Ñ7Ô7Ð7Ð7øøøð	8ðõ Ô'ð 	8ð8ÝÐ2Ñ3Ô3Ð3Ø"Ô1ð "ð "˜Ý˜b™	œ	˜	˜	ð"øå ð *ð *ð *ÝÐNÑOÔOÐOÝÔ'Ñ)Ô)Ð)Ð)Ð)ð*øøøõ Ð6Ñ7Ô7Ð7Ð7Ð7ø•EÐ6Ñ7Ô7Ð7Ð7øøøð	8ð 	8ø�{Ô'ð 	8ð8ÝÐ2Ñ3Ô3Ð3Ø"Ô1ð "ð "˜Ý˜b™	œ	˜	˜	ð"øå ð *ð *ð *ÝÐNÑOÔOÐOÝÔ'Ñ)Ô)Ð)Ð)Ð)ð*øøøõ Ð6Ñ7Ô7Ð7Ð7ø•EÐ6Ñ7Ô7Ð7Ð7øøøð	8øøøsÍ   Á$J! ÂC"ÂDÂ7J! ÃDÃ" DÄDÄJ! ÄD1Ä1AJ! Æ(F:Æ9G<Æ:,G)Ç&G<Ç(G)Ç)G<Ç<HÈ(I ÉJ É,I7É4J É6I7É7J ÊJÊ!L/Ê/(KËLË,LÌLÌLÌLÌ
L/ÌL+Ì+L/c                 óR  — t          d„ |D ¦   «         ¦  «        }|                     t          ¬¦  «         |                     ||¦  «        }	 	 |                     | j        ¦  «        } |j        |¦  «         | j                             |j	        ¦  «         | 
                    |j        ¦  «         |j        r	d|_        d S ng# t          $ r Y d S t          $ rN}dd                     d„ t!          |¦  «        D ¦   «         ¦  «        z  }	|	f|j        dd …         z   |_        |‚d }~ww xY wŒÝ)Nc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r_   r   )rÌ   r%   s     r!   ú	<genexpr>z9ParallelTestRunner._run_parallel_tests.<locals>.<genexpr>I  s*   è è € Ð2Ð2 q˜AŸDšD™FœFÐ2Ð2Ð2Ð2Ð2Ð2r(   re   Tz3Tests didn't finish before timeout (or crashed):
%sÚ c              3   ó    K  — | ]	}d |z  V — Œ
dS )z- %r
Nr)   )rÌ   Útids     r!   rº  z9ParallelTestRunner._run_parallel_tests.<locals>.<genexpr>T  s&   è è € Ð QÐ Q°C ¨C¡Ð QÐ QÐ QÐ QÐ QÐ Qr(   r   )r   rm   r@   Úimap_unorderedÚ__next__Útimeoutrq  rx   rƒ   ru  Údiscardrt  r€   ÚStopIterationr   r  r  r™   )
r`   r   rµ  r²  ry   Úremaining_idsÚitÚchild_resultÚerZ   s
             r!   r«  z&ParallelTestRunner._run_parallel_testsH  sW  € ÝÐ2Ð2¨EÐ2Ñ2Ô2Ñ2Ô2ˆØ�
Š
Õ+ˆ
Ñ,Ô,Ð,Ø× Ò  ¨uÑ5Ô5ˆð	ðØ!Ÿ{š{¨4¬<Ñ8Ô8�ð #�Ô" <Ñ0Ô0Ð0ØÔ#×*Ò*¨<Ô+EÑFÔFÐFØ×%Ò% lÔ&:Ñ;Ô;Ð;ØÔ*ð Ø(,�FÔ%Ø�Fðøõ !ð ð ð Ø��Ýð ð ð àMØŸšÐ QÐ Q½6À-Ñ;PÔ;PÐ QÑ QÔ QÑQÔQñR�ð ˜ !¤&¨¨¨¤*Ñ,�”Ø�øøøøðøøøð	s   ÁC Ã
D%Ã	D%ÃA	D Ä D%c                 ó  •— t          || j        ¦  «        \  | _        | _        t	          dt          | j        ¦  «        ›dt          | j        ¦  «        ›�¦  «         t          t          | ¦  «                             | j	        ¦  «        S )Nz
Parallel: z
. Serial: )
rŸ  rY   r¦  r®  rn   ro   rw   rî   rq   r·  )r`   rR   r:   s     €r!   rq   zParallelTestRunner.run`  s…   ø€ Ý%=¸dØ>B¼mñ&Mô &MÑ"ˆŒ�d”låˆ­C°´Ñ,=Ô,=Ð,=Ð,=Ý,/°´Ñ,=Ô,=Ð,=ð?ñ 	@ô 	@ð 	@õ Õ'¨Ñ.Ô.×2Ò2°4´?ÑCÔCÐCr(   )r   r=   rr   rs   rj  rh  Ú_TIMEOUTrÀ  ra   r·  r«  rq   r†   r‡   s   @r!   rî   rî     s…   ø€ € € € € ðð ð
 %€KØ€Gð!ð !ð !ð18ð 18ð 18ðfð ð ð0Dð Dð Dð Dð Dð Dð Dð Dð Dr(   rî   )rÏ   )BÚcollectionsr“  ró   r2   r/  r±   r/   r!  rg   rõ   r{   rì   rN   r°  Ú	functoolsr   Úior   r   r   r   r   r	   r
   r   Ú
numba.corer   Ú
numba.miscr   r   r  ÚQueuer   r*   r5   r@   r[   Úobjectr]   rŽ   ru   r‹   r‰   Úmainr‘   r  r   ri   rÞ   rÛ   rÜ   r4  ÚRuntimeErrorr6  Údefaultdictr8  rf   r<  rë   rj  rs  r}  r„  rŸ  rÈ  rî   r)   r(   r!   ú<module>rÓ     s¼  ðØ Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "ð,Ø,Ð,Ð,Ð,Ð,Ð,Ð,øØð ,ð ,ð ,Ø+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð,øøøðð ð ðF €�3ÐÑÔð7ð 7ñ Ôð7ðð ð ð$ð ð ðBð ð ð ð �ñ ô ð ð$ ð  ð  ð  ð  �(Ô$ñ  ô  ð  ðF	9ð 	9ð 	9ð 	9ð 	9�fÔ+ñ 	9ô 	9ð 	9ðIð Ið Ið Ið I�x”}ñ Iô Ið Iðb€
ð
ð 
ð 
ðð ð ð. 9>ð (ð (ð (ð (ð (ð2(ð (ð (ð (ð>
%ð 
%ð 
%ð ð ð ð(	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ðð ð ð ð ˆkÔ%ñ ô ð ðK<ð K<ð K<ð K<ð K<˜Ô-ñ K<ô K<ð K<ð\$ð $ð $ð $ð $˜Ô-ñ $ô $ð $ðDð Dð Dð Dð D˜Ô.ñ Dô Dð Dð&+ð +ð +ð +ð +�Vñ +ô +ð +ð<	ð 	ð 	ð 	ð 	�Fñ 	ô 	ð 	ð0(ð 0(ð 0(ð 0(ð 0(�Vñ 0(ô 0(ð 0(ðfð ð ð8 €ðcDð cDð cDð cDð cD˜Ô.ñ cDô cDð cDð cDð cDs   Á(A/ Á/A=Á<A=