
    xKgϥ                     `   d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZmZ d dlmZmZmZmZ d dlmZmZ d dlmZmZm Z  d d	l!m"Z" d d
l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m Z m5Z5 d dl6m7Z7 d dl8Z8eZ9 e7dejt                  fdejt                  fg       G d de;             Z<dZ=dZ> G d de      Z? e5dd       G d de4             Z@ G d de      ZA G d de      ZB G d d e      ZC G d! d"e      ZDeEd#k(  r e8j                          yy)$    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                       e Zd Zd Zy)ExampleClass3700c                 &    || _         |dz   | _        y N   )r+   r,   )selfns     c/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_array_analysis.py__init__zExampleClass3700.__init__+   s    Q    N)__name__
__module____qualname__r5    r6   r4   r.   r.   )   s    r6   r.   )g333333?      c                       e Zd ZdZd Zd Zy)TestEquivSetz'
    Test array_analysis.EquivSet.
    c                    t               }|j                  dd       | j                  |j                  dd             | j                  |j                  dd             |j                  dd       | j                  |j                  dd             | j	                  |j                  dd             |j                  dd       | j                  |j                  dddd             | j	                  |j                  dd             y Nabcde)r   insert_equiv
assertTrueis_equivassertFalse)r2   s1s     r4   test_insert_equivzTestEquivSet.test_insert_equiv:   s    Z
S!C-.C-.
S!C-.S#./
S!Cc378S#./r6   c                 H   t               }t               }|j                  |      }| j                  |j                                |j	                  dd       |j                  |      }| j                  |j                                |j	                  dd       |j                  |      }| j                  |j                                |j	                  dd       |j                  |      }| j                  |j                                |j	                  dd       |j	                  dd       |j                  |      }| j                  |j                  dd             | j                  |j                  dd             | j                  |j                  dd             y rA   )r   	intersectrH   is_emptyrG   rI   rJ   )r2   rK   s2rs       r4   test_intersectzTestEquivSet.test_intersectF   s-   ZZLL

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

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

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

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

3,-C-.C-.r6   N)r7   r8   r9   __doc__rL   rR   r:   r6   r4   r?   r?   5   s    
0/r6   r?   FT)analysis_onlymutates_CFGc                       e Zd ZdZd Zd Zy)ArrayAnalysisPassarray_analysis_passc                 .    t        j                  |        y N)r(   r5   )r2   s    r4   r5   zArrayAnalysisPass.__init__`   s    d#r6   c                    t        |j                  |j                  |j                  |j                        |_        |j
                  j                  |j                  j                         t        j                  |j                        }|j                          |j                  j                  |j                  j                                |j                  r3t        |j                        dkD  r|j                  |j                         y)Nr1   F)r   	typingctxfunc_irtypemap	calltypesarray_analysisrunblocksr   PostProcessorfunc_ir_copiesappendcopytest_idempotencelen)r2   state	post_procs      r4   run_passz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r6   N)r7   r8   r9   _namer5   rk   r:   r6   r4   rW   rW   \   s    !E$	r6   rW   c                   2    e Zd Zeddi dddfd       ZddZy)ArrayAnalysisTesterNc           	          |s
t               }d|_        |t        j                  j                  }|t        j                  j
                  } | |||||||      S NT)r   nrtr   
cpu_targettyping_contexttarget_context)clsargsreturn_typeflagslocalslibraryrs   rt   s           r4   mk_pipelinezArrayAnalysisTester.mk_pipelineq   s_     GE	!%00??N!&11@@N>>7D+&" 	"r6   c                 (   t         j                  j                  |      | j                  _        t               j                  | j                         d| j                  _        d| j                  _        | j                  }g |_	        ||_
        d}t        |      }|j                  t        d       |j                  t        d       |j                  t        d       |j                   j"                  sB|j                  t$        d       |j                  t&        d       |j                  t(        d	       |j                  t*        d
       |j                  t,        d       |j                   j"                  s|j                  t.        d       |j                  t0        d       |r|j                  t0        d       |j                  t2        d       |j                  t4        d       |j7                          |j9                  |       |j:                  S )z4
        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_functionri   func_idr   rk   liftedlifted_fromrd   rg   r   add_passr   r   r   rx   no_rewritesr    r   r   r#   r$   r&   rW   r'   r%   finalizera   r`   )r2   funcrg   ri   namepms         r4   compile_to_irz!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###r6   rZ   )r7   r8   r9   classmethodr{   r   r:   r6   r4   rn   rn   o   s'    +/tB d
" 
"+$r6   rn   c                   x    e Zd Zd Zg g dfdZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zed        Zy)TestArrayAnalysisc                    g }|D ]^  }t        |j                  |j                  |       t               }|j	                  |       |j                  |j                                ` | j                  t        t        |            dk(         y )N)filer1   )
r   rb   	arg_namesr   dumpre   getvaluerH   rh   set)r2   ir_listoutputsr]   outputs        r4   
compare_irzTestArrayAnalysis.compare_ir   sk    G(9(97CZFLLfL%NN6??,-	 
 	CL)Q./r6   Tc                 R   t         j                  |      }|r| j                  nd }|j                  ||      }|r|D ]  }	 |	|j                  d           |+| j                  | j                  |j                               y|D ]  }	 |	|j                  |j                         ! y)z<
        Compile the given function and get its IR.
        c                      y)Nr:   r:   )xs    r4   <lambda>z5TestArrayAnalysis._compile_and_test.<locals>.<lambda>   s    rr6   r   N)	rn   r{   r   r   
equiv_setsrH   _has_no_assertcallr]   r^   )
r2   fnarg_tysassertsequivs
idempotenttest_pipelinerg   analysisr   s
             r4   _compile_and_testz#TestArrayAnalysis._compile_and_test   s     ,77@.84??k ..r3CDX((+,  ?OOD33H4D4DEFX%%x'7'78  r6   c                    dj                  dj                  |            }|j                  j                         D ]  \  }}|j	                  d      D ]  }|j                  |j                  j                        }t        |t        j                        sC|j                  dk(  sS||j                  d   j                     }	|	j                  j                  |      s  y  y)	NzSizes of {} do not matchz, callopassert_equivr   TF)formatjoinrb   items
