+
    :i=5                         ^ RI t^ RI t ^ RIt^ RIHtHt ^ RIHtHt ^ RI	H
t
 ^ RIHtHt  ! R R]4      t ! R R	]4      t]R
8X  d   ]P"                  ! 4        R# R# )    N)njitjit)TypingErrorUnsupportedError)ir)TestCaseIRPreservingTestPipelinec                   h   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V tR# )TestClosurec                   a ^
oV3R lp\        R/ VB ! V4      pV P                  V! ^4      ^4       ^oV P                  V! ^4      ^4       R# )
   c                    < V S,           # N xYs   &V/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_closure.pyadd_Y3TestClosure.run_jit_closure_variable.<locals>.add_Y       q5L    Nzi4(i4)r   assertEqual)selfjitargsr   c_add_Yr   s   &,  @r   run_jit_closure_variable$TestClosure.run_jit_closure_variable   sP    	 *'*51R( R(r   c                *    V P                  R R7       R# T)forceobjNr   r   s   &r   test_jit_closure_variable%TestClosure.test_jit_closure_variable       %%t%4r   c                *    V P                  R R7       R# TnopythonNr$   r%   s   &r   test_jit_closure_variable_npm)TestClosure.test_jit_closure_variable_npm   r(   r   c                $  a ^
oV3R lp\        R/ VB ! V4      pV P                  V! ^4      ^4       ^o\        R/ VB ! V4      pV P                  V! ^4      ^4       ^oV P                  V! ^4      ^4       V P                  V! ^4      ^4       R# )r   c                    < V S,           # r   r   r   s   &r   r   0TestClosure.run_rejitting_closure.<locals>.add_Y%   r   r   Nr   r   )r   r   r   r   	c_add_Y_2r   s   &,   @r   run_rejitting_closure!TestClosure.run_rejitting_closure"   s    	 *'*51R( ,G,U3	1r*1r*R(r   c                *    V P                  R R7       R# r"   r3   r%   s   &r   test_rejitting_closure"TestClosure.test_rejitting_closure4       ""D"1r   c                *    V P                  R R7       R# r*   r6   r%   s   &r   test_rejitting_closure_npm&TestClosure.test_rejitting_closure_npm7   r9   r   c                r   aa ^
o^oVV3R lp\        R/ VB ! V4      pV P                  V! ^4      ^4       R# )r   c                 $   < V S,           S,          # r   r   )r   r   Zs   &r   add_Y_mult_ZDTestClosure.run_jit_multiple_closure_variables.<locals>.add_Y_mult_Z>   s    EQ;r   Nr   r   )r   r   r@   c_add_Y_mult_Zr   r?   s   &,  @@r   "run_jit_multiple_closure_variables.TestClosure.run_jit_multiple_closure_variables:   s;    	 11,?*B/r   c                *    V P                  R R7       R# r"   rC   r%   s   &r   #test_jit_multiple_closure_variables/TestClosure.test_jit_multiple_closure_variablesD       ///>r   c                *    V P                  R R7       R# r*   rF   r%   s   &r   'test_jit_multiple_closure_variables_npm3TestClosure.test_jit_multiple_closure_variables_npmG   rI   r   c                <  a R  p\        R/ VB ! V4      oSP                  4        V3R lp\        R/ VB ! V4      pVP                  4        V P                  VS4      ;_uu_ 4        V P                  V! ^4      ^24       RRR4       R#   + '       g   i     R# ; i)c                     V ^
,          # )r   r   )as   &r   mult_103TestClosure.run_jit_inner_function.<locals>.mult_10K   s    r6Mr   c                 "   < S! V ^,           4      #    r   )r   	c_mult_10s   &r   do_math3TestClosure.run_jit_inner_function.<locals>.do_mathQ   s    QU##r   N)z
intp(intp))r   disable_compileassertRefCountr   )r   r   rP   rV   	c_do_mathrU   s   &,   @r   run_jit_inner_function"TestClosure.run_jit_inner_functionJ   s    	 009	!!#	$ 009	!!#  I66Yq\2. 7666s   'B

