
    J/PhHR                     x   d Z ddlZddlmZ ddlZddlmZmZm	Z	m
Z
 ddlZddlmZmZmZmZmZmZmZ ddlmZ ddlmZmZ  G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z e!dk    r ej"                     dS dS )z
Tests for sub-components of parfors.
These tests are aimed to produce a good-enough coverage of parfor passes
so that refactoring on these passes are easier with faster testing turnaround.
    Nreduce)njittypeofprangepndindex)rewritestyped_passesuntyped_passesinline_closurecallcompilercpuerrors)
cpu_target)TestCaseis_parfors_unsupportedc                       e Zd Zd ZdS )
MyPipelinec                     t          j                    | _        || j        _        || j        _        || j        _        || j        _        d | j        _        d | j        _        d | j        _	        i | j        _
        d S N)r   	StateDictstate	typingctx	targetctxargsfunc_irtypemapreturn_type	calltypesmetadata)selfr   r   r   test_irs        _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_parfors_passes.py__init__zMyPipeline.__init__   sg    '))
(
(

$
!
!%
#
 
    N)__name__
__module____qualname__r$    r%   r#   r   r      s#        	! 	! 	! 	! 	!r%   r   c                   l    e Zd Zed	d            Zed             Zed	d            Zd Zd Zd Z	d Z
dS )
BaseTestNc           
         t           j        }t           j        }t          j        |          }t          j        d          }t          ||||          }|                                 |                                 t          j
        |j        j        |d          }	|	                                 t          j                            d|j                   t#          j                                        |j                   t)          j        |j        j        |j        j        |j        j        |j        j        d           \  |j        _        |j        _        |j        _        }
t)          j                                        |j                   t:          j        j                                         }t:          j        j        !                    |j        j        |j        j        |j        j        |j        j        |j        j        ||j"        |          }|                                 t          j                            d|j                   ||||fS )NT)typedzbefore-inference)swappedreplace_functions_mapzafter-inference)#r   typing_contexttarget_contextr   run_frontendr   ParallelOptionsr   refreshr   InlineClosureCallPassr   r   runr	   rewrite_registryapplyr   ReconstructSSArun_passr
   type_inference_stager   r   r   r   r   r   PreLowerStripPhisnumbaparforsparforParforDiagnosticsPreParforPassreplaced_fns)cls	test_funcr   swap_mapr   r   r"   optionstpinline_pass_diagnosticspreparfor_passs                r#   _run_parforzBaseTest._run_parfor(   s    -	-	'	22%d++	9dG<<(>HgT
 
 
 	!''(:BHEEE%''00::: -H 2BH4DHM4
 
	
HH H 	&((11"(;;;m*<<>>-;;HHHHH,"* < 	
 	
 	!''(928DDD7K77r%   c                    |                      ||          \  }}}}t          j                    }t          j        j                            |j        j        |j        j	        |j        j
        |j        j        |j        j        |j        j        |||j        j        |
  
        }|                                 |                     |          }	|	                    |j        j                   |	S )N)rJ   )rL   r   Flagsr=   r>   r?   
ParforPassr   r   r   r   r   r   r   r    _pre_runsub_pass_classr6   blocks)
rC   rD   r   rG   rF   rJ   rI   flagsparfor_passsub_passs
             r#   run_parfor_sub_passzBaseTest.run_parfor_sub_pass\   s    &)ooi&F&F#G[!  m*55HHHH HHH# 6 
 
 	%%k22[(/000r%   c                 >    |                      |||          \  }}}}|S r   )rL   )rC   rD   r   rE   rG   rF   rJ   rK   s           r#   run_parfor_pre_passzBaseTest.run_parfor_pre_passt   s-    36??tX4
 4
