
    J/PhY                     @   d dl mZ d dlZd dl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mZ d dlmZ d dlmZ d dlmZ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% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0 dZ1 G d dee          Z2 edd           G d de                      Z3 G d dee          Z4 G d dee          Z5 G d dee          Z6 G d de          Z7d Z8 G d de          Z9 G d  d!e          Z:e;d"k    r ej<                     dS dS )#    )
namedtupleN)TestCaseMemoryLeakMixinskip_parfors_unsupportedcaptured_stdout)njittypedliteral_unrollprange)typeserrorsir)unittest)overload)PassManagerregister_passFunctionPassAnalysisPassCompilerBase)	FixupArgsTranslateByteCodeIRProcessingInlineClosureLikesSimplifyCFGIterLoopCanonicalizationLiteralUnroll
PreserveIR)NopythonTypeInferenceIRLegalizationNoPythonBackendPartialTypeInferenceNativeLowering)compute_cfg_from_blocksflatten_labels)_header_lead
      c                   &    e Zd Zd Zd Zd Zd ZdS )TestLiteralTupleInterpretationc                    |j         |j        d                  }|j        j        |         }|                     t          |t          j                             |D ]0}|                     t          |t          j                  d           1d S )Nr   non literal)		overloads
signaturesfndesctypemap
assertTrue
isinstancer   TupleLiteral)selffuncvarcrestysubtys         e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_mixed_tuple_unroller.pycheckz$TestLiteralTupleInterpretation.check   s    ~doa01[ %
2u{33444 	M 	MEOOJuem<<mLLLL	M 	M    c                     t           d             }|                      |            |                                           |                     |d           d S )Nc                      d} | d         S )N         rB    xs    r<   foozDTestLiteralTupleInterpretation.test_homogeneous_literal.<locals>.foo$   s    AQ4Kr>   rG   r   assertEqualpy_funcr=   r6   rH   s     r<   test_homogeneous_literalz7TestLiteralTupleInterpretation.test_homogeneous_literal#   [    		 	 
	 	...

3r>   c                     t           d             }|                      |            |                                           |                     |d           d S )Nc                      d} | d         S )N)rB   rC   rD   arD   rE   rF   s    r<   rH   zFTestLiteralTupleInterpretation.test_heterogeneous_literal.<locals>.foo-   s    AQ4Kr>   rG   rI   rL   s     r<   test_heterogeneous_literalz9TestLiteralTupleInterpretation.test_heterogeneous_literal,   rN   r>   c                 f   t           d             }|                      |            |                                           |                     t                    5 }|                     |d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                      d} | d         S )N)rB   rC   rD   rQ                 ?   rE   rF   s    r<   rH   z<TestLiteralTupleInterpretation.test_non_literal.<locals>.foo6   s    "AQ4Kr>   rG   r-   )	r   rJ   rK   assertRaisesAssertionErrorr=   assertInstr	exception)r6   rH   es      r<   test_non_literalz/TestLiteralTupleInterpretation.test_non_literal5   s    		 	 
	 	...~.. 	!!JJsC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	mS%5%566666s   A>>BBN)__name__
__module____qualname__r=   rM   rR   r]   rE   r>   r<   r+   r+      sS        M M M    
7 
7 
7 
7 
7r>   r+   Fmutates_CFGanalysis_onlyc                       e Zd ZdZd Zd ZdS )ResetTypeInforeset_the_type_informationc                 .    t          j        |            d S Nr   __init__r6   s    r<   rj   zResetTypeInfo.__init__F   s    d#####r>   c                 0    d |_         d |_        d |_        dS )NT)r1   return_type	calltypes)r6   states     r<   run_passzResetTypeInfo.run_passI   s     tr>   N)r^   r_   r`   _namerj   rp   rE   r>   r<   re   re   B   s7        (E$ $ $    r>   re   c                       e Zd ZddZ ed          Z ed          Z edd          Zd Zd Z e	j
        d          d             Zd Z e	j
        d          d	             Zd
 ZdS )TestLoopCanonicalisationFc                 6      G  fddt                     }|S )Nc                       e Zd Z fdZdS ):TestLoopCanonicalisation.get_pipeline.<locals>.NewCompilerc                    t          d          }|                    t          d           |                    t          d           |                    t          d           r|                    t
          d           r|                    t          d           |                    t          d           r|                    t          d           |                    t          d	           |                    t          d
           |                    t          d           |                    t          d           |                    t          d           |                                 |gS )Ncustom_pipelineanalyzing bytecodeprocessing IRz(inline calls to locally defined closureszdo partial typingzCanonicalise loopszSimplify the CFGzresets the type info statenopython frontendzensure IR is legalzsave IR for later inspectionnative loweringnopython mode backend)r   add_passr   r   r   r"   r   r   re   r   r    r   r#   r!   finalize)r6   pmuse_canonicaliseruse_partial_typings     r<   define_pipelineszKTestLoopCanonicalisation.get_pipeline.<locals>.NewCompiler.define_pipelinesU   sU    !233 -/CDDDL/:::.FH H H% KKK 46IJJJ$ PKK 8:NOOOK);<<< & MKK/KLLL13FGGG N,@AAA J(FGGG N,=>>>O-DEEE tr>   N)r^   r_   r`   r   )r   r   s   r<   NewCompilerrv   S   s3        ! ! ! ! ! ! ! !r>   r   r   )r   r   r   s   `` r<   get_pipelinez%TestLoopCanonicalisation.get_pipelineR   sF    #	 #	 #	 #	 #	 #	 #	 #	, #	 #	 #	H r>   Tc                      fd} | j                   \  }} | j                  \  }} fd} |||                                t          |j                  dz   t          |j                             d } ||d          }                     t          |          d            ||d          }	                     t          |	          d            ||d          }
                     t          |
          d                                |d         j        j        |
