+
    :iyC                     l   ^ RI Ht ^ RIt^ RIHt ^ RIHtHt ^ RI	H
t
HtHt ^ RIt]! 4       tR]n        R]n        ]P#                  4       tR]n        R tR tR	 tR
 tR tR tR tR tR tR tR tR t ! R R]]
4      t  ! R R]
4      t! ! R R]]
4      t"]#R8X  d   ]PH                  ! 4        R# R# )    )StringION)types)compile_extraFlags)TestCasetagMemoryLeakMixinTc                     ^ RI Hp VP                  RR4       VP                  R/ 4       \        VP                  VP
                  V V3/ VB # )r   
cpu_targetreturn_typeNlocals)numba.core.registryr   
setdefaultr   typing_contexttarget_context)pyfuncargtypeskwargsr   s   &&, Z/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_looplifting.pycompile_isolatedr      sT    .
mT*
h#!!!!	
      c                 r    \         P                  ! ^4      p\        VP                  4       F  pWV&   K	  	  V# )   )npemptyrangesizexais   &  r   lift1r#       s/    
A166]!  Hr   c                     \         P                  ! R4      p\        VP                  ^ ,          4       F+  p\        VP                  ^,          4       F  pWW#3&   K
  	  K-  	  V# )r   )r      )r   r   r   shape)r    r!   r"   js   &   r   lift2r(   )   sN    
A1771:qwwqz"AadG #  Hr   c                     \        4       p\        P                  ! ^\        P                  R7      p^ p\	        VP
                  ^ ,          4       F  pW2V,          V ,          ,          pK  	  V#    dtypeobjectr   arangeint64r   r&   )r    _r!   cr"   s   &    r   lift3r4   3   sM    A
		!288$A	A1771:	qTAX Hr   c                     \        4       p\        P                  ! ^\        P                  R7      p^ p^ p\	        VP
                  ^ ,          4       F!  pW2V,          V ,          ,          pWC,          pK#  	  W4,           # r*   r.   )r    r2   r!   r3   dr"   s   &     r   lift4r7   <   s]    A
		!288$A	A	A1771:	qTAX	  5Lr   c                     \        4       p\        P                  ! ^4      p\        VP                  ^ ,          4       F  pV^8  g   K   V# 	  V# r%   r/   r   r0   r   r&   r    r2   r!   r"   s   &   r   lift5r<   G   sC    A
		!A1771:q5H	  Hr   c              #      "   \         P                  ! ^4      p^ x  \        VP                  4       F  pWV&   K	  	  \         P                  ! V4      x  R# 5ir   N)r   r   r   r   sumr   s   &  r   	lift_gen1r@   P   s?     