find_exprsget_definitionr   r   
isinstancer
   Globalrv   literal_value
startswith)
r2   r]   r^   rv   msglabelblockexprr   typs
             r4   _has_assertcallz!TestArrayAnalysis._has_assertcall   s    (//		$@#NN002LE5((F(3++DIINN;b")),N1J!$))A,"3"34C((33C8# 4 3 r6   c                    |j                   j                         D ]  \  }}|j                  d      D ]  }|j                  dk(  s|j	                  |j
                  d      }|j	                  |d      }t        |t        j                        r|j                  n|}t        |t        j                        r|j                  n|}||k(  s  y  y)Ngetattrr   shapeT)lhs_onlyF)
rb   r   r   attrr   valuer   r
   Varr   )r2   r]   r   r   r   r   yzs           r4   _has_shapecallz TestArrayAnalysis._has_shapecall   s    #NN002LE5((I(699'..tzzD.IA..q4.@A",Q"7QA",Q"7QAAv# 7 3 r6   c                    |j                   j                         D ]n  \  }}|j                  d      D ]T  }|j                  |j                  j
                        }t        |t        j                        sC|j
                  dk(  sS  y p y)Nr   r   r   FT)	rb   r   r   r   r   r   r   r
   r   )r2   r]   r   r   r   r   s         r4   r   z$TestArrayAnalysis._has_no_assertcall   sn    #NN002LE5((F(3++DIINN;b")),N1J  4 3
 r6   c                       fdS )Nc                 H    j                  j                  | |            S rZ   )rH   r   r]   r^   rv   r2   s     r4   r   z/TestArrayAnalysis.with_assert.<locals>.<lambda>   s       '48):r6   r:   r2   rv   s   ``r4   with_assertzTestArrayAnalysis.with_assert       : 	:r6   c                       fdS )Nc                 H    j                  j                  | |            S rZ   )rJ   r   r   s     r4   r   z2TestArrayAnalysis.without_assert.<locals>.<lambda>   s"    (8(8  '48):r6   r:   r   s   ``r4   without_assertz TestArrayAnalysis.without_assert   r   r6   c                      fd fdS )Nc                 |    t              }t        |dz
        D ]  }| j                  |   |dz
           r y yNr1   FTrh   rangerI   	equiv_setr3   irv   s      r4   checkz+TestArrayAnalysis.with_equiv.<locals>.check   sB    D	A1q5\ ))$q'4A;?  " r6   c                 2    j                   |             S rZ   rH   r   r   r2   s    r4   r   z.TestArrayAnalysis.with_equiv.<locals>.<lambda>       y1A!Br6   r:   r2   rv   r   s   ``@r4   
with_equivzTestArrayAnalysis.with_equiv       	 CBr6   c                      fd fdS )Nc                 |    t              }t        |dz
        D ]  }| j                  |   |dz
           s y yr   r   r   s      r4   r   z.TestArrayAnalysis.without_equiv.<locals>.check   sB    D	A1q5\%%d1gtAE{;  " r6   c                 2    j                   |             S rZ   r   r   s    r4   r   z1TestArrayAnalysis.without_equiv.<locals>.<lambda>   r   r6   r:   r   s   ``@r4   without_equivzTestArrayAnalysis.without_equiv   r   r6   c                       fdS )Nc                 F    j                  j                  |             S rZ   )rH   r   r]   sr2   r   s     r4   r   z2TestArrayAnalysis.with_shapecall.<locals>.<lambda>  s    $//$2E2Egq2Q"Rr6   r:   r2   r   s   ``r4   with_shapecallz TestArrayAnalysis.with_shapecall  s	    RRr6   c                       fdS )Nc                 F    j                  j                  |             S rZ   )rJ   r   r   s     r4   r   z5TestArrayAnalysis.without_shapecall.<locals>.<lambda>  s    $"2"243F3FwPQ3R"Sr6   r:   r   s   ``r4   without_shapecallz#TestArrayAnalysis.without_shapecall  s	    SSr6   c           
      l   d }| j                  |d| j                  dd      | j                  dd      | j                  dd      g	       d
 }| j                  |t        j                  fd        d }| j                  |t        j                  t        j                  f| j	                  dd      g       d }| j                  |t        j                  fd        d }| j                  |t        j                  fd        d }| j                  |t        j                  fd        d }| j                  |t        j                  t        j                  f| j	                  dd      | j                  dd      g       d }| j                  |t        j                  t        j                  f| j	                  dd      | j                  dd      g       d }	| j                  |	t        j                  t        j                  f| j	                  dd      | j	                  dd      g       d }
