
    shϥ                     \   S SK r S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
Jr  S SKJrJrJrJrJrJrJrJr  S SK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$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-  S SK.J/r/J0r0J1r1J2r2  S SK3J4r4J r J5r5  S SK6J7r7  S SK8r8\r9\7" S\Rt                  4S\Rt                  4/5       " S S\;5      5       r<Sr=Sr> " S S\5      r?\5" SSS9 " S S\45      5       r@ " S S\5      rA " S S\5      rB " S S \5      rC " S! S"\5      rD\ES#:X  a  \8R                  " 5         gg)$    N)
namedtuple)StringIO)njittypeofprange)typestypingirbytecodepostproccpuregistryutils)TestCasetagskip_parfors_unsupportedskip_unless_scipy)EquivSetArrayAnalysis)CompilerFlagsPassManager)remove_dead)
ExtractByteCodeTranslateByteCode	FixupArgsIRProcessingDeadBranchPruneRewriteSemanticConstantsGenericRewritesWithLifting
PreserveIRInlineClosureLikes)NopythonTypeInferenceAnnotateTypesNopythonRewritesIRLegalization)FunctionPassr   register_pass)jitclassLTc                       \ rS rSrS rSrg)ExampleClass3700)   c                 $    Xl         US-   U l        g N   r+   r,   )selfns     s/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_array_analysis.py__init__ExampleClass3700.__init__+   s    Q    r3   N)__name__
__module____qualname____firstlineno__r7   __static_attributes__ r9   r6   r.   r.   )   s    r9   r.   )g333333?      c                   $    \ rS rSrSrS rS rSrg)TestEquivSet5   z
Test array_analysis.EquivSet.
c                    [        5       nUR                  SS5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        UR                  SS5        U R                  UR                  SS5      5        U R	                  UR                  SS5      5        UR                  SS5        U R                  UR                  SSSS5      5        U R	                  UR                  SS5      5        g Nabcde)r   insert_equiv
assertTrueis_equivassertFalse)r4   s1s     r6   test_insert_equivTestEquivSet.test_insert_equiv:   s    Z
S!C-.C-.
S!C-.S#./
S!Cc378S#./r9   c                 H   [        5       n[        5       nUR                  U5      nU R                  UR                  5       5        UR	                  SS5        UR                  U5      nU R                  UR                  5       5        UR	                  SS5        UR                  U5      nU R                  UR                  5       5        UR	                  SS5        UR                  U5      nU R                  UR                  5       5        UR	                  SS5        UR	                  SS5        UR                  U5      nU R                  UR                  SS5      5        U R                  UR                  SS5      5        U R                  UR                  SS5      5        g rG   )r   	intersectrN   is_emptyrM   rO   rP   )r4   rQ   s2rs       r6   test_intersectTestEquivSet.test_intersectF   s-   ZZLL

%
S!LL

%
S!LL

%
S!LL

%
S!
S!LL