d         j        j                   |j        |	d                  j        d         }                     t          |t          j                             d	S )
- This heavily checks a simple loop transform c                     t          |           d             }d}                     ||          |                    |                     |j        |j        d                  }|j        d         }||j        fS )Npipeline_classc                     d}| D ]}||z  }|S Nr   rE   )tupaccis      r<   rH   zQTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.get_info.<locals>.foo   s&      A1HCC
r>   rA   r   preserved_irr   rJ   rK   r.   r/   metadatar0   pipelinerH   rG   r9   func_irr6   s        r<   get_infozDTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.get_info   s    ***  +* ASSVVS[[^^444=!23DmN3GDK''r>   c                     t          t          | j                            }t          t          |j                            }                    ||           d S rh   r$   r%   blocksrJ   rQ   ba_cfgb_cfgr6   s       r<   compare_cfgzGTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.compare_cfg   M    +N18,D,DEEE+N18,D,DEEEUE*****r>   rD   c                 N    fd| j                                         D             S )Nc                 ^    g | ])}t          |t          j                  r|j        k    '|*S rE   r3   r   Exprop.0rG   r   s     r<   
<listcomp>zYTestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.find_getX.<locals>.<listcomp>   ?     > > >!!!RW-->23$"** 2<**r>   rn   keysfdr   s    `r<   	find_getXzETestLoopCanonicalisation.test_simple_loop_in_depth.<locals>.find_getX   ;    > > > >r|0022 > > > >r>   getiterrB   getitemr   NLoopIgnoringCompilerLoopCanonicalisingCompilerrJ   lenrn   valuenameargsr2   r3   r   	RangeTyper6   r   ignore_loops_irignore_loops_fndesccanonicalise_loops_ircanonicalise_loops_fndescr   r   il_getiterscl_getiterscl_getitems
range_insts   `           r<   test_simple_loop_in_depthz2TestLoopCanonicalisation.test_simple_loop_in_depth~   s   	( 	( 	( 	( 	( HT.// 	-, HT455 	98	+ 	+ 	+ 	+ 	+
 	O%:;;; 	0:;;a?6@AA	C 	C 	C	> 	> 	>  i 3Y??[))1---i 99EE[))1---i 99EE[))1--- 	Q-2KN4H4MNNN /8QHMaP

:u??@@@@@r>   c                      fd} | j                   \  }} | j                  \  }} fd} |||                                t          |j                  dz   t          |j                             d } ||d          }                     t          |          d            ||d          }	                     t          |	          d            ||d          }
                     t          |
          d                                |d         j        j        |
d         j        j                   |j        |	d                  j        d         }                     t          |t          j                             d	S )
z This checks the transform, when there's no typemap, will happily
        transform a loop on something that's not tuple-like
        c                     t          |           d             }                     |            |                                           |j        |j        d                  }|j        d         }||j        fS )Nr   c                      d} dD ]}| |z  } | S Nr   rA   rE   r   r   s     r<   rH   zLTestLoopCanonicalisation.test_transform_scope.<locals>.get_info.<locals>.foo   s&    "  A1HCC
r>   r   r   r   )r   rH   r9   r   r6   s       r<   r   z?TestLoopCanonicalisation.test_transform_scope.<locals>.get_info   sz    ***  +* SSUUCKKMM222=!23DmN3GDK''r>   c                     t          t          | j                            }t          t          |j                            }                    ||           d S rh   r   r   s       r<   r   zBTestLoopCanonicalisation.test_transform_scope.<locals>.compare_cfg   r   r>   rD   c                 N    fd| j                                         D             S )Nc                 ^    g | ])}t          |t          j                  r|j        k    '|*S rE   r   r   s     r<   r   zTTestLoopCanonicalisation.test_transform_scope.<locals>.find_getX.<locals>.<listcomp>   r   r>   r   r   s    `r<   r   z@TestLoopCanonicalisation.test_transform_scope.<locals>.find_getX   r   r>   r   rB   r   r   Nr   r   s   `           r<   test_transform_scopez-TestLoopCanonicalisation.test_transform_scope   s   	( 	( 	( 	( 	( HT.// 	-, HT455 	98	+ 	+ 	+ 	+ 	+
 	O%:;;; 	0:;;a?6@AA	C 	C 	C	> 	> 	>  i 3Y??[))1---i 99EE[))1---i 99EE[))1--- 	Q-2KN4H4MNNN /8QHMaP

:u??@@@@@r>   z-Waiting for pass to be enabled for all tuplesc                      fd} | j                   \  }} | j                  \  }} fd} |||                                t          |j                  dz   t          |j                             d } ||d          }                     t          |          d            ||d          }	                     t          |	          d            ||d          }
                     t          |
          d                                |d         j        j        |
d         j        j                   |	D ]G}|j        |         j        d         }                     t          |t          j                             Hd	S )
zT This heavily checks a typed transformation only impacts tuple
        induced loopsc                     t          |           d             }d}                     ||          |                    |                     |j        |j        d                  }|j        d         }||j        fS )Nr   c                 f    d}t          d          D ]}| D ]}t          d          D ]}|dz  }|S Nr   rV   rD   rB   ranger   r   r   yjs        r<   rH   zYTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.get_info.<locals>.foo   s\    q % %A  % %!&q % %A1HCC%% 
r>   rA   r   r   r   r   s        r<   r   zLTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.get_info   s    ***  +* ASSVVS[[^^444=!23DmI.GDK''r>   c                     t          t          | j                            }t          t          |j                            }                    ||           d S rh   r   r   s       r<   r   zOTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.compare_cfg  r   r>   rD   c                 N    fd| j                                         D             S )Nc                 ^    g | ])}t          |t          j                  r|j        k    '|*S rE   r   r   s     r<   r   zaTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.find_getX.<locals>.<listcomp>  r   r>   r   r   s    `r<   r   zMTestLoopCanonicalisation.test_influence_of_typed_transform.<locals>.find_getX  r   r>   r   r   rB   r   Nr   TypedLoopCanonicalisingCompilerrJ   r   rn   r   r   r   r2   r3   r   r   r6   r   r   r   r   r   r   r   r   r   r   rG   r   s   `            r<   !test_influence_of_typed_transformz:TestLoopCanonicalisation.test_influence_of_typed_transform   s   
	( 	( 	( 	( 	(" HT.// 	-, HT9:: 	98	+ 	+ 	+ 	+ 	+
 	O%:;;; 	0:;;a?6@AA	C 	C 	C	> 	> 	>  i 3Y??[))1---i 99EE[))1---i 99EE[))1--- 	Q-2KN4H4MNNN  	E 	EA2<Q?DQGJOOJz5?CCDDDD	E 	Er>   c                      fd} | j                   \  }} | j                  \  }} fd} |||                                t          |j                  dz   t          |j                             d } ||d          }                     t          |          d            ||d          }	                     t          |	          d            ||d          }
                     t          |
          d                                |d         j        j        |
d         j        j                   |	D ]G}|j        |         j        d         }                     t          |t          j                             Hd	S )
za This heavily checks a typed transformation only impacts loops with
        literal_unroll markerc                     t          |           d             }d}                     ||          |                    |                     |j        |j        d                  }|j        d         }||j        fS )Nr   c                     d}t          d          D ]+}t          |           D ]}t          d          D ]}|dz  },|S r   )r   r
   r   s        r<   rH   zhTestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.get_info.<locals>.foo6  sd    q % %A+C00 % %!&q % %A1HCC%% 
r>   rA   r   r   r   r   s        r<   r   z[TestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.get_info5  s    ***  +* ASSVVS[[^^444=!23DmN3GDK''r>   c                     t          t          | j                            }t          t          |j                            }                    ||           d S rh   r   r   s       r<   r   z^TestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.compare_cfgK  r   r>   rD   c                 N    fd| j                                         D             S )Nc                 ^    g | ])}t          |t          j                  r|j        k    '|*S rE   r   r   s     r<   r   zpTestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.find_getX.<locals>.<listcomp>Z  r   r>   r   r   s    `r<   r   z\TestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll.<locals>.find_getXY  r   r>   r   r   rB   r   Nr   r   s   `            r<   0test_influence_of_typed_transform_literal_unrollzITestLoopCanonicalisation.test_influence_of_typed_transform_literal_unroll1  s   	( 	( 	( 	( 	(" HT.// 	-, HT9:: 	98	+ 	+ 	+ 	+ 	+
 	O%:;;; 	0:;;a?6@AA	C 	C 	C	> 	> 	>  i 3Y??[))1---i 99EE[))1---i 99EE[))1--- 	Q-2KN4H4MNNN  	E 	EA2<Q?DQGJOOJz5?CCDDDD	E 	Er>   c                       fd} | j                   \  }} | j                  \  }} fd} |||                                t          |j                  dz   t          |j                             dS )r   c                     t          |           d             }d}                     ||          |                    |                     |j        |j        d                  }|j        d         }||j        fS )Nr   c                 r    d}| D ]$}||z  }| dz   D ]}|d|z
  z  }|dk    r n|dz  }%| D ]
}||dz  z  }|S )Nr   )rV         rB   r   rC   rE   )r   r   r   r   s       r<   rH   zJTestLoopCanonicalisation.test_lots_of_loops.<locals>.get_info.<locals>.foot  s     ! !A1HC 9_ ! !q1uq55!E ! q ! !A1q5LCC
r>   rA   r   r   r   r   s        r<   r   z=TestLoopCanonicalisation.test_lots_of_loops.<locals>.get_infos  s    ***  +* ASSVVS[[^^444=!23DmN3GDK''r>   c                     t          t          | j                            }t          t          |j                            }                    ||           d S rh   r   r   s       r<   r   z@TestLoopCanonicalisation.test_lots_of_loops.<locals>.compare_cfg  r   r>   	   Nr   r   rJ   r   rn   r6   r   r   r   r   r   r   s   `      r<   test_lots_of_loopsz+TestLoopCanonicalisation.test_lots_of_loopso  s    	( 	( 	( 	( 	(0 HT.// 	-, HT455 	98	+ 	+ 	+ 	+ 	+
 	O%:;;; 	0:;;eC6@AA	C 	C 	C 	C 	Cr>   c                       fd} | j                   \  }} | j                  \  }} fd} |||                                t          |j                  dz   t          |j                             dS )z( Checks a loop appearing from a closure c                     t          |           d             }d}                     ||          |                    |                     |j        |j        d                  }|j        d         }||j        fS )Nr   c                 @    d }d}| D ]}||z  }| ||          z  }|S )Nc                 8    d}t          |           D ]}|dz  }|S Nr   rB   r   )nr   r   s      r<   barzWTestLoopCanonicalisation.test_inlined_loops.<locals>.get_info.<locals>.foo.<locals>.bar  s,    C"1XX ! !qJr>   r   rE   )r   r   r   r   s       r<   rH   zJTestLoopCanonicalisation.test_inlined_loops.<locals>.get_info.<locals>.foo  sH        " "A1HC33q66MCC
r>   rA   r   r   r   r   s        r<   r   z=TestLoopCanonicalisation.test_inlined_loops.<locals>.get_info  s    ***  +* ASSVVS[[^^444=!23DmN3GDK''r>   c                     t          t          | j                            }t          t          |j                            }                    ||           d S rh   r   r   s       r<   r   z@TestLoopCanonicalisation.test_inlined_loops.<locals>.compare_cfg  r   r>   r   Nr   r   s   `      r<   test_inlined_loopsz+TestLoopCanonicalisation.test_inlined_loops  s    	( 	( 	( 	( 	(. HT.// 	-, HT455 	98	+ 	+ 	+ 	+ 	+
 	O%:;;; 	0:;;a?6@AA	C 	C 	C 	C 	Cr>   N)F)r^   r_   r`   r   r   r   r   r   r   r   skipr   r   r   r   rE   r>   r<   rs   rs   P   s       % % % %P (<..!-d!3!3&2l4&>&>#8A 8A 8At8A 8A 8At X]BCC<E <E DC<E|<E <E <E| X]BCC,C ,C DC,C\,C ,C ,C ,C ,Cr>   rs   c                   <   e Zd Zd Zd Zd Zd Zd Z ej	        d          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d Zd Zd Zd Zd Zd Zd Zd Zd Ze d             Z!e d             Z"e d             Z#d  Z$d! Z%d" Z&d# Z'd$ Z(d%S )&TestMixedTupleUnrollc                     t           d             }d}|}|                      |d|          |                    d|                     d S )Nc                     dddd|d|z  f}d}t          t          t          |                              D ]}|||         z  }|j        dk     r|dz  } |S 	N   ffffff)@              @rV   rC   r      rB   r   r   r
   real)idxzrQ   r   r   s        r<   rH   z)TestMixedTupleUnroll.test_01.<locals>.foo  so    T2q!QU+AC3~a001122  qt8b==1HCCJr>   r   rC   r   rJ   rK   r6   rH   fks       r<   test_01zTestMixedTupleUnroll.test_01  s[    			 		 
		 QCKK1$5$566666r>   c                     t           d             }d}|}|                      |d|          |                    d|                     d S )Nc                 p    dddd|d|z  f}d}t          |          D ]}||z  }|j        dk     r|dz  } |S r   r
   r  )r  r  rG   r   rQ   s        r<   rH   z)TestMixedTupleUnroll.test_02.<locals>.foo  s[    T2q!QU+AC#A&&  q8b==1HCCJr>   r   rC   r  r  s       r<   test_02zTestMixedTupleUnroll.test_02  s]     
		 		 
		 QCKK1$5$566666r>   c                     t           d             }d}|}|                      |d|          |                    d|                     d S )Nc                     dddd|d|z  f}d|d|z  f}d}t          |          D ]1}||z  }|j        dk     r|d	z  }t          |          D ]	}||d