B	c                *    V P                  R R7       R# r"   r[   r%   s   &r   test_jit_inner_function#TestClosure.test_jit_inner_functionZ       ##T#2r   c                *    V P                  R R7       R# r*   r^   r%   s   &r   test_jit_inner_function_npm'TestClosure.test_jit_inner_function_npm]   ra   r   r   N)__name__
__module____qualname____firstlineno__r   r&   r-   r3   r7   r;   rC   rG   rK   r[   r_   rc   __static_attributes____classdictcell____classdict__s   @r   r   r      sF     )55)$220??/ 33 3r   r   c                   x   a  ] tR t^at o RtR tR tR tR tR t	R t
R tR	 t]P                  R
 4       tRtV tR# )TestInlinedClosurez
Tests for (partial) closure support in njit. The support is partial
because it only works for closures that can be successfully inlined
at compile time.
c                ^    R  p\        V4      pV P                  V! ^
4      V! ^
4      4       R# )c                 2    R  pV! V 4      V! V 4      ,           # )c                     W ,          # r   r   )r   s   &r   innerDTestInlinedClosure.test_inner_function.<locals>.outer.<locals>.innerl   	    ur   r   r   rr   s   & r   outer5TestInlinedClosure.test_inner_function.<locals>.outerj   s     8eAh&&r   Nr   r   r   rv   cfuncs   &  r   test_inner_function&TestInlinedClosure.test_inner_functionh   s*    	' UrE"I.r   c                ^    R  p\        V4      pV P                  V! ^
4      V! ^
4      4       R# )c                 L   a V ^,           oV3R lpV! V 4      V! V 4      ,           # )   c                 "   < W ,          S,           # r   r   r   ys   &r   rr   QTestInlinedClosure.test_inner_function_with_closure.<locals>.outer.<locals>.innery   s    uqy r   r   r   rr   r   s   & @r   rv   BTestInlinedClosure.test_inner_function_with_closure.<locals>.outerv   s&    AA! 8eAh&&r   Nrx   ry   s   &  r    test_inner_function_with_closure3TestInlinedClosure.test_inner_function_with_closuret   s*    	' UrE"I.r   c                ^    R  p\        V4      pV P                  V! ^
4      V! ^
4      4       R# )c                 P   a V ^,           oV3R lpV! V 4      oSV! V 4      ,           # )r   c                    < V S,          # r   r   r   s   &r   rr   STestInlinedClosure.test_inner_function_with_closure_2.<locals>.outer.<locals>.inner       1ur   r   r   s   & @r   rv   DTestInlinedClosure.test_inner_function_with_closure_2.<locals>.outer   s*    AA aAuQx<r   Nrx   ry   s   &  r   "test_inner_function_with_closure_25TestInlinedClosure.test_inner_function_with_closure_2   s*    	  UrE"I.r   c                    R p/ p\        VP                  4       V4       \        VR,          4      pV P                  V! ^
4      VR,          ! ^
4      4       R# )a  
            def outer(x):
                y = x + 1
                z = 0

                def inner(x):
                    nonlocal z
                    z += x * x
                    return z + y

                return inner(x) + inner(x) + z
        rv   N)execstripr   r   )r   codensrz   s   &   r   "test_inner_function_with_closure_35TestInlinedClosure.test_inner_function_with_closure_3   sJ     TZZ\2R[!rBwKO4r   c                ^    R  p\        V4      pV P                  V! ^
