
    i3/                        S SK r S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	J
r
JrJrJrJr  S SKJrJr  S SKJrJrJr  S SKJr  S SKJr  S SKJr  S SKrS rS	 r " S
 S\5      rS\R@                  4/r!S r"S r#S r$S r% " S S\5      r& " S S\&5      r' " S S\'5      r( " S S\&5      r) " S S\&5      r* " S S\'5      r+ " S S\5      r,\-S:X  a  \R\                  " 5         gg)     N)TestCaseoverride_configoverride_env_configcaptured_stdoutforbid_codegenskip_parfors_unsupported
needs_blas)jitnjit)typescompilerutils)NumbaPerformanceWarning)prange)jitclassc                     U S-   nU$ )N    )someargretvals     Q/var/www/html/trading/venv/lib/python3.13/site-packages/numba/tests/test_debug.pysimple_nopythonr      s    q[FM    c              #      #    U v   Uv   g 7fNr   )xys     r   
simple_genr      s     
G
Gs   
c                       \ rS rSrS rSrg)SimpleClass   c                     SU l         g )N   h)selfs    r   __init__SimpleClass.__init__   s	    r   r$   N)__name__
__module____qualname____firstlineno__r'   __static_attributes__r   r   r   r    r       s    r   r    r%   c                     U R                   $ r   r$   )objs    r   simple_class_userr0   #   s    55Lr   c                 .    [         R                  " X5      $ r   )npdot)abs     r   unsupported_parforr6   &   s    66!<r   c                     [         R                  " U 5      n[        U 5       H   nX   [         R                  " U5      -   X'   M"     U$ r   r2   onesr   sinnr4   is      r   supported_parforr>   )   s8    

AAYtbffQi Hr   c                     [         R                  " U 5      n[        U 5       H+  nX   [         R                  " U5      -   X'   US-   S:  a  M+   e   U$ )N   i r8   r;   s      r   unsupported_prangerA   /   sJ    

AAYtbffQi2v  Hr   c                   d    \ rS rSr\" / SQ5      rS rS rS rS r	S r
S rS	 rS
 rS rS rSrg)DebugTestBase7   )bytecodecfgir	typeinferllvmfunc_opt_llvmoptimized_llvmassemblyc                 8    U R                   " [        /UQ70 UD6  g r   )assertRaisesAssertionError)r&   argskwargss      r   assert_failsDebugTestBase.assert_fails<   s    .:4:6:r   c                    [         R                  U R                  S5      nU H  nXC;   d   eSX4'   M     [        UR	                  5       5       H6  u  pE[        U SU-  5      nU(       a
  U" U5        M%  U R                  Xa5        M8     g )NFTz_check_dump_%s)dictfromkeys	all_dumpssorteditemsgetattrrR   )r&   out