| j                  |
t        j                  f| j	                  dd      g       d }| j                  |t        j                  t        j                  f| j	                  dd      | j                  dd      g       d }| j                  |d| j                  dd      g	       d }| j                  |d| j                  ddd      g	       d }t        j                  t        j                  d d      }| j                  |t        j                  ||f      fd        d! }| j                  |t        j                  f| j                  dd      g	       t        d"ddg      fd#}| j                  |t        j                  f| j                  d$d%      g	       d& }| j                  |t        j                  t        j                  d d      fd        d' }| j                  |t        j                  t        j                  d(d      fd        d) }| j                  |t        j                  t        j                  t        j                  fd        d* }| j                  |t        j                  t        j                  fd        d+ }| j                  |t        j                  t        j                  d d      t        j                  t        j                  d d      fd        | j                  |t        j                  t        j                  d(d      t        j                  t        j                  d(d      fd        | j                  t              5 }| j                  |t        j                  t        j                  d d      t        j                  t        j                  d(d      fd        d d d        d,}| j                  |t        j                               y # 1 sw Y   1xY w)-Nc                      t        j                  d      } t        j                  d      }d}d}t        j                  ||f      }y Nr   r1   npzeros)rB   rC   mr3   rD   s        r4   test_0z1TestArrayAnalysis.test_base_cases.<locals>.test_0  s;    AAAA!Q Ar6   r:   rB   )r   rC   r1   rD   r   r1   r   c                 `    t        j                  |       }t        j                  |       }||z   S rZ   r   r3   rB   rC   s      r4   test_1z1TestArrayAnalysis.test_base_cases.<locals>.test_1  %    AAq5Lr6   )r   c                 `    t        j                  |      }t        j                  |       }||z   S rZ   r   r   r3   rB   rC   s       r4   test_2z1TestArrayAnalysis.test_base_cases.<locals>.test_2  r   r6   c                 6    t        j                  |       }|| z   S rZ   r   r3   rB   s     r4   test_3z1TestArrayAnalysis.test_base_cases.<locals>.test_3!  s    Aq5Lr6   c                 J    t        j                  |       }|dz   }|dz   }||z   S Nr1      r   r3   rB   rC   rD   s       r4   test_4z1TestArrayAnalysis.test_base_cases.<locals>.test_4&  s*    AAAAAq5Lr6   c                 l    t        j                  | | f      }| }t        j                  || f      }||z   S rZ   r   )r3   rB   r   rC   s       r4   test_5z1TestArrayAnalysis.test_base_cases.<locals>.test_5-  s4    !Q AA!Q Aq5Lr6   c                 t    t        j                  |      }t        j                  |       }||z   }||z
  }||z   S rZ   r   )r   r3   rB   rC   rE   rF   s         r4   test_6z1TestArrayAnalysis.test_base_cases.<locals>.test_64  s7    AAAAAAq5Lr6   rE   rF   c                     t        j                  |      }t        j                  |       }| dk(  r
||z   }||z   S ||z
  }||z   S N
   r   r   r3   rB   rC   rE   s        r4   test_7z1TestArrayAnalysis.test_base_cases.<locals>.test_7>  K    AABwE q5L Eq5Lr6   c                     t        j                  |      }t        j                  |       }| dk(  r
||z   }||z   S ||z   }||z   S r	  r   r  s        r4   test_8z1TestArrayAnalysis.test_base_cases.<locals>.test_8J  r  r6   c                     t        j                  |       }d}| dk  r;| dz  } t        j                  |       }|t        j                  ||z         z  }| dk  r;|S Nr   r  r1   r   onessum)r   Ar   Bs       r4   test_9z1TestArrayAnalysis.test_base_cases.<locals>.test_9V  sW    
AAa%QGGAJRVVAE]" a% Hr6   r  r  c                 2   | dz
  }|dz   }|dz   }t        j                  |      }t        j                  |      }t        j                  |      }t        j                  |       }t        j                  ||z         }	t        j                  ||z         }
