
    sh,                         S SK r S SKrS SKrS SKJr  S SKrS SKr S SKrSr S SK
r
Sr " S S\R                  5      r\S:X  a  \R                  " 5         gg! \	 a    Sr N?f = f! \	 a    Sr NFf = f)    N)cudaTFc                   8   \ rS rSrSrSS.S jrS rS rS rS	 r	S
 r
S rS r\R                  " \R                   " 5       (       + S5      S 5       rS rS rS rS rS rS r\R0                  " \S5      S 5       r\R0                  " \S5      S 5       rS rSrg)TestCase   zThese test cases are meant to test the Numba test infrastructure itself.
Therefore, the logic used here shouldn't use numba.testing, but only the
upstream unittest, and run the numba test suite only in a subprocess.Nsubp_kwargsc                "   U=(       d    0 n[         R                  SSS/[        U5      -   n[        R                  " U40 UD6nUR                  S5      R                  5       nU Vs/ s H  ofR                  5       (       d  M  UPM     nnU$ s  snf )zH
Use `subp_kwargs` to pass extra argument to `subprocess.check_output`.
z-mznumba.runtestsz-lUTF-8)sys
executablelist
subprocesscheck_outputdecode
splitlinesstrip)selfargsr   cmd	out_byteslineslines          m/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_runtests.pyget_testsuite_listingTestCase.get_testsuite_listing   s|     "'R~~t%5t<tDzI++C?;?	  )446"'8%$::<%8 9s   &BBc                     U R                  U/5      nUS S  H3  nSR                  X15      nU R                  UR                  U5      US9  M5     g )Nz{!r} not startswith {!r})msg)r   format
assertTrue
startswith)r   prefixlistinglnerrmsgs        r   check_listing_prefixTestCase.check_listing_prefix(   sM    ,,fX6#2,B/66rBFOOBMM&1vO>     c                    U R                  U5      nUS   nU R                  SU;   5        [        UR                  S5      S   5      nU R	                  [        U5      [        US-   US-   5      5        U R                  XR5        U$ )zB
Check that the reported numbers of tests are at least *minsize*.
r   tests found r         )r   r    intsplitassertInlenrangeassertGreaterEqual)r   r   minsizer   	last_linenumbers         r   check_testsuite_sizeTestCase.check_testsuite_size.   s|     **40"I	23Y__S)!,- 	c%j%
FRK"@A0r(   c                     U R                  US5      nU R                  [        S U 5       5      5        U R                  [        S U 5       5      5        g )Ni  c              3   ,   #    U  H
  nS U;   v   M     g7f)znumba.cuda.tests.N .0r   s     r   	<genexpr>%TestCase.check_all.<locals>.<genexpr>?   s     JED/47E   c              3   ,   #    U  H
  nS U;   v   M     g7f)znumba.tests.npyufunc.test_Nr;   r<   s     r   r>   r?   A   s      /(- 9D@(-r@   )r7   r    any)r   idsr   s      r   	check_allTestCase.check_all<   sK    ))#t4JEJJK /(-/ / 	1r(   c                     [        S U5      $ )ztreturns a filter on strings starting with 'numba.', useful for