0G[. r%   c                 \     t          d          |          } ||i |} ||i |}||fS )NT)parallel)r   )r!   funcr   kwargscfuncexpectgots          r#   _run_parallelzBaseTest._run_parallel{   sN    #d###D))t&v&&eT$V$$s{r%   c                 l    t           rd S  | j        |g|R i |\  }}|                     ||           d S r   )r   r`   assertPreciseEqualr!   r[   r   r\   r^   r_   s         r#   run_parallelzBaseTest.run_parallel   sQ    ! 	F(d(??????,,,,,r%   c                     t           rd S  | j        |g|R i |\  }}|                     |t          j                   |                     |t          j                   |                     |j        |j                   d S r   )r   r`   assertIsInstancenpndarrayassertEqualshaperc   s         r#   run_parallel_check_output_arrayz(BaseTest.run_parallel_check_output_array   s    ! 	F(d(??????fbj111c2:...sy11111r%   c                 p    |D ]2}|                      |d         t          j        j        j                   3d S )Nnew)rf   r=   r>   r?   Parfor)r!   recordsrecs      r#   check_recordszBaseTest.check_records   sD     	K 	KC!!#e*em.B.IJJJJ	K 	Kr%   r   )r&   r'   r(   classmethodrL   rV   rX   r`   rd   rk   rq   r)   r%   r#   r+   r+   '   s        18 18 18 [18f   [.    [  - - -2 2 2K K K K Kr%   r+   c                   N    e Zd Zej        j        j        Zd Zd Z	d Z
d Zd ZdS )TestConvertSetItemPassc                 0   d }|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                  @    d} t          j        |           }d|d d <   |S )N
      rg   onesnas     r#   	test_implzATestConvertSetItemPass.test_setitem_full_slice.<locals>.test_impl   s&    A

AAaaaDHr%   r)      reasonslicerV   ri   len	rewrittenrq   rd   r!   r~   rU   records       r#   test_setitem_full_slicez.TestConvertSetItemPass.test_setitem_full_slice       	 	 	 ++Ir::X/00!444%)73338-...)$$$$$r%   c                 0   d }|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                  @    d} t          j        |           }d|d d<   |S )Nrw   rx      ry   r{   s     r#   r~   zGTestConvertSetItemPass.test_setitem_slice_stop_bound.<locals>.test_impl   s&    A

AAbqbEHr%   r)   r   r   r   r   r   s       r#   test_setitem_slice_stop_boundz4TestConvertSetItemPass.test_setitem_slice_stop_bound   r   r%   c                 0   d }|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                  @    d} t          j        |           }d|dd <   |S )Nrw   rx      ry   r{   s     r#   r~   zHTestConvertSetItemPass.test_setitem_slice_start_bound.<locals>.test_impl   s&    A

AAabbEHr%   r)   r   r   r   r   r   s       r#   test_setitem_slice_start_boundz5TestConvertSetItemPass.test_setitem_slice_start_bound   r   r%   c                 0   d }|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                  |    d} t          j        |           }t          j        |t           j                  }d||<   |S )Nrw   dtyperx   rg   rz   	ones_likebool_)r|   r}   bs      r#   r~   zGTestConvertSetItemPass.test_setitem_gather_if_scalar.<locals>.test_impl   s8    A

AQbh///AAaDHr%   r)   r   r   masked_assign_broadcast_scalarr   r   s       r#   test_setitem_gather_if_scalarz4TestConvertSetItemPass.test_setitem_gather_if_scalar   s    	 	 	 ++Ir::X/00!444%)+KLLL8-...)$$$$$r%   c                 0   d }|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                      d} t          j        |           }t          j        |t           j                  }t          j        |          }||         ||<   |S )Nrw   r   r   )r|   r}   r   cs       r#   r~   zFTestConvertSetItemPass.test_setitem_gather_if_array.<locals>.test_impl   sI    A