A
G166]!  &&)Os   AAc                  ~    \         P                  ! ^4       \        ^
4       F  p \        ^
4       F  p  ^# 	  K  	  ^#    )r   r   r   )r"   r'   s     r   lift_issue2561rD   Y   s1    HHQK2YrA   r   c                 |    \         P                  ! ^4      p\        VP                  ^ ,          4       F  pVu # 	  V# r9   )r   r0   r   r&   r   s   &  r   reject1rF   `   s2    
		!A1771:  Hr   c              #      "   \        4       p\        P                  ! ^4      p\        VP                  ^ ,          4       F  pW#,          x  K  	  R# 5i)r%   Nr:   r;   s   &   r   reject_gen1rH   h   s7     A
		!A1771:d
 s   AAc              #      "   \        4       p\        P                  ! ^4      p\        VP                  4       F1  pW#,          V ,           p\        V4       F  pV^,          pK  	  Vx  K3  	  R# 5ir>   )r/   r   r0   r   r   )r    r2   r!   r"   resr'   s   &     r   reject_gen2rK   o   sV     A
		!A166]dQhqA (C  	 s   A-A/c                     \         P                  ! ^\         P                  R7      p\        VP                  4       F3  p\        4       p\         P                  ! V^,           4      V,          W&   K5  	  V# )r   r,   )r   r   int32r   r   r/   r0   )r    r!   r"   r2   s   &   r   reject_npm1rN   {   sO    
"((#A166]HyyQ" 
 Hr   c                      a  ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tRtV tR# )TestLoopLiftingc           
         ^ RI Hp \        VP                  VP                  WR\
        / R7      pV P                  \        VP                  4      ^4       V# )r   r   N)r   flagsr   )	r   r   r   r   r   looplift_flagsassertEquallenlifted)selfr   r   r   cress   &&&  r   try_liftTestLoopLifting.try_lift   sK    2%%%%N2	
 	T[[)1-r   c                    VP                   ^ ,          pVP                  P                  4       w  pV P                  VP                  P
                  4       R# r   N)rV   	overloadsvalues
assertTruefndescnative)rW   rX   jitlooploopcress   &&  r   assert_lifted_native$TestLoopLifting.assert_lifted_native   s;    ++a.&&--/
../r   c                    V P                  W4      pV! V!  pVP                  ! V!  pV P                  V4       V P                  WV4       R# )z8
Check that pyfunc can loop-lift even in nopython mode.
N)rY   entry_pointrd   assertPreciseEqualrW   r   r   argsrX   expectedgots   &&&&   r   check_lift_okTestLoopLifting.check_lift_ok   sG     }}V.4=%!!$'.r   c                    V P                  W4      p\        V! V!  4      p\        VP                  ! V!  4      pV P                  V4       V P	                  WV4       R# )zO
Check that pyfunc (a generator function) can loop-lift even in
nopython mode.
N)rY   listrg   rd   rh   ri   s   &&&&   r   check_lift_generator_ok'TestLoopLifting.check_lift_generator_ok   sQ    
 }}V.&4##T*+!!$'.r   c                    \        W\        R7      pV P                  VP                  4       V! V!  pVP                  ! V!  pV P                  WV4       R# )z$
Check that pyfunc can't loop-lift.
rR   N)r   rS   assertFalserV   rg   rh   ri   s   &&&&   r   check_no_liftTestLoopLifting.check_no_lift   sL      &46%4=%.r   c                    \        W\        R7      pV P                  VP                  4       \	        V! V!  4      p\	        VP
                  ! V!  4      pV P                  WV4       R# )z;
Check that pyfunc (a generator function) can't loop-lift.
rt   N)r   rS   ru   rV   rp   rg   rh   ri   s   &&&&   r   check_no_lift_generator'TestLoopLifting.check_no_lift_generator   sV      &46%&4##T*+.r   c                R    V P                  \        \        P                  3R4       R# {   N)r}   )rm   r#   r   intprW   s   &r   
test_lift1TestLoopLifting.test_lift1       55::-8r   c                R    V P                  \        \        P                  3R4       R# r|   )rm   r(   r   r~   r   s   &r   
test_lift2TestLoopLifting.test_lift2   r   r   c                R    V P                  \        \        P                  3R4       R# r|   )rm   r4   r   r~   r   s   &r   
test_lift3TestLoopLifting.test_lift3   r   r   c                R    V P                  \        \        P                  3R4       R# r|   )rm   r7   r   r~   r   s   &r   
test_lift4TestLoopLifting.test_lift4   r   r   c                R    V P                  \        \        P                  3R4       R# r|   )rm   r<   r   r~   r   s   &r   
test_lift5TestLoopLifting.test_lift5   r   r   c                4    V P                  \        RR4       R # )N )rm   rD   r   s   &r   test_lift_issue2561#TestLoopLifting.test_lift_issue2561   s    >2r2r   c                R    V P                  \        \        P                  3R4       R# r|   )rq   r@   r   r~   r   s   &r   test_lift_gen1TestLoopLifting.test_lift_gen1   s    $$YvFr   c                R    V P                  \        \        P                  3R4       R# r|   )rv   rF   r   r~   r   s   &r   test_reject1TestLoopLifting.test_reject1   s    7UZZM6:r   c                R    V P                  \        \        P                  3R4       R# r|   )ry   rH   r   r~   r   s   &r   test_reject_gen1 TestLoopLifting.test_reject_gen1       $$[5::-Hr   c                R    V P                  \        \        P                  3R4       R# r|   )ry   rK   r   r~   r   s   &r   test_reject_gen2 TestLoopLifting.test_reject_gen2   r   r   r   N)__name__
__module____qualname____firstlineno__rY   rd   rm   rq   rv   ry   r   r   r   r   r   r   r   r   r   r   __static_attributes____classdictcell____classdict__s   @r   rP   rP      s^     0	/
/
/	/999993G;II Ir   rP   c                   ,   a  ] tR t^t o R tR tRtV tR# )TestLoopLiftingAnnotatec                *  a
 ^ RI Hp R o