|	|
z   S r0   r   r   r  )r   r3   pqrQ   r  r  CDr   ts              r4   test_10z2TestArrayAnalysis.test_base_cases.<locals>.test_10a  s|    AAAAAAAAAAq1uAq1uAq5Lr6   r  r  c                      t        j                  d      } t        j                  d      }| dd  }|d d }t        |      }t        |      }||k(  S )N   r1   r   r  rh   rB   rC   rD   rE   rF   fs         r4   test_11z2TestArrayAnalysis.test_base_cases.<locals>.test_11p  sM    
A
A!"A#2AAAAA6Mr6   r%  c                     t        j                  d      j                  d      } t        j                  d      j                  d      }| dd d d f   }|d dd d f   }|j                  d   }|j                  d   }t	        |      }||k(  S )N   )r!  r!  r1   r"  r   )r   r  reshaper   rh   )rB   rC   rD   rE   rF   r%  gs          r4   test_12z2TestArrayAnalysis.test_base_cases.<locals>.test_12{  s~    ##E*A##E*A!"Q$A#2#a%A
A
AAA6Mr6   r*  c                     | }|d   S Nr   r:   )r,   T2s     r4   test_tup_argz7TestArrayAnalysis.test_base_cases.<locals>.test_tup_arg  s    Ba5Lr6   r1   c                 x    t        j                  |       }|f}t        j                  t        |d               }|S r-  r#  )r   r  Sr  s       r4   test_arr_in_tupz:TestArrayAnalysis.test_base_cases.<locals>.test_arr_in_tup  s1    
AAAaD	"AHr6   r,   c                       | |       }|d   S r-  r:   )r3   rQ   r,   s     r4   test_namedtuplez:TestArrayAnalysis.test_base_cases.<locals>.test_namedtuple  s    !QAQ4Kr6   rQ   r3   r3   c                 H    t        j                  |       }t        |d         S r-  )r   whererh   )r  rD   s     r4   test_np_where_tup_returnzCTestArrayAnalysis.test_base_cases.<locals>.test_np_where_tup_return  s    Aqt9r6   c                 X    | j                   \  }}t        j                  ||f      }| |z   S rZ   )r   r   r  )r  r   r3   r  s       r4   
test_shapez5TestArrayAnalysis.test_base_cases.<locals>.test_shape  s)    WWFQAAq5Lr6   r  c                 ^   t        j                  |       }t        j                  |      }t        j                  |      }| |k(  rt        j                  ||z         }nd}||k7  rd}nt        j                  ||z         }d}| |k(  r ||k(  rt        j                  ||z   |z         }||z   |z   S r-  r  )	lr   r3   r  r  r  rQ   r   r  s	            r4   	test_condz4TestArrayAnalysis.test_base_cases.<locals>.test_cond  s    
A
A
AAvFF1q5MAvFF1q5MAAv6q1uqy)Aq519r6   c                     | |k(  sJ t        j                  |       }t        j                  |      }t        j                  ||z         S rZ   r  )r   r3   r  r  s       r4   test_assert_1z8TestArrayAnalysis.test_base_cases.<locals>.test_assert_1  s9    6N6
A
A66!a%= r6   c                 h    | j                   |j                   k(  sJ t        j                  | |z         S rZ   )r   r   r  )r  r  s     r4   test_assert_2z8TestArrayAnalysis.test_base_cases.<locals>.test_assert_2  s*    77agg%&%66!a%= r6   zDimension mismatch)r   r   r   intpr   r   ArrayTupler   assertRaisesAssertionErrorassertInstr	exception)r2   r   r   r   r   r  r  r  r  r  r  r  r&  r+  r/  int_arr_typr2  r4  r8  r:  r=  r?  rA  raisesr   r,   s                            @r4   test_base_casesz!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X**X3c           	         ddl m} |d        fd}| j                  |t        j                  f| j                  dd      g| j                  dd      g       fd}| j                  |t        j                  f| j                  dd      g	        |d
      d        fd}| j                  |t        j                  f| j                  ddd      | j                  dd      g| j                  dd      g       y )Nr   )stencilc                 6    d| d   | d   z   | d   z   | d   z   z  S )Ng      ?r   )r1   r   )r   r"  )r"  r   r:   rB   s    r4   kernel_1z4TestArrayAnalysis.test_stencilcall.<locals>.kernel_1  s+    1S6AcF?QtW4qw>??r6   c                 L    t        j                  | | f      } |      }||z   S rZ   r   r  r3   rB   rC   rQ  s      r4   r   z2TestArrayAnalysis.test_stencilcall.<locals>.test_1  s&    1AAq5Lr6   rB   rC   r   r   c                     t        j                  | | f      }t        j                  | dz   | dz   f      } ||       |S )Nr1   )outrS  rT  s      r4   r   z2TestArrayAnalysis.test_stencilcall.<locals>.test_2  s=    1A1QqS	"AQAHr6   r   )rD   )standard_indexingc                 $    | d   |d   z   |d   z   S )N)r   r1   r   )r   r"  r   r   r:   )rB   rC   rD   s      r4   kernel_2z4TestArrayAnalysis.test_stencilcall.<locals>.kernel_2  s    U8ai'!A$..r6   c                     t        j                  d      j                  ddd      }t        j                  d      j                  | dd      }t        j                  d      } |||      }|S )N@   r=      r  r1   )r   aranger)  r   )r3   rB   rC   uvrZ  s        r4   r   z2TestArrayAnalysis.test_stencilcall.<locals>.test_3  s[    		"%%a!,A		"%%a!,AAAq!AHr6   r`  r_  )	numba.stencils.stencilrN  r   r   rB  r   r   r   r   )r2   rN  r   r   r   rQ  rZ  s        @@r4   test_stencilcallz"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r6   c                    d }| j                  |t        j                  t        j                  f| j                  dd      | j	                  dd      gd       d }| j                  |t        j                  f| j	                  dd      | j	                  dd	      gd       d
 }| j                  |t        j                  f| j	                  dd      gd       d }| j                  |t        j                  f| j	                  dd      gd       d }| j                  |t        j                  t        j                  f| j	                  dd      | j                  dd      | j                  dd      gd       d }| j                  |t        j                  f| j	                  dd      gd       d }| j                  |t        j                  f| j                  dd      gd       d }| j                  |t        j                  f| j	                  dd      gd       d }	| j                  |	t        j                  f| j                  dd      | j                  dd      | j                  dd      | j                  dd      gd       y )Nc                     t        j                  |       }t        j                  |      }t        j                  ||z         }|d| dz
   }|d|dz
   }t        j                  ||z         }||z   S r0   r  )r   r3   r  r  r   r  r  r  s           r4   r   z,TestArrayAnalysis.test_slice.<locals>.test_1  se    AAq1uA!AaCA!AaCAq1uAq5Lr6   r  r  r  r  F)r   r   c                 p    t        j                  |       }|d| dz
   }|d| dz
   }|d| dz
   }||z   }||z   S )Nr   r<   r1   r  r   )r   r  r  r  r  Es         r4   r   z,TestArrayAnalysis.test_slice.<locals>.test_2  sN    A!AaCA!AaCA!AaCAAAq5Lr6   rf  c                     t        j                  | | f      }|d| dz
  d| dz
  f   }|d| dz
  d| dz
  f   }||z   }|S r  r   r   r  r  r  rf  s        r4   r   z,TestArrayAnalysis.test_slice.<locals>.test_3   s[    !AA!AaC%!A#+A!AaC%!A#+AAAHr6   c                 v    t        j                  | | f      }|d| dz
  d d f   }|d| dz
  d d f   }||z   }|S r  r   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_4*  sK    !AA!AaC%'
A!AaC%'
AAAHr6   c                     t        j                  |       }t        j                  |       }|d| dz
   |d| dz
   t        j                  |      }|d| dz
   }||d|dz
   ||z   S )Nr1   r   r  r   )r   r3   r  r  r  r  s         r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_54  sk    AA1Q3xAa!HA!AaCAAa!H q5Lr6   c                 v    t        j                  | | f      }|d| dz
  d df   }|d| dz
  d df   }||z   }|S )Nr   r  r"  r1   r   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_6D  sS    !AA!AaC%)A!AaC%)AAAHr6   c                 v    t        j                  | | f      }|d| dz
  ddf   }|d| dz
  ddf   }||z   }|S )Nr   r  r"  r1   r   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_7N  sS    !AA!AaC%2+A!AaC%2+AAAHr6   c                 p    t        j                  | | f      }|d | dz
  dd f   }|ddd d f   }||z   }|S )Nr  r   r1   r"  r   rh  s        r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_8X  sI    !AA$1Q3$qr'