AQbh///AQAQ4AaDHr%   r)   r   r   masked_assign_arrayr   r   s       r#   test_setitem_gather_if_arrayz3TestConvertSetItemPass.test_setitem_gather_if_array   s    	 	 	 ++Ir::X/00!444%)+@AAA8-...)$$$$$r%   N)r&   r'   r(   r=   r>   r?   ConvertSetItemPassrQ   r   r   r   r   r   r)   r%   r#   rt   rt      sl        ])<N% % %% % %% % %% % % % % % % %r%   rt   c                   `    e Zd Zej        j        j        Zd Zd Z	d Z
d Zd Zd Zd Zd Zd	S )
TestConvertNumpyPassc                 6   fd}|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                  "    d}  |           }|S Nrw   r)   r|   r}   fns     r#   r~   z>TestConvertNumpyPass.check_numpy_allocators.<locals>.test_impl       A1AHr%   r)   r   r   numpy_allocatorr   r!   r   r~   rU   r   s    `   r#   check_numpy_allocatorsz+TestConvertNumpyPass.check_numpy_allocators   s    	 	 	 	 	
 ++Ir::X/00!444%)+<===8-...)$$$$$r%   c                 6   fd}|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                  "    d}  |           }|S r   r)   r   s     r#   r~   z:TestConvertNumpyPass.check_numpy_random.<locals>.test_impl   r   r%   r)   r   r   r   )rV   ri   r   r   rq   rk   r   s    `   r#   check_numpy_randomz'TestConvertNumpyPass.check_numpy_random   s    	 	 	 	 	
 ++Ir::X/00!444%)+<===8-...,,Y77777r%   c                     t           j        t           j        g}|D ]I}|                     |j                  5  |                     |           d d d            n# 1 swxY w Y   Jd S r   )rg   rz   zerossubTestr&   r   r!   fnsr   s      r#   test_numpy_allocatorsz*TestConvertNumpyPass.test_numpy_allocators  s    w! 	0 	0Bbk** 0 0++B///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0s   AA	 A	c                     t           j        j        g}|D ]I}|                     |j                  5  |                     |           d d d            n# 1 swxY w Y   Jd S r   )rg   randomr   r&   r   r   s      r#   test_numpy_randomz&TestConvertNumpyPass.test_numpy_random  s    y  	, 	,Bbk** , ,''+++, , , , , , , , , , , , , , ,	, 	,s   AA	A	c                 n   d }t          j        d          x}}||f}d |D             }|                     ||          }|                     t	          |j                  d           |j        \  }|                     |d         d           |                     |j                    | j        |g|R   d S )Nc                     | |z   S r   r)   r}   r   s     r#   r~   z<TestConvertNumpyPass.test_numpy_arrayexpr.<locals>.test_impl  s    q5Lr%   rw   c                 ,    g | ]}t          |          S r)   r   .0xs     r#   