4      V! ^
4      4       R# )c                 .   a  V 3R  lpV! S S ,          4      # )c                 \   <a  VV 3R  lp^ p\        S 4       F  pW!! V4      ,          pK  	  V# )c                 $   < SS,           V ,           # r   r   zr   r   s   &r   	innermost^TestInlinedClosure.test_inner_function_nested.<locals>.outer.<locals>.inner.<locals>.innermost   s    q519$r   range)r   r   sir   s   f   r   rr   KTestInlinedClosure.test_inner_function_nested.<locals>.outer.<locals>.inner   s0    % qA1%A "r   r   ru   s   f r   rv   <TestInlinedClosure.test_inner_function_nested.<locals>.outer   s     Q<r   Nrx   ry   s   &  r   test_inner_function_nested-TestInlinedClosure.test_inner_function_nested   s*    	  UrE"I.r   c                  aa \         V3R l4       oV3R lpV3R lpR pR pR pR p^	oV3R lp^	oV3R	 lpR
 p	R p
R pR pRR lpRR lpRR lpR pR pR pR pR pR pR pWWVWxWWVVVVV.pV F.  p\        V4      p^
pV P                  V! V4      V! V4      4       K0  	  V P                  \        4      ;_uu_ 4       p\	        RR7      ! V4      pV! X4       RRR4       RpV P                  V\        XP                  4      4       V P                  \        4      ;_uu_ 4       p\	        RR7      ! V4      pV! X4       RRR4       RpV P                  V\        VP                  4      4       V P                  \        4      ;_uu_ 4       p\	        RR7      ! V4      pV! X4       RRR4       RpV P                  V\        VP                  4      4       V P                  \        4      ;_uu_ 4       p\	        RR7      ! V4      pV! X4       RRR4       RpV P                  V\        VP                  4      4       V P                  \        4      ;_uu_ 4       p\	        RR7      ! V4      pV! X4       RRR4       RpV P                  V\        VP                  4      4       V P                  \        4      ;_uu_ 4       p\	        RR7      ! V4      pV! X4       RRR4       RpV P                  V\        VP                  4      4       V P                  \        4      ;_uu_ 4       p\	        RR7      ! V4      pV! 4        RRR4       RpV P                  V\        VP                  4      4       R#   + '       g   i     EL; i  + '       g   i     ELP; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELW; i  + '       g   i     EL; i  + '       g   i     L; i) z2Tests the large number of use cases defined below c                 \   < V ^8  d   V # S! V ^,
          4      S! V ^,
          4      ,           #    r   )nfib3s   &r   r   4TestInlinedClosure.test_bulk_use_cases.<locals>.fib3   s*    1uA;a!e,,r   c                    < V3R lpV! V 4      # )z+Test calling recursive function from inner c                    < S! V 4      # r   r   )r   r   s   &r   rr   ETestInlinedClosure.test_bulk_use_cases.<locals>.outer1.<locals>.inner   s    Awr   r   )r   rr   r   s   & r   outer16TestInlinedClosure.test_bulk_use_cases.<locals>.outer1   s    8Or   c                6   <a V ^,           oVV3R lpV! V 4      # )z-Test calling recursive function from closure c                 "   < V S! S4      ,           # r   r   )r   r   r   s   &r   rr   ETestInlinedClosure.test_bulk_use_cases.<locals>.outer2.<locals>.inner   s    47{"r   r   )r   rr   r   r   s   & @r   outer26TestInlinedClosure.test_bulk_use_cases.<locals>.outer2   s    AA#8Or   c                    a V3R loS! V 4      # )zTest recursive inner c                 8   < V ^8  d   ^
# S! V ^,
          4       R# r   Nr   ru   s   &r   rr   ETestInlinedClosure.test_bulk_use_cases.<locals>.outer3.<locals>.inner   s    q5!a%Lr   r   ru   s   &@r   outer36TestInlinedClosure.test_bulk_use_cases.<locals>.outer3   s    !
 8Or   c                6   aa V ^,           oVV3R loS! V 4      # )zTest recursive closure c                 F   < V S,           ^8  d   ^