u z  }
 |S )Nr   r   r   rV   rC   rH   r   r   rB   Fr  )r  r  rG   r   r   rQ   ts          r<   rH   z)TestMixedTupleUnroll.test_03.<locals>.foo  s    T2q!QU+A1q5!AC#A&&  q8b==1HCC+A.. * *qEz)Jr>   r   rC   r  r  s       r<   test_03zTestMixedTupleUnroll.test_03  s[    		 	 
	 QCKK1$5$566666r>   c                    t           d             }d}t          j        |f          t          j        ||f          t          j        |||f          f}|                      ||          |                    |                     d S )Nc                 \    d}t          |           D ]}||                                z  }|S r   r
   sumr   r   rQ   s      r<   rH   z)TestMixedTupleUnroll.test_04.<locals>.foo  s6    C#C((  quuwwJr>   r(   r   nponesrJ   rK   r6   rH   r   r   s       r<   test_04zTestMixedTupleUnroll.test_04  s    		 	 
	 wt}}bgq!foorw1ay/A/ABS3;;s#3#344444r>   c                 v   t           d             }d}d}t          j        |f          t          j        ||f          t          j        |||f          t          j        ||||f          t          j        |||||f          f}|                      |||          |                    ||                     d S )Nc                    d}t          |           D ]}|dk    r||d                                         z  }&|dk    r||d                                         z  }J|dk    r||d                                         z  }n|dk    r||d                                         z  }|d	k    r||d
                                         z  }t          d          |S )Nr   rQ   r   rB   crC   r   rD   r   rV   Unreachable)r
   r  RuntimeErrortup1tup2r   rQ   s       r<   rH   z)TestMixedTupleUnroll.test_05.<locals>.foo  s    C#D)) 6 68847;;==(CC#XX47;;==(CC#XX47;;==(CC"WW47;;==(CC"WW47;;==(CC&}555Jr>   r(   )rQ   r   r  r   r   r  )r6   rH   r   r!  r"  s        r<   test_05zTestMixedTupleUnroll.test_05  s    		 	 
	" 'rw1vAq	0B0BAq!%%rw1aA'?'?AT4#++dD*A*ABBBBBr>   zneeds more clever branch prunec                     t           d             }d}|                      ||          |                    |                     d S )Nc                     d}t           j                            t          j                  }t          |           D ]#}|dk    r|                    |           ||z  }$|S )Nr   rQ   )r	   List
empty_listr   unicode_typer
   append)r   r   str_bufrQ   s       r<   rH   z)TestMixedTupleUnroll.test_06.<locals>.foo7  sd    Cj++E,>??G#C((  88NN1%%%%1HCCJr>   )rQ   r   r  )r6   rH   r   s      r<   test_06zTestMixedTupleUnroll.test_063  sT     
	 	 
	 S3;;s#3#344444r>   c                     t           d             }d}t          j        |f          t          j        ||f          dddh df}|                      ||          |                    |                     d S )Nc                 R    d}t          |           D ]}|t          |          z  }|S r   r
   r   r  s      r<   rH   z)TestMixedTupleUnroll.test_07.<locals>.fooG  s4    C#C((  s1vvJr>   r(   
ABCDEFGHJIrA   rB   rH   rC   r      rD   rV   r   r      r  r  s       r<   test_07zTestMixedTupleUnroll.test_07E  s    		 	 
	 wt}}bgq!foo|Y#___6S3;;s#3#344444r>   c                     t           d             }d }d} |d           |d           |d          f}|                      |||          |                    ||                     d S )Nc                     d}t          |           D ]O}|dk    r| |d                     z  }|dk    r| |d                     z  }6|dk    r| |d                     z  }P|S )Nr   rQ   r   rB   r  rC   r
   r   s       r<   rH   z)TestMixedTupleUnroll.test_08.<locals>.fooV  s    C#D)) % %8874799$CC#XX74799$CC#XX74799$CJr>   c                 ,      fd}t          |          S )Nc                       S rh   rE   rF   s   r<   implz7TestMixedTupleUnroll.test_08.<locals>.gen.<locals>.implc  s    r>   r   )rG   r9  s   ` r<   genz)TestMixedTupleUnroll.test_08.<locals>.genb  s(        ::r>   )rQ   r   r  r   r   )r  rB   rC   rD   r  )r6   rH   r;  r!  r"  s        r<   test_08zTestMixedTupleUnroll.test_08S  s     
		 		 
			 	 	
 /AAA'T4#++dD*A*ABBBBBr>   c                 n   t           d             }t           d             }t           d             }t           d             }d}d}|                     t          j                  5 } |||           d d d            n# 1 swxY w Y   |                     t
          t          |j                             d S )Nc                     d}d}t          |           D ]<}|dk    r|||         z  }n#|dk    r|||         z  }n|dk    r|||         z  }|dz  }=||fS )Nr   rQ   r   r  rB   r6  )r!  r"  r   r  rQ   s        r<   rH   z)TestMixedTupleUnroll.test_09.<locals>.foon  s    CC#D))  8849$CC#XX49$CC#XX49$Cq8Or>   c                      dS NrB   rE   rE   r>   r<   func1z+TestMixedTupleUnroll.test_09.<locals>.func1|      1r>   c                      dS NrC   rE   rE   r>   r<   func2z+TestMixedTupleUnroll.test_09.<locals>.func2  rB  r>   c                      dS NrD   rE   rE   r>   r<   func3z+TestMixedTupleUnroll.test_09.<locals>.func3  rB  r>   rQ   r   r  )rU   rB   rC   r   rW   r   TypingErrorrY   r&   rZ   r[   )r6   rH   rA  rE  rH  r!  r"  raisess           r<   test_09zTestMixedTupleUnroll.test_09k  s    
	 	 
	 
	 	 
	 
	 	 
	 
	 	 
	 v122 	fCdOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	lC(8$9$9:::::s   $A==BBc                     d t          d          d             }t          fd            }|                      |            |                                           d S )Nc                 L    | dk    rdS | dk    rdS | dk    rdS | dk    rd| z   S d S 	NapplerB   orangerC   bananarD      +# \rE   r   s    r<   dtz(TestMixedTupleUnroll.test_10.<locals>.dt  P    q(""q(""q*$$!E)) %$r>   alwaysinlinec                     t          | t          j                  r&| j        dk    rd }ndk    rd }n	dk    rd }|S t          | t          j                  r| j        dk    r	fd}|S d S d S )	NrQ  c                     dS r@  rE   lis    r<   r9  z9TestMixedTupleUnroll.test_10.<locals>.ol_dt.<locals>.impl       qr>   rR  c                     dS rD  rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_10.<locals>.ol_dt.<locals>.impl  r`  r>   rS  c                     dS rG  rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_10.<locals>.ol_dt.<locals>.impl  r`  r>   rT  c                     dz   S NrU  rE   r_  r   s    r<   r9  z9TestMixedTupleUnroll.test_10.<locals>.ol_dt.<locals>.impl      )E11r>   r3   r   StringLiteralliteral_valueIntegerLiteralr_  r9  r   s     @r<   ol_dtz+TestMixedTupleUnroll.test_10.<locals>.ol_dt      "e122  (G##! ! ! !h&&! ! ! !h&&! ! !B 455  (J&&2 2 2 2 2  K   &&r>   c                  L    d} t          d          D ]}|  |          z  } | S Nr   )rQ  rR  rS  rT  r6  r   r  rW  s     r<   rH   z)TestMixedTupleUnroll.test_10.<locals>.foo  s8    C#$MNN  rr!uuJr>   r   r   rJ   rK   r6   rl  rH   rW  s      @r<   test_10zTestMixedTupleUnroll.test_10      	* 	* 	* 
"X	&	&	&	  	  
'	&	 * 
	 	 	 	 
	 	.....r>   c                     t           d             }|                      |            |                                           d S )Nc                     g } d}t          t          t          |                              D ]]}||         }|dk    r|                     d           &|dk    r|                     |           B|dk    r|                     d           ^| S N)rQ  rR  rS  rQ  0rR  rS  z2.0r   r   r
   r)  rG   r  r   r  s       r<   rH   z)TestMixedTupleUnroll.test_11.<locals>.foo  s    A-A3~a001122 $ $aD<<HHSMMMM(]]HHQKKKK(]]HHUOOOHr>   r  rL   s     r<   test_11zTestMixedTupleUnroll.test_11  G    		 	 
	 	.....r>   c                     t           d             }|                      |            |                                           d S )Nc                  >   t          j                    } d}t          t          t	          |                              D ]]}||         }|dk    r|                     d           &|dk    r|                     |           B|dk    r|                     d           ^| S rw  )r	   r&  r   r   r
   r)  rz  s       r<   rH   z*TestMixedTupleUnroll.test_11a.<locals>.foo  s    
A-A3~a001122 $ $aD<<HHSMMMM(]]HHQKKKK(]]HHUOOOHr>   r  rL   s     r<   test_11azTestMixedTupleUnroll.test_11a  r|  r>   c                     t           d             }d}|}|                      |d|          |                    d|                     d S )Nc                     dddd|d|z  f}d}t          |          D ]/}||z  }|j        dk     r|dz  }t          |          D ]}||z  } |d         d	k     r|dz  }|S 
Nr   r   r   rV   rC   r   r   rB      r  r  r  rQ   r   r   rG   s         r<   rH   z)TestMixedTupleUnroll.test_12.<locals>.foo  s    T2q!QU+AC#A&&  q8b==1HCC+A.. ! !qtbyyqJr>   r   rC   r  r  s       r<   test_12zTestMixedTupleUnroll.test_12  [    		 	 
	 QCKK1$5$566666r>   c                    t           d             }d}|}|                     t          j                  5 } |d|           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 J   dddd|d|z  f}d}t          |          D ]]}||z  }|j        dk     r|dz  }n.t          |          D ]}t          |          D ]}||z  }||z  }t          |          D ]}||z  }^t          |          D ]}||z  }|d         d	k     r|dz  }|S r  r  )r  r  rQ   r   r   rG   r   s          r<   rH   z)TestMixedTupleUnroll.test_13.<locals>.foo  s    T2q!QU+AC#A&& 
 