<listcomp>z=TestConvertNumpyPass.test_numpy_arrayexpr.<locals>.<listcomp>      ,,,!F1II,,,r%   r   r   	arrayexprrg   rz   rV   ri   r   r   rq   rd   r!   r~   r}   r   r   argtypesrU   r   s           r#   test_numpy_arrayexprz)TestConvertNumpyPass.test_numpy_arrayexpr  s    	 	 	 A1v,,t,,,++Ix@@X/00!444%);7778-...)+d++++++r%   c                 n   d }t          j        d          x}}||f}d |D             }|                     ||          }|                     t	          |j                  d           |j        \  }|                     |d         d           |                     |j                    | j        |g|R   d S )Nc                     t          j        |            t          j        d          t          j        |          z  z   S Nr   )rg   sinfloat64sqrtr   s     r#   r~   zBTestConvertNumpyPass.test_numpy_arrayexpr_ufunc.<locals>.test_impl&  s,    61"::
1

 :::r%   rw   c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   zCTestConvertNumpyPass.test_numpy_arrayexpr_ufunc.<locals>.<listcomp>,  r   r%   r   r   r   r   r   s           r#   test_numpy_arrayexpr_ufuncz/TestConvertNumpyPass.test_numpy_arrayexpr_ufunc%  s    	; 	; 	; A1v,,t,,,++Ix@@X/00!444%);7778-...)+d++++++r%   c                    d }t          j        d          }t          j        d          }||f}d |D             }|                     ||          }|                     t	          |j                  d           |j        \  }|                     |d         d           |                     |j                    | j        |g|R   d S )Nc                 6    | |z   t          j        d          z   S r   )rg   arrayr   s     r#   r~   zFTestConvertNumpyPass.test_numpy_arrayexpr_boardcast.<locals>.test_impl7  s    q528A;;&&r%   rw   )   rw   c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   zGTestConvertNumpyPass.test_numpy_arrayexpr_boardcast.<locals>.<listcomp>>  r   r%   r   r   r   r   r   s           r#   test_numpy_arrayexpr_boardcastz3TestConvertNumpyPass.test_numpy_arrayexpr_boardcast6  s    	' 	' 	' GBKKGG1v,,t,,,++Ix@@X/00!444%);7778-...)+d++++++r%   c                    d }t          j        d          }t          j        d          }||f}d |D             }|                     ||          }|                     t	          |j                  d           |j        \  }|                     |d         d           |                     |j                    | j        |g|R   d S )Nc                 B    |                      d| j                  } | |z   S r   )reshapesizer   s     r#   r~   zETestConvertNumpyPass.test_numpy_arrayexpr_reshaped.<locals>.test_implI  s     		!QV$$Aq5Lr%   rw   c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   zFTestConvertNumpyPass.test_numpy_arrayexpr_reshaped.<locals>.<listcomp>Q  r   r%   r   r   r   r   r   s           r#   test_numpy_arrayexpr_reshapedz2TestConvertNumpyPass.test_numpy_arrayexpr_reshapedH  s    	 	 	 GBKKGBKK1v,,t,,,++Ix@@X/00!444%);7778-...)+d++++++r%   N)r&   r'   r(   r=   r>   r?   ConvertNumpyPassrQ   r   r   r   r   r   r   r   r   r)   r%   r#   r   r      s        ]):N% % %8 8 80 0 0, , ,, , ,", , ,", , ,$, , , , ,r%   r   c                   <    e Zd Zej        j        j        Zd Zd Z	dS )TestConvertReducePassc                 h   d }t          j        d          }|f}d |D             }|                     ||          }|                     t	          |j                  d           |j        \  }|                     |d         d           |                     |j                    | j        |g|R   d S )Nc                 &    t          d | d          S )Nc                 "    t          | |          S r   maxr   ys     r#   <lambda>zPTestConvertReducePass.test_reduce_max_basic.<locals>.test_impl.<locals>.<lambda>a      s1ayy r%           r   arrs    r#   r~   z>TestConvertReducePass.test_reduce_max_basic.<locals>.test_impl`  s    00#s;;;r%   rw   c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   z?TestConvertReducePass.test_reduce_max_basic.<locals>.<listcomp>e  r   r%   r   r   r   r   r!   r~   r   r   r   rU   r   s          r#   test_reduce_max_basicz+TestConvertReducePass.test_reduce_max_basic_  s    	< 	< 	< GBKKt,,t,,,++Ix@@X/00!444%)84448-...)+d++++++r%   c                 h   d }t          j        d          }|f}d |D             }|                     ||          }|                     t	          |j                  d           |j        \  }|                     |d         d           |                     |j                    | j        |g|R   d S )Nc                 :    t          d | | dk             d          S )Nc                 "    t          | |          S r   r   r   s     r#   r   zQTestConvertReducePass.test_reduce_max_masked.<locals>.test_impl.<locals>.<lambda>q  r   r%   r   r   r   r   s    r#   r~   z?TestConvertReducePass.test_reduce_max_masked.<locals>.test_implp  s     00#cAg,DDDr%   rw   c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   z@TestConvertReducePass.test_reduce_max_masked.<locals>.<listcomp>u  r   r%   r   r   r   r   r   s          r#   test_reduce_max_maskedz,TestConvertReducePass.test_reduce_max_maskedo  s    	E 	E 	E GBKKt,,t,,,++Ix@@X/00!444%)84448-...)+d++++++r%   N)
r&   r'   r(   r=   r>   r?   ConvertReducePassrQ   r   r   r)   r%   r#   r   r   \  s?        ]);N, , , , , , , ,r%   r   c                       e Zd Zej        j        j        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 )TestConvertLoopPassc                 0   d }|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                  <    d} d}t          |           D ]}||z  }|S N   r   )r   )r|   r   is      r#   r~   z@TestConvertLoopPass.test_prange_reduce_simple.<locals>.test_impl  s1    AAAYY  QHr%   r)   r   r   loopr   r   s       r#   test_prange_reduce_simplez-TestConvertLoopPass.test_prange_reduce_simple  s    	 	 	 ++Ir::X/00!444%)62228-...)$$$$$r%   c                 0   d }|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                  v    d} t          j        |           }t          |           D ]}||xx         |z  cc<   |S Nr   rg   rz   r   r|   r   r   s      r#   r~   z=TestConvertLoopPass.test_prange_map_simple.<locals>.test_impl  sE    A'!**CAYY  A!Jr%   r)   r   r   r   r   r   s       r#   test_prange_map_simplez*TestConvertLoopPass.test_prange_map_simple      	 	 	 ++Ir::X/00!444%)62228-...)$$$$$r%   c                 0   d }|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                  x    d} t          j        |           }t          d|           D ]}||xx         |z  cc<   |S )Nr   r   r   r   s      r#   r~   z;TestConvertLoopPass.test_prange_two_args.<locals>.test_impl  sG    A'!**CAq\\  A!Jr%   r)   r   r   r   r   r   s       r#   test_prange_two_argsz(TestConvertLoopPass.test_prange_two_args  r  r%   c                     d }|                      t          j                  5 }|                     |d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                  z    d} t          j        |           }t          d| d          D ]}||xx         |z  cc<   |S )Nr   r      r   r   s      r#   r~   z=TestConvertLoopPass.test_prange_three_args.<locals>.test_impl  sI    A'!**CAq!__  A!Jr%   r)   z4Only constant step size of 1 is supported for prangeassertRaisesr   UnsupportedRewriteErrorrV   assertInstr	exceptionr!   r~   raisess      r#   test_prange_three_argsz*TestConvertLoopPass.test_prange_three_args  s    	 	 	 v=>> 	4&$$Y333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4B !!	
 	
 	
 	
 	
   AA