selecting the 'numba' test names from a test listing.c                 $    U R                  S5      $ )Nznumba.)r!   )xs    r   <lambda>8TestCase._get_numba_tests_from_listing.<locals>.<lambda>G   s    X 6r(   )filter)r   r#   s     r   _get_numba_tests_from_listing&TestCase._get_numba_tests_from_listingD   s     6@@r(   c                 &    U R                  / 5        g )NrD   r   s    r   test_defaultTestCase.test_defaultI   s    rr(   c                 (    U R                  S/5        g )Nnumba.testsrO   rP   s    r   test_allTestCase.test_allL   s    'r(   c                 f    [         R                  " 5       (       a  SOSnU R                  S/U5        g )Nd   r,   znumba.cuda.tests)r   is_availabler7   )r   r4   s     r   	test_cudaTestCase.test_cudaO   s-     **,,#!!!#5"6@r(   zNO CUDAc                     U R                  S5        U R                  S5        U R                  S5        U R                  S5        g )Nznumba.cuda.tests.cudadrvznumba.cuda.tests.cudapyznumba.cuda.tests.nocudaznumba.cuda.tests.cudasim)r&   rP   s    r   test_cuda_submodulesTestCase.test_cuda_submodulesU   s>    !!"<=!!";<!!";<!!"<=r(   c                 x    U R                  S/S5        U R                  S/S5        U R                  SS/S5        g )Nznumba.tests.test_storeslice   znumba.tests.test_nested_calls
      r7   rP   s    r   test_moduleTestCase.test_module\   sH    !!#@"A1E!!#B"CRH!!#B#@#BCE	Gr(   c                 *    U R                  S/S5        g )Nnumba.tests.npyufunc2   rc   rP   s    r   test_subpackageTestCase.test_subpackagec   s    !!#9":B?r(   c                 ,    U R                  / SQS5        g )N)z--randomz0.1rg      rc   rP   s    r   test_randomTestCase.test_randomf   s    !!7	<r(   c                    ^  U 4S jnSS/nU" S/5      nU H[  nU" SUS/5      nU" SUS/5      nT R                  X5U-   5        U" SU-  S/5      nU" SU-  S/5      nT R                  X5U-   5        M]     g )	Nc                    > TR                  U 5      nTR                  SUS   5        [        US   R                  5       S   5      nTR	                  US:  5        U$ )Nr*   r   r   )r   r0   r.   r/   r    )arg_listr   countr   s      r   	get_count5TestCase.test_include_exclude_tags.<locals>.get_countk   sT    ..x8EMM-r3b	)!,-EOOEAI&Lr(   long_runningzlong_running, importantrT   z--tagsz--exclude-tagsz	--tags=%sz--exclude-tags=%s)assertEqual)r   rs   tagstotaltagincludedexcludeds   `      r   test_include_exclude_tags"TestCase.test_include_exclude_tagsj   s    	  9:=/*C (C!?@H "2C!GHHUx$78 !+"3]!CDH "5";]!KLHUx$78 r(   c                    U R                  / 5      nU R                  SS/5      nU R                  SS/5      n[        U R                  U5      5      n[        U R                  U5      5      n[        U R                  U5      5      nU R                  [	        [        U5      [        U5      -
  5      [        U5      S-  5        U R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        g )N-jz0:2z1:2r-   )r   setrL   