A!B$q&	AAAHr6   c                 r    t        j                  |       }|d d }|dd  }|d dd   }||z   }|}|dz  }|||fS )Nr   r1   r"  r   )r   r  r  r  r  rf  Fs          r4   r  z,TestArrayAnalysis.test_slice.<locals>.test_9b  sX     !A"1A!"A&2b&	AAAAFAa7Nr6   r   rr  )r   r   )r   r   rB  r   r   r   r   )
r2   r   r   r   r  r  r  r  r  r  s
             r4   
test_slicez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 	 	1r6   c                    d }| j                  |t        j                  f| j                  dd      | j                  dd      | j                  dd      g       d }| j                  |t        j                  f| j	                  dd      g| j                  d      g	       d
 }| j                  |t        j                  f| j                  dd      | j                  dd      | j                  dd      g       d }| j                  |t        j                  f| j                  dd      | j                  dd      | j                  dd      g       d }| j                  |t        j                  f| j                  dd      | j                  dd      | j                  dd      | j	                  dd      g       d }| j                  |t        j                  f| j                  dd      g       d }| j                  |t        j                  f| j                  dd      | j                  dd      g| j                  d      | j                  d      g	       d }| j                  |t        j                  t        j                  dd      f| j                  ddddd      g| j                  d      | j                  d      g	       d }	| j                  |	t        j                  f| j                  dd      g| j                  d      g	       d }