A
c                 0   d }|                      |d          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                   |                     |           d S )Nc                      d} t          j        | | f          }t          |           D ],}t          |          D ]}|||fxx         ||| z  z   z  cc<   -|S r   )rg   rz   r   ranger|   r   r   js       r#   r~   zATestConvertLoopPass.test_prange_map_inner_loop.<locals>.test_impl  sp    A'1a&//CAYY + +q + +A1IIIQU*IIII+Jr%   r)   r   r   r   r   r   s       r#   test_prange_map_inner_loopz.TestConvertLoopPass.test_prange_map_inner_loop  s    	 	 	 ++Ir::X/00!444%)62228-...)$$$$$r%   c                 2   d }|                      |d          }|                     t          |j                  d           |                     |j                   |j        D ]}|                     |d         d           |                     |           d S )Nc                      d} t          j        | | f          }t          |           D ],}t          |          D ]}|||fxx         ||| z  z   z  cc<   -|S r   r   r  s       r#   r~   zDTestConvertLoopPass.test_prange_map_nested_prange.<locals>.test_impl  sp    A'1a&//CAYY + + + +A1IIIQU*IIII+Jr%   r)   r  r   r   r   r   s       r#   test_prange_map_nested_prangez1TestConvertLoopPass.test_prange_map_nested_prange  s    	 	 	 ++Ir::X/00!4448-...( 	7 	7FVH-v6666)$$$$$r%   c                 0   d }|                      |d          }|                     t          |j                  d           |                     |j                   |j        \  }|                     |d         d           |                     |           d S )Nc                      d} t          j        |           }t          |           D ]}|||dz            }|dxx         dz  cc<    |S )Nr   r   r)   r   )r|   r   r   inners       r#   r~   zATestConvertLoopPass.test_prange_map_none_index.<locals>.test_impl  sV    A'!**CAYY  AAIb			Q				Jr%   r)   r   r   r   r   r   s       r#   test_prange_map_none_indexz.TestConvertLoopPass.test_prange_map_none_index  s    	 	 	 ++Ir::X/00!4448-...%)6222)$$$$$r%   c                     d }|                      t          j                  5 }|                     |d           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nc                  p    d} t          j        |           }t          |           D ]}|dz  }|||dz
  <   |S )Nr   r   r   r   s      r#   r~   zFTestConvertLoopPass.test_prange_map_overwrite_index.<locals>.test_impl  sF    A'!**CAYY  QAE