q8b==1HCC+A.. ! !!/!2!2 % %A1HCCq'**  A1HCC#A&&  qtbyyqJr>   r   rC   (Nesting of literal_unroll is unsupportedr   rW   r   UnsupportedErrorrY   rZ   r[   r6   rH   r  r  rL  s        r<   test_13zTestMixedTupleUnroll.test_13  s    		 	 
	( v677 	6C1III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	@&*++	- 	- 	- 	- 	-   AAAc                     t           d             }|                      |            |                                           d S )Nc                  <    d} d}t          |           D ]}||z  }|S NrB   rC   rD   rV   r   r6  rG   r   rQ   s      r<   rH   z)TestMixedTupleUnroll.test_14.<locals>.foo  s3    AC#A&&  qHr>   r  rL   s     r<   test_14zTestMixedTupleUnroll.test_14  sI     
	 	 
	 	.....r>   c                 `   t           d             }d}t          j        |f          t          j        ||f          dddh df}|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 R    d}t          |           D ]}|t          |          z  }|S r   r.  r  s      r<   rH   z)TestMixedTupleUnroll.test_15.<locals>.foo'  s4    C#A&&  s1vvHr>   r   r/  rA   r0  r1  Cannot unify)	r   r  r  rW   r   rK  rY   rZ   r[   )r6   rH   r   r   rL  s        r<   test_15zTestMixedTupleUnroll.test_15$  s     
	 	 
	 wt}}bgq!foo|Y#___6 v122 	fCHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	nc&*:&;&;<<<<<s   #A;;A?A?c                     d t          d          d             }t          fd            }|                      |            |                                           d S )Nc                 F    | dk    rdS | dk    rdS | dk    rdS | dk    rdS d S )	N  rQ     r     r    drE   rV  s    r<   rW  z(TestMixedTupleUnroll.test_16.<locals>.dt:  sA    }}s$s$s$s r>   rY  rZ  c                     t          | t          j                  r0| j        }|dk    rd }n|dk    rd }n|dk    rd }n	|dk    rd }|S d S )	Nr  c                     dS NrQ   rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_16.<locals>.ol_dt.<locals>.implI      "sr>   r  c                     dS Nr   rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_16.<locals>.ol_dt.<locals>.implL  r  r>   r  c                     dS Nr  rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_16.<locals>.ol_dt.<locals>.implO  r  r>   r  c                     dS Nr  rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_16.<locals>.ol_dt.<locals>.implR  r  r>   )r3   r   rj  ri  r_  r   r9  s      r<   rl  z+TestMixedTupleUnroll.test_16.<locals>.ol_dtD  s    "e233 (D==# # # #d]]# # # #d]]# # # #d]]# # # r>   c                  `    d} d}t          | d d                   D ]}| |          z  }|S )Nr  r  r  r   rC   r6  rG   r   rQ   rW  s      r<   rH   z)TestMixedTupleUnroll.test_16.<locals>.fooV  sD    (AC#AbqbE**  rr!uuJr>   rq  rr  s      @r<   test_16zTestMixedTupleUnroll.test_167  s    	 	 	 
"X	&	&	&	 	 
'	&	" 
	 	 	 	 
	 	.....r>   c                     d t          d          d             }t          fd            }|                      |            |                                           d S )Nc                 V    | dk    rdS | dk    rdS | dk    rdS | dk    rdS | d	k    rd
S d S )Nr  rQ   r  r   r  r  r  r  r  EFFrE   rV  s    r<   rW  z(TestMixedTupleUnroll.test_17.<locals>.dtc  sO    }}s$s$s$s#u r>   rY  rZ  c                     t          | t          j                  r0| j        }|dk    rd }n|dk    rd }n|dk    rd }n	|dk    rd }|S t          | t          j                  r| j        }|d	k    rd
 }|S d S d S )Nr  c                     dS r  rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.implt  r  r>   r  c                     dS r  rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.implw  r  r>   r  c                     dS r  rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.implz  r  r>   r  c                     dS r  rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.impl}  r  r>   r  c                     dS )Nr  rE   r^  s    r<   r9  z9TestMixedTupleUnroll.test_17.<locals>.ol_dt.<locals>.impl  s    $ur>   )r3   r   rj  ri  rh  r  s      r<   rl  z+TestMixedTupleUnroll.test_17.<locals>.ol_dto  s    "e233  (D==# # # #d]]# # # #d]]# # # #d]]# # #B 344  (C<<% % %K   <r>   c                  `    d} d}t          | dd                    D ]}| |          z  }|S )N)r  r  r  r  r  rB   r6  r  s      r<   rH   z)TestMixedTupleUnroll.test_17.<locals>.foo  sD    'AC#AabbE**  rr!uuJr>   rq  rr  s      @r<   test_17zTestMixedTupleUnroll.test_17`  s    
	 
	 
	 
"X	&	&	&	  	  
'	&	 . 
	 	 	 	 
	 	.....r>   c                     t           d             }|                      |            |                                           d S )Nc                  ^    d} d}t          | d d d                   D ]}|dz  }|dk     r n|S )N)r  r  r  r  i  ip  r   rB   r  r6  )rG   countrQ   s      r<   rH   z)TestMixedTupleUnroll.test_18.<locals>.foo  sN    4AE#AdddG,,  
t88E Lr>   r  rL   s     r<   test_18zTestMixedTupleUnroll.test_18  sG    		 	 
	 	.....r>   c                     t           d             }|                      |            |                                           d S )Nc                      d} g d}ddg}||f}t          j        d          }t          j        dt           j                  }||||f}t	          |          D ]}| t          |          z  } | S )Nr   r  r(      r   dtyper  aranger  
complex128r
   r   r   l1l2r   a1a2r  s          r<   rH   z)TestMixedTupleUnroll.test_19.<locals>.foo  s    CBbBr(C2B"-000Br2r"C#C((  s1vvJr>   r  rL   s     r<   test_19zTestMixedTupleUnroll.test_19  sG    	
	 
	 

	 	.....r>   c                     t           d             }|                      |            |                                           d S )Nc                      g } t          j        d          }t          j        dt           j                  }||f}t	          |          D ])}|                     |                                           *| S )Nr  r   r  )r  r  r  r  r
   r)  r  )lr  r  r   r  s        r<   rH   z)TestMixedTupleUnroll.test_20.<locals>.foo  sl    A2B"-000Br(C#C(( " "!!!!Hr>   r  rL   s     r<   test_20zTestMixedTupleUnroll.test_20  sI     
	 	 
	 	.....r>   c                     t           d             }d}|}|                      ||          |                    |                     d S )Nc                 D    dfd}d}dD ]}| |            |z   z  }|S )Nr  gfffff7@y              @   c                  :    d} t                    D ]}| |z  } | S r   r6  r   r   r   s     r<   r   z6TestMixedTupleUnroll.test_21.<locals>.foo.<locals>.bar  /    '**  A1HCC
r>   r   r  rE   r  r   	outer_accrG   r   s       @r<   rH   z)TestMixedTupleUnroll.test_21.<locals>.foo  sS    !A    
 I! ' 'SSUUQY&		r>   r   r  r  s       r<   test_21zTestMixedTupleUnroll.test_21  sU    		 	 
	 QQ00000r>   c                    t           d             }d}|}|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 p    dddd| d| z  df}dfd}d	}t          |          D ]}| |            z  }|S )
Nr   r   r   rV   rC   rQ   r  c                  :    d} t                    D ]}| |z  } | S r   r6  r  s     r<   r   z6TestMixedTupleUnroll.test_22.<locals>.foo.<locals>.bar  r  r>   r   r6  )r  rQ   r   r   rG   r   s        @r<   rH   z)TestMixedTupleUnroll.test_22.<locals>.foo  so    T2q!QUC0A!A    
 C $A&&  ssuuJr>   r   r  r  r  s        r<   test_22zTestMixedTupleUnroll.test_22  s    $ 
	 	 
	" v677 	6CFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	@&*++	- 	- 	- 	- 	-   AAAc                    t           d             }d}|}|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 ^    dfd}d}t                    D ]}| |            |z   z  }|S )Nr  c                  :    d} t                    D ]}| |z  } | S r   r6  r  s     r<   r   z6TestMixedTupleUnroll.test_23.<locals>.foo.<locals>.bar  r  r>   r   r6  r  s       @r<   rH   z)TestMixedTupleUnroll.test_23.<locals>.foo  s]    !A    
 I $A&& ' 'SSUUQY&		r>   r   r  r  r  s        r<   test_23zTestMixedTupleUnroll.test_23  s    		 	 
	" v677 	6CFFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	@&*++	- 	- 	- 	- 	-r  c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   d}|                     |t          |j                             d S )Nc                  H    t          d          D ]} t          |            d S )NABCDEr
   printrF   s    r<   rH   z)TestMixedTupleUnroll.test_24.<locals>.foo   s0    #G,,  a r>   z7argument should be a tuple or a list of constant valuesr  )r6   rH   rL  msgs       r<   test_24zTestMixedTupleUnroll.test_24  s    		 	 
	 v677 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Hc3v/0011111   AAAc                     t           d             }|                      |            |                                           d S )Nc                      t          ddddgdf          } | }|}g }|D ]$}|                    t          |                     %|S )NrA   )               @r   rB   rC   xyz)r
   r)  r   )valalias1alias2lensrG   s        r<   rH   z)TestMixedTupleUnroll.test_25.<locals>.foo-  sZ     )X1vu!EFFCFFD $ $CFF####Kr>   r  rL   s     r<   test_25zTestMixedTupleUnroll.test_25+  sG    		 	 
	 	.....r>   c                     t           d             }d}|}|                      ||          |                    |                     d S )Nc                     dddd| d| z  f}d}d}d}d}t          j        t          |          ft           j        	          }t	          |          D ]}||z  }|||<   |d