V
3R lpV! RR7      ! V4      p\        P                  ! ^
4      pVP	                  4       pV! V4      p\        P
                  P                  We^,           4       \        4       pVP                  VR7       VP                  4       pVP                  4        V P                  RV4       VP                  P                  ^,           p	V P                  RP                  V	R	7      V4       V P                  R
V4       R# )z?
Verify that annotation works as expected with one lifted loop
jitc                      R # Nr   r   r   r   bar4TestLoopLiftingAnnotate.test_annotate_1.<locals>.bar       r   c                 v   < S! 4        \        V P                  4       F  pW;;,          ^,          uu&   K  	  V # rB   r   r   )r    r"   r   s   & r   foo4TestLoopLiftingAnnotate.test_annotate_1.<locals>.foo   s,    E166]	 # Hr   Tforceobjfile"The function contains lifted loopsLoop at line {line}linezHas 1 overloadsNnumbar   r   r0   copytestingassert_equalr   inspect_typesgetvaluecloseassertIn__code__co_firstlinenoformat)rW   r   r   cfoor    xcopyrbuf
annotationr   r   s   &         @r   test_annotate_1'TestLoopLiftingAnnotate.test_annotate_1   s     			 D!#&IIbMG


19-j$\\^
		:JG||**Q.+222=zJ'4r   c                  a ^ RI Hp R oV3R lpV! RR7      ! V4      p\        P                  ! ^
4      pVP	                  4       pV! V4      p\        P
                  P                  We^,           ^,          4       \        4       pVP                  VR7       VP                  4       pVP                  4        V P                  RV4       VP                  P                  ^,           p	VP                  P                  ^,           p
V P                  RP                  V	R	7      V4       V P                  RP                  V
R	7      V4       R
# )z@
Verify that annotation works as expected with two lifted loops
r   c                      R # r   r   r   r   r   r   4TestLoopLiftingAnnotate.test_annotate_2.<locals>.bar  r   r   c                    < S! 4        \        V P                  4       F  pW;;,          ^,          uu&   K  	  \        V P                  4       F  pW;;,          ^,          uu&   K  	  V # rB   r   )r    r"   r'   r   s   &  r   r   4TestLoopLiftingAnnotate.test_annotate_2.<locals>.foo  sI    E166]	 # 166]	 #Hr   Tr   r   r   r   r   Nr   )rW   r   r   r   r    r   r   r   r   line1line2r   s   &          @r   test_annotate_2'TestLoopLiftingAnnotate.test_annotate_2
  s     			 D!#&IIbMG


AI?3j$\\^
		:JG++a/++a/+222>
K+222>
Kr   r   N)r   r   r   r   r   r   r   r   r   s   @r   r   r      s      5D$L $Lr   r   c                   t   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tRtV tR# )TestLoopLiftingInActioni1  c                    VP                   VP                  ^ ,          ,          P                  pV P                  \	        V4      V4       R# r\   )r]   
signaturesrV   rT   rU   )rW   jitted	loopcountrV   s   &&& r   assert_has_lifted)TestLoopLiftingInAction.assert_has_lifted2  s7    !!&"3"3A"67>>Vi0r   c                   ^ RI HpHpHpHp V! V! W4R,          4      RR7      R 4       pR	 F]  p\
        P                  ! ^
RR7      p\
        P                  ! ^