| j                  |
t        j                  t        j                  f| j                  dd      | j                  dd      | j                  dd      g       d }| j                  |t        j                  t        j                  t        j                  f| j                  dd      | j                  dd      | j                  dd      | j                  dd      | j                  dd      | j                  dd      | j                  d d      g       d! }| j                  |t        j                  t        j                  f| j                  dd      | j                  dd      | j                  dd      g       d" }t        d#      d$z   }dgt        t        d      |      D cg c]  }t        |      d%z    c}z   }dgt        t        d      |      D cg c]  }t        |      d&z    c}z   }|t        t        d      |      D cg c]  }t        |      d&z    c}z  }| j                  |t        j                  f | j                  |  | j                  | g       d' }| j                  |t        j                  t        j                  f| j                  dd(      | j                  d)d*      g| j                  d      | j                  d      | j                  d)      | j                  d+      g	       d, }| j                  |d-| j                  d+d.      | j                  d/d0      | j                  d1d2      | j                  d3d4      | j                  d5d6      | j                  d7d8      | j                  d9d:      g       d; }| j                  |t        j                  t        j                  f| j                  d<d      | j                  dd=      | j                  dd>d?      | j                  d@dA      | j                  dBdCdD      g       dE }| j                  |t        j                  t        j                  f| j                  ddF      | j                  ddG      g       dH }| j                  |t        j                  t        j                  t        j                  f| j	                  ddI      | j                  ddJ      | j                  ddI      | j                  d@dK      | j                  dBdL      | j                  dCdL      g| j                  d<dM      g	       dN }| j                  |t        j                  t        j                  f| j                  ddd      gd 	       dO }| j                  |d-| j                  dd      gd 	       y c c}w c c}w c c}w )PNc                     t        j                  |       }t        j                  | | f      }t        j                  | | f      }y N)r   r   r  s       r4   
test_zerosz6TestArrayAnalysis.test_numpy_calls.<locals>.test_zerosv  3    A!Q A1v&Ar6   rB   r3   rC   r5  rD   r   c                 `    t        j                  d      }t        j                  d      }||z   S r   )r   arrayr  r   s      r4   test_0d_arrayz9TestArrayAnalysis.test_numpy_calls.<locals>.test_0d_array  s%    A
Aq5Lr6   rU  c                     t        j                  |       }t        j                  | | f      }t        j                  | | f      }y rv  rS  r  s       r4   	test_onesz5TestArrayAnalysis.test_numpy_calls.<locals>.test_ones  s2    
AAAq!f%Ar6   c                     t        j                  |       }t        j                  | | f      }t        j                  | | f      }y rv  )r   emptyr  s       r4   
test_emptyz6TestArrayAnalysis.test_numpy_calls.<locals>.test_empty  rx  r6   c                     t        j                  |       }t        j                  |       }t        j                  | |       }t        j                  | | dz         }y )N)N)r  Mr1   )r   eyer3   rB   rC   rD   rE   s        r4   test_eyez4TestArrayAnalysis.test_numpy_calls.<locals>.test_eye  s@    q	AAa Aa!e$Ar6   rE   c                 .    t        j                  |       }y rZ   )r   identityr   s     r4   test_identityz9TestArrayAnalysis.test_numpy_calls.<locals>.test_identity  s    AAr6   c                     t        j                  |       }t        j                  |      }t        j                  |      }t        j                  |d      }y )Nr1   )k)r   r  diagr  s        r4   	test_diagz5TestArrayAnalysis.test_numpy_calls.<locals>.test_diag  s8    AA
A
AQAr6   )r3   c                     t        j                  |       }t        j                  |       }t        j                  |       }t        j                  | d      }t        j
                  |       }y r0   )r   
empty_like
zeros_like	ones_like	full_likeasfortranarrayr$  s         r4   test_array_likez;TestArrayAnalysis.test_numpy_calls.<locals>.test_array_like  sK    a Aa AQAQ"A!!!$Ar6   r  r  rF   r%  c                     t        j                  | | z        }|j                  | | f      }|j                         |j                         z   S rZ   )r   r  r)  r  r   s      r4   test_reshapez8TestArrayAnalysis.test_numpy_calls.<locals>.test_reshape  s<    AA		1a&!A557QUUW$$r6   c                 j    t        j                  | |f      }|j                  }|j                         }y rZ   r   r  r,   	transposer   r3   rB   rC   rD   s        r4   test_transposez:TestArrayAnalysis.test_numpy_calls.<locals>.test_transpose  s'    AAAAr6   )r   r3   )r3   r   c                     t        j                  | ||f      }|j                  }|j                         }|j                  ddd      }|j                  d      }|j                  ddd      }|j                  d      }	y )Nr  r   r1   )r  r   r1   )r   r  r1   r  )
r   r3   r  rB   rC   rD   rE   dtrF   ets
             r4   test_transpose_3dz=TestArrayAnalysis.test_numpy_calls.<locals>.test_transpose_3d  sj    Aq	"AAAAa"AW%BAa"AW%Br6   )r   r3   r  )r  r3   r   )r  r   r3   r  )r   r  r3   r  c                 b    t        j                  | |f      }|j                  }|j                  }y rZ   )r   r  realimagr  s        r4   test_real_imag_attrz?TestArrayAnalysis.test_numpy_calls.<locals>.test_real_imag_attr  s%    AAAAr6   c                    t         j                  j                  |       }t         j                  j                  | |       }t         j                  j                  |       }t         j                  j                  | |       }t         j                  j	                  |       }t         j                  j	                  | | f      }t         j                  j	                  | | f      }t         j                  j                  |       }t         j                  j                  | | f      }	t         j                  j                  | | f      }
t         j                  j                  |       }t         j                  j                  | | f      }t         j                  j                  | | f      }t         j                  j                  |       }t         j                  j                  | | f      }t         j                  j                  | | f      }t         j                  j                  |       }t         j                  j                  | | f      }t         j                  j                  | | f      }t         j                  j                  d|       }t         j                  j                  d| | f      }t         j                  j                  d| | f      }t         j                  j                  d|       }t         j                  j                  d| | f      }t         j                  j                  d| | f      }t         j                  j                  d|       }t         j                  j                  d| | f      }t         j                  j                  d| | f      }t         j                  j                  d|       }t         j                  j                  d| | f      }t         j                  j                  d| | f      }t         j                  j                  d|       } t         j                  j                  d| | f      }!t         j                  j                  d| | f      }"t         j                  j                  d|       }#t         j                  j                  d| | f      }$t         j                  j                  d| | f      }%t         j                  j                  d|       }&t         j                  j                  d| | f      }'t         j                  j                  d| | f      }(t         j                  j                  dd|       })t         j                  j                  dd| | f      }*t         j                  j                  dd| | f      }+t         j                  j!                  dd|       },t         j                  j!                  dd| | f      }-t         j                  j!                  dd| | f      }.t         j                  j#                  dd|       }/t         j                  j#                  dd| | f      }0t         j                  j#                  dd| | f      }1t         j                  j%                  dd|       }2t         j                  j%                  dd| | f      }3t         j                  j%                  dd| | f      }4t         j                  j'                  dd|       }5t         j                  j'                  dd| | f      }6t         j                  j'                  dd| | f      }7t         j                  j)                  dd|       }8t         j                  j)                  dd| | f      }9t         j                  j)                  dd| | f      }:t         j                  j+                  dd|       };t         j                  j+                  dd| | f      }<t         j                  j+                  dd| | f      }=t         j                  j-                  dd|       }>t         j                  j-                  dd| | f      }?t         j                  j-                  dd| | f      }@t         j                  j/                  dd|       }At         j                  j/                  dd| | f      }Bt         j                  j/                  dd| | f      }Ct         j                  j1                  ddd|       }Dt         j                  j1                  ddd| | f      }Et         j                  j1                  ddd| | f      }Fy )N)sizer
  g?r   r1   rm  )r   randomrandrandnranfrandom_samplesamplestandard_normal	chisquareweibullpower	geometricexponentialpoissonrayleighnormaluniformbetabinomialr%  gamma	lognormallaplacerandint
triangular)Gr3   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s0rK   rP   t0t1t2u0u1u2v0v1v2w0w1w2x0x1x2sG                                                                          r4   test_randomz7TestArrayAnalysis.test_numpy_calls.<locals>.test_random  s   "B1%B#BA&B"BA'BaV,B((+B((!Q0B((q!f(5B!!!$B!!1a&)B!!1v!.B!!!$B!!1a&)B!!1v!.B**1-B**Aq62B**A*7B$$R+B$$R!Q0B$$Rq!f$5B""2q)B""21v.B""2QF"3BQ'BaV,B1a&1B$$S!,B$$S1a&1B$$S1v$6B&&r1-B&&rAq62B&&rA&7B""2q)B""21v.B""2QF"3B##B*B##BA/B##BaV#4B!!!Q*B!!!QA/B!!!QaV!4B""1a+B""1a!Q0B""1aq!f"5BQ*BQA/BQaV4B##Aq!,B##Aq1a&1B##Aq1v#6BS!Q'BS!aV,BS!1a&1Ba+Ba!Q0Baq!f5B$$Q1-B$$QAq62B$$QA$7B""1a+B""1a!Q0B""1aq!f"5B""1b!,B""1b1a&1B""1b1v"6B%%b!R3B%%b!R!Q8B%%b!Rq!f%=Br6   r   r1   01c                 (   t        j                  |       }t        j                  |      }t        j                  ||f      }t        j                  d|f      }t        j                  d|f      }t        j                  ||f      }t        j                  | df      }t        j                  | df      }	t        j                  ||	fd      }
t        j                  | |f      }t        j                  | |f      }t        j                  ||f      }y )Nr  r<   r1   axis)r   r  concatenate)r   r3   rB   rC   rD   rE   rF   r%  r   jr  r<  or  s                 r4   test_concatenatez<TestArrayAnalysis.test_numpy_calls.<locals>.test_concatenateD  s    
A
A1v&AAAAA1v&A AAAA1vA.AAAAA1v&Ar6   )r!  r3   r  )r   r!  r  c                     t        j                  d      } t        j                  d      }t        j                  d      }t        j                  | | f      }t        j                  ||f      }t        j                  | | f      }t        j                  ||f      }t        j                  | | f      }t        j                  ||f      }t        j                  ||f      }	y )N)r  r  r<   )r  r<   r=   )r   r  vstackhstackdstack)
r  r<  r	  r  r  rQ   r   r  r_  r`  s
             r4   test_vsd_stackz:TestArrayAnalysis.test_numpy_calls.<locals>.test_vsd_stack_  s    AA	"A		1a&!A		1a&!A		1a&!A		1a&!A		1a&!A		1a&!A		1a&!Ar6   r:   )r  r  r  )r=   r<   rQ   )r=   r   )r     r  )r1   r  r  r_  )r  r<   r  r`  )r  r<   r]  c                    t        j                  |       }t        j                  |      }t        j                  ||f      }t        j                  | |f      }t        j                  | |f      }t        j                  ||f      }t        j                  ||fd      }t        j                  ||fd      }	t        j                  ||fd      }