Jr%   r)   z Overwrite of parallel loop indexr	  r  s      r#   test_prange_map_overwrite_indexz3TestConvertLoopPass.test_prange_map_overwrite_index  s    	 	 	 v=>> 	4&$$Y333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4. !!	
 	
 	
 	
 	
r  c                 0   d }|                      |d          }|                     t          |j                  d           |                     |j                   |j        \  }|                     |d         d           |                     |           d S )Nc                      d} t          j        |           }t          j        j                                         d}t          j        j                            t          |                    D ]}|||         z  }|S r   )rg   rz   r=   r>   r?   init_prangeinternal_pranger   )r|   r   valr   s       r#   r~   z7TestConvertLoopPass.test_init_prange.<locals>.test_impl  sl    A'!**CM ,,...C])99#c((CC  s1vJr%   r)   r   r   r   r   r   s       r#   test_init_prangez$TestConvertLoopPass.test_init_prange  s    	 	 	 ++Ir::X/00!4448-...%)6222)$$$$$r%   c                 0   d }|                      |d          }|                     t          |j                  d           |                     |j                   |j        \  }|                     |d         d           |                     |           d S )Nc                      d} t          j        | | f          }d}t          |j                  D ]}||d         |d         z  z  }|S )Nr   r   r   )rg   rz   r   rj   )r|   r   r'  idxs       r#   r~   z4TestConvertLoopPass.test_pndindex.<locals>.test_impl  sS    A'1a&//CC	** ' 's1vA&Jr%   r)   r   r   r   r   r   s       r#   test_pndindexz!TestConvertLoopPass.test_pndindex  s    	 	 	 ++Ir::X/00!4448-...%)6222)$$$$$r%   c                    d }d}t          j        t          j        |                                        |          }|f}d |D             }|                     ||          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                    | j	        |g|R   d S )Nc                 *    t          j        |           S r   rg   sumr   s    r#   r~   z5TestConvertLoopPass.test_numpy_sum.<locals>.test_impl*  s    6#;;r%         c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   z6TestConvertLoopPass.test_numpy_sum.<locals>.<listcomp>0  r   r%   r   r   r   
rg   arangeprodr   rV   ri   r   r   rq   rd   r!   r~   rj   r   r   r   rU   r   s           r#   test_numpy_sumz"TestConvertLoopPass.test_numpy_sum)  s    	 	 	 i''//66v,,t,,,++Ix@@X/00!444%)62228-...)+d++++++r%   c                    d }d}t          j        t          j        |                                        |          }|f}d |D             }|                     ||          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                    | j	        |g|R   d S )Nc                 ^    | d d df         }t          j        | |dk    ddf                   S )Nr   r   r   r  r/  )r   sliceds     r#   r~   zGTestConvertLoopPass.test_numpy_sum_bool_array_masked.<locals>.test_impl:  s5    AYF6#fk1Q3./000r%   r1  c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   zHTestConvertLoopPass.test_numpy_sum_bool_array_masked.<locals>.<listcomp>A  r   r%   r   r   r   r5  r8  s           r#    test_numpy_sum_bool_array_maskedz4TestConvertLoopPass.test_numpy_sum_bool_array_masked9  s    	1 	1 	1 i''//66v,,t,,,++Ix@@X/00!444%)62228-...)+d++++++r%   c                    d }d}t          j        t          j        |                                        |          }|f}d |D             }|                     ||          }|                     t          |j                  d           |j        D ]}|                     |d         d           |                     |j                    | j	        |g|R   d S )Nc                 |    t          j        | j        d                   }t          j        | d d |f                   S r   )rg   r6  rj   r0  )r   sels     r#   r~   zFTestConvertLoopPass.test_numpy_sum_int_array_masked.<locals>.test_implK  s3    )CIaL))C6#aaaf+&&&r%   r1  c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   zGTestConvertLoopPass.test_numpy_sum_int_array_masked.<locals>.<listcomp>R  r   r%   r  r   r   r5  r8  s           r#   test_numpy_sum_int_array_maskedz3TestConvertLoopPass.test_numpy_sum_int_array_maskedJ  s    	' 	' 	' i''//66v,,t,,,++Ix@@X/00!444( 	7 	7FVH-v66668-...)+d++++++r%   c                    d }d}t          j        t          j        |                                        |          }|f}d |D             }|                     ||          }|                     t          |j                  d           |j        \  }|                     |d         d           |                     |j                    | j	        |g|R   d S )Nc                 0    |                      d           | S )Nr   )fillr   s    r#   r~   z=TestConvertLoopPass.test_numpy_fill_method.<locals>.test_impl]  s    HHQKKKJr%   r1  c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   z>TestConvertLoopPass.test_numpy_fill_method.<locals>.<listcomp>d  r   r%   r   r   r   r5  r8  s           r#   test_numpy_fill_methodz*TestConvertLoopPass.test_numpy_fill_method\  s    	 	 	 i''//66v,,t,,,++Ix@@X/00!444%)62228-...)+d++++++r%   N)r&   r'   r(   r=   r>   r?   ConvertLoopPassrQ   r   r  r  r  r  r  r  r"  r(  r,  r9  r>  rC  rH  r)   r%   r#   r   r     s        ])9N% % % % % % % % % 
 
 
% % %"% % %"% % %"
 
 
 % % %$% % %$, , , , , ,", , ,$, , , , ,r%   r   c                   :    e Zd Z G d d          Zd Zd Zd ZdS )TestPreParforPassc                       e Zd Zd Zd ZdS ) TestPreParforPass.sub_pass_classc                     d S r   r)   )r!   pass_statess     r#   r$   z)TestPreParforPass.sub_pass_class.__init__q      Dr%   c                     d S r   r)   )r!   rR   s     r#   r6   z$TestPreParforPass.sub_pass_class.runt  rP  r%   N)r&   r'   r(   r$   r6   r)   r%   r#   rQ   rM  p  s2        	 	 		 	 	 	 	r%   rQ   c                    d }t          j        d          }|f}d |D             }|                     ||          }|                     |j        d         d           |                     |j        d         d            | j        |g|R   d S )Nc                 <    t          j        d| j                  }|S )Nr   r   )rg   rz   r   r   s     r#   r~   z:TestPreParforPass.test_dtype_conversion.<locals>.test_imply  s    !'***AHr%   rw   c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   z;TestPreParforPass.test_dtype_conversion.<locals>.<listcomp>  r   r%   replaced_funcr   replaced_dtyper   rg   r6  rX   ri   statsrd   r!   r~   r   r   r   pre_passs         r#   test_dtype_conversionz'TestPreParforPass.test_dtype_conversionw  s    	 	 	 immv,,t,,,++Ix@@8!<<<(891===)+d++++++r%   c                    d }t          j        d          }|f}d |D             }|                     ||          }|                     |j        d         d           |                     |j        d         d            | j        |g|R   d S )Nc                 *    t          j        |           S r   r/  r}   s    r#   r~   z9TestPreParforPass.test_sum_replacement.<locals>.test_impl      6!99r%   rw   c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   z:TestPreParforPass.test_sum_replacement.<locals>.<listcomp>  r   r%   rU  r   rV  r   rW  rY  s         r#   test_sum_replacementz&TestPreParforPass.test_sum_replacement  s    	 	 	 immv,,t,,,++Ix@@8!<<<(891===)+d++++++r%   c                    d }t          j        d          }|f}d |D             }t          j        j        j                                        }|                    d           |                     |||          }| 	                    |j
        d         d           | 	                    |j
        d         d            | j        |g|R   d S )Nc                 *    t          j        |           S r   r/  r^  s    r#   r~   z9TestPreParforPass.test_replacement_map.<locals>.test_impl  r_  r%   rw   c                 ,    g | ]}t          |          S r)   r   r   s     r#   r   z:TestPreParforPass.test_replacement_map.<locals>.<listcomp>  r   r%   )r0  numpyrU  r   rV  )rg   r6  r=   r>   r?   swap_functions_mapcopypoprX   ri   rX  rd   )r!   r~   r   r   r   rE   rZ  s          r#   test_replacement_mapz&TestPreParforPass.test_replacement_map  s    	 	 	 immv,,t,,,=':??AA%&&&++IxJJ8!<<<(891===)+d++++++r%   N)r&   r'   r(   rQ   r[  ra  ri  r)   r%   r#   rK  rK  o  si               , , ,, , ,, , , , ,r%   rK  __main__)#__doc__unittest	functoolsr   re  rg   r=   r   r   r   r   numba.parfors.parfor
numba.corer	   r
   r   r   r   r   r   numba.core.registryr   numba.tests.supportr   r   objectr   r+   rt   r   r   r   rK  r&   mainr)   r%   r#   <module>rt     sh   
            0 0 0 0 0 0 0 0 0 0 0 0                      + * * * * * B B B B B B B B
! 
! 
! 
! 
! 
! 
! 
!mK mK mK mK mKx mK mK mK`O% O% O% O% O%X O% O% O%dp, p, p, p, p,8 p, p, p,f!, !, !, !, !,H !, !, !,Hl, l, l, l, l,( l, l, l,^1, 1, 1, 1, 1, 1, 1, 1,h zHMOOOOO r%   