RR7      pV! Wg4       VP                  Wh4       V P                  Wx4       K_  	  R# )
r   )r   voidrM   double:NNNTr   c                     V ^ 8X  d7   \        VP                  ^ ,          4       F  pW,          R,          W&   K  	  R# \        VP                  ^ ,          4       F  pW,          R,           W&   K  	  R# )r   g       @      ?N)r   r&   )ur!   r"   s   && r   forloop_with_if?TestLoopLiftingInAction.test_issue_734.<locals>.forloop_with_if9  sS    Avqwwqz*A4#:AD + qwwqz*A4#:AD +r   rM   r,   N)r   rC   )	r   r   r   rM   r   r   r0   py_funcrh   )	rW   r   r   rM   r   r   r   nb_anp_as	   &        r   test_issue_734&TestLoopLiftingInAction.test_issue_7346  sz    22	T%#d	3	& 
4	& A99Rw/D99Rw/DA$##A,##D/ r   c                    ^ RI Hp V! RRR7      R 4       p\        P                  ! . RO4      p\        P                  P                  VP                  V4      V! V4      4       R# )r   r   zf8[:](f8[:])Tr   c                    \         P                  ! \        V 4      4      p^ p\        \        V 4      4       F%  pV^,          pW,          W&   W,          ^
8  g   K%   M	  \        V^,           \        V 4      4       F  p^ W&   K	  	  V# r   )r   zerosrU   r   )r    rJ   indiis   &   r   test4TestLoopLiftingInAction.test_issue_812.<locals>.testL  sp    ((3q6"CCCFmq66R<	 $ C!GSV, -Jr   N)
r   r%      r+   r   
   r+   r      )r   r   r   arrayr   r   r   )rW   r   r   r    s   &   r   test_issue_812&TestLoopLiftingInAction.test_issue_812I  sO    	^d	+	 
,	 HH67


Qa9r   c                   ^ RI Hp R p\        P                  ! ^
4      p\	        4       pV! RR7      ! V4      pV! W44      pV! W44      pV P                  V^ ,          V^ ,          4       V P                  V^,          V^,          4       VP                  VP                  ^ ,          ,          P                  ^ ,          pVP                  P                  4       w  p	V P                  V	P                  P                  4       R# )r   r   c                 N    ^ pV  F  pW#,          pK  	  VP                  4       pW$3# r   )__hash__)r!   bsehs   &&   r   lift_issue2368?TestLoopLiftingInAction.test_issue_2368.<locals>.lift_issue2368b  s*    A 