assertLessabsr1   )r   tmpAlltmp1tmp2lAlll1l2s          r   test_check_shardTestCase.test_check_shard   s    ++B/))4-8))4-8455f=>33D9:33D9: 	CGc"g-.D	B?BT+BT+r(   c                    [        5       n[        S5       HI  nU R                  SSR                  U5      /5      n/ U R	                  U5      QnUR                  U5        MK     U R                  SS/5      n[        U R	                  U5      5      nU R                  [        U5      S5        U Vs/ s H  n[        U5      PM     nn[        [        U5      5       H+  nU R                  [        X   5      [        X   5      5        M-     U H?  n	U H6  n
U R                  X5        U	R                  U
5        U R                  X5        M8     MA     [        R                  " US5       H  u  pU R                  X-  5        M     [        5       nU H  nUR!                  U5        M     UR!                  U5        [        U R	                  U R                  / 5      5      5      nU R                  X5        g s  snf )N   r   z{}:3z--tagalways_testr,   r`   )r   r2   r   r   rL   appendr   r3   r1   rv   r0   removeassertNotIn	itertoolscombinationsassertFalseupdate)r   shardedisubsetslisttmpalways_runningrH   sharded_setsshardtestabsum_of_partsfull_listings                  r   test_check_sharding_equivalent'TestCase.test_check_sharding_equivalent   s   &qA//v}}Q7G0HIFAd88@AENN5!  (('=)ABT??DE 	N 3Q7 )001A0s7|$AS13wz?C %
 "E&d*T"  - ' " **<;DAQU# < uA" N+4==&&r*, - 	47 1s   /G1zRequires gitpythonc                     [         R                  " S[         R                  [         R                  S9  U R                  S/5      nU R                  SU5        U R                  S/5      nU R                  SU5        [        [         R                  S9nU R                  [         R                  5         U R                  S/US	9  S S S 5        g ! [         a    U R	                  S5         Nf = f! , (       d  f       g = f)
Ngitstdoutstderrzno git availablez-gzGit diff by common ancestorz-g=ancestor)r   z	-g=ancestr   )r   callDEVNULLFileNotFoundErrorskipTestr   r   r0   dictassertRaisesCalledProcessError)r   outsr   s      r   test_gitdiffTestCase.test_gitdiff   s    	.OOE#-#5#5#-#5#57 ))4&16=))=/:3T:*"4"45z<<=&&}+&N >= ! 	.MM,-	. >=s   2C 2C.C+*C+.
C<zRequires pyyamlc                    SSK Jn  [        R                  R	                  [        R                  R                  [        5      5      n[        R                  R                  USSS5      n[        R                  R                  U5      (       d  U R                  S5        [        [        R                  R                  U5      S5       nUR                  5       nS S S 5        [         R                  " WUS9nUS   n/ nUS S  H6  n	U	S	   S
   n
U
R                  5        H  nUR                  US   5        M     M8     / SQn[        R                  R                  " U/UQ76 n[        R                  R                  U5      (       d  U R                  S5        [        [        R                  R                  U5      S5       nUR                  5       nS S S 5        [         R                  " XQS9nUS   S   S   S
   n
U
R                  5        H  nUR                  US   5        M     U R                  [!        U5      [!        [#        U5      5      5        [%        U5      S-   n/ ['        U5      QnU R                  [)        U5      U5        U R                  XS   S   5        g ! , (       d  f       GN= f! , (       d  f       N= f)Nr   )Loader..zazure-pipelines.ymlz&'azure-pipelines.yml' is not availablertjobsr`   
parametersmatrixTEST_START_INDEX)r   r   buildscriptsazurezazure-windows.ymlz$'azure-windows.yml' is not availablestrategyr,   	variables
TEST_COUNT)yamlr   ospathdirnameabspath__file__joinisfiler   openreadloadvaluesr   rv   r1   r   maxr2   sorted)r   r   	base_path
azure_pipefdatapipe_yml	templatesstart_indexestmpltr   setupwinpathazure_windowswindows_ymllim_start_indexexpecteds                    r   test_azure_configTestCase.test_azure_config   s   GGOOBGGOOH$=>	WW\\)T49NO
ww~~j))MMBC"''//*-t4668D 599T&1V$	r]E<(2F$$U+=%>? ) # MY99ww~~m,,MM@A"''//-0$71668D 8ii4 V$Q'
3H=]]_E  '9!:; %
 	]+S]1C-DEm,q0,U?+,.9;*?*MNG 54" 87s   J>J1
J.1
J?c                    SnU R                  [        R                  5       n[        R                  SUR                  S5      /n[        R                  " U[        R                  SS9  S S S 5        U R                  SWR                  R                  R                  S5      5        [        R                  SUR                  S5      /n[        R                  " U[        R                  [        R                  S	9  g ! , (       d  f       N= f)
NaJ  if 1:
        from unittest import mock
        from llvmlite import binding as llvm
        error = RuntimeError("Detected compilation during test listing")
        with mock.patch.object(llvm.ExecutionEngine, 'finalize_object',
                               side_effect=error):
            import numba
            {0}
        z-cznumba.njit(lambda:0)()<   )r   timeoutz(Detected compilation during test listingr
   znumba.test('-l')r   )r   r   r   r   r   r   r   STDOUTr0   	exceptionr   r   
check_callr   )r   coderaisesr   s       r   test_no_compilation_on_list$TestCase.test_no_compilation_on_list   s     z<<=>>45M)NOC##C+5+<+<,.0 >
 	@&&--44W=	?
 ~~tT[[1C%DEc%/%7%7%/%7%7	: >=s   AC;;
D	r;   )__name__
__module____qualname____firstlineno____doc__r   r&   r7   rD   rL   rQ   rU   rZ   unittestskipIfr   rY   r]   rd   ri   rm   r|   r   r   
skipUnlesshas_gitpythonr   
has_pyyamlr   r   __static_attributes__r;   r(   r   r   r      s    M :> 	?1A
(A __**,,i8> 9>G@<9,,+5Z (<=O >O( %67)O 8)OV:r(   r   __main__)r   r   r   numbar   r   r   r   r   ImportErrorr   r   r   r   mainr;   r(   r   <module>r      s    	 
     M J@:x   @:F zMMO a  M  Js"   A A% A"!A"%A0/A0