# S! V ^,
          4       R# r   r   r   s   &r   rr   ETestInlinedClosure.test_bulk_use_cases.<locals>.outer4.<locals>.inner   s    q519!a%Lr   r   r   s   &@@r   outer46TestInlinedClosure.test_bulk_use_cases.<locals>.outer4   s    AA!
 8Or   c                2   a V ^,           oV3R lpV! V 4      # )zTest nested closure c                 P   <a SV ,           ^,           oV3R lpV! V 4      S,           # )r   c                    < V S,           # r   r   r   r   s   &r   inner2VTestInlinedClosure.test_bulk_use_cases.<locals>.outer5.<locals>.inner1.<locals>.inner2   s    q5Lr   r   )r   r   r   r   s   & @r   inner1FTestInlinedClosure.test_bulk_use_cases.<locals>.outer5.<locals>.inner1   s%    EAI! ay1}$r   r   r   r   r   s   & @r   outer56TestInlinedClosure.test_bulk_use_cases.<locals>.outer5   s    AA% !9r   c                2   a V ^,           oV3R lpV! V 4      # )z-Test closure with list comprehension in body c                 b   < SV ,           ^,           p\        V4       Uu. uF  q"NK  	  up# u upi r   r   )r   r   tr   s   &  r   r   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer6.<locals>.inner1   s,    EAI#(8,8a8,,,s   
,r   r   s   & @r   outer66TestInlinedClosure.test_bulk_use_cases.<locals>.outer6   s    AA- !9r   c                4   < V ^,           pW,           S,           # )z(Test use of outer scope var, no closure r   )r   r   _OUTER_SCOPE_VARs   & r   outer76TestInlinedClosure.test_bulk_use_cases.<locals>.outer7   s    AA5+++r   c                6   <a V ^,           oVV3R lpV! V 4      # )z*Test use of outer scope var, with closure c                 $   < V S,           S,           # r   r   )r   r   r   s   &r   rr   ETestInlinedClosure.test_bulk_use_cases.<locals>.outer8.<locals>.inner  s    1u///r   r   )r   rr   r   r   s   & @r   outer86TestInlinedClosure.test_bulk_use_cases.<locals>.outer8  s    AA08Or   c                6   a V ^,           oV3R lpTpV! V 4      # )zTest closure assignmentc                    < V S,           # r   r   r   s   &r   rr   ETestInlinedClosure.test_bulk_use_cases.<locals>.outer9.<locals>.inner  r   r   r   )r   rr   fr   s   &  @r   outer96TestInlinedClosure.test_bulk_use_cases.<locals>.outer9
  s    AAAQ4Kr   c                @   aa V ^,           oV3R loV3R lpV! V 4      # )z Test two inner, one calls other c                    < V S,           # r   r   r   s   &r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer10.<locals>.inner  r   r   c                    < S! V 4      # r   r   ru   s   &r   r   GTestInlinedClosure.test_bulk_use_cases.<locals>.outer10.<locals>.inner2  s    Qxr   r   )r   r   rr   r   s   & @@r   outer107TestInlinedClosure.test_bulk_use_cases.<locals>.outer10  s"    AA  !9r   c                &   a V ^,           oV3R lpV# )zreturn the closure c                    < V S,           # r   r   r   s   &r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer11.<locals>.inner#  r   r   r   r   rr   r   s   & @r   outer117TestInlinedClosure.test_bulk_use_cases.<locals>.outer11  s    AALr   c                6   a V ^,           oRV3R llpV! V 4      # )zclosure with kwargc                 $   < V S,           V,           # r   r   r   kwr   s   &&r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer12.<locals>.inner+      1urz!r      r   r   s   & @r   outer127TestInlinedClosure.test_bulk_use_cases.<locals>.outer12'  s    AA"8Or   c                &    V ^,           V,           pV# )zouter with kwarg no closurer   r   s   && r   outer137TestInlinedClosure.test_bulk_use_cases.<locals>.outer13/  s    A