z  }||z   }|||||fS )Nr   r   r   rV   rC   r   6      r  rB   )r  emptyr   r  r
   )	r  rQ   r   r  	untouched	read_onlymutatedrG   escapes	            r<   rH   z)TestMixedTupleUnroll.test_26.<locals>.foo>  s    T2q!QU+ACEIIhAy>>>G#A&& + +q!"
*3	9g==r>   r   )r   assertPreciseEqualrK   r  s       r<   test_26zTestMixedTupleUnroll.test_269  sW    
 
	> 	> 
	> AA77777r>   c                     t          d          d             }d}|}|                      ||          |                    |                     d S )NTparallelc                 r    dddd| d| z  f}d}t          |          D ]}t          d          D ]}|dz  }|S )	Nr   r   r   rV   rC   r   r(   rB   r
   r   r  rQ   r   rG   r  s        r<   rH   z)TestMixedTupleUnroll.test_27.<locals>.fooU  ^    T2q!QU+AC#A&&    A1HCCJr>   r   r  r  s       r<   test_27zTestMixedTupleUnroll.test_27R  sc     
t				 	 
		 QQ00000r>   c                     t          d          d             }d}|}t          j                             ||          |                    |                     d S )NTr  c                 r    dddd| d| z  f}d}t          |          D ]}t          d          D ]}||z  }|S Nr   r   r   rV   rC   r   r(   r  r  s        r<   rH   z)TestMixedTupleUnroll.test_28.<locals>.foof  r  r>   r   )r   r  testingassert_allcloserK   r  s       r<   test_28zTestMixedTupleUnroll.test_28c  sg     
t				 	 
		  	
""33q663;;q>>:::::r>   c                     t          d          d             }d}|}|                      ||          |                    |                     d S )NTr  c                 r    dddd| d| z  f}d}t          d          D ]}t          |          D ]}||z  }|S r  )r   r
   )r  rQ   r   r  rG   s        r<   rH   z)TestMixedTupleUnroll.test_29.<locals>.fooy  s^    T2q!QU+ACBZZ  '**  A1HCCJr>   r   r  r  s       r<   test_29zTestMixedTupleUnroll.test_29u  sc     
t				 	 
		 QQ00000r>   c                     t           d             }|                      |            |                                           d S )Nc                  F    dfd} d t          | d          D             S )N  c                 H    d}d}t          |          D ]
}||z   z  }|| fS Nr   r   r   r   rV   r6  r  r   rQ   rG   consts       r<   r   z6TestMixedTupleUnroll.test_30.<locals>.foo.<locals>.bar  =    %'** % %A1u9$CCAvr>   c                     g | ]}|S rE   rE   r   rG   s     r<   r   z=TestMixedTupleUnroll.test_30.<locals>.foo.<locals>.<listcomp>  s    000!A000r>   rB   rC   mapr   r  s    @r<   rH   z)TestMixedTupleUnroll.test_30.<locals>.foo  sA    E     10s3//0000r>   r  rL   s     r<   test_30zTestMixedTupleUnroll.test_30  sG    			1 		1 
		1 	.....r>   c                 R   t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     t
          t          |j                             |                     dt          |j                             d S )Nc                  F    dfd} d t          | d          D             S )Nr  c                 H    d}d}t          |          D ]
}||z   z  }|| fS r  r6  r  s       r<   r   z6TestMixedTupleUnroll.test_31.<locals>.foo.<locals>.bar  r  r>   c                     g | ]}|S rE   rE   r  s     r<   r   z=TestMixedTupleUnroll.test_31.<locals>.foo.<locals>.<listcomp>  s    111!A111r>   )rB   r  r  r   s    @r<   rH   z)TestMixedTupleUnroll.test_31.<locals>.foo  sA    E     21s3001111r>   ziprJ  r6   rH   rL  s      r<   test_31zTestMixedTupleUnroll.test_31  s     
		2 		2 
		2 v122 	fCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	lC(8$9$9:::eS!12233333r  c                     t           d             t           fd            }|                      |            |                                           d S )Nc              3   6   K   t          |           D ]}|V  d S rh   r6  rQ   rG   s     r<   r;  z)TestMixedTupleUnroll.test_32.<locals>.gen  s2      #A&&   r>   c                  .    d   d          D             S )Nc                     g | ]}|S rE   rE   r  s     r<   r   z=TestMixedTupleUnroll.test_32.<locals>.foo.<locals>.<listcomp>  s    222!A222r>   rB   gffffff@y              @rE   )r;  s   r<   rH   z)TestMixedTupleUnroll.test_32.<locals>.foo  s!    22ss=112222r>   r  )r6   rH   r;  s     @r<   test_32zTestMixedTupleUnroll.test_32  sm    		 	 
	 
	3 	3 	3 	3 
	3 	.....r>   c                     t           d             }d } ||          } ||j                  j        }|                      |             |                       d S )Nc              3   $   K    | |          V  d S rh   rE   )r7   args     r<   consumerz.TestMixedTupleUnroll.test_33.<locals>.consumer  s      $s))OOOOOr>   c                 ,     t            fd            }|S )Nc                  6    d } d  | d          D             S )Nc              3   6   K   t          |           D ]}|V  d S rh   r6  r+  s     r<   r;  zCTestMixedTupleUnroll.test_33.<locals>.get.<locals>.foo.<locals>.gen  s2      +A..       r>   c                 ,    g | ]}t          |          S rE   )nextr  s     r<   r   zJTestMixedTupleUnroll.test_33.<locals>.get.<locals>.foo.<locals>.<listcomp>  s    BBBAQBBBr>   r.  rE   )r;  conss    r<   rH   z6TestMixedTupleUnroll.test_33.<locals>.get.<locals>.foo  s5          CBc=)A)ABBBBr>   r:  )r9  rH   s   ` r<   getz)TestMixedTupleUnroll.test_33.<locals>.get  s2    C C C C TC
 Jr>   )r   rK   rJ   )r6   r3  r:  cfuncpyfuncs        r<   test_33zTestMixedTupleUnroll.test_33  sx     
	 	 
		 	 	 HX%&&.&&((+++++r>   c                 H   t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             |                     dt          |j                             d S )Nc                      d} g d}ddg}| dz
  dk    r||f}n:t          j        d          }t          j        dt           j                  }||||f}t	          |          D ]}| t          |          z  } | S )	Nr   r  r(   r  rC   rD   r   r  r  r  s          r<   rH   z)TestMixedTupleUnroll.test_34.<locals>.foo  s    CBbBQw{{2hYr]]WQbm4442r2&#C((  s1vvJr>   zInvalid use ofz&found multiple definitions of variabler  r'  s      r<   test_34zTestMixedTupleUnroll.test_34  s    		 	 
	 v677 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	&F,<(=(=>>>>&*++	- 	- 	- 	- 	-r  N))r^   r_   r`   r  r  r  r  r#  r   r   r+  r3  r<  rM  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r!  r(  r/  r=  r@  rE   r>   r<   r   r     sn       7 7 7&7 7 7(7 7 7,5 5 5C C C4 X]3445 5 545"5 5 5C C C0#; #; #;J*/ */ */X/ / /$/ / /$7 7 7.- - -@/ / /= = =&'/ '/ '/R// // //b/ / // / /"/ / /1 1 1*+- +- +-Z- - -:2 2 2/ / /8 8 82 1 1 1  ; ; ;" 1 1 1"/ / / 4 4 4,/ / /, , ,,- - - - -r>   r   c                   b    e 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d Zd Zd ZdS )TestConstListUnrollc                     t           d             }|                      |            |                                           d S )Nc                      g d} d}t          t          t          |                               D ]}|| |         z  }|j        dk     r|dz  } |S Nr  r   r   rB   r   )rQ   r   r   s      r<   rH   z(TestConstListUnroll.test_01.<locals>.foo  sd    !!!AC3~a001122  qt8b==1HCCJr>   r  rL   s     r<   r  zTestConstListUnroll.test_01  sG    			 		 
		 	.....r>   c                     t           d             }|                      |            |                                           d S )Nc                  b    g d} d}t          |           D ]}||z  }|j        dk     r|dz  } |S rE  r  r  s      r<   rH   z(TestConstListUnroll.test_02.<locals>.foo  sP    !!!AC#A&&  q8b==1HCCJr>   r  rL   s     r<   r  zTestConstListUnroll.test_02  sI     
		 		 
		 	.....r>   c                     t           d             }|                      |            |                                           d S )Nc                      g d} ddg}d}t          |           D ]1}||z  }|j        dk     r|dz  }t          |          D ]	}||du z  }
 |S )Nr  rH   r  r   r   rB   Fr  rG   r   r   rQ   r  s        r<   rH   z(TestConstListUnroll.test_03.<locals>.foo  s    !!!A
AC#A&&  q8b==1HCC+A.. * *qEz)Jr>   r  rL   s     r<   r  zTestConstListUnroll.test_03  G    		 	 
	 	.....r>   c                     t           d             }|                      |            |                                           d S )Nc                      g d} d}d}t          |           D ]1}||z  }|j        dk     r|dz  }t          |          D ]	}||du z  }
 |S )Nr  )rH   r  r   r   rB   Fr  rJ  s        r<   rH   z(TestConstListUnroll.test_04.<locals>.foo!  s|    !!!AAC#A&&  q8b==1HCC+A.. * *qEz)Jr>   r  rL   s     r<   r  zTestConstListUnroll.test_04  rK  r>   c                 4   t           d             }d}t          j        d          t          j        d          g}t          j        |f          t          j        ||f          t          j        |||f          t          j        ||||f          t          j        |||||f          f}|                     t
          j                  5 } |||           d d d            n# 1 swxY w Y   d}|                     |t          |j	                             d S )Nc                     d}t          |           D ]+}|d         dk    r||d                                         z  },|S r   r  r   s       r<   rH   z(TestConstListUnroll.test_05.<locals>.foo4  sG    C#D)) ) )Q4!8847;;==(CJr>   r(   z6Invalid use of literal_unroll with a function argument)