dump_namesenabled_dumpsnameenabled
check_meths          r   check_debug_output DebugTestBase.check_debug_output?   sz    dnne<D((("&M  $M$7$7$9:MD '7$'>?J3!!*2 ;r   c                     [         R                  S;   a  U R                  SU5        g [         R                  S;   a  U R                  SU5        g [        [         R                  5      e)N))      )rd      )rd   r@   	BINARY_OP))rd   
   
BINARY_ADD)r   	PYVERSIONassertInNotImplementedErrorr&   r[   s     r   _check_dump_bytecode"DebugTestBase._check_dump_bytecodeK   sF    ??99MM+s+__
*MM,,%eoo66r   c                 (    U R                  SU5        g )NzCFG dominatorsrk   rm   s     r   _check_dump_cfgDebugTestBase._check_dump_cfgS   s    &,r   c                 B    U R                  SU R                  -  U5        g )Nz--IR DUMP: %s--rk   	func_namerm   s     r   _check_dump_irDebugTestBase._check_dump_irV   s    '$..8#>r   c                 (    U R                  SU5        g )Nz--propagate--rq   rm   s     r   _check_dump_typeinfer#DebugTestBase._check_dump_typeinferY   s    os+r   c                     U R                  SU5        [        R                  R                  S   R                  R
                  S:X  a  U R                  USU5        g g )Nz--LLVM DUMPauto_parallelFz#store i64 %\"\.\d", i64\* %"retptr")rk   r   Flagsoptionsdefaultr_   assertRegexrm   s     r   _check_dump_llvmDebugTestBase._check_dump_llvm\   sL    mS)>>!!/2::BBeKS"H#N Lr   c                 f    U R                  SU R                  -  U5        U R                  SU5        g )Nz--FUNCTION OPTIMIZED DUMP %sadd nsw i64 %arg.somearg, 1ru   rm   s     r   _check_dump_func_opt_llvm'DebugTestBase._check_dump_func_opt_llvma   s)    4t~~EsK3S9r   c                 f    U R                  SU R                  -  U5        U R                  SU5        g )Nz--OPTIMIZED DUMP %sr   ru   rm   s     r   _check_dump_optimized_llvm(DebugTestBase._check_dump_optimized_llvmf   s)    +dnn<cB3S9r   c                     U R                  SU R                  -  U5        [        R                  " 5       S;   a  U R                  SU5        g g )Nz--ASSEMBLY %s)x86_64AMD64i386i686xorl)rk   rv   platformmachinerm   s     r   _check_dump_assembly"DebugTestBase._check_dump_assemblyj   s?    o6<!DDMM&#& Er   r   N)r)   r*   r+   r,   setrW   rR   ra   rn   rr   rw   rz   r   r   r   r   r-   r   r   r   rC   rC   7   sF     D EI;
37-?,O
:
:'r   rC   c                       \ rS rSrSrS rSrg)FunctionDebugTestBasep   r   c                     [        5        n[        [        R                  45      " [        5      nU R                  U" S5      S5        S S S 5        UR                  5       $ ! , (       d  f       WR                  5       $ = f)N   rd   )r   r   r   int64r   assertPreciseEqualgetvaluer&   r[   cfuncs      r   compile_simple_nopython-FunctionDebugTestBase.compile_simple_nopythont   s]    #%++(9E##E!Ha0  ||~	  ||~s   =A  
A=r   N)r)   r*   r+   r,   rv   r   r-   r   r   r   r   r   p   s    !Ir   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestFunctionDebugOutput|   c                     [        SS5         U R                  5       nS S S 5        U R                  WS/5        g ! , (       d  f       N"= f)NDUMP_BYTECODETrE   r   r   ra   rm   s     r   test_dump_bytecode*TestFunctionDebugOutput.test_dump_bytecode~   :    _d3..0C 4j\2 43	   :
Ac                     [        SS5         U R                  5       nS S S 5        U R                  WS/5        g ! , (       d  f       N"= f)NDUMP_IRTrG   r   rm   s     r   test_dump_ir$TestFunctionDebugOutput.test_dump_ir   s:    Y-..0C .dV, .-r   c                     [        SS5         U R                  5       nS S S 5        U R                  WS/5        g ! , (       d  f       N"= f)NDUMP_CFGTrF   r   rm   s     r   test_dump_cfg%TestFunctionDebugOutput.test_dump_cfg   s:    Z...0C /eW- /.r   c                     [        SS5         U R                  5       nS S S 5        U R                  WS/5        g ! , (       d  f       N"= f)N	DUMP_LLVMTrI   r   rm   s     r   test_dump_llvm&TestFunctionDebugOutput.test_dump_llvm   s:    [$/..0C 0fX. 0/r   c                     [        SS5         U R                  5       nS S S 5        U R                  WS/5        g ! , (       d  f       N"= f)NDUMP_FUNC_OPTTrJ   r   rm   s     r   test_dump_func_opt_llvm/TestFunctionDebugOutput.test_dump_func_opt_llvm   s;    _d3..0C 4o%67 43r   c                     [        SS5         U R                  5       nS S S 5        U R                  WS/5        g ! , (       d  f       N"= f)NDUMP_OPTIMIZEDTrK   r   rm   s     r   test_dump_optimized_llvm0TestFunctionDebugOutput.test_dump_optimized_llvm   s=    -t4..0C 5&6%78 54r   c                     [        SS5         U R                  5       nS S S 5        U R                  WS/5        g ! , (       d  f       N"= f)NDUMP_ASSEMBLYTrL   r   rm   s     r   test_dump_assembly*TestFunctionDebugOutput.test_dump_assembly   r   r   r   N)r)   r*   r+   r,   r   r   r   r   r   r   r   r-   r   r   r   r   r   |   s%    3
-
.
/
8
9
3r   r   c                   $    \ rS rSrSrS rS rSrg)TestGeneratorDebugOutput   r   c           	      6   [        5        n[        [        R                  [        R                  45      " [        5      nU R                  [        U" SS5      5      SS/5        S S S 5        UR                  5       $ ! , (       d  f       WR                  5       $ = f)Nr   r#   )r   r   r   r   r   r   listr   r   s      r   compile_simple_gen+TestGeneratorDebugOutput.compile_simple_gen   so    #%++u{{34Z@E##Dq!$51v>  ||~	  ||~s   AA;;
Bc                 "   [        SS5         U R                  5       nS S S 5        U R                  WS/5        U R                  SU R                  -  U5        [
        R                  " S5      nU R                  X!5        g ! , (       d  f       Nh= f)Nr   TrG   z--GENERATOR INFO: %sz
            generator state variables: ['x', 'y']
            yield point #1: live variables = ['y'], weak live variables = ['x']
            yield point #2: live variables = [], weak live variables = ['y']
            )r   r   ra   rk   rv   textwrapdedent)r&   r[   expected_gen_infos      r   test_dump_ir_generator/TestGeneratorDebugOutput.test_dump_ir_generator   su    Y-))+C .dV,,t~~=sC$OO - 
 	'- .-s   B  
Br   N)r)   r*   r+   r,   rv   r   r   r-   r   r   r   r   r      s    I
.r   r   c                   $    \ rS rSrSrS rS rSrg)TestDisableJIT   z2
Test the NUMBA_DISABLE_JIT environment variable.
c                     [        SS5         [        5          [        SS9" [        5      nU R	                  U" S5      S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NDISABLE_JITTnopythonr   rd   )r   r   r
   r   r   )r&   r   s     r   test_jitTestDisableJIT.test_jit   sR    ]D1!T*?;''a!4 " 21!! 21s"   A&,AA&