A4Kr   Tr   N)r   r   r   onesr/   rT   r]   r   rV   r^   r_   r`   ra   )
rW   r   r  r!   r  r   rk   rl   rb   rc   s
   &         r   test_issue_2368'TestLoopLiftingInAction.test_issue_2368_  s    	 GGBKHd#N3!!'Ql!c!f-!c!f-""6#4#4Q#78??B&&--/
../r   c                   ^ RI Hp V! RR7      R 4       pV P                  VP                  R4      V! R4      4       V P	                  V^R7       V P                  VP                  ^4      V! ^4      4       V P	                  V^R7       R# )r   r   Tr   c                 2    ^ p\        V 4       F  pTpK  	  V# r   r   nrJ   r"   s   &  r   r   ?TestLoopLiftingInAction.test_no_iteration_w_redef.<locals>.test}  s    C1X Jr   r   Nr   r   rT   r   r   rW   r   r   s   &  r   test_no_iteration_w_redef1TestLoopLiftingInAction.test_no_iteration_w_redefx  s     		d		 
	 	b)484tq1a$q'2tq1r   c                   ^ RI Hp V! RR7      R 4       pV P                  VP                  R4      V! R4      4       V P	                  V^R7       V P                  VP                  ^4      V! ^4      4       V P	                  V^R7       R# )r   r   Tr   c                 >    ^ p\        V 4       F  pW,          pK  	  V# r   r  r  s   &  r   r   7TestLoopLiftingInAction.test_no_iteration.<locals>.test  s!    C1X Jr   r  Nr  r  r  s   &  r   test_no_iteration)TestLoopLiftingInAction.test_no_iteration  s}    	d		 
	 	b)484tq1a$q'2tq1r   c                    ^ RI Hp V! RR7      R 4       pV P                  VP                  ^4      V! ^4      4       V P	                  V^R7       R# )r   r   Tr   c                 .    \        V 4       F  pTpK  	  X# r   r  )r  r"   rJ   s   &  r   r   >TestLoopLiftingInAction.test_define_in_loop_body.<locals>.test  s    1X Jr   r  Nr  r  s   &  r   test_define_in_loop_body0TestLoopLiftingInAction.test_define_in_loop_body  sM    	d		 
	 	a$q'2tq1r   c                    ^ RI Hp V! RR7      R 4       p\        P                  ! ^
4      pV P	                  VP                  V4      V! V4      4       R# )zTest a problem caused by invalid discovery of loop argument
when a variable is used afterwards but not before.

Before the fix, this will result in::

numba.ir.NotDefinedError: 'i' is not defined
r   Tr   c                     \        V 4      \        P                  8X  dA   V P                  ^8X  d*   Rp^ p\	        V P
                  ^ ,          4       F  pK  	  R# \        hRp^ ^ r#V# )rC           N)typer   ndarrayndimr   r&   	Exception)argresultr'   r"   s   &   r   r   ;TestLoopLiftingInAction.test_invalid_argument.<locals>.test  sY    CyBJJ&88q= FA"399Q<0 1 $O!1r   N)r   r   r   r0   rT   r   )rW   r   r   r'  s   &   r   test_invalid_argument-TestLoopLiftingInAction.test_invalid_argument  sJ     		d		 
	 iimc*DI6r   c                    ^ RI Hp V! RR7      R 4       pV P                  VP                  4       V! 4       4       V P	                  V^R7       R# )r   r   Tr   c                  V    ^p ^ p\        ^4       F  pV^ 8  d   ^p W,          pK  	  W3# )r+   r  )r    yr"   s      r   r   HTestLoopLiftingInAction.test_conditionally_defined_in_loop.<locals>.test  s6    AA1Xq51  4Kr   r  Nr  r  s   &  r   "test_conditionally_defined_in_loop:TestLoopLiftingInAction.test_conditionally_defined_in_loop  sI    	d		 
	 	0tq1r   c                   ^ RI Hp ^ RIpR pVP                  4       ;_uu_ 4        VP	                  R4       V! RR7      ! V4      pV P                  V! R4      V! R4      4       RRR4       R#   + '       g   i     R# ; i)r   r   Nc                 >    V '       d   \        ^
4       F  pK  	  R# R# )r   Nr  )r!   r"   s   & r   r   RTestLoopLiftingInAction.test_stack_offset_error_when_has_no_return.<locals>.pyfunc  s    rA # r   errorTr   )r   r   warningscatch_warningssimplefilterrT   )rW   r   r6  r   cfuncs   &    r   *test_stack_offset_error_when_has_no_returnBTestLoopLiftingInAction.test_stack_offset_error_when_has_no_return  sb    	
 $$&&!!'*&v.EVD\5;7	 '&&&s   ?A//B 	c                   a ^ RI Hp R oV3R lpV! RR7      ! V4      pV P                  V! ^
4      V! ^
4      4       R# )zt
https://github.com/numba/numba/issues/2179

Looplifting transformation is using the wrong version of variable `h`.
r   c                     V # r   r   )r    s   &r   r   <TestLoopLiftingInAction.test_variable_scope_bug.<locals>.bar  s    Hr   c                 ^   < R p\        V 4       F  pW,           pK  	  VS! V 4      ,
          pV# )r"  r  )r    r  kr   s   &  r   r   <TestLoopLiftingInAction.test_variable_scope_bug.<locals>.foo  s/    A1XE CF
AHr   Tr   N)r   r   rT   )rW   r   r   r   r   s   &   @r   test_variable_scope_bug/TestLoopLiftingInAction.test_variable_scope_bug  s;     			 D!#&R$r(+r   c                   ^ RI Hp R pV! RR7      ! V4      p\        P                  ! ^
4      ^3pV P	                  V! V!  V! V!  4       V P	                  \        VP                  VP                  ^ ,          ,          P                  4      ^4       VP                  VP                  ^ ,          ,          P                  ^ ,          pV P	                  \        VP                  4      ^4       \        P                  ! ^
4      R3pV P	                  V! V!  V! V!  4       V P	                  \        VP                  4      ^4       R# )z,
https://github.com/numba/numba/issues/2481
r   c                     V R R V1,          p^p\        VP                  4       F&  p\        4        W2R R R1,          V,          ,          pK(  	  V# )Nr  )r   r   r/   )r    r.  Ar3   r@  s   &&   r   r   <TestLoopLiftingInAction.test_recompilation_loop.<locals>.foo  sG     #A#AA166]$B$
N # Hr   Tr   Nr  )	r   r   r   r0   rT   rU   r]   r   rV   )rW   r   r   r   rj   rV   s   &     r   test_recompilation_loop/TestLoopLiftingInAction.test_recompilation_loop  s     		 D!#&yy}adT4[1T^^DOOA,>?FFGK 23::1=V../3yy}b dT4[1V../3r   c           
        ^ RI Hp V! RR7      R 4       p\        RRRR^ ^ ^R7      pV! R
/ VB pVP                  ! R
/ VB pV P	                  V^ ,          V^ ,          4       V P	                  V^,          V^,          4       VP
                  VP                  ^ ,          ,          P                  w  pV P                  \        VP                  4      ^4       R	# )r   r   Tr   c                 :   \         P                  ! V4      \         P                  ! V4      rWEuV^ &   V^ &   \         P                  ! V^,
          4       F  p	\         P                  ! WV	,          ,          4      V\         P                  ! WV	,          ,          4      ,          ,           Wy^,           &   \         P                  ! WV	,          ,          4      V\         P                  ! WV	,          ,          4      ,          ,           W^,           &   K  	  \        4        Wx3# r   )r   r   r0   sincosr/   )
r!   r  r3   r6   x0y0r  xsysr"   s
   &&&&&&&   r   r   DTestLoopLiftingInAction.test_lift_objectmode_issue_4223.<locals>.foo  s    XXa["((1+LBqE2a5YYqs^&&U+a"&&U2C.CCQ3&&U+a"&&U2C.CCQ3 $ H6Mr   g333333?g333333?g333333?)r!   r  r3   r6   rN  rO  r  Nr   )r   r   dictr   rh   r]   r   rV   rT   rU   nopython_signatures)rW   r   r   r   rl   rk   rV   s   &      r   test_lift_objectmode_issue_42237TestLoopLiftingInAction.test_lift_objectmode_issue_4223  s    	d		 
	 scSQ1DmFm;;((A4  Q!5==!23::V778!<r   c                   ^ RI Hp V! RR7      R 4       pV! RR7      R 4       pV! RR7      R 4       p\        P                  ! ^4      p\        P                  ! ^4      pV P	                  V! WV4      VP                  WV4      4       V P	                  V! WV4      VP                  WV4      4       V P	                  V! WV4      VP                  WV4      4       R# )r   r   Tr   c                 B    ^ p\        W4       F  w  r4W#,           pK  	  V# r   )zip)XYr"   r    r.  s   &&   r   udt_zipDTestLoopLiftingInAction.test_lift_zip_and_enumerate.<locals>.udt_zip2  s#    AA	E "Hr   c                 B    ^ p\        V 4       F  w  r4W$,           pK  	  V# r   )	enumerate)rZ  r[  r"   r  r    s   &&   r   udt_enumerateJTestLoopLiftingInAction.test_lift_zip_and_enumerate.<locals>.udt_enumerate:  s#    A!!E %Hr   c                 Z    ^ p\        \        W4      4       F  w  pw  rEW$,           pK  	  V# r   )r_  rY  )rZ  r[  r"   r  r    r.  s   &&    r   udt_enumerate_zipNTestLoopLiftingInAction.test_lift_zip_and_enumerate.<locals>.udt_enumerate_zipB  s,    A&s1y1	6AE 2Hr   N)r   r   r   r  rT   r   )rW   r   r\  r`  rc  rZ  r[  s   &      r   test_lift_zip_and_enumerate3TestLoopLiftingInAction.test_lift_zip_and_enumerate.  s    	d		 
	 
d		 
	 
d		 
	 GGAJGGAJ(=>q,m.C.CA.IJ*10*2218	:r   r   N)r   r   r   r   r   r   r   r  r  r  r  r*  r0  r:  rB  rH  rU  re  r   r   r   s   @r   r   r   1  sQ     10&:,022&2"27828,*4@=*!: !:r   r   __main__)%ior   numpyr   
numba.corer   numba.core.compilerr   r   numba.tests.supportr   r   r	   unittestrS   force_pyobjectenable_loopliftr   pyobject_looplift_flagsenable_pyobject_loopliftr   r#   r(   r4   r7   r<   r@   rD   rF   rH   rK   rN   rP   r   r   r   mainr   r   r   <module>rs     s       4 > >   $ !% (--/ 37  0	
_Iox _IDGLh GLT^:ox ^:B	 zMMO r   