r   r  zerosr  rW   r   r  rY   rZ   r[   )r6   rH   r   r!  r"  rL  r  s          r<   r#  zTestConstListUnroll.test_052  sC   		 	 
	 bhrll+rw1vAq	0B0BAq!%%rw1aA'?'?A v677 	6CdOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Gc3v/0011111s   
C##C'*C'c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                      d} t          j        | f          t          j        | | f          dddh dg}d}t          |          D ]}|t          |          z  }|S )Nr(   r/  rA   r0  r1  r   )r  r  r
   r   )r   r   r   rQ   s       r<   rH   z(TestConstListUnroll.test_06.<locals>.fooI  sh    A7A4=="'1a&//<':CC#C((  s1vvJr>   z&Found non-constant value at position 0r  r'  s      r<   r+  zTestConstListUnroll.test_06G  s    		 	 
	 v677 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	>&*++	- 	- 	- 	- 	-r  c                     d t          d          d             }t          fd            }|                      |            |                                           d S )Nc                 L    | dk    rdS | dk    rdS | dk    rdS | dk    rd| z   S d S rP  rE   rV  s    r<   rW  z&TestConstListUnroll.test_7.<locals>.dt\  rX  r>   rY  rZ  c                     t          | t          j                  r&| j        dk    rd }ndk    rd }n	dk    rd }|S t          | t          j                  r| j        dk    r	fd}|S d S d S )	NrQ  c                     dS r@  rE   r^  s    r<   r9  z7TestConstListUnroll.test_7.<locals>.ol_dt.<locals>.implk  r`  r>   rR  c                     dS rD  rE   r^  s    r<   r9  z7TestConstListUnroll.test_7.<locals>.ol_dt.<locals>.impln  r`  r>   rS  c                     dS rG  rE   r^  s    r<   r9  z7TestConstListUnroll.test_7.<locals>.ol_dt.<locals>.implq  r`  r>   rT  c                     dz   S rd  rE   re  s    r<   r9  z7TestConstListUnroll.test_7.<locals>.ol_dt.<locals>.implw  rf  r>   rg  rk  s     @r<   rl  z)TestConstListUnroll.test_7.<locals>.ol_dtf  rm  r>   c                  P    d} t          g d          D ]}|  |          z  } | S ro  r6  rp  s     r<   rH   z'TestConstListUnroll.test_7.<locals>.foo|  s>    C#$M$M$MNN  rr!uuJr>   rq  rr  s      @r<   test_7zTestConstListUnroll.test_7Y  rt  r>   c                     t           d             }|                      |            |                                           d S )Nc                      g } g d}t          t          t          |                              D ]]}||         }|dk    r|                     d           &|dk    r|                     |           B|dk    r|                     d           ^| S rw  ry  rz  s       r<   rH   z'TestConstListUnroll.test_8.<locals>.foo  s    A---A3~a001122 $ $aD<<HHSMMMM(]]HHQKKKK(]]HHUOOOHr>   r  rL   s     r<   test_8zTestConstListUnroll.test_8  r|  r>   c                     t           d             }d}|}|                      |d|          |                    d|                     d S )Nc                     g d}d}t          |          D ]/}||z  }|j        dk     r|dz  }t          |          D ]}||z  } |d         dk     r|dz  }|S )Nr  r   r   rB   r  rC   r  r  s         r<   rH   z'TestConstListUnroll.test_9.<locals>.foo  s    !!!AC#A&&  q8b==1HCC+A.. ! !qtbyyqJr>   r   rC   r  r  s       r<   test_9zTestConstListUnroll.test_9  r  r>   c                    t           d             }d}|}|                     t          j                  5 } |d|           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 R   dddd|d|z  f}g d}d}t          |          D ]]}||z  }|j        dk     r|d	z  }n.t          |          D ]}t          |          D ]}||z  }||z  }t          |          D ]}||z  }^t          |          D ]}||z  }|d         d
k     r|dz  }|S )Nr   r   r   rV   rC   r  r   r   rB   r  r  )r  r  rQ   r   r   r   rG   r   s           r<   rH   z(TestConstListUnroll.test_10.<locals>.foo  s   T2q!QU+A!!!AC#A&& 
 
q8b==1HCC+A.. ! !!/!2!2 % %A1HCCq'**  A1HCC#A&&  qtbyyqJr>   r   rC   r  r  r  s        r<   rs  zTestConstListUnroll.test_10  s    		 	 
	* v677 	6C1III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	@&*++	- 	- 	- 	- 	-r  c                     t           d             }|                      |            |                                           d S )Nc                  @    g d} d}t          |           D ]}||z  }|S r  r6  r  s      r<   rH   z(TestConstListUnroll.test_11.<locals>.foo  s7    AC#A&&  qHr>   r  rL   s     r<   r{  zTestConstListUnroll.test_11  sI     
	 	 
	 	.....r>   c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                  Z    d} g d}t          |          D ]}| t          |          z  } |S )Nr   )rB   rC   rQ   )r
   bool)r   rG   rQ   s      r<   rH   z(TestConstListUnroll.test_12.<locals>.foo  s=    CA#A&&  tAwwHr>   r  r   rW   r   rK  rY   rZ   r[   r'  s      r<   r  zTestConstListUnroll.test_12  s    		 	 
	 v122 	fCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	nc&*:&;&;<<<<<r  c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                  P    g d} d}t          | d d                   D ]}||z  }|S )Nr  r   rC   r6  r  s      r<   rH   z(TestConstListUnroll.test_13.<locals>.foo  sA    (((AC#AbqbE**  qJr>   zInvalid use of literal_unrollr  r'  s      r<   r  zTestConstListUnroll.test_13  s     
	 	 
	 v677 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	5s6;K7L7LMMMMMr  c                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                  j    g d} d}t          |           D ]}||z  }|                     d           |S )Nr  r   r(   )r
   r)  r  s      r<   rH   z(TestConstListUnroll.test_14.<locals>.foo  sH    (((AC#A&&  qHHRLLLJr>   z(Unknown attribute 'append' of type Tupleri  r'  s      r<   r  zTestConstListUnroll.test_14  s     
	 	 
	 v122 	fCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	@&*++	- 	- 	- 	- 	-r  N)r^   r_   r`   r  r  r  r  r#  r+  r[  r^  ra  rs  r{  r  r  r  rE   r>   r<   rB  rB    s        / / / / / /"/ / /&/ / /&2 2 2*- - -$*/ */ */X/ / /$7 7 7.- - -B/ / /= = =N N N - - - - -r>   rB  c                       e Zd Zd Zd Z ej        d          d             Z ej        d          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d Zd Zd Zd Zd ZdS )TestMorec                     t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                  >    d} d}t          | |           D ]}||z  }|S )N)r(   r  r   r6  rG   rrQ   s      r<   rH   z2TestMore.test_invalid_use_of_unroller.<locals>.foo  s5    AA#Aq))  QHr>   z*literal_unroll takes one argument, found 2r  r'  s      r<   test_invalid_use_of_unrollerz%TestMore.test_invalid_use_of_unroller  s    		 	 
	 v677 	6CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	8 !!	
 	
 	
 	
 	