3,-C-.C-.r9   r?   N)r:   r;   r<   r=   __doc__rR   rY   r>   r?   r9   r6   rD   rD   5   s    
0/r9   rD   FT)analysis_onlymutates_CFGc                   $    \ rS rSrSrS rS rSrg)ArrayAnalysisPass\   array_analysis_passc                 0    [         R                  " U 5        g N)r(   r7   )r4   s    r6   r7   ArrayAnalysisPass.__init__`   s    d#r9   c                 (   [        UR                  UR                  UR                  UR                  5      Ul        UR
                  R                  UR                  R                  5        [        R                  " UR                  5      nUR                  5         UR                  R                  UR                  R                  5       5        UR                  (       a4  [        UR                  5      S:  a  UR                  UR                  5        g)Nr2   F)r   	typingctxfunc_irtypemap	calltypesarray_analysisrunblocksr   PostProcessorfunc_ir_copiesappendcopytest_idempotencelen)r4   state	post_procs      r6   run_passArrayAnalysisPass.run_passc   s    ,U__emm-2]]EOO M  !5!56**5==9	##EMM$6$6$89!!c%*>*>&?!&C""5#7#78r9   r?   N)r:   r;   r<   r=   _namer7   ru   r>   r?   r9   r6   r_   r_   \   s    !E$	r9   r_   c                   >    \ rS rSr\SS0 SSS4S j5       rSS jrSrg)ArrayAnalysisTestero   Nc           	          U(       d
  [        5       nSUl        Uc  [        R                  R                  nUc  [        R                  R
                  nU " XgXQUX45      $ NT)r   nrtr   
cpu_targettyping_contexttarget_context)clsargsreturn_typeflagslocalslibraryr   r   s           r6   mk_pipelineArrayAnalysisTester.mk_pipelineq   sY     GE	!%00??N!&11@@N>7+" 	"r9   c                 D   [         R                  R                  U5      U R                  l        [        5       R                  U R                  5        SU R                  l        SU R                  l        U R                  n/ Ul	        X#l
        Sn[        U5      nUR                  [        S5        UR                  [        S5        UR                  [        S5        UR                   R"                  (       dB  UR                  [$        S5        UR                  [&        S5        UR                  [(        S	5        UR                  [*        S
5        UR                  [,        S5        UR                   R"                  (       d  UR                  [.        S5        UR                  [0        S5        U(       a  UR                  [0        S5        UR                  [2        S5        UR                  [4        S5        UR7                  5         UR9                  U5        UR:                  $ )z$
Populate and run compiler pipeline
r?   Narray_analysis_testingzanalyzing bytecodezfix up argszprocessing IRznopython rewriteszrewrite semantic constantszdead branch pruningz(inline calls to locally defined closuresznopython frontendzarray analysiszidempotence array analysisz$ensure IR is legal prior to loweringzannotate types)r   FunctionIdentityfrom_functionrs   func_idr   ru   liftedlifted_fromrn   rq   r   add_passr   r   r   r   no_rewritesr    r   r   r#   r$   r&   r_   r'   r%   finalizerk   rj   )r4   funcrq   rs   namepms         r6   compile_to_ir!ArrayAnalysisTester.compile_to_ir~   s    &66DDTJ

""4::.

!%



!!1'
%';<
I}-
L/2{{&&KK)<=KK02NOKK)>?
&>	@ 	)+>?{{&&KK(*=> 	%'78KK)+GH
N$JK
M#34 	
u###r9   r?   rc   )r:   r;   r<   r=   classmethodr   r   r>   r?   r9   r6   ry   ry   o   s'    +/tB d
" 
"+$r9   ry   c                       \ rS rSrS r/ / S4S jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rS r\S 5       rSrg)TestArrayAnalysis   c                    / nU H\  n[        UR                  UR                  U5        [        5       nUR	                  US9  UR                  UR                  5       5        M^     U R                  [        [        U5      5      S:H  5        g )N)filer2   )
r   rl   	arg_namesr   dumpro   getvaluerN   rr   set)r4   ir_listoutputsrg   outputs        r6   
compare_irTestArrayAnalysis.compare_ir   sk    G(9(97CZFLLfL%NN6??,-	 
 	CL)Q./r9   Tc                 n   [         R                  U5      nU(       a  U R                  OS nUR                  X5      nU(       a  U H  n	U	" UR                  S   5        M     Uc+  U R                  U R                  UR                  5      5        gU H   n	U	" UR                  UR                  5        M"     g)z,
Compile the given function and get its IR.
c                     g)Nr?   r?   )xs    r6   <lambda>5TestArrayAnalysis._compile_and_test.<locals>.<lambda>   s    rr9   r   N)	ry   r   r   r   
equiv_setsrN   _has_no_assertcallrg   rh   )
r4   fnarg_tysassertsequivs
idempotenttest_pipelinerq   analysisr   s
             r6   _compile_and_test#TestArrayAnalysis._compile_and_test   s     ,77@.84??k ..rDX((+,  ?OOD33H4D4DEFX%%x'7'78  r9   c                    SR                  SR                  U5      5      nUR                  R                  5        H  u  pVUR	                  SS9 H  nUR                  UR                  R                  5      n[        U[        R                  5      (       d  MI  UR                  S:X  d  M[  X'R                  S   R                     n	U	R                  R                  U5      (       d  M      g   M     g)	NzSizes of {} do not matchz, callopassert_equivr   TF)formatjoinrl   items
find_exprsget_definitionr   r   
isinstancer
   Globalr   literal_value
startswith)
r4   rg   rh   r   msglabelblockexprr   typs
             r6   _has_assertcall!TestArrayAnalysis._has_assertcall   s    (//		$@#NN002LE((F(3++DIINN;b")),,N1J!))A,"3"34C((33C88# 4 3 r9   c                    UR                   R                  5        H  u  p4UR                  SS9 H  nUR                  S:X  d  M  UR	                  UR
                  SS9nUR	                  USS9n[        U[        R                  5      (       a  UR                  OUn[        U[        R                  5      (       a  UR                  OUnXg:X  d  M      g   M     g)Ngetattrr   shapeT)lhs_onlyF)
rl   r   r   attrr   valuer   r
   Varr   )r4   rg   r   r   r   r   yzs           r6   _has_shapecall TestArrayAnalysis._has_shapecall   s    #NN002LE((I(699'..tzzD.IA..q4.@A",Q"7"7QA",Q"7"7QAv# 7 3 r9   c                 (   UR                   R                  5        Ht  u  p#UR                  SS9 H\  nUR                  UR                  R
                  5      n[        U[        R                  5      (       d  MI  UR
                  S:X  d  M[      g   Mv     g)Nr   r   r   FT)	rl   r   r   r   r   r   r   r
   r   )r4   rg   r   r   r   r   s         r6   r   $TestArrayAnalysis._has_no_assertcall   so    #NN002LE((F(3++DIINN;b")),,N1J  4 3
 r9   c                    ^ ^ UU 4S j$ )Nc                 F   > TR                  TR                  XT5      5      $ rc   )rN   r   rg   rh   r   r4   s     r6   r   /TestArrayAnalysis.with_assert.<locals>.<lambda>   s      48):r9   r?   r4   r   s   ``r6   with_assertTestArrayAnalysis.with_assert       : 	:r9   c                    ^ ^ UU 4S j$ )Nc                 F   > TR                  TR                  XT5      5      $ rc   )rP   r   r   s     r6   r   2TestArrayAnalysis.without_assert.<locals>.<lambda>   s     (8(8  48):r9   r?   r   s   ``r6   without_assert TestArrayAnalysis.without_assert   r   r9   c                 "   ^ ^^ U4S jmUU 4S j$ )Nc                    > [        T5      n[        US-
  5       H%  nU R                  TU   TUS-
     5      (       a  M%    g   gNr2   FTrr   rangerO   	equiv_setr5   ir   s      r6   check+TestArrayAnalysis.with_equiv.<locals>.check   sE    D	A1q5\ ))$q'4A;??  " r9   c                 2   > TR                  T" U 5      5      $ rc   rN   r   r   r4   s    r6   r   .TestArrayAnalysis.with_equiv.<locals>.<lambda>       y1A!Br9   r?   r4   r   r   s   ``@r6   
with_equivTestArrayAnalysis.with_equiv       	 CBr9   c                 "   ^ ^^ U4S jmUU 4S j$ )Nc                    > [        T5      n[        US-
  5       H%  nU R                  TU   TUS-
     5      (       d  M%    g   gr   r   r   s      r6   r   .TestArrayAnalysis.without_equiv.<locals>.check   sE    D	A1q5\%%d1gtAE{;;  " r9   c                 2   > TR                  T" U 5      5      $ rc   r   r   s    r6   r   1TestArrayAnalysis.without_equiv.<locals>.<lambda>   r   r9   r?   r   s   ``@r6   without_equivTestArrayAnalysis.without_equiv   r   r9   c                    ^ ^ U U4S j$ )Nc                 F   > TR                  TR                  U T5      5      $ rc   )rN   r   rg   sr4   r   s     r6   r   2TestArrayAnalysis.with_shapecall.<locals>.<lambda>  s    $//$2E2Egq2Q"Rr9   r?   r4   r   s   ``r6   with_shapecall TestArrayAnalysis.with_shapecall  s	    RRr9   c                    ^ ^ U U4S j$ )Nc                 F   > TR                  TR                  U T5      5      $ rc   )rP   r   r  s     r6   r   5TestArrayAnalysis.without_shapecall.<locals>.<lambda>  s    $"2"243F3FwPQ3R"Sr9   r?   r  s   ``r6   without_shapecall#TestArrayAnalysis.without_shapecall  s	    SSr9   c           
         ^ S nU R                  USU R                  SS5      U R                  SS5      U R                  SS5      /S	9  S
 nU R                  U[        R                  4S S9  S nU R                  U[        R                  [        R                  4U R	                  SS5      /S9  S nU R                  U[        R                  4S S9  S nU R                  U[        R                  4S S9  S nU R                  U[        R                  4S S9  S nU R                  U[        R                  [        R                  4U R	                  SS5      U R                  SS5      /S9  S nU R                  U[        R                  [        R                  4U R	                  SS5      U R                  SS5      /S9  S n	U R                  U	[        R                  [        R                  4U R	                  SS5      U R	                  SS5      /S9  S n
U R                  U
[        R                  4U R	                  SS5      /S9  S nU R                  U[        R                  [        R                  4U R	                  SS5      U R                  SS5      /S9  S nU R                  USU R                  SS5      /S	9  S nU R                  USU R                  SSS5      /S	9  S n[        R                  " [        R                  S S5      nU R                  U[        R                  " X45      4S S9  S! nU R                  U[        R                  4U R                  SS5      /S	9  [        S"SS/5      mU4S# jnU R                  U[        R                  4U R                  S$S%5      /S	9  S& nU R                  U[        R                  " [        R                  S S5      4S S9  S' nU R                  U[        R                  " [        R                  S(S5      4S S9  S) nU R                  U[        R                  [        R                  [        R                  4S S9  S* nU R                  U[        R                  [        R                  4S S9  S+ nU R                  U[        R                  " [        R                  S S5      [        R                  " [        R                  S S5      4S S9  U R                  U[        R                  " [        R                  S(S5      [        R                  " [        R                  S(S5      4S S9  U R                  [        5       nU R                  U[        R                  " [        R                  S S5      [        R                  " [        R                  S(S5      4S S9  S S S 5        S,nU R                  U[        WR                  5      5        g ! , (       d  f       N6= f)-Nc                      [         R                  " S5      n [         R                  " S5      nSnSn[         R                  " X#45      ng Nr   r2   npzeros)rH   rI   mr5   rJ   s        r6   test_01TestArrayAnalysis.test_base_cases.<locals>.test_0  s9    AAAA! Ar9   r?   rH   )r   rI   r2   rJ   r   r2   r   c                 b    [         R                  " U 5      n[         R                  " U 5      nX-   $ rc   r  r5   rH   rI   s      r6   test_11TestArrayAnalysis.test_base_cases.<locals>.test_1  #    AA5Lr9   )r   c                 b    [         R                  " U5      n[         R                  " U 5      nX#-   $ rc   r  r  r5   rH   rI   s       r6   test_21TestArrayAnalysis.test_base_cases.<locals>.test_2  r  r9   c                 6    [         R                  " U 5      nX-   $ rc   r  r5   rH   s     r6   test_31TestArrayAnalysis.test_base_cases.<locals>.test_3!  s    A5Lr9   c                 J    [         R                  " U 5      nUS-   nUS-   nX-   $ Nr2      r  r5   rH   rI   rJ   s       r6   test_41TestArrayAnalysis.test_base_cases.<locals>.test_4&  s(    AAAAA5Lr9   c                 j    [         R                  " X 45      nU n[         R                  " X 45      nX-   $ rc   r  )r5   rH   r  rI   s       r6   test_51TestArrayAnalysis.test_base_cases.<locals>.test_5-  s.    ! AA! A5Lr9   c                 r    [         R                  " U5      n[         R                  " U 5      nX#-   nX#-
  nXE-   $ rc   r  )r  r5   rH   rI   rK   rL   s         r6   test_61TestArrayAnalysis.test_base_cases.<locals>.test_64  s1    AAAA5Lr9   rK   rL   c                     [         R                  " U5      n[         R                  " U 5      nU S:X  a  X#-   nXB-   $ X#-
  nXB-   $ N
   r  r  r5   rH   rI   rK   s        r6   test_71TestArrayAnalysis.test_base_cases.<locals>.test_7>  C    AABwE 5L E5Lr9   c                     [         R                  " U5      n[         R                  " U 5      nU S:X  a  X2-   nX4-   $ X"-   nX4-   $ r3  r  r5  s        r6   test_81TestArrayAnalysis.test_base_cases.<locals>.test_8J  r8  r9   c                     [         R                  " U 5      nSnU S:  a>  U S-  n [         R                  " U 5      nU[         R                  " X-   5      -  nU S:  a  M>  U$ Nr   r(  r2   r  onessum)r  Ar  Bs       r6   test_91TestArrayAnalysis.test_base_cases.<locals>.test_9V  sU    
AAa%QGGAJRVVAE]" a% Hr9   rA  rB  c                 8   U S-
  nUS-   nUS-   n[         R                  " U5      n[         R                  " U5      n[         R                  " U5      n[         R                  " U 5      n[         R                  " XV-   5      n	[         R                  " Xx-   5      n
X-   $ r1   r  r  r@  )r  r5   pqrX   rA  rB  CDr  ts              r6   test_102TestArrayAnalysis.test_base_cases.<locals>.test_10a  sv    AAAAAAAAAAquAquA5Lr9   rI  rJ  c                      [         R                  " S5      n [         R                  " S5      nU SS  nUS S n[        U5      n[        U5      nXE:H  $ )N   r2   r  r?  rr   rH   rI   rJ   rK   rL   fs         r6   test_112TestArrayAnalysis.test_base_cases.<locals>.test_11p  sK    
A
A!"A#2AAAAA6Mr9   rS  c                     [         R                  " S5      R                  S5      n [         R                  " S5      R                  S5      nU SS 2S S 24   nUS S2S S 24   nUR                  S   nUR                  S   n[	        U5      nXE:H  $ )N   )rO  rO  r2   rP  r   )r  r?  reshaper   rr   )rH   rI   rJ   rK   rL   rS  gs          r6   test_122TestArrayAnalysis.test_base_cases.<locals>.test_12{  s|    ##E*A##E*A!"Q$A#2#a%A
A
AAA6Mr9   rY  c                     U nUS   $ Nr   r?   )r,   T2s     r6   test_tup_arg7TestArrayAnalysis.test_base_cases.<locals>.test_tup_arg  s    Ba5Lr9   r2   c                 |    [         R                  " U 5      nU4n[         R                  " [        US   5      5      nU$ r]  rQ  )r  rA  SrB  s       r6   test_arr_in_tup:TestArrayAnalysis.test_base_cases.<locals>.test_arr_in_tup  s1    
AAAaD	"AHr9   r,   c                    > T" X 5      nUS   $ r]  r?   )r5   rX   r,   s     r6   test_namedtuple:TestArrayAnalysis.test_base_cases.<locals>.test_namedtuple  s    !AQ4Kr9   rX   r5   r5   c                 J    [         R                  " U 5      n[        US   5      $ r]  )r  whererr   )rA  rJ   s     r6   test_np_where_tup_returnCTestArrayAnalysis.test_base_cases.<locals>.test_np_where_tup_return  s    Aqt9r9   c                 T    U R                   u  p[        R                  " X45      nX-   $ rc   )r   r  r?  )rA  r  r5   rB  s       r6   
test_shape5TestArrayAnalysis.test_base_cases.<locals>.test_shape  s#    WWFQA5Lr9   r(  c                 b   [         R                  " U 5      n[         R                  " U5      n[         R                  " U5      nX:X  a  [         R                  " X4-   5      nOSnX:w  a  SnO[         R                  " XE-   5      nSnX:X  a   X:X  a  [         R                  " X4-   U-   5      nXg-   U-   $ r]  r>  )	lr  r5   rA  rB  rI  rX   r  rK  s	            r6   	test_cond4TestArrayAnalysis.test_base_cases.<locals>.test_cond  s    
A
A
AvFF15MvFF15MAv6quqy)A519r9   c                     X:X  d   e[         R                  " U 5      n[         R                  " U5      n[         R                  " X#-   5      $ rc   r>  )r  r5   rA  rB  s       r6   test_assert_18TestArrayAnalysis.test_base_cases.<locals>.test_assert_1  s5    6N6
A
A66!%= r9   c                 j    U R                   UR                   :X  d   e[        R                  " X-   5      $ rc   )r   r  r@  )rA  rB  s     r6   test_assert_28TestArrayAnalysis.test_base_cases.<locals>.test_assert_2  s(    77agg%&%66!%= r9   zDimension mismatch)r   r   r   intpr   r   ArrayTupler   assertRaisesAssertionErrorassertInstr	exception)r4   r  r  r   r$  r*  r-  r0  r6  r:  rC  rL  rT  rZ  r_  int_arr_typrc  rf  rk  rn  rr  ru  rx  raisesr   r,   s                            @r6   test_base_cases!TestArrayAnalysis.test_base_cases  s   	 	vr'+sD'A'+sD'A'+sF'C'E 	 	F
	 	v

}dC	 	v

EJJ'?(,(8(8c(B'C 	 	E	 	v

}dC	
 	v

}dC	
 	v

}dC	 	v

EJJ'?(,(8(8c(B(,(;(;C(E(G 	 	H	 	v

EJJ'?(,(8(8c(B(,(;(;C(E(G 	 	H	 	v

EJJ'?(,(8(8c(B(,(8(8c(B(D 	 	E	 	v

}(,(8(8c(B'C 	 	E
	 	wEJJ(@(,(8(8c(B(,(;(;C(E(G 	 	H	 	w'+sC'@&A 	 	C	 	w'+sC'E&F 	 	H	 kk%**a5|[[+346 	 	F	 	'+sC'@&A 	 	C sSI&	 	(,Z(H'I 	 	L	 	7[[Q,. 	 	>	 	zEKK

As,K+M'+ 	 	-	" 	y5::uzz5::*N'+ 	 	-	!
 	}uzz5::.F'+ 	 	-	! 	}u{{5::q#/N/4{{5::q#/N/Q'+ 	 	- 	}u{{5::q#/N/4{{5::q#/N/Q'+ 	 	- ~.&""=5;;uzz1c3R38;;uzz1c3R3U+/ # 1 / #c3v//01 /.s   #AW//
W=c           	        ^^ SSK Jn  US 5       mU4S jnU R                  U[        R                  4U R                  SS5      /U R                  SS5      /S9  U4S jnU R                  U[        R                  4U R                  SS5      /S	9  U" S
S9S 5       mU4S jnU R                  U[        R                  4U R                  SSS5      U R                  SS5      /U R                  SS5      /S9  g )Nr   )stencilc                 6    SU S   U S   -   U S   -   U S   -   -  $ )Ng      ?r  )r2   r   )r   rP  )rP  r   r?   rH   s    r6   kernel_14TestArrayAnalysis.test_stencilcall.<locals>.kernel_1  s+    1S6AcF?QtW4qw>??r9   c                 J   > [         R                  " X 45      nT" U5      nX-   $ rc   r  r?  r5   rH   rI   r  s      r6   r  2TestArrayAnalysis.test_stencilcall.<locals>.test_1  s"    AA5Lr9   rH   rI   r   r   c                 ~   > [         R                  " X 45      n[         R                  " U S-   U S-   45      nT" XS9  U$ )Nr2   )outr  r  s      r6   r   2TestArrayAnalysis.test_stencilcall.<locals>.test_2  s9    A1QqS	"AQHr9   r  )rJ   )standard_indexingc                 $    U S   US   -   US   -   $ )N)r   r2   r   )r   rP  r   r   r?   )rH   rI   rJ   s      r6   kernel_24TestArrayAnalysis.test_stencilcall.<locals>.kernel_2  s    U8ai'!A$..r9   c                    > [         R                  " S5      R                  SSS5      n[         R                  " S5      R                  U SS5      n[         R                  " S5      nT" XU5      nU$ )N@   rB      r(  r2   )r  arangerX  r  )r5   rH   rI   uvr  s        r6   r$  2TestArrayAnalysis.test_stencilcall.<locals>.test_3  sY    		"%%a!,A		"%%a!,AAq!AHr9   r  r  )	numba.stencils.stencilr  r   r   rz  r   r   r   r   )r4   r  r  r   r$  r  r  s        @@r6   test_stencilcall"TestArrayAnalysis.test_stencilcall  s   2		@ 
	@	
 	v

}'+sC'@&A(,(;(;C(E'F 	 	H	 	v

}'+'9'9#s'C&D 	 	F 
6	*	/ 
+	/	 	v

}'+sC'E'+'9'9#s'C'E(,(8(8c(B'C 	 	Er9   c                    S nU R                  U[        R                  [        R                  4U R                  SS5      U R	                  SS5      /SS9  S nU R                  U[        R                  4U R	                  SS5      U R	                  SS	5      /SS9  S
 nU R                  U[        R                  4U R	                  SS5      /SS9  S nU R                  U[        R                  4U R	                  SS5      /SS9  S nU R                  U[        R                  [        R                  4U R	                  SS5      U R                  SS5      U R                  SS5      /SS9  S nU R                  U[        R                  4U R	                  SS5      /SS9  S nU R                  U[        R                  4U R                  SS5      /SS9  S nU R                  U[        R                  4U R	                  SS5      /SS9  S n	U R                  U	[        R                  4U R                  SS5      U R                  SS5      U R                  SS5      U R                  SS5      /SS9  g )Nc                     [         R                  " U 5      n[         R                  " U5      n[         R                  " X#-   5      nUSU S-
   nUSUS-
   n[         R                  " XV-   5      nXG-   $ r1   rF  )r  r5   rA  rB  r  rI  rJ  rK  s           r6   r  ,TestArrayAnalysis.test_slice.<locals>.test_1  s_    AAquA!AaCA!AaCAquA5Lr9   rA  rB  rI  rJ  F)r   r   c                 n    [         R                  " U 5      nUSU S-
   nUSU S-
   nUSU S-
   nX#-   nXE-   $ )Nr   rA   r2   r(  r  )r  rA  rB  rI  rJ  Es         r6   r   ,TestArrayAnalysis.test_slice.<locals>.test_2  sJ    A!AaCA!AaCA!AaCAA5Lr9   r  c                     [         R                  " X 45      nUSU S-
  2SU S-
  24   nUSU S-
  2SU S-
  24   nX#-   nU$ r=  r  r  rA  rB  rI  r  s        r6   r$  ,TestArrayAnalysis.test_slice.<locals>.test_3   sW    !A!AaC%!A#+A!AaC%!A#+AAHr9   c                 t    [         R                  " X 45      nUSU S-
  2S S 24   nUSU S-
  2S S 24   nX#-   nU$ r=  r  r  s        r6   r*  ,TestArrayAnalysis.test_slice.<locals>.test_4*  sG    !A!AaC%'
A!AaC%'
AAHr9   c                     [         R                  " U 5      n[         R                  " U 5      nUSU S-
   USU S-
  & [         R                  " U5      nUSU S-
   nXTSUS-
  & X4-   $ )Nr2   r   r(  r  )r  r5   rA  rB  rI  rJ  s         r6   r-  ,TestArrayAnalysis.test_slice.<locals>.test_54  sg    AA1Q3xAa!HA!AaCAa!H 5Lr9   c                 t    [         R                  " X 45      nUSU S-
  2S S24   nUSU S-
  2S S24   nX#-   nU$ )Nr   r(  rP  r2   r  r  s        r6   r0  ,TestArrayAnalysis.test_slice.<locals>.test_6D  sO    !A!AaC%)A!AaC%)AAHr9   c                 t    [         R                  " X 45      nUSU S-
  2SS24   nUSU S-
  2SS24   nX#-   nU$ )Nr   r(  rP  r2   r  r  s        r6   r6  ,TestArrayAnalysis.test_slice.<locals>.test_7N  sO    !A!AaC%2+A!AaC%2+AAHr9   c                 n    [         R                  " X 45      nUS U S-
  2SS 24   nUSS2S S 24   nX#-   nU$ )Nr(  r   r2   rP  r  r  s        r6   r:  ,TestArrayAnalysis.test_slice.<locals>.test_8X  sE    !A$1Q3$qr'
A!B$q&	AAHr9   c                 p    [         R                  " U 5      nUS S nUSS  nUS SS2   nX$-   nUnUS-  nXU4$ )Nr   r2   rP  r  )r  rA  rB  rI  rJ  r  Fs          r6   rC  ,TestArrayAnalysis.test_slice.<locals>.test_9b  sT     !A"1A!"A&2b&	AAAFA7Nr9   r  r  )r   r   )r   r   rz  r   r   r   r   )
r4   r  r   r$  r*  r-  r0  r6  r:  rC  s
             r6   
test_sliceTestArrayAnalysis.test_slice  s   	 	v

5::'?(,(8(8c(B(,(;(;C(E(G*/ 	 	1
	 	v

}(,(;(;C(E(,(;(;C(E(G*/ 	 	1
	 	v

}(,(;(;C(E'F*/ 	 	1	 	v

}(,(;(;C(E'F*/ 	 	1		 	v

5::'>(,(;(;C(E(,(8(8c(B(,(8(8c(B(D +0	 	 	1	 	v

}(,(;(;C(E'F*/ 	 	1	 	v

}(,(8(8c(B'C*/ 	 	1	 	v

}(,(;(;C(E'F*/ 	 	1
	 	v

}'+'9'9#s'C'+sC'@'+sC'@'+sC'@'C +0 	 	1r9   c                 :   S nU R                  U[        R                  4U R                  SS5      U R                  SS5      U R                  SS5      /S9  S nU R                  U[        R                  4U R	                  SS5      /U R                  S5      /S	9  S
 nU R                  U[        R                  4U R                  SS5      U R                  SS5      U R                  SS5      /S9  S nU R                  U[        R                  4U R                  SS5      U R                  SS5      U R                  SS5      /S9  S nU R                  U[        R                  4U R                  SS5      U R                  SS5      U R                  SS5      U R	                  SS5      /S9  S nU R                  U[        R                  4U R                  SS5      /S9  S nU R                  U[        R                  4U R                  SS5      U R                  SS5      /U R                  S5      U R                  S5      /S	9  S nU R                  U[        R                  " [        R                  SS5      4U R                  SSSSS5      /U R                  S5      U R                  S5      /S	9  S n	U R                  U	[        R                  4U R                  SS5      /U R                  S5      /S	9  S n
U R                  U
[        R                  [        R                  4U R                  SS5      U R                  SS5      U R                  SS5      /S9  S nU R                  U[        R                  [        R                  [        R                  4U R                  SS5      U R                  SS5      U R                  SS5      U R                  SS5      U R                  SS5      U R                  SS5      U R                  S S5      /S9  S! nU R                  U[        R                  [        R                  4U R                  SS5      U R                  SS5      U R                  SS5      /S9  S" n[        S#5      S$-   nS/[        [        S5      U5       Vs/ s H  n[        U5      S%-   PM     sn-   nS/[        [        S5      U5       Vs/ s H  n[        U5      S&-   PM     sn-   nU[        [        S5      U5       Vs/ s H  n[        U5      S&-   PM     sn-  nU R                  U[        R                  4U R                  " U6 U R                  " U6 /S9  S' nU R                  U[        R                  [        R                  4U R                  SS(5      U R                  S)S*5      /U R                  S5      U R                  S5      U R                  S)5      U R                  S+5      /S	9  S, nU R                  US-U R                  S+S.5      U R                  S/S05      U R                  S1S25      U R                  S3S45      U R                  S5S65      U R                  S7S85      U R                  S9S:5      /S9  S; nU R                  U[        R                  [        R                  4U R                  S<S5      U R                  SS=5      U R                  SS>S?5      U R                  S@SA5      U R                  SBSCSD5      /S9  SE nU R                  U[        R                  [        R                  4U R                  SSF5      U R                  SSG5      /S9  SH nU R                  U[        R                  [        R                  [        R                  4U R	                  SSI5      U R                  SSJ5      U R                  SSI5      U R                  S@SK5      U R                  SBSL5      U R                  SCSL5      /U R                  S<SM5      /S	9  SN nU R                  U[        R                  [        R                  4U R                  SSS5      /S S	9  SO nU R                  US-U R                  SS5      /S S	9  g s  snf s  snf s  snf )PNc                     [         R                  " U 5      n[         R                  " X 45      n[         R                  " X 4S9ng N)r   r  r)  s       r6   
test_zeros6TestArrayAnalysis.test_numpy_calls.<locals>.test_zerosv  /    A! Av&Ar9   rH   r5   rI   rh  rJ   r  c                 b    [         R                  " S5      n[         R                  " S5      nX-   $ r'  )r  arrayr?  r  s      r6   test_0d_array9TestArrayAnalysis.test_numpy_calls.<locals>.test_0d_array  s#    A
A5Lr9   r  c                     [         R                  " U 5      n[         R                  " X 45      n[         R                  " X 4S9ng r  r  r)  s       r6   	test_ones5TestArrayAnalysis.test_numpy_calls.<locals>.test_ones  s.    
AAqf%Ar9   c                     [         R                  " U 5      n[         R                  " X 45      n[         R                  " X 4S9ng r  )r  emptyr)  s       r6   
test_empty6TestArrayAnalysis.test_numpy_calls.<locals>.test_empty  r  r9   c                     [         R                  " U 5      n[         R                  " U S9n[         R                  " X S9n[         R                  " X S-   S9ng )N)N)r  Mr2   )r  eyer5   rH   rI   rJ   rK   s        r6   test_eye4TestArrayAnalysis.test_numpy_calls.<locals>.test_eye  s<    q	AA A!e$Ar9   rK   c                 0    [         R                  " U 5      ng rc   )r  identityr#  s     r6   test_identity9TestArrayAnalysis.test_numpy_calls.<locals>.test_identity  s    AAr9   c                     [         R                  " U 5      n[         R                  " U5      n[         R                  " U5      n[         R                  " USS9ng )Nr2   )k)r  r  diagr  s        r6   	test_diag5TestArrayAnalysis.test_numpy_calls.<locals>.test_diag  s8    AA
A
AQAr9   )r5   c                     [         R                  " U 5      n[         R                  " U 5      n[         R                  " U 5      n[         R                  " U S5      n[         R
                  " U 5      ng r1   )r  
empty_like
zeros_like	ones_like	full_likeasfortranarrayrR  s         r6   test_array_like;TestArrayAnalysis.test_numpy_calls.<locals>.test_array_like  sK    a Aa AQAQ"A!!!$Ar9   r(  rI  rL   rS  c                     [         R                  " X -  5      nUR                  X 45      nUR                  5       UR                  5       -   $ rc   )r  r?  rX  r@  r  s      r6   test_reshape8TestArrayAnalysis.test_numpy_calls.<locals>.test_reshape  s8    A		1&!A557QUUW$$r9   c                 j    [         R                  " X45      nUR                  nUR                  5       ng rc   r  r?  r,   	transposer  r5   rH   rI   rJ   s        r6   test_transpose:TestArrayAnalysis.test_numpy_calls.<locals>.test_transpose  s%    AAAr9   )r  r5   )r5   r  c                     [         R                  " XU45      nUR                  nUR                  5       nUR                  SSS5      nUR                  S5      nUR                  SSS5      nUR                  S5      n	g )Nr(  r   r2   )r(  r   r2   )r   r(  r2   r  )
r  r5   r  rH   rI   rJ   rK   dtrL   ets
             r6   test_transpose_3d=TestArrayAnalysis.test_numpy_calls.<locals>.test_transpose_3d  sh    q	"AAAAa"AW%BAa"AW%Br9   )r  r5   r  )r  r5   r  )r  r  r5   r  )r  r  r5   r  c                 b    [         R                  " X45      nUR                  nUR                  ng rc   )r  r?  realimagr  s        r6   test_real_imag_attr?TestArrayAnalysis.test_numpy_calls.<locals>.test_real_imag_attr  s#    AAAr9   c                    [         R                  R                  U 5      n[         R                  R                  X 5      n[         R                  R                  U 5      n[         R                  R                  X 5      n[         R                  R	                  U 5      n[         R                  R	                  X 45      n[         R                  R	                  X 4S9n[         R                  R                  U 5      n[         R                  R                  X 45      n	[         R                  R                  X 4S9n
[         R                  R                  U 5      n[         R                  R                  X 45      n[         R                  R                  X 4S9n[         R                  R                  U 5      n[         R                  R                  X 45      n[         R                  R                  X 4S9n[         R                  R                  U 5      n[         R                  R                  X 45      n[         R                  R                  X 4S9n[         R                  R                  SU 5      n[         R                  R                  SX 45      n[         R                  R                  SX 4S9n[         R                  R                  SU 5      n[         R                  R                  SX 45      n[         R                  R                  SX 4S9n[         R                  R                  SU 5      n[         R                  R                  SX 45      n[         R                  R                  SX 4S9n[         R                  R                  SU 5      n[         R                  R                  SX 45      n[         R                  R                  SX 4S9n[         R                  R                  SU 5      n [         R                  R                  SX 45      n![         R                  R                  SX 4S9n"[         R                  R                  SU 5      n#[         R                  R                  SX 45      n$[         R                  R                  SX 4S9n%[         R                  R                  SU 5      n&[         R                  R                  SX 45      n'[         R                  R                  SX 4S9n([         R                  R                  SSU 5      n)[         R                  R                  SSX 45      n*[         R                  R                  SSX 4S9n+[         R                  R!                  SSU 5      n,[         R                  R!                  SSX 45      n-[         R                  R!                  SSX 4S9n.[         R                  R#                  SSU 5      n/[         R                  R#                  SSX 45      n0[         R                  R#                  SSX 4S9n1[         R                  R%                  SSU 5      n2[         R                  R%                  SSX 45      n3[         R                  R%                  SSX 4S9n4[         R                  R'                  SSU 5      n5[         R                  R'                  SSX 45      n6[         R                  R'                  SSX 4S9n7[         R                  R)                  SSU 5      n8[         R                  R)                  SSX 45      n9[         R                  R)                  SSX 4S9n:[         R                  R+                  SSU 5      n;[         R                  R+                  SSX 45      n<[         R                  R+                  SSX 4S9n=[         R                  R-                  SSU 5      n>[         R                  R-                  SSX 45      n?[         R                  R-                  SSX 4S9n@[         R                  R/                  SSU 5      nA[         R                  R/                  SSX 45      nB[         R                  R/                  SSX 4S9nC[         R                  R1                  SSSU 5      nD[         R                  R1                  SSSX 45      nE[         R                  R1                  SSSX 4S9nFg )N)sizer4  g?r   r2   r  )r  randomrandrandnranfrandom_samplesamplestandard_normal	chisquareweibullpower	geometricexponentialpoissonrayleighnormaluniformbetabinomialrS  gamma	lognormallaplacerandint
triangular)Gr5   a0a1b0b1c0c1c2d0d1d2e0e1e2f0f1f2g0g1g2h0h1h2i0i1i2j0j1j2k0k1k2l0l1l2m0m1m2n0n1n2o0o1o2p0p1p2q0q1q2r0r1r2s0rQ   rW   t0t1t2u0u1u2v0v1v2w0w1w2x0x1x2sG                                                                          r6   test_random7TestArrayAnalysis.test_numpy_calls.<locals>.test_random  s   "B%B#B&B"B'BaV,B((+B((!0B((qf(5B!!!$B!!1&)B!!v!.B!!!$B!!1&)B!!v!.B**1-B**A62B***7B$$R+B$$R!0B$$Rqf$5B""2q)B""2v.B""2QF"3BQ'BaV,B1&1B$$S!,B$$S1&1B$$Sv$6B&&r1-B&&rA62B&&r&7B""2q)B""2v.B""2QF"3B##B*B##B/B##BaV#4B!!!Q*B!!!Q/B!!!QaV!4B""1a+B""1a!0B""1aqf"5BQ*BQ/BQaV4B##Aq!,B##Aq1&1B##Aqv#6BS!Q'BS!aV,BS!1&1Ba+Ba!0Baqf5B$$Q1-B$$QA62B$$Q$7B""1a+B""1a!0B""1aqf"5B""1b!,B""1b1&1B""1bv"6B%%b!R3B%%b!R!8B%%b!Rqf%=Br9   r   r2   01c                 .   [         R                  " U 5      n[         R                  " U5      n[         R                  " X#45      n[         R                  " SU45      n[         R                  " SU45      n[         R                  " XV45      n[         R                  " U S45      n[         R                  " U S45      n	[         R                  " X4SS9n
[         R                  " X45      n[         R                  " X45      n[         R                  " X45      ng )Nr(  rA   r2   axis)r  r?  concatenate)r  r5   rH   rI   rJ   rK   rL   rS  r   jr  rq  orG  s                 r6   test_concatenate<TestArrayAnalysis.test_numpy_calls.<locals>.test_concatenateD  s    
A
Av&AAAAAv&A AAAAvA.AAAv&Ar9   )rO  r5   r  )r  rO  rG  c                     [         R                  " S5      n [         R                  " S5      n[         R                  " S5      n[         R                  " X 45      n[         R                  " X45      n[         R                  " X 45      n[         R                  " X45      n[         R                  " X 45      n[         R                  " X45      n[         R                  " X"45      n	g )N)r(  r(  rA   )r(  rA   rB   )r  r?  vstackhstackdstack)
r  rq  r_  rG  rH  rX   r  rK  r  r  s
             r6   test_vsd_stack:TestArrayAnalysis.test_numpy_calls.<locals>.test_vsd_stack_  s    AA	"A		1&!A		1&!A		1&!A		1&!A		1&!A		1&!A		1&!Ar9   r?   )r(  r(  rH  )rB   rA   rX   )rB   r  )r(     rK  )r2   r(  r(  r  )r(  rA   r(  r  )r(  rA   r  c                    [         R                  " U 5      n[         R                  " U5      n[         R                  " X#45      n[         R                  " X45      n[         R                  " X45      n[         R                  " XV45      n[         R                  " XV4SS9n[         R                  " XV4SS9n	[         R                  " XV4SS9n
[         R                  " XV4SS9ng )Nr   r[  r2   r(  rP  )r  r?  stack)r  r5   rH   rI   rJ   rK   rL   rS  rY  hr   r^  s               r6   
test_stack6TestArrayAnalysis.test_numpy_calls.<locals>.test_stacku  s    
A
A! AAA! A!a(A!a(A!a(A!b)Ar9   r  )r(  r  rY  )r(  r  r5   rl  )r  r(  r5   r   r^  )r  r5   r(  c                 ^    [         R                  " X5      n[         R                  " XS5      ng r3  )r  linspacer  s       r6   test_linspace9TestArrayAnalysis.test_numpy_calls.<locals>.test_linspace  s     A!AA"%Ar9   )2   )r4  c                     [         R                  " [         R                  " S5      [         R                  " S5      5      n[         R                  " [         R                  " S5      [         R                  " S5      5      n[         R                  " [         R                  " S5      [         R                  " S5      5      n[         R                  " [         R                  " S5      [         R                  " S5      5      n[         R                  " [         R                  " X45      [         R                  " X!45      5      n[         R                  " [         R                  " X45      [         R                  " X 45      5      ng )Nr2   r(  rc  )r2   r(  r@   )r  dotr?  )	rq  r  r5   rH   rI   rL   rl  r   r^  s	            r6   test_dot4TestArrayAnalysis.test_numpy_calls.<locals>.test_dot  s    rwwqz2771:.Arwwqz2776?3A rwwv4A rwwv8Arwwv8Arwwv8Ar9   r  )rA   )r(  rB   )r  r  rq  c                     [         R                  " X45      n[         R                  " U5      nX#-   n[         R                  " SU45      nX$-   U-
  ng r1   r  )r  r5   rH   rI   rJ   rK   rL   s          r6   test_broadcast:TestArrayAnalysis.test_numpy_calls.<locals>.test_broadcast  sA    A
AAAA	Ar9   c                  l    [         R                  " [        5      n [         R                  " [        5      ng rc   )r  r?  GVAL2)rH   rI   s     r6   test_global_tuple=TestArrayAnalysis.test_numpy_calls.<locals>.test_global_tuple  s    AAr9   )r   r   rz  r   r   r  r  r{  ordr   chrfloat64r   )r4   r  r  r  r  r  r  r  r  r  r  r  r  rV  lastr   vars1dvars2dr`  rg  rm  rq  rv  ry  r}  s                            r6   test_numpy_calls"TestArrayAnalysis.test_numpy_callst  s<   	' 	zEJJ='+sC'@'+sJ'G'+sC'@'B 	 	C
	 	}uzzm'+'9'9#s'C&D(,(>(>s(C'D 	 	F	& 	y5::-'+sC'@'+sJ'G'+sC'@'B 	 	C
	' 	zEJJ='+sC'@'+sJ'G'+sC'@'B 	 	C
	%
 	x%**'+sJ'G'+sJ'G'+sC'@'+'9'9#s'C'E 	 	F	}uzzm'+sJ'G&H 	 	J	 
 	y5::-'+sF'C'+sJ'G'I(,(;(;C(@(,(>(>s(C(E 	 	F	% 	UZZC1P0R#'??3S#s#K'M(,(;(;C(@(,(>(>s(C(E 	 	F	% 	|ejj]'+sJ'G&H(,(>(>s(C'D 	 	F
	 	~

EJJ/G'+sJ'G'+sJ'G'+sJ'G'I 	 	J	& 	05::uzz5::2V'+sO'L'+sO'L'+sO'L'+sO'L'+t_'M'+sO'L'+t_'M'O 	 	P	
 	2UZZ4L'+sJ'G'+sJ'G'+sJ'G') 	 	*F	>P 3x!|5S43HI3HaSVc\3HIIuSXt7L M7L!Q#7L MMs3x)>?)>A3q6C<)>??{UZZM'+'?'+'?'A 	 	B	'$ 	/%**ejj1I'+sH'E'+sH'E'G )-(;(;C(@(,(>(>s(C(,(>(>s(C(,(;(;C(@(B	 	 	C
	" 	~r'+sF'C'+sF'C'+sD'A'+sF'C'+sI'F'+sI'F'+sI'F') 	 	*
	* 	zEJJ

+C(,S(A(,X(F(,$'m)=OO$'8OO$'m=(
 	 			&
 	}u}}emm.L'+sE'B'+sE'B'D 	 	E	9 	x%**ejj%**)M'+'9'9#t'D'+sD'A'+sD'A'+sF'C'+sJ'G'+sJ'G') )-(8(8c(B'C 	 	E	 	~

EJJ/G'+sC'E&F'+ 	 	-
	 	0"'+sC'@&A'+ 	 	-} J M?s   (bbbr?   N)r:   r;   r<   r=   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r  r>   r?   r9   r6   r   r      sq    0 68t 9"	
::CCSTS2l'ERl1\ H- H-r9   r   c                   |    \ rS rSrSrSr\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       rS
rg)!TestArrayAnalysisParallelRequiredi  zcThis is to just split out tests that need the parallel backend and
therefore serialised execution.
Fc                    ^ [         S 5       mU4S jn [        USS9" S5        g ! [         a    U R                  S5         g f = f)Nc                     X4$ rc   r?   )r   r   s     r6   swap9TestArrayAnalysisParallelRequired.test_misc.<locals>.swap  s	    &Lr9   c                    > [         R                  " U 5      n[         R                  " U 5      n[        U 5       H  nT" X   X#   5      u  X'   X#'   M     g rc   )r  r?  r   )r  rH   rI   r   r  s       r6   test_bug2537ATestArrayAnalysisParallelRequired.test_misc.<locals>.test_bug2537  sC    
A
A1X!!$-
ad r9   Tparallelr4  ztest_bug2537 raised IndexError!)r   
IndexErrorfail)r4   r  r  s     @r6   	test_misc+TestArrayAnalysisParallelRequired.test_misc  sL     
	 
		.	9-b1 	9II78	9s   & AAc                    ^ [        SS/5      nU" S5      mU4S jnU R                  [        USS9" 5       U" 5       5        g )NRowrA  rA   c                  4   > Tn U R                   nUS:X  a  SnU$ )Nr(  rA   )rA  )rrresrows     r6   	test_implKTestArrayAnalysisParallelRequired.test_global_namedtuple.<locals>.test_impl  s"    B$$CaxJr9   Tr  )r   assertEqualr   )r4   r  r  r  s      @r6   test_global_namedtuple8TestArrayAnalysisParallelRequired.test_global_namedtuple  s=    &!f	 	i$799;Gr9   c                     S nSn[        U5      n[        R                  " UR                  5      n[        R                  " UR                  5      nU R	                  [        USS9" X45      U" X55      5        g )Nc                 b    [        U R                  5       H  nX!U'   M	     UR                  5       $ rc   )r   r,   r@  )t_objXr   s      r6   r  LTestArrayAnalysisParallelRequired.test_array_T_issue_3700.<locals>.test_impl  s&    EGG_! %557Nr9   rO  Tr  )r.   r  r  r,   r  r   )r4   r  r5   r  X1X2s         r6   test_array_T_issue_37009TestArrayAnalysisParallelRequired.test_array_T_issue_3700  sa    	
  #XXeggXXeggT*55y7K	Mr9   c                    S nU R                  [        USS9" 5       U" 5       5        S n[        R                  " S5      n[	        S 5      n[        R
                  R                  [        USS9" X45      U" X45      5        g )Nc                      [        S S 5      n gr|   )slicer  s    r6   
test_impl1QTestArrayAnalysisParallelRequired.test_slice_shape_issue_3380.<locals>.test_impl1  s    dD!Ar9   Tr  c                     UnX   $ rc   r?   )rA  rH   rI   s      r6   
test_impl2QTestArrayAnalysisParallelRequired.test_slice_shape_issue_3380.<locals>.test_impl2  s    A4Kr9   r4  )r  r   r  r  r  testingassert_array_equal)r4   r  r  rA  rH   s        r6   test_slice_shape_issue_3380=TestArrayAnalysisParallelRequired.test_slice_shape_issue_3380  sk    	 	j48:JLI	 IIbM$K


%%d+A1:a3C	Er9   c                     [        SS9S 5       n[        R                  " S5      n[        R                  R	                  U" U5      UR                  U5      5        g )NTr  c                     U R                   S   n[        R                  " U5      n[        U5       HF  n[        R                  " U [        R
                  " S5      [        R
                  " S5       5      X#'   MH     U$ r  )r   r  r  r   r@  int32)datar  sumsr   s       r6   r  PTestArrayAnalysisParallelRequired.test_slice_dtype_issue_5056.<locals>.test_impl  sV    

1A88A;DAY&&bhhqk"((1+!>? Kr9   g      $@)r   r  r  r  r  py_func)r4   r  r  s      r6   test_slice_dtype_issue_5056=TestArrayAnalysisParallelRequired.test_slice_dtype_issue_5056  sM     
t		 
	 yy~


%%ioy7H7H7NOr9   c                 R    S nU R                  [        USS9" 5       U" 5       5        g)zYmake sure a global tuple with non-integer values does not cause errors
(test for #6726).
c                      [         S   n U $ r]  )GVAL)rK   s    r6   r  FTestArrayAnalysisParallelRequired.test_global_tuple.<locals>.test_impl  s    QAHr9   Tr  N)r  r   )r4   r  s     r6   r}  3TestArrayAnalysisParallelRequired.test_global_tuple  s%    	 	i$799;Gr9   r?   N)r:   r;   r<   r=   r[   _numba_parallel_test_skip_unsupportedr  r  r  r  r  r}  r>   r?   r9   r6   r  r    s     "9 9" H H M M E E" P P 	H 	Hr9   r  c                   *    \ rS rSrS r\S 5       rSrg)TestArrayAnalysisInterfacei$  c                    0 n[        [        5       H-  nUR                  S5      (       d  M  [        [        U5      X'   M/     S n[        R
                  " U5      nUR                  5        HD  u  pV[        R
                  " U5      nU R                  XWS9   U R                  Xt5        S S S 5        MF     g ! , (       d  f       MX  = f)N_analyze_op_call_c                     g rc   r?   )r4   scoper   locr   kwss         r6   
iface_stubMTestArrayAnalysisInterface.test_analyze_op_call_interface.<locals>.iface_stub,  s    r9   )fnamesig)	dirr   r   r   r   pysignaturer   subTestr  )r4   aocr  r  expectedr  r  gots           r6   test_analyze_op_call_interface9TestArrayAnalysisInterface.test_analyze_op_call_interface%  s    'E 344$]E:
 (	$$Z0IIKDA##A&CA/  / 0/  //s   B55
C	c                   ^ ^^	^
^ SSK Jn  SSKJn  UR                  U   m	SS0m
UU U
4S jmU	U4S jn X2R                  U'   [
        R                  mU4S jn[        SS	9" U5      " S
5      nT
S   nT R                  US5        T	UR                  U'   [        SS	9" U5      " S
5      nT R                  XW5        T R                  UT
S   5        g ! T	UR                  U'   f = f)Nr   )Parfor)rj   counterc                   > U R                   nUR                  S   R                  S5       HP  nUR                  UR                  5      n[        USS 5      TL d  M0  [        UR                  S   SS 5      S:X  d  MP    O   g UR                  U5      nU R                  S   nTR                  UR                  SUR                  5      5        TS==   S-  ss'   g )Nr   r   r   r   r5   r  r2   )rg   rl   r   r   r   r   r   get_assigneer   rN   rO   r   )	rj   rg   r   callee
variable_Aesr  r4   shareds	         r6   testcodeKTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.testcode?  s    $,,Gq)44V< //		:67D1U:tyy|VT:cA	 =  --d3J**1-BOOBKKZ__=>9"r9   c                 &   > T" U5        T" XX#5      $ )z7Recursive array analysis for parfor nodes.
            r?   )parforr   rh   rj   orig_parforr  s       r6   
new_parforMTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.new_parforP  s     ^$7 r9   c                    > T" U 5      n[        U 5       H+  n[        R                  " U5      nUR                  5       X'   M-     US-   $ r1   )r   r  r  r@  )r5   rA  r   rb  r  s       r6   rS  DTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.f^  s?    !HA		!A557AD # 1ur9   Tr  r4  )numba.parfors.parforr  numba.parforsrj   array_analysis_extensionsr  r  r   assertGreaterassertPreciseEqualr  )r4   r  rj   r  rS  r  executed_countr  r  r  r  r  s   `       @@@@r6   test_array_analysis_extensions9TestArrayAnalysisInterface.test_array_analysis_extensions4  s     	00$>>vFQ	#"		K?I44V<HHE %a(,C#I.N~q1 @KN44V< &q)"-.	):; @KN44V<s   AC C!r?   N)r:   r;   r<   r=   r  r  r  r>   r?   r9   r6   r  r  $  s    0 ;< ;<r9   r  __main__)G	itertoolsnumpyr  syscollectionsr   ior   numbar   r   r   
numba.corer   r	   r
   r   r   r   r   r   numba.tests.supportr   r   r   r   numba.parfors.array_analysisr   r   numba.core.compilerr   r   r   numba.core.ir_utilsr   numba.core.untyped_passesr   r   r   r   r   r   r    r!   r"   r#   numba.core.typed_passesr$   r%   r&   r'   numba.core.compiler_machineryr(   r)   numba.experimentalr*   unittestr  r  objectr.   r  r|  rD   r_   ry   r   r  r  r:   mainr?   r9   r6   <module>r     s:     
 "  & &	 	 	4 4 @ < < +J J J
B B S R '  ,  
CU[[1
23v  4 $/8 $/N U5  6$:$( :$zQ- Q-haH aHHL< L<^ zMMO r9   