t        j                  ||fd      }y )Nr   r  r1   r  r"  )r   r  stack)r   r3   rB   rC   rD   rE   rF   r%  r*  hr   r  s               r4   
test_stackz6TestArrayAnalysis.test_numpy_calls.<locals>.test_stacku  s    
A
A!Q AAAAA!Q A!Qa(A!Qa(A!Qa(A!Qb)Ar6   r   )r  r   r*  )r  r   r3   r  )r   r  r3   r   r  )r   r3   r  c                 ^    t        j                  | |      }t        j                  | |d      }y r	  )r   linspacer   s       r4   test_linspacez9TestArrayAnalysis.test_numpy_calls.<locals>.test_linspace  s$    Aq!AAq"%Ar6   )2   )r
  c                    t        j                  t        j                  d      t        j                  d            }t        j                  t        j                  d      t        j                  d            }t        j                  t        j                  d      t        j                  d            }t        j                  t        j                  d      t        j                  d            }t        j                  t        j                  ||f      t        j                  ||f            }t        j                  t        j                  ||f      t        j                  | | f            }y )Nr1   r  r  )r1   r  r;   )r   dotr  )	r<  r   r3   rB   rC   rF   r  r   r  s	            r4   test_dotz4TestArrayAnalysis.test_numpy_calls.<locals>.test_dot  s    rwwqz2771:.Arwwqz2776?3A rwwv4A rwwv8Arww1vA8Arww1vA8Ar6   r   )r<   )r  r=   )r   r   r<  c                     t        j                  | |f      }t        j                  |      }||z   }t        j                  d|f      }||z   |z
  }y r0   rS  )r   r3   rB   rC   rD   rE   rF   s          r4   test_broadcastz:TestArrayAnalysis.test_numpy_calls.<locals>.test_broadcast  sG    AA
AAAAAA	Ar6   c                  h    t        j                  t              } t        j                  t              }y rZ   )r   r  GVAL2)rB   rC   s     r4   test_global_tuplez=TestArrayAnalysis.test_numpy_calls.<locals>.test_global_tuple  s    AAr6   )r   r   rB  r   r   r   r   rC  ordr   chrfloat64r   )r2   rw  r{  r}  r  r  r  r  r  r  r  r  r  r  lastr   vars1dvars2dr
  r  r  r  r  r  r!  s                            r4   test_numpy_callsz"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'6t'?'6t'?'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   c >c0c
N)r7   r8   r9   r   r   r   r   r   r   r   r   r   r   r   rL  rb  rs  r   r(  r:   r6   r4   r   r      sq    0 68t 9"	
::CCSTS2l'ERl1\ H- H-r6   r   c                   t    e Zd ZdZdZed        Zed        Zed        Zed        Z	ed        Z
ed        Zy	)
!TestArrayAnalysisParallelRequiredzkThis is to just split out tests that need the parallel backend and
    therefore serialised execution.
    Fc                     t         d        fd}	  t        |d      d       y # t        $ r | j                  d       Y y w xY w)Nc                 
    || fS rZ   r:   )r   r   s     r4   swapz9TestArrayAnalysisParallelRequired.test_misc.<locals>.swap  s    a&Lr6   c                     t        j                  |       }t        j                  |       }t        |       D ]  } ||   ||         \  ||<   ||<    y rZ   )r   r  r   )r   rB   rC   r   r-  s       r4   test_bug2537zATestArrayAnalysisParallelRequired.test_misc.<locals>.test_bug2537  sK    
A
A1X!!A$!-
!ad r6   Tparallelr
  ztest_bug2537 raised IndexError!)r   
IndexErrorfail)r2   r/  r-  s     @r4   	test_miscz+TestArrayAnalysisParallelRequired.test_misc  sN     
	 
		.	9-D-b1 	9II78	9s   ( AAc                     t        ddg      } |d      fd}| j                   t        |d              |              y )NRowr  r<   c                  2    } | j                   }|dk(  rd}|S )Nr  r<   )r  )rrresrows     r4   	test_implzKTestArrayAnalysisParallelRequired.test_global_namedtuple.<locals>.test_impl  s"    B$$CaxJr6   Tr0  )r   assertEqualr   )r2   r6  r;  r:  s      @r4   test_global_namedtuplez8TestArrayAnalysisParallelRequired.test_global_namedtuple  s@    &!f	 	7i$799;Gr6   c                     d }d}t        |      }t        j                  |j                        }t        j                  |j                        }| j	                   t        |d      ||       |||             y )Nc                 `    t        | j                        D ]  }|||<   	 |j                         S rZ   )r   r,   r  )t_objXr   s      r4   r;  zLTestArrayAnalysisParallelRequired.test_array_T_issue_3700.<locals>.test_impl  s(    EGG_! %557Nr6   r!  Tr0  )r.   r   r   r,   r<  r   )r2   r;  r3   r@  X1X2s         r4   test_array_T_issue_3700z9TestArrayAnalysisParallelRequired.test_array_T_issue_3700  sg    	
  #XXeggXXegg*DT*5"5y7K	Mr6   c                    d }| j                   t        |d              |              d }t        j                  d      }t	        d       }t        j
                  j                   t        |d      ||       |||             y )Nc                      t        d d       } yrp   )slicerP  s    r4   