r  c                     t           d             }|                     t          j                  5 } |d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                 @    d| g}d}t          |          D ]}||z  }|S Nr(   r   r6  r   rG   rs  rQ   s       r<   rH   z,TestMore.test_non_constant_list.<locals>.foo"  7    QAA#A&&  QHr>   r(   zKFound non-constant value at position 1 in a list argument to literal_unrollr  r'  s      r<   test_non_constant_listzTestMore.test_non_constant_list   s    		 	 
	 v677 	6CGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !!	
 	
 	
 	
 	
s   AAAz!numba.literally not supported yetc                     ddl m t          fd             d           t          fd            } |             d S )Nr   )	literallyc                 T    d |           g}d}t          |          D ]}||z  }|S rw  r6  )r   rG   rs  rQ   r|  s       r<   rH   z2TestMore.test_literally_constant_list.<locals>.foo7  sA    YYq\\"AA#A&&  QHr>   r   c                        d          S Nr   rE   rH   s   r<   r   z2TestMore.test_literally_constant_list.<locals>.barC      3r77Nr>   )numbar|  r   )r6   r   rH   r|  s     @@r<   test_literally_constant_listz%TestMore.test_literally_constant_list2  s~     	$#####		 	 	 	 
	 	B		 	 	 	 
	
 	r>   z8inlining of foo doesn't have const prop so y isn't constc                     t          d          d             t           fd            }|                      |            d           d S )NrY  rZ  c                 @    d| g}d}t          |          D ]}||z  }|S rw  r6  rx  s       r<   rH   z.TestMore.test_inlined_unroll_list.<locals>.fooM  ry  r>   c                        d          S r  rE   r  s   r<   r   z.TestMore.test_inlined_unroll_list.<locals>.barU  r  r>      )r   rJ   )r6   r   rH   s     @r<   test_inlined_unroll_listz!TestMore.test_inlined_unroll_listK  sq    	X				 	 
		 
	 	 	 	 
	 	(((((r>   c                     t           d             }|                      |d          |                    d                     |                      |d          |                    d                     d S )Nc                 @    d| f}d}t          |          D ]}||z  }|S rw  r6  rx  s       r<   rH   z+TestMore.test_unroll_tuple_arg.<locals>.foo\  ry  r>   r   333333?r  rL   s     r<   test_unroll_tuple_argzTestMore.test_unroll_tuple_arg[  su    		 	 
	 	R#++b//222S3;;s#3#344444r>   c                     t           d             }|                      |d          |                    d                     |                      |d          |                    d                     d S )Nc                 8    d}t          |           D ]}||z  }|S r   r6  rr  s      r<   rH   z,TestMore.test_unroll_tuple_arg2.<locals>.fooh  s.    A#A&&  QHr>   )r   r  r  rL   s     r<   test_unroll_tuple_arg2zTestMore.test_unroll_tuple_arg2g  sw    		 	 
	 	YY)?)?@@@YY)?)?@@@@@r>   c                     t           d             }|                      |            |                                           d S )Nc                  P    d} d}t          |           D ]}|}|}|||z   |z   z  }|S )Nr(   r  r   r6  )rG   outr   r   r  s        r<   rH   z-TestMore.test_unroll_tuple_alias.<locals>.foos  sF    AC#A&& ! !q1uqy Jr>   r  rL   s     r<   test_unroll_tuple_aliasz TestMore.test_unroll_tuple_aliasr  sG    		 	 
	 	.....r>   c                 L   t           d             }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             d}|                     t          |j                  |           d S )Nc                  F    d} d}t          |           D ]}|D ]}||z  }|S )N)r  )rU   g      @r   r6  )rG   r  r   r   s       r<   rH   z.TestMore.test_unroll_tuple_nested.<locals>.foo  sG    %AC#A&&    A1HCCJr>   r   z#.*Tuple\(int[0-9][0-9], float64\).*)r   rW   r   rK  rY   rZ   r[   assertRegex)r6   rH   rL  res       r<   test_unroll_tuple_nestedz!TestMore.test_unroll_tuple_nested  s    		 	 
	 v122 	fCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	iV%5!6!67773V-..33333r  c                    t           d             }t                      5 } |             d d d            n# 1 swxY w Y   |                                                                }|                     |g d           d S )Nc                      i } d| d<   d| d<   i }d|d<   d|d<   t          | |f          D ],}|                                D ]\  }}t          ||           -d S )	NrB   rQ   rC   r   r  rD   r  rV   )r
   itemsr  )rG   r   itr  vs        r<   rH   z/TestMore.test_unroll_tuple_of_dict.<locals>.foo  s    AAcFAcFAAaDAaD$aV,,    HHJJ    DAq!QKKKK    r>   )za 1zb 2z3 cz4 d)r   r   getvalue
splitlinesrJ   )r6   rH   stdoutliness       r<   test_unroll_tuple_of_dictz"TestMore.test_unroll_tuple_of_dict  s    	
	  
	  

	   	&CEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!!,,..(((	
 	
 	
 	
 	
s   6::c                     t          dg d          t          fd            }|                      |            |                                           d S )NABCrI  c                  T     ddd          } d}t          |           D ]}||z  }|S )NrB   r  333333@r   r6  abcr  r   r  s      r<   rH   z-TestMore.test_unroll_named_tuple.<locals>.foo  s@    #aS//CC#C((  qJr>   r   r   rJ   rK   r6   rH   r  s     @r<   test_unroll_named_tuplez TestMore.test_unroll_named_tuple  e    00		 	 	 	 
	 	.....r>   c                     t          dg d          }t          d             } |ddd          }|                      ||          |                    |                     d S )Nr  rI  c                 8    d}t          |           D ]}||z  }|S r   r6  rG   r  r   s      r<   rH   z1TestMore.test_unroll_named_tuple_arg.<locals>.foo  .    C#A&&  qJr>   rB   r  r  r  r6   r  rH   r  s       r<   test_unroll_named_tuple_argz$TestMore.test_unroll_named_tuple_arg  sq    00		 	 
	 c!RooS3;;s#3#344444r>   c                     t          dg d          t          fd            }|                      |            |                                           d S )Nr  rI  c                  T     ddd          } d}t          |           D ]}||z  }|S )NrB   rC   rD   r   r6  r  s      r<   rH   z0TestMore.test_unroll_named_unituple.<locals>.foo  s@    #aA,,CC#C((  qJr>   r  r  s     @r<   test_unroll_named_unituplez#TestMore.test_unroll_named_unituple  r  r>   c                     t          dg d          }t          d             } |ddd          }|                      ||          |                    |                     d S )Nr  rI  c                 8    d}t          |           D ]}||z  }|S r   r6  r  s      r<   rH   z4TestMore.test_unroll_named_unituple_arg.<locals>.foo  r  r>   rB   rC   rD   r  r  s       r<   test_unroll_named_unituple_argz'TestMore.test_unroll_named_unituple_arg  sq    00		 	 
	 c!QllS3;;s#3#344444r>   c                     t           d             }|                      |            |                                           d S )Nc                  B    d} t          t                    D ]}| |z  } | S r   )r
   	_X_GLOBAL)r  r   s     r<   rH   z.TestMore.test_unroll_global_tuple.<locals>.foo  s.    C#I..  qJr>   r  rL   s     r<   test_unroll_global_tuplez!TestMore.test_unroll_global_tuple  sG    		 	 
	 	.....r>   c                     dt           fd            }|                      |            |                                           d S )Nr'   c                  :    d} t                    D ]}| |z  } | S r   r6  )r  r   rG   s     r<   rH   z/TestMore.test_unroll_freevar_tuple.<locals>.foo  s/    C#A&&  qJr>   r  )r6   rH   rG   s     @r<   test_unroll_freevar_tuplez"TestMore.test_unroll_freevar_tuple  sW    		 	 	 	 
	 	.....r>   c                     t           d             }t           d             }||ft           fd            }|                      |            |                                           d S )Nc                      dS r@  rE   rE   r>   r<   rQ   z.TestMore.test_unroll_function_tuple.<locals>.a  rB  r>   c                      dS rD  rE   rE   r>   r<   r   z.TestMore.test_unroll_function_tuple.<locals>.b  rB  r>   c                  J    d} t                    D ]}|  |            z  } | S r   r6  )r  r  rG   s     r<   rH   z0TestMore.test_unroll_function_tuple.<locals>.foo   s5    C#A&&  qqss
Jr>   r  )r6   rQ   r   rH   rG   s       @r<   test_unroll_function_tuplez#TestMore.test_unroll_function_tuple  s    		 	 
	 
	 	 
	 F		 	 	 	 
	 	.....r>   c                    t           d             }d t          d          D             }t                      5  |                      ||          |                    |                     d d d            n# 1 swxY w Y   t                      5 } ||           d d d            n# 1 swxY w Y   |                                                                }|                     |g d           d S )Nc                     d}d}d | D             }d}t          |          D ]!}|||         z  }|dz  }t          |           "||fS )Nr   c                     g | ]}|S rE   rE   )r   rQ   s     r<   r   zCTestMore.test_unroll_indexing_list.<locals>.foo.<locals>.<listcomp>  s    +++1+++r>   )rQ      gq=