A#	A&&
A4c                 f   [        SS5         [        5          [        [        5      " [        5      nU" 5       nU R                  UR                  S5        [        SS9" [        5      nU R                  U" U5      S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   Tr#   r   )	r   r   r   simple_class_specr    r   r%   r
   r0   )r&   SimpleJITClassr/   r   s       r   test_jitclassTestDisableJIT.test_jitclass   s    ]D1!!)*;!<[!I$&''q1T*+<=''c
A6 " 21!! 21s#   B"A(B B"
B	B""
B0r   N)r)   r*   r+   r,   __doc__r   r   r-   r   r   r   r   r      s    5	7r   r   c                   "    \ rS rSrSrSrS rSrg)TestEnvironmentOverride   zF
Test that environment variables are reloaded by Numba when modified.
Fc                    U R                  5       nU R                  U5        [        SS5         U R                  5       nU R                  U/ SQ5        S S S 5        U R                  5       nU R                  U5        g ! , (       d  f       N0= f)NNUMBA_DEBUG1)rG   rH   rI   rJ   rK   rL   )r   assertFalser   ra   rm   s     r   
test_debug"TestEnvironmentOverride.test_debug   s{    **, 4..0C ##C *H I	 5 **, 54s   %A==
Br   N)r)   r*   r+   r,   r   _numba_parallel_test_r   r-   r   r   r   r   r      s    
 "r   r   c                   l    \ rS rSrSrSrS rS r\\	S 5       5       r