test_impl1zQTestArrayAnalysisParallelRequired.test_slice_shape_issue_3380.<locals>.test_impl1  s    dD!Ar6   Tr0  c                     |}| |   S rZ   r:   )r  rB   rC   s      r4   
test_impl2zQTestArrayAnalysisParallelRequired.test_slice_shape_issue_3380.<locals>.test_impl2  s    AQ4Kr6   r
  )r<  r   r   r^  rG  testingassert_array_equal)r2   rH  rJ  r  rB   s        r4   test_slice_shape_issue_3380z=TestArrayAnalysisParallelRequired.test_slice_shape_issue_3380  st    	 	8j48:JLI	 IIbM$K


%%+Dd+Aq1:a3C	Er6   c                     t        d      d        }t        j                  d      }t        j                  j	                   ||      |j                  |             y )NTr0  c                     | j                   d   }t        j                  |      }t        |      D ]C  }t        j                  | t        j
                  d      t        j
                  d             ||<   E |S r   )r   r   r   r   r  int32)datar  sumsr   s       r4   r;  zPTestArrayAnalysisParallelRequired.test_slice_dtype_issue_5056.<locals>.test_impl  sX    

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


%%ioy7H7H7NOr6   c                 X    d }| j                   t        |d              |              y)zimake sure a global tuple with non-integer values does not cause errors
        (test for #6726).
        c                      t         d   } | S r-  )GVAL)rE   s    r4   r;  zFTestArrayAnalysisParallelRequired.test_global_tuple.<locals>.test_impl  s    QAHr6   Tr0  N)r<  r   )r2   r;  s     r4   r!  z3TestArrayAnalysisParallelRequired.test_global_tuple  s(    	 	7i$799;Gr6   N)r7   r8   r9   rS   _numba_parallel_test_skip_unsupportedr4  r=  rD  rM  rT  r!  r:   r6   r4   r*  r*    s     "9 9" H H M M E E" P P 	H 	Hr6   r*  c                   "    e Zd Zd Zed        Zy)TestArrayAnalysisInterfacec                 x   i }t        t              D ]'  }|j                  d      st        t        |      ||<   ) d }t	        j
                  |      }|j                         D ]H  \  }}t	        j
                  |      }| j                  ||      5  | j                  ||       d d d        J y # 1 sw Y   UxY w)N_analyze_op_call_c                      y rZ   r:   )r2   scoper   locrv   kwss         r4   
iface_stubzMTestArrayAnalysisInterface.test_analyze_op_call_interface.<locals>.iface_stub,  s    r6   )fnamesig)	dirr   r   r   r   pysignaturer   subTestr<  )r2   aocrc  rb  expectedr  r`  gots           r4   test_analyze_op_call_interfacez9TestArrayAnalysisInterface.test_analyze_op_call_interface%  s    'E 34$]E:E
 (	$$Z0IIKDAq##A&CA3/  h/ 0/  //s   B00B9	c                    	
 ddl m} ddlm} |j                  |   	ddi
 
fd	fd}	 ||j                  |<   t
        j                  fd}  t        d	      |      d
      }
d   } j                  |d       	|j                  |<     t        d	      |      d
      } j                  ||        j                  |
d          y # 	|j                  |<   w xY w)Nr   )Parfor)r`   counterc                    | j                   }|j                  d   j                  d      D ]L  }|j                  |j                        }t        |dd       u s.t        |j                  d   dd       dk(  sL n y |j                  |      }| j                  d   }j                  |j                  d|j                               dxx   dz  cc<   y )Nr   r   r   r   r3   rn  r1   )r]   rb   r   r   r   r   rv   get_assigneer   rH   rI   r   )	r`   r]   r   callee
variable_Aesr  r2   shareds	         r4   testcodezKTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.testcode?  s    $,,Gq)44V< //		:67D1U:tyy|VT:cA	 =  --d3J**1-BOOBKKZ__=>9"r6   c                 *     |        | |||      S )z7Recursive array analysis for parfor nodes.
            r:   )parforr   r^   r`   orig_parforru  s       r4   
new_parforzMTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.new_parforP  s#     ^$	7N r6   c                      |       }t        |       D ]*  }t        j                  |      }|j                         ||<   , |dz   S r0   )r   r   r^  r  )r3   r  r   r1  r  s       r4   r%  zDTestArrayAnalysisInterface.test_array_analysis_extensions.<locals>.f^  sA    !HA		!A557AaD # 1ur6   Tr0  r
  )numba.parfors.parforrm  numba.parforsr`   array_analysis_extensionsr   r  r   assertGreaterassertPreciseEqualr<  )r2   rm  r`   ry  r%  rj  executed_countri  r  rx  rt  ru  s   `       @@@@r4   test_array_analysis_extensionsz9TestArrayAnalysisInterface.test_array_analysis_extensions4  s     	00$>>vFQ	#"		K?IN44V<HHE )%$%a(,C#I.N~q1 @KN44V< *&4&q)"-X.	):; @KN44V<s   AC C&N)r7   r8   r9   rk  rY  r  r:   r6   r4   r[  r[  $  s    0 ;< ;<r6   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*   unittestrY  rP  objectr.   rW  r   r?   rW   rn   r   r*  r[  r7   mainr:   r6   r4   <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HMMO r6   