ףp?NrB   r  )contr   r   normal_listheter_tupleitems         r<   rH   z/TestMore.test_unroll_indexing_list.<locals>.foo  sh    AC++d+++K/K&{33  {1~%Qdc6Mr>   c                     g | ]}|S rE   rE   )r   r   s     r<   r   z6TestMore.test_unroll_indexing_list.<locals>.<listcomp>  s    $$$a$$$r>   rV   )rQ   25z0.23None)r   r   r   rJ   rK   r  r  )r6   rH   datar  r  s        r<   test_unroll_indexing_listz"TestMore.test_unroll_indexing_list	  sy   			 		 
		 %$588$$$  	; 	;SSYYD(9(9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;  	&CIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!!,,..'''	
 	
 	
 	
 	
s#   3A77A;>A;B((B,/B,c                    t          j        d          t          j        d          t          j        d          fddlm t          fd            }|                      |            |                                           d S )N)rB   )rB   rB   )rB   rB   rB   r   r6  c                  <    d}            D ]}| |j         z  } | S r   )ndim)r  r   freevar_unrollmixeds     r<   rH   z.TestMore.test_unroller_as_freevar.<locals>.foo*  s3    C#^E**  qvJr>   )r  r  r  r
   r   rJ   rK   )r6   rH   r  r  s     @@r<   test_unroller_as_freevarz!TestMore.test_unroller_as_freevar&  s    1C1CD::::::		 	 	 	 	 
	 	.....r>   c                 6    t          d          d             }d S )Nz(Tuple((int64, float64)),)c                 N    t          |           D ]}d}|dk    r
d}|dk    d S d S )NrB   r   r6  )r   r  rG   s      r<   rH   zCTestMore.test_unroll_with_non_conformant_loops_present.<locals>.foo6  sB    #C((  Aq&& q&&&&&&r>   r:  rL   s     r<   -test_unroll_with_non_conformant_loops_presentz6TestMore.test_unroll_with_non_conformant_loops_present3  s1     
*	+	+	 	 
,	+	 	 	r>   c                     t          j        ddgddg          }t          |j        j                                                  t          fd            }|                      ||          d           d S )Nr  rC   rD   )r  f8)r  r  r  c                     d}t                    D ]1}|t          j        | |                                                   z   }2|S r   r
   r  absr  arrresr  fieldss      r<   rH   z>TestMore.test_literal_unroll_legalize_var_names01.<locals>.fooD  H    C#F++ 1 1BF3q6NN..000Jr>          @r  arraytupler  r  r   r   rJ   r6   testrH   r  s      @r<   (test_literal_unroll_legalize_var_names01z1TestMore.test_literal_unroll_legalize_var_names01?  s    x(|0LMMMtz(--//00		 	 	 	 
	 	TC(((((r>   c                     t          j        ddgddg          }t          |j        j                                                  t          fd            }|                      ||          d           d S )Nr  r  )za1[0]r  )za2[1]r  r  c                     d}t                    D ]1}|t          j        | |                                                   z   }2|S r   r  r  s      r<   rH   z>TestMore.test_literal_unroll_legalize_var_names02.<locals>.fooS  r  r>   r  r  r  s      @r<   (test_literal_unroll_legalize_var_names02z1TestMore.test_literal_unroll_legalize_var_names02M  s    x(.@B B Btz(--//00		 	 	 	 
	 	TC(((((r>   N)r^   r_   r`   rt  rz  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rE   r>   r<   ro  ro    s       
 
 
 
 
 
$ X]677  870 X]MNN) ) ON)
5 
5 
5	A 	A 	A/ / /4 4 4$
 
 
./ / /5 5 5/ / /5 5 5	/ 	/ 	/
/ 
/ 
// / /(
 
 
:/ / /
 
 
) ) )) ) ) ) )r>   ro  c                 `     t          dd           G  fddt                                }|S )zg Returns a compiler pass that captures the mutation state reported
    by the pass used in the argumentFTra   c                   8    e Zd Zd j        z  Z Zd Z fdZdS )capture.<locals>.ResultCapturerz
capture_%sc                 .    t          j        |            d S rh   ri   rk   s    r<   rj   z(capture.<locals>.ResultCapturer.__init__e  s    !$'''''r>   c                                                       |          }|j                            di           }||<   |S )Nmutation_results)rp   r   
setdefault)r6   ro   resultr  	real_passs       r<   rp   z(capture.<locals>.ResultCapturer.run_passh  sE    Y[[))%00F$~889KRPP*0Y'Mr>   N)r^   r_   r`   rq   
_real_passrj   rp   )r  s   r<   ResultCapturerr  `  sN        y.
	( 	( 	(	 	 	 	 	 	 	r>   r  )r   r   )r  r  s   ` r<   capturer  ]  sY     uD999         :9 r>   c                       e Zd ZdZd ZdS )CapturingCompilerz? Simple pipeline that wraps passes with the ResultCapturer passc                 j   t          d          fd} |t          d            |t          d            |t          d            |t          d            |t
          d            |t          d            |t          d	            |t          d
           	                                 gS )NzCapturing Compilerc                 J                         t          |           |          S rh   )r~   r  )rG   r   r   s     r<   r~   z4CapturingCompiler.define_pipelines.<locals>.add_passw  s    ;;wqzz1---r>   ry   zfix up argsrz   zhandles literal_unrollr{   z$ensure IR is legal prior to loweringr|   r}   )
r   r   r   r   r   r   r    r#   r!   r   )r6   r~   r   s     @r<   r   z"CapturingCompiler.define_pipelinest  s    -..	. 	. 	. 	. 	. 	"$8999M***/// 8999 	&(;<<< 	7	9 	9 	9 	!2333"9:::
tr>   N)r^   r_   r`   __doc__r   rE   r>   r<   r  r  q  s)        II    r>   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestLiteralUnrollPassTriggeringc                     t          t                    d             } |             |j        |j        d                  }|                     |j        d         t                              d S )Nr   c                      d} dD ]}| |z  } | S r   rE   r   s     r<   rH   zLTestLiteralUnrollPassTriggering.test_literal_unroll_not_invoked.<locals>.foo  s&    C  qJr>   r   r  r   r  r.   r/   assertFalser   r   r6   rH   r9   s      r<   test_literal_unroll_not_invokedz?TestLiteralUnrollPassTriggering.test_literal_unroll_not_invoked  so    	.	/	/	/	 	 
0	/	 	}S^A./'9:=IJJJJJr>   c                     t          t                    d             } |             |j        |j        d                  }|                     |j        d         t                              d S )Nr   c                  8    d} t          d          D ]}| |z  } | S r   r6  r   s     r<   rH   zKTestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked.<locals>.foo  s.    C#I..  qJr>   r   r  )r   r  r.   r/   r2   r   r   r  s      r<   test_literal_unroll_is_invokedz>TestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked  sm    	.	/	/	/	 	 
0	/	 	}S^A./&89-HIIIIIr>   c                     t           t          t                    fd            } |             |j        |j        d                  }|                     |j        d         t                              d S )Nr   c                  2    d}  d          D ]}| |z  } | S r   rE   )r   r   aliass     r<   rH   zUTestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked_via_alias.<locals>.foo  s1    CU9%%  qJr>   r   r  )r
   r   r  r.   r/   r2   r   r   )r6   rH   r9   r  s      @r<   (test_literal_unroll_is_invoked_via_aliaszHTestLiteralUnrollPassTriggering.test_literal_unroll_is_invoked_via_alias  s}    	.	/	/	/	 	 	 	 
0	/	 	}S^A./&89-HIIIIIr>   c                     t          t                    d             } |             |j        |j        d                  }|                     |j        d         t                              d S )Nr   c                      d S rh   rE   rE   r>   r<   rH   zVTestLiteralUnrollPassTriggering.test_literal_unroll_assess_empty_function.<locals>.foo  s    Dr>   r   r  r  r  s      r<   )test_literal_unroll_assess_empty_functionzITestLiteralUnrollPassTriggering.test_literal_unroll_assess_empty_function  so    	.	/	/	/	 	 
0	/	 	}S^A./'9:=IJJJJJr>   c                    d}i }t          |i |            t          t                    |d                   } |             |j        |j        d                  }|                     |j        d         t                              d S )Nzdef foo():
	passr   rH   r   r  )execr   r  r.   r/   r  r   r   )r6   r  r  rH   r9   s        r<   "test_literal_unroll_not_in_globalszBTestLiteralUnrollPassTriggering.test_literal_unroll_not_in_globals  s    $QA4d"3444QuX>>}S^A./'9:=IJJJJJr>   c                    d}i }t          |i |            t          t                    |d                   }|                     t          j                  5 } |             d d d            n# 1 swxY w Y   |                     dt          |j                             i }t          |dt          i|            t          t                    |d                   } |             |j
        |j        d                  }|                     |j        d         t                              ddlm} d	}i }t           ||          i |            t          t                    |d
                   } |             |j
        |j        d                  }|                     |j        d         t                              ddlm} d}i }t           ||          i |            t          t                    |d
                   } |             |j
        |j        d                  }|                     |j        d         t                              d S )Nz1def foo():
	for x in literal_unroll((1,)):
		passr   rH   z$Untyped global name 'literal_unroll'r
   r   r  )dedentz
            def gen():
                from numba import literal_unroll
                def foo():
                    for x in literal_unroll((1,)):
                        pass
                return foo
            bar = gen()
            r   a  
            def gen():
                from numba import literal_unroll as something_else
                def foo():
                    for x in something_else((1,)):
                        pass
                return foo
            bar = gen()
            )r  r   r  rW   r   rK  rY   rZ   r[   r
   r.   r/   r2   r   r   textwrapr  )r6   r  r  rH   rL  r9   r  s          r<   &test_literal_unroll_globals_and_localszFTestLiteralUnrollPassTriggering.test_literal_unroll_globals_and_locals  s   HQA4d"3444QuX>>v122 	fCEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	<&*++	- 	- 	- Q!>2A6664d"3444QuX>>}S^A./&89-HIII 	$##### VVAYYA4d"3444QuX>>}S^A./&89-HIII 	$##### VVAYYA4d"3444QuX>>}S^A./&89-HIIIIIs   A00A47A4N)	r^   r_   r`   r	  r  r  r  r  r  rE   r>   r<   r  r    s        
K 
K 
K
J 
J 
JJ J JK K KK K K4J 4J 4J 4J 4Jr>   r  __main__)=collectionsr   numpyr  numba.tests.supportr   r   r   r   r  r   r	   r
   r   
numba.corer   r   r   numba.testingr   numba.core.extendingr   numba.core.compiler_machineryr   r   r   r   numba.core.compilerr   numba.core.untyped_passesr   r   r   r   r   r   r   r   numba.core.typed_passesr   r    r!   r"   r#   numba.core.ir_utilsr$   r%   numba.core.types.functionsr&   r  r+   re   rs   r   rB  ro  r  r  r  r^   mainrE   r>   r<   <module>r)     s   " " " " " "    L L L L L L L L L L L L 5 5 5 5 5 5 5 5 5 5 5 5 ( ( ( ( ( ( ( ( ( ( " " " " " " ) ) ) ) ) )G G G G G G G G G G G G , , , , , ,B B B B B B B B B B B B B B B B B B B B5 5 5 5 5 5 5 5 5 5 5 5 5 5 J I I I I I I I 3 3 3 3 3 3	%7 %7 %7 %7 %7_h %7 %7 %7P 5666
 
 
 
 
L 
 
 76
zC zC zC zC zC zC zC zCzY- Y- Y- Y- Y-?H Y- Y- Y-xc- c- c- c- c-/8 c- c- c-L	K) K) K) K) K)x K) K) K)\
  (       8nJ nJ nJ nJ nJh nJ nJ nJb zHMOOOOO r>   