\\	S 5       5       r\	S 5       rS	rg
)TestParforsDebug   z-
Tests debug options associated with parfors
Fc                 |    SnSnU H   nU[        UR                  5      ;   d  M  Sn  O   U R                  US5        g )NzX'parallel=True' was specified but no transformation for parallel execution was possible.FT Warning message should be found.strmessage
assertTruer&   	warn_listmsgwarning_foundws        r   check_parfors_warning&TestParforsDebug.check_parfors_warning   sA    2Ac!))n$ $  	'IJr   c                 |    SnSnU H   nU[        UR                  5      ;   d  M  Sn  O   U R                  US5        g )Nzprange or pndindex loop will not be executed in parallel due to there being more than one entry to or exit from the loop (e.g., an assertion).FTr   r   r   s        r   (check_parfors_unsupported_prange_warning9TestParforsDebug.check_parfors_unsupported_prange_warning   sC    , Ac!))n$ $  	'IJr   c                 .   [         R                  " [         R                  SS5      n[        R                  " SS9 n[        R
                  " S[        5        [        X4SS9" [        5        SSS5        U R                  W5        g! , (       d  f       N = f)zZ
Test that using parallel=True on a function that does not have parallel
semantics warns.
r   CTrecordalwaysparallelN)
r   Arrayfloat64warningscatch_warningssimplefilterr   r   r6   r   )r&   arr_tyr   s      r   
test_warnsTestParforsDebug.test_warns  sl     U]]As3$$D1Q!!(,CD&!D12DE 2 	""1% 21s   1B
Bc                     [         R                  " SS9 n[         R                  " S[        5        [	        [
        R                  4SS9" [        5        SSS5        U R                  W5        g! , (       d  f       N = f)z7
Test that prange with multiple exits issues a warning
Tr   r  r  N)	r  r  r  r   r   r   r   rA   r   )r&   r   s     r   test_unsupported_prange_warns.TestParforsDebug.test_unsupported_prange_warns  sY     $$D1Q!!(,CD%++$/0BC 2 	55a8 21s   ?A..
A<c                 F   [        [        R                  4SS9" [        5        [	        SS5         [        5        n[        [        R                  4SS9" [        5        SSS5        WR                  5       R                  S5      nU Vs/ s H  nSU;   d  M  UPM     snnU Vs/ s H  nSU;   d  M  UPM     snnU Vs/ s H  nS	U;   d  M  UPM     snn[        [        R                  " S
5      R                  US   5      R                  S5      5      n[        UU[        U5      -   5      nSn	Sn
[        XU	5       H(  u  pnU
R!                  X5      nU R#                  X5        M*     US-   US-   4n	Sn
U H#  nU
R                   " U	6 nU R#                  X5        M%     [        R$                  S['        U/5      4n	Sn
U H#  nU
R                   " U	6 nU R#                  X5        M%     SSS5        g! , (       d  f       GN= fs  snf s  snf s  snf ! , (       d  f       g= f)z=
Test that NUMBA_DEBUG_ARRAY_OPT_STATS produces valid output
Tr  NUMBA_DEBUG_ARRAY_OPT_STATSr   N
zis produced from patternzis fused intozAfter fusion, functionz	#([0-9]+)r   r   )z"('ones function', 'NumPy mapping'))r   user z6Parallel for-loop #{} is produced from pattern '{}' atz1Parallel for-loop #{} is fused into for-loop #{}.z:After fusion, function {} has {} parallel for-loop(s) #{}.)r   r   r   r>   r   r   r   splitintrecompilesearchgrouprangelenzipformatrk   r)   r   )r&   r[   outputr   parallel_loop_outputfuse_outputafter_fusion_outputparfor_stateboundspatternfmtr=   trialslpatternto_matchs                  r   test_array_debug_opt_stats+TestParforsDebug.test_array_debug_opt_stats  s    	ekk^d+,<= !>D "cekk^d34DE # \\^))$/F"FFq&@A&EFF ! #;Fqo&:F;  #DFq&>!&CFD  
 rzz,7>>$Q' )).q3L<'#.B*CCEF
/GLC'*6+2(4#8::a2h/(4 $a')9:GEC%::w/h/ &
 (00!S,5HIGNC-::w/h/ .Q ED"" G;D EDsY   H$G1+H

HHH%
H3H9H 
HHDH1
H 	;H
H r   N)r)   r*   r+   r,   r   r   r   r   r	   r   r
  r  r)  r-   r   r   r   r   r      sg    
 "K	K 	&  	& 9  9 40 40r   r   __main__)/osr   r  r   r  numpyr2   numba.tests.supportr   r   r   r   r   r   r	   numbar
   r   
numba.corer   r   r   numba.core.errorsr   r   numba.experimentalr   unittestr   r   objectr    int32r   r0   r6   r>   rA   rC   r   r   r   r   r   r   r)   mainr   r   r   <module>r7     s    	  	   " " "  - - 5  ' 
&  5;;'( 6'H 6'r	M 	#33 #3L.} .07] 7.3 *j0x j0Z zMMO r   