AHr   c                6   aa V ^,           oVV3R lpV! V 4      # )z outer with kwarg used in closurec                 $   < V S,           S,           # r   r   r   s   &r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer14.<locals>.inner8  r   r   r   r   r   rr   r   s   &f @r   outer147TestInlinedClosure.test_bulk_use_cases.<locals>.outer144  s    AA"8Or   c                2   a V ^,           oV3R lpV! W4      # )z"outer with kwarg as arg to closurec                 $   < V S,           V,           # r   r   r   s   &&r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer15.<locals>.inner@  r   r   r   r   s   && @r   outer157TestInlinedClosure.test_bulk_use_cases.<locals>.outer15<  s    AA"<r   c                D   a V ^,           oV3R lp\        V! V 4      4      # )z'closure is generator, consumed locally c              3   &   <"   V S,           x  R # 5ir   r   r   s   &r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer16.<locals>.innerH       !e   )listr   s   & @r   outer167TestInlinedClosure.test_bulk_use_cases.<locals>.outer16D  s!    AA a>!r   c                2   a V ^,           oV3R lpV! V 4      # )zclosure is generator, returned c              3   &   <"   V S,           x  R # 5ir   r   r   s   &r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer17.<locals>.innerQ  r  r  r   r   s   & @r   outer177TestInlinedClosure.test_bulk_use_cases.<locals>.outer17M  s    AA 8Or   c                H   a V ^,           oV3R lpV! V 4       F  pTpK  	  X# )z'closure is generator, consumed in loop c              3   &   <"   V S,           x  R # 5ir   r   r   s   &r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer18.<locals>.innerZ  r  r  r   )r   rr   r   r   r   s   &   @r   outer187TestInlinedClosure.test_bulk_use_cases.<locals>.outer18V  s-    AA 1X  Hr   c                R   aa V ^,           oV ^,           oV3R lpV3R lpV! W4      # )z"closure as arg to another closure c                    < V S,           # r   r   )r   z1s   &r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer19.<locals>.innerg  s    2vr   c                 "   < V ! V4      S,           # r   r   )r   r   z2s   &&r   r   GTestInlinedClosure.test_bulk_use_cases.<locals>.outer19.<locals>.inner2j  s    tby r   r   )r   rr   r   r  r  s   &  @@r   outer197TestInlinedClosure.test_bulk_use_cases.<locals>.outer19b  s,    QBQB! %##r   c                2   a V ^,           oV3R lpV! V 4      # )zTest calling numpy in closure c                 >   < V \         P                  ! S4      ,           # r   )numpycosr   s   &r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer20.<locals>.inners  s    599Q<''r   r   r   s   & @r   outer207TestInlinedClosure.test_bulk_use_cases.<locals>.outer20o  s    AA(8Or   c                2   a V ^,           oV3R lpV! V 4      # )z(Test calling numpy import as in closure c                 >   < V \         P                  ! S4      ,           # r   )npr&  r   s   &r   rr   FTestInlinedClosure.test_bulk_use_cases.<locals>.outer21.<locals>.inner{  s    266!9}$r   r   r   s   & @r   outer217TestInlinedClosure.test_bulk_use_cases.<locals>.outer21w  s    AA%8Or   c                     R p RpV ! V!   R# )z6Test to ensure that unsupported *args raises correctlyc                     R # r   r   )rO   bs   &&r   barDTestInlinedClosure.test_bulk_use_cases.<locals>.outer22.<locals>.bar  s    r   N)r   r   r   )r3  r   s     r   outer227TestInlinedClosure.test_bulk_use_cases.<locals>.outer22  s    AGr   Tr+   Nz,Unsupported use of cell variable encounteredz%Cannot capture the non-constant valuez-The use of yield in a closure is unsupported.z,Calling a closure with *args is unsupported.r   )
r   r   assertRaisesNotImplementedErrorr   assertInstr	exceptionr   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r!  r(  r.  r5  r   refrz   varraisesmsgr   r   s   &                            @@r   test_bulk_use_cases&TestInlinedClosure.test_bulk_use_cases   sa    
	- 
	-
							 	,
 		
				
		 	"	
		$			 VVggw1 CIECU3ZS2  233v&v.E#J 4 =c3v//01233v&v.E#J 4 =c3v//01{++v&w/E#J , 6c3v//01/00F&w/E#J 1 >c3v//01/00F&w/E#J 1 >c3v//01/00F&w/E#J 1 >c3v//01/00F&w/EG 1 =c3v//01Q 433 433 ,++ 100 100 100 10sT   M<.NN$<N8#O
O 1O4<N	N!	$N5	8O		O	 O1	4P	c                   \        \        R 7      R 4       pV P                  V! ^
^4      R4       VP                  VP                  ^ ,          ,          P
                  R,          p. pVP                  P                  4        F  pVP                   F  p\        V\        P                  4      '       g   K%  \        VP                  \        P                  4      '       g   KQ  VP                  P                  ^8X  g   Kn  VP                  V4       K  	  K  	  V P                  \        V4      ^4       V F,  pVP                   P"                  pRpV P%                  Wx4       K.  	  R# ))pipeline_classc                 (    R  pV! V 4      V! V4      3# )c                 (    ^p^
pW,           V ,           # )   r   r   s   &  r   r3  ITestInlinedClosure.test_closure_renaming_scheme.<locals>.foo.<locals>.bar  s    uqy r   r   )rO   r2  r3  s   && r   foo<TestInlinedClosure.test_closure_renaming_scheme.<locals>.foo  s    ! q63q6>!r   preserved_irzclosure__locals__bar_v[0-9]+.xN)   #   )r   r	   r   	overloads
signaturesmetadatablocksvaluesbody
isinstancer   AssignvalueConstappendlentargetnameassertRegex)	r   rH  func_irstoreblkstmtr   rZ  regexs	   &        r   test_closure_renaming_scheme/TestInlinedClosure.test_closure_renaming_scheme  s    
5	6	" 
7	" 	Rh/ --q 12;;NK>>((*CdBII..!$**bhh77::++q0!LL.	 ! + 	UQ'A88==D5ET) r   c                   a \         R  4       o\         V3R l4       p\        P                  P                  V! 4       R4       R# )c                      RR lp V # )皙?c                     W,           # r   r   r   s   &&r   r3  ;TestInlinedClosure.test_issue9222.<locals>.foo.<locals>.bar  rt   r   )re  r   )r3  s    r   rH  .TestInlinedClosure.test_issue9222.<locals>.foo  s    Jr   c                     < S ! 4       ! ^4      # rS   r   )rH  s   r   consume2TestInlinedClosure.test_issue9222.<locals>.consume  s    58Or   Ngffffff@)r   r,  testingassert_allclose)r   rj  rH  s   & @r   test_issue9222!TestInlinedClosure.test_issue9222  sC     
	 
	
 
	 
	
 	

""79g6r   c                ,    \         R  4       pV! 4        R# )c                      ^ p \        ^4       F5  p\        P                  ! \        V ^4       Uu. uF  p^NK  	  up4       ^ p K7  	  R# u upi )r   N)r   r,  array)range_start_s     r   _inner2TestInlinedClosure.test_issue_9577.<locals>._inner  sA    K1XU;%:;%:!%:;< ;s   A	
N)r   )r   ru  s   & r   test_issue_9577"TestInlinedClosure.test_issue_9577  s    		  
	  	r   r   N)re   rf   rg   rh   __doc__r{   r   r   r   r   r@  ra  rn  r   run_test_in_subprocessrw  ri   rj   rk   s   @r   rn   rn   a   sO     
///5(/&B2H *D7$ $$ %r   rn   __main__)r%  r,  unittestnumbar   r   numba.core.errorsr   r   
numba.corer   numba.tests.supportr   r	   r   rn   re   mainr   r   r   <module>r     sP        ;  BR3( R3jV Vr zMMO r   